diff --git a/packages/stage-ui/src/components/misc/container-error.story.vue b/packages/stage-ui/src/components/misc/container-error.story.vue new file mode 100644 index 000000000..521aa21c8 --- /dev/null +++ b/packages/stage-ui/src/components/misc/container-error.story.vue @@ -0,0 +1,58 @@ + + + diff --git a/packages/ui/package.json b/packages/ui/package.json index 41af94b65..eed775264 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -26,6 +26,7 @@ "typecheck": "vue-tsc --noEmit" }, "dependencies": { + "@moeru/std": "catalog:", "@vueuse/core": "^14.2.1", "floating-vue": "^5.2.2", "reka-ui": "^2.9.2", diff --git a/packages/ui/src/components/misc/button.vue b/packages/ui/src/components/misc/button.vue index 80ed26203..2497cc29e 100644 --- a/packages/ui/src/components/misc/button.vue +++ b/packages/ui/src/components/misc/button.vue @@ -19,6 +19,7 @@ interface ButtonProps { loading?: boolean // Loading state variant?: ButtonVariant // Button style variant size?: ButtonSize // Button size variant + shape?: 'rounded' | 'pill' | 'square' // Button shape theme?: ButtonTheme // Button theme block?: boolean // Full width button } @@ -127,9 +128,21 @@ const variantClasses: Record = { - sm: 'px-3 py-1.5 text-xs', - md: 'px-4 py-2 text-sm', - lg: 'px-6 py-3 text-base', + sm: props.shape === 'pill' + ? 'px-3 py-1.5 text-xs' + : props.shape === 'square' + ? 'p-2 text-xs' + : 'px-4 py-2 text-sm', + md: props.shape === 'pill' + ? 'px-4 py-2 text-sm' + : props.shape === 'square' + ? 'p-3 text-sm' + : 'px-5 py-3 text-base', + lg: props.shape === 'pill' + ? 'px-6 py-3 text-base' + : props.shape === 'square' + ? 'p-4 text-base' + : 'px-6 py-3 text-base', } // Base classes that are always applied diff --git a/packages/ui/src/components/misc/container-error.vue b/packages/ui/src/components/misc/container-error.vue new file mode 100644 index 000000000..1f6427d88 --- /dev/null +++ b/packages/ui/src/components/misc/container-error.vue @@ -0,0 +1,219 @@ + + + diff --git a/packages/ui/src/components/misc/index.ts b/packages/ui/src/components/misc/index.ts index ef17b89e9..62b549c37 100644 --- a/packages/ui/src/components/misc/index.ts +++ b/packages/ui/src/components/misc/index.ts @@ -1,4 +1,5 @@ export { default as Button } from './button.vue' export { default as Callout } from './callout.vue' +export { default as ContainerError } from './container-error.vue' export { default as DoubleCheckButton } from './double-check-button.vue' export { default as Progress } from './progress.vue' diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5668bf9b6..dd74adccf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3481,6 +3481,9 @@ importers: packages/ui: dependencies: + '@moeru/std': + specifier: 'catalog:' + version: 0.1.0-beta.17 '@vueuse/core': specifier: ^14.2.1 version: 14.2.1(vue@3.5.30(typescript@5.9.3))