diff --git a/browser_tests/tests/templates.spec.ts-snapshots/template-grid-varying-content-chromium-linux.png b/browser_tests/tests/templates.spec.ts-snapshots/template-grid-varying-content-chromium-linux.png index 2548e66ae..74c9f0b4b 100644 Binary files a/browser_tests/tests/templates.spec.ts-snapshots/template-grid-varying-content-chromium-linux.png and b/browser_tests/tests/templates.spec.ts-snapshots/template-grid-varying-content-chromium-linux.png differ diff --git a/packages/design-system/src/icons/play.svg b/packages/design-system/src/icons/play.svg new file mode 100644 index 000000000..19c709083 --- /dev/null +++ b/packages/design-system/src/icons/play.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/shared-frontend-utils/src/formatUtil.ts b/packages/shared-frontend-utils/src/formatUtil.ts index a5d525c82..658498f1f 100644 --- a/packages/shared-frontend-utils/src/formatUtil.ts +++ b/packages/shared-frontend-utils/src/formatUtil.ts @@ -82,7 +82,7 @@ export function formatSize(value?: number) { * - filename: 'file' * - suffix: 'txt' */ -function getFilenameDetails(fullFilename: string) { +export function getFilenameDetails(fullFilename: string) { if (fullFilename.includes('.')) { return { filename: fullFilename.split('.').slice(0, -1).join('.'), @@ -451,3 +451,26 @@ export function stringToLocale(locale: string): SupportedLocale { ? (locale as SupportedLocale) : 'en' } + +export function formatDuration(milliseconds: number): string { + if (!milliseconds || milliseconds < 0) return '0s' + + const totalSeconds = Math.floor(milliseconds / 1000) + const hours = Math.floor(totalSeconds / 3600) + const minutes = Math.floor((totalSeconds % 3600) / 60) + const remainingSeconds = Math.floor(totalSeconds % 60) + + const parts: string[] = [] + + if (hours > 0) { + parts.push(`${hours}h`) + } + if (minutes > 0) { + parts.push(`${minutes}m`) + } + if (remainingSeconds > 0 || parts.length === 0) { + parts.push(`${remainingSeconds}s`) + } + + return parts.join(' ') +} diff --git a/src/components/button/IconGroup.vue b/src/components/button/IconGroup.vue index 9c5bbd40c..9e73edfab 100644 --- a/src/components/button/IconGroup.vue +++ b/src/components/button/IconGroup.vue @@ -12,6 +12,7 @@ const iconGroupClasses = cn( 'outline-hidden border-none p-0 rounded-lg', 'bg-white dark-theme:bg-zinc-700', 'text-neutral-950 dark-theme:text-white', + 'transition-all duration-200', 'cursor-pointer' ) diff --git a/src/components/button/MoreButton.vue b/src/components/button/MoreButton.vue index 71693ea3a..2cdf394fe 100644 --- a/src/components/button/MoreButton.vue +++ b/src/components/button/MoreButton.vue @@ -1,7 +1,8 @@