@getmicdrop/svelte-components 5.3.6 → 5.3.12

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 (132) hide show
  1. package/dist/calendar/AboutShow/AboutShow.svelte +9 -8
  2. package/dist/calendar/AboutShow/AboutShow.svelte.d.ts.map +1 -1
  3. package/dist/calendar/Calendar/MiniMonthCalendar.svelte +13 -12
  4. package/dist/calendar/Calendar/MiniMonthCalendar.svelte.d.ts.map +1 -1
  5. package/dist/calendar/FAQs/FAQs.svelte +6 -5
  6. package/dist/calendar/FAQs/FAQs.svelte.d.ts.map +1 -1
  7. package/dist/calendar/MonthSwitcher/MonthSwitcher.svelte +3 -2
  8. package/dist/calendar/MonthSwitcher/MonthSwitcher.svelte.d.ts.map +1 -1
  9. package/dist/calendar/OrderSummary/OrderSummary.svelte +69 -28
  10. package/dist/calendar/OrderSummary/OrderSummary.svelte.d.ts +2 -0
  11. package/dist/calendar/OrderSummary/OrderSummary.svelte.d.ts.map +1 -1
  12. package/dist/calendar/PublicCard/PublicCard.svelte +7 -9
  13. package/dist/calendar/PublicCard/PublicCard.svelte.d.ts.map +1 -1
  14. package/dist/calendar/ShowCard/ShowCard.svelte +11 -10
  15. package/dist/calendar/ShowCard/ShowCard.svelte.d.ts.map +1 -1
  16. package/dist/calendar/ShowTimeCard/ShowTimeCard.svelte +5 -3
  17. package/dist/calendar/ShowTimeCard/ShowTimeCard.svelte.d.ts.map +1 -1
  18. package/dist/components/Layout/Section.svelte +4 -4
  19. package/dist/components/Layout/Section.svelte.d.ts.map +1 -1
  20. package/dist/index.d.ts +3 -0
  21. package/dist/index.js +9 -0
  22. package/dist/patterns/data/DataTable.svelte +4 -2
  23. package/dist/patterns/data/DataTable.svelte.d.ts.map +1 -1
  24. package/dist/patterns/forms/FormSection.svelte +4 -2
  25. package/dist/patterns/forms/FormSection.svelte.d.ts.map +1 -1
  26. package/dist/patterns/navigation/BottomNav.svelte +4 -3
  27. package/dist/patterns/navigation/BottomNav.svelte.d.ts.map +1 -1
  28. package/dist/patterns/navigation/Header.svelte +11 -10
  29. package/dist/patterns/navigation/Header.svelte.d.ts.map +1 -1
  30. package/dist/patterns/page/PageHeader.svelte +3 -2
  31. package/dist/patterns/page/PageHeader.svelte.d.ts.map +1 -1
  32. package/dist/patterns/page/PageLayout.svelte +2 -1
  33. package/dist/patterns/page/PageLayout.svelte.d.ts.map +1 -1
  34. package/dist/patterns/page/PageLoader.svelte +2 -1
  35. package/dist/patterns/page/PageLoader.svelte.d.ts.map +1 -1
  36. package/dist/patterns/page/SectionHeader.svelte +5 -3
  37. package/dist/patterns/page/SectionHeader.svelte.d.ts.map +1 -1
  38. package/dist/primitives/Accordion/Accordion.svelte +2 -1
  39. package/dist/primitives/Accordion/Accordion.svelte.d.ts.map +1 -1
  40. package/dist/primitives/Accordion/AccordionItem.svelte +6 -5
  41. package/dist/primitives/Accordion/AccordionItem.svelte.d.ts.map +1 -1
  42. package/dist/primitives/BottomSheet/BottomSheet.svelte +2 -1
  43. package/dist/primitives/BottomSheet/BottomSheet.svelte.d.ts.map +1 -1
  44. package/dist/primitives/Breadcrumb/Breadcrumb.svelte +6 -5
  45. package/dist/primitives/Breadcrumb/Breadcrumb.svelte.d.ts.map +1 -1
  46. package/dist/primitives/Button/Button.svelte +27 -10
  47. package/dist/primitives/Button/Button.svelte.d.ts.map +1 -1
  48. package/dist/primitives/Button/ButtonSaveDemo.svelte +2 -1
  49. package/dist/primitives/Button/ButtonSaveDemo.svelte.d.ts.map +1 -1
  50. package/dist/primitives/Card.svelte +1 -1
  51. package/dist/primitives/Checkbox/Checkbox.svelte +8 -8
  52. package/dist/primitives/DarkModeToggle.svelte +43 -44
  53. package/dist/primitives/DarkModeToggle.svelte.d.ts.map +1 -1
  54. package/dist/primitives/Drawer/Drawer.svelte +121 -47
  55. package/dist/primitives/Drawer/Drawer.svelte.d.ts +4 -0
  56. package/dist/primitives/Drawer/Drawer.svelte.d.ts.map +1 -1
  57. package/dist/primitives/Icons/ImageOutline.svelte +19 -0
  58. package/dist/primitives/Icons/ImageOutline.svelte.d.ts +12 -0
  59. package/dist/primitives/Icons/ImageOutline.svelte.d.ts.map +1 -0
  60. package/dist/primitives/Icons/TrashBinOutline.svelte +19 -0
  61. package/dist/primitives/Icons/TrashBinOutline.svelte.d.ts +12 -0
  62. package/dist/primitives/Icons/TrashBinOutline.svelte.d.ts.map +1 -0
  63. package/dist/primitives/Icons/index.d.ts +2 -0
  64. package/dist/primitives/Icons/index.js +2 -0
  65. package/dist/primitives/Input/Input.svelte +41 -80
  66. package/dist/primitives/Input/Input.svelte.d.ts +4 -6
  67. package/dist/primitives/Input/Input.svelte.d.ts.map +1 -1
  68. package/dist/primitives/Input/Select.svelte +66 -13
  69. package/dist/primitives/Input/Select.svelte.d.ts +2 -0
  70. package/dist/primitives/Input/Select.svelte.d.ts.map +1 -1
  71. package/dist/primitives/Input/Textarea.svelte +5 -3
  72. package/dist/primitives/Input/Textarea.svelte.d.ts.map +1 -1
  73. package/dist/primitives/Modal/Modal.svelte +13 -1
  74. package/dist/primitives/Modal/Modal.svelte.d.ts.map +1 -1
  75. package/dist/primitives/Pagination/Pagination.svelte +3 -2
  76. package/dist/primitives/Pagination/Pagination.svelte.d.ts.map +1 -1
  77. package/dist/primitives/Radio/Radio.svelte +7 -7
  78. package/dist/primitives/Tabs/Tabs.svelte +4 -3
  79. package/dist/primitives/Tabs/Tabs.svelte.d.ts.map +1 -1
  80. package/dist/recipes/CropImage/CropImage.svelte +10 -5
  81. package/dist/recipes/CropImage/CropImage.svelte.d.ts.map +1 -1
  82. package/dist/recipes/ImageUploader/ImageUploader.stories.svelte +125 -0
  83. package/dist/recipes/ImageUploader/ImageUploader.stories.svelte.d.ts +28 -0
  84. package/dist/recipes/ImageUploader/ImageUploader.stories.svelte.d.ts.map +1 -0
  85. package/dist/recipes/ImageUploader/ImageUploader.svelte +980 -0
  86. package/dist/recipes/ImageUploader/ImageUploader.svelte.d.ts +62 -0
  87. package/dist/recipes/ImageUploader/ImageUploader.svelte.d.ts.map +1 -0
  88. package/dist/recipes/SuperLogin/SuperLogin.svelte +37 -40
  89. package/dist/recipes/SuperLogin/SuperLogin.svelte.d.ts.map +1 -1
  90. package/dist/recipes/feedback/EmptyState/EmptyState.svelte +3 -2
  91. package/dist/recipes/feedback/EmptyState/EmptyState.svelte.d.ts.map +1 -1
  92. package/dist/recipes/fields/CheckboxField.svelte +3 -2
  93. package/dist/recipes/fields/CheckboxField.svelte.d.ts.map +1 -1
  94. package/dist/recipes/fields/FormField.svelte +12 -4
  95. package/dist/recipes/fields/FormField.svelte.d.ts +3 -1
  96. package/dist/recipes/fields/FormField.svelte.d.ts.map +1 -1
  97. package/dist/recipes/fields/RadioGroup.svelte +13 -4
  98. package/dist/recipes/fields/RadioGroup.svelte.d.ts +4 -1
  99. package/dist/recipes/fields/RadioGroup.svelte.d.ts.map +1 -1
  100. package/dist/recipes/fields/SelectField.svelte +12 -3
  101. package/dist/recipes/fields/SelectField.svelte.d.ts +4 -1
  102. package/dist/recipes/fields/SelectField.svelte.d.ts.map +1 -1
  103. package/dist/recipes/fields/TextareaField.svelte +2 -1
  104. package/dist/recipes/fields/TextareaField.svelte.d.ts.map +1 -1
  105. package/dist/recipes/fields/ToggleField.svelte +3 -2
  106. package/dist/recipes/fields/ToggleField.svelte.d.ts.map +1 -1
  107. package/dist/recipes/inputs/MultiSelect.svelte +9 -8
  108. package/dist/recipes/inputs/MultiSelect.svelte.d.ts.map +1 -1
  109. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte +9 -9
  110. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte.d.ts.map +1 -1
  111. package/dist/recipes/inputs/Search.svelte +7 -6
  112. package/dist/recipes/inputs/Search.svelte.d.ts.map +1 -1
  113. package/dist/recipes/modals/AlertModal.svelte +3 -2
  114. package/dist/recipes/modals/AlertModal.svelte.d.ts.map +1 -1
  115. package/dist/recipes/modals/ConfirmationModal.svelte +6 -4
  116. package/dist/recipes/modals/ConfirmationModal.svelte.d.ts.map +1 -1
  117. package/dist/recipes/modals/InputModal.svelte +9 -8
  118. package/dist/recipes/modals/InputModal.svelte.d.ts.map +1 -1
  119. package/dist/recipes/modals/ModalStateManager.svelte +4 -3
  120. package/dist/recipes/modals/ModalStateManager.svelte.d.ts.map +1 -1
  121. package/dist/recipes/modals/StatusModal.svelte +5 -4
  122. package/dist/recipes/modals/StatusModal.svelte.d.ts.map +1 -1
  123. package/dist/stories/ButtonAuditReview.svelte +361 -397
  124. package/dist/stories/ButtonAuditReview.svelte.d.ts +24 -4
  125. package/dist/stories/ButtonAuditReview.svelte.d.ts.map +1 -1
  126. package/dist/tokens/index.d.ts +4 -8
  127. package/dist/tokens/index.d.ts.map +1 -1
  128. package/dist/tokens/index.js +4 -8
  129. package/dist/tokens/typography.d.ts +76 -169
  130. package/dist/tokens/typography.d.ts.map +1 -1
  131. package/dist/tokens/typography.js +93 -62
  132. package/package.json +4 -2
