Chore extend svelte element on components and use clsx on class names #63
11 changed files with 37 additions and 25 deletions
|
|
@ -95,4 +95,4 @@
|
||||||
"eslint --fix"
|
"eslint --fix"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,6 @@
|
||||||
children,
|
children,
|
||||||
class: className,
|
class: className,
|
||||||
color,
|
color,
|
||||||
disabled,
|
|
||||||
full = false,
|
full = false,
|
||||||
glass = false,
|
glass = false,
|
||||||
shape,
|
shape,
|
||||||
|
|
@ -37,7 +36,6 @@
|
||||||
|
|
||||||
<button
|
<button
|
||||||
{...props}
|
{...props}
|
||||||
{disabled}
|
|
||||||
class={twMerge('btn', clsx(className))}
|
class={twMerge('btn', clsx(className))}
|
||||||
class:btn-active={active}
|
class:btn-active={active}
|
||||||
class:no-animation={!animation}
|
class:no-animation={!animation}
|
||||||
|
|
@ -51,7 +49,7 @@
|
||||||
class:btn-success={color === 'success'}
|
class:btn-success={color === 'success'}
|
||||||
class:btn-warning={color === 'warning'}
|
class:btn-warning={color === 'warning'}
|
||||||
class:btn-error={color === 'error'}
|
class:btn-error={color === 'error'}
|
||||||
class:btn-disabled={disabled}
|
class:btn-disabled={props.disabled}
|
||||||
class:w-full={full}
|
class:w-full={full}
|
||||||
class:glass
|
class:glass
|
||||||
class:btn-circle={shape === 'circle'}
|
class:btn-circle={shape === 'circle'}
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,28 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import type { DaisyColor, DaisySize } from '$lib/types';
|
import type { DaisyColor, DaisySize } from '$lib/types';
|
||||||
|
import clsx from 'clsx';
|
||||||
import type { Snippet } from 'svelte';
|
import type { Snippet } from 'svelte';
|
||||||
|
import type { SvelteHTMLElements } from 'svelte/elements';
|
||||||
|
import { twMerge } from 'tailwind-merge';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
bordered?: boolean;
|
bordered?: boolean;
|
||||||
color?: Omit<DaisyColor, 'neutral'>;
|
color?: Omit<DaisyColor, 'neutral'>;
|
||||||
disabled?: boolean;
|
|
||||||
error?: string | Snippet;
|
error?: string | Snippet;
|
||||||
form?: string;
|
|
||||||
label?: string | Snippet;
|
label?: string | Snippet;
|
||||||
name?: string;
|
resizable?: boolean | 'yes' | 'no' | 'x' | 'y';
|
||||||
placeholder?: string;
|
|
||||||
size?: DaisySize;
|
size?: DaisySize;
|
||||||
};
|
} & SvelteHTMLElements['textarea'];
|
||||||
let { bordered, color, error, label, size, ...props }: Props = $props();
|
let {
|
||||||
|
bordered,
|
||||||
|
class: className,
|
||||||
|
color,
|
||||||
|
error,
|
||||||
|
label,
|
||||||
|
resizable,
|
||||||
|
size,
|
||||||
|
...props
|
||||||
|
}: Props = $props();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<label class="form-control w-full max-w-lg">
|
<label class="form-control w-full max-w-lg">
|
||||||
|
|
@ -43,7 +52,8 @@
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<textarea
|
<textarea
|
||||||
class="textarea"
|
{...props}
|
||||||
|
class={twMerge('textarea', clsx(className))}
|
||||||
class:textarea-bordered={bordered}
|
class:textarea-bordered={bordered}
|
||||||
class:textarea-xs={size === 'xs'}
|
class:textarea-xs={size === 'xs'}
|
||||||
class:textarea-sm={size === 'sm'}
|
class:textarea-sm={size === 'sm'}
|
||||||
|
|
@ -56,6 +66,9 @@
|
||||||
class:textarea-success={color === 'success'}
|
class:textarea-success={color === 'success'}
|
||||||
class:textarea-warning={color === 'warning'}
|
class:textarea-warning={color === 'warning'}
|
||||||
class:textarea-error={color === 'error' || error}
|
class:textarea-error={color === 'error' || error}
|
||||||
{...props}
|
class:resize={resizable === true || resizable === 'yes'}
|
||||||
|
class:resize-x={resizable === 'x'}
|
||||||
|
class:resize-y={resizable === 'y'}
|
||||||
|
class:resize-none={resizable === false || resizable === 'no'}
|
||||||
></textarea>
|
></textarea>
|
||||||
</label>
|
</label>
|
||||||
|
|
|
||||||
|
|
@ -15,13 +15,13 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
|
{...props}
|
||||||
role="alert"
|
role="alert"
|
||||||
class={twMerge('alert', clsx(className))}
|
class={twMerge('alert', clsx(className))}
|
||||||
class:alert-info={color === 'info'}
|
class:alert-info={color === 'info'}
|
||||||
class:alert-success={color === 'success'}
|
class:alert-success={color === 'success'}
|
||||||
class:alert-warning={color === 'warning'}
|
class:alert-warning={color === 'warning'}
|
||||||
class:alert-error={color === 'error'}
|
class:alert-error={color === 'error'}
|
||||||
{...props}
|
|
||||||
>
|
>
|
||||||
{@render icon?.()}
|
{@render icon?.()}
|
||||||
{@render children?.()}
|
{@render children?.()}
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,19 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import type { DaisyColor, DaisySize } from '$lib/types';
|
import type { DaisyColor, DaisySize } from '$lib/types';
|
||||||
|
import clsx from 'clsx';
|
||||||
|
import type { SvelteHTMLElements } from 'svelte/elements';
|
||||||
|
import { twMerge } from 'tailwind-merge';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
color?: Exclude<DaisyColor, 'ghost'>;
|
color?: Exclude<DaisyColor, 'ghost'>;
|
||||||
size?: DaisySize | 'md';
|
size?: DaisySize | 'md';
|
||||||
variant?: 'spinner' | 'dots' | 'ring' | 'ball' | 'bars' | 'infinity';
|
variant?: 'spinner' | 'dots' | 'ring' | 'ball' | 'bars' | 'infinity';
|
||||||
};
|
} & Pick<SvelteHTMLElements['span'], 'class'>;
|
||||||
let { color, size = 'md', variant = 'spinner' }: Props = $props();
|
let { class: className, color, size = 'md', variant = 'spinner' }: Props = $props();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<span
|
<span
|
||||||
class="loading"
|
class={twMerge('loading', clsx(className))}
|
||||||
class:text-primary={color === 'primary'}
|
class:text-primary={color === 'primary'}
|
||||||
class:text-secondary={color === 'secondary'}
|
class:text-secondary={color === 'secondary'}
|
||||||
class:text-accent={color === 'accent'}
|
class:text-accent={color === 'accent'}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<progress
|
<progress
|
||||||
|
{...props}
|
||||||
class={twMerge('progress', clsx(className))}
|
class={twMerge('progress', clsx(className))}
|
||||||
class:progress-primary={color === 'primary'}
|
class:progress-primary={color === 'primary'}
|
||||||
class:progress-secondary={color === 'secondary'}
|
class:progress-secondary={color === 'secondary'}
|
||||||
|
|
@ -19,7 +20,6 @@
|
||||||
class:progress-success={color === 'success'}
|
class:progress-success={color === 'success'}
|
||||||
class:progress-warning={color === 'warning'}
|
class:progress-warning={color === 'warning'}
|
||||||
class:progress-error={color === 'error'}
|
class:progress-error={color === 'error'}
|
||||||
{...props}
|
|
||||||
>
|
>
|
||||||
{@render children?.()}
|
{@render children?.()}
|
||||||
</progress>
|
</progress>
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,9 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import type { Snippet } from 'svelte';
|
|
||||||
import type { SvelteHTMLElements } from 'svelte/elements';
|
import type { SvelteHTMLElements } from 'svelte/elements';
|
||||||
import { twMerge } from 'tailwind-merge';
|
import { twMerge } from 'tailwind-merge';
|
||||||
|
|
||||||
type Props = {
|
type Props = SvelteHTMLElements['div'];
|
||||||
children?: Snippet;
|
|
||||||
} & SvelteHTMLElements['div'];
|
|
||||||
let { children, class: className, ...props }: Props = $props();
|
let { children, class: className, ...props }: Props = $props();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
|
{...props}
|
||||||
class={twMerge('tooltip', clsx(className))}
|
class={twMerge('tooltip', clsx(className))}
|
||||||
class:tooltip-primary={color === 'primary'}
|
class:tooltip-primary={color === 'primary'}
|
||||||
class:tooltip-secondary={color === 'secondary'}
|
class:tooltip-secondary={color === 'secondary'}
|
||||||
|
|
@ -28,7 +29,6 @@
|
||||||
class:tooltip-left={position === 'left'}
|
class:tooltip-left={position === 'left'}
|
||||||
class:tooltip-right={position === 'right'}
|
class:tooltip-right={position === 'right'}
|
||||||
data-tip={tip}
|
data-tip={tip}
|
||||||
{...props}
|
|
||||||
>
|
>
|
||||||
{@render children?.()}
|
{@render children?.()}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
|
{...props}
|
||||||
class={twMerge('divider', clsx(className))}
|
class={twMerge('divider', clsx(className))}
|
||||||
class:divider-neutral={color === 'neutral'}
|
class:divider-neutral={color === 'neutral'}
|
||||||
class:divider-primary={color === 'primary'}
|
class:divider-primary={color === 'primary'}
|
||||||
|
|
@ -26,7 +27,6 @@
|
||||||
class:divider-vertical={direction === 'vertical'}
|
class:divider-vertical={direction === 'vertical'}
|
||||||
class:divider-start={variant === 'start'}
|
class:divider-start={variant === 'start'}
|
||||||
class:divider-end={variant === 'end'}
|
class:divider-end={variant === 'end'}
|
||||||
{...props}
|
|
||||||
>
|
>
|
||||||
{@render children?.()}
|
{@render children?.()}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<a
|
<a
|
||||||
|
{...props}
|
||||||
class={twMerge('link', clsx(className))}
|
class={twMerge('link', clsx(className))}
|
||||||
class:link-primary={color === 'primary'}
|
class:link-primary={color === 'primary'}
|
||||||
class:link-secondary={color === 'secondary'}
|
class:link-secondary={color === 'secondary'}
|
||||||
|
|
@ -19,6 +20,5 @@
|
||||||
class:link-success={color === 'success'}
|
class:link-success={color === 'success'}
|
||||||
class:link-warning={color === 'warning'}
|
class:link-warning={color === 'warning'}
|
||||||
class:link-error={color === 'error'}
|
class:link-error={color === 'error'}
|
||||||
class:link-hover={hover}
|
class:link-hover={hover}>{@render children?.()}</a
|
||||||
{...props}>{@render children?.()}</a
|
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,7 @@
|
||||||
name="message"
|
name="message"
|
||||||
placeholder="..."
|
placeholder="..."
|
||||||
form="sms"
|
form="sms"
|
||||||
|
resizable={false}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-actions justify-center px-8 pb-4">
|
<div class="card-actions justify-center px-8 pb-4">
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue