Skip to content

Commit 771cf9d

Browse files
authored
fix: Button loader, Datepicker range color, example code etc. (#1838)
* fix: typescript page * chore: update svelte-rune-highlight * fix: typo * fix: use svelte-rune-highlight ExampleWrapper and HighlightCompo * chore: cleanup * fix: #1839 * fix: #1841 * fix: coderabbitai fix * style: clipboard-manager page * fix: typo
1 parent 28a4278 commit 771cf9d

File tree

15 files changed

+101
-227
lines changed

15 files changed

+101
-227
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@
9292
"svelte-doc-llm": "^0.5.1",
9393
"svelte-lib-helpers": "^0.4.31",
9494
"svelte-meta-tags": "^4.5.0",
95-
"svelte-rune-highlight": "^0.7.1",
95+
"svelte-rune-highlight": "^0.11.0",
9696
"tailwindcss": "^4.1.16",
9797
"tsx": "^4.20.6",
9898
"typescript": "^5.9.3",

pnpm-lock.yaml

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/lib/buttons/Button.svelte

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,24 @@
11
<script lang="ts">
22
import { getContext } from "svelte";
33
import clsx from "clsx";
4+
import { Spinner } from "$lib";
45
import type { SizeType, ButtonProps } from "$lib";
56
import { getTheme } from "$lib/theme/themeUtils";
67
import { button } from "./theme";
78
89
const group: SizeType = getContext("group");
910
const ctxDisabled: boolean | undefined = getContext("disabled");
1011
11-
let { children, pill, outline = false, size = "md", color, shadow = false, tag = "button", disabled, loading = false, class: className, ...restProps }: ButtonProps = $props();
12+
let { children, pill, outline = false, size = "md", color, shadow = false, tag = "button", disabled, loading = false, spinnerProps = { size: "4" }, class: className, ...restProps }: ButtonProps = $props();
1213
1314
const theme = getTheme("button");
1415
1516
let actualSize = $derived(group ? "sm" : size);
1617
let actualColor = $derived(color ?? (group ? (outline ? "dark" : "alternative") : "primary"));
1718
let isDisabled = $derived(Boolean(ctxDisabled) || Boolean(disabled) || loading);
1819
19-
const { base, outline: outline_, shadow: shadow_ } = $derived(button({ color: actualColor, size: actualSize, disabled: isDisabled, pill, group: !!group }));
20+
const { base, outline: outline_, shadow: shadow_, spinner } = $derived(button({ color: actualColor, size: actualSize, disabled: isDisabled, pill, group: !!group }));
21+
2022
let btnCls = $derived(base({ class: clsx(outline && outline_(), shadow && shadow_(), theme?.base, className) }));
2123
</script>
2224

@@ -28,10 +30,7 @@
2830
<button type="button" {...restProps} class={btnCls} disabled={isDisabled}>
2931
{@render children?.()}
3032
{#if loading}
31-
<svg class="ml-2 h-4 w-4 animate-spin text-white" fill="none" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
32-
<circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4" />
33-
<path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z" />
34-
</svg>
33+
<Spinner {...spinnerProps} class={spinner()}/>
3534
{/if}
3635
</button>
3736
{:else}
@@ -55,6 +54,7 @@
5554
@prop tag = "button"
5655
@prop disabled
5756
@prop loading = false
57+
@prop spinnerProps = { size: "4" }
5858
@prop class: className
5959
@prop ...restProps
6060
-->

src/lib/buttons/theme.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ export const button = tv({
88
slots: {
99
base: "text-center font-medium inline-flex items-center justify-center",
1010
outline: "bg-transparent border hover:text-white dark:bg-transparent dark:hover-text-white",
11-
shadow: "shadow-lg"
11+
shadow: "shadow-lg",
12+
spinner: "ms-2"
1213
},
1314
variants: {
1415
color: {

src/lib/datepicker/theme.ts

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -22,29 +22,29 @@ export const datepicker = tv({
2222
},
2323
variants: {
2424
color: {
25-
primary: { input: "focus:ring-primary-500 dark:focus:ring-primary-400", dayButton: "bg-primary-100 dark:bg-primary-900" },
26-
blue: { input: "focus:ring-blue-500 dark:focus:ring-blue-400", dayButton: "bg-blue-100 dark:bg-blue-900" },
27-
red: { input: "focus:ring-red-500 dark:focus:ring-red-400", dayButton: "bg-red-100 dark:bg-red-900" },
28-
green: { input: "focus:ring-green-500 dark:focus:ring-green-400", dayButton: "bg-green-100 dark:bg-green-900" },
29-
yellow: { input: "focus:ring-yellow-500 dark:focus:ring-yellow-400", dayButton: "bg-yellow-100 dark:bg-yellow-900" },
30-
purple: { input: "focus:ring-purple-500 dark:focus:ring-purple-400", dayButton: "bg-purple-100 dark:bg-purple-900" },
31-
dark: { input: "focus:ring-gray-500 dark:focus:ring-gray-400", dayButton: "bg-gray-100 dark:bg-gray-900" },
32-
light: { input: "focus:ring-gray-500 dark:focus:ring-gray-400", dayButton: "bg-gray-100 dark:bg-gray-900" },
33-
alternative: { input: "focus:ring-alternative-500 dark:focus:ring-alternative-400", dayButton: "bg-alternative-100 dark:bg-alternative-900" },
34-
secondary: { input: "focus:ring-secondary-500 dark:focus:ring-secondary-400", dayButton: "bg-secondary-100 dark:bg-secondary-900" },
35-
gray: { input: "focus:ring-gray-500 dark:focus:ring-gray-400", dayButton: "bg-gray-100 dark:bg-gray-900" },
36-
orange: { input: "focus:ring-orange-500 dark:focus:ring-orange-400", dayButton: "bg-orange-100 dark:bg-orange-900" },
37-
amber: { input: "focus:ring-amber-500 dark:focus:ring-amber-400", dayButton: "bg-amber-100 dark:bg-amber-900" },
38-
lime: { input: "focus:ring-lime-500 dark:focus:ring-lime-400", dayButton: "bg-lime-100 dark:bg-lime-900" },
39-
emerald: { input: "focus:ring-emerald-500 dark:focus:ring-emerald-400", dayButton: "bg-emerald-100 dark:bg-emerald-900" },
40-
teal: { input: "focus:ring-teal-500 dark:focus:ring-teal-400", dayButton: "bg-teal-100 dark:bg-teal-900" },
41-
cyan: { input: "focus:ring-cyan-500 dark:focus:ring-cyan-400", dayButton: "bg-cyan-100 dark:bg-cyan-900" },
42-
sky: { input: "focus:ring-sky-500 dark:focus:ring-sky-400", dayButton: "bg-sky-100 dark:bg-sky-900" },
43-
indigo: { input: "focus:ring-indigo-500 dark:focus:ring-indigo-400", dayButton: "bg-indigo-100 dark:bg-indigo-900" },
44-
violet: { input: "focus:ring-violet-500 dark:focus:ring-violet-400", dayButton: "bg-violet-100 dark:bg-violet-900" },
45-
fuchsia: { input: "focus:ring-fuchsia-500 dark:focus:ring-fuchsia-400", dayButton: "bg-fuchsia-100 dark:bg-fuchsia-900" },
46-
pink: { input: "focus:ring-pink-500 dark:focus:ring-pink-400", dayButton: "bg-pink-100 dark:bg-pink-900" },
47-
rose: { input: "focus:ring-rose-500 dark:focus:ring-rose-400", dayButton: "bg-rose-100 dark:bg-rose-900" }
25+
primary: { input: "focus:ring-primary-500 dark:focus:ring-primary-400", dayButton: "bg-primary-300 dark:bg-primary-900" },
26+
blue: { input: "focus:ring-blue-500 dark:focus:ring-blue-400", dayButton: "bg-blue-300 dark:bg-blue-900" },
27+
red: { input: "focus:ring-red-500 dark:focus:ring-red-400", dayButton: "bg-red-300 dark:bg-red-900" },
28+
green: { input: "focus:ring-green-500 dark:focus:ring-green-400", dayButton: "bg-green-300 dark:bg-green-900" },
29+
yellow: { input: "focus:ring-yellow-500 dark:focus:ring-yellow-400", dayButton: "bg-yellow-300 dark:bg-yellow-900" },
30+
purple: { input: "focus:ring-purple-500 dark:focus:ring-purple-400", dayButton: "bg-purple-300 dark:bg-purple-900" },
31+
dark: { input: "focus:ring-gray-500 dark:focus:ring-gray-400", dayButton: "bg-gray-300 dark:bg-gray-900" },
32+
light: { input: "focus:ring-gray-500 dark:focus:ring-gray-400", dayButton: "bg-gray-300 dark:bg-gray-900" },
33+
alternative: { input: "focus:ring-alternative-500 dark:focus:ring-alternative-400", dayButton: "bg-alternative-300 dark:bg-alternative-900" },
34+
secondary: { input: "focus:ring-secondary-500 dark:focus:ring-secondary-400", dayButton: "bg-secondary-300 dark:bg-secondary-900" },
35+
gray: { input: "focus:ring-gray-500 dark:focus:ring-gray-400", dayButton: "bg-gray-300 dark:bg-gray-900" },
36+
orange: { input: "focus:ring-orange-500 dark:focus:ring-orange-400", dayButton: "bg-orange-300 dark:bg-orange-900" },
37+
amber: { input: "focus:ring-amber-500 dark:focus:ring-amber-400", dayButton: "bg-amber-300 dark:bg-amber-900" },
38+
lime: { input: "focus:ring-lime-500 dark:focus:ring-lime-400", dayButton: "bg-lime-300 dark:bg-lime-900" },
39+
emerald: { input: "focus:ring-emerald-500 dark:focus:ring-emerald-400", dayButton: "bg-emerald-300 dark:bg-emerald-900" },
40+
teal: { input: "focus:ring-teal-500 dark:focus:ring-teal-400", dayButton: "bg-teal-300 dark:bg-teal-900" },
41+
cyan: { input: "focus:ring-cyan-500 dark:focus:ring-cyan-400", dayButton: "bg-cyan-300 dark:bg-cyan-900" },
42+
sky: { input: "focus:ring-sky-500 dark:focus:ring-sky-400", dayButton: "bg-sky-300 dark:bg-sky-900" },
43+
indigo: { input: "focus:ring-indigo-500 dark:focus:ring-indigo-400", dayButton: "bg-indigo-300 dark:bg-indigo-900" },
44+
violet: { input: "focus:ring-violet-500 dark:focus:ring-violet-400", dayButton: "bg-violet-300 dark:bg-violet-900" },
45+
fuchsia: { input: "focus:ring-fuchsia-500 dark:focus:ring-fuchsia-400", dayButton: "bg-fuchsia-300 dark:bg-fuchsia-900" },
46+
pink: { input: "focus:ring-pink-500 dark:focus:ring-pink-400", dayButton: "bg-pink-300 dark:bg-pink-900" },
47+
rose: { input: "focus:ring-rose-500 dark:focus:ring-rose-400", dayButton: "bg-rose-300 dark:bg-rose-900" }
4848
},
4949
inline: {
5050
false: { base: "absolute z-10 mt-1" }

src/lib/spinner/theme.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { tv, type VariantProps } from "tailwind-variants";
22

3-
export type SpinnerVaraiants = VariantProps<typeof spinner>;
3+
export type SpinnerVariants = VariantProps<typeof spinner>;
44

55
export const spinner = tv({
66
base: "inline-block",

src/lib/types.ts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ import type {
6161
WidgetPlaceholderVariants
6262
} from "$lib/skeleton/theme";
6363
import type { SpeedDialVariants, SpeedDialButtonVariants } from "$lib/speed-dial/theme";
64-
import type { SpinnerVaraiants } from "$lib/spinner/theme";
64+
import type { SpinnerVariants } from "$lib/spinner/theme";
6565
import type { StepIndicatorVariants } from "$lib/step-indicator/theme";
6666
import type { StepperVariants, ProgressStepperVariants, DetailedStepperVariants, VerticalStepperVariants, BreadcrumbStepperVariants, TimelineStepperVariants } from "$lib/stepper/theme";
6767
import type { PaginationItemVariants, PaginationVariants } from "$lib/pagination/theme";
@@ -348,6 +348,7 @@ export type ButtonProps = ButtonVariants &
348348
outline?: boolean;
349349
shadow?: boolean;
350350
loading?: boolean;
351+
spinnerProps?: SpinnerProps;
351352
};
352353

353354
export interface GradientButtonProps extends GradientButtonVariantes, HTMLButtonOrAnchorAttributes {
@@ -623,7 +624,7 @@ export interface DrawerProps extends DrawerVariants, Omit<DialogProps, "hidden"
623624
offset?: string;
624625
}
625626

626-
export interface DrawerHandleProps extends DrawerHandleVariants, HTMLButtonAttributes {}
627+
export interface DrawerHandleProps extends DrawerHandleVariants, HTMLButtonAttributes { }
627628

628629
export interface DrawerheadProps extends DrawerheadVariants, HTMLButtonAttributes {
629630
closeIcon?: Snippet;
@@ -782,7 +783,7 @@ export interface FloatingLabelInputProps extends FloatingLabelInputVaratiants, O
782783
}
783784

784785
// helper
785-
export interface HelperProps extends HelperVariants, Omit<HTMLAttributes<HTMLParagraphElement>, "color"> {}
786+
export interface HelperProps extends HelperVariants, Omit<HTMLAttributes<HTMLParagraphElement>, "color"> { }
786787

787788
// input
788789
export type InputValue = string | number | string[] | undefined;
@@ -978,7 +979,7 @@ export interface TimepickerProps {
978979
timeIntervals?: string[];
979980
columns?: ColumnCount;
980981
// Callback props instead of events
981-
onselect?: (data: { time: string; endTime: string; [key: string]: string }) => void;
982+
onselect?: (data: { time: string; endTime: string;[key: string]: string }) => void;
982983
}
983984

984985
// textarea
@@ -1167,7 +1168,7 @@ export interface ToolbarProps extends ToolbarVariants, Omit<HTMLAttributes<HTMLD
11671168
end?: Snippet;
11681169
}
11691170

1170-
export interface ToolbarGroupProps extends ToolbarGroupVariants, HTMLAttributes<HTMLDivElement> {}
1171+
export interface ToolbarGroupProps extends ToolbarGroupVariants, HTMLAttributes<HTMLDivElement> { }
11711172

11721173
export type ToolbarButtonProps = ToolbarButtonVariants &
11731174
AnchorButtonAttributes & {
@@ -1484,7 +1485,7 @@ export interface SkeletonProps extends SkeletonVariants, HTMLAttributes<HTMLDivE
14841485
size?: SkeletonVariants["size"];
14851486
}
14861487

1487-
export interface TestimonialPlaceholderProps extends TestimonialPlaceholderVariants, HTMLAttributes<HTMLDivElement> {}
1488+
export interface TestimonialPlaceholderProps extends TestimonialPlaceholderVariants, HTMLAttributes<HTMLDivElement> { }
14881489

14891490
export interface TextPlaceholderProps extends TextPlaceholderVariants, HTMLAttributes<HTMLDivElement> {
14901491
size?: TextPlaceholderVariants["size"];
@@ -1494,7 +1495,7 @@ export interface VideoPlaceholderProps extends VideoPlaceholderVariants, HTMLAtt
14941495
size?: VideoPlaceholderVariants["size"];
14951496
}
14961497

1497-
export interface WidgetPlaceholderProps extends WidgetPlaceholderVariants, HTMLAttributes<HTMLDivElement> {}
1498+
export interface WidgetPlaceholderProps extends WidgetPlaceholderVariants, HTMLAttributes<HTMLDivElement> { }
14981499

14991500
// speeddial
15001501
export interface SpeedCtxType {
@@ -1553,8 +1554,8 @@ export type SpeedDialButtonProps = ButtonProps &
15531554
// spinner
15541555
export interface SpinnerProps extends SVGAttributes<SVGSVGElement> {
15551556
type?: "default" | "dots" | "bars" | "pulse" | "orbit";
1556-
color?: SpinnerVaraiants["color"];
1557-
size?: SpinnerVaraiants["size"];
1557+
color?: SpinnerVariants["color"];
1558+
size?: SpinnerVariants["size"];
15581559
currentFill?: string;
15591560
currentColor?: string;
15601561
}
@@ -1895,7 +1896,7 @@ export interface ToastContainerProps extends HTMLAttributes<HTMLDivElement> {
18951896
}
18961897

18971898
// tooltip
1898-
export interface TooltipProps extends TooltipVariants, PopperProps {}
1899+
export interface TooltipProps extends TooltipVariants, PopperProps { }
18991900

19001901
// typography
19011902
// anchor

src/routes/admin-dashboard/(sidebar)/quickstart/+page.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<script lang="ts">
22
import { Breadcrumb, BreadcrumbItem, Heading } from "flowbite-svelte";
3-
import { HighlightCompo } from "../../utils";
3+
import { HighlightAuto } from "svelte-rune-highlight";
44
55
const modules = import.meta.glob("./md/*.md", {
66
query: "?raw",
@@ -18,6 +18,6 @@
1818
<Heading tag="h1" class="mb-8 text-xl font-semibold text-gray-900 sm:text-2xl dark:text-white">Flowbite Svelte Admin Dashboard</Heading>
1919

2020
<Heading tag="h2" class="my-8 text-xl font-semibold text-gray-900 sm:text-2xl dark:text-white">Installation</Heading>
21-
<HighlightCompo class="mb-8" codeLang="js" code={modules["./md/installation.md"] as string} />
21+
<HighlightAuto class="mb-8" code={modules["./md/installation.md"] as string} />
2222
</div>
2323
</main>

src/routes/builder/skeleton/+page.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
type ImagePlaceholderProps,
2121
type VideoPlaceholderProps
2222
} from "$lib";
23-
import HighlightCompo from "../utils/HighlightCompo.svelte";
23+
import { HighlightCompo } from "svelte-rune-highlight";
2424
import DynamicCodeBlockHighlight from "../utils/DynamicCodeBlockHighlight.svelte";
2525
import CodeWrapper from "../utils/CodeWrapper.svelte";
2626
import H1 from "../utils/H1.svelte";

src/routes/docs-examples/components/buttons/Loader.svelte

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22
import { Button, Spinner } from "flowbite-svelte";
33
</script>
44

5+
<Button loading>
6+
Loading ...
7+
</Button>
8+
<Button loading spinnerProps={{size:"4", color:"green"}}>
9+
Loading ...
10+
</Button>
511
<Button>
612
<Spinner class="me-3" size="4" color="gray" />Loading ...
713
</Button>

0 commit comments

Comments
 (0)