@ims360/svelte-ivory 0.4.21 → 0.5.1

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.
Files changed (72) hide show
  1. package/dist/components/basic/checkbox/Checkbox.svelte +3 -8
  2. package/dist/components/basic/checkbox/Checkbox.svelte.d.ts.map +1 -1
  3. package/dist/components/buttons/CopyToClipboardButton.svelte +1 -1
  4. package/dist/components/buttons/CopyToClipboardButton.svelte.d.ts.map +1 -1
  5. package/dist/components/inputs/FileInput.svelte +5 -2
  6. package/dist/components/inputs/FileInput.svelte.d.ts.map +1 -1
  7. package/dist/components/inputs/PasswordCreateInput.svelte +1 -1
  8. package/dist/components/layout/dialog/Dialog.svelte +19 -20
  9. package/dist/components/layout/dialog/Dialog.svelte.d.ts +1 -4
  10. package/dist/components/layout/dialog/Dialog.svelte.d.ts.map +1 -1
  11. package/dist/components/layout/drawer/Drawer.svelte +21 -41
  12. package/dist/components/layout/drawer/Drawer.svelte.d.ts +4 -5
  13. package/dist/components/layout/drawer/Drawer.svelte.d.ts.map +1 -1
  14. package/dist/components/layout/index.d.ts +1 -2
  15. package/dist/components/layout/index.d.ts.map +1 -1
  16. package/dist/components/layout/index.js +0 -1
  17. package/dist/components/layout/modal/Modal.svelte +19 -84
  18. package/dist/components/layout/modal/Modal.svelte.d.ts +5 -14
  19. package/dist/components/layout/modal/Modal.svelte.d.ts.map +1 -1
  20. package/dist/components/layout/popover/Popover.svelte +1 -2
  21. package/dist/components/layout/popover/Popover.svelte.d.ts.map +1 -1
  22. package/dist/components/layout/tabs/Tab.svelte +0 -2
  23. package/dist/components/layout/tabs/Tab.svelte.d.ts.map +1 -1
  24. package/dist/components/table/Column.svelte +0 -2
  25. package/dist/components/table/Column.svelte.d.ts.map +1 -1
  26. package/dist/components/table/ColumnHead.svelte +1 -2
  27. package/dist/components/table/ColumnHead.svelte.d.ts.map +1 -1
  28. package/dist/components/table/Table.svelte +9 -13
  29. package/dist/components/table/Table.svelte.d.ts +3 -3
  30. package/dist/components/table/Table.svelte.d.ts.map +1 -1
  31. package/dist/components/table/VirtualList.svelte +9 -5
  32. package/dist/components/table/VirtualList.svelte.d.ts +2 -2
  33. package/dist/components/table/VirtualList.svelte.d.ts.map +1 -1
  34. package/dist/index.d.ts +1 -0
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +1 -0
  37. package/dist/theme.svelte.d.ts +0 -36
  38. package/dist/theme.svelte.d.ts.map +1 -1
  39. package/dist/{components/toast/toasts.svelte.d.ts → toasts.svelte.d.ts} +2 -1
  40. package/dist/toasts.svelte.d.ts.map +1 -0
  41. package/dist/{components/toast/toasts.svelte.js → toasts.svelte.js} +2 -2
  42. package/package.json +9 -13
  43. package/src/lib/components/basic/checkbox/Checkbox.svelte +3 -8
  44. package/src/lib/components/buttons/CopyToClipboardButton.svelte +1 -1
  45. package/src/lib/components/inputs/FileInput.svelte +5 -2
  46. package/src/lib/components/inputs/PasswordCreateInput.svelte +1 -1
  47. package/src/lib/components/layout/dialog/Dialog.svelte +19 -20
  48. package/src/lib/components/layout/drawer/Drawer.svelte +21 -41
  49. package/src/lib/components/layout/index.ts +1 -2
  50. package/src/lib/components/layout/modal/Modal.svelte +19 -84
  51. package/src/lib/components/layout/popover/Popover.svelte +1 -2
  52. package/src/lib/components/layout/tabs/Tab.svelte +0 -2
  53. package/src/lib/components/table/Column.svelte +0 -2
  54. package/src/lib/components/table/ColumnHead.svelte +1 -2
  55. package/src/lib/components/table/Table.svelte +9 -13
  56. package/src/lib/components/table/VirtualList.svelte +9 -5
  57. package/src/lib/index.ts +1 -0
  58. package/src/lib/theme.svelte.ts +0 -36
  59. package/src/lib/{components/toast/toasts.svelte.ts → toasts.svelte.ts} +3 -2
  60. package/dist/components/layout/Heading.svelte +0 -25
  61. package/dist/components/layout/Heading.svelte.d.ts +0 -9
  62. package/dist/components/layout/Heading.svelte.d.ts.map +0 -1
  63. package/dist/components/toast/Toast.svelte +0 -105
  64. package/dist/components/toast/Toast.svelte.d.ts +0 -18
  65. package/dist/components/toast/Toast.svelte.d.ts.map +0 -1
  66. package/dist/components/toast/index.d.ts +0 -3
  67. package/dist/components/toast/index.d.ts.map +0 -1
  68. package/dist/components/toast/index.js +0 -2
  69. package/dist/components/toast/toasts.svelte.d.ts.map +0 -1
  70. package/src/lib/components/layout/Heading.svelte +0 -25
  71. package/src/lib/components/toast/Toast.svelte +0 -105
  72. package/src/lib/components/toast/index.ts +0 -2
