@getmicdrop/svelte-components 2.0.5 → 2.0.7

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 (102) hide show
  1. package/dist/components/Alert/Alert.spec.js +170 -170
  2. package/dist/components/Badges/Badge.spec.js +103 -103
  3. package/dist/components/BottomSheet/BottomSheet.spec.js +127 -127
  4. package/dist/components/Breadcrumb/Breadcrumb.spec.js +120 -120
  5. package/dist/components/Button/Button.spec.js +211 -211
  6. package/dist/components/Button/ButtonSaveDemo.spec.js +48 -48
  7. package/dist/components/Calendar/Calendar.spec.js +131 -131
  8. package/dist/components/Calendar/QuarterView.spec.js +394 -394
  9. package/dist/components/Card.spec.js +47 -47
  10. package/dist/components/CropImage/CropImage.spec.js +216 -216
  11. package/dist/components/DarkModeToggle.spec.js +357 -357
  12. package/dist/components/ErrorDisplay.spec.js +69 -69
  13. package/dist/components/FormActions.spec.js +88 -88
  14. package/dist/components/FormValidationSummary.spec.js +203 -203
  15. package/dist/components/Icons/Icon.spec.js +175 -175
  16. package/dist/components/Icons/MoreHori.spec.js +67 -67
  17. package/dist/components/Icons/WarningIcon.spec.js +30 -30
  18. package/dist/components/Input/Input.spec.js +573 -573
  19. package/dist/components/Input/MultiSelect.spec.js +257 -257
  20. package/dist/components/Input/OTPInput.spec.js +238 -238
  21. package/dist/components/Input/Select.spec.js +218 -218
  22. package/dist/components/Layout/BottomNav.spec.js +130 -130
  23. package/dist/components/Layout/Header.spec.js +203 -203
  24. package/dist/components/Modal/ConfirmationModal.spec.js +191 -191
  25. package/dist/components/Modal/Modal.spec.js +95 -95
  26. package/dist/components/Modal/ModalStateManager.spec.js +100 -100
  27. package/dist/components/PageLoader.spec.js +54 -54
  28. package/dist/components/PasswordStrengthIndicator/PasswordStrengthIndicator.spec.js +173 -173
  29. package/dist/components/PlaceAutocomplete/PlaceAutocomplete.spec.js +300 -300
  30. package/dist/components/Spinner/Spinner.spec.js +75 -75
  31. package/dist/components/StatusIndicator/StatusIndicator.spec.js +129 -129
  32. package/dist/components/Toggle.spec.js +158 -158
  33. package/dist/components/ValidationError.spec.js +79 -79
  34. package/dist/components/pages/performers/AvailabilityCalendarModal.spec.js +606 -606
  35. package/dist/components/pages/performers/ModalShowInfo.spec.js +124 -124
  36. package/dist/components/pages/performers/PageBackButton.spec.js +89 -89
  37. package/dist/components/pages/performers/SectionHeader.spec.js +75 -75
  38. package/dist/components/pages/performers/ShowDetails.spec.js +166 -166
  39. package/dist/components/pages/performers/ShowItemCard.spec.js +793 -793
  40. package/dist/components/pages/performers/ShowItemCard.svelte +1 -1
  41. package/dist/components/pages/performers/SwitchOption.spec.js +127 -127
  42. package/dist/components/pages/performers/VenueInfo.spec.js +167 -167
  43. package/dist/components/pages/performers/VenueItemCard.spec.js +763 -763
  44. package/dist/components/pages/profile/profile-form.spec.js +9 -9
  45. package/dist/components/pages/settings/tabs/CustomImageDropzone.svelte +3 -3
  46. package/dist/components/pages/shows/ShowList.spec.js +33 -33
  47. package/dist/components/pages/shows/TabContent.spec.js +90 -90
  48. package/dist/components/pages/shows/TabNavigation.spec.js +143 -143
  49. package/dist/config.js +5 -5
  50. package/dist/config.spec.js +29 -29
  51. package/dist/constants/formOptions.js +25 -25
  52. package/dist/constants/formOptions.spec.js +88 -88
  53. package/dist/index.js +111 -111
  54. package/dist/stores/auth.d.ts +9 -0
  55. package/dist/stores/auth.d.ts.map +1 -0
  56. package/dist/stores/auth.js +36 -0
  57. package/dist/stores/auth.spec.d.ts +2 -0
  58. package/dist/stores/auth.spec.d.ts.map +1 -0
  59. package/dist/stores/auth.spec.js +139 -0
  60. package/dist/stores/formDataStore.d.ts +17 -0
  61. package/dist/stores/formDataStore.d.ts.map +1 -0
  62. package/dist/stores/formDataStore.js +25 -0
  63. package/dist/stores/formDataStore.spec.d.ts +2 -0
  64. package/dist/stores/formDataStore.spec.d.ts.map +1 -0
  65. package/dist/stores/formDataStore.spec.js +257 -0
  66. package/dist/stores/formSave.d.ts +24 -0
  67. package/dist/stores/formSave.d.ts.map +1 -0
  68. package/dist/stores/formSave.js +132 -0
  69. package/dist/stores/formSave.spec.d.ts +2 -0
  70. package/dist/stores/formSave.spec.d.ts.map +1 -0
  71. package/dist/stores/formSave.spec.js +296 -0
  72. package/dist/stores/index.d.ts +1 -0
  73. package/dist/stores/index.d.ts.map +1 -0
  74. package/dist/stores/index.js +0 -0
  75. package/dist/stores/navigation.d.ts +5 -0
  76. package/dist/stores/navigation.d.ts.map +1 -0
  77. package/dist/stores/navigation.js +12 -0
  78. package/dist/stores/navigation.spec.d.ts +2 -0
  79. package/dist/stores/navigation.spec.d.ts.map +1 -0
  80. package/dist/stores/navigation.spec.js +136 -0
  81. package/dist/stores/toaster.d.ts +4 -0
  82. package/dist/stores/toaster.d.ts.map +1 -0
  83. package/dist/stores/toaster.js +13 -0
  84. package/dist/stores/toaster.spec.d.ts +2 -0
  85. package/dist/stores/toaster.spec.d.ts.map +1 -0
  86. package/dist/stores/toaster.spec.js +59 -0
  87. package/dist/telemetry.js +357 -357
  88. package/dist/telemetry.server.js +211 -211
  89. package/dist/telemetry.server.spec.js +434 -434
  90. package/dist/telemetry.spec.js +660 -660
  91. package/dist/utils/apiConfig.js +49 -49
  92. package/dist/utils/apiConfig.spec.js +118 -118
  93. package/dist/utils/greetings.js +187 -187
  94. package/dist/utils/greetings.spec.js +337 -337
  95. package/dist/utils/imageValidation.js +121 -121
  96. package/dist/utils/imageValidation.spec.js +220 -220
  97. package/dist/utils/portal.js +25 -25
  98. package/dist/utils/portal.spec.js +143 -143
  99. package/dist/utils/utils/utils.js +323 -323
  100. package/dist/utils/utils/utils.spec.js +698 -698
  101. package/dist/utils/utils.spec.js +643 -643
  102. package/package.json +1 -1
