@vc-shell/vc-app-skill 2.0.0-alpha.33 → 2.0.0-alpha.33-pr220.455e322
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/CHANGELOG.md +52 -55
- package/README.md +18 -12
- package/package.json +4 -4
- package/runtime/agents/api-analyzer.md +31 -16
- package/runtime/agents/blade-enhancer.md +15 -9
- package/runtime/agents/details-blade-generator.md +47 -31
- package/runtime/agents/list-blade-generator.md +21 -37
- package/runtime/agents/locales-generator.md +3 -0
- package/runtime/agents/migration-agent.md +18 -7
- package/runtime/agents/module-analyzer.md +2 -0
- package/runtime/agents/module-assembler.md +15 -0
- package/runtime/agents/promote-agent.md +15 -4
- package/runtime/agents/type-checker.md +11 -0
- package/runtime/knowledge/docs/core/api/platform.docs.md +30 -30
- package/runtime/knowledge/docs/core/blade-navigation/blade-nav-composables.docs.md +41 -41
- package/runtime/knowledge/docs/core/composables/bladeContext/index.docs.md +12 -10
- package/runtime/knowledge/docs/core/composables/useApiClient/useApiClient.docs.md +11 -14
- package/runtime/knowledge/docs/core/composables/useAppBarMobileButtons/useAppBarMobileButtons.docs.md +35 -35
- package/runtime/knowledge/docs/core/composables/useAppBarWidget/useAppBarWidget.docs.md +35 -35
- package/runtime/knowledge/docs/core/composables/useAppInsights/useAppInsights.docs.md +15 -15
- package/runtime/knowledge/docs/core/composables/useAssets/useAssets.docs.md +21 -18
- package/runtime/knowledge/docs/core/composables/useAssetsManager/useAssetsManager.docs.md +31 -27
- package/runtime/knowledge/docs/core/composables/useAsync/useAsync.docs.md +90 -61
- package/runtime/knowledge/docs/core/composables/useBeforeUnload/useBeforeUnload.docs.md +19 -18
- package/runtime/knowledge/docs/core/composables/useBlade/useBlade.docs.md +89 -68
- package/runtime/knowledge/docs/core/composables/useBladeForm/useBladeForm.docs.md +27 -25
- package/runtime/knowledge/docs/core/composables/useBladeRegistry/useBladeRegistry.docs.md +15 -15
- package/runtime/knowledge/docs/core/composables/useBladeWidgets/index.docs.md +74 -78
- package/runtime/knowledge/docs/core/composables/useBreadcrumbs/useBreadcrumbs.docs.md +11 -11
- package/runtime/knowledge/docs/core/composables/useConnectionStatus/useConnectionStatus.docs.md +27 -15
- package/runtime/knowledge/docs/core/composables/useDashboard/useDashboard.docs.md +30 -30
- package/runtime/knowledge/docs/core/composables/useDynamicProperties/useDynamicProperties.docs.md +34 -36
- package/runtime/knowledge/docs/core/composables/useErrorHandler/useErrorHandler.docs.md +44 -23
- package/runtime/knowledge/docs/core/composables/useFunctions/useFunctions.docs.md +14 -11
- package/runtime/knowledge/docs/core/composables/useKeyboardNavigation/useKeyboardNavigation.docs.md +47 -38
- package/runtime/knowledge/docs/core/composables/useLanguages/useLanguages.docs.md +37 -28
- package/runtime/knowledge/docs/core/composables/useLoading/useLoading.docs.md +23 -17
- package/runtime/knowledge/docs/core/composables/useMenuExpanded/index.docs.md +10 -10
- package/runtime/knowledge/docs/core/composables/useMenuService/useMenuService.docs.md +42 -42
- package/runtime/knowledge/docs/core/composables/useModificationTracker/useModificationTracker.docs.md +22 -12
- package/runtime/knowledge/docs/core/composables/useNotifications/useNotifications.docs.md +33 -41
- package/runtime/knowledge/docs/core/composables/usePermissions/usePermissions.docs.md +16 -16
- package/runtime/knowledge/docs/core/composables/usePopup/usePopup.docs.md +32 -24
- package/runtime/knowledge/docs/core/composables/useResponsive/useResponsive.docs.md +32 -11
- package/runtime/knowledge/docs/core/composables/useSettings/useSettings.docs.md +24 -15
- package/runtime/knowledge/docs/core/composables/useSettingsMenu/useSettingsMenu.docs.md +7 -7
- package/runtime/knowledge/docs/core/composables/useSidebarState/useSidebarState.docs.md +32 -24
- package/runtime/knowledge/docs/core/composables/useSlowNetworkDetection/useSlowNetworkDetection.docs.md +21 -17
- package/runtime/knowledge/docs/core/composables/useTheme/useTheme.docs.md +24 -24
- package/runtime/knowledge/docs/core/composables/useToolbar/useToolbar.docs.md +28 -31
- package/runtime/knowledge/docs/core/composables/useUser/useUser.docs.md +43 -24
- package/runtime/knowledge/docs/core/composables/useUserManagement/useUserManagement.docs.md +68 -48
- package/runtime/knowledge/docs/core/composables/useWebVitals/useWebVitals.docs.md +19 -19
- package/runtime/knowledge/docs/core/composables/useWidgets/useWidgets.docs.md +42 -47
- package/runtime/knowledge/docs/core/directives/autofocus/autofocus.docs.md +10 -4
- package/runtime/knowledge/docs/core/directives/loading/loading.docs.md +35 -20
- package/runtime/knowledge/docs/core/notifications/notifications.docs.md +36 -35
- package/runtime/knowledge/docs/core/plugins/ai-agent/ai-agent.docs.md +38 -38
- package/runtime/knowledge/docs/core/plugins/extension-points/extension-points.docs.md +107 -91
- package/runtime/knowledge/docs/core/plugins/global-error-handler/global-error-handler.docs.md +10 -10
- package/runtime/knowledge/docs/core/plugins/i18n/i18n.docs.md +21 -23
- package/runtime/knowledge/docs/core/plugins/modularity/modularity.docs.md +98 -90
- package/runtime/knowledge/docs/core/plugins/permissions/permissions.docs.md +10 -16
- package/runtime/knowledge/docs/core/plugins/signalR/signalR.docs.md +9 -9
- package/runtime/knowledge/docs/core/plugins/validation/validation.docs.md +65 -22
- package/runtime/knowledge/docs/core/services/services.docs.md +19 -22
- package/runtime/knowledge/docs/core/types/types.docs.md +40 -40
- package/runtime/knowledge/docs/core/utilities/date/date-utilities.docs.md +27 -27
- package/runtime/knowledge/docs/core/utilities/shared-utilities.docs.md +23 -23
- package/runtime/knowledge/docs/core/utilities/thumbnail/thumbnail.docs.md +22 -25
- package/runtime/knowledge/docs/core/utilities/utilities.docs.md +64 -64
- package/runtime/knowledge/docs/injection-keys.docs.md +52 -51
- package/runtime/knowledge/docs/modules/assets-manager/assets-manager.docs.md +9 -9
- package/runtime/knowledge/docs/shell/_internal/popup/common/popup-common.docs.md +23 -43
- package/runtime/knowledge/docs/shell/auth/ChangePasswordPage/change-password-page.docs.md +5 -5
- package/runtime/knowledge/docs/shell/auth/ForgotPasswordPage/forgot-password-page.docs.md +5 -5
- package/runtime/knowledge/docs/shell/auth/InvitePage/invite-page.docs.md +8 -7
- package/runtime/knowledge/docs/shell/auth/LoginPage/login-page.docs.md +7 -7
- package/runtime/knowledge/docs/shell/auth/ResetPasswordPage/reset-password-page.docs.md +8 -7
- package/runtime/knowledge/docs/shell/auth/sign-in/sign-in.docs.md +29 -13
- package/runtime/knowledge/docs/shell/components/change-password/change-password.docs.md +13 -16
- package/runtime/knowledge/docs/shell/components/change-password-button/change-password-button.docs.md +1 -7
- package/runtime/knowledge/docs/shell/components/error-interceptor/error-interceptor.docs.md +5 -5
- package/runtime/knowledge/docs/shell/components/language-selector/language-selector.docs.md +1 -1
- package/runtime/knowledge/docs/shell/components/logout-button/logout-button.docs.md +1 -1
- package/runtime/knowledge/docs/shell/components/notification-template/notification-template.docs.md +17 -9
- package/runtime/knowledge/docs/shell/components/settings-menu/settings-menu.docs.md +12 -18
- package/runtime/knowledge/docs/shell/components/settings-menu-item/settings-menu-item.docs.md +34 -65
- package/runtime/knowledge/docs/shell/components/sidebar/sidebar.docs.md +16 -26
- package/runtime/knowledge/docs/shell/components/theme-selector/theme-selector.docs.md +2 -2
- package/runtime/knowledge/docs/shell/components/user-dropdown-button/user-dropdown-button.docs.md +7 -9
- package/runtime/knowledge/docs/shell/dashboard/dashboard-charts/dashboard-charts.docs.md +30 -40
- package/runtime/knowledge/docs/shell/dashboard/dashboard-widget-card/dashboard-widget-card.docs.md +26 -19
- package/runtime/knowledge/docs/shell/dashboard/draggable-dashboard/draggable-dashboard.docs.md +15 -12
- package/runtime/knowledge/docs/ui/components/atoms/vc-badge/vc-badge.docs.md +15 -26
- package/runtime/knowledge/docs/ui/components/atoms/vc-banner/vc-banner.docs.md +21 -19
- package/runtime/knowledge/docs/ui/components/atoms/vc-button/vc-button.docs.md +83 -67
- package/runtime/knowledge/docs/ui/components/atoms/vc-card/vc-card.docs.md +100 -59
- package/runtime/knowledge/docs/ui/components/atoms/vc-col/vc-col.docs.md +28 -11
- package/runtime/knowledge/docs/ui/components/atoms/vc-container/vc-container.docs.md +20 -17
- package/runtime/knowledge/docs/ui/components/atoms/vc-hint/vc-hint.docs.md +26 -17
- package/runtime/knowledge/docs/ui/components/atoms/vc-icon/vc-icon.docs.md +30 -32
- package/runtime/knowledge/docs/ui/components/atoms/vc-image/vc-image.docs.md +25 -48
- package/runtime/knowledge/docs/ui/components/atoms/vc-label/vc-label.docs.md +29 -24
- package/runtime/knowledge/docs/ui/components/atoms/vc-link/vc-link.docs.md +23 -15
- package/runtime/knowledge/docs/ui/components/atoms/vc-loading/vc-loading.docs.md +22 -13
- package/runtime/knowledge/docs/ui/components/atoms/vc-progress/vc-progress.docs.md +33 -18
- package/runtime/knowledge/docs/ui/components/atoms/vc-row/vc-row.docs.md +56 -15
- package/runtime/knowledge/docs/ui/components/atoms/vc-scrollable-container/vc-scrollable-container.docs.md +28 -15
- package/runtime/knowledge/docs/ui/components/atoms/vc-skeleton/vc-skeleton.docs.md +40 -20
- package/runtime/knowledge/docs/ui/components/atoms/vc-status/vc-status.docs.md +25 -14
- package/runtime/knowledge/docs/ui/components/atoms/vc-status-icon/vc-status-icon.docs.md +40 -14
- package/runtime/knowledge/docs/ui/components/atoms/vc-tooltip/vc-tooltip.docs.md +54 -42
- package/runtime/knowledge/docs/ui/components/atoms/vc-video/vc-video.docs.md +17 -17
- package/runtime/knowledge/docs/ui/components/atoms/vc-widget/vc-widget.docs.md +21 -21
- package/runtime/knowledge/docs/ui/components/molecules/multilanguage-selector/multilanguage-selector.docs.md +23 -10
- package/runtime/knowledge/docs/ui/components/molecules/vc-accordion/vc-accordion.docs.md +55 -44
- package/runtime/knowledge/docs/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.docs.md +23 -20
- package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox/vc-checkbox.docs.md +92 -65
- package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox-group/vc-checkbox-group.docs.md +22 -36
- package/runtime/knowledge/docs/ui/components/molecules/vc-color-input/vc-color-input.docs.md +65 -23
- package/runtime/knowledge/docs/ui/components/molecules/vc-date-picker/vc-date-picker.docs.md +52 -73
- package/runtime/knowledge/docs/ui/components/molecules/vc-dropdown/vc-dropdown.docs.md +91 -85
- package/runtime/knowledge/docs/ui/components/molecules/vc-dropdown-panel/vc-dropdown-panel.docs.md +38 -42
- package/runtime/knowledge/docs/ui/components/molecules/vc-editor/vc-editor.docs.md +56 -73
- package/runtime/knowledge/docs/ui/components/molecules/vc-field/vc-field.docs.md +61 -27
- package/runtime/knowledge/docs/ui/components/molecules/vc-file-upload/vc-file-upload.docs.md +42 -50
- package/runtime/knowledge/docs/ui/components/molecules/vc-form/vc-form.docs.md +35 -64
- package/runtime/knowledge/docs/ui/components/molecules/vc-image-tile/vc-image-tile.docs.md +38 -41
- package/runtime/knowledge/docs/ui/components/molecules/vc-input/vc-input.docs.md +109 -131
- package/runtime/knowledge/docs/ui/components/molecules/vc-input-currency/vc-input-currency.docs.md +47 -88
- package/runtime/knowledge/docs/ui/components/molecules/vc-input-dropdown/vc-input-dropdown.docs.md +50 -64
- package/runtime/knowledge/docs/ui/components/molecules/vc-input-group/vc-input-group.docs.md +29 -24
- package/runtime/knowledge/docs/ui/components/molecules/vc-menu/vc-menu.docs.md +32 -28
- package/runtime/knowledge/docs/ui/components/molecules/vc-multivalue/vc-multivalue.docs.md +57 -65
- package/runtime/knowledge/docs/ui/components/molecules/vc-pagination/vc-pagination.docs.md +28 -26
- package/runtime/knowledge/docs/ui/components/molecules/vc-radio-button/vc-radio-button.docs.md +55 -20
- package/runtime/knowledge/docs/ui/components/molecules/vc-radio-group/vc-radio-group.docs.md +21 -35
- package/runtime/knowledge/docs/ui/components/molecules/vc-rating/vc-rating.docs.md +38 -33
- package/runtime/knowledge/docs/ui/components/molecules/vc-select/vc-select.docs.md +72 -83
- package/runtime/knowledge/docs/ui/components/molecules/vc-slider/vc-slider.docs.md +21 -16
- package/runtime/knowledge/docs/ui/components/molecules/vc-switch/vc-switch.docs.md +55 -64
- package/runtime/knowledge/docs/ui/components/molecules/vc-textarea/vc-textarea.docs.md +51 -70
- package/runtime/knowledge/docs/ui/components/molecules/vc-toast/vc-toast.docs.md +58 -57
- package/runtime/knowledge/docs/ui/components/organisms/vc-app/vc-app.docs.md +49 -26
- package/runtime/knowledge/docs/ui/components/organisms/vc-auth-layout/vc-auth-layout.docs.md +82 -28
- package/runtime/knowledge/docs/ui/components/organisms/vc-blade/vc-blade.docs.md +90 -75
- package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/composables/table-composables.docs.md +30 -44
- package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/vc-data-table.docs.md +512 -369
- package/runtime/knowledge/docs/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.docs.md +35 -52
- package/runtime/knowledge/docs/ui/components/organisms/vc-gallery/vc-gallery.docs.md +33 -62
- package/runtime/knowledge/docs/ui/components/organisms/vc-image-upload/vc-image-upload.docs.md +17 -23
- package/runtime/knowledge/docs/ui/components/organisms/vc-popup/vc-popup.docs.md +109 -68
- package/runtime/knowledge/docs/ui/components/organisms/vc-sidebar/vc-sidebar.docs.md +82 -44
- package/runtime/knowledge/docs/ui/composables/ui-composables.docs.md +8 -8
- package/runtime/knowledge/docs/ui/composables/useDataTablePagination.docs.md +164 -0
- package/runtime/knowledge/docs/ui/composables/useDataTableSort.docs.md +34 -26
- package/runtime/knowledge/docs/ui/composables/useTableSelection.docs.md +48 -40
- package/runtime/knowledge/docs/ui/composables/useTableSort.docs.md +30 -17
- package/runtime/knowledge/docs/ui/types/ui-types.docs.md +40 -29
- package/runtime/knowledge/examples/offers-module.md +15 -13
- package/runtime/knowledge/examples/team-module.md +82 -119
- package/runtime/knowledge/examples/videos-module.md +44 -17
- package/runtime/knowledge/index.md +22 -0
- package/runtime/knowledge/migration-prompts/blade-form-migration.md +17 -8
- package/runtime/knowledge/migration-prompts/blade-props-migration.md +1 -2
- package/runtime/knowledge/migration-prompts/datatable-migration.md +801 -0
- package/runtime/knowledge/migration-prompts/icon-migration.md +97 -0
- package/runtime/knowledge/migration-prompts/manual-migration-audit.md +117 -0
- package/runtime/knowledge/migration-prompts/notifications-migration.md +8 -3
- package/runtime/knowledge/migration-prompts/nswag-migration.md +25 -29
- package/runtime/knowledge/migration-prompts/use-assets-migration.md +164 -0
- package/runtime/knowledge/migration-prompts/use-data-table-pagination-migration.md +176 -0
- package/runtime/knowledge/migration-prompts/widgets-migration.md +48 -27
- package/runtime/knowledge/patterns/assets-management.md +20 -20
- package/runtime/knowledge/patterns/blade-navigation.md +7 -14
- package/runtime/knowledge/patterns/blade-widget.md +19 -17
- package/runtime/knowledge/patterns/child-blade-flow.md +19 -7
- package/runtime/knowledge/patterns/composable-details.md +20 -50
- package/runtime/knowledge/patterns/composable-list.md +43 -31
- package/runtime/knowledge/patterns/dashboard-widget.md +14 -16
- package/runtime/knowledge/patterns/datatable-pattern.md +521 -0
- package/runtime/knowledge/patterns/details-blade-pattern.md +78 -116
- package/runtime/knowledge/patterns/extension-points-usage.md +53 -44
- package/runtime/knowledge/patterns/form-validation.md +28 -64
- package/runtime/knowledge/patterns/list-blade-pattern.md +33 -21
- package/runtime/knowledge/patterns/module-structure.md +7 -1
- package/runtime/knowledge/patterns/multilanguage-fields.md +8 -14
- package/runtime/knowledge/patterns/notification-template.md +21 -14
- package/runtime/knowledge/patterns/signalr-notifications.md +30 -32
- package/runtime/knowledge/patterns/toolbar-pattern.md +18 -20
- package/runtime/vc-app.md +241 -62
|
@@ -20,7 +20,10 @@ The component uses a vertical layout by default (label above value), but support
|
|
|
20
20
|
|
|
21
21
|
```vue
|
|
22
22
|
<template>
|
|
23
|
-
<VcField
|
|
23
|
+
<VcField
|
|
24
|
+
label="Customer Name"
|
|
25
|
+
model-value="John Doe"
|
|
26
|
+
/>
|
|
24
27
|
</template>
|
|
25
28
|
|
|
26
29
|
<script setup lang="ts">
|
|
@@ -30,27 +33,27 @@ import { VcField } from "@vc-shell/framework";
|
|
|
30
33
|
|
|
31
34
|
## Key Props
|
|
32
35
|
|
|
33
|
-
| Prop
|
|
34
|
-
|
|
35
|
-
| `label`
|
|
36
|
-
| `modelValue`
|
|
37
|
-
| `type`
|
|
38
|
-
| `copyable`
|
|
39
|
-
| `orientation` | `"vertical" \| "horizontal"`
|
|
40
|
-
| `aspectRatio` | `[number, number]`
|
|
41
|
-
| `tooltip`
|
|
36
|
+
| Prop | Type | Default | Description |
|
|
37
|
+
| ------------- | ----------------------------------------------------- | ------------ | --------------------------------------------------------- |
|
|
38
|
+
| `label` | `string` | -- | Field label text |
|
|
39
|
+
| `modelValue` | `string \| number \| Date` | -- | Field content to display |
|
|
40
|
+
| `type` | `"text" \| "date" \| "date-ago" \| "link" \| "email"` | `"text"` | Content type for formatting |
|
|
41
|
+
| `copyable` | `boolean` | `false` | Show a copy-to-clipboard button |
|
|
42
|
+
| `orientation` | `"vertical" \| "horizontal"` | `"vertical"` | Layout direction of label and value |
|
|
43
|
+
| `aspectRatio` | `[number, number]` | `[1, 1]` | Column width ratio for label and value in horizontal mode |
|
|
44
|
+
| `tooltip` | `string` | -- | Tooltip shown on the label |
|
|
42
45
|
|
|
43
46
|
## Type Formatting
|
|
44
47
|
|
|
45
48
|
Each `type` value renders the content differently:
|
|
46
49
|
|
|
47
|
-
| Type
|
|
48
|
-
|
|
49
|
-
| `"text"`
|
|
50
|
-
| `"date"`
|
|
50
|
+
| Type | Behavior |
|
|
51
|
+
| ------------ | -------------------------------------------------------- |
|
|
52
|
+
| `"text"` | Renders the value as plain text |
|
|
53
|
+
| `"date"` | Formats the value as a localized date string |
|
|
51
54
|
| `"date-ago"` | Formats the value as relative time (e.g., "3 hours ago") |
|
|
52
|
-
| `"link"`
|
|
53
|
-
| `"email"`
|
|
55
|
+
| `"link"` | Renders as a clickable `<a>` tag opening in a new tab |
|
|
56
|
+
| `"email"` | Renders as a clickable `mailto:` link |
|
|
54
57
|
|
|
55
58
|
## Common Patterns
|
|
56
59
|
|
|
@@ -59,11 +62,31 @@ Each `type` value renders the content differently:
|
|
|
59
62
|
```vue
|
|
60
63
|
<template>
|
|
61
64
|
<div class="tw-flex tw-flex-col tw-gap-4">
|
|
62
|
-
<VcField
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
<VcField
|
|
66
|
+
label="Order Number"
|
|
67
|
+
model-value="ORD-2024-1234"
|
|
68
|
+
copyable
|
|
69
|
+
/>
|
|
70
|
+
<VcField
|
|
71
|
+
label="Created"
|
|
72
|
+
:model-value="order.createdDate"
|
|
73
|
+
type="date"
|
|
74
|
+
/>
|
|
75
|
+
<VcField
|
|
76
|
+
label="Last Modified"
|
|
77
|
+
:model-value="order.modifiedDate"
|
|
78
|
+
type="date-ago"
|
|
79
|
+
/>
|
|
80
|
+
<VcField
|
|
81
|
+
label="Store URL"
|
|
82
|
+
:model-value="order.storeUrl"
|
|
83
|
+
type="link"
|
|
84
|
+
/>
|
|
85
|
+
<VcField
|
|
86
|
+
label="Contact Email"
|
|
87
|
+
:model-value="order.email"
|
|
88
|
+
type="email"
|
|
89
|
+
/>
|
|
67
90
|
</div>
|
|
68
91
|
</template>
|
|
69
92
|
```
|
|
@@ -104,9 +127,21 @@ The copy button provides visual feedback (checkmark icon for 1 second) after a s
|
|
|
104
127
|
|
|
105
128
|
```vue
|
|
106
129
|
<template>
|
|
107
|
-
<VcField
|
|
108
|
-
|
|
109
|
-
|
|
130
|
+
<VcField
|
|
131
|
+
label="Order ID"
|
|
132
|
+
:model-value="order.id"
|
|
133
|
+
copyable
|
|
134
|
+
/>
|
|
135
|
+
<VcField
|
|
136
|
+
label="Tracking Number"
|
|
137
|
+
:model-value="shipment.trackingNumber"
|
|
138
|
+
copyable
|
|
139
|
+
/>
|
|
140
|
+
<VcField
|
|
141
|
+
label="API Key"
|
|
142
|
+
:model-value="apiKey"
|
|
143
|
+
copyable
|
|
144
|
+
/>
|
|
110
145
|
</template>
|
|
111
146
|
```
|
|
112
147
|
|
|
@@ -135,8 +170,8 @@ const displayFields = computed(() => [
|
|
|
135
170
|
|
|
136
171
|
## CSS Variables
|
|
137
172
|
|
|
138
|
-
| Variable
|
|
139
|
-
|
|
173
|
+
| Variable | Default | Description |
|
|
174
|
+
| ------------- | -------- | -------------------------------------------- |
|
|
140
175
|
| `--field-gap` | `0.5rem` | Gap between label and value in vertical mode |
|
|
141
176
|
|
|
142
177
|
## Accessibility
|
|
@@ -170,4 +205,3 @@ The `type` prop affects rendering, not validation. Setting `type="email"` does n
|
|
|
170
205
|
## Skeleton / Loading State
|
|
171
206
|
|
|
172
207
|
When placed inside a `VcBlade` with `loading=true`, the component automatically renders a skeleton placeholder matching its visual footprint. No additional props or configuration needed.
|
|
173
|
-
|
package/runtime/knowledge/docs/ui/components/molecules/vc-file-upload/vc-file-upload.docs.md
CHANGED
|
@@ -70,12 +70,7 @@ When `multiple` is `false` (default), only one file can be selected per interact
|
|
|
70
70
|
Integrate with vee-validate for file validation rules such as size limits:
|
|
71
71
|
|
|
72
72
|
```vue
|
|
73
|
-
<VcFileUpload
|
|
74
|
-
accept=".pdf, .doc, .docx"
|
|
75
|
-
name="documents"
|
|
76
|
-
:rules="{ size: 5 }"
|
|
77
|
-
@upload="uploadDocuments"
|
|
78
|
-
/>
|
|
73
|
+
<VcFileUpload accept=".pdf, .doc, .docx" name="documents" :rules="{ size: 5 }" @upload="uploadDocuments" />
|
|
79
74
|
```
|
|
80
75
|
|
|
81
76
|
When validation fails, the error is displayed below the drop zone using the built-in `VcHint` component. The `upload` event is only emitted when validation passes.
|
|
@@ -140,7 +135,11 @@ The disabled state reduces opacity and applies `pointer-events: none`.
|
|
|
140
135
|
```vue
|
|
141
136
|
<template>
|
|
142
137
|
<VcForm @submit="saveProduct">
|
|
143
|
-
<VcInput
|
|
138
|
+
<VcInput
|
|
139
|
+
v-model="product.name"
|
|
140
|
+
label="Product Name"
|
|
141
|
+
required
|
|
142
|
+
/>
|
|
144
143
|
<VcFileUpload
|
|
145
144
|
accept=".jpg, .png, .webp"
|
|
146
145
|
:multiple="true"
|
|
@@ -177,14 +176,7 @@ async function onImagesSelected(files: FileList) {
|
|
|
177
176
|
## Recipe: CSV Data Import
|
|
178
177
|
|
|
179
178
|
```vue
|
|
180
|
-
<VcFileUpload
|
|
181
|
-
accept=".csv"
|
|
182
|
-
icon="lucide-file-spreadsheet"
|
|
183
|
-
:custom-text="{ dragHere: 'Drop CSV file here', browse: 'Browse files' }"
|
|
184
|
-
:error-message="importError"
|
|
185
|
-
:loading="isImporting"
|
|
186
|
-
@upload="importCsv"
|
|
187
|
-
/>
|
|
179
|
+
<VcFileUpload accept=".csv" icon="lucide-file-spreadsheet" :custom-text="{ dragHere: 'Drop CSV file here', browse: 'Browse files' }" :error-message="importError" :loading="isImporting" @upload="importCsv" />
|
|
188
180
|
```
|
|
189
181
|
|
|
190
182
|
```ts
|
|
@@ -263,50 +255,50 @@ async function onUpload(files: FileList) {
|
|
|
263
255
|
|
|
264
256
|
## Props
|
|
265
257
|
|
|
266
|
-
| Prop
|
|
267
|
-
|
|
268
|
-
| `accept`
|
|
269
|
-
| `multiple`
|
|
270
|
-
| `loading`
|
|
271
|
-
| `icon`
|
|
272
|
-
| `customText`
|
|
273
|
-
| `rules`
|
|
274
|
-
| `name`
|
|
275
|
-
| `label`
|
|
276
|
-
| `tooltip`
|
|
277
|
-
| `disabled`
|
|
278
|
-
| `required`
|
|
279
|
-
| `error`
|
|
280
|
-
| `errorMessage` | `string`
|
|
258
|
+
| Prop | Type | Default | Description |
|
|
259
|
+
| -------------- | -------------------------------------- | ----------------------------------------- | --------------------------------------------------- |
|
|
260
|
+
| `accept` | `string` | `".jpg, .png, .jpeg, .webp, .heic, .svg"` | Accepted file types (HTML accept attribute format) |
|
|
261
|
+
| `multiple` | `boolean` | `false` | Allow selecting multiple files |
|
|
262
|
+
| `loading` | `boolean` | `false` | Show loading spinner overlay |
|
|
263
|
+
| `icon` | `string` | `"lucide-cloud-upload"` | Icon displayed in the upload zone |
|
|
264
|
+
| `customText` | `{ dragHere: string; browse: string }` | -- | Override default drag/browse instruction text |
|
|
265
|
+
| `rules` | `IValidationRules` | -- | Vee-validate validation rules (e.g., `{ size: 5 }`) |
|
|
266
|
+
| `name` | `string` | `"Gallery"` | Form field name attribute |
|
|
267
|
+
| `label` | `string` | -- | Field label text |
|
|
268
|
+
| `tooltip` | `string` | -- | Tooltip on the label |
|
|
269
|
+
| `disabled` | `boolean` | `false` | Disable all interactions |
|
|
270
|
+
| `required` | `boolean` | `false` | Mark field as required |
|
|
271
|
+
| `error` | `boolean` | `false` | External error flag |
|
|
272
|
+
| `errorMessage` | `string` | -- | Error message text (sets error state when truthy) |
|
|
281
273
|
|
|
282
274
|
## Events
|
|
283
275
|
|
|
284
|
-
| Event
|
|
285
|
-
|
|
276
|
+
| Event | Payload | Description |
|
|
277
|
+
| -------- | ---------- | ------------------------------------------------------------------------------------ |
|
|
286
278
|
| `upload` | `FileList` | Emitted when valid files are selected or dropped. Only fires after validation passes |
|
|
287
279
|
|
|
288
280
|
## Slots
|
|
289
281
|
|
|
290
|
-
| Slot
|
|
291
|
-
|
|
292
|
-
| `error` | --
|
|
282
|
+
| Slot | Scope | Description |
|
|
283
|
+
| ------- | ----- | ----------------------------------------------------------------- |
|
|
284
|
+
| `error` | -- | Custom error content. Replaces the default `VcHint` error display |
|
|
293
285
|
|
|
294
286
|
## CSS Variables
|
|
295
287
|
|
|
296
|
-
| Variable
|
|
297
|
-
|
|
298
|
-
| `--file-upload-border-color`
|
|
299
|
-
| `--file-upload-border-color-hover`
|
|
300
|
-
| `--file-upload-border-color-dragover` | `var(--primary-500)`
|
|
301
|
-
| `--file-upload-border-color-error`
|
|
302
|
-
| `--file-upload-border-radius`
|
|
303
|
-
| `--file-upload-drag-bg`
|
|
304
|
-
| `--file-upload-background-color`
|
|
305
|
-
| `--file-upload-icon-color`
|
|
306
|
-
| `--file-upload-text-color`
|
|
307
|
-
| `--file-upload-error-color`
|
|
308
|
-
| `--file-upload-focus-ring-color`
|
|
309
|
-
| `--file-upload-error-ring-color`
|
|
288
|
+
| Variable | Default | Description |
|
|
289
|
+
| ------------------------------------- | --------------------- | --------------------------------- |
|
|
290
|
+
| `--file-upload-border-color` | `var(--neutrals-200)` | Default border color |
|
|
291
|
+
| `--file-upload-border-color-hover` | `var(--neutrals-400)` | Hover border color |
|
|
292
|
+
| `--file-upload-border-color-dragover` | `var(--primary-500)` | Border color while dragging over |
|
|
293
|
+
| `--file-upload-border-color-error` | `var(--danger-500)` | Error state border color |
|
|
294
|
+
| `--file-upload-border-radius` | `6px` | Corner radius |
|
|
295
|
+
| `--file-upload-drag-bg` | `var(--neutrals-100)` | Background color during drag-over |
|
|
296
|
+
| `--file-upload-background-color` | `transparent` | Default background color |
|
|
297
|
+
| `--file-upload-icon-color` | `var(--neutrals-400)` | Upload icon color |
|
|
298
|
+
| `--file-upload-text-color` | `var(--neutrals-400)` | Instruction text color |
|
|
299
|
+
| `--file-upload-error-color` | `var(--danger-500)` | Error text color |
|
|
300
|
+
| `--file-upload-focus-ring-color` | `var(--primary-100)` | Focus ring color |
|
|
301
|
+
| `--file-upload-error-ring-color` | `var(--danger-100)` | Error state ring color |
|
|
310
302
|
|
|
311
303
|
## Accessibility
|
|
312
304
|
|
|
@@ -317,6 +309,7 @@ async function onUpload(files: FileList) {
|
|
|
317
309
|
- `aria-required` is set when the field is required.
|
|
318
310
|
- Enter and Space keys trigger the file browser dialog.
|
|
319
311
|
- The disabled state applies `pointer-events: none` and reduced opacity.
|
|
312
|
+
|
|
320
313
|
## Related Components
|
|
321
314
|
|
|
322
315
|
- [VcGallery](../../organisms/vc-gallery/) -- Full image gallery with preview, reorder, drag-and-drop sorting, and upload
|
|
@@ -326,4 +319,3 @@ async function onUpload(files: FileList) {
|
|
|
326
319
|
## Skeleton / Loading State
|
|
327
320
|
|
|
328
321
|
When placed inside a `VcBlade` with `loading=true`, the component automatically renders a skeleton placeholder matching its visual footprint. No additional props or configuration needed.
|
|
329
|
-
|
|
@@ -4,11 +4,11 @@ A lightweight `<form>` wrapper that provides consistent styling, prevents defaul
|
|
|
4
4
|
|
|
5
5
|
## When to Use
|
|
6
6
|
|
|
7
|
-
| Scenario
|
|
8
|
-
|
|
9
|
-
| Blade detail view with editable fields | **VcForm**
|
|
10
|
-
| Popup with a short input form
|
|
11
|
-
| Read-only display of data
|
|
7
|
+
| Scenario | Component |
|
|
8
|
+
| -------------------------------------- | -------------------------- |
|
|
9
|
+
| Blade detail view with editable fields | **VcForm** |
|
|
10
|
+
| Popup with a short input form | **VcForm** |
|
|
11
|
+
| Read-only display of data | Plain `<div>` or `VcField` |
|
|
12
12
|
|
|
13
13
|
> **Important:** VcForm renders a native `<form>` element with `novalidate`. All validation is handled by **vee-validate** `Field` components, not by the browser.
|
|
14
14
|
|
|
@@ -20,8 +20,16 @@ A lightweight `<form>` wrapper that provides consistent styling, prevents defaul
|
|
|
20
20
|
<template>
|
|
21
21
|
<VcForm @submit="handleSubmit">
|
|
22
22
|
<div class="tw-space-y-4">
|
|
23
|
-
<VcInput
|
|
24
|
-
|
|
23
|
+
<VcInput
|
|
24
|
+
v-model="name"
|
|
25
|
+
label="Name"
|
|
26
|
+
required
|
|
27
|
+
/>
|
|
28
|
+
<VcInput
|
|
29
|
+
v-model="email"
|
|
30
|
+
label="Email"
|
|
31
|
+
required
|
|
32
|
+
/>
|
|
25
33
|
<VcButton type="submit">Save</VcButton>
|
|
26
34
|
</div>
|
|
27
35
|
</VcForm>
|
|
@@ -73,12 +81,7 @@ Use `VcRow` and `VcCol` inside VcForm to create multi-column layouts that match
|
|
|
73
81
|
VcForm itself does **not** manage validation. Validation is provided by wrapping each input with the `Field` component from `vee-validate`. This is the standard pattern used across the entire codebase:
|
|
74
82
|
|
|
75
83
|
```vue
|
|
76
|
-
<Field
|
|
77
|
-
v-slot="{ errorMessage, handleChange, errors }"
|
|
78
|
-
:model-value="form.fieldName"
|
|
79
|
-
name="fieldName"
|
|
80
|
-
rules="required"
|
|
81
|
-
>
|
|
84
|
+
<Field v-slot="{ errorMessage, handleChange, errors }" :model-value="form.fieldName" name="fieldName" rules="required">
|
|
82
85
|
<VcInput
|
|
83
86
|
v-model="form.fieldName"
|
|
84
87
|
label="Field Label"
|
|
@@ -105,12 +108,7 @@ This same pattern works with all VcShell inputs:
|
|
|
105
108
|
|
|
106
109
|
```vue
|
|
107
110
|
<!-- VcSelect -->
|
|
108
|
-
<Field
|
|
109
|
-
v-slot="{ errorMessage, handleChange, errors }"
|
|
110
|
-
:model-value="form.category"
|
|
111
|
-
name="category"
|
|
112
|
-
rules="required"
|
|
113
|
-
>
|
|
111
|
+
<Field v-slot="{ errorMessage, handleChange, errors }" :model-value="form.category" name="category" rules="required">
|
|
114
112
|
<VcSelect
|
|
115
113
|
v-model="form.category"
|
|
116
114
|
label="Category"
|
|
@@ -125,12 +123,7 @@ This same pattern works with all VcShell inputs:
|
|
|
125
123
|
</Field>
|
|
126
124
|
|
|
127
125
|
<!-- VcTextarea -->
|
|
128
|
-
<Field
|
|
129
|
-
v-slot="{ errorMessage, handleChange, errors }"
|
|
130
|
-
:model-value="form.description"
|
|
131
|
-
name="description"
|
|
132
|
-
rules="required|min:10"
|
|
133
|
-
>
|
|
126
|
+
<Field v-slot="{ errorMessage, handleChange, errors }" :model-value="form.description" name="description" rules="required|min:10">
|
|
134
127
|
<VcTextarea
|
|
135
128
|
v-model="form.description"
|
|
136
129
|
label="Description"
|
|
@@ -411,10 +404,7 @@ const validateSku = (value: string) => {
|
|
|
411
404
|
const debouncedValidation = useDebounceFn(async () => {
|
|
412
405
|
const errors = await validateOffer({ ...offer.value, sku: value });
|
|
413
406
|
const skuErrors = errors?.filter((e) => e.propertyName?.toLowerCase() === "sku");
|
|
414
|
-
setFieldError(
|
|
415
|
-
"sku",
|
|
416
|
-
skuErrors.map((e) => t(`ERRORS.${e.errorCode}`, { value: e.attemptedValue })).join("\n"),
|
|
417
|
-
);
|
|
407
|
+
setFieldError("sku", skuErrors.map((e) => t(`ERRORS.${e.errorCode}`, { value: e.attemptedValue })).join("\n"));
|
|
418
408
|
}, 1000);
|
|
419
409
|
|
|
420
410
|
debouncedValidation();
|
|
@@ -429,12 +419,7 @@ const validateSku = (value: string) => {
|
|
|
429
419
|
|
|
430
420
|
```vue
|
|
431
421
|
<!-- BAD: vee-validate never learns about value changes -->
|
|
432
|
-
<Field
|
|
433
|
-
v-slot="{ errorMessage, errors }"
|
|
434
|
-
:model-value="form.name"
|
|
435
|
-
name="name"
|
|
436
|
-
rules="required"
|
|
437
|
-
>
|
|
422
|
+
<Field v-slot="{ errorMessage, errors }" :model-value="form.name" name="name" rules="required">
|
|
438
423
|
<VcInput
|
|
439
424
|
v-model="form.name"
|
|
440
425
|
label="Name"
|
|
@@ -444,12 +429,7 @@ const validateSku = (value: string) => {
|
|
|
444
429
|
</Field>
|
|
445
430
|
|
|
446
431
|
<!-- GOOD: handleChange keeps vee-validate in sync -->
|
|
447
|
-
<Field
|
|
448
|
-
v-slot="{ errorMessage, handleChange, errors }"
|
|
449
|
-
:model-value="form.name"
|
|
450
|
-
name="name"
|
|
451
|
-
rules="required"
|
|
452
|
-
>
|
|
432
|
+
<Field v-slot="{ errorMessage, handleChange, errors }" :model-value="form.name" name="name" rules="required">
|
|
453
433
|
<VcInput
|
|
454
434
|
v-model="form.name"
|
|
455
435
|
label="Name"
|
|
@@ -464,21 +444,12 @@ const validateSku = (value: string) => {
|
|
|
464
444
|
|
|
465
445
|
```vue
|
|
466
446
|
<!-- BAD: Field does not track the current value -->
|
|
467
|
-
<Field
|
|
468
|
-
v-slot="{ errorMessage, handleChange, errors }"
|
|
469
|
-
name="name"
|
|
470
|
-
rules="required"
|
|
471
|
-
>
|
|
447
|
+
<Field v-slot="{ errorMessage, handleChange, errors }" name="name" rules="required">
|
|
472
448
|
<VcInput v-model="form.name" label="Name" />
|
|
473
449
|
</Field>
|
|
474
450
|
|
|
475
451
|
<!-- GOOD: Field receives the value and can validate it -->
|
|
476
|
-
<Field
|
|
477
|
-
v-slot="{ errorMessage, handleChange, errors }"
|
|
478
|
-
:model-value="form.name"
|
|
479
|
-
name="name"
|
|
480
|
-
rules="required"
|
|
481
|
-
>
|
|
452
|
+
<Field v-slot="{ errorMessage, handleChange, errors }" :model-value="form.name" name="name" rules="required">
|
|
482
453
|
<VcInput
|
|
483
454
|
v-model="form.name"
|
|
484
455
|
label="Name"
|
|
@@ -514,28 +485,28 @@ disabled: computed(() => !modified.value),
|
|
|
514
485
|
|
|
515
486
|
## Props
|
|
516
487
|
|
|
517
|
-
| Prop
|
|
518
|
-
|
|
519
|
-
| `ariaLabel`
|
|
520
|
-
| `ariaLabelledby` | `string` | `undefined` | ID of an element that labels the form
|
|
488
|
+
| Prop | Type | Default | Description |
|
|
489
|
+
| ---------------- | -------- | ----------- | ----------------------------------------- |
|
|
490
|
+
| `ariaLabel` | `string` | `undefined` | Accessible label for the `<form>` element |
|
|
491
|
+
| `ariaLabelledby` | `string` | `undefined` | ID of an element that labels the form |
|
|
521
492
|
|
|
522
493
|
## Events
|
|
523
494
|
|
|
524
|
-
| Event
|
|
525
|
-
|
|
526
|
-
| `submit` | --
|
|
495
|
+
| Event | Payload | Description |
|
|
496
|
+
| -------- | ------- | --------------------------------------------------------------------------- |
|
|
497
|
+
| `submit` | -- | Emitted on form submission. Native `submit` is already `preventDefault`-ed. |
|
|
527
498
|
|
|
528
499
|
## Slots
|
|
529
500
|
|
|
530
|
-
| Slot
|
|
531
|
-
|
|
501
|
+
| Slot | Description |
|
|
502
|
+
| --------- | --------------------------------------------------------------- |
|
|
532
503
|
| `default` | Form content -- inputs, buttons, fieldsets, VcRow/VcCol layouts |
|
|
533
504
|
|
|
534
505
|
## CSS Custom Properties
|
|
535
506
|
|
|
536
|
-
| Variable
|
|
537
|
-
|
|
538
|
-
| `--form-gap` | `1rem`
|
|
507
|
+
| Variable | Default | Description |
|
|
508
|
+
| ------------ | ------- | ------------------------------------------------------- |
|
|
509
|
+
| `--form-gap` | `1rem` | Default gap between form children (when using flex gap) |
|
|
539
510
|
|
|
540
511
|
## Accessibility
|
|
541
512
|
|
|
@@ -26,46 +26,50 @@ Square image tile with skeleton loading, fade-in transition, and a slide-up acti
|
|
|
26
26
|
<script setup lang="ts">
|
|
27
27
|
import { VcImageTile } from "@vc-shell/framework";
|
|
28
28
|
|
|
29
|
-
function openPreview() {
|
|
30
|
-
|
|
29
|
+
function openPreview() {
|
|
30
|
+
/* open lightbox */
|
|
31
|
+
}
|
|
32
|
+
function deleteImage() {
|
|
33
|
+
/* remove from list */
|
|
34
|
+
}
|
|
31
35
|
</script>
|
|
32
36
|
```
|
|
33
37
|
|
|
34
38
|
## Key Props
|
|
35
39
|
|
|
36
|
-
| Prop
|
|
37
|
-
|
|
38
|
-
| `src`
|
|
39
|
-
| `alt`
|
|
40
|
-
| `name`
|
|
41
|
-
| `imageFit`
|
|
42
|
-
| `actions`
|
|
43
|
-
| `thumbnailSize` | `ThumbnailSize`
|
|
40
|
+
| Prop | Type | Default | Description |
|
|
41
|
+
| --------------- | ---------------------- | ----------- | --------------------------------------------------- |
|
|
42
|
+
| `src` | `string` | — | Image source URL |
|
|
43
|
+
| `alt` | `string` | — | Image alt text |
|
|
44
|
+
| `name` | `string` | — | File name displayed in the tray |
|
|
45
|
+
| `imageFit` | `"contain" \| "cover"` | `"contain"` | How the image fits within the tile |
|
|
46
|
+
| `actions` | `VcImageTileActions` | — | Which built-in action buttons to show |
|
|
47
|
+
| `thumbnailSize` | `ThumbnailSize` | — | Load a thumbnail variant instead of full-size image |
|
|
44
48
|
|
|
45
49
|
## VcImageTileActions Interface
|
|
46
50
|
|
|
47
51
|
```ts
|
|
48
52
|
interface VcImageTileActions {
|
|
49
|
-
preview?: boolean;
|
|
50
|
-
edit?: boolean;
|
|
51
|
-
remove?: boolean;
|
|
53
|
+
preview?: boolean; // Fullscreen/maximize button (default visible)
|
|
54
|
+
edit?: boolean; // Pencil edit button
|
|
55
|
+
remove?: boolean; // Trash delete button
|
|
52
56
|
}
|
|
53
57
|
```
|
|
54
58
|
|
|
55
59
|
## Events
|
|
56
60
|
|
|
57
|
-
| Event
|
|
58
|
-
|
|
61
|
+
| Event | Description |
|
|
62
|
+
| --------- | ---------------------- |
|
|
59
63
|
| `preview` | Preview button clicked |
|
|
60
|
-
| `edit`
|
|
61
|
-
| `remove`
|
|
64
|
+
| `edit` | Edit button clicked |
|
|
65
|
+
| `remove` | Remove button clicked |
|
|
62
66
|
|
|
63
67
|
## Slots
|
|
64
68
|
|
|
65
|
-
| Slot
|
|
66
|
-
|
|
69
|
+
| Slot | Description |
|
|
70
|
+
| --------- | ------------------------------------------------------- |
|
|
67
71
|
| `overlay` | Overlay content on top of the image (e.g., drag handle) |
|
|
68
|
-
| `actions` | Additional action buttons in the tray
|
|
72
|
+
| `actions` | Additional action buttons in the tray |
|
|
69
73
|
|
|
70
74
|
## Common Patterns
|
|
71
75
|
|
|
@@ -88,14 +92,7 @@ interface VcImageTileActions {
|
|
|
88
92
|
### All Actions Enabled
|
|
89
93
|
|
|
90
94
|
```vue
|
|
91
|
-
<VcImageTile
|
|
92
|
-
src="/img/photo.jpg"
|
|
93
|
-
name="photo.jpg"
|
|
94
|
-
:actions="{ preview: true, edit: true, remove: true }"
|
|
95
|
-
@preview="onPreview"
|
|
96
|
-
@edit="onEdit"
|
|
97
|
-
@remove="onRemove"
|
|
98
|
-
/>
|
|
95
|
+
<VcImageTile src="/img/photo.jpg" name="photo.jpg" :actions="{ preview: true, edit: true, remove: true }" @preview="onPreview" @edit="onEdit" @remove="onRemove" />
|
|
99
96
|
```
|
|
100
97
|
|
|
101
98
|
### Cover Fit for Photos
|
|
@@ -123,19 +120,19 @@ When `src` is not provided or the image is still loading, a shimmer animation sk
|
|
|
123
120
|
|
|
124
121
|
## CSS Variables
|
|
125
122
|
|
|
126
|
-
| Variable
|
|
127
|
-
|
|
128
|
-
| `--image-tile-radius`
|
|
129
|
-
| `--image-tile-border`
|
|
130
|
-
| `--image-tile-shadow`
|
|
131
|
-
| `--image-tile-shadow-hover`
|
|
132
|
-
| `--image-tile-tray-bg`
|
|
133
|
-
| `--image-tile-tray-blur`
|
|
134
|
-
| `--image-tile-skeleton-from` | `var(--secondary-100)`
|
|
135
|
-
| `--image-tile-skeleton-to`
|
|
136
|
-
| `--image-tile-action-color`
|
|
137
|
-
| `--image-tile-action-hover`
|
|
138
|
-
| `--image-tile-action-danger` | `var(--danger-500)`
|
|
123
|
+
| Variable | Default | Description |
|
|
124
|
+
| ---------------------------- | ----------------------------- | ------------------------- |
|
|
125
|
+
| `--image-tile-radius` | `8px` | Corner radius |
|
|
126
|
+
| `--image-tile-border` | `var(--secondary-200)` | Border color |
|
|
127
|
+
| `--image-tile-shadow` | `0 1px 2px rgb(0 0 0 / 0.05)` | Default shadow |
|
|
128
|
+
| `--image-tile-shadow-hover` | `0 4px 12px rgb(0 0 0 / 0.1)` | Hover shadow |
|
|
129
|
+
| `--image-tile-tray-bg` | `rgba(255, 255, 255, 0.85)` | Tray background |
|
|
130
|
+
| `--image-tile-tray-blur` | `12px` | Tray backdrop blur |
|
|
131
|
+
| `--image-tile-skeleton-from` | `var(--secondary-100)` | Skeleton gradient start |
|
|
132
|
+
| `--image-tile-skeleton-to` | `var(--secondary-200)` | Skeleton gradient end |
|
|
133
|
+
| `--image-tile-action-color` | `var(--secondary-600)` | Action button color |
|
|
134
|
+
| `--image-tile-action-hover` | `var(--primary-500)` | Action button hover color |
|
|
135
|
+
| `--image-tile-action-danger` | `var(--danger-500)` | Danger action hover color |
|
|
139
136
|
|
|
140
137
|
## Accessibility
|
|
141
138
|
|