flowbite-svelte 1.31.0 → 1.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -13,6 +13,7 @@
13
13
  header,
14
14
  arrowup,
15
15
  arrowdown,
16
+ headingTag,
16
17
  open = $bindable(false),
17
18
  activeClass,
18
19
  inactiveClass,
@@ -70,7 +71,7 @@
70
71
  let buttonClass = $derived(clsx(open && !ctx?.flush && (styling.active || ctx?.activeClass || active()), !open && !ctx?.flush && (styling.inactive || ctx?.inactiveClass || inactive())));
71
72
  </script>
72
73
 
73
- <h2 class={base({ class: clsx(theme?.base, className) })}>
74
+ <svelte:element this={headingTag ?? "h2"} class={base({ class: clsx(theme?.base, className) })}>
74
75
  <button type="button" onclick={handleToggle} class={button({ class: clsx(buttonClass, theme?.button, styling.button) })} aria-expanded={open}>
75
76
  {#if header}
76
77
  {@render header()}
@@ -91,7 +92,7 @@
91
92
  {/if}
92
93
  {/if}
93
94
  </button>
94
- </h2>
95
+ </svelte:element>
95
96
 
96
97
  {#if useTransition}
97
98
  {#if open && transitionType !== "none"}
@@ -12,6 +12,7 @@
12
12
  icon,
13
13
  alertStatus = $bindable(true),
14
14
  closeIcon: CloseIcon,
15
+ closeAriaLabel = "Remove alert",
15
16
  color = "primary",
16
17
  rounded = true,
17
18
  border,
@@ -63,11 +64,11 @@
63
64
 
64
65
  {#if dismissable}
65
66
  {#if CloseIcon}
66
- <CloseButton class="-my-1.5 ms-auto -me-1.5" {color} ariaLabel="Remove alert">
67
+ <CloseButton class="-my-1.5 ms-auto -me-1.5" {color} ariaLabel={closeAriaLabel}>
67
68
  <CloseIcon />
68
69
  </CloseButton>
69
70
  {:else}
70
- <CloseButton class="-my-1.5 ms-auto -me-1.5" {color} ariaLabel="Remove alert" />
71
+ <CloseButton class="-my-1.5 ms-auto -me-1.5" {color} ariaLabel={closeAriaLabel} />
71
72
  {/if}
72
73
  {/if}
73
74
  </div>
@@ -83,6 +84,7 @@
83
84
  @prop icon
84
85
  @prop alertStatus = $bindable(true)
85
86
  @prop closeIcon: CloseIcon
87
+ @prop closeAriaLabel = "Remove alert"
86
88
  @prop color = "primary"
87
89
  @prop rounded = true
88
90
  @prop border
@@ -8,6 +8,7 @@ import { type AlertProps } from "..";
8
8
  * @prop icon
9
9
  * @prop alertStatus = $bindable(true)
10
10
  * @prop closeIcon: CloseIcon
11
+ * @prop closeAriaLabel = "Remove alert"
11
12
  * @prop color = "primary"
12
13
  * @prop rounded = true
13
14
  * @prop border
@@ -15,6 +15,7 @@
15
15
  color = "primary",
16
16
  large = false,
17
17
  dismissable = false,
18
+ closeAriaLabel = "Remove badge",
18
19
  class: className,
19
20
  classes,
20
21
  border,
@@ -63,11 +64,11 @@
63
64
 
64
65
  {#if dismissable}
65
66
  {#if icon}
66
- <CloseButton class="ms-1.5 -me-1.5" {color} size={large ? "sm" : "xs"} ariaLabel="Remove badge">
67
+ <CloseButton class="ms-1.5 -me-1.5" {color} size={large ? "sm" : "xs"} ariaLabel={closeAriaLabel}>
67
68
  {@render icon()}
68
69
  </CloseButton>
69
70
  {:else}
70
- <CloseButton class="ms-1.5 -me-1.5" {color} size={large ? "sm" : "xs"} ariaLabel="Remove badge" />
71
+ <CloseButton class="ms-1.5 -me-1.5" {color} size={large ? "sm" : "xs"} ariaLabel={closeAriaLabel} />
71
72
  {/if}
72
73
  {/if}
73
74
  </div>
@@ -85,6 +86,7 @@
85
86
  @prop color = "primary"
86
87
  @prop large = false
87
88
  @prop dismissable = false
89
+ @prop closeAriaLabel = "Remove badge"
88
90
  @prop class: className
89
91
  @prop classes
90
92
  @prop border
@@ -10,6 +10,7 @@ import { type BadgeProps } from "..";
10
10
  * @prop color = "primary"
11
11
  * @prop large = false
12
12
  * @prop dismissable = false
13
+ * @prop closeAriaLabel = "Remove badge"
13
14
  * @prop class: className
14
15
  * @prop classes
15
16
  * @prop border
@@ -13,6 +13,7 @@
13
13
  header,
14
14
  open = $bindable(true),
15
15
  dismissable = true,
16
+ closeAriaLabel = "Remove banner",
16
17
  color = "gray",
17
18
  type,
18
19
  class: className,
@@ -56,7 +57,7 @@
56
57
 
57
58
  {#if dismissable}
58
59
  <div class="flex items-center justify-end">
59
- <CloseButton class={dismissableClass({ class: clsx(theme?.dismissable, styling.dismissable) })} {color} ariaLabel="Remove banner" />
60
+ <CloseButton class={dismissableClass({ class: clsx(theme?.dismissable, styling.dismissable) })} {color} ariaLabel={closeAriaLabel} />
60
61
  </div>
61
62
  {/if}
62
63
  </div>
@@ -72,6 +73,7 @@
72
73
  @prop header
73
74
  @prop open = $bindable(true)
74
75
  @prop dismissable = true
76
+ @prop closeAriaLabel = "Remove banner"
75
77
  @prop color = "gray"
76
78
  @prop type
77
79
  @prop class: className
@@ -8,6 +8,7 @@ import { type BannerProps } from "..";
8
8
  * @prop header
9
9
  * @prop open = $bindable(true)
10
10
  * @prop dismissable = true
11
+ * @prop closeAriaLabel = "Remove banner"
11
12
  * @prop color = "gray"
12
13
  * @prop type
13
14
  * @prop class: className
package/dist/context.d.ts CHANGED
@@ -30,7 +30,13 @@ declare const getButtonGroupContext: () => ButtonGroupContextType | undefined, s
30
30
  export { getButtonGroupContext, setButtonGroupContext };
31
31
  declare const getNavbarStateContext: () => NavbarState | undefined, setNavbarStateContext: (context: NavbarState) => NavbarState;
32
32
  export { getNavbarStateContext, setNavbarStateContext };
33
- declare const getNavbarBreakpointContext: () => NavbarBreakpoint | undefined, setNavbarBreakpointContext: (context: NavbarBreakpoint) => NavbarBreakpoint;
33
+ declare const getNavbarBreakpointContext: () => {
34
+ value: NavbarBreakpoint;
35
+ } | undefined, setNavbarBreakpointContext: (context: {
36
+ value: NavbarBreakpoint;
37
+ }) => {
38
+ value: NavbarBreakpoint;
39
+ };
34
40
  export { getNavbarBreakpointContext, setNavbarBreakpointContext };
35
41
  declare const getSidebarContext: () => SidebarContextType | undefined, setSidebarContext: (context: SidebarContextType) => SidebarContextType;
36
42
  export { getSidebarContext, setSidebarContext };
@@ -55,13 +55,6 @@
55
55
  isOpen = inline;
56
56
  });
57
57
  let showMonthSelector: boolean = $state(false);
58
- let inputElement: HTMLInputElement | null = $state(null);
59
-
60
- $effect(() => {
61
- if (inputElement) {
62
- elementRef = inputElement;
63
- }
64
- });
65
58
  let datepickerContainerElement: HTMLDivElement;
66
59
  let currentMonth: Date = $state(new Date());
67
60
  $effect(() => {
@@ -162,15 +155,15 @@
162
155
  }
163
156
 
164
157
  function handleInputChangeWithDateFns() {
165
- const inputValue = inputElement?.value?.trim();
158
+ const inputValue = elementRef?.value?.trim();
166
159
  if (!inputValue) {
167
160
  rangeFrom = undefined;
168
161
  rangeTo = undefined;
169
- inputElement?.setCustomValidity("");
162
+ elementRef?.setCustomValidity("");
170
163
  return;
171
164
  }
172
165
 
173
- inputElement?.setCustomValidity("");
166
+ elementRef?.setCustomValidity("");
174
167
 
175
168
  if (range) {
176
169
  const parts = inputValue.split(" - ");
@@ -183,7 +176,7 @@
183
176
  onselect?.({ from: rangeFrom, to: rangeTo });
184
177
  return;
185
178
  } else {
186
- inputElement?.setCustomValidity(`Please enter date range in format: ${getDateFormatPattern()} - ${getDateFormatPattern()}`);
179
+ elementRef?.setCustomValidity(`Please enter date range in format: ${getDateFormatPattern()} - ${getDateFormatPattern()}`);
187
180
  return;
188
181
  }
189
182
  }
@@ -193,12 +186,12 @@
193
186
 
194
187
  if (!parsedDate || !isValid(parsedDate)) {
195
188
  const formatPattern = getDateFormatPattern();
196
- inputElement?.setCustomValidity(`Please enter date in format: ${formatPattern}`);
189
+ elementRef?.setCustomValidity(`Please enter date in format: ${formatPattern}`);
197
190
  return;
198
191
  }
199
192
 
200
193
  if (!isDateAvailable(parsedDate)) {
201
- inputElement?.setCustomValidity("Selected date is not available");
194
+ elementRef?.setCustomValidity("Selected date is not available");
202
195
  return;
203
196
  }
204
197
 
@@ -353,7 +346,7 @@
353
346
  case "Escape":
354
347
  isOpen = false;
355
348
  showMonthSelector = false;
356
- inputElement?.focus();
349
+ elementRef?.focus();
357
350
  break;
358
351
  default:
359
352
  return;
@@ -421,7 +414,7 @@
421
414
  <div class="relative">
422
415
  <input
423
416
  {...inputProps}
424
- bind:this={inputElement}
417
+ bind:this={elementRef}
425
418
  type="text"
426
419
  class={input({ color, class: clsx(theme?.input, inputClass) })}
427
420
  {placeholder}
@@ -24,6 +24,7 @@
24
24
  class: className,
25
25
  classes,
26
26
  // Extract select-specific props
27
+ id,
27
28
  name,
28
29
  form,
29
30
  required,
@@ -124,6 +125,7 @@
124
125
  // This is useful if the click triggers a re-render and focus is lost momentarily.
125
126
  if (multiSelectContainer && multiSelectContainer.contains(event.target as Node)) {
126
127
  show = !show;
128
+ event.preventDefault();
127
129
  } else {
128
130
  show = false; // Close if clicked outside
129
131
  }
@@ -204,12 +206,6 @@
204
206
  const { base, dropdown, item: dropdownItem, close, select, placeholder: placeholderSpan, svg } = $derived(multiSelect({ disabled, grouped: !!group }));
205
207
  </script>
206
208
 
207
- <select {name} {form} {required} {autocomplete} {value} hidden multiple {onchange}>
208
- {#each items as item (item.value)}
209
- <option value={item.value} disabled={item.disabled}>{item.name}</option>
210
- {/each}
211
- </select>
212
-
213
209
  <div
214
210
  bind:this={multiSelectContainer}
215
211
  {...restProps}
@@ -220,6 +216,12 @@
220
216
  role="listbox"
221
217
  class={base({ size, class: clsx(theme?.base, className) })}
222
218
  >
219
+ <select {id} {name} {form} {required} {autocomplete} {value} hidden multiple {onchange}>
220
+ {#each items as item (item.value)}
221
+ <option value={item.value} disabled={item.disabled}>{item.name}</option>
222
+ {/each}
223
+ </select>
224
+
223
225
  {#if !selectItems.length}
224
226
  <span class={placeholderSpan({ class: clsx(classes?.placeholder) })}>{placeholder}</span>
225
227
  {/if}
@@ -182,7 +182,7 @@
182
182
  <CloseButton {disabled} size={closeBtnSize} class={close({ class: clsx(theme?.close, styling.close) })} onclick={() => deleteField(index)} />
183
183
  </div>
184
184
  {/each}
185
- <div class="relative w-full" bind:this={inputContainer}>
185
+ <div class="relative min-w-[8rem] flex-1 self-center" bind:this={inputContainer}>
186
186
  <input
187
187
  {...inputProps}
188
188
  {disabled}
@@ -1,11 +1,11 @@
1
1
  import { tv } from "tailwind-variants";
2
2
  export const tags = tv({
3
3
  slots: {
4
- base: "border border-gray-300 dark:border-gray-600 rounded-lg flex focus-within:ring-primary-500 focus-within:ring-1 focus-within:border-primary-500 scrollbar-hidden bg-gray-50 dark:bg-gray-700",
5
- tag: "flex items-center rounded-lg bg-gray-100 text-gray-900 border border-gray-300 my-1 ml-1 px-2 text-sm max-w-full min-w-fit",
4
+ base: "border border-gray-300 dark:border-gray-600 rounded-lg flex flex-wrap focus-within:ring-primary-500 focus-within:ring-1 focus-within:border-primary-500 scrollbar-hidden bg-gray-50 dark:bg-gray-700 p-2",
5
+ tag: "flex items-center rounded-lg bg-gray-100 text-gray-900 border border-gray-300 my-1 ml-1 p-2 text-sm max-w-full min-w-fit",
6
6
  span: "items-center",
7
7
  close: "my-auto ml-1",
8
- input: "block text-sm m-2.5 p-0 bg-transparent border-none outline-none text-gray-900 h-min w-full min-w-fit focus:ring-0 placeholder-gray-400 dark:text-white disabled:cursor-not-allowed disabled:opacity-50",
8
+ input: "block text-sm my-1 mx-2.5 p-0 bg-transparent border-none outline-none text-gray-900 w-full min-w-fit focus:ring-0 placeholder-gray-400 dark:text-white disabled:cursor-not-allowed disabled:opacity-50",
9
9
  info: "mt-1 text-sm text-blue-500 dark:text-blue-400",
10
10
  warning: "mt-1 text-sm text-yellow-400 dark:text-yellow-300",
11
11
  error: "mt-1 text-sm text-red-500 dark:text-red-400"
@@ -21,8 +21,8 @@
21
21
 
22
22
  const theme = $derived(getTheme("navbarHamburger"));
23
23
  const navState = getNavbarStateContext();
24
- const navBreakpoint = getNavbarBreakpointContext();
25
- const { base, menu } = navbarHamburger({ breakpoint: navBreakpoint ?? "md" });
24
+ const navBreakpointCtx = getNavbarBreakpointContext();
25
+ const { base, menu } = $derived(navbarHamburger({ breakpoint: navBreakpointCtx?.value ?? "md" }));
26
26
 
27
27
  const toggle: MouseEventHandler<HTMLButtonElement> = () => {
28
28
  if (!navState) return;
@@ -6,7 +6,7 @@
6
6
  import { getNavbarStateContext, getNavbarBreakpointContext } from "../context";
7
7
 
8
8
  let navState = getNavbarStateContext();
9
- let navBreakpoint = getNavbarBreakpointContext();
9
+ let navBreakpointCtx = getNavbarBreakpointContext();
10
10
 
11
11
  let { children, onclick, activeClass, nonActiveClass, class: className, ...restProps }: NavLiProps = $props();
12
12
 
@@ -15,7 +15,7 @@
15
15
  let active = $derived(navState?.activeUrl ? restProps.href === navState.activeUrl : false);
16
16
  let liClass = $derived(
17
17
  navbarLi({
18
- breakpoint: navBreakpoint ?? "md",
18
+ breakpoint: navBreakpointCtx?.value ?? "md",
19
19
  hidden: navState?.hidden ?? true,
20
20
  class: clsx(active ? (activeClass ?? navState?.activeClass) : (nonActiveClass ?? navState?.nonActiveClass), theme, className)
21
21
  })
@@ -10,7 +10,7 @@
10
10
  import { untrack } from "svelte";
11
11
 
12
12
  let navState = getNavbarStateContext();
13
- let navBreakpoint = getNavbarBreakpointContext();
13
+ let navBreakpointCtx = getNavbarBreakpointContext();
14
14
 
15
15
  let {
16
16
  children,
@@ -60,7 +60,7 @@
60
60
 
61
61
  let hidden: boolean = $derived(navState?.hidden ?? true);
62
62
 
63
- let { base, ul, active, nonActive } = $derived(navbarUl({ hidden, breakpoint: navBreakpoint ?? "md" }));
63
+ let { base, ul, active, nonActive } = $derived(navbarUl({ hidden, breakpoint: navBreakpointCtx?.value ?? "md" }));
64
64
 
65
65
  $effect(() => {
66
66
  if (!navState) return;
@@ -5,6 +5,8 @@
5
5
  import type { NavbarState, NavbarProps } from "../types";
6
6
  import { getTheme } from "../theme/themeUtils";
7
7
  import { setNavbarStateContext, setNavbarBreakpointContext } from "../context";
8
+ import type { NavbarBreakpoint } from "../types";
9
+ import { untrack } from "svelte";
8
10
 
9
11
  let { children, fluid, navContainerClass, class: className, closeOnClickOutside = true, breakpoint = "md", ...restProps }: NavbarProps = $props();
10
12
 
@@ -13,8 +15,11 @@
13
15
  let navState = $state<NavbarState>({ hidden: true });
14
16
  setNavbarStateContext(navState);
15
17
 
18
+ let breakpointState = $state<{ value: NavbarBreakpoint }>({ value: untrack(() => breakpoint) });
19
+ setNavbarBreakpointContext(breakpointState);
20
+
16
21
  $effect(() => {
17
- setNavbarBreakpointContext(breakpoint);
22
+ breakpointState.value = breakpoint;
18
23
  });
19
24
 
20
25
  // Add reference to the navbar element
@@ -35,9 +35,19 @@
35
35
 
36
36
  const theme = $derived(getTheme("speedDial"));
37
37
 
38
- $effect(() => {
39
- setContext<SpeedCtxType>("speed-dial", { pill, tooltip, textOutside });
40
- });
38
+ const speedDialCtx: SpeedCtxType = {
39
+ get pill() {
40
+ return pill;
41
+ },
42
+ get tooltip() {
43
+ return tooltip;
44
+ },
45
+ get textOutside() {
46
+ return textOutside;
47
+ }
48
+ };
49
+
50
+ setContext<SpeedCtxType>("speed-dial", speedDialCtx);
41
51
 
42
52
  let vertical: boolean = $derived(getSideAxis(placement) === "y");
43
53
 
@@ -25,6 +25,7 @@
25
25
  class: className,
26
26
  classes,
27
27
  placeholder = "Search",
28
+ oninput,
28
29
  ...restProps
29
30
  }: TableSearchProps = $props();
30
31
 
@@ -57,15 +58,19 @@
57
58
  // Handle custom color
58
59
  const finalTableClass = $derived(color === "custom" && customColor ? clsx(tableCls, customColor) : tableCls);
59
60
 
60
- const tableSearchCtx = $derived<TableContextType>({
61
- striped,
62
- hoverable,
63
- color: themeColor
64
- });
61
+ const tableSearchCtx: TableContextType = {
62
+ get striped() {
63
+ return striped;
64
+ },
65
+ get hoverable() {
66
+ return hoverable;
67
+ },
68
+ get color() {
69
+ return themeColor;
70
+ }
71
+ };
65
72
 
66
- $effect(() => {
67
- setTableContext(tableSearchCtx);
68
- });
73
+ setTableContext(tableSearchCtx);
69
74
  </script>
70
75
 
71
76
  <div class={root({ class: clsx(theme?.root, styling.root) })}>
@@ -77,7 +82,7 @@
77
82
  <path fill-rule="evenodd" d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z" clip-rule="evenodd" />
78
83
  </svg>
79
84
  </div>
80
- <input bind:value={inputValue} type="text" id="table-search" class={input({ class: clsx(theme?.input, styling.input) })} {placeholder} />
85
+ <input bind:value={inputValue} type="text" id="table-search" class={input({ class: clsx(theme?.input, styling.input) })} {placeholder} {oninput} />
81
86
  </div>
82
87
  {#if header}
83
88
  {@render header()}
@@ -117,5 +122,6 @@
117
122
  @prop class: className
118
123
  @prop classes
119
124
  @prop placeholder = "Search"
125
+ @prop oninput
120
126
  @prop ...restProps
121
127
  -->
@@ -22,6 +22,7 @@ import type { TableSearchProps } from "../types";
22
22
  * @prop class: className
23
23
  * @prop classes
24
24
  * @prop placeholder = "Search"
25
+ * @prop oninput
25
26
  * @prop ...restProps
26
27
  */
27
28
  declare const TableSearch: import("svelte").Component<TableSearchProps, {}, "inputValue">;
@@ -13,6 +13,7 @@
13
13
  icon,
14
14
  toastStatus = $bindable(true),
15
15
  dismissable = true,
16
+ closeAriaLabel = "Remove toast",
16
17
  color = "primary",
17
18
  position,
18
19
  iconClass,
@@ -69,7 +70,7 @@
69
70
  </div>
70
71
 
71
72
  {#if dismissable}
72
- <CloseButton class={close({ class: clsx(theme?.close, classes?.close) })} ariaLabel="Remove toast" {color} />
73
+ <CloseButton class={close({ class: clsx(theme?.close, classes?.close) })} ariaLabel={closeAriaLabel} {color} />
73
74
  {/if}
74
75
  </div>
75
76
  {/if}
@@ -84,6 +85,7 @@
84
85
  @prop icon
85
86
  @prop toastStatus = $bindable(true)
86
87
  @prop dismissable = true
88
+ @prop closeAriaLabel = "Remove toast"
87
89
  @prop color = "primary"
88
90
  @prop position
89
91
  @prop iconClass
@@ -8,6 +8,7 @@ import type { ToastProps } from "../types";
8
8
  * @prop icon
9
9
  * @prop toastStatus = $bindable(true)
10
10
  * @prop dismissable = true
11
+ * @prop closeAriaLabel = "Remove toast"
11
12
  * @prop color = "primary"
12
13
  * @prop position
13
14
  * @prop iconClass
package/dist/types.d.ts CHANGED
@@ -155,6 +155,7 @@ export interface AccordionItemProps extends AccordionItemVariants, HTMLAttribute
155
155
  header?: Snippet;
156
156
  arrowup?: Snippet;
157
157
  arrowdown?: Snippet;
158
+ headingTag?: "h2" | "h3" | "h4" | "h5" | "h6" | "div";
158
159
  activeClass?: string;
159
160
  inactiveClass?: string;
160
161
  transitionType?: TransitionFunc | "none";
@@ -167,6 +168,7 @@ export interface AlertProps extends Omit<AlertVariants, "icon">, Omit<HTMLAttrib
167
168
  icon?: Snippet;
168
169
  alertStatus?: boolean;
169
170
  closeIcon?: Component;
171
+ closeAriaLabel?: string;
170
172
  transition?: TransitionFunc;
171
173
  params?: ParamsType;
172
174
  onclick?: () => void;
@@ -187,6 +189,7 @@ export interface BadgeProps extends BadgeVariants, Omit<HTMLAttributes<HTMLDivEl
187
189
  badgeStatus?: boolean;
188
190
  large?: boolean;
189
191
  dismissable?: boolean;
192
+ closeAriaLabel?: string;
190
193
  href?: HTMLAnchorAttributes["href"];
191
194
  target?: HTMLAnchorAttributes["target"];
192
195
  transition?: TransitionFunc;
@@ -197,6 +200,7 @@ export interface BannerProps extends BannerVariants, Omit<HTMLAttributes<HTMLDiv
197
200
  header?: Snippet;
198
201
  open?: boolean;
199
202
  dismissable?: boolean;
203
+ closeAriaLabel?: string;
200
204
  innerClass?: ClassValue;
201
205
  transition?: TransitionFunc;
202
206
  params?: ParamsType;
@@ -1589,6 +1593,7 @@ export interface TableSearchProps extends TableSearchVariants, HTMLTableAttribut
1589
1593
  svgClass?: ClassValue;
1590
1594
  tableClass?: ClassValue;
1591
1595
  placeholder?: string;
1596
+ oninput?: (event: Event) => void;
1592
1597
  }
1593
1598
  export interface TabsProps extends TabsVaraints, HTMLAttributes<HTMLUListElement> {
1594
1599
  children: Snippet;
@@ -1700,6 +1705,7 @@ export interface ToastProps extends ToastVaraints, HTMLAttributes<HTMLDivElement
1700
1705
  icon?: Snippet;
1701
1706
  toastStatus?: boolean;
1702
1707
  dismissable?: boolean;
1708
+ closeAriaLabel?: string;
1703
1709
  color?: ToastVaraints["color"];
1704
1710
  position?: ToastVaraints["position"];
1705
1711
  iconClass?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flowbite-svelte",
3
- "version": "1.31.0",
3
+ "version": "1.33.0",
4
4
  "description": "Flowbite components for Svelte",
5
5
  "main": "dist/index.js",
6
6
  "author": {
@@ -12,70 +12,70 @@
12
12
  "homepage": "https://flowbite-svelte.com/",
13
13
  "license": "MIT",
14
14
  "devDependencies": {
15
- "@changesets/cli": "^2.29.8",
16
- "@docsearch/css": "^4.3.2",
17
- "@docsearch/js": "^4.3.2",
18
- "@eslint/compat": "^2.0.0",
19
- "@eslint/js": "^9.39.2",
15
+ "@changesets/cli": "^2.30.0",
16
+ "@docsearch/css": "^4.6.2",
17
+ "@docsearch/js": "^4.6.2",
18
+ "@eslint/compat": "^2.0.3",
19
+ "@eslint/js": "^10.0.1",
20
20
  "@flowbite-svelte-plugins/chart": "^0.2.4",
21
21
  "@flowbite-svelte-plugins/datatable": "^0.4.1",
22
22
  "@flowbite-svelte-plugins/texteditor": "^0.25.6",
23
- "@playwright/test": "^1.57.0",
23
+ "@playwright/test": "^1.58.2",
24
24
  "@resvg/resvg-js": "^2.6.2",
25
- "@sveltejs/adapter-vercel": "^6.2.0",
26
- "@sveltejs/kit": "^2.49.2",
25
+ "@sveltejs/adapter-vercel": "^6.3.3",
26
+ "@sveltejs/kit": "^2.55.0",
27
27
  "@sveltejs/package": "^2.5.7",
28
- "@sveltejs/vite-plugin-svelte": "^6.2.1",
28
+ "@sveltejs/vite-plugin-svelte": "^6.2.4",
29
29
  "@svitejs/changesets-changelog-github-compact": "^1.2.0",
30
- "@tailwindcss/vite": "^4.1.18",
30
+ "@tailwindcss/vite": "^4.2.2",
31
31
  "@testing-library/jest-dom": "^6.9.1",
32
- "@testing-library/svelte": "^5.2.9",
32
+ "@testing-library/svelte": "^5.3.1",
33
33
  "@testing-library/user-event": "^14.6.1",
34
34
  "@tiptap/core": "3.7.2",
35
- "@vitest/browser": "^4.0.16",
36
- "@vitest/browser-playwright": "^4.0.16",
37
- "dayjs": "^1.11.19",
35
+ "@vitest/browser": "^4.1.1",
36
+ "@vitest/browser-playwright": "^4.1.1",
37
+ "dayjs": "^1.11.20",
38
38
  "deepmerge": "^4.3.1",
39
- "eslint": "^9.39.2",
39
+ "eslint": "^10.1.0",
40
40
  "eslint-config-prettier": "^10.1.8",
41
- "eslint-plugin-svelte": "^3.13.1",
41
+ "eslint-plugin-svelte": "^3.16.0",
42
42
  "flowbite-svelte-admin-dashboard": "^2.1.1",
43
43
  "flowbite-svelte-blocks": "^2.1.0",
44
- "flowbite-svelte-icons": "^3.0.1",
44
+ "flowbite-svelte-icons": "^3.1.0",
45
45
  "flowbite-svelte-illustrations": "^1.0.6",
46
46
  "flowbite-typography": "^1.0.5",
47
47
  "globals": "^16.5.0",
48
48
  "highlight.js": "^11.11.1",
49
- "jsdom": "^27.3.0",
50
- "katex": "^0.16.27",
49
+ "jsdom": "^27.4.0",
50
+ "katex": "^0.16.43",
51
51
  "lowlight": "^3.3.0",
52
- "mdsvex": "^0.12.6",
53
- "mdsvexamples": "^0.5.0",
54
- "playwright": "^1.57.0",
55
- "prettier": "^3.7.4",
56
- "prettier-plugin-svelte": "^3.4.1",
52
+ "mdsvex": "^0.12.7",
53
+ "mdsvexamples": "^0.5.1",
54
+ "playwright": "^1.58.2",
55
+ "prettier": "^3.8.1",
56
+ "prettier-plugin-svelte": "^3.5.1",
57
57
  "prettier-plugin-tailwindcss": "^0.7.2",
58
58
  "prism-themes": "^1.9.0",
59
- "publint": "^0.3.16",
59
+ "publint": "^0.3.18",
60
60
  "runatics": "^0.2.0",
61
61
  "runes-meta-tags": "^0.5.0",
62
- "satori": "^0.18.3",
62
+ "satori": "^0.26.0",
63
63
  "satori-html": "^0.3.2",
64
- "super-sitemap": "^1.0.5",
65
- "svelte": "^5.46.0",
66
- "svelte-check": "^4.3.4",
64
+ "super-sitemap": "^1.0.7",
65
+ "svelte": "^5.55.0",
66
+ "svelte-check": "^4.4.5",
67
67
  "svelte-doc-llm": "^0.8.0",
68
68
  "svelte-lib-helpers": "^0.4.31",
69
- "svelte-meta-tags": "^4.5.0",
69
+ "svelte-meta-tags": "^4.5.1",
70
70
  "svelte-rune-highlight": "^0.12.1",
71
- "tailwindcss": "^4.1.18",
71
+ "tailwindcss": "^4.2.2",
72
72
  "tsx": "^4.21.0",
73
73
  "typescript": "^5.9.3",
74
- "typescript-eslint": "^8.50.0",
75
- "vite": "^7.3.0",
74
+ "typescript-eslint": "^8.57.2",
75
+ "vite": "^7.3.1",
76
76
  "vite-plugin-devtools-json": "^1.0.0",
77
- "vitest": "^4.0.16",
78
- "vitest-browser-svelte": "^2.0.1"
77
+ "vitest": "^4.1.1",
78
+ "vitest-browser-svelte": "^2.1.0"
79
79
  },
80
80
  "peerDependencies": {
81
81
  "svelte": "^5.40.0",
@@ -125,14 +125,14 @@
125
125
  "url": "git+https://github.com/themesberg/flowbite-svelte.git"
126
126
  },
127
127
  "dependencies": {
128
- "@floating-ui/dom": "^1.7.4",
129
- "@floating-ui/utils": "^0.2.10",
130
- "apexcharts": "^5.3.6",
128
+ "@floating-ui/dom": "^1.7.6",
129
+ "@floating-ui/utils": "^0.2.11",
130
+ "apexcharts": "^5.10.4",
131
131
  "clsx": "^2.1.1",
132
132
  "date-fns": "^4.1.0",
133
133
  "esm-env": "^1.2.2",
134
134
  "flowbite": "^3.1.2",
135
- "tailwind-merge": "^3.4.0",
135
+ "tailwind-merge": "^3.5.0",
136
136
  "tailwind-variants": "^3.2.2"
137
137
  },
138
138
  "files": [
File without changes