@@ -1,25 +1,25 @@
1
- /**
2
- * Form options for dropdowns used across the performers portal.
3
- * Use these with Select and MultiSelect components instead of
4
- * creating wrapper components like GenderInput or EthnicityDropdown.
5
- *
6
- * Example:
7
- * import { GENDER_OPTIONS } from './formOptions';
8
- * <Select items={GENDER_OPTIONS} label="Gender" />
9
- */
10
-
11
- export const GENDER_OPTIONS = [
12
- { name: "Male", value: 1 },
13
- { name: "Female", value: 2 },
14
- { name: "Non-Binary", value: 3 },
15
- ];
16
-
17
- export const ETHNICITY_OPTIONS = [
18
- { name: "American Indian or Alaska Native", value: 0 },
19
- { name: "Asian", value: 1 },
20
- { name: "Black or African American", value: 2 },
21
- { name: "Hispanic or Latino", value: 3 },
22
- { name: "Middle Eastern or North African", value: 4 },
23
- { name: "Native Hawaiian or Pacific Islander", value: 5 },
24
- { name: "White", value: 6 },
25
- ];
1
+ /**
2
+ * Form options for dropdowns used across the performers portal.
3
+ * Use these with Select and MultiSelect components instead of
4
+ * creating wrapper components like GenderInput or EthnicityDropdown.
5
+ *
6
+ * Example:
7
+ * import { GENDER_OPTIONS } from './formOptions';
8
+ * <Select items={GENDER_OPTIONS} label="Gender" />
9
+ */
10
+
11
+ export const GENDER_OPTIONS = [
12
+ { name: "Male", value: 1 },
13
+ { name: "Female", value: 2 },
14
+ { name: "Non-Binary", value: 3 },
15
+ ];
16
+
17
+ export const ETHNICITY_OPTIONS = [
18
+ { name: "American Indian or Alaska Native", value: 0 },
19
+ { name: "Asian", value: 1 },
20
+ { name: "Black or African American", value: 2 },
21
+ { name: "Hispanic or Latino", value: 3 },
22
+ { name: "Middle Eastern or North African", value: 4 },
23
+ { name: "Native Hawaiian or Pacific Islander", value: 5 },
24
+ { name: "White", value: 6 },
25
+ ];
@@ -1,88 +1,88 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { GENDER_OPTIONS, ETHNICITY_OPTIONS } from './formOptions.js';
3
-
4
- describe('formOptions', () => {
5
- describe('GENDER_OPTIONS', () => {
6
- it('exports gender options array', () => {
7
- expect(GENDER_OPTIONS).toBeDefined();
8
- expect(Array.isArray(GENDER_OPTIONS)).toBe(true);
9
- });
10
-
11
- it('has three options', () => {
12
- expect(GENDER_OPTIONS.length).toBe(3);
13
- });
14
-
15
- it('contains Male option with value 1', () => {
16
- const male = GENDER_OPTIONS.find(opt => opt.name === 'Male');
17
- expect(male).toBeDefined();
18
- expect(male.value).toBe(1);
19
- });
20
-
21
- it('contains Female option with value 2', () => {
22
- const female = GENDER_OPTIONS.find(opt => opt.name === 'Female');
23
- expect(female).toBeDefined();
24
- expect(female.value).toBe(2);
25
- });
26
-
27
- it('contains Non-Binary option with value 3', () => {
28
- const nonBinary = GENDER_OPTIONS.find(opt => opt.name === 'Non-Binary');
29
- expect(nonBinary).toBeDefined();
30
- expect(nonBinary.value).toBe(3);
31
- });
32
-
33
- it('each option has name and value properties', () => {
34
- GENDER_OPTIONS.forEach(option => {
35
- expect(option).toHaveProperty('name');
36
- expect(option).toHaveProperty('value');
37
- expect(typeof option.name).toBe('string');
38
- expect(typeof option.value).toBe('number');
39
- });
40
- });
41
- });
42
-
43
- describe('ETHNICITY_OPTIONS', () => {
44
- it('exports ethnicity options array', () => {
45
- expect(ETHNICITY_OPTIONS).toBeDefined();
46
- expect(Array.isArray(ETHNICITY_OPTIONS)).toBe(true);
47
- });
48
-
49
- it('has seven options', () => {
50
- expect(ETHNICITY_OPTIONS.length).toBe(7);
51
- });
52
-
53
- it('contains all expected ethnicities', () => {
54
- const names = ETHNICITY_OPTIONS.map(opt => opt.name);
55
- expect(names).toContain('American Indian or Alaska Native');
56
- expect(names).toContain('Asian');
57
- expect(names).toContain('Black or African American');
58
- expect(names).toContain('Hispanic or Latino');
59
- expect(names).toContain('Middle Eastern or North African');
60
- expect(names).toContain('Native Hawaiian or Pacific Islander');
61
- expect(names).toContain('White');
62
- });
63
-
64
- it('has values 0 through 6', () => {
65
- const values = ETHNICITY_OPTIONS.map(opt => opt.value).sort((a, b) => a - b);
66
- expect(values).toEqual([0, 1, 2, 3, 4, 5, 6]);
67
- });
68
-
69
- it('each option has name and value properties', () => {
70
- ETHNICITY_OPTIONS.forEach(option => {
71
- expect(option).toHaveProperty('name');
72
- expect(option).toHaveProperty('value');
73
- expect(typeof option.name).toBe('string');
74
- expect(typeof option.value).toBe('number');
75
- });
76
- });
77
-
78
- it('American Indian or Alaska Native has value 0', () => {
79
- const option = ETHNICITY_OPTIONS.find(opt => opt.name === 'American Indian or Alaska Native');
80
- expect(option.value).toBe(0);
81
- });
82
-
83
- it('White has value 6', () => {
84
- const option = ETHNICITY_OPTIONS.find(opt => opt.name === 'White');
85
- expect(option.value).toBe(6);
86
- });
87
- });
88
- });
1
+ import { describe, it, expect } from 'vitest';
2
+ import { GENDER_OPTIONS, ETHNICITY_OPTIONS } from './formOptions.js';
3
+
4
+ describe('formOptions', () => {
5
+ describe('GENDER_OPTIONS', () => {
6
+ it('exports gender options array', () => {
7
+ expect(GENDER_OPTIONS).toBeDefined();
8
+ expect(Array.isArray(GENDER_OPTIONS)).toBe(true);
9
+ });
10
+
11
+ it('has three options', () => {
12
+ expect(GENDER_OPTIONS.length).toBe(3);
13
+ });
14
+
15
+ it('contains Male option with value 1', () => {
16
+ const male = GENDER_OPTIONS.find(opt => opt.name === 'Male');
17
+ expect(male).toBeDefined();
18
+ expect(male.value).toBe(1);
19
+ });
20
+
21
+ it('contains Female option with value 2', () => {
22
+ const female = GENDER_OPTIONS.find(opt => opt.name === 'Female');
23
+ expect(female).toBeDefined();
24
+ expect(female.value).toBe(2);
25
+ });
26
+
27
+ it('contains Non-Binary option with value 3', () => {
28
+ const nonBinary = GENDER_OPTIONS.find(opt => opt.name === 'Non-Binary');
29
+ expect(nonBinary).toBeDefined();
30
+ expect(nonBinary.value).toBe(3);
31
+ });
32
+
33
+ it('each option has name and value properties', () => {
34
+ GENDER_OPTIONS.forEach(option => {
35
+ expect(option).toHaveProperty('name');
36
+ expect(option).toHaveProperty('value');
37
+ expect(typeof option.name).toBe('string');
38
+ expect(typeof option.value).toBe('number');
39
+ });
40
+ });
41
+ });
42
+
43
+ describe('ETHNICITY_OPTIONS', () => {
44
+ it('exports ethnicity options array', () => {
45
+ expect(ETHNICITY_OPTIONS).toBeDefined();
46
+ expect(Array.isArray(ETHNICITY_OPTIONS)).toBe(true);
47
+ });
48
+
49
+ it('has seven options', () => {
50
+ expect(ETHNICITY_OPTIONS.length).toBe(7);
51
+ });
52
+
53
+ it('contains all expected ethnicities', () => {
54
+ const names = ETHNICITY_OPTIONS.map(opt => opt.name);
55
+ expect(names).toContain('American Indian or Alaska Native');
56
+ expect(names).toContain('Asian');
57
+ expect(names).toContain('Black or African American');
58
+ expect(names).toContain('Hispanic or Latino');
59
+ expect(names).toContain('Middle Eastern or North African');
60
+ expect(names).toContain('Native Hawaiian or Pacific Islander');
61
+ expect(names).toContain('White');
62
+ });
63
+
64
+ it('has values 0 through 6', () => {
65
+ const values = ETHNICITY_OPTIONS.map(opt => opt.value).sort((a, b) => a - b);
66
+ expect(values).toEqual([0, 1, 2, 3, 4, 5, 6]);
67
+ });
68
+
69
+ it('each option has name and value properties', () => {
70
+ ETHNICITY_OPTIONS.forEach(option => {
71
+ expect(option).toHaveProperty('name');
72
+ expect(option).toHaveProperty('value');
73
+ expect(typeof option.name).toBe('string');
74
+ expect(typeof option.value).toBe('number');
75
+ });
76
+ });
77
+
78
+ it('American Indian or Alaska Native has value 0', () => {
79
+ const option = ETHNICITY_OPTIONS.find(opt => opt.name === 'American Indian or Alaska Native');
80
+ expect(option.value).toBe(0);
81
+ });
82
+
83
+ it('White has value 6', () => {
84
+ const option = ETHNICITY_OPTIONS.find(opt => opt.name === 'White');
85
+ expect(option.value).toBe(6);
86
+ });
87
+ });
88
+ });
package/dist/index.js CHANGED
@@ -1,111 +1,111 @@
1
- // Core Components
2
- export { default as Alert } from './components/Alert/Alert.svelte';
3
- export { default as Badge } from './components/Badges/Badge.svelte';
4
- export { default as BottomSheet } from './components/BottomSheet/BottomSheet.svelte';
5
- export { default as Breadcrumb } from './components/Breadcrumb/Breadcrumb.svelte';
6
- export { default as Button } from './components/Button/Button.svelte';
7
- export { default as ButtonSaveDemo } from './components/Button/ButtonSaveDemo.svelte';
8
- export { default as Card } from './components/Card.svelte';
9
- export { default as DarkModeToggle } from './components/DarkModeToggle.svelte';
10
- export { default as ErrorDisplay } from './components/ErrorDisplay.svelte';
11
- export { default as FormActions } from './components/FormActions.svelte';
12
- export { default as FormValidationSummary } from './components/FormValidationSummary.svelte';
13
- export { default as PageLoader } from './components/PageLoader.svelte';
14
- export { default as Toggle } from './components/Toggle.svelte';
15
- export { default as ValidationError } from './components/ValidationError.svelte';
16
-
17
- // Calendar Components
18
- export { default as Calendar } from './components/Calendar/Calendar.svelte';
19
- export { default as QuarterView } from './components/Calendar/QuarterView.svelte';
20
-
21
- // CropImage
22
- export { default as CropImage } from './components/CropImage/CropImage.svelte';
23
-
24
- // Icons
25
- export { default as Icon } from './components/Icons/Icon.svelte';
26
- export { default as ArrowLeft } from './components/Icons/ArrowLeft.svelte';
27
- export { default as ArrowRight } from './components/Icons/ArrowRight.svelte';
28
- export { default as Availability } from './components/Icons/Availability.svelte';
29
- export { default as Back } from './components/Icons/Back.svelte';
30
- export { default as CheckCircle } from './components/Icons/CheckCircle.svelte';
31
- export { default as CheckCircleOutline } from './components/Icons/CheckCircleOutline.svelte';
32
- export { default as ChevronLeft } from './components/Icons/ChevronLeft.svelte';
33
- export { default as ChevronRight } from './components/Icons/ChevronRight.svelte';
34
- export { default as Copy } from './components/Icons/Copy.svelte';
35
- export { default as Cross } from './components/Icons/Cross.svelte';
36
- export { default as DownArrow } from './components/Icons/DownArrow.svelte';
37
- export { default as ErrorCircle } from './components/Icons/ErrorCircle.svelte';
38
- export { default as FacebookIcon } from './components/Icons/FacebookIcon.svelte';
39
- export { default as Home } from './components/Icons/Home.svelte';
40
- export { default as Info } from './components/Icons/Info.svelte';
41
- export { default as InstagramIcon } from './components/Icons/InstagramIcon.svelte';
42
- export { default as Message } from './components/Icons/Message.svelte';
43
- export { default as MoonIcon } from './components/Icons/MoonIcon.svelte';
44
- export { default as More } from './components/Icons/More.svelte';
45
- export { default as MoreHori } from './components/Icons/MoreHori.svelte';
46
- export { default as Notification } from './components/Icons/Notification.svelte';
47
- export { default as Payment } from './components/Icons/Payment.svelte';
48
- export { default as Profile } from './components/Icons/Profile.svelte';
49
- export { default as Reload } from './components/Icons/Reload.svelte';
50
- export { default as Shows } from './components/Icons/Shows.svelte';
51
- export { default as Signout } from './components/Icons/Signout.svelte';
52
- export { default as SunIcon } from './components/Icons/SunIcon.svelte';
53
- export { default as TiktokIcon } from './components/Icons/TiktokIcon.svelte';
54
- export { default as TwitterIcon } from './components/Icons/TwitterIcon.svelte';
55
- export { default as WarningIcon } from './components/Icons/WarningIcon.svelte';
56
-
57
- // Input Components
58
- export { default as Input } from './components/Input/Input.svelte';
59
- export { default as MultiSelect } from './components/Input/MultiSelect.svelte';
60
- export { default as OTPInput } from './components/Input/OTPInput.svelte';
61
- export { default as Select } from './components/Input/Select.svelte';
62
-
63
- // Layout Components
64
- export { default as BottomNav } from './components/Layout/BottomNav.svelte';
65
- export { default as Header } from './components/Layout/Header.svelte';
66
-
67
- // Modal Components
68
- export { default as Modal } from './components/Modal/Modal.svelte';
69
- export { default as ConfirmationModal } from './components/Modal/ConfirmationModal.svelte';
70
- export { default as ModalStateManager } from './components/Modal/ModalStateManager.svelte';
71
- export { default as ModalTestWrapper } from './components/Modal/ModalTestWrapper.svelte';
72
-
73
- // PlaceAutocomplete
74
- export { default as PlaceAutocomplete } from './components/PlaceAutocomplete/PlaceAutocomplete.svelte';
75
-
76
- // Spinner
77
- export { default as Spinner } from './components/Spinner/Spinner.svelte';
78
-
79
- // Password Strength Indicator
80
- export { default as PasswordStrengthIndicator } from './components/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte';
81
-
82
- // Status Indicator
83
- export { default as StatusIndicator } from './components/StatusIndicator/StatusIndicator.svelte';
84
-
85
- // Page-specific Components - Performers
86
- export { default as AvailabilityCalendarModal } from './components/pages/performers/AvailabilityCalendarModal.svelte';
87
- export { default as ModalShowInfo } from './components/pages/performers/ModalShowInfo.svelte';
88
- export { default as PageBackButton } from './components/pages/performers/PageBackButton.svelte';
89
- export { default as SectionHeader } from './components/pages/performers/SectionHeader.svelte';
90
- export { default as ShowDetails } from './components/pages/performers/ShowDetails.svelte';
91
- export { default as ShowItemCard } from './components/pages/performers/ShowItemCard.svelte';
92
- export { default as SwitchOption } from './components/pages/performers/SwitchOption.svelte';
93
- export { default as VenueInfo } from './components/pages/performers/VenueInfo.svelte';
94
- export { default as VenueItemCard } from './components/pages/performers/VenueItemCard.svelte';
95
-
96
- // Page-specific Components - Profile
97
- export { default as ProfileForm } from './components/pages/profile/profile-form.svelte';
98
- export { default as ProfilePhotos } from './components/pages/profile/profile-photos.svelte';
99
-
100
- // Page-specific Components - Settings
101
- export { default as CustomImageDropzone } from './components/pages/settings/tabs/CustomImageDropzone.svelte';
102
-
103
- // Page-specific Components - Shows
104
- export { default as ShowList } from './components/pages/shows/ShowList.svelte';
105
- export { default as TabContent } from './components/pages/shows/TabContent.svelte';
106
- export { default as TabNavigation } from './components/pages/shows/TabNavigation.svelte';
107
-
108
- // Lib exports (non-component)
109
- export { config } from './config.js';
110
- export * from './telemetry.js';
111
- export * from './constants/formOptions.js';
1
+ // Core Components
2
+ export { default as Alert } from './components/Alert/Alert.svelte';
3
+ export { default as Badge } from './components/Badges/Badge.svelte';
4
+ export { default as BottomSheet } from './components/BottomSheet/BottomSheet.svelte';
5
+ export { default as Breadcrumb } from './components/Breadcrumb/Breadcrumb.svelte';
6
+ export { default as Button } from './components/Button/Button.svelte';
7
+ export { default as ButtonSaveDemo } from './components/Button/ButtonSaveDemo.svelte';
8
+ export { default as Card } from './components/Card.svelte';
9
+ export { default as DarkModeToggle } from './components/DarkModeToggle.svelte';
10
+ export { default as ErrorDisplay } from './components/ErrorDisplay.svelte';
11
+ export { default as FormActions } from './components/FormActions.svelte';
12
+ export { default as FormValidationSummary } from './components/FormValidationSummary.svelte';
13
+ export { default as PageLoader } from './components/PageLoader.svelte';
14
+ export { default as Toggle } from './components/Toggle.svelte';
15
+ export { default as ValidationError } from './components/ValidationError.svelte';
16
+
17
+ // Calendar Components
18
+ export { default as Calendar } from './components/Calendar/Calendar.svelte';
19
+ export { default as QuarterView } from './components/Calendar/QuarterView.svelte';
20
+
21
+ // CropImage
22
+ export { default as CropImage } from './components/CropImage/CropImage.svelte';
23
+
24
+ // Icons
25
+ export { default as Icon } from './components/Icons/Icon.svelte';
26
+ export { default as ArrowLeft } from './components/Icons/ArrowLeft.svelte';
27
+ export { default as ArrowRight } from './components/Icons/ArrowRight.svelte';
28
+ export { default as Availability } from './components/Icons/Availability.svelte';
29
+ export { default as Back } from './components/Icons/Back.svelte';
30
+ export { default as CheckCircle } from './components/Icons/CheckCircle.svelte';
31
+ export { default as CheckCircleOutline } from './components/Icons/CheckCircleOutline.svelte';
32
+ export { default as ChevronLeft } from './components/Icons/ChevronLeft.svelte';
33
+ export { default as ChevronRight } from './components/Icons/ChevronRight.svelte';
34
+ export { default as Copy } from './components/Icons/Copy.svelte';
35
+ export { default as Cross } from './components/Icons/Cross.svelte';
36
+ export { default as DownArrow } from './components/Icons/DownArrow.svelte';
37
+ export { default as ErrorCircle } from './components/Icons/ErrorCircle.svelte';
38
+ export { default as FacebookIcon } from './components/Icons/FacebookIcon.svelte';
39
+ export { default as Home } from './components/Icons/Home.svelte';
40
+ export { default as Info } from './components/Icons/Info.svelte';
41
+ export { default as InstagramIcon } from './components/Icons/InstagramIcon.svelte';
42
+ export { default as Message } from './components/Icons/Message.svelte';
43
+ export { default as MoonIcon } from './components/Icons/MoonIcon.svelte';
44
+ export { default as More } from './components/Icons/More.svelte';
45
+ export { default as MoreHori } from './components/Icons/MoreHori.svelte';
46
+ export { default as Notification } from './components/Icons/Notification.svelte';
47
+ export { default as Payment } from './components/Icons/Payment.svelte';
48
+ export { default as Profile } from './components/Icons/Profile.svelte';
49
+ export { default as Reload } from './components/Icons/Reload.svelte';
50
+ export { default as Shows } from './components/Icons/Shows.svelte';
51
+ export { default as Signout } from './components/Icons/Signout.svelte';
52
+ export { default as SunIcon } from './components/Icons/SunIcon.svelte';
53
+ export { default as TiktokIcon } from './components/Icons/TiktokIcon.svelte';
54
+ export { default as TwitterIcon } from './components/Icons/TwitterIcon.svelte';
55
+ export { default as WarningIcon } from './components/Icons/WarningIcon.svelte';
56
+
57
+ // Input Components
58
+ export { default as Input } from './components/Input/Input.svelte';
59
+ export { default as MultiSelect } from './components/Input/MultiSelect.svelte';
60
+ export { default as OTPInput } from './components/Input/OTPInput.svelte';
61
+ export { default as Select } from './components/Input/Select.svelte';
62
+
63
+ // Layout Components
64
+ export { default as BottomNav } from './components/Layout/BottomNav.svelte';
65
+ export { default as Header } from './components/Layout/Header.svelte';
66
+
67
+ // Modal Components
68
+ export { default as Modal } from './components/Modal/Modal.svelte';
69
+ export { default as ConfirmationModal } from './components/Modal/ConfirmationModal.svelte';
70
+ export { default as ModalStateManager } from './components/Modal/ModalStateManager.svelte';
71
+ export { default as ModalTestWrapper } from './components/Modal/ModalTestWrapper.svelte';
72
+
73
+ // PlaceAutocomplete
74
+ export { default as PlaceAutocomplete } from './components/PlaceAutocomplete/PlaceAutocomplete.svelte';
75
+
76
+ // Spinner
77
+ export { default as Spinner } from './components/Spinner/Spinner.svelte';
78
+
79
+ // Password Strength Indicator
80
+ export { default as PasswordStrengthIndicator } from './components/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte';
81
+
82
+ // Status Indicator
83
+ export { default as StatusIndicator } from './components/StatusIndicator/StatusIndicator.svelte';
84
+
85
+ // Page-specific Components - Performers
86
+ export { default as AvailabilityCalendarModal } from './components/pages/performers/AvailabilityCalendarModal.svelte';
87
+ export { default as ModalShowInfo } from './components/pages/performers/ModalShowInfo.svelte';
88
+ export { default as PageBackButton } from './components/pages/performers/PageBackButton.svelte';
89
+ export { default as SectionHeader } from './components/pages/performers/SectionHeader.svelte';
90
+ export { default as ShowDetails } from './components/pages/performers/ShowDetails.svelte';
91
+ export { default as ShowItemCard } from './components/pages/performers/ShowItemCard.svelte';
92
+ export { default as SwitchOption } from './components/pages/performers/SwitchOption.svelte';
93
+ export { default as VenueInfo } from './components/pages/performers/VenueInfo.svelte';
94
+ export { default as VenueItemCard } from './components/pages/performers/VenueItemCard.svelte';
95
+
96
+ // Page-specific Components - Profile
97
+ export { default as ProfileForm } from './components/pages/profile/profile-form.svelte';
98
+ export { default as ProfilePhotos } from './components/pages/profile/profile-photos.svelte';
99
+
100
+ // Page-specific Components - Settings
101
+ export { default as CustomImageDropzone } from './components/pages/settings/tabs/CustomImageDropzone.svelte';
102
+
103
+ // Page-specific Components - Shows
104
+ export { default as ShowList } from './components/pages/shows/ShowList.svelte';
105
+ export { default as TabContent } from './components/pages/shows/TabContent.svelte';
106
+ export { default as TabNavigation } from './components/pages/shows/TabNavigation.svelte';
107
+
108
+ // Lib exports (non-component)
109
+ export { config } from './config.js';
110
+ export * from './telemetry.js';
111
+ export * from './constants/formOptions.js';
@@ -0,0 +1,9 @@
1
+ export const auth: import("svelte/store").Writable<{
2
+ isAuthenticated: boolean;
3
+ token: null;
4
+ userDetails: null;
5
+ }>;
6
+ export function setAuthState(state: any): void;
7
+ export function clearAuthState(): void;
8
+ export function initializeAuthState(): void;
9
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["auth.js"],"names":[],"mappings":"AAGA;;;;GAIG;AAGI,+CAEN;AAGM,uCAEN;AAGM,4CAeN"}
@@ -0,0 +1,36 @@
1
+ import { writable } from "svelte/store";
2
+
3
+ // Store to manage authentication state
4
+ export const auth = writable({
5
+ isAuthenticated: false,
6
+ token: null,
7
+ userDetails: null, // To store email and first name
8
+ });
9
+
10
+ // Function to set authentication state
11
+ export const setAuthState = (state) => {
12
+ auth.set(state);
13
+ };
14
+
15
+ // Function to clear the authentication state
16
+ export const clearAuthState = () => {
17
+ auth.set({ isAuthenticated: false, token: null, userDetails: null });
18
+ };
19
+
20
+ // Initialize the store from cookies
21
+ export const initializeAuthState = () => {
22
+ const cookies = Object.fromEntries(
23
+ document.cookie
24
+ .split("; ")
25
+ .map((c) => c.split("="))
26
+ .map(([k, v]) => [k, decodeURIComponent(v)])
27
+ );
28
+
29
+ if (cookies.performer_token) {
30
+ setAuthState({
31
+ isAuthenticated: true,
32
+ token: cookies.performer_token,
33
+ userDetails: cookies.userDetails ? JSON.parse(cookies.userDetails) : null,
34
+ });
35
+ }
36
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=auth.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.spec.d.ts","sourceRoot":"","sources":["../../src/lib/stores/auth.spec.js"],"names":[],"mappings":""}
@@ -0,0 +1,139 @@
1
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
2
+ import { get } from 'svelte/store';
3
+ import { auth, setAuthState, clearAuthState, initializeAuthState } from './auth';
4
+
5
+ describe('auth store', () => {
6
+ beforeEach(() => {
7
+ // Reset auth state before each test
8
+ clearAuthState();
9
+ // Clear cookies
10
+ Object.defineProperty(document, 'cookie', {
11
+ writable: true,
12
+ value: '',
13
+ });
14
+ });
15
+
16
+ describe('initial state', () => {
17
+ it('starts with isAuthenticated as false', () => {
18
+ expect(get(auth).isAuthenticated).toBe(false);
19
+ });
20
+
21
+ it('starts with token as null', () => {
22
+ expect(get(auth).token).toBe(null);
23
+ });
24
+
25
+ it('starts with userDetails as null', () => {
26
+ expect(get(auth).userDetails).toBe(null);
27
+ });
28
+ });
29
+
30
+ describe('setAuthState', () => {
31
+ it('sets authentication state', () => {
32
+ setAuthState({
33
+ isAuthenticated: true,
34
+ token: 'test-token',
35
+ userDetails: { email: 'test@test.com' },
36
+ });
37
+
38
+ const state = get(auth);
39
+ expect(state.isAuthenticated).toBe(true);
40
+ expect(state.token).toBe('test-token');
41
+ expect(state.userDetails).toEqual({ email: 'test@test.com' });
42
+ });
43
+
44
+ it('can update partial state', () => {
45
+ setAuthState({ isAuthenticated: true, token: 'token1', userDetails: null });
46
+ setAuthState({ isAuthenticated: true, token: 'token2', userDetails: { name: 'User' } });
47
+
48
+ const state = get(auth);
49
+ expect(state.token).toBe('token2');
50
+ expect(state.userDetails).toEqual({ name: 'User' });
51
+ });
52
+ });
53
+
54
+ describe('clearAuthState', () => {
55
+ it('clears authentication state', () => {
56
+ setAuthState({
57
+ isAuthenticated: true,
58
+ token: 'test-token',
59
+ userDetails: { email: 'test@test.com' },
60
+ });
61
+
62
+ clearAuthState();
63
+
64
+ const state = get(auth);
65
+ expect(state.isAuthenticated).toBe(false);
66
+ expect(state.token).toBe(null);
67
+ expect(state.userDetails).toBe(null);
68
+ });
69
+ });
70
+
71
+ describe('initializeAuthState', () => {
72
+ it('does nothing when no performer_token cookie exists', () => {
73
+ Object.defineProperty(document, 'cookie', {
74
+ writable: true,
75
+ value: '',
76
+ });
77
+
78
+ initializeAuthState();
79
+
80
+ const state = get(auth);
81
+ expect(state.isAuthenticated).toBe(false);
82
+ });
83
+
84
+ it('sets auth state from performer_token cookie', () => {
85
+ Object.defineProperty(document, 'cookie', {
86
+ writable: true,
87
+ value: 'performer_token=my-token',
88
+ });
89
+
90
+ initializeAuthState();
91
+
92
+ const state = get(auth);
93
+ expect(state.isAuthenticated).toBe(true);
94
+ expect(state.token).toBe('my-token');
95
+ });
96
+
97
+ it('parses userDetails cookie when present', () => {
98
+ const userDetails = JSON.stringify({ email: 'test@test.com', firstName: 'Test' });
99
+ Object.defineProperty(document, 'cookie', {
100
+ writable: true,
101
+ value: `performer_token=my-token; userDetails=${encodeURIComponent(userDetails)}`,
102
+ });
103
+
104
+ initializeAuthState();
105
+
106
+ const state = get(auth);
107
+ expect(state.userDetails).toEqual({ email: 'test@test.com', firstName: 'Test' });
108
+ });
109
+
110
+ it('handles missing userDetails cookie', () => {
111
+ Object.defineProperty(document, 'cookie', {
112
+ writable: true,
113
+ value: 'performer_token=my-token',
114
+ });
115
+
116
+ initializeAuthState();
117
+
118
+ const state = get(auth);
119
+ expect(state.isAuthenticated).toBe(true);
120
+ expect(state.userDetails).toBe(null);
121
+ });
122
+ });
123
+
124
+ describe('store subscription', () => {
125
+ it('can subscribe to auth changes', () => {
126
+ const values = [];
127
+ const unsubscribe = auth.subscribe((value) => {
128
+ values.push(value.isAuthenticated);
129
+ });
130
+
131
+ setAuthState({ isAuthenticated: true, token: 'token', userDetails: null });
132
+ clearAuthState();
133
+
134
+ unsubscribe();
135
+
136
+ expect(values).toEqual([false, true, false]);
137
+ });
138
+ });
139
+ });