@vc-shell/vc-app-skill 2.1.0 → 2.2.0-pr260.a8bd3a7
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.
- package/package.json +1 -1
- package/runtime/VERSION +1 -1
- package/runtime/agents/migration-agent.md +4 -2
- package/runtime/knowledge/docs/_BUILD_HASH.md +1 -1
- package/runtime/knowledge/docs/core/api/platform.docs.md +20 -18
- package/runtime/knowledge/docs/core/blade-navigation/blade-nav-composables.docs.md +43 -34
- package/runtime/knowledge/docs/core/composables/useAppBarMobileButtons/useAppBarMobileButtons.docs.md +5 -3
- package/runtime/knowledge/docs/core/composables/useAppBarWidget/useAppBarWidget.docs.md +12 -10
- package/runtime/knowledge/docs/core/composables/useAppInsights/useAppInsights.docs.md +7 -5
- package/runtime/knowledge/docs/core/composables/useAssets/useAssets.docs.md +8 -6
- package/runtime/knowledge/docs/core/composables/useAssetsManager/useAssetsManager.docs.md +3 -1
- package/runtime/knowledge/docs/core/composables/useAsync/useAsync.docs.md +1 -1
- package/runtime/knowledge/docs/core/composables/useBladeRegistry/useBladeRegistry.docs.md +8 -5
- package/runtime/knowledge/docs/core/composables/useBladeWidgets/index.docs.md +12 -12
- package/runtime/knowledge/docs/core/composables/useBreadcrumbs/useBreadcrumbs.docs.md +3 -3
- package/runtime/knowledge/docs/core/composables/useConnectionStatus/useConnectionStatus.docs.md +4 -3
- package/runtime/knowledge/docs/core/composables/useDynamicProperties/useDynamicProperties.docs.md +1 -0
- package/runtime/knowledge/docs/core/composables/useFunctions/useFunctions.docs.md +3 -3
- package/runtime/knowledge/docs/core/composables/useKeyboardNavigation/useKeyboardNavigation.docs.md +5 -4
- package/runtime/knowledge/docs/core/composables/useLanguages/useLanguages.docs.md +3 -3
- package/runtime/knowledge/docs/core/composables/useLoading/useLoading.docs.md +2 -0
- package/runtime/knowledge/docs/core/composables/useModificationTracker/useModificationTracker.docs.md +1 -2
- package/runtime/knowledge/docs/core/composables/useNotifications/useNotifications.docs.md +1 -1
- package/runtime/knowledge/docs/core/composables/usePermissions/usePermissions.docs.md +3 -3
- package/runtime/knowledge/docs/core/composables/usePlatformLocaleSync/usePlatformLocaleSync.docs.md +1 -0
- package/runtime/knowledge/docs/core/composables/usePopup/usePopup.docs.md +1 -1
- package/runtime/knowledge/docs/core/composables/useResponsive/useResponsive.docs.md +2 -2
- package/runtime/knowledge/docs/core/composables/useSettings/useSettings.docs.md +2 -1
- package/runtime/knowledge/docs/core/composables/useSettingsMenu/useSettingsMenu.docs.md +18 -18
- package/runtime/knowledge/docs/core/composables/useSidebarState/useSidebarState.docs.md +3 -3
- package/runtime/knowledge/docs/core/composables/useSlowNetworkDetection/useSlowNetworkDetection.docs.md +10 -7
- package/runtime/knowledge/docs/core/composables/useTheme/useTheme.docs.md +7 -7
- package/runtime/knowledge/docs/core/composables/useToolbar/useToolbar.docs.md +18 -12
- package/runtime/knowledge/docs/core/composables/useUser/useUser.docs.md +2 -2
- package/runtime/knowledge/docs/core/composables/useUserManagement/useUserManagement.docs.md +20 -20
- package/runtime/knowledge/docs/core/composables/useWidgets/useWidgets.docs.md +15 -24
- package/runtime/knowledge/docs/core/directives/loading/loading.docs.md +2 -2
- package/runtime/knowledge/docs/core/notifications/composables/useBladeNotifications.docs.md +1 -2
- package/runtime/knowledge/docs/core/notifications/composables/useBroadcastFilter.docs.md +3 -3
- package/runtime/knowledge/docs/core/notifications/composables/useNotificationStore.docs.md +19 -18
- package/runtime/knowledge/docs/core/notifications/notifications.docs.md +50 -30
- package/runtime/knowledge/docs/core/plugins/ai-agent/ai-agent.docs.md +30 -11
- package/runtime/knowledge/docs/core/plugins/extension-points/extension-points.docs.md +1 -1
- package/runtime/knowledge/docs/core/plugins/global-error-handler/global-error-handler.docs.md +2 -3
- package/runtime/knowledge/docs/core/plugins/modularity/modularity.docs.md +26 -26
- package/runtime/knowledge/docs/core/plugins/permissions/permissions.docs.md +2 -3
- package/runtime/knowledge/docs/core/plugins/signalR/signalR.docs.md +11 -50
- package/runtime/knowledge/docs/core/plugins/validation/validation.docs.md +9 -6
- package/runtime/knowledge/docs/core/services/services.docs.md +15 -13
- package/runtime/knowledge/docs/core/types/types.docs.md +37 -40
- package/runtime/knowledge/docs/core/utilities/date/date-utilities.docs.md +1 -2
- package/runtime/knowledge/docs/core/utilities/shared-utilities.docs.md +21 -30
- package/runtime/knowledge/docs/core/utilities/thumbnail/thumbnail.docs.md +2 -2
- package/runtime/knowledge/docs/core/utilities/utilities.docs.md +9 -8
- package/runtime/knowledge/docs/injection-keys.docs.md +6 -11
- package/runtime/knowledge/docs/modules/assets/assets-details.docs.md +7 -7
- package/runtime/knowledge/docs/modules/assets-manager/assets-manager.docs.md +1 -1
- package/runtime/knowledge/docs/shell/_internal/popup/common/popup-common.docs.md +20 -12
- package/runtime/knowledge/docs/shell/auth/ChangePasswordPage/change-password-page.docs.md +10 -10
- package/runtime/knowledge/docs/shell/auth/ForgotPasswordPage/forgot-password-page.docs.md +6 -6
- package/runtime/knowledge/docs/shell/auth/InvitePage/invite-page.docs.md +4 -4
- package/runtime/knowledge/docs/shell/auth/LoginPage/login-page.docs.md +16 -14
- package/runtime/knowledge/docs/shell/auth/ResetPasswordPage/reset-password-page.docs.md +1 -1
- package/runtime/knowledge/docs/shell/auth/sign-in/sign-in.docs.md +12 -11
- package/runtime/knowledge/docs/shell/components/change-password/change-password.docs.md +10 -3
- package/runtime/knowledge/docs/shell/components/change-password-button/change-password-button.docs.md +3 -3
- package/runtime/knowledge/docs/shell/components/error-interceptor/error-interceptor.docs.md +9 -2
- package/runtime/knowledge/docs/shell/components/language-selector/language-selector.docs.md +4 -2
- package/runtime/knowledge/docs/shell/components/logout-button/logout-button.docs.md +1 -1
- package/runtime/knowledge/docs/shell/components/notification-dropdown/notification-dropdown.docs.md +35 -31
- package/runtime/knowledge/docs/shell/components/notification-template/notification-template.docs.md +17 -11
- package/runtime/knowledge/docs/shell/components/settings-menu/settings-menu.docs.md +8 -7
- package/runtime/knowledge/docs/shell/components/settings-menu-item/settings-menu-item.docs.md +23 -21
- package/runtime/knowledge/docs/shell/components/sidebar/sidebar.docs.md +5 -3
- package/runtime/knowledge/docs/shell/components/theme-selector/theme-selector.docs.md +7 -7
- package/runtime/knowledge/docs/shell/components/user-dropdown-button/user-dropdown-button.docs.md +11 -11
- package/runtime/knowledge/docs/shell/dashboard/dashboard-charts/dashboard-charts.docs.md +28 -16
- package/runtime/knowledge/docs/shell/dashboard/dashboard-widget-card/dashboard-widget-card.docs.md +17 -19
- package/runtime/knowledge/docs/shell/dashboard/draggable-dashboard/draggable-dashboard.docs.md +21 -0
- package/runtime/knowledge/docs/ui/components/atoms/vc-badge/vc-badge.docs.md +2 -1
- package/runtime/knowledge/docs/ui/components/atoms/vc-banner/vc-banner.docs.md +2 -2
- package/runtime/knowledge/docs/ui/components/atoms/vc-button/vc-button.docs.md +15 -14
- package/runtime/knowledge/docs/ui/components/atoms/vc-container/vc-container.docs.md +9 -6
- package/runtime/knowledge/docs/ui/components/atoms/vc-environment-banner/vc-environment-banner.docs.md +42 -0
- package/runtime/knowledge/docs/ui/components/atoms/vc-hint/vc-hint.docs.md +1 -1
- package/runtime/knowledge/docs/ui/components/atoms/vc-icon/vc-icon.docs.md +10 -9
- package/runtime/knowledge/docs/ui/components/atoms/vc-image/vc-image.docs.md +19 -4
- package/runtime/knowledge/docs/ui/components/atoms/vc-label/vc-label.docs.md +2 -2
- package/runtime/knowledge/docs/ui/components/atoms/vc-link/vc-link.docs.md +5 -4
- package/runtime/knowledge/docs/ui/components/atoms/vc-loading/vc-loading.docs.md +5 -4
- package/runtime/knowledge/docs/ui/components/atoms/vc-progress/vc-progress.docs.md +9 -8
- package/runtime/knowledge/docs/ui/components/atoms/vc-scrollable-container/vc-scrollable-container.docs.md +7 -0
- package/runtime/knowledge/docs/ui/components/atoms/vc-skeleton/vc-skeleton.docs.md +1 -1
- package/runtime/knowledge/docs/ui/components/atoms/vc-status/vc-status.docs.md +2 -2
- package/runtime/knowledge/docs/ui/components/atoms/vc-status-icon/vc-status-icon.docs.md +1 -1
- package/runtime/knowledge/docs/ui/components/atoms/vc-tooltip/vc-tooltip.docs.md +11 -10
- package/runtime/knowledge/docs/ui/components/atoms/vc-video/vc-video.docs.md +28 -8
- package/runtime/knowledge/docs/ui/components/atoms/vc-widget/vc-widget.docs.md +22 -19
- package/runtime/knowledge/docs/ui/components/molecules/multilanguage-selector/multilanguage-selector.docs.md +8 -8
- package/runtime/knowledge/docs/ui/components/molecules/vc-accordion/vc-accordion.docs.md +16 -6
- package/runtime/knowledge/docs/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.docs.md +9 -8
- package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox/vc-checkbox.docs.md +42 -34
- package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox-group/vc-checkbox-group.docs.md +1 -1
- package/runtime/knowledge/docs/ui/components/molecules/vc-color-input/vc-color-input.docs.md +14 -1
- package/runtime/knowledge/docs/ui/components/molecules/vc-date-picker/vc-date-picker.docs.md +3 -1
- package/runtime/knowledge/docs/ui/components/molecules/vc-dropdown/vc-dropdown.docs.md +34 -33
- package/runtime/knowledge/docs/ui/components/molecules/vc-editor/vc-editor.docs.md +26 -24
- package/runtime/knowledge/docs/ui/components/molecules/vc-field/vc-field.docs.md +12 -14
- package/runtime/knowledge/docs/ui/components/molecules/vc-file-upload/vc-file-upload.docs.md +30 -30
- package/runtime/knowledge/docs/ui/components/molecules/vc-input/vc-input.docs.md +2 -2
- package/runtime/knowledge/docs/ui/components/molecules/vc-input-currency/vc-input-currency.docs.md +1 -1
- package/runtime/knowledge/docs/ui/components/molecules/vc-input-dropdown/vc-input-dropdown.docs.md +34 -31
- package/runtime/knowledge/docs/ui/components/molecules/vc-input-group/vc-input-group.docs.md +14 -12
- package/runtime/knowledge/docs/ui/components/molecules/vc-menu/vc-menu.docs.md +1 -1
- package/runtime/knowledge/docs/ui/components/molecules/vc-multivalue/vc-multivalue.docs.md +36 -27
- package/runtime/knowledge/docs/ui/components/molecules/vc-pagination/vc-pagination.docs.md +5 -1
- package/runtime/knowledge/docs/ui/components/molecules/{vc-dropdown-panel/vc-dropdown-panel.docs.md → vc-popover/vc-popover.docs.md} +24 -27
- package/runtime/knowledge/docs/ui/components/molecules/vc-radio-button/vc-radio-button.docs.md +10 -9
- package/runtime/knowledge/docs/ui/components/molecules/vc-select/vc-select.docs.md +44 -19
- package/runtime/knowledge/docs/ui/components/molecules/vc-slider/vc-slider.docs.md +11 -11
- package/runtime/knowledge/docs/ui/components/molecules/vc-switch/vc-switch.docs.md +15 -14
- package/runtime/knowledge/docs/ui/components/molecules/vc-textarea/vc-textarea.docs.md +15 -15
- package/runtime/knowledge/docs/ui/components/molecules/vc-toast/vc-toast.docs.md +15 -13
- package/runtime/knowledge/docs/ui/components/organisms/vc-app/vc-app.docs.md +5 -1
- package/runtime/knowledge/docs/ui/components/organisms/vc-auth-layout/vc-auth-layout.docs.md +18 -0
- package/runtime/knowledge/docs/ui/components/organisms/vc-blade/vc-blade.docs.md +48 -78
- package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/composables/table-composables.docs.md +9 -11
- package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/vc-data-table.docs.md +71 -43
- package/runtime/knowledge/docs/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.docs.md +27 -20
- package/runtime/knowledge/docs/ui/components/organisms/vc-gallery/vc-gallery.docs.md +2 -2
- package/runtime/knowledge/docs/ui/components/organisms/vc-image-upload/vc-image-upload.docs.md +12 -12
- package/runtime/knowledge/docs/ui/components/organisms/vc-popup/vc-popup.docs.md +33 -24
- package/runtime/knowledge/docs/ui/components/organisms/vc-scheduler/vc-scheduler.docs.md +509 -0
- package/runtime/knowledge/docs/ui/components/organisms/vc-sidebar/vc-sidebar.docs.md +43 -26
- package/runtime/knowledge/docs/ui/composables/ui-composables.docs.md +15 -9
- package/runtime/knowledge/docs/ui/composables/useDataTableSort.docs.md +8 -6
- package/runtime/knowledge/docs/ui/composables/useTableSearch.docs.md +3 -3
- package/runtime/knowledge/docs/ui/composables/useTableSelection.docs.md +4 -4
- package/runtime/knowledge/docs/ui/composables/useTableSort.docs.md +2 -3
- package/runtime/knowledge/migration-prompts/table-url-state-migration.md +221 -0
- package/runtime/vc-app.md +1 -0
|
@@ -148,13 +148,14 @@ async function handleUpload(files: FileList) {
|
|
|
148
148
|
|
|
149
149
|
## CSS Custom Properties
|
|
150
150
|
|
|
151
|
-
| Variable | Default | Description
|
|
152
|
-
| -------------------------------- | --------------------- |
|
|
153
|
-
| `--progressbar-height` | `8px` | Bar height
|
|
154
|
-
| `--progressbar-border-radius` | `9999px` | Border radius (pill shape)
|
|
155
|
-
| `--progressbar-background-color` | `var(--neutrals-200)` | Track background
|
|
156
|
-
| `--progressbar-foreground-color` | `var(--primary-500)` | Fill color
|
|
157
|
-
| `--progressbar-striped-bg` | gradient | Striped variant background
|
|
151
|
+
| Variable | Default | Description |
|
|
152
|
+
| -------------------------------- | --------------------- | ---------------------------- |
|
|
153
|
+
| `--progressbar-height` | `8px` | Bar height |
|
|
154
|
+
| `--progressbar-border-radius` | `9999px` | Border radius (pill shape) |
|
|
155
|
+
| `--progressbar-background-color` | `var(--neutrals-200)` | Track background |
|
|
156
|
+
| `--progressbar-foreground-color` | `var(--primary-500)` | Fill color |
|
|
157
|
+
| `--progressbar-striped-bg` | gradient | Striped variant background |
|
|
158
|
+
| `--progressbar-striped-color` | `var(--primary-400)` | Striped variant stripe color |
|
|
158
159
|
|
|
159
160
|
## Tips
|
|
160
161
|
|
|
@@ -179,7 +180,7 @@ async function handleUpload(files: FileList) {
|
|
|
179
180
|
|
|
180
181
|
## Architecture notes
|
|
181
182
|
|
|
182
|
-
- The fill
|
|
183
|
+
- The fill is a full-width (`width: 100%`) element translated horizontally via `transform: translateX(-(100 - value)%)`, not `width`, for smoother GPU-accelerated animation. There is no `scaleX` or `transform-origin: left`.
|
|
183
184
|
- The `value` prop is clamped via `Math.min(100, Math.max(0, props.value))` in a computed.
|
|
184
185
|
- Source: `framework/ui/components/atoms/vc-progress/vc-progress.vue`
|
|
185
186
|
|
|
@@ -128,6 +128,13 @@ Replace the default chevrons with custom indicators:
|
|
|
128
128
|
</VcScrollableContainer>
|
|
129
129
|
```
|
|
130
130
|
|
|
131
|
+
## CSS Custom Properties
|
|
132
|
+
|
|
133
|
+
| Variable | Default | Description |
|
|
134
|
+
| ---------------------- | --------------------- | --------------------- |
|
|
135
|
+
| `--scroll-arrow-size` | `16px` | Arrow indicator size |
|
|
136
|
+
| `--scroll-arrow-color` | `var(--neutrals-400)` | Arrow indicator color |
|
|
137
|
+
|
|
131
138
|
## Tips
|
|
132
139
|
|
|
133
140
|
- The `speed` prop is captured once at mount time and is not reactive. If you need to change speed dynamically, remount the component with a `:key` binding.
|
|
@@ -136,7 +136,7 @@ The last row automatically renders at 60% width for a natural paragraph feel.
|
|
|
136
136
|
|
|
137
137
|
## Architecture notes
|
|
138
138
|
|
|
139
|
-
- The `text` variant
|
|
139
|
+
- The `text` variant renders rows via `v-for="index in rows"` over `<div class="vc-skeleton__row">` elements. `getRowWidth(index)` returns `60%` for the last row (inline style) for a natural paragraph taper.
|
|
140
140
|
- Animation uses a CSS `@keyframes` pulse (opacity oscillation), not a moving shimmer, for simplicity and performance.
|
|
141
141
|
- Source: `framework/ui/components/atoms/vc-skeleton/vc-skeleton.vue`
|
|
142
142
|
|
|
@@ -131,8 +131,8 @@ Each variant has its own set of CSS variables following the pattern `--status-{v
|
|
|
131
131
|
|
|
132
132
|
## Architecture notes
|
|
133
133
|
|
|
134
|
-
- The `extend` prop
|
|
135
|
-
-
|
|
134
|
+
- The `extend` prop toggles the `vc-status--extended` modifier class; all color theming is done via `--status-{variant}-*` CSS variables scoped under `.vc-status`.
|
|
135
|
+
- Each variant is bound directly as `vc-status--${variant}` and styled through a SCSS `@each $variant in $variants` loop; the special variants `"light-danger"`, `"info-dark"`, and `"primary"` are kept for backward compatibility.
|
|
136
136
|
- Source: `framework/ui/components/atoms/vc-status/vc-status.vue`
|
|
137
137
|
|
|
138
138
|
<!-- internal:end -->
|
|
@@ -167,7 +167,7 @@ VcStatusIcon is intentionally minimal. If you need a text label next to the icon
|
|
|
167
167
|
|
|
168
168
|
## Architecture notes
|
|
169
169
|
|
|
170
|
-
- VcStatusIcon wraps two `VcIcon` instances in a single `<
|
|
170
|
+
- VcStatusIcon wraps two `VcIcon` instances in a single `<div class="vc-status-icon">` with `v-if`/`v-else` switching on the `status` prop.
|
|
171
171
|
- Icon size inherits from parent font-size; no dedicated size prop is exposed.
|
|
172
172
|
- Source: `framework/ui/components/atoms/vc-status-icon/vc-status-icon.vue`
|
|
173
173
|
|
|
@@ -6,7 +6,7 @@ group: feedback
|
|
|
6
6
|
|
|
7
7
|
# VcTooltip
|
|
8
8
|
|
|
9
|
-
A floating tooltip that appears on hover or focus to provide contextual information about a trigger element. Powered by Floating UI for automatic positioning, collision detection, and arrow alignment. The tooltip is teleported to the document
|
|
9
|
+
A floating tooltip that appears on hover or focus to provide contextual information about a trigger element. Powered by Floating UI for automatic positioning, collision detection, and arrow alignment. The tooltip is teleported to the vc-app root element (falling back to `document.body`) for proper stacking above all content.
|
|
10
10
|
|
|
11
11
|
## Quick Start
|
|
12
12
|
|
|
@@ -248,13 +248,13 @@ const actions = [
|
|
|
248
248
|
</template>
|
|
249
249
|
</VcTooltip>
|
|
250
250
|
|
|
251
|
-
<!-- Correct -- use a popover or dropdown for interactive content -->
|
|
252
|
-
<
|
|
251
|
+
<!-- Correct -- use a popover or dropdown component for interactive content -->
|
|
252
|
+
<YourPopover>
|
|
253
253
|
<span>Click for help</span>
|
|
254
254
|
<template #content>
|
|
255
255
|
<a href="/docs">Read the documentation</a>
|
|
256
256
|
</template>
|
|
257
|
-
</
|
|
257
|
+
</YourPopover>
|
|
258
258
|
```
|
|
259
259
|
|
|
260
260
|
### Forgetting the #tooltip slot
|
|
@@ -324,7 +324,8 @@ const actions = [
|
|
|
324
324
|
| `--tooltip-font-size` | `12px` | Text size |
|
|
325
325
|
| `--tooltip-padding-x` | `10px` | Horizontal padding |
|
|
326
326
|
| `--tooltip-padding-y` | `6px` | Vertical padding |
|
|
327
|
-
|
|
327
|
+
|
|
328
|
+
Stacking order comes from the global `--z-critical-tooltip` token and is not overridable per-instance.
|
|
328
329
|
|
|
329
330
|
## Accessibility
|
|
330
331
|
|
|
@@ -332,7 +333,7 @@ const actions = [
|
|
|
332
333
|
- `aria-describedby` links the trigger to the tooltip when visible
|
|
333
334
|
- Shows on `focusin`, hides on `focusout` for keyboard users
|
|
334
335
|
- Escape key dismisses the tooltip
|
|
335
|
-
- Tooltip is teleported to the document
|
|
336
|
+
- Tooltip is teleported to the vc-app root element (falling back to `document.body`) for proper stacking context
|
|
336
337
|
- Fade transition (150ms in, 100ms out) provides smooth visual feedback
|
|
337
338
|
- The tooltip has `pointer-events: none` -- it cannot be interacted with directly
|
|
338
339
|
|
|
@@ -347,10 +348,10 @@ const actions = [
|
|
|
347
348
|
## Architecture notes
|
|
348
349
|
|
|
349
350
|
- VcTooltip uses `@floating-ui/vue` (`useFloating`, `autoUpdate`, `flip`, `shift`, `arrow`, `offset` middleware).
|
|
350
|
-
- The tooltip content is teleported
|
|
351
|
-
- Show/hide state is managed with a single `
|
|
352
|
-
- The delay timer is stored in a `
|
|
353
|
-
- Arrow positioning is handled by the `
|
|
351
|
+
- The tooltip content is teleported via Vue's `<Teleport>` to escape stacking contexts. The target is resolved by `useTeleportTarget()` with priority explicit target -> vc-app root element (`AppRootElementKey`) -> `<body>` fallback.
|
|
352
|
+
- Show/hide state is managed with a single `tooltipVisible` ref toggled by `mouseenter`/`mouseleave` and `focusin`/`focusout` on the trigger slot wrapper.
|
|
353
|
+
- The delay timer is stored in a `showTimeout` variable (not a ref) and cleared in `hideTooltip`/`onBeforeUnmount` to cancel a pending show.
|
|
354
|
+
- Arrow positioning is handled by the `arrowRef` template ref passed to the `arrow` middleware; position is applied via `:style` on the arrow element.
|
|
354
355
|
- Source: `framework/ui/components/atoms/vc-tooltip/vc-tooltip.vue`
|
|
355
356
|
|
|
356
357
|
<!-- internal:end -->
|
|
@@ -34,14 +34,21 @@ import { VcVideo } from "@vc-shell/framework";
|
|
|
34
34
|
|
|
35
35
|
## Key Props
|
|
36
36
|
|
|
37
|
-
| Prop
|
|
38
|
-
|
|
|
39
|
-
| `source`
|
|
40
|
-
| `label`
|
|
41
|
-
| `tooltip`
|
|
37
|
+
| Prop | Type | Default | Description |
|
|
38
|
+
| ------------------- | -------- | ------- | -------------------------------------------------------------------------------------- |
|
|
39
|
+
| `source` | `string` | -- | Embed URL for the video (e.g., YouTube embed link) |
|
|
40
|
+
| `label` | `string` | -- | Label text displayed above the video |
|
|
41
|
+
| `tooltip` | `string` | -- | Tooltip text shown on the label's info icon |
|
|
42
|
+
| `additionalSandbox` | `string` | -- | Extra space-separated iframe sandbox tokens appended to the secure default (see below) |
|
|
42
43
|
|
|
43
44
|
::storybook id="data-display-vcvideo--with-tooltip" height="400"
|
|
44
45
|
|
|
46
|
+
## Events
|
|
47
|
+
|
|
48
|
+
| Event | Payload | Description |
|
|
49
|
+
| ------- | ------- | ------------------------------------------------------------ |
|
|
50
|
+
| `click` | -- | Declared public emit. Currently the template never fires it. |
|
|
51
|
+
|
|
45
52
|
## Common Patterns
|
|
46
53
|
|
|
47
54
|
### Video with Label and Tooltip
|
|
@@ -110,17 +117,30 @@ When `source` is not provided, VcVideo renders a centered film icon placeholder
|
|
|
110
117
|
|
|
111
118
|
- Always use the **embed** URL format, not the standard watch URL. For YouTube, use `https://www.youtube.com/embed/VIDEO_ID` instead of `https://www.youtube.com/watch?v=VIDEO_ID`.
|
|
112
119
|
- The iframe has `loading="lazy"`, so videos below the fold are not loaded until the user scrolls to them. This keeps initial page load fast.
|
|
113
|
-
- The `sandbox` attribute
|
|
120
|
+
- The `sandbox` attribute defaults to the secure minimum `allow-scripts allow-presentation`. If your video host requires more, append tokens via `additionalSandbox` — see the Security section below.
|
|
121
|
+
- The iframe sets a fixed `allow` permissions policy (`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture`) plus `allowfullscreen`, so embedded players can autoplay, go fullscreen, and use picture-in-picture. These are not configurable per-instance.
|
|
114
122
|
- The iframe renders at a fixed height of 300px. To customize the height, override the iframe styles via a scoped CSS rule targeting `.vc-video__container iframe`.
|
|
115
123
|
- The placeholder has a height of 200px so the layout does not collapse when no source is provided.
|
|
116
124
|
|
|
117
125
|
## Accessibility
|
|
118
126
|
|
|
119
127
|
- The iframe uses the `title` attribute (set to `label` or "Video") for screen readers
|
|
120
|
-
- `sandbox` attribute
|
|
128
|
+
- `sandbox` attribute defaults to the secure minimum `allow-scripts allow-presentation`
|
|
121
129
|
- `loading="lazy"` defers iframe load until visible
|
|
122
130
|
- Placeholder state uses `role="img"` with `aria-label="No video source"`
|
|
123
131
|
|
|
132
|
+
## Security
|
|
133
|
+
|
|
134
|
+
The iframe `sandbox` defaults to `allow-scripts allow-presentation` — the minimum that keeps mainstream embeds (YouTube, Vimeo) working while denying the framed page access to the parent origin. To add capabilities a specific host needs, pass them through `additionalSandbox`:
|
|
135
|
+
|
|
136
|
+
```vue
|
|
137
|
+
<!-- Some embeds need popups for auth flows -->
|
|
138
|
+
<VcVideo source="https://example.com/embed" additional-sandbox="allow-popups" />
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
!!! danger "Never combine `allow-same-origin` with `allow-scripts`"
|
|
142
|
+
Per MDN and OWASP, enabling both tokens lets the embedded page remove its own sandbox and reach the parent origin's cookies, `localStorage`, and DOM. `VcVideo` renders whatever `source` you pass, so for untrusted or user-supplied URLs do **not** add `allow-same-origin`.
|
|
143
|
+
|
|
124
144
|
!!! warning "Always use embed URLs, not watch URLs"
|
|
125
145
|
YouTube watch URLs (`youtube.com/watch?v=...`) will be blocked by the browser's frame policy. Always convert to the embed format (`youtube.com/embed/VIDEO_ID`). Vimeo similarly requires `player.vimeo.com/video/VIDEO_ID`.
|
|
126
146
|
|
|
@@ -136,7 +156,7 @@ YouTube watch URLs (`youtube.com/watch?v=...`) will be blocked by the browser's
|
|
|
136
156
|
|
|
137
157
|
- VcVideo lives in `framework/ui/components/atoms/vc-video/`.
|
|
138
158
|
- The component is a thin wrapper around a native `<iframe>` — no custom video controls are implemented.
|
|
139
|
-
- The `sandbox` attribute is
|
|
159
|
+
- The `sandbox` attribute is computed from a secure base (`allow-scripts allow-presentation`) plus any `additionalSandbox` tokens, deduped. `allow-same-origin` is intentionally omitted from the default — see the Security section.
|
|
140
160
|
- The label is rendered via `VcLabel` (internal atom) with the `tooltip` prop forwarded as the VcLabel tooltip slot content.
|
|
141
161
|
- Placeholder state (`source` is falsy) swaps the iframe for a `<div>` with `role="img"` containing a `VcIcon` with `lucide-film`.
|
|
142
162
|
|
|
@@ -42,14 +42,15 @@ function openNotifications() {
|
|
|
42
42
|
|
|
43
43
|
## Key Props
|
|
44
44
|
|
|
45
|
-
| Prop | Type | Default | Description
|
|
46
|
-
| ------------ | ------------------ | ------- |
|
|
47
|
-
| `icon` | `string` | -- | Icon name (Lucide format, e.g., `"lucide-save"`)
|
|
48
|
-
| `title` | `string` | -- | Label text below (or beside) the icon
|
|
49
|
-
| `value` | `string \| number` | -- | Badge count displayed on the icon; numbers above 99 show as "99+"
|
|
50
|
-
| `disabled` | `boolean` | `false` | Prevents clicks and applies muted styling
|
|
51
|
-
| `isExpanded` | `boolean` | `false` | Expanded visual state
|
|
52
|
-
| `horizontal` | `boolean` | `false` | Arranges icon and title side by side instead of stacked
|
|
45
|
+
| Prop | Type | Default | Description |
|
|
46
|
+
| ------------ | ------------------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
47
|
+
| `icon` | `string` | -- | Icon name (Lucide format, e.g., `"lucide-save"`) |
|
|
48
|
+
| `title` | `string` | -- | Label text below (or beside) the icon |
|
|
49
|
+
| `value` | `string \| number` | -- | Badge count displayed on the icon; numbers above 99 show as "99+" |
|
|
50
|
+
| `disabled` | `boolean` | `false` | Prevents clicks and applies muted styling |
|
|
51
|
+
| `isExpanded` | `boolean` | `false` | Expanded visual state |
|
|
52
|
+
| `horizontal` | `boolean` | `false` | Arranges icon and title side by side instead of stacked |
|
|
53
|
+
| `widgetId` | `string` | -- | Sets the `data-widget-id` attribute on the root element. The root also binds `data-widget-name` from `title`; both are used for widget identification/targeting. |
|
|
53
54
|
|
|
54
55
|
## Events
|
|
55
56
|
|
|
@@ -97,16 +98,18 @@ Badge values above 99 are automatically displayed as "99+".
|
|
|
97
98
|
|
|
98
99
|
## CSS Custom Properties
|
|
99
100
|
|
|
100
|
-
| Variable
|
|
101
|
-
|
|
|
102
|
-
| `--widget-bg-color`
|
|
103
|
-
| `--widget-bg-hover-color`
|
|
104
|
-
| `--widget-icon-color`
|
|
105
|
-
| `--widget-icon-hover-color`
|
|
106
|
-
| `--widget-
|
|
107
|
-
| `--widget-title-
|
|
108
|
-
| `--widget-
|
|
109
|
-
| `--widget-
|
|
101
|
+
| Variable | Default | Description |
|
|
102
|
+
| ------------------------------- | --------------------- | ------------------------- |
|
|
103
|
+
| `--widget-bg-color` | `transparent` | Background color |
|
|
104
|
+
| `--widget-bg-hover-color` | `var(--neutrals-50)` | Background on hover |
|
|
105
|
+
| `--widget-icon-color` | `var(--neutrals-700)` | Icon color |
|
|
106
|
+
| `--widget-icon-hover-color` | `var(--primary-600)` | Icon color on hover |
|
|
107
|
+
| `--widget-icon-disabled-color` | `var(--neutrals-400)` | Icon color when disabled |
|
|
108
|
+
| `--widget-title-color` | `var(--neutrals-600)` | Title text color |
|
|
109
|
+
| `--widget-title-hover-color` | `var(--primary-600)` | Title color on hover |
|
|
110
|
+
| `--widget-title-disabled-color` | `var(--neutrals-400)` | Title color when disabled |
|
|
111
|
+
| `--widget-border-radius` | `8px` | Corner radius |
|
|
112
|
+
| `--widget-focus-ring-color` | `var(--primary-300)` | Focus ring color |
|
|
110
113
|
|
|
111
114
|
## Accessibility
|
|
112
115
|
|
|
@@ -128,7 +131,7 @@ Badge values above 99 are automatically displayed as "99+".
|
|
|
128
131
|
## Architecture notes
|
|
129
132
|
|
|
130
133
|
- VcWidget lives in `framework/ui/components/atoms/vc-widget/`.
|
|
131
|
-
- The badge overlay is rendered by embedding `VcBadge` with `
|
|
134
|
+
- The badge overlay is rendered by embedding `VcBadge` with `content="truncateCount"`, `custom-position`, `top="-6px"`, and `size="s"`. The `99+` truncation is performed by the shared `formatBadgeCount` utility (via the `truncateCount` computed), not inline in the template.
|
|
132
135
|
- `isExpanded` applies `.vc-widget--expanded` modifier; used by the shell sidebar to visually distinguish active navigation state.
|
|
133
136
|
- `horizontal` applies `.vc-widget--horizontal` modifier which switches the internal flex direction from `column` to `row`.
|
|
134
137
|
- The widget registers as a keyboard-interactive element (`role="button"`, Enter/Space handlers) rather than using a `<button>` to allow embedding arbitrary icon components without nesting interactive elements.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
|
-
title:
|
|
2
|
+
title: VcLanguageSelector
|
|
3
3
|
category: components
|
|
4
4
|
group: form
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
#
|
|
7
|
+
# VcLanguageSelector
|
|
8
8
|
|
|
9
|
-
Compact circular flag button that opens a dropdown for selecting a content language. Designed for use in detail blades where entities have multilingual fields (e.g., product name, offer description, category title). This is distinct from the `LanguageSelector` settings entry, which changes the application UI locale -- `
|
|
9
|
+
Compact circular flag button that opens a dropdown for selecting a content language. Designed for use in detail blades where entities have multilingual fields (e.g., product name, offer description, category title). This is distinct from the `LanguageSelector` settings entry, which changes the application UI locale -- `VcLanguageSelector` controls which language version of the content the user is editing.
|
|
10
10
|
|
|
11
11
|
## When to Use
|
|
12
12
|
|
|
@@ -21,7 +21,7 @@ Compact circular flag button that opens a dropdown for selecting a content langu
|
|
|
21
21
|
```vue
|
|
22
22
|
<script setup lang="ts">
|
|
23
23
|
import { ref } from "vue";
|
|
24
|
-
import {
|
|
24
|
+
import { VcLanguageSelector } from "@vc-shell/framework";
|
|
25
25
|
|
|
26
26
|
const currentLang = ref("en-US");
|
|
27
27
|
|
|
@@ -32,7 +32,7 @@ const languages = [
|
|
|
32
32
|
</script>
|
|
33
33
|
|
|
34
34
|
<template>
|
|
35
|
-
<
|
|
35
|
+
<VcLanguageSelector
|
|
36
36
|
v-model="currentLang"
|
|
37
37
|
:options="languages"
|
|
38
38
|
/>
|
|
@@ -58,7 +58,7 @@ A typical use case is a product detail blade where the user can edit the name an
|
|
|
58
58
|
```vue
|
|
59
59
|
<script setup lang="ts">
|
|
60
60
|
import { ref, computed } from "vue";
|
|
61
|
-
import {
|
|
61
|
+
import { VcLanguageSelector } from "@vc-shell/framework";
|
|
62
62
|
|
|
63
63
|
const product = ref({
|
|
64
64
|
names: { "en-US": "Widget", "de-DE": "Widget-Teil" },
|
|
@@ -91,7 +91,7 @@ const currentDescription = computed({
|
|
|
91
91
|
<template>
|
|
92
92
|
<VcBlade title="Edit Product">
|
|
93
93
|
<template #actions>
|
|
94
|
-
<
|
|
94
|
+
<VcLanguageSelector
|
|
95
95
|
v-model="currentLang"
|
|
96
96
|
:options="languages"
|
|
97
97
|
/>
|
|
@@ -132,7 +132,7 @@ onMounted(async () => {
|
|
|
132
132
|
|
|
133
133
|
- **Compact layout**: The button renders as a small circle showing the flag of the currently selected language. Clicking it opens a dropdown with all available options.
|
|
134
134
|
- **v-model binding**: The component uses `modelValue` / `update:modelValue` for two-way binding, following the standard Vue 3 v-model convention.
|
|
135
|
-
- **Flag images**: The `flag` property on each option is optional. When provided, it shows the flag image; otherwise,
|
|
135
|
+
- **Flag images**: The `flag` property on each option is optional. When provided, it shows the flag image; otherwise, a globe icon (`lucide-globe`) is displayed.
|
|
136
136
|
- **Dropdown positioning**: The dropdown is positioned relative to the button and adjusts to avoid viewport overflow.
|
|
137
137
|
|
|
138
138
|
## Tips
|
|
@@ -53,12 +53,12 @@ Without `v-model`, no items are expanded on mount. Pass an initial value to pre-
|
|
|
53
53
|
|
|
54
54
|
Four variants control the visual grouping and spacing of accordion items.
|
|
55
55
|
|
|
56
|
-
| Variant | Description
|
|
57
|
-
| ----------- |
|
|
58
|
-
| `default` | Items stacked with shared top/bottom borders, no gaps
|
|
59
|
-
| `bordered` | Single outer border wrapping all items, items separated by inner borders
|
|
60
|
-
| `separated` | Card-like items with 12px gaps between them, each with its own border
|
|
61
|
-
| `ghost` | Transparent background, minimal styling, no borders
|
|
56
|
+
| Variant | Description |
|
|
57
|
+
| ----------- | -------------------------------------------------------------------------- |
|
|
58
|
+
| `default` | Items stacked with shared top/bottom borders, no gaps |
|
|
59
|
+
| `bordered` | Single outer border wrapping all items, items separated by inner borders |
|
|
60
|
+
| `separated` | Card-like items with 12px gaps between them, each with its own border |
|
|
61
|
+
| `ghost` | Transparent background, minimal styling, no borders and no content padding |
|
|
62
62
|
|
|
63
63
|
```vue
|
|
64
64
|
<VcAccordion :items="items" variant="separated" />
|
|
@@ -262,6 +262,16 @@ interface AccordionItem {
|
|
|
262
262
|
| `--accordion-item-transition-duration` | `300ms` | Expand/collapse animation duration |
|
|
263
263
|
| `--accordion-item-fade-height` | `60px` | Fade gradient height on collapsed preview |
|
|
264
264
|
| `--accordion-item-focus-ring-color` | `var(--primary-100)` | Focus ring color for keyboard navigation |
|
|
265
|
+
| `--accordion-item-header-font-size` | `14px` | Header font size |
|
|
266
|
+
| `--accordion-item-header-font-weight` | `500` | Header font weight |
|
|
267
|
+
| `--accordion-item-header-line-height` | `20px` | Header line height |
|
|
268
|
+
| `--accordion-item-header-text-transform` | `none` | Header text transform |
|
|
269
|
+
| `--accordion-item-header-gap` | `0` | Gap between header label and icon |
|
|
270
|
+
| `--accordion-item-icon-margin-left` | `12px` | Left margin of the chevron icon |
|
|
271
|
+
| `--accordion-item-icon-size` | `20px` | Chevron icon size |
|
|
272
|
+
| `--accordion-item-content-color` | `var(--secondary-950)` | Content body text color |
|
|
273
|
+
| `--accordion-item-content-font-size` | `14px` | Content body font size |
|
|
274
|
+
| `--accordion-item-content-line-height` | `20px` | Content body line height |
|
|
265
275
|
|
|
266
276
|
> **Note:** The `ghost` variant overrides several variables to transparent/zero values for minimal appearance.
|
|
267
277
|
|
package/runtime/knowledge/docs/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.docs.md
CHANGED
|
@@ -194,10 +194,10 @@ In a typical VC-Shell blade hierarchy, push a breadcrumb each time a child blade
|
|
|
194
194
|
|
|
195
195
|
```vue
|
|
196
196
|
<script setup lang="ts">
|
|
197
|
-
import { useBreadcrumbs,
|
|
197
|
+
import { useBreadcrumbs, useBlade } from "@vc-shell/framework";
|
|
198
198
|
|
|
199
199
|
const { breadcrumbs, push } = useBreadcrumbs();
|
|
200
|
-
const { openBlade, closeSelf } =
|
|
200
|
+
const { openBlade, closeSelf } = useBlade();
|
|
201
201
|
|
|
202
202
|
function openProductDetail(product: Product) {
|
|
203
203
|
push({
|
|
@@ -270,12 +270,13 @@ clickHandler: () => { navigate(); return true; }
|
|
|
270
270
|
|
|
271
271
|
## CSS Variables
|
|
272
272
|
|
|
273
|
-
| Variable | Default | Description
|
|
274
|
-
| ----------------------------------------- | ---------------------- |
|
|
275
|
-
| `--separator-color` | `var(--neutrals-400)` | Color of the `/` separator character
|
|
276
|
-
| `--breadcrumbs-item-border-color` | `var(--secondary-300)` | Border color of breadcrumb items
|
|
277
|
-
| `--breadcrumbs-
|
|
278
|
-
| `--breadcrumbs-expand-button-color
|
|
273
|
+
| Variable | Default | Description |
|
|
274
|
+
| ----------------------------------------- | ---------------------- | ----------------------------------------- |
|
|
275
|
+
| `--separator-color` | `var(--neutrals-400)` | Color of the `/` separator character |
|
|
276
|
+
| `--breadcrumbs-item-border-color` | `var(--secondary-300)` | Border color of breadcrumb items |
|
|
277
|
+
| `--breadcrumbs-item-border-color-hover` | `var(--secondary-400)` | Border color of breadcrumb items on hover |
|
|
278
|
+
| `--breadcrumbs-expand-button-color` | `var(--neutrals-500)` | Color of the overflow "more" button |
|
|
279
|
+
| `--breadcrumbs-expand-button-color-hover` | `var(--neutrals-600)` | Hover color of the overflow button |
|
|
279
280
|
|
|
280
281
|
## Accessibility
|
|
281
282
|
|
|
@@ -300,22 +300,23 @@ const selected = ref<string[]>([]);
|
|
|
300
300
|
|
|
301
301
|
## Props
|
|
302
302
|
|
|
303
|
-
| Prop | Type | Default | Description
|
|
304
|
-
| --------------- | ------------------- | ----------- |
|
|
305
|
-
| `modelValue` | `boolean \| T[]` | `undefined` | Bound value via `v-model`. Boolean for single, array for multi-select.
|
|
306
|
-
| `value` | `T` | -- | Value added to the array when checked (array mode only)
|
|
307
|
-
| `label` | `string` | -- | Label text displayed above the checkbox
|
|
308
|
-
| `tooltip` | `string` | -- | Tooltip on the label info icon
|
|
309
|
-
| `size` | `"s" \| "m" \| "l"` | `"s"` | Checkbox size variant
|
|
310
|
-
| `indeterminate` | `boolean` | `false` | Shows the indeterminate (dash) visual state
|
|
311
|
-
| `trueValue` | `boolean` | `true` | Value emitted when checked (boolean mode)
|
|
312
|
-
| `falseValue` | `boolean` | `false` | Value emitted when unchecked (boolean mode)
|
|
313
|
-
| `disabled` | `boolean` | `false` | Disables the checkbox
|
|
314
|
-
| `required` | `boolean` | `false` | Shows a required indicator
|
|
315
|
-
| `error` | `boolean` | `false` | Enables error styling
|
|
316
|
-
| `errorMessage` | `string` | -- | Error message displayed below the checkbox
|
|
317
|
-
| `
|
|
318
|
-
| `
|
|
303
|
+
| Prop | Type | Default | Description |
|
|
304
|
+
| --------------- | ------------------- | ----------- | ------------------------------------------------------------------------------------------------- |
|
|
305
|
+
| `modelValue` | `boolean \| T[]` | `undefined` | Bound value via `v-model`. Boolean for single, array for multi-select. |
|
|
306
|
+
| `value` | `T` | -- | Value added to the array when checked (array mode only) |
|
|
307
|
+
| `label` | `string` | -- | Label text displayed above the checkbox |
|
|
308
|
+
| `tooltip` | `string` | -- | Tooltip on the label info icon |
|
|
309
|
+
| `size` | `"s" \| "m" \| "l"` | `"s"` | Checkbox size variant |
|
|
310
|
+
| `indeterminate` | `boolean` | `false` | Shows the indeterminate (dash) visual state |
|
|
311
|
+
| `trueValue` | `boolean` | `true` | Value emitted when checked (boolean mode) |
|
|
312
|
+
| `falseValue` | `boolean` | `false` | Value emitted when unchecked (boolean mode) |
|
|
313
|
+
| `disabled` | `boolean` | `false` | Disables the checkbox |
|
|
314
|
+
| `required` | `boolean` | `false` | Shows a required indicator |
|
|
315
|
+
| `error` | `boolean` | `false` | Enables error styling |
|
|
316
|
+
| `errorMessage` | `string` | -- | Error message displayed below the checkbox |
|
|
317
|
+
| `ariaLabel` | `string` | -- | Accessible name for the input when no visible `label` is set. Applied only when `label` is empty. |
|
|
318
|
+
| `name` | `string` | `"Field"` | HTML name attribute |
|
|
319
|
+
| `outline` | `boolean` | `false` | Reserved; declared but currently has no effect |
|
|
319
320
|
|
|
320
321
|
## Events
|
|
321
322
|
|
|
@@ -333,24 +334,31 @@ const selected = ref<string[]>([]);
|
|
|
333
334
|
|
|
334
335
|
## CSS Variables
|
|
335
336
|
|
|
336
|
-
| Variable
|
|
337
|
-
|
|
|
338
|
-
| `--checkbox-size-s`
|
|
339
|
-
| `--checkbox-size-m`
|
|
340
|
-
| `--checkbox-size-l`
|
|
341
|
-
| `--checkbox-border-color`
|
|
342
|
-
| `--checkbox-border-color-hover`
|
|
343
|
-
| `--checkbox-bg-color`
|
|
344
|
-
| `--checkbox-checked-bg-color`
|
|
345
|
-
| `--checkbox-checked-border-color`
|
|
346
|
-
| `--checkbox-indeterminate-bg-color`
|
|
347
|
-
| `--checkbox-indeterminate-
|
|
348
|
-
| `--checkbox-
|
|
349
|
-
| `--checkbox-
|
|
350
|
-
| `--checkbox-
|
|
351
|
-
| `--checkbox-
|
|
352
|
-
| `--checkbox-
|
|
353
|
-
| `--checkbox-
|
|
337
|
+
| Variable | Default | Description |
|
|
338
|
+
| --------------------------------------- | ---------------------- | ------------------------------- |
|
|
339
|
+
| `--checkbox-size-s` | `16px` | Small variant size |
|
|
340
|
+
| `--checkbox-size-m` | `20px` | Medium variant size |
|
|
341
|
+
| `--checkbox-size-l` | `24px` | Large variant size |
|
|
342
|
+
| `--checkbox-border-color` | `var(--neutrals-300)` | Default border color |
|
|
343
|
+
| `--checkbox-border-color-hover` | `var(--neutrals-400)` | Border color on hover |
|
|
344
|
+
| `--checkbox-bg-color` | `var(--additional-50)` | Unchecked background |
|
|
345
|
+
| `--checkbox-checked-bg-color` | `var(--primary-500)` | Checked background color |
|
|
346
|
+
| `--checkbox-checked-border-color` | `var(--primary-500)` | Checked border color |
|
|
347
|
+
| `--checkbox-indeterminate-bg-color` | `var(--primary-500)` | Indeterminate background |
|
|
348
|
+
| `--checkbox-indeterminate-border-color` | `var(--primary-500)` | Indeterminate border color |
|
|
349
|
+
| `--checkbox-indeterminate-line-color` | `var(--additional-50)` | Indeterminate dash color |
|
|
350
|
+
| `--checkbox-text-color` | `var(--neutrals-900)` | Label text color |
|
|
351
|
+
| `--checkbox-icon-color` | `var(--additional-50)` | Check/dash icon color |
|
|
352
|
+
| `--checkbox-error-text-color` | `var(--danger-500)` | Error message text color |
|
|
353
|
+
| `--checkbox-required-color` | `var(--danger-500)` | Required indicator color |
|
|
354
|
+
| `--checkbox-label-spacing` | `0.5rem` | Spacing below the label |
|
|
355
|
+
| `--checkbox-text-margin` | `0.5rem` | Margin between control and text |
|
|
356
|
+
| `--checkbox-error-border-color` | `var(--danger-500)` | Error state border |
|
|
357
|
+
| `--checkbox-error-ring-color` | `var(--danger-100)` | Error ring color |
|
|
358
|
+
| `--checkbox-focus-ring-color` | `var(--primary-100)` | Focus ring color |
|
|
359
|
+
| `--checkbox-border-radius` | `4px` | Corner radius |
|
|
360
|
+
| `--checkbox-disabled-opacity` | `0.5` | Opacity when disabled |
|
|
361
|
+
| `--checkbox-transition-duration` | `200ms` | Animation duration |
|
|
354
362
|
|
|
355
363
|
## Accessibility
|
|
356
364
|
|
package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox-group/vc-checkbox-group.docs.md
CHANGED
|
@@ -153,7 +153,7 @@ When placed inside a `VcBlade` with `loading=true`, the component renders a skel
|
|
|
153
153
|
## Architecture Notes
|
|
154
154
|
|
|
155
155
|
- VcCheckboxGroup delegates rendering to `VcInputGroup` (semantic fieldset wrapper) and renders `VcCheckbox` items from the `options` array, or passes through the default slot for custom layouts.
|
|
156
|
-
- The group generates a unique `name` attribute via `useId()` when none is provided, ensuring native
|
|
156
|
+
- The group generates a unique `name` attribute via `useId()` when none is provided, ensuring native checkbox group naming/behavior.
|
|
157
157
|
- `normalizedModelValue` guards against non-array `modelValue` to avoid runtime errors when the parent passes `undefined`.
|
|
158
158
|
- Source file: `framework/ui/components/molecules/vc-checkbox-group/vc-checkbox-group.vue`
|
|
159
159
|
|
package/runtime/knowledge/docs/ui/components/molecules/vc-color-input/vc-color-input.docs.md
CHANGED
|
@@ -60,6 +60,18 @@ const color = ref<string | null>(null);
|
|
|
60
60
|
| `error` / `errorMessage` | `boolean` / `string` | -- | Error styling and validation message |
|
|
61
61
|
| `disabled` | `boolean` | `false` | Disables the input and color picker |
|
|
62
62
|
|
|
63
|
+
## Events
|
|
64
|
+
|
|
65
|
+
| Event | Payload | Description |
|
|
66
|
+
| ------------------- | ---------------- | ------------------------------------ |
|
|
67
|
+
| `update:modelValue` | `string \| null` | Emitted when the color value changes |
|
|
68
|
+
| `blur` | `Event` | Emitted when the text input blurs |
|
|
69
|
+
| `focus` | -- | Emitted when the text input focuses |
|
|
70
|
+
|
|
71
|
+
## Exposed Methods
|
|
72
|
+
|
|
73
|
+
- `focus()` -- focuses the text input (accessible via a template ref).
|
|
74
|
+
|
|
63
75
|
## Common Patterns
|
|
64
76
|
|
|
65
77
|
### With Validation
|
|
@@ -194,6 +206,7 @@ Uses the same `--input-*` variables as VcInput, plus:
|
|
|
194
206
|
|
|
195
207
|
- `--color-input-swatch-size` -- swatch square size (default 20px)
|
|
196
208
|
- `--color-input-swatch-border-radius`, `--color-input-swatch-border-color`
|
|
209
|
+
- `--color-input-swatch-border-color-hover` -- swatch border color on hover (default var(--neutrals-400))
|
|
197
210
|
|
|
198
211
|
## Tip: CSS Color Names
|
|
199
212
|
|
|
@@ -218,7 +231,7 @@ When placed inside a `VcBlade` with `loading=true`, the component automatically
|
|
|
218
231
|
|
|
219
232
|
- The swatch button is a native `<button type="button">` that triggers a hidden `<input type="color">` via programmatic `.click()`. The native color picker is not visible — only the swatch button is.
|
|
220
233
|
- Color synchronization: typing in the text field updates `modelValue` directly; selecting from the native picker emits the new hex value and also updates the text field.
|
|
221
|
-
- The
|
|
234
|
+
- The text field accepts any string, but the swatch only updates for valid hex codes or recognized CSS color names; unrecognized input leaves the swatch unchanged.
|
|
222
235
|
- Source file: `framework/ui/components/molecules/vc-color-input/vc-color-input.vue`
|
|
223
236
|
|
|
224
237
|
<!-- internal:end -->
|
package/runtime/knowledge/docs/ui/components/molecules/vc-date-picker/vc-date-picker.docs.md
CHANGED
|
@@ -23,7 +23,9 @@ A date and datetime picker that wraps the [VueDatePicker](https://vue3datepicker
|
|
|
23
23
|
|
|
24
24
|
- Free-form text entry -- use [VcInput](../vc-input/)
|
|
25
25
|
- Time-only input -- use `VcInput` with `type="time"`
|
|
26
|
-
- Selecting multiple dates
|
|
26
|
+
- Selecting multiple discrete dates -- not supported (use VueDatePicker directly)
|
|
27
|
+
|
|
28
|
+
> **Note:** Date ranges are supported. Pass the `range` option through `datePickerOptions`; the component handles range start/end and commits a partial range on close.
|
|
27
29
|
|
|
28
30
|
> **Note:** `VcInput` with `type="date"` or `type="datetime-local"` automatically delegates to this component internally. You can also use `VcDatePicker` directly for more explicit control over date-specific props.
|
|
29
31
|
|