flowbite-svelte 0.29.10 → 0.29.12

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,36 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [0.29.12](https://github.com/themesberg/flowbite-svelte/compare/v0.29.11...v0.29.12) (2023-01-23)
6
+
7
+
8
+ ### Features
9
+
10
+ * add step indicator component ([#545](https://github.com/themesberg/flowbite-svelte/issues/545)) ([549ad61](https://github.com/themesberg/flowbite-svelte/commit/549ad616adc829b5482da20abf9f4ef3e78aa44b))
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * add indcator to index ([#535](https://github.com/themesberg/flowbite-svelte/issues/535)) ([f6fcef6](https://github.com/themesberg/flowbite-svelte/commit/f6fcef63638a5edcf4c3f8d2b965789d5ad85be1))
16
+ * add two missing colors for <Table> ([#537](https://github.com/themesberg/flowbite-svelte/issues/537)) ([ac558fb](https://github.com/themesberg/flowbite-svelte/commit/ac558fb267d3aaa87773ca23b5104e4c231443ba))
17
+ * few minor tweaks ([#541](https://github.com/themesberg/flowbite-svelte/issues/541)) ([2289e4d](https://github.com/themesberg/flowbite-svelte/commit/2289e4d1f83f272db5c092cd09469147a4878ff8))
18
+ * ListgroupItem button type ([#549](https://github.com/themesberg/flowbite-svelte/issues/549)) ([6b74d73](https://github.com/themesberg/flowbite-svelte/commit/6b74d738efc887b46fe0fc0eea473e617aa386ca))
19
+ * move step indicator to extend ([000dec3](https://github.com/themesberg/flowbite-svelte/commit/000dec3688b5d9535a21a36207de42ca26336f1b))
20
+ * TableBodyRow color and border ([#539](https://github.com/themesberg/flowbite-svelte/issues/539)) ([d52920f](https://github.com/themesberg/flowbite-svelte/commit/d52920fe869183639788607475b148c80fe283fa))
21
+
22
+ ### [0.29.11](https://github.com/themesberg/flowbite-svelte/compare/v0.29.10...v0.29.11) (2023-01-16)
23
+
24
+
25
+ ### Features
26
+
27
+ * indicator comp ([#532](https://github.com/themesberg/flowbite-svelte/issues/532)) ([57ce4fc](https://github.com/themesberg/flowbite-svelte/commit/57ce4fcdce3965921c0f6edf71f6ae42c2d42b40))
28
+ * make <TableHead> slot more flexible ([#527](https://github.com/themesberg/flowbite-svelte/issues/527)) ([33803f2](https://github.com/themesberg/flowbite-svelte/commit/33803f23ce90f9425417f6417c70bc6928337bbe))
29
+
30
+
31
+ ### Bug Fixes
32
+
33
+ * update badge component's style and doc ([#531](https://github.com/themesberg/flowbite-svelte/issues/531)) ([ce9af8c](https://github.com/themesberg/flowbite-svelte/commit/ce9af8cff8f6979f625b00fd165aa2ffadc41604))
34
+
5
35
  ### [0.29.10](https://github.com/themesberg/flowbite-svelte/compare/v0.29.9...v0.29.10) (2023-01-13)
6
36
 
7
37
 
package/README.md CHANGED
@@ -412,6 +412,28 @@ For full documentation, visit [flowbite-svelte.com](https://flowbite-svelte.com/
412
412
  </a>
413
413
  </td>
414
414
  </tr>
415
+ <tr>
416
+ <td width="33.3333%">Speed Dial</td>
417
+ <td width="33.3333%">Stepper(TBA)</td>
418
+ <td width="33.3333%">Indicators</td>
419
+ </tr>
420
+ <tr>
421
+ <td width="33.3333%">
422
+ <a href="https://flowbite-svelte.com/components/speed-dial/">
423
+ <img alt="Tailwind CSS Speed Dial" src="https://flowbite.s3.amazonaws.com/github/dial.jpg">
424
+ </a>
425
+ </td>
426
+ <td width="33.3333%">
427
+ <a href="#">
428
+ <img alt="Tailwind CSS Stepper" src="https://flowbite.s3.amazonaws.com/github/stepper.jpg">
429
+ </a>
430
+ </td>
431
+ <td width="33.3333%">
432
+ <a href="https://flowbite.com/components/indicators/">
433
+ <img alt="Tailwind CSS Indicators" src="https://flowbite.s3.amazonaws.com/github/indicators.jpg">
434
+ </a>
435
+ </td>
436
+ </tr>
415
437
  </table>
416
438
 
417
439
  ## Community
@@ -1,14 +1,16 @@
1
1
  <script>import classNames from 'classnames';
2
2
  import AvatarPlaceholder from './Placeholder.svelte';
3
- import Dot from './Dot.svelte';
3
+ import Indicator from '../indicators/Indicator.svelte';
4
4
  export let src = '';
5
5
  export let href = undefined;
6
6
  export let rounded = false;
7
7
  export let border = false;
8
8
  export let stacked = false;
9
- export let dot = { top: false, color: 'bg-gray-300 dark:bg-gray-500' };
9
+ export let dot = undefined;
10
10
  export let alt = '';
11
11
  export let size = 'md';
12
+ $: dot = dot && { placement: 'top-right', color: 'gray', size: 'lg', ...dot };
13
+ $: dot && console.log(dot);
12
14
  const sizes = {
13
15
  xs: 'w-6 h-6',
14
16
  sm: 'w-8 h-8',
@@ -20,20 +22,21 @@ let avatarClass;
20
22
  $: avatarClass = classNames(rounded ? 'rounded' : 'rounded-full', border && 'p-1 ring-2 ring-gray-300 dark:ring-gray-500', sizes[size], stacked && 'border-2 -ml-4 border-white dark:border-gray-800', 'bg-gray-100 dark:bg-gray-600 text-gray-600 dark:text-gray-300', $$props.class);
21
23
  </script>
22
24
 
23
- <Dot show={$$props.dot} {rounded} {...dot} {size} class={sizes[size]}>
24
- {#if src}
25
- <img {alt} {src} {...$$restProps} class={avatarClass} />
26
- {:else if $$slots.default}
27
- <svelte:element
28
- this={href ? 'a' : 'div'}
29
- {href}
30
- {...$$restProps}
31
- class="flex justify-center items-center text-xs font-medium {avatarClass}">
32
- <slot />
33
- </svelte:element>
34
- {:else}
35
- <svelte:element this={href ? 'a' : 'div'} {href} {...$$restProps} class={avatarClass}>
36
- <AvatarPlaceholder {rounded} />
37
- </svelte:element>
38
- {/if}
39
- </Dot>
25
+ {#if !src || !!href || $$slots.default || dot}
26
+ <svelte:element
27
+ this={href ? 'a' : 'div'}
28
+ {href}
29
+ {...$$restProps}
30
+ class="relative flex justify-center items-center {avatarClass}">
31
+ {#if src}
32
+ <img {alt} {src} class={rounded ? 'rounded' : 'rounded-full'} />
33
+ {:else}
34
+ <slot><AvatarPlaceholder {rounded} /></slot>
35
+ {/if}
36
+ {#if dot}
37
+ <Indicator border offset={rounded} {...dot} />
38
+ {/if}
39
+ </svelte:element>
40
+ {:else}
41
+ <img {alt} {src} {...$$restProps} class={avatarClass} />
42
+ {/if}
@@ -1,5 +1,4 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type { DotType } from '../types';
3
2
  declare const __propDef: {
4
3
  props: {
5
4
  [x: string]: any;
@@ -8,7 +7,7 @@ declare const __propDef: {
8
7
  rounded?: boolean | undefined;
9
8
  border?: boolean | undefined;
10
9
  stacked?: boolean | undefined;
11
- dot?: DotType | undefined;
10
+ dot?: object | undefined;
12
11
  alt?: string | undefined;
13
12
  size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
14
13
  };
@@ -1,22 +1,22 @@
1
- <script>import classNames from 'classnames';
1
+ <script>import { createEventDispatcher } from 'svelte';
2
+ import classNames from 'classnames';
2
3
  import CloseButton from '../utils/CloseButton.svelte';
3
4
  export let color = 'blue';
4
5
  export let large = false;
6
+ export let border = false;
5
7
  export let href = undefined;
6
8
  export let rounded = false;
7
9
  export let index = false;
8
10
  export let dismissable = false;
9
- export let baseClass = 'inline-flex items-center justify-center -mb-0.5';
10
- let hidden = false;
11
11
  const colors = {
12
- blue: 'bg-blue-100 text-blue-800 dark:bg-blue-200 dark:text-blue-800',
12
+ blue: 'bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-300',
13
13
  dark: 'bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-300',
14
- red: 'bg-red-100 text-red-800 dark:bg-red-200 dark:text-red-900',
15
- green: 'bg-green-100 text-green-800 dark:bg-green-200 dark:text-green-900',
16
- yellow: 'bg-yellow-100 text-yellow-800 dark:bg-yellow-200 dark:text-yellow-900',
17
- indigo: 'bg-indigo-100 text-indigo-800 dark:bg-indigo-200 dark:text-indigo-900',
18
- purple: 'bg-purple-100 text-purple-800 dark:bg-purple-200 dark:text-purple-900',
19
- pink: 'bg-pink-100 text-pink-800 dark:bg-pink-200 dark:text-pink-900',
14
+ red: 'bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-300',
15
+ green: 'bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-300',
16
+ yellow: 'bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-300',
17
+ indigo: 'bg-indigo-100 text-indigo-800 dark:bg-indigo-900 dark:text-indigo-300',
18
+ purple: 'bg-purple-100 text-purple-800 dark:bg-purple-900 dark:text-purple-300',
19
+ pink: 'bg-pink-100 text-pink-800 dark:bg-pink-900 dark:text-pink-300',
20
20
  ['!blue']: 'bg-blue-500 text-blue-100',
21
21
  ['!dark']: 'bg-gray-500 text-gray-100',
22
22
  ['!red']: 'bg-red-500 text-white',
@@ -26,26 +26,74 @@ const colors = {
26
26
  ['!purple']: 'bg-purple-500 text-purple-100',
27
27
  ['!pink']: 'bg-pink-500 text-pink-100'
28
28
  };
29
- const hovers = {
30
- blue: 'hover:bg-blue-200 dark:hover:bg-blue-300',
31
- dark: 'hover:bg-gray-200 dark:hover:bg-gray-300',
32
- red: 'hover:bg-red-200 dark:hover:bg-red-300',
33
- green: 'hover:bg-green-200 dark:hover:bg-green-300',
34
- yellow: 'hover:bg-yellow-200 dark:hover:bg-yellow-300',
35
- indigo: 'hover:bg-indigo-200 dark:hover:bg-indigo-300',
36
- purple: 'hover:bg-purple-200 dark:hover:bg-purple-300',
37
- pink: 'hover:bg-pink-200 dark:hover:bg-pink-300'
29
+ const borderedColors = {
30
+ blue: 'bg-blue-100 text-blue-800 dark:bg-gray-700 dark:text-blue-400 border-blue-400',
31
+ dark: 'bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-400 border-gray-500',
32
+ red: 'bg-red-100 text-red-800 dark:bg-gray-700 dark:text-red-400 border-red-400',
33
+ green: 'bg-green-100 text-green-800 dark:bg-gray-700 dark:text-green-400 border-green-400',
34
+ yellow: 'bg-yellow-100 text-yellow-800 dark:bg-gray-700 dark:text-yellow-300 border-yellow-300',
35
+ indigo: 'bg-indigo-100 text-indigo-800 dark:bg-gray-700 dark:text-indigo-400 border-indigo-400',
36
+ purple: 'bg-purple-100 text-purple-800 dark:bg-gray-700 dark:text-purple-400 border-purple-400',
37
+ pink: 'bg-pink-100 text-pink-800 dark:bg-gray-700 dark:text-pink-400 border-pink-400'
38
+ };
39
+ const hoverColors = {
40
+ blue: 'hover:bg-blue-200',
41
+ dark: 'hover:bg-gray-200',
42
+ red: 'hover:bg-red-200',
43
+ green: 'hover:bg-green-200',
44
+ yellow: 'hover:bg-yellow-200',
45
+ indigo: 'hover:bg-indigo-200',
46
+ purple: 'hover:bg-purple-200',
47
+ pink: 'hover:bg-pink-200'
38
48
  };
49
+ const baseClass = 'font-medium inline-flex items-center justify-center px-2.5 py-0.5';
50
+ let transition = false;
39
51
  let badgeClass;
40
- $: badgeClass = classNames(baseClass, large ? 'text-sm font-medium' : 'text-xs font-semibold', colors[color], href && (hovers[color] ?? hovers.blue), rounded ? 'rounded-full p-1' : 'rounded px-2.5 py-0.5', index && 'absolute font-bold border-2 border-white dark:border-gray-900', index && (large ? 'w-7 h-7 -top-3 -right-3' : 'w-6 h-6 -top-2 -right-2'), $$props.class);
52
+ $: badgeClass = classNames(baseClass, large ? 'text-sm' : 'text-xs', border ? `border ${borderedColors[color]}` : colors[color], href && hoverColors[color], rounded ? 'rounded-full' : 'rounded', index && 'absolute font-bold border-2 border-white dark:border-gray-900', index && (large ? 'w-7 h-7 -top-3 -right-3' : 'w-6 h-6 -top-2 -right-2'), transition && 'transition-opacity duration-300 ease-out opacity-0', $$props.class);
53
+ const closeBtnBaseClass = 'inline-flex items-center !p-0.5 !m-0 !ml-2 text-sm bg-transparent rounded-sm focus:!ring-0';
54
+ // uncomment the following lines to completely overwrite <CloseButton>'s color palette
55
+ // in case <CloseButton>'s color palette is changed in the future
56
+ // const closeBtnColors = {
57
+ // blue: '!text-blue-400 hover:!bg-blue-200 hover:!text-blue-900 dark:hover:!bg-blue-800 dark:hover:!text-blue-300',
58
+ // dark: '!text-gray-400 hover:!bg-gray-200 hover:!text-gray-900 dark:hover:!bg-gray-600 dark:hover:!text-gray-300',
59
+ // red: '!text-red-400 hover:!bg-red-200 hover:!text-red-900 dark:hover:!bg-red-800 dark:hover:!text-red-300',
60
+ // green: '!text-green-400 hover:!bg-green-200 hover:!text-green-900 dark:hover:!bg-green-800 dark:hover:!text-green-300',
61
+ // yellow: '!text-yellow-400 hover:!bg-yellow-200 hover:!text-yellow-900 dark:hover:!bg-yellow-800 dark:hover:!text-yellow-300',
62
+ // indigo: '!text-indigo-400 hover:!bg-indigo-200 hover:!text-indigo-900 dark:hover:!bg-indigo-800 dark:hover:!text-indigo-300',
63
+ // purple: '!text-purple-400 hover:!bg-purple-200 hover:!text-purple-900 dark:hover:!bg-purple-800 dark:hover:!text-purple-300',
64
+ // pink: '!text-pink-400 hover:!bg-pink-200 hover:!text-pink-900 dark:hover:!bg-pink-800 dark:hover:!text-pink-300'
65
+ // };
66
+ // only overwrite necessary colors (<CloseButton> v0.29.10)
67
+ const closeBtnColors = {
68
+ blue: 'text-blue-400 hover:text-blue-900 dark:hover:!bg-blue-800 dark:hover:text-blue-300',
69
+ dark: 'text-gray-400 hover:!text-gray-400 hover:!bg-gray-200 dark:hover:!text-gray-300',
70
+ red: 'text-red-400 hover:text-red-900 dark:hover:!bg-red-800 dark:hover:text-red-300',
71
+ green: 'text-green-400 hover:text-green-900 dark:hover:!bg-green-800 dark:hover:text-green-300',
72
+ yellow: 'text-yellow-400 hover:text-yellow-900 dark:hover:!bg-yellow-800 dark:hover:text-yellow-300',
73
+ indigo: 'text-indigo-400 hover:text-indigo-900 dark:hover:!bg-indigo-800 dark:hover:text-indigo-300',
74
+ purple: 'text-purple-400 hover:text-purple-900 dark:hover:!bg-purple-800 dark:hover:text-purple-300',
75
+ pink: 'text-pink-400 hover:text-pink-900 dark:hover:!bg-pink-800 dark:hover:text-pink-300'
76
+ };
77
+ let closeBtnClass;
78
+ $: closeBtnClass = classNames(closeBtnBaseClass, closeBtnColors[color]);
79
+ let hidden = false;
80
+ const dispatch = createEventDispatcher();
41
81
  const handleHide = () => {
42
- hidden = !hidden;
82
+ transition = true;
83
+ setTimeout(() => {
84
+ hidden = true;
85
+ }, 300);
86
+ dispatch('dismiss', {
87
+ message: 'The badge will be dismissed.'
88
+ });
43
89
  };
44
90
  </script>
45
91
 
46
92
  <svelte:element this={href ? 'a' : 'span'} {href} {...$$restProps} class={badgeClass} class:hidden>
47
93
  <slot />
48
94
  {#if dismissable}
49
- <CloseButton {color} on:click={handleHide} size={large ? 'sm' : 'xs'} class="ml-1.5 -mr-1.5" />
95
+ <slot name="closeBtn" {handleHide}>
96
+ <CloseButton {color} on:click={handleHide} size={large ? 'sm' : 'xs'} name="Remove badge" class={closeBtnClass} />
97
+ </slot>
50
98
  {/if}
51
99
  </svelte:element>
@@ -4,17 +4,22 @@ declare const __propDef: {
4
4
  [x: string]: any;
5
5
  color?: "red" | "yellow" | "green" | "indigo" | "purple" | "pink" | "blue" | "dark" | undefined;
6
6
  large?: boolean | undefined;
7
+ border?: boolean | undefined;
7
8
  href?: string | undefined;
8
9
  rounded?: boolean | undefined;
9
10
  index?: boolean | undefined;
10
11
  dismissable?: boolean | undefined;
11
- baseClass?: string | undefined;
12
12
  };
13
13
  events: {
14
+ dismiss: CustomEvent<any>;
15
+ } & {
14
16
  [evt: string]: CustomEvent<any>;
15
17
  };
16
18
  slots: {
17
19
  default: {};
20
+ closeBtn: {
21
+ handleHide: () => void;
22
+ };
18
23
  };
19
24
  };
20
25
  export type BadgeProps = typeof __propDef.props;
@@ -14,7 +14,7 @@ declare const __propDef: {
14
14
  backdrop?: boolean | undefined;
15
15
  bgColor?: string | undefined;
16
16
  bgOpacity?: string | undefined;
17
- placement?: "top" | "bottom" | "left" | "right" | undefined;
17
+ placement?: "bottom" | "left" | "right" | "top" | undefined;
18
18
  id?: string | undefined;
19
19
  divClass?: string | undefined;
20
20
  transitionParams?: drawerTransitionParamTypes | undefined;
package/index.d.ts CHANGED
@@ -41,6 +41,7 @@ export { default as SimpleSearch } from './forms/SimpleSearch.svelte';
41
41
  export { default as Textarea } from './forms/Textarea.svelte';
42
42
  export { default as Toggle } from './forms/Toggle.svelte';
43
43
  export { default as VoiceSearch } from './forms/VoiceSearch.svelte';
44
+ export { default as Indicator } from './indicators/Indicator.svelte';
44
45
  export { default as Kbd } from './kbd/Kbd.svelte';
45
46
  export { default as ArrowKeyDown } from './kbd/ArrowKeyDown.svelte';
46
47
  export { default as ArrowKeyLeft } from './kbd/ArrowKeyLeft.svelte';
@@ -83,6 +84,7 @@ export { default as WidgetPlaceholder } from './skeleton/WidgetPlaceholder.svelt
83
84
  export { default as SpeedDial } from './speed-dial/SpeedDial.svelte';
84
85
  export { default as SpeedDialButton } from './speed-dial/SpeedDialButton.svelte';
85
86
  export { default as Spinner } from './spinners/Spinner.svelte';
87
+ export { default as StepIndicator } from './steps/StepIndicator.svelte';
86
88
  export { default as Table } from './tables/Table.svelte';
87
89
  export { default as TableBody } from './tables/TableBody.svelte';
88
90
  export { default as TableBodyCell } from './tables/TableBodyCell.svelte';
package/index.js CHANGED
@@ -56,6 +56,8 @@ export { default as SimpleSearch } from './forms/SimpleSearch.svelte';
56
56
  export { default as Textarea } from './forms/Textarea.svelte';
57
57
  export { default as Toggle } from './forms/Toggle.svelte';
58
58
  export { default as VoiceSearch } from './forms/VoiceSearch.svelte';
59
+ // Indicator
60
+ export { default as Indicator } from './indicators/Indicator.svelte';
59
61
  // Kbd
60
62
  export { default as Kbd } from './kbd/Kbd.svelte';
61
63
  export { default as ArrowKeyDown } from './kbd/ArrowKeyDown.svelte';
@@ -111,6 +113,8 @@ export { default as SpeedDial } from './speed-dial/SpeedDial.svelte';
111
113
  export { default as SpeedDialButton } from './speed-dial/SpeedDialButton.svelte';
112
114
  // Spin
113
115
  export { default as Spinner } from './spinners/Spinner.svelte';
116
+ // Steps
117
+ export { default as StepIndicator } from './steps/StepIndicator.svelte';
114
118
  // Tables
115
119
  export { default as Table } from './tables/Table.svelte';
116
120
  export { default as TableBody } from './tables/TableBody.svelte';
@@ -0,0 +1,59 @@
1
+ <script>import classNames from 'classnames';
2
+ export let color = 'gray';
3
+ export let rounded = false;
4
+ export let size = 'md';
5
+ export let border = false;
6
+ export let placement = undefined;
7
+ export let offset = true;
8
+ const colors = {
9
+ gray: 'bg-gray-200',
10
+ dark: 'bg-gray-900 dark:bg-gray-700',
11
+ blue: 'bg-blue-600',
12
+ green: 'bg-green-500',
13
+ red: 'bg-red-500',
14
+ purple: 'bg-purple-500',
15
+ indigo: 'bg-indigo-500',
16
+ yellow: 'bg-yellow-300',
17
+ teal: 'bg-teal-500',
18
+ none: ''
19
+ };
20
+ const sizes = {
21
+ xs: 'w-2 h-2',
22
+ sm: 'w-2.5 h-2.5',
23
+ md: 'w-3 h-3',
24
+ lg: 'w-3.5 h-3.5',
25
+ xl: 'w-6 h-6'
26
+ };
27
+ const placements = {
28
+ // top
29
+ 'top-left': 'top-0 left-0',
30
+ 'top-center': 'top-0 left-1/2 -translate-x-1/2',
31
+ 'top-right': 'top-0 right-0',
32
+ // center
33
+ 'center-left': 'top-1/2 -translate-y-1/2 left-0',
34
+ center: 'top-1/2 -translate-y-1/2 left-1/2 -translate-x-1/2',
35
+ 'center-right': 'top-1/2 -translate-y-1/2 right-0',
36
+ // bottom
37
+ 'bottom-left': 'bottom-0 left-0',
38
+ 'bottom-center': 'bottom-0 left-1/2 -translate-x-1/2',
39
+ 'bottom-right': 'bottom-0 right-0'
40
+ };
41
+ const offsets = {
42
+ // top
43
+ 'top-left': '-translate-x-1/3 -translate-y-1/3',
44
+ 'top-center': '-translate-y-1/3',
45
+ 'top-right': 'translate-x-1/3 -translate-y-1/3',
46
+ // center
47
+ 'center-left': '-translate-x-1/3',
48
+ center: '',
49
+ 'center-right': 'translate-x-1/3',
50
+ // bottom
51
+ 'bottom-left': '-translate-x-1/3 translate-y-1/3',
52
+ 'bottom-center': 'translate-y-1/3',
53
+ 'bottom-right': 'translate-x-1/3 translate-y-1/3'
54
+ };
55
+ let dotClass;
56
+ $: dotClass = classNames('flex-shrink-0', rounded ? 'rounded' : 'rounded-full', border && 'border-2 border-white dark:border-gray-800', sizes[size], colors[color], $$slots.default && 'inline-flex items-center justify-center', placement && 'absolute ' + placements[placement], placement && offset && offsets[placement], $$props.class);
57
+ </script>
58
+
59
+ <div class={dotClass}><slot /></div>
@@ -0,0 +1,24 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ [x: string]: any;
5
+ color?: "gray" | "red" | "yellow" | "green" | "indigo" | "purple" | "blue" | "dark" | "none" | "teal" | undefined;
6
+ rounded?: boolean | undefined;
7
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
8
+ border?: boolean | undefined;
9
+ placement?: 'top-left' | 'top-center' | 'top-right' | 'center-left' | 'center' | 'center-right' | 'bottom-left' | 'bottom-center' | 'bottom-right' | undefined;
10
+ offset?: boolean | undefined;
11
+ };
12
+ events: {
13
+ [evt: string]: CustomEvent<any>;
14
+ };
15
+ slots: {
16
+ default: {};
17
+ };
18
+ };
19
+ export type IndicatorProps = typeof __propDef.props;
20
+ export type IndicatorEvents = typeof __propDef.events;
21
+ export type IndicatorSlots = typeof __propDef.slots;
22
+ export default class Indicator extends SvelteComponentTyped<IndicatorProps, IndicatorEvents, IndicatorSlots> {
23
+ }
24
+ export {};
@@ -43,6 +43,7 @@ $: itemClass = classNames('py-2 px-4 w-full text-sm font-medium', 'first:rounded
43
43
  </a>
44
44
  {:else}
45
45
  <button
46
+ type="button"
46
47
  class="inline-flex relative items-center text-left {itemClass}"
47
48
  {disabled}
48
49
  on:click={() => dispatch('click', $$props)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flowbite-svelte",
3
- "version": "0.29.10",
3
+ "version": "0.29.12",
4
4
  "description": "Flowbite components for Svelte",
5
5
  "main": "index.js",
6
6
  "author": {
@@ -108,7 +108,6 @@
108
108
  "./accordions/AccordionItem.svelte": "./accordions/AccordionItem.svelte",
109
109
  "./alerts/Alert.svelte": "./alerts/Alert.svelte",
110
110
  "./avatar/Avatar.svelte": "./avatar/Avatar.svelte",
111
- "./avatar/Dot.svelte": "./avatar/Dot.svelte",
112
111
  "./avatar/Placeholder.svelte": "./avatar/Placeholder.svelte",
113
112
  "./badges/Badge.svelte": "./badges/Badge.svelte",
114
113
  "./breadcrumbs/Breadcrumb.svelte": "./breadcrumbs/Breadcrumb.svelte",
@@ -155,6 +154,7 @@
155
154
  "./forms/Toggle.svelte": "./forms/Toggle.svelte",
156
155
  "./forms/VoiceSearch.svelte": "./forms/VoiceSearch.svelte",
157
156
  ".": "./index.js",
157
+ "./indicators/Indicator.svelte": "./indicators/Indicator.svelte",
158
158
  "./kbd/ArrowKeyDown.svelte": "./kbd/ArrowKeyDown.svelte",
159
159
  "./kbd/ArrowKeyLeft.svelte": "./kbd/ArrowKeyLeft.svelte",
160
160
  "./kbd/ArrowKeyRight.svelte": "./kbd/ArrowKeyRight.svelte",
@@ -200,6 +200,7 @@
200
200
  "./speed-dial/SpeedDial.svelte": "./speed-dial/SpeedDial.svelte",
201
201
  "./speed-dial/SpeedDialButton.svelte": "./speed-dial/SpeedDialButton.svelte",
202
202
  "./spinners/Spinner.svelte": "./spinners/Spinner.svelte",
203
+ "./steps/StepIndicator.svelte": "./steps/StepIndicator.svelte",
203
204
  "./tables/Table.svelte": "./tables/Table.svelte",
204
205
  "./tables/TableBody.svelte": "./tables/TableBody.svelte",
205
206
  "./tables/TableBodyCell.svelte": "./tables/TableBodyCell.svelte",
@@ -0,0 +1,58 @@
1
+ <script>import classNames from 'classnames';
2
+ export let steps = ['Step 1', 'Step 2', 'Step 3', 'Step 4', 'Step 5'];
3
+ export let currentStep = 1;
4
+ export let size = 'h-2.5';
5
+ export let color = 'blue';
6
+ export let glow = false;
7
+ export let hideLabel = false;
8
+ const completedStepColors = {
9
+ gray: 'bg-gray-400 dark:bg-gray-500',
10
+ red: 'bg-red-600 dark:bg-red-900',
11
+ yellow: 'bg-yellow-400 dark:bg-yellow-600',
12
+ green: 'bg-green-500 dark:bg-green-900',
13
+ indigo: 'bg-indigo-500 dark:bg-indigo-900',
14
+ purple: 'bg-purple-500 dark:bg-purple-900',
15
+ pink: 'bg-pink-500 dark:bg-pink-900',
16
+ blue: 'bg-blue-500 dark:bg-blue-900'
17
+ };
18
+ const currentStepColors = {
19
+ gray: 'bg-gray-700 dark:bg-gray-200',
20
+ red: 'bg-red-900 dark:bg-red-500',
21
+ yellow: 'bg-yellow-600 dark:bg-yellow-400',
22
+ green: 'bg-green-800 dark:bg-green-400',
23
+ indigo: 'bg-indigo-800 dark:bg-indigo-400',
24
+ purple: 'bg-purple-800 dark:bg-purple-400',
25
+ pink: 'bg-pink-800 dark:bg-pink-400',
26
+ blue: 'bg-blue-800 dark:bg-blue-400'
27
+ };
28
+ </script>
29
+
30
+ <div {...$$restProps} class={classNames('space-y-2 dark:text-white', $$props.class)}>
31
+ {#if !hideLabel}
32
+ <h3 class="text-base font-semibold">{steps[currentStep - 1]}</h3>
33
+ {/if}
34
+ <div class={classNames('flex justify-between gap-2 w-full', size)}>
35
+ {#each steps as step, i}
36
+ {#if i === currentStep - 1}
37
+ <div class="relative w-full h-full">
38
+ <div
39
+ class={classNames(
40
+ 'relative w-full h-full rounded-sm',
41
+ currentStepColors[color]
42
+ )} />
43
+ {#if glow}
44
+ <div
45
+ class={classNames(
46
+ 'absolute -inset-1 rounded-sm blur opacity-30 dark:opacity-25',
47
+ currentStepColors[color]
48
+ )} />
49
+ {/if}
50
+ </div>
51
+ {:else if i < currentStep - 1}
52
+ <div class={classNames('w-full h-full rounded-sm', completedStepColors[color])} />
53
+ {:else}
54
+ <div class={classNames('w-full h-full rounded-sm bg-gray-200 dark:bg-gray-700')} />
55
+ {/if}
56
+ {/each}
57
+ </div>
58
+ </div>
@@ -0,0 +1,22 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ [x: string]: any;
5
+ steps?: string[] | undefined;
6
+ currentStep?: number | undefined;
7
+ size?: string | undefined;
8
+ color?: "gray" | "red" | "yellow" | "green" | "indigo" | "purple" | "pink" | "blue" | undefined;
9
+ glow?: boolean | undefined;
10
+ hideLabel?: boolean | undefined;
11
+ };
12
+ events: {
13
+ [evt: string]: CustomEvent<any>;
14
+ };
15
+ slots: {};
16
+ };
17
+ export type StepIndicatorProps = typeof __propDef.props;
18
+ export type StepIndicatorEvents = typeof __propDef.events;
19
+ export type StepIndicatorSlots = typeof __propDef.slots;
20
+ export default class StepIndicator extends SvelteComponentTyped<StepIndicatorProps, StepIndicatorEvents, StepIndicatorSlots> {
21
+ }
22
+ export {};
@@ -13,6 +13,8 @@ const colors = {
13
13
  red: 'text-red-100 dark:text-red-100',
14
14
  yellow: 'text-yellow-100 dark:text-yellow-100',
15
15
  purple: 'text-purple-100 dark:text-purple-100',
16
+ indigo: 'text-indigo-100 dark:text-indigo-100',
17
+ pink: 'text-pink-100 dark:text-pink-100',
16
18
  custom: ''
17
19
  };
18
20
  $: setContext('striped', striped);
@@ -22,10 +24,7 @@ $: setContext('color', color);
22
24
  </script>
23
25
 
24
26
  <div class={classNames(divClass, shadow && 'shadow-md sm:rounded-lg')}>
25
- <table
26
- {...$$restProps}
27
- class={classNames('w-full text-left text-sm', colors[color], $$props.class)}
28
- >
29
- <slot />
30
- </table>
27
+ <table {...$$restProps} class={classNames('w-full text-left text-sm', colors[color], $$props.class)}>
28
+ <slot />
29
+ </table>
31
30
  </div>
@@ -7,7 +7,7 @@ declare const __propDef: {
7
7
  hoverable?: boolean | undefined;
8
8
  noborder?: boolean | undefined;
9
9
  shadow?: boolean | undefined;
10
- color?: "red" | "yellow" | "green" | "default" | "purple" | "blue" | "custom" | undefined;
10
+ color?: "red" | "yellow" | "green" | "indigo" | "default" | "purple" | "pink" | "blue" | "custom" | undefined;
11
11
  };
12
12
  events: {
13
13
  [evt: string]: CustomEvent<any>;
@@ -1,13 +1,13 @@
1
1
  <script>import classNames from 'classnames';
2
2
  import { getContext } from 'svelte';
3
- export let trClass = 'bg-white';
3
+ export let color = getContext('color');
4
4
  const colors = {
5
- default: 'dark:border-gray-700 dark:bg-gray-800',
6
- blue: 'bg-blue-500 border-b border-blue-400',
7
- green: 'bg-green-500 border-b border-green-400',
8
- red: 'bg-red-500 border-b border-red-400',
9
- yellow: 'bg-yellow-500 border-b border-yellow-400',
10
- purple: 'bg-purple-500 border-b border-purple-400',
5
+ default: 'bg-white dark:bg-gray-800 dark:border-gray-700',
6
+ blue: 'bg-blue-500 border-blue-400',
7
+ green: 'bg-green-500 border-green-400',
8
+ red: 'bg-red-500 border-red-400',
9
+ yellow: 'bg-yellow-500 border-yellow-400',
10
+ purple: 'bg-purple-500 border-purple-400',
11
11
  custom: ''
12
12
  };
13
13
  const hoverColors = {
@@ -28,12 +28,10 @@ const stripColors = {
28
28
  purple: 'odd:bg-purple-800 even:bg-purple-700 odd:dark:bg-purple-800 even:dark:bg-purple-700',
29
29
  custom: ''
30
30
  };
31
- let color = 'default';
32
- color = getContext('color');
33
- let trClassfinal;
34
- $: trClassfinal = classNames(getContext('noborder') ? 'bg-white dark:bg-gray-800' : trClass, colors[color], getContext('hoverable') && hoverColors[color], getContext('striped') && stripColors[color], $$props.class);
31
+ let trClass;
32
+ $: trClass = classNames(!getContext('noborder') && 'border-b last:border-b-0', colors[color], getContext('hoverable') && hoverColors[color], getContext('striped') && stripColors[color], $$props.class);
35
33
  </script>
36
34
 
37
- <tr {...$$restProps} class={trClassfinal} on:click on:contextmenu>
35
+ <tr {...$$restProps} class={trClass} on:click on:contextmenu>
38
36
  <slot />
39
37
  </tr>
@@ -2,7 +2,7 @@ import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
4
  [x: string]: any;
5
- trClass?: string | undefined;
5
+ color?: "red" | "yellow" | "green" | "default" | "purple" | "blue" | "custom" | undefined;
6
6
  };
7
7
  events: {
8
8
  click: MouseEvent;
@@ -1,6 +1,7 @@
1
1
  <script>import classNames from 'classnames';
2
2
  import { getContext } from 'svelte';
3
3
  export let theadClass = 'text-xs uppercase';
4
+ export let defaultRow = true;
4
5
  let color;
5
6
  color = getContext('color');
6
7
  let noborder = getContext('noborder');
@@ -31,7 +32,11 @@ $: theadClassfinal = classNames(theadClass, textColor, striped && borderColors,
31
32
  </script>
32
33
 
33
34
  <thead {...$$restProps} class={theadClassfinal}>
34
- <tr>
35
+ {#if defaultRow}
36
+ <tr>
37
+ <slot />
38
+ </tr>
39
+ {:else}
35
40
  <slot />
36
- </tr>
41
+ {/if}
37
42
  </thead>
@@ -3,6 +3,7 @@ declare const __propDef: {
3
3
  props: {
4
4
  [x: string]: any;
5
5
  theadClass?: string | undefined;
6
+ defaultRow?: boolean | undefined;
6
7
  };
7
8
  events: {
8
9
  [evt: string]: CustomEvent<any>;
@@ -8,7 +8,7 @@ declare const __propDef: {
8
8
  bgClass?: string | undefined;
9
9
  bg?: boolean | undefined;
10
10
  baseClass?: string | undefined;
11
- alignment?: "left" | "right" | "center" | undefined;
11
+ alignment?: "center" | "left" | "right" | undefined;
12
12
  size?: "xs" | "sm" | "lg" | "xl" | "base" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "9xl" | undefined;
13
13
  };
14
14
  events: {
@@ -4,7 +4,7 @@ declare const __propDef: {
4
4
  [x: string]: any;
5
5
  color?: string | undefined;
6
6
  height?: "normal" | "relaxed" | "loose" | undefined;
7
- align?: "left" | "right" | "center" | undefined;
7
+ align?: "center" | "left" | "right" | undefined;
8
8
  justify?: boolean | undefined;
9
9
  italic?: boolean | undefined;
10
10
  firstupper?: boolean | undefined;
package/avatar/Dot.svelte DELETED
@@ -1,34 +0,0 @@
1
- <script>import classNames from 'classnames';
2
- export let show = false;
3
- export let top = false;
4
- export let color = 'bg-gray-300 dark:bg-gray-500';
5
- export let rounded = false;
6
- export let size = 'md';
7
- const sizes = {
8
- xs: 'w-2.5 h-2.5',
9
- sm: 'w-3 h-3',
10
- md: 'w-3.5 h-3.5',
11
- lg: 'w-6 h-6',
12
- xl: 'w-10 h-10'
13
- };
14
- const offsets = {
15
- xs: ['left-4', 'left-5'],
16
- sm: ['left-6', 'left-6'],
17
- md: ['left-7', 'left-8'],
18
- lg: ['left-14', 'left-16'],
19
- xl: ['left-24', 'left-32']
20
- };
21
- let dotClass;
22
- $: dotClass = classNames('absolute rounded-full border-white dark:border-gray-800 border-2', sizes[size], offsets[size][+rounded], top ? 'top-0' : 'bottom-0', rounded && top && 'transform -translate-y-1/2', rounded && !top && 'transform translate-y-1/4', color);
23
- let divClass;
24
- $: divClass = classNames('relative flex-shrink-0', $$props.class);
25
- </script>
26
-
27
- {#if show}
28
- <div class={divClass}>
29
- <slot />
30
- <span class={dotClass} />
31
- </div>
32
- {:else}
33
- <slot />
34
- {/if}
@@ -1,23 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- [x: string]: any;
5
- show?: boolean | undefined;
6
- top?: boolean | undefined;
7
- color?: string | undefined;
8
- rounded?: boolean | undefined;
9
- size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
10
- };
11
- events: {
12
- [evt: string]: CustomEvent<any>;
13
- };
14
- slots: {
15
- default: {};
16
- };
17
- };
18
- export type DotProps = typeof __propDef.props;
19
- export type DotEvents = typeof __propDef.events;
20
- export type DotSlots = typeof __propDef.slots;
21
- export default class Dot extends SvelteComponentTyped<DotProps, DotEvents, DotSlots> {
22
- }
23
- export {};