@@ -1,5 +1,6 @@
1
1
  <script>
2
2
  import { CloseOutline, LogoInstagram } from '../../primitives/Icons';
3
+ import { typography } from '../../tokens/typography';
3
4
 
4
5
  let {
5
6
  performers = [],
@@ -42,7 +43,7 @@
42
43
 
43
44
  <div class="flex flex-col gap-3">
44
45
  {#if showTitle}
45
- <h2 class="font-medium text-xl text-gray-900 dark:text-white">{title}</h2>
46
+ <h2 class="{typography.h2} text-xl">{title}</h2>
46
47
  {/if}
47
48
 
48
49
  {#if ShowImage && description}
@@ -53,22 +54,22 @@
53
54
 
54
55
  {#if description}
55
56
  {#if showFullDescription || description.length <= characterLimit || !showReadMore}
56
- <p class="text-sm leading-relaxed whitespace-pre-line text-gray-600 dark:text-gray-300">{description}</p>
57
+ <p class={`${typography.sm} leading-relaxed whitespace-pre-line`}>{description}</p>
57
58
  {#if showReadMore && description.length > characterLimit}
58
59
  <button
59
60
  onclick={toggleDescription}
60
- class="text-sm font-medium text-left hover:underline text-blue-700 dark:text-blue-500"
61
+ class={`${typography.label} text-left hover:underline text-blue-700 dark:text-blue-500`}
61
62
  >
62
63
  Show less
63
64
  </button>
64
65
  {/if}
65
66
  {:else}
66
- <p class="text-sm leading-relaxed whitespace-pre-line text-gray-600 dark:text-gray-300">
67
+ <p class={`${typography.sm} leading-relaxed whitespace-pre-line`}>
67
68
  {description.slice(0, characterLimit)}...
68
69
  </p>
69
70
  <button
70
71
  onclick={toggleDescription}
71
- class="text-sm font-medium text-left hover:underline text-blue-700 dark:text-blue-500"
72
+ class={`${typography.label} text-left hover:underline text-blue-700 dark:text-blue-500`}
72
73
  >
73
74
  Show more
74
75
  </button>
@@ -110,12 +111,12 @@
110
111
  <CloseOutline class="w-5 h-5" />
111
112
  </button>
112
113
 
113
- <p class="text-sm leading-relaxed pr-6 text-gray-600 dark:text-gray-300">
114
+ <p class="{typography.sm} leading-relaxed pr-6">
114
115
  {profile?.biography || ''}
115
116
  </p>
116
117
 
117
118
  {#if profile?.instagram || profile?.twitter}
118
- <div class="flex gap-2 items-center text-sm mt-3 pt-3 text-gray-500 dark:text-gray-400 border-t border-gray-200 dark:border-gray-600">
119
+ <div class="flex gap-2 items-center {typography.smMuted} mt-3 pt-3 border-t border-gray-200 dark:border-gray-600">
119
120
  <span>Follow {firstName}:</span>
120
121
  {#if profile?.instagram}
121
122
  <a
@@ -157,7 +158,7 @@
157
158
  alt={displayName || 'Performer'}
158
159
  class="size-16 rounded object-cover {!profile?.profileImage || performer.shouldBeHidden ? 'bg-gray-50 dark:bg-gray-700' : ''}"
159
160
  />
160
- <p class="text-xs text-center leading-tight line-clamp-2 text-gray-600 dark:text-gray-300">
161
+ <p class="{typography.xs} text-center leading-tight line-clamp-2">
161
162
  {#if !performer.shouldBeHidden}
162
163
  {displayName}
163
164
  {/if}
@@ -1 +1 @@
1
- {"version":3,"file":"AboutShow.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/calendar/AboutShow/AboutShow.svelte.js"],"names":[],"mappings":";;;;;AAiJA;iBAzIkC,GAAG,EAAE;gBAAc,MAAM;kBAAgB,MAAM;gBAAc,OAAO;YAAU,MAAM;mBAAiB,OAAO;;WAyItF;wBAzIrC;IAAE,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,WAAU;CAAE"}
1
+ {"version":3,"file":"AboutShow.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/calendar/AboutShow/AboutShow.svelte.js"],"names":[],"mappings":";;;;;AAmJA;iBAzIkC,GAAG,EAAE;gBAAc,MAAM;kBAAgB,MAAM;gBAAc,OAAO;YAAU,MAAM;mBAAiB,OAAO;;WAyItF;wBAzIrC;IAAE,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,WAAU;CAAE"}
@@ -1,6 +1,7 @@
1
1
  <script>
2
2
  import { ChevronLeftOutline, ChevronRightOutline, CheckCircleSolid } from '../../primitives/Icons';
3
3
  import Spinner from '../../primitives/Spinner/Spinner.svelte';
4
+ import { typography } from '../../tokens/typography';
4
5
 
5
6
  let {
6
7
  variant = 'availability',
@@ -321,7 +322,7 @@
321
322
  }
322
323
 
323
324
  triggerHaptic('medium');
324
- onmonthChange?.({ year: currentYear, month: currentMonth });
325
+ onMonthChange?.({ year: currentYear, month: currentMonth });
325
326
 
326
327
  const enterFrom = direction > 0 ? containerWidth : -containerWidth;
327
328
  calendarGridElement.style.transition = 'none';
@@ -614,7 +615,7 @@
614
615
 
615
616
  <!-- svelte-ignore a11y_no_static_element_interactions -->
616
617
  <div
617
- class="w-full max-w-full mx-auto overflow-hidden select-none"
618
+ class="w-full max-w-full mx-auto select-none"
618
619
  class:max-w-xs={variant === 'display'}
619
620
  ontouchstart={handleTouchStart}
620
621
  ontouchmove={handleTouchMove}
@@ -627,7 +628,7 @@
627
628
  {#if showNavigation}
628
629
  <header class="flex items-center justify-between mb-4 select-none">
629
630
  <div class="flex items-center gap-2" bind:this={monthDisplayEl}>
630
- <h2 class="text-3xl font-semibold text-gray-900 dark:text-white leading-tight m-0">{MONTH_NAMES[currentMonth]}</h2>
631
+ <h2 class={typography.h2}>{MONTH_NAMES[currentMonth]}</h2>
631
632
  {#if saveStatus && variant === 'availability'}
632
633
  <span class="flex items-center justify-center ml-1">
633
634
  {#if saveStatus === 'saving'}
@@ -643,7 +644,7 @@
643
644
 
644
645
  <div class="flex items-center gap-2">
645
646
  <button
646
- class="p-3 -m-1.5 flex items-center justify-center border-0 rounded-full bg-transparent text-gray-500 dark:text-gray-400 cursor-pointer select-none transition-transform duration-100 ease-out hover:bg-gray-100 dark:hover:bg-gray-700 hover:text-gray-900 dark:hover:text-white focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed"
647
+ class="p-2 flex items-center justify-center border-0 rounded-lg bg-transparent text-gray-500 dark:text-gray-400 cursor-pointer select-none transition-all duration-100 ease-out hover:bg-gray-100 dark:hover:bg-gray-700 hover:text-gray-900 dark:hover:text-white focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed"
647
648
  class:scale-90={prevPressed}
648
649
  class:bg-gray-100={prevPressed}
649
650
  class:dark:bg-gray-700={prevPressed}
@@ -681,7 +682,7 @@
681
682
  {/if}
682
683
 
683
684
  <button
684
- class="p-3 -m-1.5 flex items-center justify-center border-0 rounded-full bg-transparent text-gray-500 dark:text-gray-400 cursor-pointer select-none transition-transform duration-100 ease-out hover:bg-gray-100 dark:hover:bg-gray-700 hover:text-gray-900 dark:hover:text-white focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2"
685
+ class="p-2 flex items-center justify-center border-0 rounded-lg bg-transparent text-gray-500 dark:text-gray-400 cursor-pointer select-none transition-all duration-100 ease-out hover:bg-gray-100 dark:hover:bg-gray-700 hover:text-gray-900 dark:hover:text-white focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2"
685
686
  class:scale-90={nextPressed}
686
687
  class:bg-gray-100={nextPressed}
687
688
  class:dark:bg-gray-700={nextPressed}
@@ -709,7 +710,7 @@
709
710
  >
710
711
  {#each DAY_NAMES as dayName, i}
711
712
  <div
712
- class="flex items-end justify-center pb-1 text-xs font-normal text-gray-500 dark:text-gray-400 overflow-hidden leading-none sm:pb-2 sm:pt-1 sm:justify-end sm:pr-2 sm:text-lg sm:text-gray-900 sm:dark:text-white sm:border-b sm:border-gray-200 sm:dark:border-gray-700"
713
+ class="flex items-end justify-center pb-1 {typography.xsMuted} overflow-hidden leading-none sm:pb-2 sm:pt-1 sm:justify-end sm:pr-2 sm:text-lg sm:text-gray-900 sm:dark:text-white sm:border-b sm:border-gray-200 sm:dark:border-gray-700"
713
714
  role="columnheader"
714
715
  aria-label={["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"][i]}
715
716
  >
@@ -720,7 +721,7 @@
720
721
 
721
722
  {#each prevMonthPreviewDays as previewDay}
722
723
  <div class="flex flex-col items-center justify-start px-1 py-0.5 min-h-[56px] sm:min-h-[60px] md:min-h-[70px] lg:min-h-[80px] pointer-events-none bg-transparent shadow-[inset_0_-1px_0_0_rgb(229_231_235)] dark:shadow-[inset_0_-1px_0_0_rgb(55_65_81)] sm:shadow-none sm:p-2 sm:border-t sm:border-l sm:border-gray-200 sm:dark:border-gray-700 last:sm:border-r" role="gridcell" aria-disabled="true">
723
- <span class="text-sm font-medium text-gray-300 dark:text-gray-600 w-full text-center sm:text-lg sm:font-normal sm:text-right sm:mb-2">{previewDay.day}</span>
724
+ <span class="{typography.sm} text-gray-300 dark:text-gray-600 w-full text-center sm:text-lg sm:font-normal sm:text-right sm:mb-2">{previewDay.day}</span>
724
725
  </div>
725
726
  {/each}
726
727
 
@@ -745,8 +746,8 @@
745
746
  ontouchend={(e) => { e.preventDefault(); handleDayTap(e, day); }}
746
747
  onkeydown={(e) => handleDayKeydown(e, day)}
747
748
  >
748
- <span class="text-sm font-medium w-full text-center transition-transform duration-100 ease-out sm:text-lg sm:font-normal sm:text-right sm:mb-2
749
- {day.isPast ? 'text-gray-400 dark:text-gray-500' : 'text-gray-900 dark:text-white'}
749
+ <span class="{typography.sm} w-full text-center transition-transform duration-100 ease-out sm:text-lg sm:font-normal sm:text-right sm:mb-2
750
+ {day.isPast ? 'text-gray-400 dark:text-gray-500' : ''}
750
751
  {day.isSelected && !day.isPast && variant === 'availability' ? 'text-white font-semibold' : ''}">{day.day}</span>
751
752
  {#if variant !== 'availability' && day.hasEvents}
752
753
  <div class="flex gap-0.5 mt-0.5">
@@ -760,7 +761,7 @@
760
761
 
761
762
  {#each nextMonthPreviewDays as previewDay}
762
763
  <div class="flex flex-col items-center justify-start px-1 py-0.5 min-h-[56px] sm:min-h-[60px] md:min-h-[70px] lg:min-h-[80px] pointer-events-none bg-transparent shadow-[inset_0_-1px_0_0_rgb(229_231_235)] dark:shadow-[inset_0_-1px_0_0_rgb(55_65_81)] sm:shadow-none sm:p-2 sm:border-t sm:border-l sm:border-gray-200 sm:dark:border-gray-700 sm:border-b last:sm:border-r" role="gridcell" aria-disabled="true">
763
- <span class="text-sm font-medium text-gray-300 dark:text-gray-600 w-full text-center sm:text-lg sm:font-normal sm:text-right sm:mb-2">{previewDay.day}</span>
764
+ <span class="{typography.sm} text-gray-300 dark:text-gray-600 w-full text-center sm:text-lg sm:font-normal sm:text-right sm:mb-2">{previewDay.day}</span>
764
765
  </div>
765
766
  {/each}
766
767
  </div>
@@ -770,11 +771,11 @@
770
771
  <div class="flex items-center justify-center gap-6 pt-4">
771
772
  <div class="flex items-center gap-2">
772
773
  <span class="w-5 h-5 rounded bg-blue-700 dark:bg-blue-600 border border-blue-700 dark:border-blue-600"></span>
773
- <span class="text-sm text-gray-900 dark:text-white">Available</span>
774
+ <span class="{typography.sm}">Available</span>
774
775
  </div>
775
776
  <div class="flex items-center gap-2">
776
777
  <span class="w-5 h-5 rounded bg-gray-50 dark:bg-gray-700 border-2 border-gray-400 dark:border-gray-500"></span>
777
- <span class="text-sm text-gray-900 dark:text-white">Unavailable</span>
778
+ <span class="{typography.sm}">Unavailable</span>
778
779
  </div>
779
780
  </div>
780
781
  {/if}
@@ -1 +1 @@
1
- {"version":3,"file":"MiniMonthCalendar.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/calendar/Calendar/MiniMonthCalendar.svelte.js"],"names":[],"mappings":";;;;;AA+sBA;cArsB+B,MAAM;oBAAkB,GAAG,EAAE;aAAW,GAAG,EAAE;iBAAe,MAAM;iBAAe,OAAO;qBAAmB,OAAO;sBAAoB,OAAO;eAAa,OAAO;yBAAuB,OAAO;4BAA0B,OAAO;kBAAgB,GAAG;gBAAc,GAAG;mBAAiB,GAAG;wBAqsBvP;wBArsB7C;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,GAAG,CAAC;IAAC,UAAU,EAAE,GAAG,CAAC;IAAC,aAAa,EAAE,GAAG,CAAA;CAAE"}
1
+ {"version":3,"file":"MiniMonthCalendar.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/calendar/Calendar/MiniMonthCalendar.svelte.js"],"names":[],"mappings":";;;;;AAitBA;cArsB+B,MAAM;oBAAkB,GAAG,EAAE;aAAW,GAAG,EAAE;iBAAe,MAAM;iBAAe,OAAO;qBAAmB,OAAO;sBAAoB,OAAO;eAAa,OAAO;yBAAuB,OAAO;4BAA0B,OAAO;kBAAgB,GAAG;gBAAc,GAAG;mBAAiB,GAAG;wBAqsBvP;wBArsB7C;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,GAAG,CAAC;IAAC,UAAU,EAAE,GAAG,CAAC;IAAC,aAAa,EAAE,GAAG,CAAA;CAAE"}
@@ -1,5 +1,6 @@
1
1
  <script>
2
2
  import { ChevronUpOutline } from "../../primitives/Icons";
3
+ import { typography } from '../../tokens/typography';
3
4
 
4
5
  let {
5
6
  faqs = [],
@@ -21,7 +22,7 @@
21
22
 
22
23
  <div class="flex flex-col gap-3">
23
24
  {#if showTitle}
24
- <h2 class="text-xl font-medium text-gray-900 dark:text-white">{title}</h2>
25
+ <h2 class={typography.h2}>{title}</h2>
25
26
  {/if}
26
27
 
27
28
  {#if items.length}
@@ -50,7 +51,7 @@
50
51
  aria-labelledby="accordion-heading-{index}"
51
52
  >
52
53
  <div class="p-5 border-b border-gray-200 dark:border-gray-700 {index === items.length - 1 ? 'border-b-0 rounded-b-lg' : ''}">
53
- <p class="text-sm text-gray-500 dark:text-gray-400 leading-relaxed">{answer}</p>
54
+ <p class="{typography.smMuted} leading-relaxed">{answer}</p>
54
55
  </div>
55
56
  </div>
56
57
  </div>
@@ -61,14 +62,14 @@
61
62
  {#each items as { question, answer }}
62
63
  <div>
63
64
  {#if question}
64
- <p class="text-sm font-medium text-gray-900 dark:text-white mb-1">{question}</p>
65
+ <p class="{typography.label} mb-1">{question}</p>
65
66
  {/if}
66
- <p class="text-sm text-gray-600 dark:text-gray-400 leading-relaxed">{answer}</p>
67
+ <p class="{typography.smMuted} leading-relaxed">{answer}</p>
67
68
  </div>
68
69
  {/each}
69
70
  </div>
70
71
  {/if}
71
72
  {:else}
72
- <p class="text-sm text-gray-500 dark:text-gray-400">No FAQs available.</p>
73
+ <p class="{typography.smMuted}">No FAQs available.</p>
73
74
  {/if}
74
75
  </div>
@@ -1 +1 @@
1
- {"version":3,"file":"FAQs.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/calendar/FAQs/FAQs.svelte.js"],"names":[],"mappings":";;;;;AAwEA;WAhE4B,GAAG,EAAE;YAAU,MAAM;gBAAc,OAAO;gBAAc,OAAO;WAgExC;wBAhEhC;IAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE"}
1
+ {"version":3,"file":"FAQs.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/calendar/FAQs/FAQs.svelte.js"],"names":[],"mappings":";;;;;AA0EA;WAhE4B,GAAG,EAAE;YAAU,MAAM;gBAAc,OAAO;gBAAc,OAAO;WAgExC;wBAhEhC;IAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE"}
@@ -1,5 +1,6 @@
1
1
  <script>
2
2
  import { ChevronLeftOutline, ChevronRightOutline } from '../../primitives/Icons';
3
+ import { typography } from '../../tokens/typography';
3
4
 
4
5
  const today = new Date();
5
6
  const todayLocalMonth = today.getMonth();
@@ -61,7 +62,7 @@
61
62
  </script>
62
63
 
63
64
  <header class="w-full flex items-center justify-between select-none">
64
- <h2 class="text-3xl font-semibold text-gray-900 dark:text-white">
65
+ <h2 class="{typography.h1} text-3xl">
65
66
  {new Intl.DateTimeFormat("en", {
66
67
  month: "long",
67
68
  }).format(new Date(currentYear, currentMonth, 1))}
@@ -87,7 +88,7 @@
87
88
  <ChevronLeftOutline class="w-5 h-5" />
88
89
  </button>
89
90
  <button
90
- class="text-sm font-medium px-3 py-1 border border-gray-300 dark:border-gray-600 rounded-lg bg-transparent text-gray-900 dark:text-white cursor-pointer select-none transition-transform duration-100 ease-out hover:bg-blue-700 hover:text-white hover:border-blue-700 focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2 disabled:opacity-40 disabled:cursor-not-allowed disabled:text-gray-500 dark:disabled:text-gray-400"
91
+ class="{`${typography.label} px-3 py-1 border border-gray-300 dark:border-gray-600 rounded-lg bg-transparent cursor-pointer select-none transition-transform duration-100 ease-out hover:bg-blue-700 hover:text-white hover:border-blue-700 focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2 disabled:opacity-40 disabled:cursor-not-allowed disabled:text-gray-500 dark:disabled:text-gray-400`}"
91
92
  class:scale-95={todayPressed}
92
93
  class:bg-blue-700={todayPressed}
93
94
  class:text-white={todayPressed}
@@ -1 +1 @@
1
- {"version":3,"file":"MonthSwitcher.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/calendar/MonthSwitcher/MonthSwitcher.svelte.js"],"names":[],"mappings":";;;;;AAwFA;;;;;;4BA5E+L,OAAO;WA4E1I;wBA5EzC;IAAE,WAAW,CAAC,SAAwB;IAAC,YAAY,CAAC,SAAyB;IAAC,UAAU,CAAC,WAAW;IAAC,UAAU,CAAC,WAAW;IAAC,WAAW,CAAC,WAAW;IAAC,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAAE"}
1
+ {"version":3,"file":"MonthSwitcher.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/calendar/MonthSwitcher/MonthSwitcher.svelte.js"],"names":[],"mappings":";;;;;AA0FA;;;;;;4BA5E+L,OAAO;WA4E1I;wBA5EzC;IAAE,WAAW,CAAC,SAAwB;IAAC,YAAY,CAAC,SAAyB;IAAC,UAAU,CAAC,WAAW;IAAC,UAAU,CAAC,WAAW;IAAC,WAAW,CAAC,WAAW;IAAC,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAAE"}
@@ -3,10 +3,12 @@
3
3
  import { cubicOut } from 'svelte/easing';
4
4
  import { ChevronDownOutline, CloseOutline } from '../../primitives/Icons';
5
5
  import Spinner from '../../primitives/Spinner/Spinner.svelte';
6
+ import { typography } from '../../tokens/typography';
6
7
 
7
8
  let {
8
9
  loading = false,
9
10
  quantities = {},
11
+ donationAmounts = {}, // Map of ticketId -> donation amount string
10
12
  eventTickets = [],
11
13
  checkoutTicket = null,
12
14
  isAgreed = true,
@@ -26,6 +28,24 @@
26
28
  onPriceUpdate,
27
29
  } = $props();
28
30
 
31
+ // Helper to get effective price for a ticket (handles donation tickets)
32
+ function getEffectivePrice(ticket) {
33
+ // Donation ticket (type 2): use user-entered donation amount
34
+ if (isDonationTicket(ticket)) {
35
+ const donationAmount = donationAmounts[ticket.ID];
36
+ return parseFloat(donationAmount) || 0;
37
+ }
38
+ // Regular ticket: use ticket price
39
+ return parseFloat(ticket.price) || 0;
40
+ }
41
+
42
+ // Check if ticket is a donation ticket
43
+ // Handle both 'type' and 'ticketType' fields, and coerce to number for comparison
44
+ function isDonationTicket(ticket) {
45
+ const ticketType = ticket.type ?? ticket.ticketType ?? 0;
46
+ return Number(ticketType) === 2;
47
+ }
48
+
29
49
  let showOrderSummaryOnMobile = $state(false);
30
50
 
31
51
  function feeFor(price) {
@@ -75,12 +95,20 @@
75
95
  let subtotalWithoutDiscount = $derived(Object.keys(quantities).reduce((acc, key) => {
76
96
  const ticket = eventTickets.find(t => t.ID == key);
77
97
  if (!ticket) return acc;
78
- return acc + quantities[key] * ticket.price;
98
+ // For donation tickets, use the donation amount; otherwise use ticket price
99
+ const effectivePrice = getEffectivePrice(ticket);
100
+ return acc + quantities[key] * effectivePrice;
79
101
  }, 0));
80
102
 
81
103
  let subtotal = $derived(Object.keys(quantities).reduce((acc, key) => {
82
104
  const ticket = eventTickets.find(t => t.ID == key);
83
105
  if (!ticket) return acc;
106
+ // For donation tickets, use the donation amount (no discounts apply)
107
+ if (isDonationTicket(ticket)) {
108
+ const effectivePrice = getEffectivePrice(ticket);
109
+ return acc + quantities[key] * effectivePrice;
110
+ }
111
+ // For regular tickets, apply discounts as usual
84
112
  const discountedPrice = getDiscountedPrice(ticket);
85
113
  const priceToUse = discountedPrice !== null ? parseFloat(discountedPrice) : ticket.price;
86
114
  return acc + quantities[key] * priceToUse;
@@ -90,7 +118,8 @@
90
118
 
91
119
  let fees = $derived(Object.keys(quantities).reduce((acc, key) => {
92
120
  const ticket = eventTickets.find(t => t.ID == key);
93
- if (!ticket || ticket.price == 0) return acc;
121
+ // Skip fees for: no ticket, free tickets, and donation tickets (type 2)
122
+ if (!ticket || ticket.price == 0 || isDonationTicket(ticket)) return acc;
94
123
  const discountedPrice = getDiscountedPrice(ticket);
95
124
  const priceToUse = discountedPrice !== null ? parseFloat(discountedPrice) : ticket.price;
96
125
  return acc + quantities[key] * feeFor(priceToUse);
@@ -110,36 +139,42 @@
110
139
  class="hidden min-[872px]:block h-fit rounded-lg bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600"
111
140
  >
112
141
  <div class="px-5 py-4 border-b border-gray-200 dark:border-gray-600">
113
- <h2 class="text-lg font-semibold text-gray-900 dark:text-white">
142
+ <h3 class={typography.h3}>
114
143
  Order summary
115
- </h2>
144
+ </h3>
116
145
  </div>
117
146
 
118
147
  <div class="px-5 pb-5">
119
148
  {#if totalQuantity === 0}
120
149
  <div class="py-8 text-center">
121
- <p class="text-gray-500 dark:text-gray-400 text-sm">Select tickets to continue</p>
150
+ <p class="{typography.smMuted}">Select tickets to continue</p>
122
151
  </div>
123
152
  {:else}
124
153
  {#each Object.keys(quantities) as key}
125
154
  {#if quantities[key] > 0}
126
155
  {#each eventTickets as ticket}
127
156
  {#if ticket.ID == key}
157
+ {@const effectivePrice = getEffectivePrice(ticket)}
158
+ {@const isDonation = isDonationTicket(ticket)}
128
159
  <div class="flex justify-between py-3 border-b border-gray-200/50 dark:border-gray-600/50">
129
160
  <div>
130
- <p class="font-medium text-gray-900 dark:text-white">{ticket.name}</p>
131
- <p class="text-sm text-gray-500 dark:text-gray-400">
132
- {#if ticket.price === 0}
161
+ <p class="{typography.label}">{ticket.name}</p>
162
+ <p class="{typography.smMuted}">
163
+ {#if ticket.price === 0 && !isDonation}
133
164
  Free x {quantities[key]}
165
+ {:else if isDonation}
166
+ ${effectivePrice.toFixed(2)} x {quantities[key]}
134
167
  {:else}
135
168
  ${ticket.price.toFixed(2)} x {quantities[key]}
136
169
  {/if}
137
170
  </p>
138
171
  </div>
139
- <div class="font-medium text-gray-900 dark:text-white">
140
- {ticket.price === 0
141
- ? 'Free'
142
- : `$${(ticket.price * quantities[key]).toFixed(2)}`}
172
+ <div class="{typography.label}">
173
+ {#if ticket.price === 0 && !isDonation}
174
+ Free
175
+ {:else}
176
+ ${(effectivePrice * quantities[key]).toFixed(2)}
177
+ {/if}
143
178
  </div>
144
179
  </div>
145
180
  {/if}
@@ -147,7 +182,7 @@
147
182
  {/if}
148
183
  {/each}
149
184
 
150
- <div class="flex flex-col py-3 gap-2 text-sm">
185
+ <div class="{`${typography.sm} flex flex-col py-3 gap-2`}">
151
186
  {#if promoSavings > 0 || (promoDiscount > 0 && !currentPromoRule?.provideDiscount)}
152
187
  <div class="flex justify-between text-gray-600 dark:text-gray-300">
153
188
  <span>Full Price</span><span>${subtotalWithoutDiscount.toFixed(2)}</span>
@@ -173,13 +208,13 @@
173
208
  </div>
174
209
  </div>
175
210
 
176
- <div class="flex justify-between font-semibold text-gray-900 dark:text-white py-4 text-lg border-t border-gray-200 dark:border-gray-600">
211
+ <div class="flex justify-between {typography.h3} py-4 text-lg border-t border-gray-200 dark:border-gray-600">
177
212
  <span>Total</span><span>${total.toFixed(2)}</span>
178
213
  </div>
179
214
  {/if}
180
215
 
181
216
  {#if totalQuantity > 0 && btnText === 'Place order'}
182
- <p class="text-xs text-gray-500 dark:text-gray-400 text-center mb-3">
217
+ <p class="{typography.xsMuted} text-center mb-3">
183
218
  By selecting Place order, I agree to the <a href="https://get-micdrop.com/tos" class="text-blue-700 dark:text-blue-500 underline hover:opacity-80" target="_blank" rel="noopener noreferrer">terms of service</a>
184
219
  </p>
185
220
  {/if}
@@ -218,7 +253,7 @@
218
253
  class="min-[872px]:hidden fixed bottom-0 left-0 w-full overflow-x-hidden overflow-y-auto z-50 max-h-[80vh] rounded-t-lg shadow-xl bg-white dark:bg-gray-800"
219
254
  >
220
255
  <div class="flex flex-row justify-between items-center px-5 py-4 border-b border-gray-200 dark:border-gray-600">
221
- <h2 class="text-xl font-semibold text-gray-900 dark:text-white">
256
+ <h2 class="{typography.h2} text-xl">
222
257
  Order summary
223
258
  </h2>
224
259
  <button
@@ -235,21 +270,27 @@
235
270
  {#if quantities[key] > 0}
236
271
  {#each eventTickets as ticket}
237
272
  {#if ticket.ID == key}
273
+ {@const effectivePrice = getEffectivePrice(ticket)}
274
+ {@const isDonation = isDonationTicket(ticket)}
238
275
  <div class="flex justify-between py-4 border-b border-gray-200 dark:border-gray-600">
239
276
  <div>
240
- <p class="font-semibold text-gray-900 dark:text-white">{ticket.name}</p>
241
- <p class="text-sm text-gray-500 dark:text-gray-400">
242
- {#if ticket.price === 0}
277
+ <p class="{typography.h5}">{ticket.name}</p>
278
+ <p class="{typography.smMuted}">
279
+ {#if ticket.price === 0 && !isDonation}
243
280
  Free x {quantities[key]}
281
+ {:else if isDonation}
282
+ ${effectivePrice.toFixed(2)} x {quantities[key]}
244
283
  {:else}
245
284
  ${ticket.price.toFixed(2)} x {quantities[key]}
246
285
  {/if}
247
286
  </p>
248
287
  </div>
249
- <div class="font-semibold text-gray-900 dark:text-white">
250
- {ticket.price === 0
251
- ? 'Free'
252
- : `$${(ticket.price * quantities[key]).toFixed(2)}`}
288
+ <div class="{typography.h5}">
289
+ {#if ticket.price === 0 && !isDonation}
290
+ Free
291
+ {:else}
292
+ ${(effectivePrice * quantities[key]).toFixed(2)}
293
+ {/if}
253
294
  </div>
254
295
  </div>
255
296
  {/if}
@@ -283,7 +324,7 @@
283
324
  </div>
284
325
  </div>
285
326
 
286
- <div class="flex justify-between font-bold text-gray-900 dark:text-white py-5 border-t border-gray-200 dark:border-gray-600">
327
+ <div class="flex justify-between {typography.h3} py-5 border-t border-gray-200 dark:border-gray-600">
287
328
  <span>Total</span><span>${total.toFixed(2)}</span>
288
329
  </div>
289
330
  </div>
@@ -297,15 +338,15 @@
297
338
  >
298
339
  <div class="flex items-stretch gap-3">
299
340
  <button class="flex flex-col justify-between items-start shrink-0 whitespace-nowrap bg-transparent border-none p-0 cursor-pointer touch-manipulation" onclick={makeOrderSummaryVisible}>
300
- <span class="flex items-center gap-1 text-sm font-normal text-gray-600 dark:text-gray-300">
341
+ <span class="{`${typography.sm} flex items-center gap-1 text-gray-600 dark:text-gray-300`}">
301
342
  {totalQuantity} {totalQuantity > 1 ? 'tickets' : 'ticket'}
302
- <ChevronDownOutline class="w-4 h-4 text-gray-500 dark:text-gray-400 transition-transform duration-200 {showOrderSummaryOnMobile ? 'rotate-180' : ''}" />
343
+ <ChevronDownOutline class={`w-4 h-4 ${typography.iconMuted} transition-transform duration-200 ${showOrderSummaryOnMobile ? 'rotate-180' : ''}`} />
303
344
  </span>
304
- <span class="text-xl font-bold text-gray-900 dark:text-white">${total.toFixed(2)}</span>
345
+ <span class="{typography.h2} text-xl">${total.toFixed(2)}</span>
305
346
  </button>
306
347
 
307
348
  <button
308
- class="flex-1 min-w-36 h-12 rounded-lg text-sm font-semibold touch-manipulation flex items-center justify-center {totalQuantity === 0 || !isAgreed ? 'bg-gray-200 dark:bg-gray-700 text-gray-500 dark:text-gray-400 cursor-not-allowed' : 'bg-blue-700 dark:bg-blue-600 text-white hover:bg-blue-800 dark:hover:bg-blue-700'}"
349
+ class="{`${typography.label} flex-1 min-w-36 h-12 rounded-lg touch-manipulation flex items-center justify-center ${totalQuantity === 0 || !isAgreed ? 'bg-gray-200 dark:bg-gray-700 text-gray-500 dark:text-gray-400 cursor-not-allowed' : 'bg-blue-700 dark:bg-blue-600 text-white hover:bg-blue-800 dark:hover:bg-blue-700'}`}"
309
350
  onclick={() => {
310
351
  if (executePurchase) {
311
352
  executePurchase(elements);
@@ -6,6 +6,7 @@ type OrderSummary = {
6
6
  declare const OrderSummary: import("svelte").Component<{
7
7
  loading?: boolean;
8
8
  quantities?: Record<string, any>;
9
+ donationAmounts?: Record<string, any>;
9
10
  eventTickets?: any[];
10
11
  checkoutTicket?: any;
11
12
  isAgreed?: boolean;
@@ -21,6 +22,7 @@ declare const OrderSummary: import("svelte").Component<{
21
22
  type $$ComponentProps = {
22
23
  loading?: boolean;
23
24
  quantities?: Record<string, any>;
25
+ donationAmounts?: Record<string, any>;
24
26
  eventTickets?: any[];
25
27
  checkoutTicket?: any;
26
28
  isAgreed?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"OrderSummary.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/calendar/OrderSummary/OrderSummary.svelte.js"],"names":[],"mappings":";;;;;AAkTA;cApS+B,OAAO;iBAAe,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;mBAAiB,GAAG,EAAE;qBAAmB,GAAG;eAAa,OAAO;cAAY,MAAM;mBAAiB,OAAO;oBAAkB,MAAM;uBAAqB,GAAG;sBAAoB,GAAG;eAAa,GAAG;yBAAuB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;mBAAiB,GAAG;WAoS5Q;wBApSxC;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;IAAC,cAAc,CAAC,EAAE,GAAG,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC;IAAC,eAAe,CAAC,EAAE,GAAG,CAAC;IAAC,QAAQ,CAAC,EAAE,GAAG,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,aAAa,EAAE,GAAG,CAAA;CAAE"}
1
+ {"version":3,"file":"OrderSummary.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/calendar/OrderSummary/OrderSummary.svelte.js"],"names":[],"mappings":";;;;;AAoVA;cApU+B,OAAO;iBAAe,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;sBAAoB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;mBAAiB,GAAG,EAAE;qBAAmB,GAAG;eAAa,OAAO;cAAY,MAAM;mBAAiB,OAAO;oBAAkB,MAAM;uBAAqB,GAAG;sBAAoB,GAAG;eAAa,GAAG;yBAAuB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;mBAAiB,GAAG;WAoUnT;wBApUxC;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;IAAC,cAAc,CAAC,EAAE,GAAG,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC;IAAC,eAAe,CAAC,EAAE,GAAG,CAAC;IAAC,QAAQ,CAAC,EAAE,GAAG,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,aAAa,EAAE,GAAG,CAAA;CAAE"}
@@ -1,4 +1,6 @@
1
1
  <script>
2
+ import { typography } from '../../tokens/typography';
3
+
2
4
  let {
3
5
  events = [],
4
6
  view = "row",
@@ -111,16 +113,12 @@
111
113
  </span>
112
114
  {/if}
113
115
 
114
- <h3
115
- class="font-semibold text-gray-900 dark:text-white leading-tight line-clamp-2 {view === 'col'
116
- ? 'text-sm sm:text-base'
117
- : 'text-sm sm:text-lg'}"
118
- >
116
+ <h4 class="{typography.h4} leading-tight line-clamp-2">
119
117
  {event.name}
120
- </h3>
118
+ </h4>
121
119
 
122
120
  <div
123
- class="text-gray-600 dark:text-gray-400 {view === 'col' ? 'text-xs' : 'text-xs sm:text-sm'}"
121
+ class="{typography.textMuted} {view === 'col' ? 'text-xs' : 'text-xs sm:text-sm'}"
124
122
  >
125
123
  <span class="font-medium">
126
124
  {formatEventDate(event.date)}
@@ -132,13 +130,13 @@
132
130
  </div>
133
131
 
134
132
  {#if view === "row" && event.description}
135
- <p class="text-gray-500 dark:text-gray-400 text-xs sm:text-sm line-clamp-2 mt-1">
133
+ <p class="{typography.xsMuted} text-xs sm:text-sm line-clamp-2 mt-1">
136
134
  {event.description}
137
135
  </p>
138
136
  {/if}
139
137
 
140
138
  {#if event.doorsTimeline && view === "row"}
141
- <div class="text-xs text-gray-500 dark:text-gray-400">
139
+ <div class="{typography.xsMuted} text-xs">
142
140
  {event.doorsTimeline}
143
141
  </div>
144
142
  {/if}
@@ -1 +1 @@
1
- {"version":3,"file":"PublicCard.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/calendar/PublicCard/PublicCard.svelte.js"],"names":[],"mappings":";;;;;AAiIA;aA7H8B,GAAG,EAAE;WAAS,MAAM;uBAAqB,GAAG;kBAAgB,GAAG;WA6HpC;wBA7HtC;IAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC;IAAC,YAAY,EAAE,GAAG,CAAA;CAAE"}
1
+ {"version":3,"file":"PublicCard.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/calendar/PublicCard/PublicCard.svelte.js"],"names":[],"mappings":";;;;;AAmIA;aA3H8B,GAAG,EAAE;WAAS,MAAM;uBAAqB,GAAG;kBAAgB,GAAG;WA2HpC;wBA3HtC;IAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC;IAAC,YAAY,EAAE,GAAG,CAAA;CAAE"}
@@ -1,6 +1,7 @@
1
1
  <script>
2
2
  import { ShareOutline, CheckOutline } from '../../primitives/Icons';
3
3
  import ShowTimeCard from '../ShowTimeCard/ShowTimeCard.svelte';
4
+ import { typography } from '../../tokens/typography';
4
5
 
5
6
  let {
6
7
  event = {},
@@ -78,9 +79,9 @@
78
79
  <div class="h-fit rounded-lg sm:px-5 py-4 md:border md:border-gray-200 md:dark:border-gray-700 bg-white dark:bg-gray-800">
79
80
  {#if showTitle}
80
81
  <div class="flex justify-between items-start gap-2 mb-4">
81
- <h1 class="flex-1 text-left font-semibold text-xl leading-tight text-gray-900 dark:text-white">
82
+ <h2 class="{typography.h2} flex-1 text-left">
82
83
  {event.name || ''}
83
- </h1>
84
+ </h2>
84
85
  <button
85
86
  class="flex-shrink-0 p-2 rounded-lg transition-colors hover:bg-gray-100 dark:hover:bg-gray-700 relative"
86
87
  aria-label="Share event"
@@ -95,19 +96,19 @@
95
96
  </div>
96
97
  {/if}
97
98
 
98
- <div class="space-y-1 text-sm">
99
- <p class="font-medium text-gray-900 dark:text-white">{formatDateTime(event.startDateTime)}</p>
99
+ <div class="space-y-1">
100
+ <p class="{typography.label}">{formatDateTime(event.startDateTime)}</p>
100
101
  {#if event.displayStartTime && event.doorsOpenTime}
101
- <p class="text-gray-600 dark:text-gray-400">Doors open {formatTimeline(event.doorsOpenTime)}</p>
102
+ <p class="{typography.smMuted}">Doors open {formatTimeline(event.doorsOpenTime)}</p>
102
103
  {/if}
103
104
  {#if event.displayEndTime && event.endDateTime}
104
- <p class="text-gray-600 dark:text-gray-400">Ends {formatTimeline(event.endDateTime)}</p>
105
+ <p class="{typography.smMuted}">Ends {formatTimeline(event.endDateTime)}</p>
105
106
  {/if}
106
107
  </div>
107
108
 
108
109
  {#if showtimes && showtimes.length > 1}
109
110
  <div class="mt-4 pt-4 border-t border-gray-200 dark:border-gray-700">
110
- <p class="text-sm mb-2 text-gray-500 dark:text-gray-400">More showtimes</p>
111
+ <p class="{typography.smMuted} mb-2">More showtimes</p>
111
112
  <div class="flex flex-wrap gap-2">
112
113
  {#each showtimes as showtime}
113
114
  <div class="w-24">
@@ -132,16 +133,16 @@
132
133
  rel="noopener noreferrer"
133
134
  class="group block"
134
135
  >
135
- <p class="text-sm font-medium transition-colors text-gray-900 dark:text-white group-hover:text-blue-700 dark:group-hover:text-blue-500">
136
+ <p class="{typography.label} transition-colors group-hover:text-blue-700 dark:group-hover:text-blue-500">
136
137
  {event.venue.name}
137
138
  </p>
138
- <p class="text-sm transition-colors text-gray-500 dark:text-gray-400 group-hover:text-blue-700 dark:group-hover:text-blue-500">
139
+ <p class="{typography.smMuted} transition-colors group-hover:text-blue-700 dark:group-hover:text-blue-500">
139
140
  {event.venue.address || ''}
140
141
  </p>
141
142
  </a>
142
143
 
143
144
  {#if event.hasAgeRestriction || event.ageRequirement || event.minimumAge}
144
- <p class="text-sm mt-2 text-gray-500 dark:text-gray-400">
145
+ <p class="{typography.smMuted} mt-2">
145
146
  {#if event.ageRequirement != null}
146
147
  {event.ageRequirement <= 1 ? 'All ages' : `${event.ageRequirement}+`}
147
148
  {:else if event.minimumAge != null}
@@ -1 +1 @@
1
- {"version":3,"file":"ShowCard.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/calendar/ShowCard/ShowCard.svelte.js"],"names":[],"mappings":";;;;;AAsJA;YA5I6B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;gBAAc,GAAG,EAAE;gBAAc,OAAO;;;sBAA0E,GAAG;WA4I9G;wBA5IpC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,WAAW;IAAC,cAAc,CAAC,WAAW;IAAC,gBAAgB,EAAE,GAAG,CAAA;CAAE"}
1
+ {"version":3,"file":"ShowCard.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/calendar/ShowCard/ShowCard.svelte.js"],"names":[],"mappings":";;;;;AAwJA;YA5I6B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;gBAAc,GAAG,EAAE;gBAAc,OAAO;;;sBAA0E,GAAG;WA4I9G;wBA5IpC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,WAAW;IAAC,cAAc,CAAC,WAAW;IAAC,gBAAgB,EAAE,GAAG,CAAA;CAAE"}