From 2c26fbb550838c8bc696391ed963d8633269c0bd Mon Sep 17 00:00:00 2001 From: Alexander Brown Date: Thu, 18 Dec 2025 16:09:56 -0800 Subject: [PATCH] Component: Button Migration 3: IconTextButton (#7603) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Replace all the `IconTextButton`s with `Button` ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-7603-WIP-Component-Button-Migraion-3-IconTextButton-2cd6d73d365081b7b742fa2172dc2ba8) by [Unito](https://www.unito.io) --- .../button/IconTextButton.stories.ts | 213 ------------------ src/components/button/IconTextButton.vue | 58 ----- src/components/button/MoreButton.stories.ts | 28 +-- .../widget/WorkflowTemplateSelectorDialog.vue | 16 +- .../dialog/content/MissingNodesFooter.vue | 14 +- src/components/queue/QueueOverlayExpanded.vue | 20 +- src/components/queue/QueueOverlayHeader.vue | 20 +- src/components/queue/job/JobContextMenu.vue | 29 ++- .../queue/job/JobDetailsPopover.vue | 36 ++- src/components/queue/job/JobFiltersBar.vue | 77 +++---- .../sidebar/tabs/AssetsSidebarTab.vue | 43 ++-- src/components/ui/button/Button.stories.ts | 38 +++- src/components/widget/SampleModelSelector.vue | 38 ++-- .../widget/layout/BaseModalLayout.stories.ts | 48 ++-- .../assets/components/AssetBrowserModal.vue | 29 ++- src/platform/assets/components/AssetCard.vue | 28 ++- .../assets/components/MediaAssetCard.vue | 13 +- .../components/MediaAssetContextMenu.vue | 24 +- .../assets/components/MediaAssetFilterBar.vue | 14 +- .../assets/components/MediaAssetSortMenu.vue | 77 +++---- .../assets/components/UploadModelFooter.vue | 54 ++--- .../form/dropdown/FormDropdownMenuFilter.vue | 17 +- src/types/buttonTypes.ts | 69 ------ .../manager/button/PackInstallButton.vue | 40 ++-- .../manager/button/PackUninstallButton.vue | 32 +-- .../manager/button/PackUpdateButton.vue | 17 +- 26 files changed, 338 insertions(+), 754 deletions(-) delete mode 100644 src/components/button/IconTextButton.stories.ts delete mode 100644 src/components/button/IconTextButton.vue delete mode 100644 src/types/buttonTypes.ts diff --git a/src/components/button/IconTextButton.stories.ts b/src/components/button/IconTextButton.stories.ts deleted file mode 100644 index 0139b9bd6..000000000 --- a/src/components/button/IconTextButton.stories.ts +++ /dev/null @@ -1,213 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/vue3-vite' - -import IconTextButton from './IconTextButton.vue' - -const meta: Meta = { - title: 'Components/Button/IconTextButton', - component: IconTextButton, - tags: ['autodocs'], - argTypes: { - label: { - control: 'text' - }, - size: { - control: { type: 'select' }, - options: ['sm', 'md'] - }, - type: { - control: { type: 'select' }, - options: ['primary', 'secondary', 'transparent'] - }, - border: { - control: 'boolean', - description: 'Toggle border attribute' - }, - disabled: { - control: 'boolean', - description: 'Toggle disable status' - }, - iconPosition: { - control: { type: 'select' }, - options: ['left', 'right'] - }, - onClick: { action: 'clicked' } - } -} - -export default meta -type Story = StoryObj - -export const Primary: Story = { - render: (args) => ({ - components: { IconTextButton }, - setup() { - return { args } - }, - template: ` - - - - ` - }), - args: { - label: 'Deploy', - type: 'primary', - size: 'md' - } -} - -export const Secondary: Story = { - render: (args) => ({ - components: { IconTextButton }, - setup() { - return { args } - }, - template: ` - - - - ` - }), - args: { - label: 'Settings', - type: 'secondary', - size: 'md' - } -} - -export const Transparent: Story = { - render: (args) => ({ - components: { IconTextButton }, - setup() { - return { args } - }, - template: ` - - - - ` - }), - args: { - label: 'Cancel', - type: 'transparent', - size: 'md' - } -} - -export const WithIconRight: Story = { - render: (args) => ({ - components: { IconTextButton }, - setup() { - return { args } - }, - template: ` - - - - ` - }), - args: { - label: 'Next', - type: 'primary', - size: 'md', - iconPosition: 'right' - } -} - -export const Small: Story = { - render: (args) => ({ - components: { IconTextButton }, - setup() { - return { args } - }, - template: ` - - - - ` - }), - args: { - label: 'Save', - type: 'primary', - size: 'sm' - } -} - -export const AllVariants: Story = { - render: () => ({ - components: { - IconTextButton - }, - template: ` -
-
- - - - - - -
-
- - - - - - -
-
- - - - - - -
-
- - - - - - - - - -
-
- ` - }), - parameters: { - controls: { disable: true }, - actions: { disable: true } - } -} diff --git a/src/components/button/IconTextButton.vue b/src/components/button/IconTextButton.vue deleted file mode 100644 index 132622643..000000000 --- a/src/components/button/IconTextButton.vue +++ /dev/null @@ -1,58 +0,0 @@ - - - diff --git a/src/components/button/MoreButton.stories.ts b/src/components/button/MoreButton.stories.ts index ae1f86545..a0110722f 100644 --- a/src/components/button/MoreButton.stories.ts +++ b/src/components/button/MoreButton.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import IconTextButton from './IconTextButton.vue' +import Button from '@/components/ui/button/Button.vue' import MoreButton from './MoreButton.vue' const meta: Meta = { @@ -17,30 +17,26 @@ type Story = StoryObj export const Basic: Story = { render: () => ({ - components: { MoreButton, IconTextButton }, + components: { MoreButton, Button }, template: `
diff --git a/src/components/custom/widget/WorkflowTemplateSelectorDialog.vue b/src/components/custom/widget/WorkflowTemplateSelectorDialog.vue index c90f2b0ec..5f96fe4c2 100644 --- a/src/components/custom/widget/WorkflowTemplateSelectorDialog.vue +++ b/src/components/custom/widget/WorkflowTemplateSelectorDialog.vue @@ -22,16 +22,17 @@ @@ -382,7 +383,6 @@ import ProgressSpinner from 'primevue/progressspinner' import { computed, onBeforeUnmount, onMounted, provide, ref, watch } from 'vue' import { useI18n } from 'vue-i18n' -import IconTextButton from '@/components/button/IconTextButton.vue' import CardBottom from '@/components/card/CardBottom.vue' import CardContainer from '@/components/card/CardContainer.vue' import CardTop from '@/components/card/CardTop.vue' diff --git a/src/components/dialog/content/MissingNodesFooter.vue b/src/components/dialog/content/MissingNodesFooter.vue index 4849f3149..3638e5ee4 100644 --- a/src/components/dialog/content/MissingNodesFooter.vue +++ b/src/components/dialog/content/MissingNodesFooter.vue @@ -4,20 +4,17 @@ v-if="isCloud" class="flex w-full items-center justify-between gap-2 py-2 px-4" > - - - + + {{ $t('missingNodes.cloud.learnMore') }} + @@ -50,7 +47,6 @@ import { computed, nextTick, watch } from 'vue' import { useI18n } from 'vue-i18n' -import IconTextButton from '@/components/button/IconTextButton.vue' import Button from '@/components/ui/button/Button.vue' import { isCloud } from '@/platform/distribution/types' import { useToastStore } from '@/platform/updates/common/toastStore' diff --git a/src/components/queue/QueueOverlayExpanded.vue b/src/components/queue/QueueOverlayExpanded.vue index ed0e28204..1d2004098 100644 --- a/src/components/queue/QueueOverlayExpanded.vue +++ b/src/components/queue/QueueOverlayExpanded.vue @@ -8,20 +8,15 @@ />
- - - + + {{ t('sideToolbar.queueProgressOverlay.showAssets') }} +
- - - + + {{ + t('sideToolbar.queueProgressOverlay.clearHistory') + }} +
@@ -71,7 +70,6 @@ import type { PopoverMethods } from 'primevue/popover' import { computed, ref } from 'vue' import { useI18n } from 'vue-i18n' -import IconTextButton from '@/components/button/IconTextButton.vue' import Button from '@/components/ui/button/Button.vue' import { buildTooltipConfig } from '@/composables/useTooltipConfig' import { isCloud } from '@/platform/distribution/types' diff --git a/src/components/queue/job/JobContextMenu.vue b/src/components/queue/job/JobContextMenu.vue index 3efb6735b..5ed96ad9e 100644 --- a/src/components/queue/job/JobContextMenu.vue +++ b/src/components/queue/job/JobContextMenu.vue @@ -20,24 +20,23 @@
- - - + + {{ entry.label }} +
@@ -47,7 +46,7 @@ import Popover from 'primevue/popover' import { ref } from 'vue' -import IconTextButton from '@/components/button/IconTextButton.vue' +import Button from '@/components/ui/button/Button.vue' import type { MenuEntry } from '@/composables/queue/useJobMenu' defineProps<{ entries: MenuEntry[] }>() diff --git a/src/components/queue/job/JobDetailsPopover.vue b/src/components/queue/job/JobDetailsPopover.vue index e7755f4c7..d2d3a7ad1 100644 --- a/src/components/queue/job/JobDetailsPopover.vue +++ b/src/components/queue/job/JobDetailsPopover.vue @@ -58,31 +58,28 @@ {{ t('queue.jobDetails.errorMessage') }}
- - - - {{ copyAriaLabel }} + + +
- - - + {{ + t('sideToolbar.queueProgressOverlay.filterAllWorkflows') + }} + +
- - - + {{ + t('sideToolbar.queueProgressOverlay.filterCurrentWorkflow') + }} + +