@getmicdrop/svelte-components 5.7.1 → 5.8.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 (46) hide show
  1. package/dist/components/Heading.svelte +2 -1
  2. package/dist/components/Heading.svelte.d.ts +1 -1
  3. package/dist/components/Heading.svelte.d.ts.map +1 -1
  4. package/dist/components/Layout/index.d.ts +0 -1
  5. package/dist/components/Layout/index.js +1 -1
  6. package/dist/components/Text.svelte +15 -2
  7. package/dist/components/Text.svelte.d.ts +2 -1
  8. package/dist/components/Text.svelte.d.ts.map +1 -1
  9. package/dist/patterns/layout/index.d.ts +0 -2
  10. package/dist/patterns/layout/index.js +3 -2
  11. package/dist/primitives/Checkbox/Checkbox.svelte +3 -3
  12. package/dist/stores/auth.js +8 -0
  13. package/dist/stores/auth.svelte.d.ts +39 -0
  14. package/dist/stores/auth.svelte.d.ts.map +1 -0
  15. package/dist/stores/auth.svelte.js +60 -0
  16. package/dist/stores/formDataStore.d.ts.map +1 -1
  17. package/dist/stores/formDataStore.js +8 -0
  18. package/dist/stores/formDataStore.svelte.d.ts +47 -0
  19. package/dist/stores/formDataStore.svelte.d.ts.map +1 -0
  20. package/dist/stores/formDataStore.svelte.js +84 -0
  21. package/dist/stores/formSave.d.ts.map +1 -1
  22. package/dist/stores/formSave.js +8 -0
  23. package/dist/stores/formSave.svelte.d.ts +33 -0
  24. package/dist/stores/formSave.svelte.d.ts.map +1 -0
  25. package/dist/stores/formSave.svelte.js +113 -0
  26. package/dist/stores/navigation.d.ts.map +1 -1
  27. package/dist/stores/navigation.js +8 -0
  28. package/dist/stores/navigation.svelte.d.ts +35 -0
  29. package/dist/stores/navigation.svelte.d.ts.map +1 -0
  30. package/dist/stores/navigation.svelte.js +69 -0
  31. package/package.json +8 -9
  32. package/dist/stores/auth.spec.d.ts +0 -2
  33. package/dist/stores/auth.spec.d.ts.map +0 -1
  34. package/dist/stores/auth.spec.js +0 -139
  35. package/dist/stores/createFormStore.spec.d.ts +0 -2
  36. package/dist/stores/createFormStore.spec.d.ts.map +0 -1
  37. package/dist/stores/createFormStore.spec.js +0 -540
  38. package/dist/stores/formDataStore.spec.d.ts +0 -2
  39. package/dist/stores/formDataStore.spec.d.ts.map +0 -1
  40. package/dist/stores/formDataStore.spec.js +0 -257
  41. package/dist/stores/formSave.spec.d.ts +0 -2
  42. package/dist/stores/formSave.spec.d.ts.map +0 -1
  43. package/dist/stores/formSave.spec.js +0 -296
  44. package/dist/stores/navigation.spec.d.ts +0 -2
  45. package/dist/stores/navigation.spec.d.ts.map +0 -1
  46. package/dist/stores/navigation.spec.js +0 -136
@@ -3,7 +3,7 @@
3
3
 
