From 02311a0e7b3ddd07ba5588feec113ff429c3d0f9 Mon Sep 17 00:00:00 2001 From: Elijah Duffy Date: Thu, 3 Jul 2025 14:45:23 -0700 Subject: [PATCH] finish custom class and improved options overhaul --- src/lib/Button.svelte | 18 +++++------ src/lib/CenterBox.svelte | 10 ++++-- src/lib/Checkbox.svelte | 5 ++- src/lib/Combobox.svelte | 17 +++++----- src/lib/Dateinput.svelte | 7 ++-- src/lib/FramelessButton.svelte | 23 ++++++++------ src/lib/Label.svelte | 19 +++++++---- src/lib/Link.svelte | 23 ++++++++------ src/lib/RadioGroup.svelte | 30 ++---------------- src/lib/TextInput.svelte | 5 ++- src/lib/TimezoneInput.svelte | 29 ++++++++++------- src/lib/ToggleGroup.svelte | 58 +++++++++++++++++++--------------- src/lib/ToggleSelect.svelte | 25 ++++++++------- src/lib/index.ts | 2 +- src/lib/util.ts | 28 ++++++++++++++++ src/routes/+page.svelte | 2 +- 16 files changed, 170 insertions(+), 131 deletions(-) diff --git a/src/lib/Button.svelte b/src/lib/Button.svelte index a9f9f27..07696e3 100644 --- a/src/lib/Button.svelte +++ b/src/lib/Button.svelte @@ -1,21 +1,18 @@ -
+
{@render children()}
diff --git a/src/lib/Checkbox.svelte b/src/lib/Checkbox.svelte index 89a13b3..c9d03aa 100644 --- a/src/lib/Checkbox.svelte +++ b/src/lib/Checkbox.svelte @@ -6,12 +6,14 @@ import type { Snippet } from 'svelte'; import { validate } from '@svelte-toolkit/validate'; import { generateIdentifier } from './util.js'; + import type { ClassValue } from 'svelte/elements'; interface Props { name?: string; required?: boolean; value?: CheckboxState; color?: 'default' | 'contrast'; + class?: ClassValue | null | undefined; children?: Snippet; onchange: (value: CheckboxState) => void; } @@ -21,6 +23,7 @@ required = false, value = $bindable(false), color = 'contrast', + class: classValue, children, onchange }: Props = $props(); @@ -30,7 +33,7 @@ let valid = $state(true); -
+
void; onchange?: (e: ComboboxChangeEvent) => void; } @@ -54,10 +56,11 @@ matchWidth = false, options, required = false, - invalidMessage, + invalidMessage = 'Please select an option', label, placeholder, notFoundMessage = 'No results found', + class: classValue, onvalidate, onchange }: Props = $props(); @@ -324,7 +327,7 @@ {/if} -
+
{#if label} @@ -335,7 +338,7 @@ {name} {id} value={value?.value ?? ''} - class="hidden" + type="hidden" use:validate={validateOpts} onvalidate={(e) => { valid = e.detail.valid; @@ -349,11 +352,9 @@
- {#if invalidMessage} -
- -
- {/if} +
+ +
{#snippet searchInputBox(caret: boolean = true)} diff --git a/src/lib/Dateinput.svelte b/src/lib/Dateinput.svelte index 81a22c1..69a2838 100644 --- a/src/lib/Dateinput.svelte +++ b/src/lib/Dateinput.svelte @@ -35,7 +35,7 @@ label, required = false, invalidMessage = 'Valid date is required', - class: classList, + class: classValue, format = ['year', 'month', 'day'] }: Props = $props(); @@ -200,7 +200,7 @@ }; -
+
{#if label} @@ -213,8 +213,7 @@ 'border-accent rounded-sm border bg-white px-[1.125rem] py-3.5 font-normal transition-colors', 'text-text dark:border-accent/50 dark:bg-text-800 dark:text-background dark:sm:bg-slate-800', 'ring-accent focus-within:ring-1', - !valid && 'border-red-500!', - classList + !valid && 'border-red-500!' ]} > import type { Snippet } from 'svelte'; - import type { MouseEventHandler } from 'svelte/elements'; + import type { ClassValue, MouseEventHandler } from 'svelte/elements'; + + interface Props { + icon?: string; + iconPosition?: 'left' | 'right'; + disabled?: boolean; + class?: ClassValue | null | undefined; + children: Snippet; + onclick?: MouseEventHandler; + } let { icon, iconPosition = 'right', disabled = false, + class: classValue, children, onclick - }: { - icon?: string; - iconPosition?: 'left' | 'right'; - disabled?: boolean; - children: Snippet; - onclick?: MouseEventHandler; - } = $props(); + }: Props = $props(); {#snippet iconSnippet()} @@ -24,7 +28,8 @@