@@ -1,9 +1,8 @@
1
1
  <script lang="ts" module>
2
- import { theme } from '../../theme.svelte';
3
2
  import { merge } from '../../utils/functions';
4
3
  import { ChevronRight } from '@lucide/svelte';
5
4
  import { getContext, setContext, untrack, type Snippet } from 'svelte';
6
- import type { ClassValue } from 'svelte/elements';
5
+ import type { ClassValue, HTMLAttributes } from 'svelte/elements';
7
6
  import { SvelteSet } from 'svelte/reactivity';
8
7
  import ColumnComponent from './Column.svelte';
9
8
  import { ColumnController, type ColumnConfig } from './columnController.svelte';
@@ -22,8 +21,8 @@
22
21
  virtualized?: boolean;
23
22
  /** Renders the rows */
24
23
  children?: Snippet<[{ row: T; nestingLevel?: number; index: number }]>;
25
- rowClass?: ClassValue;
26
- headerClass?: ClassValue;
24
+ row?: HTMLAttributes<HTMLDivElement>;
25
+ header?: HTMLAttributes<HTMLDivElement>;
27
26
  search?: {
28
27
  term: string;
29
28
  matches: (row: T) => boolean;
@@ -67,8 +66,8 @@
67
66
  class: clazz,
68
67
  data,
69
68
  children: passedChildren,
70
- rowClass = 'hover:bg-surface-950-50/10 transition-colors',
71
- headerClass,
69
+ row,
70
+ header: headerProps,
72
71
  rowHeight = 64,
73
72
  onclick,
74
73
  href,
@@ -202,20 +201,17 @@
202
201
  bind:this={list}
203
202
  bind:b_scrollTop
204
203
  data={results.entries}
205
- class={merge(
206
- 'flex flex-col overflow-hidden border-transparent',
207
- theme.current.table?.class,
208
- clazz
209
- )}
210
- rowClass={merge('pl-2 pr-4', theme.current.table?.row?.class, rowClass)}
204
+ class={merge('flex flex-col overflow-hidden border-transparent', clazz)}
205
+ {row}
211
206
  {rowHeight}
212
207
  {virtualized}
213
208
  >
214
209
  {#snippet header()}
215
210
  <div
211
+ {...headerProps}
216
212
  class={merge(
217
213
  'flex w-fit min-w-full flex-row border-b border-inherit pr-4 pl-2',
218
- headerClass
214
+ headerProps?.class
219
215
  )}
220
216
  >
221
217
  {#if results.someHaveChildren}
@@ -1,5 +1,5 @@
1
1
  import { type Snippet } from 'svelte';
2
- import type { ClassValue } from 'svelte/elements';
2
+ import type { ClassValue, HTMLAttributes } from 'svelte/elements';
3
3
  import { SvelteSet } from 'svelte/reactivity';
4
4
  import { ColumnController, type ColumnConfig } from './columnController.svelte';
5
5
  import { type TableRow } from './controller';
@@ -16,8 +16,8 @@ export interface TableProps<T extends TableRow<T>> {
16
16
  nestingLevel?: number;
17
17
  index: number;
18
18
  }]>;
19
- rowClass?: ClassValue;
20
- headerClass?: ClassValue;
19
+ row?: HTMLAttributes<HTMLDivElement>;
20
+ header?: HTMLAttributes<HTMLDivElement>;
21
21
  search?: {
22
22
  term: string;
23
23
  matches: (row: T) => boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Table.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/table/Table.svelte.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Table.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/table/Table.svelte.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  <script lang="ts" generics="T extends { id: string }">
2
2
  import { merge } from '../../utils/functions';
3
3
  import { onMount, tick, untrack, type Snippet } from 'svelte';
4
- import type { ClassValue } from 'svelte/elements';
4
+ import type { ClassValue, HTMLAttributes } from 'svelte/elements';
5
5
 
6
6
  type Props<T> = {
7
7
  class?: ClassValue;
@@ -11,7 +11,7 @@
11
11
  b_scrollTop?: number;
12
12
  rowHeight: number;
13
13
  overscan?: number;
14
- rowClass?: ClassValue;
14
+ row?: HTMLAttributes<HTMLDivElement>;
15
15
  virtualized?: boolean;
16
16
  };
17
17
 
@@ -23,12 +23,12 @@
23
23
  b_scrollTop = $bindable(),
24
24
  rowHeight,
25
25
  overscan = 2,
26
- rowClass,
26
+ row: rowProps,
27
27
  virtualized = true
28
28
  }: Props<T> = $props();
29
29
 
30
30
  const finalRowClass = $derived(
31
- merge('flex w-full shrink-0 grow flex-row items-center overflow-hidden', rowClass)
31
+ merge('flex w-full shrink-0 grow flex-row items-center overflow-hidden', rowProps?.class)
32
32
  );
33
33
 
34
34
  let viewportReactivity = $state(0);
@@ -131,7 +131,11 @@
131
131
  style="padding-top: {top}px; padding-bottom: {bottom}px; min-width: max(100%, {header_width}px) !important;"
132
132
  >
133
133
  {#each visible as row, i (row.data.id)}
134
- <div class={finalRowClass} style="height: {rowHeight}px !important;">
134
+ <div
135
+ {...rowProps}
136
+ class={finalRowClass}
137
+ style="height: {rowHeight}px !important; {rowProps?.style}"
138
+ >
135
139
  {@render children({
136
140
  row: row.data,
137
141
  domIndex: i,
@@ -1,5 +1,5 @@
1
1
  import { type Snippet } from 'svelte';
2
- import type { ClassValue } from 'svelte/elements';
2
+ import type { ClassValue, HTMLAttributes } from 'svelte/elements';
3
3
  type Props<T> = {
4
4
  class?: ClassValue;
5
5
  data: T[];
@@ -12,7 +12,7 @@ type Props<T> = {
12
12
  b_scrollTop?: number;
13
13
  rowHeight: number;
14
14
  overscan?: number;
15
- rowClass?: ClassValue;
15
+ row?: HTMLAttributes<HTMLDivElement>;
16
16
  virtualized?: boolean;
17
17
  };
18
18
  declare function $$render<T extends {
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualList.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/table/VirtualList.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,EAA0B,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG9C,KAAK,KAAK,CAAC,CAAC,IAAI;IACZ,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,QAAQ,EAAE,OAAO,CAAC,CAAC;QAAE,GAAG,EAAE,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IACjE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAAC,iBAAS,QAAQ,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE;WA6HpB,KAAK,CAAC,CAAC,CAAC;aAAwB;QAAE,QAAQ,SA/F1C,MAAM,SAAS,MAAM,UA+FsC;KAAE;;;;EAA0E;AACpK,cAAM,iBAAiB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE;IAC5C,KAAK,IAAI,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAChD,MAAM,IAAI,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAClD,KAAK,IAAI,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAChD,QAAQ;IACR,OAAO;yBArGkB,MAAM,SAAS,MAAM;;CAsGjD;AAED,UAAU,qBAAqB;IAC3B,KAAK,CAAC,SAAS;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;KAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACnZ,CAAC,CAAC,SAAS;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAClJ,YAAY,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;CACjE;AACD,QAAA,MAAM,WAAW,EAAE,qBAAmC,CAAC;AACrC,KAAK,WAAW,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,IAAI,YAAY,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AACnF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"VirtualList.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/table/VirtualList.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,EAA0B,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAG9D,KAAK,KAAK,CAAC,CAAC,IAAI;IACZ,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,QAAQ,EAAE,OAAO,CAAC,CAAC;QAAE,GAAG,EAAE,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IACjE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAAC,iBAAS,QAAQ,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE;WA6HpB,KAAK,CAAC,CAAC,CAAC;aAAwB;QAAE,QAAQ,SA/F1C,MAAM,SAAS,MAAM,UA+FsC;KAAE;;;;EAA0E;AACpK,cAAM,iBAAiB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE;IAC5C,KAAK,IAAI,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAChD,MAAM,IAAI,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAClD,KAAK,IAAI,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAChD,QAAQ;IACR,OAAO;yBArGkB,MAAM,SAAS,MAAM;;CAsGjD;AAED,UAAU,qBAAqB;IAC3B,KAAK,CAAC,SAAS;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;KAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACnZ,CAAC,CAAC,SAAS;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAClJ,YAAY,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;CACjE;AACD,QAAA,MAAM,WAAW,EAAE,qBAAmC,CAAC;AACrC,KAAK,WAAW,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,IAAI,YAAY,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AACnF,eAAe,WAAW,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export { ColorTheme, type ColorThemePreference } from './colorTheme.svelte';
2
2
  export { theme, type Theme } from './theme.svelte';
3
+ export { Toasts, type ToastSettings } from './toasts.svelte';
3
4
  export { type IvoryComponent } from './types';
4
5
  export type Variant = 'primary' | 'secondary' | 'tertiary' | 'success' | 'warning' | 'error' | 'surface';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,MAAM,OAAO,GACb,SAAS,GACT,WAAW,GACX,UAAU,GACV,SAAS,GACT,SAAS,GACT,OAAO,GACP,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,MAAM,OAAO,GACb,SAAS,GACT,WAAW,GACX,UAAU,GACV,SAAS,GACT,SAAS,GACT,OAAO,GACP,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  // Reexport your entry components here
2
2
  export { ColorTheme } from './colorTheme.svelte';
3
3
  export { theme } from './theme.svelte';
4
+ export { Toasts } from './toasts.svelte';
4
5
  export {} from './types';
@@ -1,45 +1,9 @@
1
1
  import type { RemoteFormIssue } from '@sveltejs/kit';
2
2
  import type { ClassValue } from 'svelte/elements';
3
3
  export interface Theme {
4
- checkbox?: {
5
- class?: (checked: boolean, partial: boolean) => ClassValue;
6
- };
7
- heading?: {
8
- class?: ClassValue;
9
- };
10
4
  dialog?: {
11
5
  class?: ClassValue;
12
6
  };
13
- tabs?: {
14
- tab?: {
15
- class?: (active: boolean) => ClassValue;
16
- };
17
- };
18
- table?: {
19
- class?: ClassValue;
20
- column?: {
21
- class?: ClassValue;
22
- };
23
- head?: {
24
- class?: ClassValue;
25
- };
26
- row?: {
27
- class?: ClassValue;
28
- };
29
- };
30
- modal?: {
31
- class?: ClassValue;
32
- innerClass?: ClassValue;
33
- dialog?: {
34
- class?: ClassValue;
35
- };
36
- };
37
- drawer?: {
38
- class?: ClassValue;
39
- };
40
- popover?: {
41
- class?: ClassValue;
42
- };
43
7
  input?: {
44
8
  outerClass?: ClassValue;
45
9
  class?: (value: boolean, issues?: boolean) => ClassValue;
@@ -1 +1 @@
1
- {"version":3,"file":"theme.svelte.d.ts","sourceRoot":"","sources":["../src/lib/theme.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,WAAW,KAAK;IAClB,QAAQ,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,UAAU,CAAC;KAC9D,CAAC;IACF,OAAO,CAAC,EAAE;QACN,KAAK,CAAC,EAAE,UAAU,CAAC;KACtB,CAAC;IACF,MAAM,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,UAAU,CAAC;KACtB,CAAC;IACF,IAAI,CAAC,EAAE;QACH,GAAG,CAAC,EAAE;YACF,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,UAAU,CAAC;SAC3C,CAAC;KACL,CAAC;IACF,KAAK,CAAC,EAAE;QACJ,KAAK,CAAC,EAAE,UAAU,CAAC;QACnB,MAAM,CAAC,EAAE;YACL,KAAK,CAAC,EAAE,UAAU,CAAC;SACtB,CAAC;QACF,IAAI,CAAC,EAAE;YACH,KAAK,CAAC,EAAE,UAAU,CAAC;SACtB,CAAC;QACF,GAAG,CAAC,EAAE;YACF,KAAK,CAAC,EAAE,UAAU,CAAC;SACtB,CAAC;KACL,CAAC;IACF,KAAK,CAAC,EAAE;QACJ,KAAK,CAAC,EAAE,UAAU,CAAC;QACnB,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,MAAM,CAAC,EAAE;YACL,KAAK,CAAC,EAAE,UAAU,CAAC;SACtB,CAAC;KACL,CAAC;IACF,MAAM,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,UAAU,CAAC;KACtB,CAAC;IACF,OAAO,CAAC,EAAE;QACN,KAAK,CAAC,EAAE,UAAU,CAAC;KACtB,CAAC;IACF,KAAK,CAAC,EAAE;QACJ,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,UAAU,CAAC;QACzD,KAAK,CAAC,EAAE;YACJ,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,UAAU,CAAC;SAC5D,CAAC;QACF,MAAM,CAAC,EAAE;YACL,KAAK,CAAC,EAAE;gBACJ,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,MAAM,CAAC;gBAC3C,KAAK,CAAC,EAAE,UAAU,CAAC;aACtB,CAAC;YACF,KAAK,CAAC,EAAE,UAAU,CAAC;SACtB,CAAC;KACL,CAAC;CACL;AAkBD,eAAO,MAAM,KAAK;uBAZS,KAAK;aAGF,KAAK;CASD,CAAC"}
1
+ {"version":3,"file":"theme.svelte.d.ts","sourceRoot":"","sources":["../src/lib/theme.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,WAAW,KAAK;IAClB,MAAM,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,UAAU,CAAC;KACtB,CAAC;IACF,KAAK,CAAC,EAAE;QACJ,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,UAAU,CAAC;QACzD,KAAK,CAAC,EAAE;YACJ,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,UAAU,CAAC;SAC5D,CAAC;QACF,MAAM,CAAC,EAAE;YACL,KAAK,CAAC,EAAE;gBACJ,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,MAAM,CAAC;gBAC3C,KAAK,CAAC,EAAE,UAAU,CAAC;aACtB,CAAC;YACF,KAAK,CAAC,EAAE,UAAU,CAAC;SACtB,CAAC;KACL,CAAC;CACL;AAkBD,eAAO,MAAM,KAAK;uBAZS,KAAK;aAGF,KAAK;CASD,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { Variant } from './';
1
2
  import type { Icon } from '@lucide/svelte';
2
3
  export interface ToastSettings {
3
4
  message: string;
@@ -5,7 +6,7 @@ export interface ToastSettings {
5
6
  timeout?: number;
6
7
  hideDismiss?: boolean;
7
8
  icon?: typeof Icon;
8
- variant: 'info' | 'success' | 'warning' | 'error';
9
+ variant: Variant;
9
10
  }
10
11
  interface Toast extends ToastSettings {
11
12
  id: string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toasts.svelte.d.ts","sourceRoot":"","sources":["../src/lib/toasts.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,KAAM,SAAQ,aAAa;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;CAC7C;AASD,cAAM,UAAU;IACZ,MAAM,UAAuB;IAE7B,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,SAA0B;IAW1D,KAAK,CAAC,EAAE,EAAE,MAAM;IAOhB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa;IAiBvC,MAAM,CAAC,EAAE,EAAE,MAAM;IAMjB,QAAQ,CAAC,EAAE,EAAE,MAAM;IAMnB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,YAAY;CAKvB;AAED,2EAA2E;AAC3E,eAAO,MAAM,MAAM,YAAmB,CAAC"}
@@ -1,9 +1,9 @@
1
- import { pseudoRandomId } from '../../utils/functions';
1
+ import { pseudoRandomId } from './utils/functions';
2
2
  const TOAST_DEFAULTS = {
3
3
  message: 'Missing Toast Message',
4
4
  autohide: true,
5
5
  timeout: 3000,
6
- variant: 'info'
6
+ variant: 'primary'
7
7
  };
8
8
  class ToastStore {
9
9
  toasts = $state([]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ims360/svelte-ivory",
3
- "version": "0.4.21",
3
+ "version": "0.5.1",
4
4
  "keywords": [
5
5
  "svelte"
6
6
  ],
@@ -34,10 +34,6 @@
34
34
  "types": "./dist/components/table/index.d.ts",
35
35
  "svelte": "./dist/components/table/index.js"
36
36
  },
37
- "./components/toast": {
38
- "types": "./dist/components/toast/index.d.ts",
39
- "svelte": "./dist/components/toast/index.js"
40
- },
41
37
  "./components/inputs": {
42
38
  "types": "./dist/components/inputs/index.d.ts",
43
39
  "svelte": "./dist/components/inputs/index.js"
@@ -75,7 +71,7 @@
75
71
  "test:unit": "vitest"
76
72
  },
77
73
  "dependencies": {
78
- "@lucide/svelte": "^0.553.0",
74
+ "@lucide/svelte": "^1.8.0",
79
75
  "@tailwindcss/forms": "^0.5.11",
80
76
  "@tailwindcss/typography": "^0.5.19",
81
77
  "@tailwindcss/vite": "^4.2.1",
@@ -95,9 +91,9 @@
95
91
  "@testing-library/jest-dom": "^6.9.1",
96
92
  "@testing-library/svelte": "^5.3.1",
97
93
  "@testing-library/user-event": "^14.6.1",
98
- "@vitest/browser": "^4.0.18",
99
- "@vitest/coverage-v8": "^4.0.18",
100
- "@vitest/spy": "^4.0.18",
94
+ "@vitest/browser": "^4.1.4",
95
+ "@vitest/coverage-v8": "^4.1.4",
96
+ "@vitest/spy": "^4.1.4",
101
97
  "eslint": "^10.0.2",
102
98
  "eslint-config-prettier": "^10.1.8",
103
99
  "eslint-plugin-svelte": "^3.15.0",
@@ -110,13 +106,13 @@
110
106
  "svelte-check": "^4.4.4",
111
107
  "typescript": "^5.9.3",
112
108
  "typescript-eslint": "^8.56.1",
113
- "vite": "^7.3.2",
114
- "vitest": "^4.0.18",
109
+ "vite": "^7.0.0",
110
+ "vitest": "^4.1.4",
115
111
  "zod": "^4.3.6"
116
112
  },
117
113
  "peerDependencies": {
118
114
  "@skeletonlabs/skeleton": "^4.0.0",
119
- "@sveltejs/kit": "^2.49.5",
120
- "svelte": "^5.46.4"
115
+ "@sveltejs/kit": "^2.55.0",
116
+ "svelte": "^5.55.1"
121
117
  }
122
118
  }
@@ -1,9 +1,7 @@
1
1
  <script lang="ts" module>
2
- import { theme } from '$lib/theme.svelte';
3
2
  import type { IvoryComponent } from '$lib/types';
4
3
  import { merge } from '$lib/utils/functions';
5
4
  import { Check, type Icon as LucideIcon, Minus } from '@lucide/svelte';
6
- import clsx from 'clsx';
7
5
  import type { ClassValue } from 'svelte/elements';
8
6
  import { scale } from 'svelte/transition';
9
7
 
@@ -41,19 +39,16 @@
41
39
  innerClass,
42
40
  style
43
41
  }: { icon?: typeof LucideIcon; innerClass?: string; style?: string } = $derived.by(() => {
44
- const overwrittenClass =
45
- theme.current.checkbox?.class &&
46
- clsx(theme.current.checkbox?.class?.(!!checked, !!partial));
47
- if (!checked && !partial) return { innerClass: overwrittenClass ?? 'border-surface-500' };
42
+ if (!checked && !partial) return { innerClass: 'border-surface-500' };
48
43
  if (checked)
49
44
  return {
50
45
  icon: Check,
51
- innerClass: overwrittenClass ?? 'bg-primary-500 border-primary-500 text-surface-50'
46
+ innerClass: 'bg-primary-500 border-primary-500 text-surface-50'
52
47
  };
53
48
  if (partial)
54
49
  return {
55
50
  icon: Minus,
56
- innerClass: overwrittenClass ?? 'border-primary-700 text-primary-500'
51
+ innerClass: 'border-primary-700 text-primary-500'
57
52
  };
58
53
  return {};
59
54
  });
@@ -1,8 +1,8 @@
1
1
  <script lang="ts" module>
2
+ import { Toasts } from '$lib';
2
3
  import type { IvoryComponent } from '$lib/types';
3
4
  import { Copy } from '@lucide/svelte';
4
5
  import type { ClassValue } from 'svelte/elements';
5
- import { Toasts } from '../toast';
6
6
 
7
7
  export interface CopyToClipboardButtonProps extends IvoryComponent<HTMLButtonElement> {
8
8
  text: string;
@@ -27,7 +27,10 @@
27
27
  function add(files: File[]) {
28
28
  const value = rest.form.value();
29
29
  if (Array.isArray(value)) {
30
- rest.form.set([...value.filter((f) => !files.includes(f)), ...Array.from(files || [])]);
30
+ rest.form.set([
31
+ ...value.filter((f) => f && !files.includes(f)),
32
+ ...Array.from(files || [])
33
+ ]);
31
34
  } else {
32
35
  rest.form.set((files[0] ?? undefined) as File);
33
36
  }
@@ -81,7 +84,7 @@
81
84
  <div class="flex h-full w-full flex-col items-center justify-center gap-2 p-4">
82
85
  {#if files && files.length > 0}
83
86
  <div class="flex flex-row items-center gap-4">
84
- {#each files as file (file)}
87
+ {#each files.filter((f) => !!f) as file (file)}
85
88
  {@render fileRender(file)}
86
89
  {/each}
87
90
  </div>
@@ -20,7 +20,7 @@
20
20
  let popover = $state<Popover>();
21
21
  let target = $state<HTMLElement>();
22
22
 
23
- const value = $derived(props.form.value());
23
+ const value = $derived(props.form.value() ?? '');
24
24
  </script>
25
25
 
26
26
  <div bind:this={target} class={['bg-inherit ', clazz]}>
@@ -2,21 +2,13 @@
2
2
  import { theme } from '$lib/theme.svelte';
3
3
  import type { IvoryComponent } from '$lib/types';
4
4
  import { merge } from '$lib/utils/functions';
5
- import type { MouseEventHandler } from 'svelte/elements';
5
+ import type { EventHandler, MouseEventHandler } from 'svelte/elements';
6
6
 
7
- export interface DialogProps extends IvoryComponent<HTMLElement> {
8
- /** Gets called when the dialog requests to close (Escape, backdrop click) */
9
- onclose?: () => void;
10
- }
7
+ export type DialogProps = IvoryComponent<HTMLDialogElement>;
11
8
  </script>
12
9
 
13
10
  <script lang="ts">
14
- let {
15
- class: clazz,
16
- onclose: onclose, // This is the prop from the parent
17
- children,
18
- ...rest
19
- }: DialogProps = $props();
11
+ let { children, ...props }: DialogProps = $props();
20
12
 
21
13
  let dialog = $state<HTMLDialogElement>();
22
14
 
@@ -34,28 +26,35 @@
34
26
  currentlyOpen = false;
35
27
  };
36
28
 
37
- const handleBackdropClick: MouseEventHandler<HTMLElement> = (event) => {
29
+ const onclick: MouseEventHandler<HTMLDialogElement> = (event) => {
38
30
  if (event.target !== dialog) return;
39
- onclose?.();
31
+ if (props.onclick) props.onclick(event);
32
+ else close();
33
+ };
34
+
35
+ const onclose: EventHandler<Event, HTMLDialogElement> = (event) => {
36
+ props.onclose?.(event);
37
+ currentlyOpen = false;
40
38
  };
41
39
 
42
- const handleClose = () => {
43
- onclose?.();
40
+ const oncancel: EventHandler<Event, HTMLDialogElement> = (event) => {
41
+ if (props.oncancel) props.oncancel(event);
42
+ else props.onclose?.(event);
44
43
  currentlyOpen = false;
45
44
  };
46
45
  </script>
47
46
 
48
47
  <dialog
49
48
  bind:this={dialog}
50
- onclick={handleBackdropClick}
51
- oncancel={handleClose}
52
- onclose={handleClose}
49
+ {...props}
50
+ {oncancel}
51
+ {onclose}
52
+ {onclick}
53
53
  class={merge(
54
54
  'backdrop:bg-surface-800-200/30 h-full max-h-none w-screen max-w-full overflow-hidden bg-transparent',
55
55
  theme.current.dialog?.class,
56
- clazz
56
+ props.class
57
57
  )}
58
- {...rest}
59
58
  >
60
59
  {@render children?.()}
61
60
  </dialog>
@@ -1,20 +1,16 @@
1
1
  <script lang="ts" module>
2
+ import type { IvoryComponent } from '$lib/types';
2
3
  import { merge } from '$lib/utils/functions';
3
- import { X } from '@lucide/svelte';
4
4
  import type { Snippet } from 'svelte';
5
- import Heading from '../Heading.svelte';
6
- import { Dialog } from '../dialog';
5
+ import type { MouseEventHandler } from 'svelte/elements';
6
+ import { Dialog, type DialogProps } from '../dialog';
7
7
 
8
8
  export type DrawerPlacement = 'left' | 'right';
9
-
10
- export type DrawerProps = {
9
+ export type DrawerProps = IvoryComponent<HTMLDivElement> & {
11
10
  class?: string;
12
- title?: string | Snippet;
13
11
  children?: Snippet;
14
12
  placement?: DrawerPlacement;
15
- closeOnOutsideClick?: boolean;
16
- /** Overwrites entire content of the drawer */
17
- inner?: Snippet;
13
+ dialog?: DialogProps;
18
14
  };
19
15
  </script>
20
16
 
@@ -22,33 +18,35 @@
22
18
  let {
23
19
  class: clazz,
24
20
  children,
25
- title,
26
21
  placement = 'right',
27
- closeOnOutsideClick = true,
28
- inner,
29
- ...rest
22
+ dialog: dialogProps,
23
+ ...props
30
24
  }: DrawerProps = $props();
31
25
 
32
26
  let dialog = $state<Dialog>();
33
27
 
34
28
  export const close = () => dialog?.close();
35
-
36
29
  export const open = () => dialog?.open();
37
-
38
30
  export const isOpen = () => dialog?.isOpen();
39
-
40
31
  export const toggle = () => {
41
32
  if (isOpen()) close();
42
33
  else open();
43
34
  };
35
+
36
+ const onclick: MouseEventHandler<HTMLDivElement> = (e) => {
37
+ e.stopPropagation();
38
+ props.onclick?.(e);
39
+ };
44
40
  </script>
45
41
 
46
42
  <Dialog
47
43
  bind:this={dialog}
48
- onclose={() => {
49
- if (closeOnOutsideClick) close();
50
- }}
51
- class={['flex flex-row justify-start overflow-visible', placement === 'right' && 'justify-end']}
44
+ {...dialogProps}
45
+ class={merge(
46
+ 'flex flex-row justify-start overflow-visible',
47
+ placement === 'right' && 'justify-end',
48
+ dialogProps?.class
49
+ )}
52
50
  >
53
51
  <div
54
52
  data-placement={placement}
@@ -56,28 +54,10 @@
56
54
  'drawer bg-surface-50-950 flex h-full flex-col gap-4 p-4 transition-transform ease-in-out',
57
55
  clazz
58
56
  )}
59
- onclick={(e) => e.stopPropagation()}
60
- {...rest}
57
+ {...props}
58
+ {onclick}
61
59
  >
62
- {#if inner}
63
- {@render inner()}
64
- {:else}
65
- <div class="flex flex-row items-center justify-between gap-8">
66
- {#if title}
67
- <Heading class="flex grow flex-row items-center gap-4">
68
- {#if typeof title === 'function'}
69
- {@render title()}
70
- {:else}
71
- {title}
72
- {/if}
73
- </Heading>
74
- {/if}
75
- <button class="group ml-auto flex justify-end" type="button" onclick={close}>
76
- <X class="h-full w-auto transition-[stroke-width] group-hover:stroke-3" />
77
- </button>
78
- </div>
79
- {@render children?.()}
80
- {/if}
60
+ {@render children?.()}
81
61
  </div>
82
62
  </Dialog>
83
63
 
@@ -1,6 +1,5 @@
1
1
  export { Dialog, type DialogProps } from './dialog';
2
- export { default as Drawer } from './drawer/Drawer.svelte';
3
- export { default as Heading } from './Heading.svelte';
2
+ export { default as Drawer, type DrawerPlacement, type DrawerProps } from './drawer/Drawer.svelte';
4
3
  export { default as Modal, type ModalProps } from './modal/Modal.svelte';
5
4
  export {
6
5
  default as Popover,