diff --git a/frontend/src/components/base/BaseButton.vue b/frontend/src/components/base/BaseButton.vue index 3a6e15dfb..d18ea25de 100644 --- a/frontend/src/components/base/BaseButton.vue +++ b/frontend/src/components/base/BaseButton.vue @@ -70,11 +70,11 @@ const loadingIconSize: Record = { } const classes = computed(() => [ - 'inline-flex items-center justify-center border-0 font-[720] leading-[1.15] transition-[background-color,box-shadow,color,opacity,transform] duration-150 cursor-pointer outline-none', + 'inline-flex items-center justify-center border-0 font-[720] leading-[1.15] transition-[background-color,box-shadow,color,opacity,transform] duration-150 cursor-pointer outline-none motion-safe:active:translate-y-px motion-safe:active:scale-[0.985]', props.iconOnly ? iconOnlySizeClasses[props.size] : sizeClasses[props.size], props.iconOnly ? '' : 'rounded-(--cp-button-radius-base)', 'focus-visible:ring-2 focus-visible:ring-(--cp-info-border) focus-visible:ring-offset-2 focus-visible:ring-offset-(--cp-bg-surface)', - 'disabled:cursor-not-allowed disabled:bg-(--cp-disabled-bg) disabled:text-(--cp-disabled-text) disabled:shadow-none', + 'disabled:cursor-not-allowed disabled:transform-none disabled:bg-(--cp-disabled-bg) disabled:text-(--cp-disabled-text) disabled:shadow-none', props.iconOnly && (props.variant === 'default' || props.variant === 'primary') ? iconOnlyDefaultClasses : variantClasses[props.variant], diff --git a/frontend/src/components/base/BaseMotionIcon.vue b/frontend/src/components/base/BaseMotionIcon.vue new file mode 100644 index 000000000..3898a3ce3 --- /dev/null +++ b/frontend/src/components/base/BaseMotionIcon.vue @@ -0,0 +1,302 @@ + + + diff --git a/frontend/src/layout/components/AppSidebar.vue b/frontend/src/layout/components/AppSidebar.vue index 3f0443050..7d841c5d8 100644 --- a/frontend/src/layout/components/AppSidebar.vue +++ b/frontend/src/layout/components/AppSidebar.vue @@ -1,7 +1,16 @@ + + diff --git a/frontend/src/views/accounts/components/AccountOverviewCards.vue b/frontend/src/views/accounts/components/AccountOverviewCards.vue index e664265a5..a52956a3b 100644 --- a/frontend/src/views/accounts/components/AccountOverviewCards.vue +++ b/frontend/src/views/accounts/components/AccountOverviewCards.vue @@ -3,6 +3,7 @@ import { computed } from 'vue' import { AlertTriangle, Gauge, ShieldCheck, Users } from '@lucide/vue' import BaseCard from '@/components/base/BaseCard.vue' +import BaseMotionIcon from '@/components/base/BaseMotionIcon.vue' const props = defineProps<{ summary: any @@ -80,12 +81,13 @@ function overviewIconClass(tone: string) { {{ item.caption }}

- + diff --git a/frontend/src/views/dashboard/components/AccountOverviewCard.vue b/frontend/src/views/dashboard/components/AccountOverviewCard.vue index 28f68765f..8d616581e 100644 --- a/frontend/src/views/dashboard/components/AccountOverviewCard.vue +++ b/frontend/src/views/dashboard/components/AccountOverviewCard.vue @@ -3,9 +3,9 @@ import { clamp } from 'es-toolkit' import { computed } from 'vue' import { CircleCheck, RefreshCw, ShieldAlert, TriangleAlert } from '@lucide/vue' -import BaseCard from '../../../components/base/BaseCard.vue' -import BaseEmpty from '../../../components/base/BaseEmpty.vue' -import AccountIdentityCell from '../../accounts/components/AccountIdentityCell.vue' +import BaseCard from '@/components/base/BaseCard.vue' +import BaseEmpty from '@/components/base/BaseEmpty.vue' +import AccountIdentityCell from '@/views/accounts/components/AccountIdentityCell.vue' const props = defineProps<{ accounts: any[] diff --git a/frontend/src/views/dashboard/components/DashboardHeartbeat.vue b/frontend/src/views/dashboard/components/DashboardHeartbeat.vue new file mode 100644 index 000000000..b732a5984 --- /dev/null +++ b/frontend/src/views/dashboard/components/DashboardHeartbeat.vue @@ -0,0 +1,77 @@ + + + diff --git a/frontend/src/views/dashboard/components/MetricCard.vue b/frontend/src/views/dashboard/components/MetricCard.vue index 1f9abc208..7ff932f7f 100644 --- a/frontend/src/views/dashboard/components/MetricCard.vue +++ b/frontend/src/views/dashboard/components/MetricCard.vue @@ -3,8 +3,9 @@ import type { EChartsOption } from 'echarts' import type { Component } from 'vue' import { computed } from 'vue' -import BaseCard from '../../../components/base/BaseCard.vue' -import BaseChart from '../../../components/charts/BaseChart.vue' +import BaseCard from '@/components/base/BaseCard.vue' +import BaseMotionIcon from '@/components/base/BaseMotionIcon.vue' +import BaseChart from '@/components/charts/BaseChart.vue' import AnimatedMetricValue from './AnimatedMetricValue.vue' @@ -110,12 +111,13 @@ const sparklineOption = computed(() => {