@getmicdrop/svelte-components 5.18.0 → 5.18.1
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.
- package/dist/calendar/AboutShow/AboutShow.svelte +9 -5
- package/dist/calendar/AboutShow/AboutShow.svelte.d.ts +2 -2
- package/dist/calendar/AboutShow/AboutShow.svelte.d.ts.map +1 -1
- package/dist/calendar/Calendar/MiniMonthCalendar.svelte +39 -18
- package/dist/calendar/Calendar/MiniMonthCalendar.svelte.d.ts +4 -0
- package/dist/calendar/Calendar/MiniMonthCalendar.svelte.d.ts.map +1 -1
- package/dist/calendar/FAQs/FAQs.svelte +16 -5
- package/dist/calendar/FAQs/FAQs.svelte.d.ts +6 -4
- package/dist/calendar/FAQs/FAQs.svelte.d.ts.map +1 -1
- package/dist/calendar/MonthSwitcher/MonthSwitcher.svelte +19 -4
- package/dist/calendar/MonthSwitcher/MonthSwitcher.svelte.d.ts +2 -0
- package/dist/calendar/MonthSwitcher/MonthSwitcher.svelte.d.ts.map +1 -1
- package/dist/calendar/OrderSummary/OrderSummary.spec.js +3 -3
- package/dist/calendar/OrderSummary/OrderSummary.svelte +17 -13
- package/dist/calendar/OrderSummary/OrderSummary.svelte.d.ts +4 -2
- package/dist/calendar/OrderSummary/OrderSummary.svelte.d.ts.map +1 -1
- package/dist/calendar/PublicCard/PublicCard.svelte +11 -2
- package/dist/calendar/PublicCard/PublicCard.svelte.d.ts +4 -0
- package/dist/calendar/PublicCard/PublicCard.svelte.d.ts.map +1 -1
- package/dist/calendar/ShowCard/ShowCard.svelte +25 -11
- package/dist/calendar/ShowCard/ShowCard.svelte.d.ts +4 -0
- package/dist/calendar/ShowCard/ShowCard.svelte.d.ts.map +1 -1
- package/dist/calendar/ShowTimeCard/ShowTimeCard.svelte +12 -4
- package/dist/calendar/ShowTimeCard/ShowTimeCard.svelte.d.ts +4 -0
- package/dist/calendar/ShowTimeCard/ShowTimeCard.svelte.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/patterns/chat/ChatBubble.svelte +9 -1
- package/dist/patterns/chat/ChatBubble.svelte.d.ts +6 -4
- package/dist/patterns/chat/ChatBubble.svelte.d.ts.map +1 -1
- package/dist/patterns/chat/ChatInvitationBubble.svelte +10 -1
- package/dist/patterns/chat/ChatInvitationBubble.svelte.d.ts +6 -3
- package/dist/patterns/chat/ChatInvitationBubble.svelte.d.ts.map +1 -1
- package/dist/patterns/chat/ChatInvitationNotice.svelte +10 -1
- package/dist/patterns/chat/ChatInvitationNotice.svelte.d.ts +6 -3
- package/dist/patterns/chat/ChatInvitationNotice.svelte.d.ts.map +1 -1
- package/dist/patterns/forms/FormValidationSummary.svelte +9 -1
- package/dist/patterns/forms/FormValidationSummary.svelte.d.ts +5 -3
- package/dist/patterns/forms/FormValidationSummary.svelte.d.ts.map +1 -1
- package/dist/patterns/navigation/BottomNav.svelte +9 -1
- package/dist/patterns/navigation/BottomNav.svelte.d.ts +10 -9
- package/dist/patterns/navigation/BottomNav.svelte.d.ts.map +1 -1
- package/dist/patterns/navigation/Header.svelte +20 -8
- package/dist/patterns/navigation/Header.svelte.d.ts +17 -9
- package/dist/patterns/navigation/Header.svelte.d.ts.map +1 -1
- package/dist/patterns/page/PageLoader.svelte +12 -3
- package/dist/patterns/page/PageLoader.svelte.d.ts +6 -3
- package/dist/patterns/page/PageLoader.svelte.d.ts.map +1 -1
- package/dist/primitives/Accordion/AccordionItem.svelte +9 -1
- package/dist/primitives/Accordion/AccordionItem.svelte.d.ts +6 -4
- package/dist/primitives/Accordion/AccordionItem.svelte.d.ts.map +1 -1
- package/dist/primitives/Alert/Alert.svelte +10 -2
- package/dist/primitives/Alert/Alert.svelte.d.ts +6 -4
- package/dist/primitives/Alert/Alert.svelte.d.ts.map +1 -1
- package/dist/primitives/Breadcrumb/Breadcrumb.svelte +9 -1
- package/dist/primitives/Breadcrumb/Breadcrumb.svelte.d.ts +13 -9
- package/dist/primitives/Breadcrumb/Breadcrumb.svelte.d.ts.map +1 -1
- package/dist/primitives/DarkModeToggle.svelte +16 -5
- package/dist/primitives/DarkModeToggle.svelte.d.ts +9 -3
- package/dist/primitives/DarkModeToggle.svelte.d.ts.map +1 -1
- package/dist/primitives/Dropdown/Dropdown.svelte +11 -2
- package/dist/primitives/Dropdown/Dropdown.svelte.d.ts +7 -4
- package/dist/primitives/Dropdown/Dropdown.svelte.d.ts.map +1 -1
- package/dist/primitives/Input/Input.svelte +19 -6
- package/dist/primitives/Input/Input.svelte.d.ts.map +1 -1
- package/dist/primitives/NumberInput/NumberInput.svelte +10 -2
- package/dist/primitives/NumberInput/NumberInput.svelte.d.ts.map +1 -1
- package/dist/primitives/Pagination/Pagination.svelte +21 -7
- package/dist/primitives/Pagination/Pagination.svelte.d.ts +14 -6
- package/dist/primitives/Pagination/Pagination.svelte.d.ts.map +1 -1
- package/dist/primitives/Skeleton/CardPlaceholder.svelte +11 -2
- package/dist/primitives/Skeleton/CardPlaceholder.svelte.d.ts +8 -5
- package/dist/primitives/Skeleton/CardPlaceholder.svelte.d.ts.map +1 -1
- package/dist/primitives/Skeleton/ImagePlaceholder.svelte +11 -2
- package/dist/primitives/Skeleton/ImagePlaceholder.svelte.d.ts +8 -5
- package/dist/primitives/Skeleton/ImagePlaceholder.svelte.d.ts.map +1 -1
- package/dist/primitives/Skeleton/ListPlaceholder.svelte +11 -2
- package/dist/primitives/Skeleton/ListPlaceholder.svelte.d.ts +8 -5
- package/dist/primitives/Skeleton/ListPlaceholder.svelte.d.ts.map +1 -1
- package/dist/primitives/Skeleton/Skeleton.svelte +11 -2
- package/dist/primitives/Skeleton/Skeleton.svelte.d.ts +7 -4
- package/dist/primitives/Skeleton/Skeleton.svelte.d.ts.map +1 -1
- package/dist/primitives/Spinner/Spinner.svelte +9 -1
- package/dist/primitives/Spinner/Spinner.svelte.d.ts +6 -4
- package/dist/primitives/Spinner/Spinner.svelte.d.ts.map +1 -1
- package/dist/recipes/ImageUploader/ImageUploader.svelte +5 -3
- package/dist/recipes/ImageUploader/ImageUploader.svelte.d.ts +1 -0
- package/dist/recipes/ImageUploader/ImageUploader.svelte.d.ts.map +1 -1
- package/dist/recipes/SuperLogin/SuperLogin.svelte +25 -23
- package/dist/recipes/SuperLogin/SuperLogin.svelte.d.ts.map +1 -1
- package/dist/recipes/feedback/EmptyState/EmptyState.svelte +12 -3
- package/dist/recipes/feedback/EmptyState/EmptyState.svelte.d.ts +7 -4
- package/dist/recipes/feedback/EmptyState/EmptyState.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/MultiSelect.svelte +10 -2
- package/dist/recipes/inputs/MultiSelect.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/OTPInput.svelte +14 -3
- package/dist/recipes/inputs/OTPInput.svelte.d.ts +14 -12
- package/dist/recipes/inputs/OTPInput.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/PasswordInput.svelte +10 -1
- package/dist/recipes/inputs/PasswordInput.svelte.d.ts +7 -4
- package/dist/recipes/inputs/PasswordInput.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte +21 -10
- package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte.d.ts +8 -3
- package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/PhoneInput.svelte +1 -5
- package/dist/recipes/inputs/PhoneInput.svelte.d.ts +0 -2
- package/dist/recipes/inputs/PhoneInput.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte +22 -9
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte.d.ts +21 -16
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/Search.svelte +10 -2
- package/dist/recipes/inputs/Search.svelte.d.ts +7 -5
- package/dist/recipes/inputs/Search.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/phoneInput/CountrySelector.svelte +9 -66
- package/dist/recipes/inputs/phoneInput/CountrySelector.svelte.d.ts +0 -2
- package/dist/recipes/inputs/phoneInput/CountrySelector.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/phoneInput/countryData.d.ts +0 -2
- package/dist/recipes/inputs/phoneInput/countryData.d.ts.map +1 -1
- package/dist/recipes/inputs/phoneInput/countryData.js +3 -3
- package/dist/recipes/modals/AlertModal.svelte +11 -2
- package/dist/recipes/modals/AlertModal.svelte.d.ts +4 -2
- package/dist/recipes/modals/AlertModal.svelte.d.ts.map +1 -1
- package/dist/recipes/modals/ConfirmationModal.svelte +8 -1
- package/dist/recipes/modals/ConfirmationModal.svelte.d.ts +2 -0
- package/dist/recipes/modals/ConfirmationModal.svelte.d.ts.map +1 -1
- package/dist/recipes/modals/InputModal.svelte +19 -7
- package/dist/recipes/modals/InputModal.svelte.d.ts +6 -4
- package/dist/recipes/modals/InputModal.svelte.d.ts.map +1 -1
- package/dist/recipes/modals/StatusModal.svelte +14 -4
- package/dist/recipes/modals/StatusModal.svelte.d.ts +4 -2
- package/dist/recipes/modals/StatusModal.svelte.d.ts.map +1 -1
- package/dist/tokens/__tests__/variants.test.js +12 -4
- package/dist/tokens/variants.d.ts +4 -4
- package/dist/tokens/variants.js +4 -4
- package/dist/utils/formatters.d.ts +6 -0
- package/dist/utils/formatters.d.ts.map +1 -1
- package/dist/utils/formatters.js +8 -0
- package/dist/utils/utils.js +25 -16
- package/package.json +1 -1
|
@@ -4,10 +4,21 @@
|
|
|
4
4
|
import { typography } from '../../tokens/typography';
|
|
5
5
|
import { formatEventDateTime, formatEventTime } from '../../datetime/format';
|
|
6
6
|
|
|
7
|
+
const defaultLabels = {
|
|
8
|
+
doorsOpen: 'Doors open',
|
|
9
|
+
ends: 'Ends',
|
|
10
|
+
moreShowtimes: 'More showtimes',
|
|
11
|
+
shareEvent: 'Share event',
|
|
12
|
+
allAges: 'All ages',
|
|
13
|
+
shareText: 'Check out {name} at {venue}!',
|
|
14
|
+
};
|
|
15
|
+
|
|
7
16
|
let {
|
|
8
17
|
event = {},
|
|
9
18
|
showtimes = [],
|
|
10
19
|
showTitle = true,
|
|
20
|
+
locale = 'en-US',
|
|
21
|
+
labels: userLabels = {},
|
|
11
22
|
formatDateTime = (dateStr) => {
|
|
12
23
|
if (!dateStr) return '';
|
|
13
24
|
// Use timezone-aware formatting if event has timeZone
|
|
@@ -16,7 +27,7 @@
|
|
|
16
27
|
}
|
|
17
28
|
const date = new Date(dateStr);
|
|
18
29
|
if (isNaN(date.getTime())) return dateStr;
|
|
19
|
-
return date.toLocaleDateString(
|
|
30
|
+
return date.toLocaleDateString(locale, {
|
|
20
31
|
weekday: 'long',
|
|
21
32
|
year: 'numeric',
|
|
22
33
|
month: 'long',
|
|
@@ -33,10 +44,9 @@
|
|
|
33
44
|
}
|
|
34
45
|
const date = new Date(timeStr);
|
|
35
46
|
if (!isNaN(date.getTime())) {
|
|
36
|
-
return date.toLocaleTimeString(
|
|
47
|
+
return date.toLocaleTimeString(locale, {
|
|
37
48
|
hour: 'numeric',
|
|
38
49
|
minute: '2-digit',
|
|
39
|
-
hour12: true
|
|
40
50
|
});
|
|
41
51
|
}
|
|
42
52
|
return timeStr;
|
|
@@ -44,6 +54,8 @@
|
|
|
44
54
|
onShowtimeSelect,
|
|
45
55
|
} = $props();
|
|
46
56
|
|
|
57
|
+
let labels = $derived({ ...defaultLabels, ...userLabels });
|
|
58
|
+
|
|
47
59
|
let selectedDate = $state(null);
|
|
48
60
|
let shareSuccess = $state(false);
|
|
49
61
|
|
|
@@ -55,7 +67,9 @@
|
|
|
55
67
|
async function handleShare() {
|
|
56
68
|
const shareData = {
|
|
57
69
|
title: event.name,
|
|
58
|
-
text:
|
|
70
|
+
text: (labels.shareText || 'Check out {name} at {venue}!')
|
|
71
|
+
.replace('{name}', event.name)
|
|
72
|
+
.replace('{venue}', event.venue?.name || 'this venue'),
|
|
59
73
|
url: typeof window !== 'undefined' ? window.location.href : ''
|
|
60
74
|
};
|
|
61
75
|
|
|
@@ -93,7 +107,7 @@
|
|
|
93
107
|
</h2>
|
|
94
108
|
<button
|
|
95
109
|
class="shrink-0 p-2 rounded-lg transition-colors hover:bg-gray-100 dark:hover:bg-gray-700 relative"
|
|
96
|
-
aria-label=
|
|
110
|
+
aria-label={labels.shareEvent}
|
|
97
111
|
onclick={handleShare}
|
|
98
112
|
>
|
|
99
113
|
{#if shareSuccess}
|
|
@@ -108,16 +122,16 @@
|
|
|
108
122
|
<div class="space-y-1">
|
|
109
123
|
<p class="{typography.label}">{formatDateTime(event.startDateTime)}</p>
|
|
110
124
|
{#if event.displayStartTime && event.doorsOpenTime}
|
|
111
|
-
<p class="{typography.smMuted}">
|
|
125
|
+
<p class="{typography.smMuted}">{labels.doorsOpen} {formatTimeline(event.doorsOpenTime)}</p>
|
|
112
126
|
{/if}
|
|
113
127
|
{#if event.displayEndTime && event.endDateTime}
|
|
114
|
-
<p class="{typography.smMuted}">
|
|
128
|
+
<p class="{typography.smMuted}">{labels.ends} {formatTimeline(event.endDateTime)}</p>
|
|
115
129
|
{/if}
|
|
116
130
|
</div>
|
|
117
131
|
|
|
118
132
|
{#if showtimes && showtimes.length > 1}
|
|
119
133
|
<div class="mt-4 pt-4 border-t border-gray-200 dark:border-gray-700">
|
|
120
|
-
<p class="{typography.smMuted} mb-2">
|
|
134
|
+
<p class="{typography.smMuted} mb-2">{labels.moreShowtimes}</p>
|
|
121
135
|
<div class="flex flex-wrap gap-2">
|
|
122
136
|
{#each showtimes as showtime}
|
|
123
137
|
<div class="w-24">
|
|
@@ -153,11 +167,11 @@
|
|
|
153
167
|
{#if event.hasAgeRestriction || event.ageRequirement || event.minimumAge}
|
|
154
168
|
<p class="{typography.smMuted} mt-2">
|
|
155
169
|
{#if event.ageRequirement != null}
|
|
156
|
-
{event.ageRequirement <= 1 ?
|
|
170
|
+
{event.ageRequirement <= 1 ? labels.allAges : `${event.ageRequirement}+`}
|
|
157
171
|
{:else if event.minimumAge != null}
|
|
158
|
-
{event.minimumAge <= 1 ?
|
|
172
|
+
{event.minimumAge <= 1 ? labels.allAges : `${event.minimumAge}+`}
|
|
159
173
|
{:else if event.ageRestriction != null}
|
|
160
|
-
{event.ageRestriction <= 1 ?
|
|
174
|
+
{event.ageRestriction <= 1 ? labels.allAges : `${event.ageRestriction}+`}
|
|
161
175
|
{/if}
|
|
162
176
|
</p>
|
|
163
177
|
{/if}
|
|
@@ -7,6 +7,8 @@ declare const ShowCard: import("svelte").Component<{
|
|
|
7
7
|
event?: Record<string, any>;
|
|
8
8
|
showtimes?: any[];
|
|
9
9
|
showTitle?: boolean;
|
|
10
|
+
locale?: string;
|
|
11
|
+
labels?: Record<string, any>;
|
|
10
12
|
formatDateTime?: Function;
|
|
11
13
|
formatTimeline?: Function;
|
|
12
14
|
onShowtimeSelect: any;
|
|
@@ -15,6 +17,8 @@ type $$ComponentProps = {
|
|
|
15
17
|
event?: Record<string, any>;
|
|
16
18
|
showtimes?: any[];
|
|
17
19
|
showTitle?: boolean;
|
|
20
|
+
locale?: string;
|
|
21
|
+
labels?: Record<string, any>;
|
|
18
22
|
formatDateTime?: Function;
|
|
19
23
|
formatTimeline?: Function;
|
|
20
24
|
onShowtimeSelect: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShowCard.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/calendar/ShowCard/ShowCard.svelte.js"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"ShowCard.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/calendar/ShowCard/ShowCard.svelte.js"],"names":[],"mappings":";;;;;AAgLA;YAzJ6B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;gBAAc,GAAG,EAAE;gBAAc,OAAO;aAAW,MAAM;aAAW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;;sBAA0E,GAAG;WAyJ7J;wBAzJpC;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,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,cAAc,CAAC,WAAW;IAAC,cAAc,CAAC,WAAW;IAAC,gBAAgB,EAAE,GAAG,CAAA;CAAE"}
|
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
import { typography } from '../../tokens/typography';
|
|
3
3
|
import { formatEventTime, formatEventDate } from '../../datetime/format';
|
|
4
4
|
|
|
5
|
+
const defaultLabels = {
|
|
6
|
+
at: 'at',
|
|
7
|
+
selected: ', selected',
|
|
8
|
+
};
|
|
9
|
+
|
|
5
10
|
let {
|
|
6
11
|
day = '',
|
|
7
12
|
date = '',
|
|
@@ -9,8 +14,12 @@
|
|
|
9
14
|
timezone = '',
|
|
10
15
|
isSelected = false,
|
|
11
16
|
onselect,
|
|
17
|
+
locale = 'en-US',
|
|
18
|
+
labels: userLabels = {},
|
|
12
19
|
} = $props();
|
|
13
20
|
|
|
21
|
+
let labels = $derived({ ...defaultLabels, ...userLabels });
|
|
22
|
+
|
|
14
23
|
function handleCardClick() {
|
|
15
24
|
onselect?.({ date });
|
|
16
25
|
}
|
|
@@ -31,10 +40,9 @@
|
|
|
31
40
|
// Fallback for HH:mm time strings
|
|
32
41
|
const d = new Date(`1970-01-01T${timeStr}`);
|
|
33
42
|
if (isNaN(d.getTime())) return timeStr;
|
|
34
|
-
return d.toLocaleTimeString(
|
|
43
|
+
return d.toLocaleTimeString(locale, {
|
|
35
44
|
hour: 'numeric',
|
|
36
45
|
minute: '2-digit',
|
|
37
|
-
hour12: true
|
|
38
46
|
});
|
|
39
47
|
}
|
|
40
48
|
|
|
@@ -46,7 +54,7 @@
|
|
|
46
54
|
}
|
|
47
55
|
const d = new Date(dateStr);
|
|
48
56
|
if (isNaN(d.getTime())) return dateStr;
|
|
49
|
-
return d.toLocaleDateString(
|
|
57
|
+
return d.toLocaleDateString(locale, {
|
|
50
58
|
month: 'short',
|
|
51
59
|
day: 'numeric',
|
|
52
60
|
});
|
|
@@ -61,7 +69,7 @@
|
|
|
61
69
|
onkeydown={handleKeydown}
|
|
62
70
|
tabindex="0"
|
|
63
71
|
role="button"
|
|
64
|
-
aria-label={`${day} ${formatDate(date)} at ${formatHour(time)}${isSelected ?
|
|
72
|
+
aria-label={`${day} ${formatDate(date)} ${labels.at} ${formatHour(time)}${isSelected ? labels.selected : ''}`}
|
|
65
73
|
aria-pressed={isSelected}
|
|
66
74
|
>
|
|
67
75
|
<span class="{typography.label} text-sm {typography.textMuted}">{day}</span>
|
|
@@ -10,6 +10,8 @@ declare const ShowTimeCard: import("svelte").Component<{
|
|
|
10
10
|
timezone?: string;
|
|
11
11
|
isSelected?: boolean;
|
|
12
12
|
onselect: any;
|
|
13
|
+
locale?: string;
|
|
14
|
+
labels?: Record<string, any>;
|
|
13
15
|
}, {}, "">;
|
|
14
16
|
type $$ComponentProps = {
|
|
15
17
|
day?: string;
|
|
@@ -18,5 +20,7 @@ type $$ComponentProps = {
|
|
|
18
20
|
timezone?: string;
|
|
19
21
|
isSelected?: boolean;
|
|
20
22
|
onselect: any;
|
|
23
|
+
locale?: string;
|
|
24
|
+
labels?: Record<string, any>;
|
|
21
25
|
};
|
|
22
26
|
//# sourceMappingURL=ShowTimeCard.svelte.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShowTimeCard.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/calendar/ShowTimeCard/ShowTimeCard.svelte.js"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"ShowTimeCard.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/calendar/ShowTimeCard/ShowTimeCard.svelte.js"],"names":[],"mappings":";;;;;AAiFA;UAlE2B,MAAM;WAAS,MAAM;WAAS,MAAM;eAAa,MAAM;iBAAe,OAAO;cAAY,GAAG;aAAW,MAAM;aAAW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;WAkE3G;wBAlExC;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAAE"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export * from "./constants/formOptions.js";
|
|
|
7
7
|
export * from "./constants/validation.js";
|
|
8
8
|
export * from "./presets/index.js";
|
|
9
9
|
export { portal } from "./utils/portal.js";
|
|
10
|
+
export { roundCurrency } from "./utils/formatters.js";
|
|
10
11
|
export { typography } from "./tokens/typography.js";
|
|
11
12
|
export type HapticStyle = import("./utils/haptic.js").HapticStyle;
|
|
12
13
|
export { safeSlide, bloom } from "./utils/transitions.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.js"],"names":[],"mappings":";;;;;;;;;;;0BAsDc,OAAO,mBAAmB,EAAE,WAAW"}
|
package/dist/index.js
CHANGED
|
@@ -46,6 +46,7 @@ export * from './presets/index.js';
|
|
|
46
46
|
export { portal } from './utils/portal.js';
|
|
47
47
|
export { safeSlide, bloom } from './utils/transitions.js';
|
|
48
48
|
export { optimizeImage, supportsWebP, createImage } from './utils/imageOptimizer.js';
|
|
49
|
+
export { roundCurrency } from './utils/formatters.js';
|
|
49
50
|
export {
|
|
50
51
|
triggerHaptic,
|
|
51
52
|
isHapticAvailable,
|
|
@@ -9,6 +9,10 @@
|
|
|
9
9
|
import { classNames } from '../../utils/utils.js';
|
|
10
10
|
import Renew from 'carbon-icons-svelte/lib/Renew.svelte';
|
|
11
11
|
|
|
12
|
+
const defaultLabels = {
|
|
13
|
+
retry: 'retry',
|
|
14
|
+
};
|
|
15
|
+
|
|
12
16
|
interface Props {
|
|
13
17
|
/** Message direction - inbound (from other) or outbound (from us) */
|
|
14
18
|
direction?: 'inbound' | 'outbound';
|
|
@@ -28,6 +32,7 @@
|
|
|
28
32
|
avatar?: Snippet;
|
|
29
33
|
/** Message content */
|
|
30
34
|
children?: Snippet;
|
|
35
|
+
labels?: Partial<typeof defaultLabels>;
|
|
31
36
|
}
|
|
32
37
|
|
|
33
38
|
let {
|
|
@@ -40,8 +45,11 @@
|
|
|
40
45
|
className = '',
|
|
41
46
|
avatar,
|
|
42
47
|
children,
|
|
48
|
+
labels: userLabels = {},
|
|
43
49
|
}: Props = $props();
|
|
44
50
|
|
|
51
|
+
let labels = $derived({ ...defaultLabels, ...userLabels });
|
|
52
|
+
|
|
45
53
|
let isOutbound = $derived(direction === 'outbound');
|
|
46
54
|
|
|
47
55
|
let bubbleClasses = $derived(
|
|
@@ -83,7 +91,7 @@
|
|
|
83
91
|
onclick={onretry}
|
|
84
92
|
>
|
|
85
93
|
<Renew class="w-2 h-2" />
|
|
86
|
-
retry
|
|
94
|
+
{labels.retry}
|
|
87
95
|
</button>
|
|
88
96
|
{/if}
|
|
89
97
|
</div>
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
* error state, timestamp, and sender name.
|
|
6
6
|
*/
|
|
7
7
|
import type { Snippet } from 'svelte';
|
|
8
|
-
|
|
8
|
+
declare const ChatBubble: import("svelte").Component<{
|
|
9
9
|
/** Message direction - inbound (from other) or outbound (from us) */
|
|
10
|
-
direction?:
|
|
10
|
+
direction?: "inbound" | "outbound";
|
|
11
11
|
/** Sender name (shown for inbound messages) */
|
|
12
12
|
senderName?: string;
|
|
13
13
|
/** Timestamp to display */
|
|
@@ -24,8 +24,10 @@ interface Props {
|
|
|
24
24
|
avatar?: Snippet;
|
|
25
25
|
/** Message content */
|
|
26
26
|
children?: Snippet;
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
labels?: Partial<{
|
|
28
|
+
retry: string;
|
|
29
|
+
}>;
|
|
30
|
+
}, {}, "">;
|
|
29
31
|
type ChatBubble = ReturnType<typeof ChatBubble>;
|
|
30
32
|
export default ChatBubble;
|
|
31
33
|
//# sourceMappingURL=ChatBubble.svelte.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatBubble.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/patterns/chat/ChatBubble.svelte.ts"],"names":[],"mappings":"AAGA;;;;;KAKK;AACL,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatBubble.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/patterns/chat/ChatBubble.svelte.ts"],"names":[],"mappings":"AAGA;;;;;KAKK;AACL,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAsGtC,QAAA,MAAM,UAAU;IAvFZ,qEAAqE;gBACzD,SAAS,GAAG,UAAU;IAClC,+CAA+C;iBAClC,MAAM;IACnB,2BAA2B;gBACf,MAAM;IAClB,8BAA8B;aACrB,OAAO;IAChB,gCAAgC;mBACjB,MAAM;IACrB,qCAAqC;cAC3B,MAAM,IAAI;IACpB,4CAA4C;gBAChC,MAAM;IAClB,4CAA4C;aACnC,OAAO;IAChB,sBAAsB;eACX,OAAO;aACT,OAAO;;MAAsB;UAqEc,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
|
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
import { classNames } from '../../utils/utils.js';
|
|
8
8
|
import SendAltFilled from 'carbon-icons-svelte/lib/SendAltFilled.svelte';
|
|
9
9
|
|
|
10
|
+
const defaultLabels = {
|
|
11
|
+
invited: (name: string) => `Invited ${name}`,
|
|
12
|
+
};
|
|
13
|
+
|
|
10
14
|
interface Props {
|
|
11
15
|
/** Name of the performer who was invited */
|
|
12
16
|
performerName: string;
|
|
@@ -14,14 +18,19 @@
|
|
|
14
18
|
outbound?: boolean;
|
|
15
19
|
/** Additional CSS classes */
|
|
16
20
|
className?: string;
|
|
21
|
+
/** Override user-visible strings */
|
|
22
|
+
labels?: Partial<typeof defaultLabels>;
|
|
17
23
|
}
|
|
18
24
|
|
|
19
25
|
let {
|
|
20
26
|
performerName,
|
|
21
27
|
outbound = true,
|
|
22
28
|
className = '',
|
|
29
|
+
labels: userLabels = {},
|
|
23
30
|
}: Props = $props();
|
|
24
31
|
|
|
32
|
+
let labels = $derived({ ...defaultLabels, ...userLabels });
|
|
33
|
+
|
|
25
34
|
let bubbleClasses = $derived(
|
|
26
35
|
classNames(
|
|
27
36
|
'px-4 py-2.5 rounded-2xl text-sm bg-blue-600 text-white flex items-center gap-1.5',
|
|
@@ -33,5 +42,5 @@
|
|
|
33
42
|
|
|
34
43
|
<div class={bubbleClasses}>
|
|
35
44
|
<SendAltFilled class="w-4 h-4" />
|
|
36
|
-
|
|
45
|
+
{typeof labels.invited === 'function' ? labels.invited(performerName) : labels.invited}
|
|
37
46
|
</div>
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
declare const ChatInvitationBubble: import("svelte").Component<{
|
|
2
2
|
/** Name of the performer who was invited */
|
|
3
3
|
performerName: string;
|
|
4
4
|
/** Whether this is outbound (right side) */
|
|
5
5
|
outbound?: boolean;
|
|
6
6
|
/** Additional CSS classes */
|
|
7
7
|
className?: string;
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
/** Override user-visible strings */
|
|
9
|
+
labels?: Partial<{
|
|
10
|
+
invited: (name: string) => string;
|
|
11
|
+
}>;
|
|
12
|
+
}, {}, "">;
|
|
10
13
|
type ChatInvitationBubble = ReturnType<typeof ChatInvitationBubble>;
|
|
11
14
|
export default ChatInvitationBubble;
|
|
12
15
|
//# sourceMappingURL=ChatInvitationBubble.svelte.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatInvitationBubble.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/patterns/chat/ChatInvitationBubble.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ChatInvitationBubble.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/patterns/chat/ChatInvitationBubble.svelte.ts"],"names":[],"mappings":"AAwDA,QAAA,MAAM,oBAAoB;IAnCtB,4CAA4C;mBAC7B,MAAM;IACrB,4CAA4C;eACjC,OAAO;IAClB,6BAA6B;gBACjB,MAAM;IAClB,oCAAoC;aAC3B,OAAO;wBAXA,MAAM;MAWgB;UA4BwB,CAAC;AACnE,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACpE,eAAe,oBAAoB,CAAC"}
|
|
@@ -8,20 +8,29 @@
|
|
|
8
8
|
import { classNames } from '../../utils/utils.js';
|
|
9
9
|
import SendAltFilled from 'carbon-icons-svelte/lib/SendAltFilled.svelte';
|
|
10
10
|
|
|
11
|
+
const defaultLabels = {
|
|
12
|
+
invited: (name: string) => `Invited ${name}`,
|
|
13
|
+
};
|
|
14
|
+
|
|
11
15
|
interface Props {
|
|
12
16
|
/** Name of the performer who was invited */
|
|
13
17
|
performerName: string;
|
|
14
18
|
/** Additional CSS classes */
|
|
15
19
|
className?: string;
|
|
20
|
+
/** Override user-visible strings */
|
|
21
|
+
labels?: Partial<typeof defaultLabels>;
|
|
16
22
|
}
|
|
17
23
|
|
|
18
24
|
let {
|
|
19
25
|
performerName,
|
|
20
26
|
className = '',
|
|
27
|
+
labels: userLabels = {},
|
|
21
28
|
}: Props = $props();
|
|
29
|
+
|
|
30
|
+
let labels = $derived({ ...defaultLabels, ...userLabels });
|
|
22
31
|
</script>
|
|
23
32
|
|
|
24
33
|
<span class={classNames('text-xs font-medium text-blue-600 flex items-center gap-1', className)}>
|
|
25
34
|
<SendAltFilled class="w-3 h-3" />
|
|
26
|
-
|
|
35
|
+
{typeof labels.invited === 'function' ? labels.invited(performerName) : labels.invited}
|
|
27
36
|
</span>
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
declare const ChatInvitationNotice: import("svelte").Component<{
|
|
2
2
|
/** Name of the performer who was invited */
|
|
3
3
|
performerName: string;
|
|
4
4
|
/** Additional CSS classes */
|
|
5
5
|
className?: string;
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
/** Override user-visible strings */
|
|
7
|
+
labels?: Partial<{
|
|
8
|
+
invited: (name: string) => string;
|
|
9
|
+
}>;
|
|
10
|
+
}, {}, "">;
|
|
8
11
|
type ChatInvitationNotice = ReturnType<typeof ChatInvitationNotice>;
|
|
9
12
|
export default ChatInvitationNotice;
|
|
10
13
|
//# sourceMappingURL=ChatInvitationNotice.svelte.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatInvitationNotice.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/patterns/chat/ChatInvitationNotice.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ChatInvitationNotice.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/patterns/chat/ChatInvitationNotice.svelte.ts"],"names":[],"mappings":"AA8CA,QAAA,MAAM,oBAAoB;IAxBtB,4CAA4C;mBAC7B,MAAM;IACrB,6BAA6B;gBACjB,MAAM;IAClB,oCAAoC;aAC3B,OAAO;wBATA,MAAM;MASgB;UAmBwB,CAAC;AACnE,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACpE,eAAe,oBAAoB,CAAC"}
|
|
@@ -4,11 +4,16 @@
|
|
|
4
4
|
import WarningIcon from "../../primitives/Icons/WarningIcon.svelte";
|
|
5
5
|
import Button from "../../primitives/Button/Button.svelte";
|
|
6
6
|
|
|
7
|
+
const defaultLabels = {
|
|
8
|
+
pleaseFixTheFollowing: 'Please fix the following:',
|
|
9
|
+
};
|
|
10
|
+
|
|
7
11
|
interface Props {
|
|
8
12
|
errors?: Record<string, string | null | undefined>;
|
|
9
13
|
show?: boolean;
|
|
10
14
|
fieldLabels?: Record<string, string>;
|
|
11
15
|
fieldIds?: Record<string, string>;
|
|
16
|
+
labels?: Partial<typeof defaultLabels>;
|
|
12
17
|
}
|
|
13
18
|
|
|
14
19
|
let {
|
|
@@ -16,8 +21,11 @@
|
|
|
16
21
|
show = false,
|
|
17
22
|
fieldLabels = {},
|
|
18
23
|
fieldIds = {},
|
|
24
|
+
labels: userLabels = {},
|
|
19
25
|
}: Props = $props();
|
|
20
26
|
|
|
27
|
+
let labels = $derived({ ...defaultLabels, ...userLabels });
|
|
28
|
+
|
|
21
29
|
// Get list of fields with errors
|
|
22
30
|
let errorFields = $derived(Object.entries(errors)
|
|
23
31
|
.filter(([_, message]) => message && message.trim() !== "")
|
|
@@ -52,7 +60,7 @@
|
|
|
52
60
|
<WarningIcon class="shrink-0 text-red-600 dark:text-red-500 mt-0.5" />
|
|
53
61
|
<div class="flex-1">
|
|
54
62
|
<p class="text-sm font-medium text-red-800 dark:text-red-400">
|
|
55
|
-
|
|
63
|
+
{labels.pleaseFixTheFollowing}
|
|
56
64
|
</p>
|
|
57
65
|
<ul class="mt-2 space-y-1">
|
|
58
66
|
{#each errorFields as field}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
declare const FormValidationSummary: import("svelte").Component<{
|
|
2
2
|
errors?: Record<string, string | null | undefined>;
|
|
3
3
|
show?: boolean;
|
|
4
4
|
fieldLabels?: Record<string, string>;
|
|
5
5
|
fieldIds?: Record<string, string>;
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
labels?: Partial<{
|
|
7
|
+
pleaseFixTheFollowing: string;
|
|
8
|
+
}>;
|
|
9
|
+
}, {}, "">;
|
|
8
10
|
type FormValidationSummary = ReturnType<typeof FormValidationSummary>;
|
|
9
11
|
export default FormValidationSummary;
|
|
10
12
|
//# sourceMappingURL=FormValidationSummary.svelte.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormValidationSummary.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/patterns/forms/FormValidationSummary.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FormValidationSummary.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/patterns/forms/FormValidationSummary.svelte.ts"],"names":[],"mappings":"AAmFA,QAAA,MAAM,qBAAqB;aAhEd,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;WAC3C,OAAO;kBACA,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;eACzB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;aACxB,OAAO;;MAAsB;UA4DyB,CAAC;AACpE,KAAK,qBAAqB,GAAG,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACtE,eAAe,qBAAqB,CAAC"}
|
|
@@ -12,14 +12,22 @@
|
|
|
12
12
|
icon: string;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
const defaultLabels = {
|
|
16
|
+
showsLabel: 'Shows',
|
|
17
|
+
};
|
|
18
|
+
|
|
15
19
|
interface Props {
|
|
16
20
|
links?: NavLink[];
|
|
21
|
+
labels?: Partial<typeof defaultLabels>;
|
|
17
22
|
}
|
|
18
23
|
|
|
19
24
|
let {
|
|
20
25
|
links = [],
|
|
26
|
+
labels: userLabels = {},
|
|
21
27
|
}: Props = $props();
|
|
22
28
|
|
|
29
|
+
let labels = $derived({ ...defaultLabels, ...userLabels });
|
|
30
|
+
|
|
23
31
|
let invitationCount = $state(0);
|
|
24
32
|
|
|
25
33
|
let currentPath = $derived($page.url.pathname);
|
|
@@ -66,7 +74,7 @@
|
|
|
66
74
|
>
|
|
67
75
|
<span class="bottom-nav-icon relative flex items-center justify-center transition-transform duration-150 active:scale-[0.8]">
|
|
68
76
|
<Icon name={icon} size="24" />
|
|
69
|
-
{#if label ===
|
|
77
|
+
{#if label === labels.showsLabel && invitationCount > 0}
|
|
70
78
|
<span class="notification-dot absolute -top-1 -right-1 w-2 h-2 bg-red-500 rounded-full"></span>
|
|
71
79
|
{/if}
|
|
72
80
|
</span>
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
declare const BottomNav: import("svelte").Component<{
|
|
2
|
+
links?: {
|
|
3
|
+
label: string;
|
|
4
|
+
href: string;
|
|
5
|
+
icon: string;
|
|
6
|
+
}[];
|
|
7
|
+
labels?: Partial<{
|
|
8
|
+
showsLabel: string;
|
|
9
|
+
}>;
|
|
10
|
+
}, {}, "">;
|
|
10
11
|
type BottomNav = ReturnType<typeof BottomNav>;
|
|
11
12
|
export default BottomNav;
|
|
12
13
|
//# sourceMappingURL=BottomNav.svelte.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomNav.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/patterns/navigation/BottomNav.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BottomNav.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/patterns/navigation/BottomNav.svelte.ts"],"names":[],"mappings":"AA0FA,QAAA,MAAM,SAAS;YA7DH;eAVD,MAAM;cACP,MAAM;cACN,MAAM;OAQK;aACR,OAAO;;MAAsB;UA4Da,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
|
|
@@ -20,6 +20,14 @@
|
|
|
20
20
|
href: string;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
const defaultLabels = {
|
|
24
|
+
back: 'Back',
|
|
25
|
+
signOut: 'Sign out',
|
|
26
|
+
signOutMobile: 'Sign Out',
|
|
27
|
+
cancel: 'Cancel',
|
|
28
|
+
defaultName: 'Performer',
|
|
29
|
+
};
|
|
30
|
+
|
|
23
31
|
interface Props {
|
|
24
32
|
signoutHandler?: () => void;
|
|
25
33
|
name?: string;
|
|
@@ -28,6 +36,7 @@
|
|
|
28
36
|
navLinks?: NavLink[];
|
|
29
37
|
dropdownLinks?: NavLink[];
|
|
30
38
|
showBackButton?: boolean;
|
|
39
|
+
labels?: Partial<typeof defaultLabels>;
|
|
31
40
|
}
|
|
32
41
|
|
|
33
42
|
let {
|
|
@@ -38,8 +47,11 @@
|
|
|
38
47
|
navLinks = [],
|
|
39
48
|
dropdownLinks = [],
|
|
40
49
|
showBackButton = false,
|
|
50
|
+
labels: userLabels = {},
|
|
41
51
|
}: Props = $props();
|
|
42
52
|
|
|
53
|
+
let labels = $derived({ ...defaultLabels, ...userLabels });
|
|
54
|
+
|
|
43
55
|
let showMobileSheet = $state(false);
|
|
44
56
|
let showDesktopDropdown = $state(false);
|
|
45
57
|
|
|
@@ -67,7 +79,7 @@
|
|
|
67
79
|
<div class="block flex-1 md:hidden">
|
|
68
80
|
<Button variant="ghost" size="sm" onclick={() => history.back()}>
|
|
69
81
|
<ChevronLeft class="w-5 h-5" />
|
|
70
|
-
|
|
82
|
+
{labels.back}
|
|
71
83
|
</Button>
|
|
72
84
|
</div>
|
|
73
85
|
<div class="hidden md:flex w-full items-center">
|
|
@@ -104,7 +116,7 @@
|
|
|
104
116
|
<div class="fixed inset-0 z-30 bg-transparent" onclick={() => showDesktopDropdown = false}></div>
|
|
105
117
|
<div class="absolute top-[calc(100%+0.5rem)] right-0 w-56 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg shadow-lg z-40 overflow-hidden">
|
|
106
118
|
<div class="py-3 px-4 border-b border-gray-200 dark:border-gray-700">
|
|
107
|
-
<span class={`block ${typography.label}`}>{name ||
|
|
119
|
+
<span class={`block ${typography.label}`}>{name || labels.defaultName}</span>
|
|
108
120
|
<span class={`block ${typography.xsMuted} mt-0.5`}>{email || ""}</span>
|
|
109
121
|
</div>
|
|
110
122
|
{#each dropdownLinks as { label, href }}
|
|
@@ -121,7 +133,7 @@
|
|
|
121
133
|
size="md"
|
|
122
134
|
onclick={() => { showDesktopDropdown = false; signoutHandler(); }}
|
|
123
135
|
>
|
|
124
|
-
|
|
136
|
+
{labels.signOut}
|
|
125
137
|
</MenuItem>
|
|
126
138
|
</div>
|
|
127
139
|
{/if}
|
|
@@ -172,7 +184,7 @@
|
|
|
172
184
|
<div class="fixed inset-0 z-30 bg-transparent" onclick={() => showDesktopDropdown = false}></div>
|
|
173
185
|
<div class="absolute top-[calc(100%+0.5rem)] right-0 w-56 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg shadow-lg z-40 overflow-hidden">
|
|
174
186
|
<div class="py-3 px-4 border-b border-gray-200 dark:border-gray-700">
|
|
175
|
-
<span class={`block ${typography.label}`}>{name ||
|
|
187
|
+
<span class={`block ${typography.label}`}>{name || labels.defaultName}</span>
|
|
176
188
|
<span class={`block ${typography.xsMuted} mt-0.5`}>{email || ""}</span>
|
|
177
189
|
</div>
|
|
178
190
|
{#each dropdownLinks as { label, href }}
|
|
@@ -189,7 +201,7 @@
|
|
|
189
201
|
size="md"
|
|
190
202
|
onclick={() => { showDesktopDropdown = false; signoutHandler(); }}
|
|
191
203
|
>
|
|
192
|
-
|
|
204
|
+
{labels.signOut}
|
|
193
205
|
</MenuItem>
|
|
194
206
|
</div>
|
|
195
207
|
{/if}
|
|
@@ -218,7 +230,7 @@
|
|
|
218
230
|
</div>
|
|
219
231
|
|
|
220
232
|
<div class="px-6 py-4 border-b border-gray-200 dark:border-gray-700">
|
|
221
|
-
<p class={`${typography.h4} m-0`}>{name ||
|
|
233
|
+
<p class={`${typography.h4} m-0`}>{name || labels.defaultName}</p>
|
|
222
234
|
<p class={`${typography.smMuted} mt-0.5 m-0`}>{email || ""}</p>
|
|
223
235
|
</div>
|
|
224
236
|
|
|
@@ -237,13 +249,13 @@
|
|
|
237
249
|
size="lg"
|
|
238
250
|
onclick={() => { showMobileSheet = false; signoutHandler(); }}
|
|
239
251
|
>
|
|
240
|
-
|
|
252
|
+
{labels.signOutMobile}
|
|
241
253
|
</MenuItem>
|
|
242
254
|
</div>
|
|
243
255
|
|
|
244
256
|
<div class="border-t-8 border-gray-100 dark:border-gray-700">
|
|
245
257
|
<Button variant="ghost" size="full" class="py-4 text-base font-semibold" onclick={() => showMobileSheet = false}>
|
|
246
|
-
|
|
258
|
+
{labels.cancel}
|
|
247
259
|
</Button>
|
|
248
260
|
</div>
|
|
249
261
|
</div>
|