fuma 2.1.0 → 2.1.3

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 (47) hide show
  1. package/dist/_doc/DocExample.svelte +122 -0
  2. package/dist/_doc/DocExample.svelte.d.ts +10 -0
  3. package/dist/_doc/DocProps.svelte +61 -0
  4. package/dist/_doc/DocProps.svelte.d.ts +13 -0
  5. package/dist/_doc/DocSection.svelte +22 -0
  6. package/dist/_doc/DocSection.svelte.d.ts +9 -0
  7. package/dist/_doc/highlight.d.ts +2 -0
  8. package/dist/_doc/highlight.js +18 -0
  9. package/dist/_doc/index.d.ts +4 -0
  10. package/dist/_doc/index.js +3 -0
  11. package/dist/_doc/parse-props.d.ts +2 -0
  12. package/dist/_doc/parse-props.js +253 -0
  13. package/dist/index.d.ts +5 -0
  14. package/dist/index.js +5 -0
  15. package/dist/input/InputBoolean.svelte +3 -6
  16. package/dist/input/InputRadio.svelte +1 -1
  17. package/dist/input/InputSelectNative.svelte +1 -1
  18. package/dist/input/InputTextarea.svelte +1 -2
  19. package/dist/input/Issues.svelte +3 -4
  20. package/dist/input/Issues.svelte.d.ts +2 -2
  21. package/dist/popover/popover.svelte.js +0 -8
  22. package/dist/remote/index.d.ts +1 -0
  23. package/dist/remote/index.js +1 -0
  24. package/dist/remote/useForm.js +4 -1
  25. package/dist/search/Spans.svelte +2 -1
  26. package/dist/state/param.svelte.d.ts +6 -7
  27. package/dist/state/param.svelte.js +16 -18
  28. package/dist/ui/drawer/drawerFly.js +1 -1
  29. package/dist/ui/menu/DropDownMenu.svelte +3 -17
  30. package/dist/ui/menu/DropDownMenu.svelte.d.ts +0 -3
  31. package/dist/ui/range/RangePicker.svelte +1 -2
  32. package/dist/ui/table/Table.svelte +3 -6
  33. package/dist/ui/table/Table.svelte.d.ts +2 -3
  34. package/dist/ui/table/TableFieldsEdition.svelte +3 -2
  35. package/dist/ui/table/TableViewSelect.svelte +5 -13
  36. package/dist/ui/table/TableViewSelect.svelte.d.ts +0 -5
  37. package/dist/ui/table/cell/TableCellArray.svelte +1 -1
  38. package/dist/ui/table/field.d.ts +7 -7
  39. package/dist/ui/table/head/TableHeadDate.svelte +1 -5
  40. package/dist/ui/table/head/TableHeadNumber.svelte +0 -1
  41. package/dist/ui/table/head/TableHeadSelect.svelte +2 -2
  42. package/dist/validation/zod.js +2 -1
  43. package/package.json +16 -33
  44. package/dist/ui/table/type.d.ts +0 -2
  45. package/dist/ui/table/type.js +0 -1
  46. /package/dist/{data.d.ts → _doc/data.d.ts} +0 -0
  47. /package/dist/{data.js → _doc/data.js} +0 -0
