@webamoki/web-svelte 0.7.4 → 1.0.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.
Files changed (120) hide show
  1. package/README.md +83 -3
  2. package/dist/components/form/Button.svelte +24 -23
  3. package/dist/components/form/Button.svelte.d.ts +2 -2
  4. package/dist/components/form/Errors.svelte +13 -13
  5. package/dist/components/form/FieldWrapper.svelte +57 -55
  6. package/dist/components/form/FieldWrapper.svelte.d.ts +4 -4
  7. package/dist/components/form/Form.svelte +18 -14
  8. package/dist/components/form/Form.svelte.d.ts +31 -22
  9. package/dist/components/form/IconInputWrapper.svelte +30 -29
  10. package/dist/components/form/IconInputWrapper.svelte.d.ts +7 -7
  11. package/dist/components/form/fields/ChoiceField.svelte +45 -43
  12. package/dist/components/form/fields/ChoiceField.svelte.d.ts +28 -23
  13. package/dist/components/form/fields/ChoiceMultiField.svelte +44 -42
  14. package/dist/components/form/fields/ChoiceMultiField.svelte.d.ts +28 -23
  15. package/dist/components/form/fields/DateField.svelte +42 -40
  16. package/dist/components/form/fields/DateField.svelte.d.ts +29 -22
  17. package/dist/components/form/fields/HexColorField.svelte +21 -19
  18. package/dist/components/form/fields/HexColorField.svelte.d.ts +24 -19
  19. package/dist/components/form/fields/MessageField.svelte +39 -60
  20. package/dist/components/form/fields/MessageField.svelte.d.ts +33 -24
  21. package/dist/components/form/fields/NumberField.svelte +38 -36
  22. package/dist/components/form/fields/NumberField.svelte.d.ts +32 -23
  23. package/dist/components/form/fields/PasswordField.svelte +45 -39
  24. package/dist/components/form/fields/PasswordField.svelte.d.ts +28 -21
  25. package/dist/components/form/fields/SelectField.svelte +84 -79
  26. package/dist/components/form/fields/SelectField.svelte.d.ts +39 -26
  27. package/dist/components/form/fields/SelectMultiField.svelte +90 -85
  28. package/dist/components/form/fields/SelectMultiField.svelte.d.ts +38 -25
  29. package/dist/components/form/fields/TextField.svelte +31 -29
  30. package/dist/components/form/fields/TextField.svelte.d.ts +32 -23
  31. package/dist/components/form/fields/TextFieldNullable.svelte +49 -47
  32. package/dist/components/form/fields/TextFieldNullable.svelte.d.ts +32 -23
  33. package/dist/components/form/fields/TimeField.svelte +66 -64
  34. package/dist/components/form/fields/TimeField.svelte.d.ts +33 -24
  35. package/dist/components/form/fields/WeekdayChoiceField.svelte +37 -35
  36. package/dist/components/form/fields/WeekdayChoiceField.svelte.d.ts +27 -22
  37. package/dist/components/form/fields/WeekdayChoiceMultiField.svelte +37 -35
  38. package/dist/components/form/fields/WeekdayChoiceMultiField.svelte.d.ts +27 -22
  39. package/dist/components/showcase/CodeBlock.svelte +41 -41
  40. package/dist/components/showcase/Container.svelte +7 -7
  41. package/dist/components/showcase/Preview.svelte +4 -4
  42. package/dist/components/showcase/Sidebar.svelte +4 -4
  43. package/dist/components/showcase/SidebarLink.svelte +3 -3
  44. package/dist/components/ui/choice/Choice.svelte +25 -22
  45. package/dist/components/ui/choice/Choice.svelte.d.ts +7 -7
  46. package/dist/components/ui/choice/ChoiceInternal.svelte +73 -69
  47. package/dist/components/ui/choice/ChoiceInternal.svelte.d.ts +9 -9
  48. package/dist/components/ui/choice/ChoiceMulti.svelte +59 -53
  49. package/dist/components/ui/choice/ChoiceMulti.svelte.d.ts +7 -7
  50. package/dist/components/ui/choice/WeekdayChoice.svelte +22 -21
  51. package/dist/components/ui/choice/WeekdayChoice.svelte.d.ts +6 -6
  52. package/dist/components/ui/choice/WeekdayChoiceMulti.svelte +24 -22
  53. package/dist/components/ui/choice/WeekdayChoiceMulti.svelte.d.ts +6 -6
  54. package/dist/components/ui/context-menu/ContextMenu.svelte +51 -50
  55. package/dist/components/ui/context-menu/ContextMenu.svelte.d.ts +1 -1
  56. package/dist/components/ui/context-menu/ContextMenuContent.svelte +92 -91
  57. package/dist/components/ui/context-menu/ContextMenuItem.svelte +26 -25
  58. package/dist/components/ui/context-menu/ContextMenuItem.svelte.d.ts +1 -1
  59. package/dist/components/ui/context-menu/ContextMenuTrigger.svelte +16 -15
  60. package/dist/components/ui/context-menu/context-menu-state.svelte.d.ts +3 -3
  61. package/dist/components/ui/context-menu/context-menu-state.svelte.js +15 -15
  62. package/dist/components/ui/drag-drop/Draggable.svelte +73 -72
  63. package/dist/components/ui/drag-drop/Draggable.svelte.d.ts +2 -2
  64. package/dist/components/ui/drag-drop/Dropzone.svelte +56 -54
  65. package/dist/components/ui/drag-drop/Dropzone.svelte.d.ts +3 -3
  66. package/dist/components/ui/drag-drop/drag-manager.d.ts +2 -2
  67. package/dist/components/ui/drag-drop/drag-manager.js +9 -9
  68. package/dist/components/ui/index.d.ts +2 -2
  69. package/dist/components/ui/index.js +5 -5
  70. package/dist/components/ui/search/SearchBar.svelte +18 -18
  71. package/dist/components/ui/search/SearchBar.svelte.d.ts +2 -2
  72. package/dist/highlight.js +2 -2
  73. package/dist/server/form-handler.d.ts +12 -12
  74. package/dist/server/form-handler.js +17 -17
  75. package/dist/server/form-processor.d.ts +1 -1
  76. package/dist/server/form-processor.js +0 -1
  77. package/dist/shadcn/components/ui/button/button.svelte +72 -71
  78. package/dist/shadcn/components/ui/button/button.svelte.d.ts +23 -23
  79. package/dist/shadcn/components/ui/button/index.d.ts +1 -1
  80. package/dist/shadcn/components/ui/button/index.js +2 -2
  81. package/dist/shadcn/components/ui/input/index.d.ts +1 -1
  82. package/dist/shadcn/components/ui/input/index.js +2 -2
  83. package/dist/shadcn/components/ui/input/input.svelte +35 -32
  84. package/dist/shadcn/components/ui/input/input.svelte.d.ts +2 -2
  85. package/dist/shadcn/components/ui/select/index.d.ts +6 -6
  86. package/dist/shadcn/components/ui/select/index.js +7 -7
  87. package/dist/shadcn/components/ui/select/select-content.svelte +35 -34
  88. package/dist/shadcn/components/ui/select/select-content.svelte.d.ts +1 -1
  89. package/dist/shadcn/components/ui/select/select-group-heading.svelte +15 -14
  90. package/dist/shadcn/components/ui/select/select-group.svelte +2 -2
  91. package/dist/shadcn/components/ui/select/select-item.svelte +31 -31
  92. package/dist/shadcn/components/ui/select/select-label.svelte +14 -13
  93. package/dist/shadcn/components/ui/select/select-label.svelte.d.ts +1 -1
  94. package/dist/shadcn/components/ui/select/select-scroll-down-button.svelte +13 -13
  95. package/dist/shadcn/components/ui/select/select-scroll-up-button.svelte +13 -13
  96. package/dist/shadcn/components/ui/select/select-separator.svelte +13 -12
  97. package/dist/shadcn/components/ui/select/select-trigger.svelte +26 -26
  98. package/dist/shadcn/components/ui/select/select-trigger.svelte.d.ts +2 -2
  99. package/dist/shadcn/components/ui/separator/separator.svelte +14 -14
  100. package/dist/shadcn/components/ui/textarea/textarea.svelte +22 -21
  101. package/dist/shadcn/components/ui/textarea/textarea.svelte.d.ts +1 -1
  102. package/dist/shadcn/utils.d.ts +4 -4
  103. package/dist/utils/datetime/index.d.ts +68 -68
  104. package/dist/utils/datetime/index.js +124 -124
  105. package/dist/utils/email/README.md +60 -60
  106. package/dist/utils/email/aws-signer.d.ts +1 -1
  107. package/dist/utils/email/aws-signer.js +39 -39
  108. package/dist/utils/email/ses.d.ts +8 -10
  109. package/dist/utils/email/ses.js +15 -23
  110. package/dist/utils/form/index.d.ts +11 -11
  111. package/dist/utils/form/index.js +23 -24
  112. package/dist/utils/form/virtual-form.d.ts +5 -5
  113. package/dist/utils/form/virtual-form.js +58 -58
  114. package/dist/utils/search.d.ts +1 -1
  115. package/dist/utils/search.js +22 -22
  116. package/dist/utils/types/arktype.d.ts +2 -2
  117. package/dist/utils/types/arktype.js +3 -3
  118. package/dist/utils/types/db.d.ts +2 -1
  119. package/dist/utils/types/db.js +7 -7
  120. package/package.json +69 -54
