diff --git a/.changeset/clever-avocados-hope.md b/.changeset/clever-avocados-hope.md
new file mode 100644
index 000000000..26f562bfe
--- /dev/null
+++ b/.changeset/clever-avocados-hope.md
@@ -0,0 +1,5 @@
+---
+"svelte-ux": minor
+---
+
+Add ability to set a default values for labelPlacement and variant props
diff --git a/packages/create-svelte-ux/templates/starter/src/routes/+layout.svelte b/packages/create-svelte-ux/templates/starter/src/routes/+layout.svelte
index cdf1cd426..a90556081 100644
--- a/packages/create-svelte-ux/templates/starter/src/routes/+layout.svelte
+++ b/packages/create-svelte-ux/templates/starter/src/routes/+layout.svelte
@@ -5,13 +5,19 @@
import '../app.postcss';
settings({
- classes: {
- AppBar: 'bg-primary text-white shadow-md',
+ components: {
+ AppBar: {
+ classes: 'bg-primary text-white shadow-md'
+ },
AppLayout: {
- nav: 'bg-neutral-800'
+ classes: {
+ nav: 'bg-neutral-800'
+ }
},
NavItem: {
- root: 'text-sm text-gray-400 pl-6 py-2 hover:text-white hover:bg-gray-300/10 [&:where(.is-active)]:text-sky-400 [&:where(.is-active)]:bg-gray-500/10'
+ classes: {
+ root: 'text-sm text-gray-400 pl-6 py-2 hover:text-white hover:bg-gray-300/10 [&:where(.is-active)]:text-sky-400 [&:where(.is-active)]:bg-gray-500/10'
+ }
}
}
});
diff --git a/packages/svelte-ux/src/lib/components/Button.svelte b/packages/svelte-ux/src/lib/components/Button.svelte
index 8a9520440..da7948a62 100644
--- a/packages/svelte-ux/src/lib/components/Button.svelte
+++ b/packages/svelte-ux/src/lib/components/Button.svelte
@@ -6,10 +6,13 @@
import { cls } from '../utils/styles';
import { multi } from '../actions/multi';
import type { Actions } from '../actions/multi';
- import type { ThemeColors } from '$lib/types';
- import { getComponentClasses } from './theme';
+ import type { ButtonColor, ButtonSize } from '$lib/types';
import { getButtonGroup } from './ButtonGroup.svelte';
import { asIconData, type IconInput } from '$lib/utils/icons';
+ import type { ButtonRounded, ButtonVariant } from '$lib/types';
+ import { getComponentSettings } from './settings';
+
+ const { classes: settingsClasses, defaults } = getComponentSettings('Button');
export let type: 'button' | 'submit' | 'reset' = 'button';
export let href: string | undefined = undefined;
@@ -21,18 +24,10 @@
export let loading: boolean = false;
export let disabled: boolean = false;
- export let rounded: boolean | 'full' | undefined = undefined; // default in reactive groupContext below
- export let variant:
- | 'default'
- | 'outline'
- | 'fill'
- | 'fill-outline'
- | 'fill-light'
- | 'text'
- | 'none'
- | undefined = undefined; // default in reactive groupContext below
- export let size: 'sm' | 'md' | 'lg' | undefined = undefined; // default in reactive groupContext below
- export let color: ThemeColors | 'default' | undefined = undefined; // default in reactive groupContext below
+ export let rounded: ButtonRounded | undefined = undefined; // default in reactive groupContext below
+ export let variant: ButtonVariant | undefined = undefined; // default in reactive groupContext below
+ export let size: ButtonSize | undefined = undefined; // default in reactive groupContext below
+ export let color: ButtonColor | undefined = undefined; // default in reactive groupContext below
/** @type {{root?: string, icon?: string, loading?: string}} */
export let classes: {
@@ -40,14 +35,13 @@
icon?: string;
loading?: string;
} = {};
- const settingsClasses = getComponentClasses('Button');
// Override default from `ButtonGroup` if set
const groupContext = getButtonGroup();
- $: variant = variant ?? groupContext?.variant ?? 'default';
- $: size = size ?? groupContext?.size ?? 'md';
- $: color = color ?? groupContext?.color ?? 'default';
- $: rounded = rounded ?? groupContext?.rounded ?? (iconOnly ? 'full' : true);
+ $: variant = variant ?? groupContext?.variant ?? defaults.variant ?? 'default';
+ $: size = size ?? groupContext?.size ?? defaults.size ?? 'md';
+ $: color = color ?? groupContext?.color ?? defaults.color ?? 'default';
+ $: rounded = rounded ?? groupContext?.rounded ?? defaults.rounded ?? (iconOnly ? 'full' : true);
$: _class = cls(
'Button',
diff --git a/packages/svelte-ux/src/lib/components/ButtonGroup.svelte b/packages/svelte-ux/src/lib/components/ButtonGroup.svelte
index 26cf68619..d44b6d029 100644
--- a/packages/svelte-ux/src/lib/components/ButtonGroup.svelte
+++ b/packages/svelte-ux/src/lib/components/ButtonGroup.svelte
@@ -1,23 +1,14 @@