Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
7944d18
component: Initial shadcn button commit
DrJKL Dec 15, 2025
d9bde9b
style: Align variants with Figma designs (excluding outlined)
DrJKL Dec 15, 2025
67e446d
component: Stories (mostly copied from TextButton)
DrJKL Dec 15, 2025
5ea477d
component: First migration to standard Button
DrJKL Dec 15, 2025
9eecc11
component: Second use of TextButton replaced with Button (also texton…
DrJKL Dec 16, 2025
2ba7774
component: Migrate clear button in multiselect.
DrJKL Dec 16, 2025
f5f9970
component: Migrating more TextButtons
DrJKL Dec 16, 2025
0931aa7
component: migrate Job Filters Tab buttons
DrJKL Dec 16, 2025
c1fdaea
component: Remaining TextButton instances
DrJKL Dec 16, 2025
e7b85f5
cleanup: Delete TextButton
DrJKL Dec 16, 2025
517fade
fix: Still need to figure out why the body font doesn't apply sometimes.
DrJKL Dec 16, 2025
6b7d6ea
Feat: Combinatoric Story
DrJKL Dec 16, 2025
c83b61c
feat: Use the variants/sizes in generating the story, add a Single Bu…
DrJKL Dec 16, 2025
816b693
cleanup: Simplify button options, add two text only variants
DrJKL Dec 16, 2025
9772832
component: Update what used to be subtype
DrJKL Dec 16, 2025
472ca5b
Storybook: Static size with a maintenance comment
DrJKL Dec 16, 2025
49b17d2
fix: Update subtype props
DrJKL Dec 16, 2025
e88c84d
[automated] Apply ESLint and Prettier fixes
actions-user Dec 16, 2025
82de3b6
Even better: Didn't need that button.
DrJKL Dec 17, 2025
2b2e32a
Fix: Make sure storybook works by disabling vue devtools
DrJKL Dec 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,7 @@
"algoliasearch": "catalog:",
"axios": "catalog:",
"chart.js": "^4.5.0",
"cva": "catalog:",
"dompurify": "^3.2.5",
"dotenv": "catalog:",
"es-toolkit": "^1.39.9",
Expand Down
20 changes: 20 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions pnpm-workspace.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ catalog:
algoliasearch: ^5.21.0
axios: ^1.8.2
cross-env: ^10.1.0
cva: 1.0.0-beta.4
dotenv: ^16.4.5
eslint: ^9.39.1
eslint-config-prettier: ^10.1.8
Expand Down
91 changes: 0 additions & 91 deletions src/components/button/TextButton.stories.ts

This file was deleted.

54 changes: 0 additions & 54 deletions src/components/button/TextButton.vue

This file was deleted.

21 changes: 9 additions & 12 deletions src/components/dialog/confirm/ConfirmFooter.vue
Original file line number Diff line number Diff line change
@@ -1,27 +1,24 @@
<template>
<section class="w-full flex gap-2 justify-end px-2 pb-2">
<TextButton
:label="cancelTextX"
<Button :disabled variant="textonly" autofocus @click="$emit('cancel')">
{{ cancelTextX }}
</Button>
<Button
:disabled
type="transparent"
autofocus
@click="$emit('cancel')"
/>
<TextButton
:label="confirmTextX"
:disabled
type="transparent"
variant="textonly"
:class="confirmClass"
@click="$emit('confirm')"
/>
>
{{ confirmTextX }}
</Button>
</section>
</template>
<script setup lang="ts">
import { computed, toValue } from 'vue'
import type { MaybeRefOrGetter } from 'vue'
import { useI18n } from 'vue-i18n'

import TextButton from '@/components/button/TextButton.vue'
import Button from '@/components/ui/button/Button.vue'

const { t } = useI18n()

Expand Down
20 changes: 7 additions & 13 deletions src/components/dialog/content/MissingNodesFooter.vue
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,16 @@
<i class="icon-[lucide--info]"></i>
</template>
</IconTextButton>
<TextButton
:label="$t('missingNodes.cloud.gotIt')"
type="secondary"
size="md"
@click="handleGotItClick"
/>
<Button variant="secondary" size="md" @click="handleGotItClick">{{
$t('missingNodes.cloud.gotIt')
}}</Button>
</div>

<!-- OSS mode: Open Manager + Install All buttons -->
<div v-else-if="showManagerButtons" class="flex justify-end gap-1 py-2 px-4">
<TextButton
:label="$t('g.openManager')"
type="transparent"
size="sm"
@click="openManager"
/>
<Button variant="textonly" size="sm" @click="openManager">{{
$t('g.openManager')
}}</Button>
<PackInstallButton
v-if="showInstallAllButton"
type="secondary"
Expand All @@ -57,7 +51,7 @@ import { computed, nextTick, watch } from 'vue'
import { useI18n } from 'vue-i18n'

import IconTextButton from '@/components/button/IconTextButton.vue'
import TextButton from '@/components/button/TextButton.vue'
import Button from '@/components/ui/button/Button.vue'
import { isCloud } from '@/platform/distribution/types'
import { useToastStore } from '@/platform/updates/common/toastStore'
import { useDialogStore } from '@/stores/dialogStore'
Expand Down
33 changes: 17 additions & 16 deletions src/components/input/MultiSelect.vue
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@
// Option row hover and focus tone
option: ({ context }: MultiSelectPassThroughMethodOptions) => ({
class: cn(
'flex gap-2 items-center h-10 px-2 rounded-lg',
'flex gap-2 items-center h-10 px-2 rounded-lg cursor-pointer',
'hover:bg-secondary-background-hover',
// Add focus/highlight state for keyboard navigation
context?.focused &&
Expand Down Expand Up @@ -112,14 +112,14 @@
: $t('g.itemSelected', { selectedCount })
}}
</span>
<TextButton
<Button
v-if="showClearButton"
:label="$t('g.clearAll')"
type="transparent"
size="fit-content"
class="text-sm text-text-primary"
variant="textonly"
size="md"
@click.stop="selectedItems = []"
/>
>
{{ $t('g.clearAll') }}
</Button>
</div>
<div class="my-4 h-px bg-border-default"></div>
</div>
Expand All @@ -145,9 +145,13 @@

<!-- Custom option row: square checkbox + label (unchanged layout/colors) -->
<template #option="slotProps">
<div class="flex items-center gap-2" :style="popoverStyle">
<div
role="button"
class="flex items-center gap-2 cursor-pointer"
:style="popoverStyle"
>
<div
class="flex h-4 w-4 shrink-0 items-center justify-center rounded p-0.5 transition-all duration-200"
class="flex size-4 shrink-0 items-center justify-center rounded p-0.5 transition-all duration-200"
:class="
slotProps.selected
? 'bg-primary-background'
Expand All @@ -159,11 +163,9 @@
class="text-bold icon-[lucide--check] text-xs text-white"
/>
</div>
<Button
class="border-none bg-transparent text-left outline-none"
unstyled
>{{ slotProps.option.name }}</Button
>
<span>
{{ slotProps.option.name }}
</span>
</div>
</template>
</MultiSelect>
Expand All @@ -172,17 +174,16 @@
<script setup lang="ts">
import { useFuse } from '@vueuse/integrations/useFuse'
import type { UseFuseOptions } from '@vueuse/integrations/useFuse'
import Button from 'primevue/button'
import type { MultiSelectPassThroughMethodOptions } from 'primevue/multiselect'
import MultiSelect from 'primevue/multiselect'
import { computed, useAttrs } from 'vue'
import { useI18n } from 'vue-i18n'

import SearchBox from '@/components/common/SearchBox.vue'
import Button from '@/components/ui/button/Button.vue'
import { usePopoverSizing } from '@/composables/usePopoverSizing'
import { cn } from '@/utils/tailwindUtil'

import TextButton from '../button/TextButton.vue'
import type { SelectOption } from './types'

type Option = SelectOption
Expand Down
14 changes: 8 additions & 6 deletions src/components/queue/QueueOverlayActive.vue
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,14 @@
</div>
</div>

<TextButton
class="h-6 min-w-[120px] flex-1 px-2 py-0 text-[12px]"
type="secondary"
:label="t('sideToolbar.queueProgressOverlay.viewAllJobs')"
<Button
class="min-w-30 flex-1 px-2 py-0"
variant="secondary"
size="sm"
@click="$emit('viewAllJobs')"
/>
>
{{ t('sideToolbar.queueProgressOverlay.viewAllJobs') }}
</Button>
</div>
</div>
</template>
Expand All @@ -95,7 +97,7 @@ import { computed } from 'vue'
import { useI18n } from 'vue-i18n'

import IconButton from '@/components/button/IconButton.vue'
import TextButton from '@/components/button/TextButton.vue'
import Button from '@/components/ui/button/Button.vue'
import { buildTooltipConfig } from '@/composables/useTooltipConfig'

defineProps<{
Expand Down
Loading