@@ -1,19 +1,22 @@
1
1
  import { type } from 'arktype';
2
+ import { parse, stringify } from 'devalue';
2
3
  import { toast } from 'svelte-sonner';
3
4
  import { createSubscriber } from 'svelte/reactivity';
4
- import { parse, stringify } from 'devalue';
5
5
  import { dateTransport } from '../datetime/index.js';
6
6
  export class VirtualForm {
7
+ get isProcessing() {
8
+ this.#subscribe();
9
+ return this.#isProcessing;
10
+ }
7
11
  // state storage
8
12
  #isProcessing = false;
9
- #url = '';
10
- #schema;
11
- #transport;
12
- #onSuccess;
13
13
  #onError;
14
+ #onSuccess;
15
+ #schema;
14
16
  // svelte reactive tracking
15
17
  #subscribe;
16
- #update = () => { };
18
+ #transport;
19
+ #url = '';
17
20
  constructor(schema, action, options = {}) {
18
21
  this.#url = `${action}${options.actionName ? '?/' + options.actionName : ''}`;
19
22
  this.#schema = schema;
@@ -25,50 +28,6 @@ export class VirtualForm {
25
28
  return () => { };
26
29
  });
27
30
  }
28
- // Apply transport encoding to data before sending
29
- #encodeTransport(data) {
30
- if (!this.#transport || typeof data !== 'object' || data === null) {
31
- return data;
32
- }
33
- // Handle arrays
34
- if (Array.isArray(data)) {
35
- return data.map((item) => this.#encodeTransport(item));
36
- }
37
- // Try each transport encoder
38
- for (const [key, encoder] of Object.entries(this.#transport)) {
39
- const encoded = encoder.encode(data);
40
- if (encoded !== false) {
41
- return { __type: key, __value: encoded };
42
- }
43
- }
44
- // Recursively encode nested objects
45
- const result = {};
46
- for (const [key, value] of Object.entries(data)) {
47
- result[key] = this.#encodeTransport(value);
48
- }
49
- return result;
50
- }
51
- // Apply transport decoding to received data
52
- #decodeTransport(data) {
53
- if (!this.#transport || typeof data !== 'object' || data === null) {
54
- return data;
55
- }
56
- // Handle arrays
57
- if (Array.isArray(data)) {
58
- return data.map((item) => this.#decodeTransport(item));
59
- }
60
- // Check if this is a transport-encoded value
61
- const obj = data;
62
- if (obj.__type && obj.__value && this.#transport[obj.__type]) {
63
- return this.#transport[obj.__type].decode(obj.__value);
64
- }
65
- // Recursively decode nested objects
66
- const result = {};
67
- for (const [key, value] of Object.entries(obj)) {
68
- result[key] = this.#decodeTransport(value);
69
- }
70
- return result;
71
- }
72
31
  async submit(data) {
73
32
  this.#isProcessing = true;
74
33
  this.#update();
@@ -77,10 +36,10 @@ export class VirtualForm {
77
36
  if (validated instanceof type.errors) {
78
37
  console.error('Validation failed:', validated.summary);
79
38
  this.#onError?.({
80
- text: 'Validation failed',
81
39
  data: validated.summary,
40
+ showToast: false,
82
41
  success: false,
83
- showToast: false
42
+ text: 'Validation failed'
84
43
  });
85
44
  return;
86
45
  }
@@ -92,8 +51,8 @@ export class VirtualForm {
92
51
  formData.append('__superform_id', '1');
93
52
  formData.append('__superform_json', stringify(encodedData));
94
53
  const res = await fetch(this.#url, {
95
- method: 'POST',
96
- body: formData
54
+ body: formData,
55
+ method: 'POST'
97
56
  });
98
57
  const result = await res.json();
99
58
  if (!res.ok || result.status === 400) {
@@ -122,13 +81,54 @@ export class VirtualForm {
122
81
  }
123
82
  catch (err) {
124
83
  console.error(err);
125
- this.#onError?.({ text: 'Network error', data: err, success: false, showToast: false });
84
+ this.#onError?.({ data: err, showToast: false, success: false, text: 'Network error' });
126
85
  }
127
86
  this.#isProcessing = false;
128
87
  this.#update();
129
88
  }
130
- get isProcessing() {
131
- this.#subscribe();
132
- return this.#isProcessing;
89
+ // Apply transport decoding to received data
90
+ #decodeTransport(data) {
91
+ if (!this.#transport || typeof data !== 'object' || data === null) {
92
+ return data;
93
+ }
94
+ // Handle arrays
95
+ if (Array.isArray(data)) {
96
+ return data.map((item) => this.#decodeTransport(item));
97
+ }
98
+ // Check if this is a transport-encoded value
99
+ const obj = data;
100
+ if (obj.__type && obj.__value && this.#transport[obj.__type]) {
101
+ return this.#transport[obj.__type].decode(obj.__value);
102
+ }
103
+ // Recursively decode nested objects
104
+ const result = {};
105
+ for (const [key, value] of Object.entries(obj)) {
106
+ result[key] = this.#decodeTransport(value);
107
+ }
108
+ return result;
109
+ }
110
+ // Apply transport encoding to data before sending
111
+ #encodeTransport(data) {
112
+ if (!this.#transport || typeof data !== 'object' || data === null) {
113
+ return data;
114
+ }
115
+ // Handle arrays
116
+ if (Array.isArray(data)) {
117
+ return data.map((item) => this.#encodeTransport(item));
118
+ }
119
+ // Try each transport encoder
120
+ for (const [key, encoder] of Object.entries(this.#transport)) {
121
+ const encoded = encoder.encode(data);
122
+ if (encoded !== false) {
123
+ return { __type: key, __value: encoded };
124
+ }
125
+ }
126
+ // Recursively encode nested objects
127
+ const result = {};
128
+ for (const [key, value] of Object.entries(data)) {
129
+ result[key] = this.#encodeTransport(value);
130
+ }
131
+ return result;
133
132
  }
133
+ #update = () => { };
134
134
  }
@@ -1,2 +1,2 @@
1
- export declare function fuzzySearchHighlight(needle: string, haystack: string): string | null;
2
1
  export declare function fuzzySearch(needle: string, haystack: string): boolean;
2
+ export declare function fuzzySearchHighlight(needle: string, haystack: string): null | string;
@@ -1,3 +1,25 @@
1
+ export function fuzzySearch(needle, haystack) {
2
+ const hlen = haystack.length;
3
+ const nlen = needle.length;
4
+ if (nlen > hlen) {
5
+ return false;
6
+ }
7
+ if (nlen === hlen) {
8
+ return needle.toLowerCase() === haystack.toLowerCase();
9
+ }
10
+ const lowerNeedle = needle.toLowerCase();
11
+ const lowerHaystack = haystack.toLowerCase();
12
+ outer: for (let i = 0, j = 0; i < nlen; i++) {
13
+ const nch = lowerNeedle.charCodeAt(i);
14
+ while (j < hlen) {
15
+ if (lowerHaystack.charCodeAt(j++) === nch) {
16
+ continue outer;
17
+ }
18
+ }
19
+ return false;
20
+ }
21
+ return true;
22
+ }
1
23
  export function fuzzySearchHighlight(needle, haystack) {
2
24
  const hlen = haystack.length;
3
25
  const nlen = needle.length;
@@ -39,25 +61,3 @@ export function fuzzySearchHighlight(needle, haystack) {
39
61
  return null;
40
62
  return `<span>${result}</span>`;
41
63
  }
42
- export function fuzzySearch(needle, haystack) {
43
- const hlen = haystack.length;
44
- const nlen = needle.length;
45
- if (nlen > hlen) {
46
- return false;
47
- }
48
- if (nlen === hlen) {
49
- return needle.toLowerCase() === haystack.toLowerCase();
50
- }
51
- const lowerNeedle = needle.toLowerCase();
52
- const lowerHaystack = haystack.toLowerCase();
53
- outer: for (let i = 0, j = 0; i < nlen; i++) {
54
- const nch = lowerNeedle.charCodeAt(i);
55
- while (j < hlen) {
56
- if (lowerHaystack.charCodeAt(j++) === nch) {
57
- continue outer;
58
- }
59
- }
60
- return false;
61
- }
62
- return true;
63
- }
@@ -1,6 +1,6 @@
1
- import { Type } from 'arktype';
1
+ import type { Type } from 'arktype';
2
+ import { CalendarDate as calendarImport, Time as timeImport } from '@internationalized/date';
2
3
  import { Days } from '../datetime/index.js';
3
- import { Time as timeImport, CalendarDate as calendarImport } from '@internationalized/date';
4
4
  export declare const Phone: import("arktype/internal/variants/string.ts").StringType<string, {}>;
5
5
  /** Type string which is trimmed before narrowing the type checking */
6
6
  export declare function trimTo(typeTo: Type<string>): import("arktype/internal/variants/object.ts").ObjectType<(In: string) => import("arktype/internal/attributes.ts").To<string>, {}>;
@@ -1,8 +1,8 @@
1
- import { Type, type } from 'arktype';
1
+ import { CalendarDate as calendarImport, Time as timeImport } from '@internationalized/date';
2
+ import { type } from 'arktype';
2
3
  import { Days } from '../datetime/index.js';
3
- import { Time as timeImport, CalendarDate as calendarImport } from '@internationalized/date';
4
- import { EMAIL_MAX, FIRST_NAME_MAX, LAST_NAME_MAX, NAME_MAX } from './consts.js';
5
4
  import { toTitleCase } from '../string.js';
5
+ import { EMAIL_MAX, FIRST_NAME_MAX, LAST_NAME_MAX, NAME_MAX } from './consts.js';
6
6
  // Phone arktype: allows "+", digits, and spaces only
7
7
  export const Phone = type('string').narrow((value, ctx) => {
8
8
  if (!/^[+0-9 ]+$/.test(value)) {
@@ -1,4 +1,5 @@
1
- import { CalendarDate, type Time } from '@internationalized/date';
1
+ import type { CalendarDate } from '@internationalized/date';
2
+ import { type Time } from '@internationalized/date';
2
3
  export declare function stringEnum<T extends string>(): import("drizzle-orm/column-builder", { with: { "resolution-mode": "require" } }).$Type<import("drizzle-orm/pg-core", { with: { "resolution-mode": "require" } }).PgVarcharBuilderInitial<"", [string, ...string[]], 50>, T>;
3
4
  export declare const name: () => import("drizzle-orm/pg-core", { with: { "resolution-mode": "require" } }).PgVarcharBuilderInitial<"", [string, ...string[]], 50>;
4
5
  export declare const hexColor: () => import("drizzle-orm/pg-core", { with: { "resolution-mode": "require" } }).PgVarcharBuilderInitial<"", [string, ...string[]], 6>;
@@ -1,6 +1,6 @@
1
+ import { parseDate, parseTime } from '@internationalized/date';
1
2
  import { customType, varchar } from 'drizzle-orm/pg-core';
2
3
  import { HEX_COLOR_MAX, NAME_MAX } from './consts.js';
3
- import { CalendarDate, parseDate, parseTime } from '@internationalized/date';
4
4
  // General
5
5
  const STRING_ENUM_MAX = 50;
6
6
  export function stringEnum() {
@@ -14,21 +14,21 @@ export const time = customType({
14
14
  dataType() {
15
15
  return 'time(0)';
16
16
  },
17
- toDriver(time) {
18
- return time.toString();
19
- },
20
17
  fromDriver(value) {
21
18
  return parseTime(value);
19
+ },
20
+ toDriver(time) {
21
+ return time.toString();
22
22
  }
23
23
  });
24
24
  export const date = customType({
25
25
  dataType() {
26
26
  return 'date';
27
27
  },
28
- toDriver(date) {
29
- return date.toString();
30
- },
31
28
  fromDriver(value) {
32
29
  return parseDate(value);
30
+ },
31
+ toDriver(date) {
32
+ return date.toString();
33
33
  }
34
34
  });
package/package.json CHANGED
@@ -1,13 +1,30 @@
1
1
  {
2
2
  "name": "@webamoki/web-svelte",
3
3
  "publishConfig": {
4
- "access": "public"
4
+ "access": "public",
5
+ "provenance": true
5
6
  },
6
- "version": "0.7.4",
7
+ "version": "1.0.0",
7
8
  "license": "MIT",
8
9
  "repository": {
9
10
  "type": "git",
10
- "url": "https://github.com/Webamoki/Web-svelte"
11
+ "url": "git+https://github.com/Webamoki/Web-svelte.git"
12
+ },
13
+ "scripts": {
14
+ "dev": "vite dev",
15
+ "build:site": "vite build",
16
+ "build:lib": "pnpm prepack",
17
+ "preview": "vite preview",
18
+ "prepare": "svelte-kit sync || echo ''",
19
+ "prepack": "svelte-kit sync && svelte-package && publint",
20
+ "check": "pnpm fmt && pnpm lint:es --fix && pnpm lint:svelte && pnpm test",
21
+ "fmt": "prettier --write --cache --cache-location=.cache/.prettier-cache --cache-strategy metadata --log-level warn .",
22
+ "lint": "pnpm lint:es && pnpm lint:svelte",
23
+ "lint:es": "eslint --cache --cache-location .cache/.eslintcache --cache-strategy metadata .",
24
+ "lint:svelte": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
25
+ "test:unit": "vitest run",
26
+ "test": "pnpm test:unit",
27
+ "watch": "svelte-package --watch"
11
28
  },
12
29
  "files": [
13
30
  "dist",
@@ -72,69 +89,67 @@
72
89
  "sveltekit-superforms": "^2.28.1"
73
90
  },
74
91
  "devDependencies": {
75
- "@changesets/cli": "^2.29.7",
76
- "@eslint/compat": "^1.4.1",
77
- "@eslint/js": "^9.39.1",
78
- "@sveltejs/adapter-cloudflare": "^7.2.8",
79
- "@sveltejs/kit": "^2.48.4",
80
- "@sveltejs/package": "^2.5.4",
81
- "@sveltejs/vite-plugin-svelte": "^6.2.1",
82
- "@tailwindcss/forms": "^0.5.10",
92
+ "@eslint/compat": "^2.0.3",
93
+ "@eslint/js": "^9.39.4",
94
+ "@sveltejs/adapter-static": "^3.0.10",
95
+ "@sveltejs/kit": "^2.54.0",
96
+ "@sveltejs/package": "^2.5.7",
97
+ "@sveltejs/vite-plugin-svelte": "^6.2.4",
98
+ "@tailwindcss/forms": "^0.5.11",
83
99
  "@tailwindcss/typography": "^0.5.19",
84
- "@tailwindcss/vite": "^4.1.17",
85
- "@types/node": "^22.19.1",
100
+ "@tailwindcss/vite": "^4.2.1",
101
+ "@types/node": "^25.4.0",
86
102
  "@types/ramda": "^0.31.1",
87
103
  "@types/sorted-array-functions": "^1.3.3",
88
104
  "clsx": "^2.1.1",
89
- "eslint": "^9.39.1",
105
+ "eslint": "^9.39.4",
90
106
  "eslint-config-prettier": "^10.1.8",
91
- "eslint-plugin-svelte": "^3.13.0",
92
- "globals": "^16.5.0",
93
- "prettier": "^3.6.2",
94
- "prettier-plugin-svelte": "^3.4.0",
95
- "prettier-plugin-tailwindcss": "^0.6.14",
96
- "publint": "^0.3.15",
97
- "shiki": "^3.15.0",
98
- "svelte": "^5.43.6",
99
- "svelte-check": "^4.3.4",
100
- "tailwind-merge": "^3.4.0",
101
- "tailwind-variants": "^3.1.1",
102
- "tailwindcss": "^4.1.17",
107
+ "eslint-plugin-perfectionist": "^5.6.0",
108
+ "eslint-plugin-svelte": "^3.15.2",
109
+ "globals": "^17.4.0",
110
+ "prettier": "^3.8.1",
111
+ "prettier-plugin-svelte": "^3.5.1",
112
+ "prettier-plugin-tailwindcss": "^0.7.2",
113
+ "publint": "^0.3.18",
114
+ "semantic-release": "^25.0.3",
115
+ "shiki": "^4.0.2",
116
+ "svelte": "^5.53.10",
117
+ "svelte-check": "^4.4.5",
118
+ "svelte-eslint-parser": "^1.6.0",
119
+ "tailwind-merge": "^3.5.0",
120
+ "tailwind-variants": "^3.2.2",
121
+ "tailwindcss": "^4.2.1",
103
122
  "tw-animate-css": "^1.4.0",
104
123
  "typescript": "^5.9.3",
105
- "typescript-eslint": "^8.46.4",
106
- "vite": "^7.2.2",
107
- "vitest": "^3.2.4"
124
+ "typescript-eslint": "^8.57.0",
125
+ "vite": "^7.3.1",
126
+ "vitest": "^4.0.18"
108
127
  },
109
128
  "keywords": [
110
129
  "svelte"
111
130
  ],
131
+ "pnpm": {
132
+ "onlyBuiltDependencies": [
133
+ "@tailwindcss/oxide",
134
+ "esbuild",
135
+ "sharp"
136
+ ],
137
+ "ignoredBuiltDependencies": [
138
+ "workerd"
139
+ ]
140
+ },
112
141
  "dependencies": {
113
- "@internationalized/date": "^3.10.0",
114
- "@lucide/svelte": "^0.553.0",
115
- "@sveltejs/adapter-auto": "^7.0.0",
116
- "arktype": "^2.1.26",
117
- "bits-ui": "^2.14.3",
118
- "devalue": "^5.5.0",
119
- "drizzle-orm": "^0.44.7",
142
+ "@internationalized/date": "^3.12.0",
143
+ "@lucide/svelte": "^0.577.0",
144
+ "arktype": "^2.2.0",
145
+ "bits-ui": "^2.16.3",
146
+ "devalue": "^5.6.4",
147
+ "drizzle-orm": "^0.45.1",
120
148
  "formsnap": "^2.0.1",
121
- "ramda": "^0.31.3",
149
+ "ramda": "^0.32.0",
122
150
  "sorted-array-functions": "^1.3.0",
123
- "svelte-awesome-color-picker": "^4.1.0",
124
- "svelte-sonner": "^1.0.6",
125
- "sveltekit-superforms": "^2.28.1"
126
- },
127
- "scripts": {
128
- "dev": "vite dev",
129
- "build": "vite build && pnpm prepack",
130
- "preview": "vite preview",
131
- "check": "pnpm fmt && pnpm lint && pnpm test",
132
- "fmt": "prettier --write --cache --cache-location=.cache/.prettier-cache --cache-strategy metadata --log-level warn .",
133
- "lint": "pnpm lint:es && pnpm lint:svelte",
134
- "lint:es": "eslint --cache --cache-location .cache/.eslintcache --cache-strategy metadata .",
135
- "lint:svelte": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
136
- "test:unit": "vitest run",
137
- "test": "pnpm test:unit",
138
- "watch": "svelte-package --watch"
151
+ "svelte-awesome-color-picker": "^4.1.1",
152
+ "svelte-sonner": "^1.1.0",
153
+ "sveltekit-superforms": "^2.30.0"
139
154
  }
140
- }
155
+ }