@@ -75,15 +75,9 @@ export function usePopover({ mode = 'auto', placement = 'bottom-start', listenCl
75
75
  popover: mode,
76
76
  [createAttachmentKey()]: (node) => {
77
77
  popover = node;
78
- // biome-ignore lint/suspicious/noTsIgnore: await for a svelte-check update
79
- // @ts-ignore
80
78
  popover.style.positionAnchor = anchorName;
81
- // biome-ignore lint/suspicious/noTsIgnore: await for a svelte-check update
82
- // @ts-ignore
83
79
  popover.style.positionArea = placements[placement];
84
80
  popover.style.inset = 'auto';
85
- // biome-ignore lint/suspicious/noTsIgnore: await for a svelte-check update
86
- // @ts-ignore
87
81
  popover.style.positionTry = 'flip-x, flip-y';
88
82
  popover.style.position = 'relative';
89
83
  return attachPopoverListeners(node);
@@ -91,8 +85,6 @@ export function usePopover({ mode = 'auto', placement = 'bottom-start', listenCl
91
85
  },
92
86
  trigger: {
93
87
  [createAttachmentKey()]: (node) => {
94
- // biome-ignore lint/suspicious/noTsIgnore: await for a svelte-check update
95
- // @ts-ignore
96
88
  node.style.anchorName = anchorName;
97
89
  return attachTriggerListeners(node);
98
90
  }
@@ -0,0 +1 @@
1
+ export * from './useForm.ts';
@@ -0,0 +1 @@
1
+ export * from './useForm.ts';
@@ -13,7 +13,10 @@ export function useForm(remoteForm, schema, debounceMs = 1000) {
13
13
  target.type === 'checkbox' ||
14
14
  target.type === 'radio' ||
15
15
  target.tagName === 'SELECT';
16
- instantValidation ? remoteForm.validate() : debouncedValidate();
16
+ if (instantValidation)
17
+ remoteForm.validate();
18
+ else
19
+ debouncedValidate();
17
20
  }
18
21
  });
19
22
  };
@@ -4,7 +4,8 @@
4
4
  let { spans }: { spans: SearchQueryResultSpan[] } = $props()
5
5
  </script>
6
6
 
7
- {#each spans as { value, isMatch }}
7
+ {#each spans as span (span)}
8
+ {@const { isMatch, value } = span}
8
9
  <span
9
10
  class={isMatch ? 'rounded-xs text-secondary' : ''}
10
11
  class:ml-px={value.startsWith(' ')}
@@ -1,18 +1,17 @@
1
+ import type { ResolvedPathname } from '$app/types';
1
2
  export declare const param: {
2
3
  readonly with: (params: Record<string, string | number>, ...keysToRemove: string[]) => string;
3
4
  readonly without: (...keys: string[]) => string;
4
5
  readonly toggle: (params: Record<string, string>, ...keysToRemove: string[]) => string;
5
- readonly has: (key: string) => boolean;
6
+ readonly has: (key: string, value?: string) => boolean;
6
7
  readonly get: (key: string) => string | null;
7
- readonly hasValue: (key: string, value: string) => boolean;
8
8
  readonly keys: () => URLSearchParamsIterator<string>;
9
9
  };
10
10
  export declare const urlParam: {
11
- with: (params: Record<string, string | number>, ...keysToRemove: string[]) => string;
12
- without: (...args: string[]) => string;
13
- toggle: (params: Record<string, string>, ...keysToRemove: string[]) => string;
14
- has: (key: string) => boolean;
11
+ with: (params: Record<string, string | number>, ...keysToRemove: string[]) => ResolvedPathname;
12
+ without: (...args: string[]) => ResolvedPathname;
13
+ toggle: (params: Record<string, string>, ...keysToRemove: string[]) => ResolvedPathname;
14
+ has: (key: string, value?: string) => boolean;
15
15
  get: (key: string) => string | null;
16
- hasValue: (key: string, value: string) => boolean;
17
16
  keys: () => URLSearchParamsIterator<string>;
18
17
  };
@@ -1,56 +1,54 @@
1
1
  import { page } from '$app/state';
2
+ import { SvelteURLSearchParams } from 'svelte/reactivity';
2
3
  export const param = {
3
4
  get with() {
4
5
  return (params, ...keysToRemove) => {
5
- const url = new URL(page.url);
6
+ const searchParams = new SvelteURLSearchParams(page.url.searchParams);
6
7
  Object.entries(params).forEach(([key, value]) => {
7
- url.searchParams.set(key, String(value));
8
+ searchParams.set(key, String(value));
8
9
  });
9
10
  keysToRemove.forEach((key) => {
10
- url.searchParams.delete(key);
11
+ searchParams.delete(key);
11
12
  });
12
- return url.search;
13
+ return searchParams.toString();
13
14
  };
14
15
  },
15
16
  get without() {
16
17
  return (...keys) => {
17
- const url = new URL(page.url);
18
+ const searchParams = new SvelteURLSearchParams(page.url.searchParams);
18
19
  keys.forEach((key) => {
19
- url.searchParams.delete(key);
20
+ searchParams.delete(key);
20
21
  });
21
- return url.search;
22
+ return searchParams.toString();
22
23
  };
23
24
  },
24
25
  get toggle() {
25
26
  return (params, ...keysToRemove) => {
26
- const url = new URL(page.url);
27
+ const searchParams = new SvelteURLSearchParams(page.url.searchParams);
27
28
  Object.entries(params).forEach(([key, value]) => {
28
- if (url.searchParams.get(key) === value)
29
- url.searchParams.delete(key);
29
+ if (searchParams.get(key) === value)
30
+ searchParams.delete(key);
30
31
  else
31
- url.searchParams.set(key, value);
32
+ searchParams.set(key, value);
32
33
  });
33
34
  keysToRemove.forEach((key) => {
34
- url.searchParams.delete(key);
35
+ searchParams.delete(key);
35
36
  });
36
- return url.search;
37
+ return searchParams.toString();
37
38
  };
38
39
  },
39
40
  get has() {
40
- return (key) => page.url.searchParams.has(key);
41
+ return (key, value) => page.url.searchParams.has(key, value);
41
42
  },
42
43
  get get() {
43
44
  return (key) => page.url.searchParams.get(key);
44
45
  },
45
- get hasValue() {
46
- return (key, value) => page.url.searchParams.get(key) === value;
47
- },
48
46
  get keys() {
49
47
  return () => page.url.searchParams.keys();
50
48
  }
51
49
  };
52
50
  function addPathname(fn) {
53
- return (...args) => page.url.pathname + fn(...args);
51
+ return (...args) => (page.url.pathname + '?' + fn(...args));
54
52
  }
55
53
  export const urlParam = {
56
54
  ...param,
@@ -13,7 +13,7 @@ export function drawerFly(node, { delay = 0, duration = 400, easing = cubicOut,
13
13
  css: (t, u) => `
14
14
  transform: ${transform} translate(${(1 - t) * xValue}${xUnit}, ${(1 - t) * yValue}${yUnit});
15
15
  opacity: ${target_opacity - od * u}`,
16
- tick: (t, _u) => {
16
+ tick: (t) => {
17
17
  onTransition({ x: t * xValue, y: t * yValue });
18
18
  }
19
19
  };
@@ -2,32 +2,20 @@
2
2
  import { ChevronsUpDownIcon } from '@lucide/svelte'
3
3
  import type { Snippet } from 'svelte'
4
4
  import { DropDown } from './index.js'
5
- import { type Options, parseOptions } from '../../utils/options.js'
6
5
  import type { TippyProps } from '../../utils/tippy.js'
7
6
 
8
7
  let {
9
- options: optionsProp,
10
8
  tippyProps = {},
11
- onSelect,
12
9
  children: childrenProp
13
10
  }: {
14
- options: Options
15
11
  tippyProps?: Partial<TippyProps>
16
- onSelect?: (value: string) => void
17
12
  children?: Snippet
18
13
  } = $props()
19
-
20
- let options = $derived(parseOptions(optionsProp))
21
- let trigger = $state<HTMLElement>()
22
14
  </script>
23
15
 
24
16
  <DropDown {tippyProps}>
25
17
  {#snippet activator()}
26
- <button
27
- bind:this={trigger}
28
- type="button"
29
- class="flex h-12 items-center gap-2 rounded-lg border pr-2 pl-4"
30
- >
18
+ <button type="button" class="flex h-12 items-center gap-2 rounded-lg border pr-2 pl-4">
31
19
  {#if childrenProp}
32
20
  {@render childrenProp()}
33
21
  {:else}
@@ -37,10 +25,9 @@
37
25
  </button>
38
26
  {/snippet}
39
27
 
40
- {#snippet children({ hide })}
41
- <span>TODO: use Command or REMOVE THIS COMPONENT</span>
28
+ <span>TODO: use Command or REMOVE THIS COMPONENT</span>
42
29
 
43
- <!-- <SelectorList
30
+ <!-- <SelectorList
44
31
  {trigger}
45
32
  items={options.map((opt) => ({ id: opt.value, ...opt }))}
46
33
  onSelect={(index) => {
@@ -56,5 +43,4 @@
56
43
  <span class="pr-4 whitespace-nowrap">{item.label}</span>
57
44
  {/snippet}
58
45
  </SelectorList> -->
59
- {/snippet}
60
46
  </DropDown>
@@ -1,10 +1,7 @@
1
1
  import type { Snippet } from 'svelte';
2
- import { type Options } from '../../utils/options.js';
3
2
  import type { TippyProps } from '../../utils/tippy.js';
4
3
  type $$ComponentProps = {
5
- options: Options;
6
4
  tippyProps?: Partial<TippyProps>;
7
- onSelect?: (value: string) => void;
8
5
  children?: Snippet;
9
6
  };
10
7
  declare const DropDownMenu: import("svelte").Component<$$ComponentProps, {}, "">;
@@ -49,8 +49,7 @@
49
49
  startDate: range?.start ? dayjs(range.start).toDate() : undefined,
50
50
  endDate: range?.end ? dayjs(range.end).toDate() : undefined,
51
51
  setup: (picker: Litepicker) => {
52
- // biome-ignore lint/suspicious/noExplicitAny: Litepicker external type
53
- picker.on('selected', (date1: any, date2: any) => {
52
+ picker.on('selected', (date1: { dateInstance: Date }, date2: { dateInstance: Date }) => {
54
53
  range = {
55
54
  start: new Date(
56
55
  `${getAbsoluteDate(date1.dateInstance)}T${getAbsoluteTime(range?.start)}`
@@ -1,6 +1,6 @@
1
1
  <script lang="ts" generics="Item extends ItemBase">
2
+ import type { Snippet } from 'svelte'
2
3
  import { afterNavigate } from '$app/navigation'
3
-
4
4
  import {
5
5
  context,
6
6
  createKeys,
@@ -10,7 +10,6 @@
10
10
  type TableField,
11
11
  TableHead
12
12
  } from './index.js'
13
- import type { SnippetLike } from './type.js'
14
13
 
15
14
  let {
16
15
  key = 'table',
@@ -22,20 +21,18 @@
22
21
  classRow,
23
22
  hideBody = false,
24
23
  onCreateField,
25
- onclick,
26
- screenPadding
24
+ onclick
27
25
  }: {
28
26
  key?: string
29
27
  fields: TableField<Item>[]
30
28
  items: Item[]
31
- actions?: SnippetLike<[Item]>
29
+ actions?: Snippet<[Item]>
32
30
  placholder?: string
33
31
  class?: string
34
32
  classRow?: string
35
33
  hideBody?: boolean
36
34
  onCreateField?: () => void
37
35
  onclick?: (item?: Item) => void
38
- screenPadding?: number
39
36
  } = $props()
40
37
 
41
38
  $effect(() => {
@@ -1,18 +1,17 @@
1
+ import type { Snippet } from 'svelte';
1
2
  import { type ItemBase, type TableField } from './index.js';
2
- import type { SnippetLike } from './type.js';
3
3
  declare function $$render<Item extends ItemBase>(): {
4
4
  props: {
5
5
  key?: string;
6
6
  fields: TableField<Item>[];
7
7
  items: Item[];
8
- actions?: SnippetLike<[Item]>;
8
+ actions?: Snippet<[Item]>;
9
9
  placholder?: string;
10
10
  class?: string;
11
11
  classRow?: string;
12
12
  hideBody?: boolean;
13
13
  onCreateField?: () => void;
14
14
  onclick?: (item?: Item) => void;
15
- screenPadding?: number;
16
15
  };
17
16
  exports: {};
18
17
  bindings: "";
@@ -16,6 +16,7 @@
16
16
  import { context } from './context.js'
17
17
  import type { ItemBase, TableField } from './index.js'
18
18
  import { jsonParse } from '../../utils/jsonParse.js'
19
+ import type { ResolvedPathname } from '$app/types'
19
20
 
20
21
  let {
21
22
  fields,
@@ -30,14 +31,14 @@
30
31
  let { KEY_FIELDS_VISIBLE, KEY_FIELDS_HIDDEN, KEY_FIELDS_ORDER } = $derived(context.get(key))
31
32
 
32
33
  function getFieldHref(field: TableField<Item>) {
33
- if (field.locked) return
34
+ if (field.locked) return '' as ResolvedPathname
34
35
  const url = toggleParam(field.visible ? KEY_FIELDS_HIDDEN : KEY_FIELDS_VISIBLE, field.key)
35
36
  if (url.searchParams.has(field.key)) {
36
37
  url.searchParams.delete(field.key)
37
38
  url.searchParams.delete('skip')
38
39
  url.searchParams.delete('take')
39
40
  }
40
- return url.pathname + url.search
41
+ return (url.pathname + url.search) as ResolvedPathname
41
42
  }
42
43
 
43
44
  function toggleParam(paramKey: string, fieldKey: string): URL {
@@ -1,10 +1,10 @@
1
1
  <script lang="ts">
2
2
  import { ChevronDownIcon, PlusIcon, SaveIcon } from '@lucide/svelte'
3
- import { enhance } from '$app/forms'
4
3
  import { page } from '$app/state'
5
4
 
6
5
  import { Dialog } from '../dialog/index.js'
7
6
  import { DropDown } from '../menu/index.js'
7
+ import { SvelteURLSearchParams } from 'svelte/reactivity'
8
8
 
9
9
  // import { InputText } from '../input/index.js';
10
10
  // import { useForm } from '../../validation/form.jss';
@@ -16,19 +16,9 @@
16
16
  }
17
17
 
18
18
  let {
19
- key,
20
- views,
21
- action = '',
22
- actionCreate = '?/view_create',
23
- actionUpdate = '?/view_update',
24
- actionDelete = '?/view_delete'
19
+ views
25
20
  }: {
26
- key: string
27
21
  views: View[]
28
- action?: string
29
- actionCreate?: string
30
- actionUpdate?: string
31
- actionDelete?: string
32
22
  } = $props()
33
23
 
34
24
  let dialog = $state<HTMLDialogElement>()
@@ -39,7 +29,7 @@
39
29
  // });
40
30
 
41
31
  let query = $derived.by(() => {
42
- const searchParam = new URLSearchParams(page.url.searchParams)
32
+ const searchParam = new SvelteURLSearchParams(page.url.searchParams)
43
33
  searchParam.delete('skip')
44
34
  searchParam.delete('take')
45
35
  return searchParam.toString()
@@ -49,6 +39,8 @@
49
39
  let isNewView = $derived(!!query && !selectedView)
50
40
  </script>
51
41
 
42
+ /* eslint-disable @typescript-eslint/no-unused-vars */ /* eslint-disable
43
+ @typescript-eslint/no-unused-vars */
52
44
  <DropDown>
53
45
  {#snippet activator()}
54
46
  <button
@@ -4,12 +4,7 @@ type View = {
4
4
  query: string;
5
5
  };
6
6
  type $$ComponentProps = {
7
- key: string;
8
7
  views: View[];
9
- action?: string;
10
- actionCreate?: string;
11
- actionUpdate?: string;
12
- actionDelete?: string;
13
8
  };
14
9
  declare const TableViewSelect: import("svelte").Component<$$ComponentProps, {}, "">;
15
10
  type TableViewSelect = ReturnType<typeof TableViewSelect>;
@@ -3,7 +3,7 @@
3
3
  </script>
4
4
 
5
5
  <td>
6
- {#each cell as content}
6
+ {#each cell as content, index (index)}
7
7
  <span class="mr-1 badge whitespace-nowrap">
8
8
  {content}
9
9
  </span>
@@ -1,5 +1,5 @@
1
+ import type { Snippet } from 'svelte';
1
2
  import type { Options } from '../../utils/options.js';
2
- import type { SnippetLike } from './type.js';
3
3
  export type Primitive = string | number | boolean | Date;
4
4
  export type ItemBase = {
5
5
  id: string | number;
@@ -15,8 +15,8 @@ type TableFieldCommon<Item extends ItemBase> = {
15
15
  sortable?: boolean;
16
16
  /** Internal usage */
17
17
  _visible?: boolean;
18
- cell: ((item: Item) => SnippetLike<[Item]>) | ((item: Item) => null | undefined | Primitive | Primitive[]);
19
- head?: SnippetLike<[Item]>;
18
+ cell: ((item: Item) => Snippet<[Item]>) | ((item: Item) => null | undefined | Primitive | Primitive[]);
19
+ head?: Snippet<[Item]>;
20
20
  };
21
21
  type TableFieldPrimitve = {
22
22
  type?: 'string' | 'textarea' | 'number' | 'boolean' | 'date';
@@ -37,8 +37,8 @@ export declare function syncFieldsWithParams<Item extends ItemBase>(tablekey: st
37
37
  locked?: boolean;
38
38
  visible?: boolean;
39
39
  sortable?: boolean;
40
- cell: ((item: Item) => SnippetLike<[Item]>) | ((item: Item) => null | undefined | Primitive | Primitive[]);
41
- head?: SnippetLike<[Item]> | undefined;
40
+ cell: ((item: Item) => Snippet<[Item]>) | ((item: Item) => null | undefined | Primitive | Primitive[]);
41
+ head?: Snippet<[Item]> | undefined;
42
42
  type?: "string" | "textarea" | "number" | "boolean" | "date";
43
43
  } | {
44
44
  _visible: boolean;
@@ -49,8 +49,8 @@ export declare function syncFieldsWithParams<Item extends ItemBase>(tablekey: st
49
49
  locked?: boolean;
50
50
  visible?: boolean;
51
51
  sortable?: boolean;
52
- cell: ((item: Item) => SnippetLike<[Item]>) | ((item: Item) => null | undefined | Primitive | Primitive[]);
53
- head?: SnippetLike<[Item]> | undefined;
52
+ cell: ((item: Item) => Snippet<[Item]>) | ((item: Item) => null | undefined | Primitive | Primitive[]);
53
+ head?: Snippet<[Item]> | undefined;
54
54
  type: "select" | "multiselect";
55
55
  })[];
56
56
  export {};
@@ -19,11 +19,7 @@
19
19
  start?: string
20
20
  end?: string
21
21
  order?: 'asc' | 'desc'
22
- }>(
23
- // svelte-ignore state_referenced_locally
24
- page.url.searchParams.get(field.key),
25
- {}
26
- )
22
+ }>(page.url.searchParams.get((() => field.key)()), {})
27
23
 
28
24
  let range: RangeAsDate = $state({
29
25
  start: initialValue.start ? new Date(initialValue.start) : null,
@@ -23,7 +23,6 @@
23
23
  .default({})
24
24
 
25
25
  let { min, max, order } = $derived(paramModel.parse(page.url.searchParams.get(field.key)))
26
- let isNegatifRange = $derived(min !== undefined && max !== undefined && max < min)
27
26
 
28
27
  const updateUrl = debounce(() => {
29
28
  const query: Record<string, string | number> = {}
@@ -61,7 +61,7 @@
61
61
 
62
62
  {#if optionsActive.length}
63
63
  <div class="flex flex-wrap gap-1">
64
- {#each optionsActive as option}
64
+ {#each optionsActive as option (option.value)}
65
65
  <span class="badge badge-xs text-[0.7rem] font-normal text-white badge-primary">
66
66
  {#if option.icon}
67
67
  <option.icon size={10} class="-translate-x-1 fill-white/80" />
@@ -75,7 +75,7 @@
75
75
  {/snippet}
76
76
 
77
77
  <div class="flex flex-col gap-1">
78
- {#each options as { isActive, icon: Icon, label, value }}
78
+ {#each options as { isActive, icon: Icon, label, value } (value)}
79
79
  <a
80
80
  href={getHref(value)}
81
81
  class="menu-item px-3 py-2"
@@ -15,7 +15,8 @@ export const zodCoerceJson = z.string().transform((str, ctx) => {
15
15
  try {
16
16
  return JSON.parse(str);
17
17
  }
18
- catch (_err) {
18
+ catch (e) {
19
+ console.error(e);
19
20
  ctx.addIssue({ code: 'custom', message: 'Invalid JSON' });
20
21
  return z.NEVER;
21
22
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fuma",
3
- "version": "2.1.0",
3
+ "version": "2.1.3",
4
4
  "description": "My fullstack material build with sveltekit, daisyui, zod, prisma, lucia",
5
5
  "author": {
6
6
  "name": "Jonas Voisard",
@@ -14,16 +14,15 @@
14
14
  "prepublishOnly": "npm run package",
15
15
  "sync": "svelte-kit sync",
16
16
  "svelte-check": "svelte-check --tsconfig ./tsconfig.json",
17
- "check": "run-p sync svelte-check lint format",
17
+ "check": "run-p sync svelte-check lint",
18
18
  "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
19
19
  "test": "vitest",
20
- "format": "prettier . --write",
21
- "lint": "biome lint --write",
20
+ "format": "prettier --write .",
21
+ "lint": "prettier --check . && eslint .",
22
22
  "migrate": "prisma migrate dev",
23
23
  "generate": "prisma generate",
24
24
  "studio": "prisma studio",
25
- "seed": "prisma db seed",
26
- "biome": "biome"
25
+ "seed": "prisma db seed"
27
26
  },
28
27
  "svelte": "./dist/index.js",
29
28
  "types": "./dist/index.d.ts",
@@ -34,27 +33,6 @@
34
33
  "svelte": "./dist/index.js",
35
34
  "default": "./dist/index.js"
36
35
  },
37
- "./ui": {
38
- "types": "./dist/ui/index.d.ts",
39
- "svelte": "./dist/ui/index.js",
40
- "default": "./dist/ui/index.js"
41
- },
42
- "./utils": {
43
- "types": "./dist/utils/index.d.ts",
44
- "default": "./dist/utils/index.js"
45
- },
46
- "./state": {
47
- "types": "./dist/state/index.d.ts",
48
- "default": "./dist/state/index.js"
49
- },
50
- "./validation": {
51
- "types": "./dist/validation/index.d.ts",
52
- "default": "./dist/validation/index.js"
53
- },
54
- "./action": {
55
- "types": "./dist/action/index.d.ts",
56
- "default": "./dist/action/index.js"
57
- },
58
36
  "./server": {
59
37
  "types": "./dist/server/index.d.ts",
60
38
  "default": "./dist/server/index.js"
@@ -72,29 +50,34 @@
72
50
  },
73
51
  "devDependencies": {
74
52
  "@biomejs/biome": "2.4.2",
53
+ "@eslint/compat": "^2.0.5",
75
54
  "@sveltejs/adapter-auto": "^7.0.1",
76
- "@sveltejs/kit": "^2.57.1",
55
+ "@sveltejs/kit": "^2.58.0",
77
56
  "@sveltejs/package": "^2.5.7",
78
57
  "@sveltejs/vite-plugin-svelte": "^6.2.4",
79
58
  "@tailwindcss/vite": "^4.2.4",
80
59
  "@types/node": "^25.6.0",
81
60
  "daisyui": "^5.5.19",
61
+ "eslint": "^9.39.4",
62
+ "eslint-config-prettier": "^10.1.8",
63
+ "eslint-plugin-svelte": "^3.17.1",
82
64
  "npm-run-all": "^4.1.5",
83
65
  "prettier": "^3.8.3",
84
66
  "prettier-plugin-svelte": "^3.5.1",
85
- "prettier-plugin-tailwindcss": "^0.7.2",
67
+ "prettier-plugin-tailwindcss": "^0.7.4",
86
68
  "publint": "^0.1.16",
87
69
  "shiki": "^4.0.2",
88
70
  "svelte-check": "^4.4.6",
89
71
  "tailwindcss": "^4.2.4",
90
72
  "typescript": "^5.9.3",
73
+ "typescript-eslint": "^8.59.1",
91
74
  "vite": "^7.3.2",
92
75
  "vite-plugin-devtools-json": "^1.0.0",
93
76
  "vitest": "^4.1.5"
94
77
  },
95
78
  "dependencies": {
96
79
  "@faker-js/faker": "^10.4.0",
97
- "@lucide/svelte": "^1.8.0",
80
+ "@lucide/svelte": "^1.14.0",
98
81
  "dayjs": "^1.11.20",
99
82
  "debounce": "^3.0.0",
100
83
  "devalue": "^5.7.1",
@@ -103,10 +86,10 @@
103
86
  "litepicker": "^2.0.12",
104
87
  "perod": "^1.4.1",
105
88
  "runed": "^0.37.1",
106
- "svelte": "^5.55.4",
89
+ "svelte": "^5.55.5",
107
90
  "svelte-easy-crop": "^5.0.1",
108
- "svelte-sonner": "^1.1.0",
91
+ "svelte-sonner": "^1.1.1",
109
92
  "tippy.js": "^6.3.7",
110
- "zod": "^4.3.6"
93
+ "zod": "^4.4.1"
111
94
  }
112
95
  }
@@ -1,2 +0,0 @@
1
- import type { Snippet } from 'svelte';
2
- export type SnippetLike<Args extends unknown[] = unknown[]> = Snippet<Args> | ((...args: Args) => ReturnType<Snippet>);
@@ -1 +0,0 @@
1
- export {};
File without changes
File without changes