4
4
  interface Props {
5
5
  level?: 1 | 2 | 3 | 4 | 5 | 6;
6
- size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl';
6
+ size?: 'xs' | 'sm' | 'base' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl';
7
7
  weight?: 'normal' | 'medium' | 'semibold' | 'bold';
8
8
  class?: string;
9
9
  children: Snippet;
@@ -20,6 +20,7 @@
20
20
  const sizeClasses: Record<string, string> = {
21
21
  xs: 'text-xs',
22
22
  sm: 'text-sm',
23
+ base: 'text-base',
23
24
  md: 'text-base',
24
25
  lg: 'text-lg',
25
26
  xl: 'text-xl',
@@ -1,7 +1,7 @@
1
1
  import type { Snippet } from 'svelte';
2
2
  interface Props {
3
3
  level?: 1 | 2 | 3 | 4 | 5 | 6;
4
- size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl';
4
+ size?: 'xs' | 'sm' | 'base' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl';
5
5
  weight?: 'normal' | 'medium' | 'semibold' | 'bold';
6
6
  class?: string;
7
7
  children: Snippet;
@@ -1 +1 @@
1
- {"version":3,"file":"Heading.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/Heading.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGpC,UAAU,KAAK;IACb,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IACxE,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB;AAsDH,QAAA,MAAM,OAAO,2CAAwC,CAAC;AACtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAC1C,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"Heading.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/Heading.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGpC,UAAU,KAAK;IACb,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IACjF,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB;AAuDH,QAAA,MAAM,OAAO,2CAAwC,CAAC;AACtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAC1C,eAAe,OAAO,CAAC"}
@@ -1,7 +1,6 @@
1
1
  export { default as AppShell } from "./AppShell.svelte";
2
2
  export { default as ContentSection } from "./ContentSection.svelte";
3
3
  export { default as Grid } from "./Grid.svelte";
4
- export { default as Heading } from "./Heading.svelte";
5
4
  export { default as PageContainer } from "./PageContainer.svelte";
6
5
  export { default as Responsive } from "./Responsive.svelte";
7
6
  export { default as Section } from "./Section.svelte";
@@ -5,7 +5,7 @@
5
5
  export { default as AppShell } from './AppShell.svelte';
6
6
  export { default as ContentSection } from './ContentSection.svelte';
7
7
  export { default as Grid } from './Grid.svelte';
8
- export { default as Heading } from './Heading.svelte';
8
+ // Note: Heading is exported from components/Heading.svelte (canonical export)
9
9
  export { default as PageContainer } from './PageContainer.svelte';
10
10
  export { default as Responsive } from './Responsive.svelte';
11
11
  export { default as Section } from './Section.svelte';
@@ -2,7 +2,8 @@
2
2
  import type { Snippet } from 'svelte';
3
3
 
4
4
  interface Props {
5
- size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
5
+ size?: 'xs' | 'sm' | 'base' | 'md' | 'lg' | 'xl' | '2xl';
6
+ leading?: 'none' | 'tight' | 'snug' | 'normal' | 'relaxed' | 'loose';
6
7
  color?: 'default' | 'muted' | 'primary' | 'secondary' | 'success' | 'warning' | 'error';
7
8
  class?: string;
8
9
  children: Snippet;
@@ -10,6 +11,7 @@
10
11
 
11
12
  let {
12
13
  size = 'md',
14
+ leading,
13
15
  color = 'default',
14
16
  class: className = '',
15
17
  children,
@@ -18,6 +20,7 @@
18
20
  const sizeClasses: Record<string, string> = {
19
21
  xs: 'text-xs',
20
22
  sm: 'text-sm',
23
+ base: 'text-base',
21
24
  md: 'text-base',
22
25
  lg: 'text-lg',
23
26
  xl: 'text-xl',
@@ -34,7 +37,17 @@
34
37
  error: 'text-red-600 dark:text-red-400',
35
38
  };
36
39
 
37
- const classes = `${sizeClasses[size] || 'text-base'} ${colorClasses[color] || ''} ${className}`.trim();
40
+ const leadingClasses: Record<string, string> = {
41
+ none: 'leading-none',
42
+ tight: 'leading-tight',
43
+ snug: 'leading-snug',
44
+ normal: 'leading-normal',
45
+ relaxed: 'leading-relaxed',
46
+ loose: 'leading-loose',
47
+ };
48
+
49
+ const leadingClass = leading ? leadingClasses[leading] : '';
50
+ const classes = `${sizeClasses[size] || 'text-base'} ${leadingClass} ${colorClasses[color] || ''} ${className}`.trim();
38
51
  </script>
39
52
 
40
53
  <span class={classes}>{@render children()}</span>
@@ -1,6 +1,7 @@
1
1
  import type { Snippet } from 'svelte';
2
2
  interface Props {
3
- size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
3
+ size?: 'xs' | 'sm' | 'base' | 'md' | 'lg' | 'xl' | '2xl';
4
+ leading?: 'none' | 'tight' | 'snug' | 'normal' | 'relaxed' | 'loose';
4
5
  color?: 'default' | 'muted' | 'primary' | 'secondary' | 'success' | 'warning' | 'error';
5
6
  class?: string;
6
7
  children: Snippet;
@@ -1 +1 @@
1
- {"version":3,"file":"Text.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/Text.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGpC,UAAU,KAAK;IACb,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;IAChD,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACxF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB;AAsCH,QAAA,MAAM,IAAI,2CAAwC,CAAC;AACnD,KAAK,IAAI,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;AACpC,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Text.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/Text.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGpC,UAAU,KAAK;IACb,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;IACzD,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;IACrE,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACxF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB;AAkDH,QAAA,MAAM,IAAI,2CAAwC,CAAC;AACnD,KAAK,IAAI,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;AACpC,eAAe,IAAI,CAAC"}
@@ -2,8 +2,6 @@ export { default as Grid } from "../../components/Layout/Grid.svelte";
2
2
  export { default as Section } from "../../components/Layout/Section.svelte";
3
3
  export { default as Sidebar } from "../../components/Layout/Sidebar.svelte";
4
4
  export { default as Stack } from "../../components/Layout/Stack.svelte";
5
- export { default as Text } from "../../components/Layout/Text.svelte";
6
- export { default as Heading } from "../../components/Layout/Heading.svelte";
7
5
  export { default as PageContainer } from "../../components/Layout/PageContainer.svelte";
8
6
  export { default as ContentSection } from "../../components/Layout/ContentSection.svelte";
9
7
  export { default as TwoColumn } from "../../components/Layout/TwoColumn.svelte";
@@ -8,8 +8,9 @@ export { default as Sidebar } from '../../components/Layout/Sidebar.svelte';
8
8
  export { default as Stack } from '../../components/Layout/Stack.svelte';
9
9
 
10
10
  // Typography components
11
- export { default as Text } from '../../components/Layout/Text.svelte';
12
- export { default as Heading } from '../../components/Layout/Heading.svelte';
11
+ // Note: Text is exported from components/Text.svelte (simpler API)
12
+ // Note: Heading is exported from components/Heading.svelte (canonical export)
13
+ // Layout/Text.svelte and Layout/Heading.svelte are internal - use the main exports
13
14
 
14
15
  // Container components
15
16
  export { default as PageContainer } from '../../components/Layout/PageContainer.svelte';
@@ -35,9 +35,9 @@
35
35
  ...restProps
36
36
  }: Props = $props();
37
37
 
38
- function handleChange(event: Event) {
39
- const target = event.target as HTMLInputElement;
40
- checked = target.checked;
38
+ function handleChange() {
39
+ // Note: checked is already updated by bind:checked before this handler runs
40
+ // We just need to call the onchange callback with the current values
41
41
  onchange?.({ checked, value });
42
42
  }
43
43
 
@@ -1,5 +1,13 @@
1
+ /**
2
+ * @deprecated Use the Svelte 5 runes version from './auth.svelte.ts' instead.
3
+ * This file is maintained for backwards compatibility with Svelte 4 components.
4
+ */
1
5
  import { writable } from "svelte/store";
2
6
 
7
+ console.warn(
8
+ "[DEPRECATED] auth.js is deprecated. Use auth.svelte.ts for Svelte 5 runes."
9
+ );
10
+
3
11
  // Store to manage authentication state
4
12
  export const auth = writable({
5
13
  isAuthenticated: false,
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Authentication store using Svelte 5 runes
3
+ * Manages authentication state for the components library
4
+ */
5
+ interface UserDetails {
6
+ email?: string;
7
+ firstName?: string;
8
+ lastName?: string;
9
+ [key: string]: unknown;
10
+ }
11
+ interface AuthState {
12
+ isAuthenticated: boolean;
13
+ token: string | null;
14
+ userDetails: UserDetails | null;
15
+ }
16
+ /**
17
+ * Authentication store
18
+ */
19
+ export declare const auth: {
20
+ readonly value: AuthState;
21
+ readonly isAuthenticated: boolean;
22
+ readonly token: string | null;
23
+ readonly userDetails: UserDetails | null;
24
+ };
25
+ /**
26
+ * Set the authentication state
27
+ */
28
+ export declare function setAuthState(state: AuthState): void;
29
+ /**
30
+ * Clear the authentication state
31
+ */
32
+ export declare function clearAuthState(): void;
33
+ /**
34
+ * Initialize the store from cookies
35
+ * Should only be called in browser environment
36
+ */
37
+ export declare function initializeAuthState(): void;
38
+ export type { AuthState, UserDetails };
39
+ //# sourceMappingURL=auth.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/stores/auth.svelte.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,UAAU,SAAS;IACjB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;CACjC;AAWD;;GAEG;AACH,eAAO,MAAM,IAAI;;;;;CAahB,CAAC;AAEF;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAEnD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAkB1C;AAGD,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Authentication store using Svelte 5 runes
3
+ * Manages authentication state for the components library
4
+ */
5
+ const defaultAuthState = {
6
+ isAuthenticated: false,
7
+ token: null,
8
+ userDetails: null,
9
+ };
10
+ // State using Svelte 5 runes
11
+ let authState = $state(structuredClone(defaultAuthState));
12
+ /**
13
+ * Authentication store
14
+ */
15
+ export const auth = {
16
+ get value() {
17
+ return authState;
18
+ },
19
+ get isAuthenticated() {
20
+ return authState.isAuthenticated;
21
+ },
22
+ get token() {
23
+ return authState.token;
24
+ },
25
+ get userDetails() {
26
+ return authState.userDetails;
27
+ },
28
+ };
29
+ /**
30
+ * Set the authentication state
31
+ */
32
+ export function setAuthState(state) {
33
+ authState = state;
34
+ }
35
+ /**
36
+ * Clear the authentication state
37
+ */
38
+ export function clearAuthState() {
39
+ authState = structuredClone(defaultAuthState);
40
+ }
41
+ /**
42
+ * Initialize the store from cookies
43
+ * Should only be called in browser environment
44
+ */
45
+ export function initializeAuthState() {
46
+ if (typeof document === "undefined")
47
+ return;
48
+ const cookies = Object.fromEntries(document.cookie
49
+ .split("; ")
50
+ .filter((c) => c)
51
+ .map((c) => c.split("="))
52
+ .map(([k, v]) => [k, decodeURIComponent(v || "")]));
53
+ if (cookies.performer_token) {
54
+ setAuthState({
55
+ isAuthenticated: true,
56
+ token: cookies.performer_token,
57
+ userDetails: cookies.userDetails ? JSON.parse(cookies.userDetails) : null,
58
+ });
59
+ }
60
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"formDataStore.d.ts","sourceRoot":"","sources":["../../src/lib/stores/formDataStore.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,oEAA8C;AAE9C,kEAKE"}
1
+ {"version":3,"file":"formDataStore.d.ts","sourceRoot":"","sources":["../../src/lib/stores/formDataStore.js"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;GAaG;AAEH,oEAA8C;AAE9C,kEAKE"}
@@ -1,5 +1,13 @@
1
+ /**
2
+ * @deprecated Use the Svelte 5 runes version from './formDataStore.svelte.ts' instead.
3
+ * This file is maintained for backwards compatibility with Svelte 4 components.
4
+ */
1
5
  import { writable, derived } from "svelte/store";
2
6
 
7
+ console.warn(
8
+ "[DEPRECATED] formDataStore.js is deprecated. Use formDataStore.svelte.ts for Svelte 5 runes."
9
+ );
10
+
3
11
  export const profileFormData = writable({
4
12
  basicInfo: {
5
13
  firstName: "",
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Form data store using Svelte 5 runes
3
+ * Tracks profile form data and change detection
4
+ */
5
+ interface BasicInfo {
6
+ firstName: string;
7
+ lastName: string;
8
+ email: string;
9
+ phone: string;
10
+ stageName: string;
11
+ location: string;
12
+ }
13
+ interface SocialMedia {
14
+ videoLink: string;
15
+ }
16
+ interface ProfileFormData {
17
+ basicInfo: BasicInfo;
18
+ socialMedia: SocialMedia;
19
+ extraDetails: Record<string, unknown>;
20
+ }
21
+ /**
22
+ * Profile form data store
23
+ */
24
+ export declare const profileFormData: {
25
+ value: ProfileFormData;
26
+ basicInfo: BasicInfo;
27
+ socialMedia: SocialMedia;
28
+ extraDetails: Record<string, unknown>;
29
+ update(updater: (data: ProfileFormData) => ProfileFormData): void;
30
+ reset(): void;
31
+ };
32
+ /**
33
+ * Initial form data store (for comparison)
34
+ */
35
+ export declare const initialFormData: {
36
+ value: ProfileFormData | null;
37
+ setFromCurrent(): void;
38
+ reset(): void;
39
+ };
40
+ /**
41
+ * Derived store indicating if form has unsaved changes
42
+ */
43
+ export declare const hasChanges: {
44
+ readonly value: boolean;
45
+ };
46
+ export type { ProfileFormData, BasicInfo, SocialMedia };
47
+ //# sourceMappingURL=formDataStore.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formDataStore.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/stores/formDataStore.svelte.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,UAAU,SAAS;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,WAAW;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AA2BD;;GAEG;AACH,eAAO,MAAM,eAAe;WAIV,eAAe;eAMX,SAAS;iBAMN,WAAW;kBAMR,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oBAGjC,CAAC,IAAI,EAAE,eAAe,KAAK,eAAe;;CAM3D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe;WAIV,eAAe,GAAG,IAAI;;;CASvC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU;;CAItB,CAAC;AAGF,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Form data store using Svelte 5 runes
3
+ * Tracks profile form data and change detection
4
+ */
5
+ const defaultFormData = {
6
+ basicInfo: {
7
+ firstName: "",
8
+ lastName: "",
9
+ email: "",
10
+ phone: "",
11
+ stageName: "",
12
+ location: "",
13
+ },
14
+ socialMedia: {
15
+ videoLink: "",
16
+ },
17
+ extraDetails: {},
18
+ };
19
+ // State using Svelte 5 runes
20
+ let profileFormDataState = $state(structuredClone(defaultFormData));
21
+ let initialFormDataState = $state(null);
22
+ // Derived state for change detection
23
+ const hasChangesValue = $derived(initialFormDataState !== null &&
24
+ JSON.stringify(profileFormDataState) !== JSON.stringify(initialFormDataState));
25
+ /**
26
+ * Profile form data store
27
+ */
28
+ export const profileFormData = {
29
+ get value() {
30
+ return profileFormDataState;
31
+ },
32
+ set value(data) {
33
+ profileFormDataState = data;
34
+ },
35
+ get basicInfo() {
36
+ return profileFormDataState.basicInfo;
37
+ },
38
+ set basicInfo(info) {
39
+ profileFormDataState.basicInfo = info;
40
+ },
41
+ get socialMedia() {
42
+ return profileFormDataState.socialMedia;
43
+ },
44
+ set socialMedia(media) {
45
+ profileFormDataState.socialMedia = media;
46
+ },
47
+ get extraDetails() {
48
+ return profileFormDataState.extraDetails;
49
+ },
50
+ set extraDetails(details) {
51
+ profileFormDataState.extraDetails = details;
52
+ },
53
+ update(updater) {
54
+ profileFormDataState = updater(profileFormDataState);
55
+ },
56
+ reset() {
57
+ profileFormDataState = structuredClone(defaultFormData);
58
+ },
59
+ };
60
+ /**
61
+ * Initial form data store (for comparison)
62
+ */
63
+ export const initialFormData = {
64
+ get value() {
65
+ return initialFormDataState;
66
+ },
67
+ set value(data) {
68
+ initialFormDataState = data;
69
+ },
70
+ setFromCurrent() {
71
+ initialFormDataState = structuredClone(profileFormDataState);
72
+ },
73
+ reset() {
74
+ initialFormDataState = null;
75
+ },
76
+ };
77
+ /**
78
+ * Derived store indicating if form has unsaved changes
79
+ */
80
+ export const hasChanges = {
81
+ get value() {
82
+ return hasChangesValue;
83
+ },
84
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"formSave.d.ts","sourceRoot":"","sources":["../../src/lib/stores/formSave.js"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH,yCAPG;IAAwB,QAAQ,EAAxB,MAAM;IACU,cAAc,EAA9B,MAAM;IACU,YAAY,EAA5B,MAAM;IACY,SAAS;IACT,OAAO;CACjC,GAAU,MAAM,CA6FlB;AAED;;;;GAIG;AACH,gDAHW,MAAM,GACJ,MAAM,CAsBlB"}
1
+ {"version":3,"file":"formSave.d.ts","sourceRoot":"","sources":["../../src/lib/stores/formSave.js"],"names":[],"mappings":"AAWA;;;;;;;;;GASG;AACH,yCAPG;IAAwB,QAAQ,EAAxB,MAAM;IACU,cAAc,EAA9B,MAAM;IACU,YAAY,EAA5B,MAAM;IACY,SAAS;IACT,OAAO;CACjC,GAAU,MAAM,CA6FlB;AAED;;;;GAIG;AACH,gDAHW,MAAM,GACJ,MAAM,CAsBlB"}
@@ -1,6 +1,14 @@
1
+ /**
2
+ * @deprecated Use the Svelte 5 runes version from './formSave.svelte.ts' instead.
3
+ * This file is maintained for backwards compatibility with Svelte 4 components.
4
+ */
1
5
  import { writable, get } from "svelte/store";
2
6
  import { showToast } from "./toaster";
3
7
 
8
+ console.warn(
9
+ "[DEPRECATED] formSave.js is deprecated. Use formSave.svelte.ts for Svelte 5 runes."
10
+ );
11
+
4
12
  /**
5
13
  * Creates a form save handler with loading and success states
6
14
  * @param {Object} options - Configuration options
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Form save utilities using Svelte 5 runes
3
+ * Handles form submission with loading and success states
4
+ */
5
+ interface FormSaveOptions {
6
+ endpoint?: string;
7
+ successMessage?: string;
8
+ errorMessage?: string;
9
+ onSuccess?: () => void;
10
+ onError?: (error: string) => void;
11
+ }
12
+ /**
13
+ * Creates a form save handler with loading and success states
14
+ * Uses Svelte 5 runes for reactive state
15
+ */
16
+ export declare function createFormSave(options?: FormSaveOptions): {
17
+ readonly isLoading: boolean;
18
+ readonly isSuccess: boolean;
19
+ readonly error: string | null;
20
+ save: (data: Record<string, unknown>, customEndpoint?: string | null) => Promise<boolean>;
21
+ resetSuccess: () => void;
22
+ reset: () => void;
23
+ };
24
+ /**
25
+ * Creates a simple dirty state tracker for forms
26
+ */
27
+ export declare function createDirtyTracker(initialData: Record<string, unknown>): {
28
+ readonly isDirty: boolean;
29
+ check: (currentData: Record<string, unknown>) => boolean;
30
+ reset: (newInitialData: Record<string, unknown>) => void;
31
+ };
32
+ export {};
33
+ //# sourceMappingURL=formSave.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formSave.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/stores/formSave.svelte.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,UAAU,eAAe;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAQD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,eAAoB;;;;iBAyBlD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,mBACb,MAAM,GAAG,IAAI,KAC5B,OAAO,CAAC,OAAO,CAAC;wBAVM,IAAI;iBA0DX,IAAI;EAoBvB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;yBAIzC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO;4BAM9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,IAAI;EAY9D"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Form save utilities using Svelte 5 runes
3
+ * Handles form submission with loading and success states
4
+ */
5
+ import { showToast } from "./toaster";
6
+ /**
7
+ * Creates a form save handler with loading and success states
8
+ * Uses Svelte 5 runes for reactive state
9
+ */
10
+ export function createFormSave(options = {}) {
11
+ const { endpoint = "", successMessage = "Changes saved successfully", errorMessage = "Failed to save changes", onSuccess, onError, } = options;
12
+ // State using Svelte 5 runes
13
+ let isLoadingState = $state(false);
14
+ let isSuccessState = $state(false);
15
+ let errorState = $state(null);
16
+ /**
17
+ * Reset success state (call when form becomes dirty)
18
+ */
19
+ function resetSuccess() {
20
+ isSuccessState = false;
21
+ }
22
+ /**
23
+ * Save form data to the endpoint
24
+ */
25
+ async function save(data, customEndpoint = null) {
26
+ const targetEndpoint = customEndpoint || endpoint;
27
+ if (!targetEndpoint) {
28
+ console.error("No endpoint specified for form save");
29
+ return false;
30
+ }
31
+ isLoadingState = true;
32
+ isSuccessState = false;
33
+ errorState = null;
34
+ try {
35
+ const res = await fetch(targetEndpoint, {
36
+ method: "POST",
37
+ headers: { "Content-Type": "application/json" },
38
+ body: JSON.stringify(data),
39
+ });
40
+ if (res.ok) {
41
+ isSuccessState = true;
42
+ if (successMessage) {
43
+ showToast(successMessage, "success");
44
+ }
45
+ onSuccess?.();
46
+ return true;
47
+ }
48
+ else {
49
+ const errorData = await res.json().catch(() => ({}));
50
+ const errorMsg = errorData.message || errorMessage;
51
+ errorState = errorMsg;
52
+ showToast(errorMsg, "error");
53
+ onError?.(errorMsg);
54
+ return false;
55
+ }
56
+ }
57
+ catch (err) {
58
+ const errorMsg = err instanceof Error ? err.message : "Something went wrong";
59
+ errorState = errorMsg;
60
+ showToast(errorMsg, "error");
61
+ onError?.(errorMsg);
62
+ return false;
63
+ }
64
+ finally {
65
+ isLoadingState = false;
66
+ }
67
+ }
68
+ /**
69
+ * Reset all states
70
+ */
71
+ function reset() {
72
+ isLoadingState = false;
73
+ isSuccessState = false;
74
+ errorState = null;
75
+ }
76
+ return {
77
+ get isLoading() {
78
+ return isLoadingState;
79
+ },
80
+ get isSuccess() {
81
+ return isSuccessState;
82
+ },
83
+ get error() {
84
+ return errorState;
85
+ },
86
+ save,
87
+ resetSuccess,
88
+ reset,
89
+ };
90
+ }
91
+ /**
92
+ * Creates a simple dirty state tracker for forms
93
+ */
94
+ export function createDirtyTracker(initialData) {
95
+ let isDirtyState = $state(false);
96
+ let initial = JSON.stringify(initialData);
97
+ function check(currentData) {
98
+ const dirty = JSON.stringify(currentData) !== initial;
99
+ isDirtyState = dirty;
100
+ return dirty;
101
+ }
102
+ function reset(newInitialData) {
103
+ initial = JSON.stringify(newInitialData);
104
+ isDirtyState = false;
105
+ }
106
+ return {
107
+ get isDirty() {
108
+ return isDirtyState;
109
+ },
110
+ check,
111
+ reset,
112
+ };
113
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/lib/stores/navigation.js"],"names":[],"mappings":"AAEA,iEAAyC;AAGzC,4EAAoD;AAGpD,sEAAgD;AAGhD,4EAAoD"}
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/lib/stores/navigation.js"],"names":[],"mappings":"AAUA,iEAAyC;AAGzC,4EAAoD;AAGpD,sEAAgD;AAGhD,4EAAoD"}
@@ -1,5 +1,13 @@
1
+ /**
2
+ * @deprecated Use the Svelte 5 runes version from './navigation.svelte.ts' instead.
3
+ * This file is maintained for backwards compatibility with Svelte 4 components.
4
+ */
1
5
  import { writable } from "svelte/store";
2
6
 
7
+ console.warn(
8
+ "[DEPRECATED] navigation.js is deprecated. Use navigation.svelte.ts for Svelte 5 runes."
9
+ );
10
+
3
11
  export const isSubPage = writable(false);
4
12
 
5
13
  // Pages can set this to true to hide the header back button (e.g., when they have their own)
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Navigation store using Svelte 5 runes
3
+ * Tracks navigation state and page context
4
+ */
5
+ /**
6
+ * Whether the current page is a sub-page (for header back button display)
7
+ */
8
+ export declare const isSubPage: {
9
+ value: boolean;
10
+ set(val: boolean): void;
11
+ };
12
+ /**
13
+ * Pages can set this to true to hide the header back button
14
+ * (e.g., when they have their own)
15
+ */
16
+ export declare const hideHeaderBackButton: {
17
+ value: boolean;
18
+ set(val: boolean): void;
19
+ };
20
+ /**
21
+ * Store venue data when navigating to calendar to avoid re-fetching
22
+ */
23
+ export declare const selectedVenueData: {
24
+ value: Record<string, unknown> | null;
25
+ set(data: Record<string, unknown> | null): void;
26
+ reset(): void;
27
+ };
28
+ /**
29
+ * Flag to indicate we're doing an animated navigation (not a refresh/direct load)
30
+ */
31
+ export declare const isAnimatedNavigation: {
32
+ value: boolean;
33
+ set(val: boolean): void;
34
+ };
35
+ //# sourceMappingURL=navigation.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/stores/navigation.svelte.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH;;GAEG;AACH,eAAO,MAAM,SAAS;WAIL,OAAO;aAGb,OAAO;CAGjB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB;WAIhB,OAAO;aAGb,OAAO;CAGjB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB;WAIZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;cAGpC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;;CAMzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB;WAIhB,OAAO;aAGb,OAAO;CAGjB,CAAC"}