@getmicdrop/svelte-components 2.6.4 → 2.8.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/__LIB_STORES__.js +30 -2
- package/dist/components/AboutShow/AboutShow.svelte +278 -0
- package/dist/components/AboutShow/AboutShow.svelte.d.ts +43 -0
- package/dist/components/AboutShow/AboutShow.svelte.d.ts.map +1 -0
- package/dist/components/Accordion/Accordion.svelte +44 -0
- package/dist/components/Accordion/Accordion.svelte.d.ts +42 -0
- package/dist/components/Accordion/Accordion.svelte.d.ts.map +1 -0
- package/dist/components/Accordion/AccordionItem.svelte +141 -0
- package/dist/components/Accordion/AccordionItem.svelte.d.ts +50 -0
- package/dist/components/Accordion/AccordionItem.svelte.d.ts.map +1 -0
- package/dist/components/Badges/Badge.svelte +268 -17
- package/dist/components/Badges/Badge.svelte.d.ts +18 -2
- package/dist/components/Badges/Badge.svelte.d.ts.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.svelte +65 -36
- package/dist/components/Breadcrumb/Breadcrumb.svelte.d.ts +16 -2
- package/dist/components/Breadcrumb/Breadcrumb.svelte.d.ts.map +1 -1
- package/dist/components/Button/Button.svelte +136 -3
- package/dist/components/Button/Button.svelte.d.ts +2 -0
- package/dist/components/Button/Button.svelte.d.ts.map +1 -1
- package/dist/components/Calendar/MiniMonthCalendar.svelte +1446 -0
- package/dist/components/Calendar/{Calendar.svelte.d.ts → MiniMonthCalendar.svelte.d.ts} +20 -21
- package/dist/components/Calendar/MiniMonthCalendar.svelte.d.ts.map +1 -0
- package/dist/components/Card.svelte +2 -2
- package/dist/components/Card.svelte.d.ts +2 -2
- package/dist/components/Card.svelte.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.svelte +90 -0
- package/dist/components/Checkbox/Checkbox.svelte.d.ts +64 -0
- package/dist/components/Checkbox/Checkbox.svelte.d.ts.map +1 -0
- package/dist/components/DarkModeToggle.svelte +41 -52
- package/dist/components/DarkModeToggle.svelte.d.ts +0 -2
- package/dist/components/DarkModeToggle.svelte.d.ts.map +1 -1
- package/dist/components/Drawer/Drawer.svelte +207 -0
- package/dist/components/Drawer/Drawer.svelte.d.ts +74 -0
- package/dist/components/Drawer/Drawer.svelte.d.ts.map +1 -0
- package/dist/components/Dropdown/Dropdown.svelte +193 -0
- package/dist/components/Dropdown/Dropdown.svelte.d.ts +50 -0
- package/dist/components/Dropdown/Dropdown.svelte.d.ts.map +1 -0
- package/dist/components/Dropdown/DropdownItem.svelte +111 -0
- package/dist/components/Dropdown/DropdownItem.svelte.d.ts +48 -0
- package/dist/components/Dropdown/DropdownItem.svelte.d.ts.map +1 -0
- package/dist/components/Dropdown/SelectDropdown.svelte +301 -0
- package/dist/components/Dropdown/SelectDropdown.svelte.d.ts +51 -0
- package/dist/components/Dropdown/SelectDropdown.svelte.d.ts.map +1 -0
- package/dist/components/EmptyState/EmptyState.svelte +80 -0
- package/dist/components/{Calendar/QuarterView.stories.svelte.d.ts → EmptyState/EmptyState.svelte.d.ts} +17 -21
- package/dist/components/EmptyState/EmptyState.svelte.d.ts.map +1 -0
- package/dist/components/ErrorDisplay.svelte.d.ts +2 -2
- package/dist/components/FAQs/FAQs.svelte +49 -0
- package/dist/components/{Calendar/QuarterView.svelte.d.ts → FAQs/FAQs.svelte.d.ts} +10 -10
- package/dist/components/FAQs/FAQs.svelte.d.ts.map +1 -0
- package/dist/components/Input/Input.svelte +107 -12
- package/dist/components/Input/Input.svelte.d.ts +28 -12
- package/dist/components/Input/Input.svelte.d.ts.map +1 -1
- package/dist/components/Input/MultiSelect.svelte +4 -5
- package/dist/components/Input/MultiSelect.svelte.d.ts +8 -8
- package/dist/components/Input/MultiSelect.svelte.d.ts.map +1 -1
- package/dist/components/Input/OTPInput.svelte +1 -1
- package/dist/components/Input/Search.svelte +173 -0
- package/dist/components/Input/Search.svelte.d.ts +68 -0
- package/dist/components/Input/Search.svelte.d.ts.map +1 -0
- package/dist/components/Input/Select.svelte +42 -12
- package/dist/components/Input/Select.svelte.d.ts +8 -8
- package/dist/components/Input/Select.svelte.d.ts.map +1 -1
- package/dist/components/Input/Textarea.svelte +160 -0
- package/dist/components/Input/Textarea.svelte.d.ts +69 -0
- package/dist/components/Input/Textarea.svelte.d.ts.map +1 -0
- package/dist/components/Label/Label.svelte +60 -0
- package/dist/components/Label/Label.svelte.d.ts +48 -0
- package/dist/components/Label/Label.svelte.d.ts.map +1 -0
- package/dist/components/Layout/Header.svelte +14 -4
- package/dist/components/Layout/PageLayout.svelte +64 -0
- package/dist/components/Layout/PageLayout.svelte.d.ts +58 -0
- package/dist/components/Layout/PageLayout.svelte.d.ts.map +1 -0
- package/dist/components/Modal/ConfirmationModal.svelte +69 -17
- package/dist/components/Modal/ConfirmationModal.svelte.d.ts +22 -0
- package/dist/components/Modal/ConfirmationModal.svelte.d.ts.map +1 -1
- package/dist/components/Modal/InputModal.svelte +180 -0
- package/dist/components/Modal/InputModal.svelte.d.ts +77 -0
- package/dist/components/Modal/InputModal.svelte.d.ts.map +1 -0
- package/dist/components/Modal/Modal.svelte +41 -9
- package/dist/components/Modal/Modal.svelte.d.ts +2 -0
- package/dist/components/Modal/Modal.svelte.d.ts.map +1 -1
- package/dist/components/Modal/StatusModal.svelte +221 -0
- package/dist/components/Modal/StatusModal.svelte.d.ts +59 -0
- package/dist/components/Modal/StatusModal.svelte.d.ts.map +1 -0
- package/dist/components/MonthSwitcher/MonthSwitcher.svelte +206 -0
- package/dist/components/MonthSwitcher/MonthSwitcher.svelte.d.ts +37 -0
- package/dist/components/MonthSwitcher/MonthSwitcher.svelte.d.ts.map +1 -0
- package/dist/components/OrderSummary/OrderSummary.svelte +553 -0
- package/dist/components/OrderSummary/OrderSummary.svelte.d.ts +65 -0
- package/dist/components/OrderSummary/OrderSummary.svelte.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.svelte +197 -0
- package/dist/components/Pagination/Pagination.svelte.d.ts +53 -0
- package/dist/components/Pagination/Pagination.svelte.d.ts.map +1 -0
- package/dist/components/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte.d.ts +2 -2
- package/dist/components/PublicCard/PublicCard.svelte +267 -0
- package/dist/components/{pages/performers/AvailabilityCalendarModal.svelte.d.ts → PublicCard/PublicCard.svelte.d.ts} +12 -14
- package/dist/components/PublicCard/PublicCard.svelte.d.ts.map +1 -0
- package/dist/components/Radio/Radio.svelte +119 -0
- package/dist/components/Radio/Radio.svelte.d.ts +54 -0
- package/dist/components/Radio/Radio.svelte.d.ts.map +1 -0
- package/dist/components/ShowCard/ShowCard.svelte +240 -0
- package/dist/components/ShowCard/ShowCard.svelte.d.ts +39 -0
- package/dist/components/ShowCard/ShowCard.svelte.d.ts.map +1 -0
- package/dist/components/ShowTimeCard/ShowTimeCard.svelte +92 -0
- package/dist/components/ShowTimeCard/ShowTimeCard.svelte.d.ts +37 -0
- package/dist/components/ShowTimeCard/ShowTimeCard.svelte.d.ts.map +1 -0
- package/dist/components/Skeleton/Skeleton.svelte +68 -0
- package/dist/components/Skeleton/Skeleton.svelte.d.ts +37 -0
- package/dist/components/{Calendar/QuarterView.svelte.d.ts.map → Skeleton/Skeleton.svelte.d.ts.map} +1 -1
- package/dist/components/Spinner/Spinner.svelte +73 -17
- package/dist/components/Spinner/Spinner.svelte.d.ts +5 -3
- package/dist/components/Spinner/Spinner.svelte.d.ts.map +1 -1
- package/dist/components/SuperLogin/SuperLogin.svelte +1282 -0
- package/dist/components/SuperLogin/SuperLogin.svelte.d.ts +44 -0
- package/dist/components/SuperLogin/SuperLogin.svelte.d.ts.map +1 -0
- package/dist/components/SuperLogin/index.d.ts +2 -0
- package/dist/components/SuperLogin/index.d.ts.map +1 -0
- package/dist/components/SuperLogin/index.js +1 -0
- package/dist/components/Tabs/TabItem.svelte +39 -0
- package/dist/components/Tabs/TabItem.svelte.d.ts +52 -0
- package/dist/components/Tabs/TabItem.svelte.d.ts.map +1 -0
- package/dist/components/Tabs/Tabs.svelte +181 -0
- package/dist/components/Tabs/Tabs.svelte.d.ts +46 -0
- package/dist/components/Tabs/Tabs.svelte.d.ts.map +1 -0
- package/dist/components/Typography/Typography.svelte +50 -0
- package/dist/components/Typography/Typography.svelte.d.ts +48 -0
- package/dist/components/Typography/Typography.svelte.d.ts.map +1 -0
- package/dist/components/pages/performers/ShowDetails.svelte.d.ts +4 -4
- package/dist/components/pages/performers/ShowItemCard.svelte.d.ts +8 -8
- package/dist/components/pages/performers/SwitchOption.svelte.d.ts +2 -2
- package/dist/components/pages/performers/VenueInfo.svelte.d.ts +2 -2
- package/dist/components/pages/performers/VenueItemCard.svelte +2 -2
- package/dist/components/pages/performers/VenueItemCard.svelte.d.ts +4 -4
- package/dist/components/pages/profile/profile-form.svelte +1 -1
- package/dist/components/pages/settings/tabs/CustomImageDropzone.svelte.d.ts +2 -2
- package/dist/components/pages/shows/TabNavigation.svelte +7 -8
- package/dist/constants/formOptions.d.ts +5 -2
- package/dist/constants/formOptions.d.ts.map +1 -1
- package/dist/constants/formOptions.js +2 -1
- package/dist/constants/validation.d.ts +55 -0
- package/dist/constants/validation.d.ts.map +1 -0
- package/dist/constants/validation.js +91 -0
- package/dist/constants/validation.spec.d.ts +2 -0
- package/dist/constants/validation.spec.d.ts.map +1 -0
- package/dist/constants/validation.spec.js +64 -0
- package/dist/index.d.ts +30 -4
- package/dist/index.js +37 -30
- package/dist/services/EventService.js +75 -75
- package/dist/services/EventService.spec.js +217 -217
- package/dist/services/ShowService.spec.js +342 -342
- package/package.json +160 -160
- package/dist/components/Calendar/Calendar.spec.d.ts +0 -2
- package/dist/components/Calendar/Calendar.spec.d.ts.map +0 -1
- package/dist/components/Calendar/Calendar.spec.js +0 -131
- package/dist/components/Calendar/Calendar.svelte +0 -1115
- package/dist/components/Calendar/Calendar.svelte.d.ts.map +0 -1
- package/dist/components/Calendar/QuarterView.spec.d.ts +0 -2
- package/dist/components/Calendar/QuarterView.spec.d.ts.map +0 -1
- package/dist/components/Calendar/QuarterView.spec.js +0 -394
- package/dist/components/Calendar/QuarterView.stories.svelte +0 -134
- package/dist/components/Calendar/QuarterView.stories.svelte.d.ts.map +0 -1
- package/dist/components/Calendar/QuarterView.svelte +0 -736
- package/dist/components/pages/performers/AvailabilityCalendarModal.svelte +0 -632
- package/dist/components/pages/performers/AvailabilityCalendarModal.svelte.d.ts.map +0 -1
|
@@ -1,43 +1,42 @@
|
|
|
1
|
-
export default
|
|
2
|
-
type
|
|
1
|
+
export default MiniMonthCalendar;
|
|
2
|
+
type MiniMonthCalendar = SvelteComponent<{
|
|
3
3
|
variant?: string | undefined;
|
|
4
|
-
view?: string | undefined;
|
|
5
|
-
events?: any[] | undefined;
|
|
6
4
|
selectedDates?: any[] | undefined;
|
|
7
|
-
|
|
8
|
-
compact?: boolean | undefined;
|
|
9
|
-
showNavigation?: boolean | undefined;
|
|
10
|
-
showViewSwitcher?: boolean | undefined;
|
|
11
|
-
readOnly?: boolean | undefined;
|
|
5
|
+
events?: any[] | undefined;
|
|
12
6
|
saveStatus?: string | undefined;
|
|
13
7
|
showLegend?: boolean | undefined;
|
|
8
|
+
showNavigation?: boolean | undefined;
|
|
9
|
+
showTodayButton?: boolean | undefined;
|
|
10
|
+
readOnly?: boolean | undefined;
|
|
11
|
+
showPartialPreview?: boolean | undefined;
|
|
12
|
+
disablePastNavigation?: boolean | undefined;
|
|
14
13
|
}, {
|
|
15
14
|
dateSelect: CustomEvent<any>;
|
|
16
|
-
|
|
15
|
+
dayClick: CustomEvent<any>;
|
|
16
|
+
monthChange: CustomEvent<any>;
|
|
17
17
|
} & {
|
|
18
18
|
[evt: string]: CustomEvent<any>;
|
|
19
19
|
}, {}> & {
|
|
20
20
|
$$bindings?: string | undefined;
|
|
21
21
|
};
|
|
22
|
-
declare const
|
|
22
|
+
declare const MiniMonthCalendar: $$__sveltets_2_IsomorphicComponent<{
|
|
23
23
|
variant?: string | undefined;
|
|
24
|
-
view?: string | undefined;
|
|
25
|
-
events?: any[] | undefined;
|
|
26
24
|
selectedDates?: any[] | undefined;
|
|
27
|
-
|
|
28
|
-
compact?: boolean | undefined;
|
|
29
|
-
showNavigation?: boolean | undefined;
|
|
30
|
-
showViewSwitcher?: boolean | undefined;
|
|
31
|
-
readOnly?: boolean | undefined;
|
|
25
|
+
events?: any[] | undefined;
|
|
32
26
|
saveStatus?: string | undefined;
|
|
33
27
|
showLegend?: boolean | undefined;
|
|
28
|
+
showNavigation?: boolean | undefined;
|
|
29
|
+
showTodayButton?: boolean | undefined;
|
|
30
|
+
readOnly?: boolean | undefined;
|
|
31
|
+
showPartialPreview?: boolean | undefined;
|
|
32
|
+
disablePastNavigation?: boolean | undefined;
|
|
34
33
|
}, {
|
|
35
34
|
dateSelect: CustomEvent<any>;
|
|
36
|
-
|
|
35
|
+
dayClick: CustomEvent<any>;
|
|
36
|
+
monthChange: CustomEvent<any>;
|
|
37
37
|
} & {
|
|
38
38
|
[evt: string]: CustomEvent<any>;
|
|
39
39
|
}, {}, {}, string>;
|
|
40
|
-
import { Calendar } from '@fullcalendar/core';
|
|
41
40
|
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
42
41
|
new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
|
|
43
42
|
$$bindings?: Bindings;
|
|
@@ -51,4 +50,4 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
|
|
|
51
50
|
};
|
|
52
51
|
z_$$bindings?: Bindings;
|
|
53
52
|
}
|
|
54
|
-
//# sourceMappingURL=
|
|
53
|
+
//# sourceMappingURL=MiniMonthCalendar.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MiniMonthCalendar.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Calendar/MiniMonthCalendar.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAwxBA;;;;;;;;;;;;;;;;;mBAAwR;6CAT3O,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,OAAO,OAAO,QAAQ;IAC3L,cAAc,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,WAAW,OAAO,SAAS,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,eAAe,QAAQ,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
export let className;
|
|
2
|
+
export let className = '';
|
|
3
3
|
</script>
|
|
4
4
|
|
|
5
5
|
<section
|
|
6
|
-
class={`w-full bg-bg-primary p-
|
|
6
|
+
class={`w-full bg-bg-primary p-6 shadow rounded-[16px] ${className}`}
|
|
7
7
|
>
|
|
8
8
|
<slot />
|
|
9
9
|
</section>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export default Card;
|
|
2
2
|
type Card = SvelteComponent<$$__sveltets_2_PropsWithChildren<{
|
|
3
|
-
className
|
|
3
|
+
className?: string | undefined;
|
|
4
4
|
}, {
|
|
5
5
|
default: {};
|
|
6
6
|
}>, {
|
|
@@ -11,7 +11,7 @@ type Card = SvelteComponent<$$__sveltets_2_PropsWithChildren<{
|
|
|
11
11
|
$$bindings?: string | undefined;
|
|
12
12
|
};
|
|
13
13
|
declare const Card: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
|
|
14
|
-
className
|
|
14
|
+
className?: string | undefined;
|
|
15
15
|
}, {
|
|
16
16
|
default: {};
|
|
17
17
|
}>, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/Card.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;AA2BA;;;;;;;;
|
|
1
|
+
{"version":3,"file":"Card.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/Card.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;AA2BA;;;;;;;;eAAqI;sCAT/F,KAAK,EAAE,KAAK;;;;;6CALL,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,OAAO,OAAO,QAAQ;IAC3L,cAAc,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,WAAW,OAAO,SAAS,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import { createEventDispatcher } from "svelte";
|
|
3
|
+
|
|
4
|
+
/** @type {boolean} Whether the checkbox is checked */
|
|
5
|
+
export let checked = false;
|
|
6
|
+
/** @type {string} The value attribute */
|
|
7
|
+
export let value = "";
|
|
8
|
+
/** @type {string} Name attribute for form submission */
|
|
9
|
+
export let name = "";
|
|
10
|
+
/** @type {boolean} Whether the checkbox is disabled */
|
|
11
|
+
export let disabled = false;
|
|
12
|
+
/** @type {string} Color variant */
|
|
13
|
+
export let color = "primary";
|
|
14
|
+
/** @type {string} Additional CSS classes */
|
|
15
|
+
let className = "";
|
|
16
|
+
export { className as class };
|
|
17
|
+
|
|
18
|
+
const dispatch = createEventDispatcher();
|
|
19
|
+
|
|
20
|
+
function handleChange(event) {
|
|
21
|
+
checked = event.target.checked;
|
|
22
|
+
dispatch("change", { checked, value });
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Color classes matching flowbite-svelte
|
|
26
|
+
const colorClasses = {
|
|
27
|
+
primary: "text-primary-600 focus:ring-primary-500 dark:focus:ring-primary-600",
|
|
28
|
+
red: "text-red-600 focus:ring-red-500 dark:focus:ring-red-600",
|
|
29
|
+
green: "text-green-600 focus:ring-green-500 dark:focus:ring-green-600",
|
|
30
|
+
blue: "text-blue-600 focus:ring-blue-500 dark:focus:ring-blue-600"
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
$: inputClasses = [
|
|
34
|
+
"w-4 h-4 rounded",
|
|
35
|
+
"bg-gray-100 border-gray-300",
|
|
36
|
+
"dark:bg-gray-700 dark:border-gray-600 dark:ring-offset-gray-800",
|
|
37
|
+
"focus:ring-2",
|
|
38
|
+
colorClasses[color] || colorClasses.primary,
|
|
39
|
+
disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer"
|
|
40
|
+
].join(" ");
|
|
41
|
+
</script>
|
|
42
|
+
|
|
43
|
+
<label class="checkbox {className}" class:checkbox--disabled={disabled}>
|
|
44
|
+
<input
|
|
45
|
+
type="checkbox"
|
|
46
|
+
{name}
|
|
47
|
+
{value}
|
|
48
|
+
{disabled}
|
|
49
|
+
bind:checked
|
|
50
|
+
on:change={handleChange}
|
|
51
|
+
on:click
|
|
52
|
+
on:focus
|
|
53
|
+
on:blur
|
|
54
|
+
on:keydown
|
|
55
|
+
on:keyup
|
|
56
|
+
class={inputClasses}
|
|
57
|
+
/>
|
|
58
|
+
{#if $$slots.default}
|
|
59
|
+
<span class="checkbox__label">
|
|
60
|
+
<slot />
|
|
61
|
+
</span>
|
|
62
|
+
{/if}
|
|
63
|
+
</label>
|
|
64
|
+
|
|
65
|
+
<style>
|
|
66
|
+
.checkbox {
|
|
67
|
+
display: inline-flex;
|
|
68
|
+
align-items: center;
|
|
69
|
+
gap: 0.5rem;
|
|
70
|
+
cursor: pointer;
|
|
71
|
+
-webkit-user-select: none;
|
|
72
|
+
-moz-user-select: none;
|
|
73
|
+
user-select: none;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.checkbox--disabled {
|
|
77
|
+
cursor: not-allowed;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.checkbox__label {
|
|
81
|
+
font-size: 0.875rem;
|
|
82
|
+
line-height: 1.5;
|
|
83
|
+
color: var(--text-primary, #1f2937);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
:global(.dark) .checkbox__label,
|
|
87
|
+
:global(.micdrop.dark) .checkbox__label {
|
|
88
|
+
color: #f3f4f6;
|
|
89
|
+
}
|
|
90
|
+
</style>
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
export default Checkbox;
|
|
2
|
+
type Checkbox = SvelteComponent<$$__sveltets_2_PropsWithChildren<{
|
|
3
|
+
class?: string | undefined;
|
|
4
|
+
color?: string | undefined;
|
|
5
|
+
disabled?: boolean | undefined;
|
|
6
|
+
checked?: boolean | undefined;
|
|
7
|
+
value?: string | undefined;
|
|
8
|
+
name?: string | undefined;
|
|
9
|
+
}, {
|
|
10
|
+
default: {};
|
|
11
|
+
}>, {
|
|
12
|
+
click: PointerEvent;
|
|
13
|
+
focus: FocusEvent;
|
|
14
|
+
blur: FocusEvent;
|
|
15
|
+
keydown: KeyboardEvent;
|
|
16
|
+
keyup: KeyboardEvent;
|
|
17
|
+
change: CustomEvent<any>;
|
|
18
|
+
} & {
|
|
19
|
+
[evt: string]: CustomEvent<any>;
|
|
20
|
+
}, {
|
|
21
|
+
default: {};
|
|
22
|
+
}> & {
|
|
23
|
+
$$bindings?: string | undefined;
|
|
24
|
+
};
|
|
25
|
+
declare const Checkbox: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
|
|
26
|
+
class?: string | undefined;
|
|
27
|
+
color?: string | undefined;
|
|
28
|
+
disabled?: boolean | undefined;
|
|
29
|
+
checked?: boolean | undefined;
|
|
30
|
+
value?: string | undefined;
|
|
31
|
+
name?: string | undefined;
|
|
32
|
+
}, {
|
|
33
|
+
default: {};
|
|
34
|
+
}>, {
|
|
35
|
+
click: PointerEvent;
|
|
36
|
+
focus: FocusEvent;
|
|
37
|
+
blur: FocusEvent;
|
|
38
|
+
keydown: KeyboardEvent;
|
|
39
|
+
keyup: KeyboardEvent;
|
|
40
|
+
change: CustomEvent<any>;
|
|
41
|
+
} & {
|
|
42
|
+
[evt: string]: CustomEvent<any>;
|
|
43
|
+
}, {
|
|
44
|
+
default: {};
|
|
45
|
+
}, {}, string>;
|
|
46
|
+
type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
|
|
47
|
+
default: any;
|
|
48
|
+
} ? Props extends Record<string, never> ? any : {
|
|
49
|
+
children?: any;
|
|
50
|
+
} : {});
|
|
51
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
52
|
+
new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
|
|
53
|
+
$$bindings?: Bindings;
|
|
54
|
+
} & Exports;
|
|
55
|
+
(internal: unknown, props: Props & {
|
|
56
|
+
$$events?: Events;
|
|
57
|
+
$$slots?: Slots;
|
|
58
|
+
}): Exports & {
|
|
59
|
+
$set?: any;
|
|
60
|
+
$on?: any;
|
|
61
|
+
};
|
|
62
|
+
z_$$bindings?: Bindings;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=Checkbox.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Checkbox/Checkbox.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAgFA;;;;;;;;;;;;;;;;;;;;eAAiL;sCAT3I,KAAK,EAAE,KAAK;;;;;6CALL,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,OAAO,OAAO,QAAQ;IAC3L,cAAc,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,WAAW,OAAO,SAAS,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,eAAe,QAAQ,CAAC"}
|
|
@@ -1,79 +1,81 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
import { onMount } from
|
|
3
|
-
import SunIcon from
|
|
4
|
-
import MoonIcon from
|
|
2
|
+
import { onMount } from "svelte";
|
|
3
|
+
import SunIcon from "./Icons/SunIcon.svelte";
|
|
4
|
+
import MoonIcon from "./Icons/MoonIcon.svelte";
|
|
5
5
|
|
|
6
6
|
// Optional props for layout control
|
|
7
|
-
export let isExpanded = false;
|
|
8
|
-
export let containerSelector =
|
|
7
|
+
// export let isExpanded = false; // Deprecated
|
|
8
|
+
export let containerSelector = ".performer-portal"; // Can be '.micdrop', '.performer-portal', etc.
|
|
9
9
|
|
|
10
10
|
// Theme mode: 'auto' | 'light' | 'dark'
|
|
11
|
-
let themeMode =
|
|
11
|
+
let themeMode = "auto";
|
|
12
12
|
let isDark = false; // Current display state (for applying classes)
|
|
13
13
|
|
|
14
|
+
/** @param {boolean} enable */
|
|
14
15
|
function setMicdropDarkClass(enable) {
|
|
15
16
|
// Support both performers portal and micdrop frontend
|
|
16
17
|
const container = document.querySelector(containerSelector);
|
|
17
18
|
if (enable) {
|
|
18
|
-
if (container) container.classList.add(
|
|
19
|
-
document.documentElement.classList.add(
|
|
19
|
+
if (container) container.classList.add("dark");
|
|
20
|
+
document.documentElement.classList.add("dark");
|
|
20
21
|
} else {
|
|
21
|
-
if (container) container.classList.remove(
|
|
22
|
-
document.documentElement.classList.remove(
|
|
22
|
+
if (container) container.classList.remove("dark");
|
|
23
|
+
document.documentElement.classList.remove("dark");
|
|
23
24
|
}
|
|
24
25
|
}
|
|
25
26
|
|
|
26
27
|
function getSystemPreference() {
|
|
27
|
-
return window.matchMedia(
|
|
28
|
+
return window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
28
29
|
}
|
|
29
30
|
|
|
30
31
|
function applyTheme() {
|
|
31
|
-
if (themeMode ===
|
|
32
|
+
if (themeMode === "auto") {
|
|
32
33
|
isDark = getSystemPreference();
|
|
33
34
|
} else {
|
|
34
|
-
isDark = themeMode ===
|
|
35
|
+
isDark = themeMode === "dark";
|
|
35
36
|
}
|
|
36
37
|
setMicdropDarkClass(isDark);
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
onMount(() => {
|
|
40
41
|
// Check localStorage for saved theme
|
|
41
|
-
const savedTheme = localStorage.getItem(
|
|
42
|
+
const savedTheme = localStorage.getItem("theme");
|
|
42
43
|
|
|
43
|
-
if (savedTheme ===
|
|
44
|
+
if (savedTheme === "dark" || savedTheme === "light") {
|
|
44
45
|
themeMode = savedTheme;
|
|
45
46
|
} else {
|
|
46
47
|
// No saved preference or 'auto' = auto mode
|
|
47
|
-
themeMode =
|
|
48
|
+
themeMode = "auto";
|
|
48
49
|
}
|
|
49
50
|
|
|
50
51
|
applyTheme();
|
|
51
52
|
|
|
52
53
|
// Listen for system preference changes (only matters in auto mode)
|
|
53
|
-
const mediaQuery = window.matchMedia(
|
|
54
|
+
const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
|
|
54
55
|
const handleChange = () => {
|
|
55
|
-
if (themeMode ===
|
|
56
|
+
if (themeMode === "auto") {
|
|
56
57
|
applyTheme();
|
|
57
58
|
}
|
|
58
59
|
};
|
|
59
|
-
mediaQuery.addEventListener(
|
|
60
|
+
mediaQuery.addEventListener("change", handleChange);
|
|
60
61
|
|
|
61
62
|
return () => {
|
|
62
|
-
mediaQuery.removeEventListener(
|
|
63
|
+
mediaQuery.removeEventListener("change", handleChange);
|
|
63
64
|
};
|
|
64
65
|
});
|
|
65
66
|
|
|
67
|
+
/** @param {MouseEvent} event */
|
|
66
68
|
function toggleTheme(event) {
|
|
67
69
|
// Cycle: auto -> light -> dark -> auto
|
|
68
|
-
if (themeMode ===
|
|
69
|
-
themeMode =
|
|
70
|
-
localStorage.setItem(
|
|
71
|
-
} else if (themeMode ===
|
|
72
|
-
themeMode =
|
|
73
|
-
localStorage.setItem(
|
|
70
|
+
if (themeMode === "auto") {
|
|
71
|
+
themeMode = "light";
|
|
72
|
+
localStorage.setItem("theme", "light");
|
|
73
|
+
} else if (themeMode === "light") {
|
|
74
|
+
themeMode = "dark";
|
|
75
|
+
localStorage.setItem("theme", "dark");
|
|
74
76
|
} else {
|
|
75
|
-
themeMode =
|
|
76
|
-
localStorage.removeItem(
|
|
77
|
+
themeMode = "auto";
|
|
78
|
+
localStorage.removeItem("theme");
|
|
77
79
|
}
|
|
78
80
|
|
|
79
81
|
applyTheme();
|
|
@@ -85,22 +87,15 @@
|
|
|
85
87
|
}
|
|
86
88
|
|
|
87
89
|
// Tooltip text based on current mode
|
|
88
|
-
$: titleText =
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
90
|
+
$: titleText =
|
|
91
|
+
themeMode === "auto"
|
|
92
|
+
? "Auto theme (following device) - click for light mode"
|
|
93
|
+
: themeMode === "light"
|
|
94
|
+
? "Light mode - click for dark mode"
|
|
95
|
+
: "Dark mode - click for auto";
|
|
93
96
|
</script>
|
|
94
97
|
|
|
95
|
-
<div
|
|
96
|
-
class="transition-all flex items-center justify-center"
|
|
97
|
-
class:w-full={isExpanded || !isExpanded}
|
|
98
|
-
class:flex-row={isExpanded}
|
|
99
|
-
class:flex-col={!isExpanded}
|
|
100
|
-
class:py-4={isExpanded || !isExpanded}
|
|
101
|
-
class:gap-3={isExpanded}
|
|
102
|
-
class:gap-4={!isExpanded}
|
|
103
|
-
>
|
|
98
|
+
<div class="transition-all flex items-center justify-center w-full py-4">
|
|
104
99
|
<button
|
|
105
100
|
on:click={toggleTheme}
|
|
106
101
|
on:touchend={(e) => e.currentTarget.blur()}
|
|
@@ -109,17 +104,17 @@
|
|
|
109
104
|
title={titleText}
|
|
110
105
|
>
|
|
111
106
|
<!-- Sun icon - shown when mode is 'light' -->
|
|
112
|
-
<span class="theme-icon sun-icon" class:hidden={themeMode !==
|
|
107
|
+
<span class="theme-icon sun-icon" class:hidden={themeMode !== "light"}>
|
|
113
108
|
<SunIcon size="20" color="currentColor" />
|
|
114
109
|
</span>
|
|
115
110
|
|
|
116
111
|
<!-- Moon icon - shown when mode is 'dark' -->
|
|
117
|
-
<span class="theme-icon moon-icon" class:hidden={themeMode !==
|
|
112
|
+
<span class="theme-icon moon-icon" class:hidden={themeMode !== "dark"}>
|
|
118
113
|
<MoonIcon size="20" color="currentColor" />
|
|
119
114
|
</span>
|
|
120
115
|
|
|
121
116
|
<!-- Auto icon container - shown when mode is 'auto' -->
|
|
122
|
-
{#if themeMode ===
|
|
117
|
+
{#if themeMode === "auto"}
|
|
123
118
|
<div class="auto-icon-container">
|
|
124
119
|
<!-- Light half (top-left) with sun -->
|
|
125
120
|
<div class="auto-half auto-light-half">
|
|
@@ -133,12 +128,6 @@
|
|
|
133
128
|
{/if}
|
|
134
129
|
</button>
|
|
135
130
|
|
|
136
|
-
<!-- Label shown when expanded -->
|
|
137
|
-
{#if isExpanded}
|
|
138
|
-
<span class="text-xs text-gray-500 dark:text-gray-400 whitespace-nowrap">
|
|
139
|
-
{themeMode === 'auto' ? 'Auto' : themeMode === 'light' ? 'Light' : 'Dark'}
|
|
140
|
-
</span>
|
|
141
|
-
{/if}
|
|
142
131
|
</div>
|
|
143
132
|
|
|
144
133
|
<style>
|
|
@@ -194,7 +183,7 @@
|
|
|
194
183
|
.theme-toggle-btn:hover {
|
|
195
184
|
transform: translateY(-2px);
|
|
196
185
|
box-shadow: 0 4px 12px -2px rgba(0, 0, 0, 0.1);
|
|
197
|
-
border-color: #
|
|
186
|
+
border-color: #0284fe;
|
|
198
187
|
}
|
|
199
188
|
|
|
200
189
|
:global(.dark) .theme-toggle-btn:hover {
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export default DarkModeToggle;
|
|
2
2
|
type DarkModeToggle = SvelteComponent<{
|
|
3
|
-
isExpanded?: boolean | undefined;
|
|
4
3
|
containerSelector?: string | undefined;
|
|
5
4
|
}, {
|
|
6
5
|
[evt: string]: CustomEvent<any>;
|
|
@@ -8,7 +7,6 @@ type DarkModeToggle = SvelteComponent<{
|
|
|
8
7
|
$$bindings?: string | undefined;
|
|
9
8
|
};
|
|
10
9
|
declare const DarkModeToggle: $$__sveltets_2_IsomorphicComponent<{
|
|
11
|
-
isExpanded?: boolean | undefined;
|
|
12
10
|
containerSelector?: string | undefined;
|
|
13
11
|
}, {
|
|
14
12
|
[evt: string]: CustomEvent<any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DarkModeToggle.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/DarkModeToggle.svelte.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DarkModeToggle.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/DarkModeToggle.svelte.js"],"names":[],"mappings":";;;;;;;;AAkJA;;;;mBAAiJ;6CATpG,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,OAAO,OAAO,QAAQ;IAC3L,cAAc,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,WAAW,OAAO,SAAS,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import { createEventDispatcher, onDestroy } from "svelte";
|
|
3
|
+
import { fly, fade } from "svelte/transition";
|
|
4
|
+
import { cubicOut } from "svelte/easing";
|
|
5
|
+
|
|
6
|
+
/** @type {boolean} Whether the drawer is visible */
|
|
7
|
+
export let show = false;
|
|
8
|
+
/** @type {boolean} Flowbite-style hidden prop (inverse of show) */
|
|
9
|
+
export let hidden = true;
|
|
10
|
+
/** @type {string} Optional title for the drawer header */
|
|
11
|
+
export let title = "";
|
|
12
|
+
/** @type {'left' | 'right' | 'top' | 'bottom'} Which side the drawer slides from */
|
|
13
|
+
export let placement = "left";
|
|
14
|
+
/** @type {string} Width of the drawer (for left/right placement) */
|
|
15
|
+
export let width = "320px";
|
|
16
|
+
/** @type {string} Height of the drawer (for top/bottom placement) */
|
|
17
|
+
export let height = "auto";
|
|
18
|
+
/** @type {number} Transition duration in ms */
|
|
19
|
+
export let duration = 200;
|
|
20
|
+
/** @type {boolean} Whether clicking the backdrop closes the drawer */
|
|
21
|
+
export let closeOnBackdropClick = true;
|
|
22
|
+
/** @type {boolean} Whether pressing Escape closes the drawer */
|
|
23
|
+
export let closeOnEscape = true;
|
|
24
|
+
/** @type {string} Optional id for the drawer element */
|
|
25
|
+
export let id = "";
|
|
26
|
+
/** @type {object|undefined} Custom transition params (flowbite API) */
|
|
27
|
+
export let transitionParams = undefined;
|
|
28
|
+
|
|
29
|
+
const dispatch = createEventDispatcher();
|
|
30
|
+
|
|
31
|
+
// Support both show and hidden props (flowbite uses hidden)
|
|
32
|
+
$: isVisible = show || !hidden;
|
|
33
|
+
|
|
34
|
+
function close() {
|
|
35
|
+
hidden = true;
|
|
36
|
+
show = false;
|
|
37
|
+
dispatch("close");
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function handleBackdropClick(e) {
|
|
41
|
+
if (closeOnBackdropClick && e.target === e.currentTarget) {
|
|
42
|
+
close();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function handleKeydown(e) {
|
|
47
|
+
if (closeOnEscape && e.key === "Escape" && isVisible) {
|
|
48
|
+
close();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Calculate transition params based on placement (use custom if provided)
|
|
53
|
+
$: computedTransitionParams = transitionParams || (() => {
|
|
54
|
+
switch (placement) {
|
|
55
|
+
case "left":
|
|
56
|
+
return { x: -320, duration, easing: cubicOut };
|
|
57
|
+
case "right":
|
|
58
|
+
return { x: 320, duration, easing: cubicOut };
|
|
59
|
+
case "top":
|
|
60
|
+
return { y: -320, duration, easing: cubicOut };
|
|
61
|
+
case "bottom":
|
|
62
|
+
return { y: 320, duration, easing: cubicOut };
|
|
63
|
+
default:
|
|
64
|
+
return { x: -320, duration, easing: cubicOut };
|
|
65
|
+
}
|
|
66
|
+
})();
|
|
67
|
+
|
|
68
|
+
// Lock body scroll when drawer is open
|
|
69
|
+
$: if (typeof document !== "undefined") {
|
|
70
|
+
if (isVisible) {
|
|
71
|
+
document.body.style.overflow = "hidden";
|
|
72
|
+
} else {
|
|
73
|
+
document.body.style.overflow = "";
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
onDestroy(() => {
|
|
78
|
+
if (typeof document !== "undefined") {
|
|
79
|
+
document.body.style.overflow = "";
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
</script>
|
|
83
|
+
|
|
84
|
+
<svelte:window on:keydown={handleKeydown} />
|
|
85
|
+
|
|
86
|
+
{#if isVisible}
|
|
87
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
88
|
+
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
|
89
|
+
<div
|
|
90
|
+
class="drawer-backdrop"
|
|
91
|
+
on:click={handleBackdropClick}
|
|
92
|
+
transition:fade={{ duration: 150 }}
|
|
93
|
+
>
|
|
94
|
+
<div
|
|
95
|
+
{id}
|
|
96
|
+
class="drawer drawer--{placement}"
|
|
97
|
+
style="--drawer-width: {width}; --drawer-height: {height};"
|
|
98
|
+
on:click|stopPropagation
|
|
99
|
+
transition:fly={computedTransitionParams}
|
|
100
|
+
>
|
|
101
|
+
<!-- Optional header with title -->
|
|
102
|
+
{#if title || $$slots.header}
|
|
103
|
+
<div class="drawer__header">
|
|
104
|
+
{#if $$slots.header}
|
|
105
|
+
<slot name="header" />
|
|
106
|
+
{:else}
|
|
107
|
+
<h3 class="drawer__title">{title}</h3>
|
|
108
|
+
{/if}
|
|
109
|
+
</div>
|
|
110
|
+
{/if}
|
|
111
|
+
|
|
112
|
+
<!-- Content slot -->
|
|
113
|
+
<div class="drawer__content">
|
|
114
|
+
<slot />
|
|
115
|
+
</div>
|
|
116
|
+
|
|
117
|
+
<!-- Actions slot (optional) -->
|
|
118
|
+
{#if $$slots.actions}
|
|
119
|
+
<div class="drawer__actions">
|
|
120
|
+
<slot name="actions" />
|
|
121
|
+
</div>
|
|
122
|
+
{/if}
|
|
123
|
+
</div>
|
|
124
|
+
</div>
|
|
125
|
+
{/if}
|
|
126
|
+
|
|
127
|
+
<style>
|
|
128
|
+
.drawer-backdrop {
|
|
129
|
+
position: fixed;
|
|
130
|
+
inset: 0;
|
|
131
|
+
background-color: rgba(0, 0, 0, 0.5);
|
|
132
|
+
z-index: var(--z-modal, 50);
|
|
133
|
+
display: flex;
|
|
134
|
+
touch-action: none;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.drawer {
|
|
138
|
+
position: absolute;
|
|
139
|
+
background-color: hsl(var(--BG-Primary, 0 0% 100%));
|
|
140
|
+
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15);
|
|
141
|
+
display: flex;
|
|
142
|
+
flex-direction: column;
|
|
143
|
+
overflow: hidden;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/* Placement variants */
|
|
147
|
+
.drawer--left {
|
|
148
|
+
left: 0;
|
|
149
|
+
top: 0;
|
|
150
|
+
bottom: 0;
|
|
151
|
+
width: var(--drawer-width, 320px);
|
|
152
|
+
max-width: 100vw;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.drawer--right {
|
|
156
|
+
right: 0;
|
|
157
|
+
top: 0;
|
|
158
|
+
bottom: 0;
|
|
159
|
+
width: var(--drawer-width, 320px);
|
|
160
|
+
max-width: 100vw;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.drawer--top {
|
|
164
|
+
top: 0;
|
|
165
|
+
left: 0;
|
|
166
|
+
right: 0;
|
|
167
|
+
height: var(--drawer-height, auto);
|
|
168
|
+
max-height: 100vh;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.drawer--bottom {
|
|
172
|
+
bottom: 0;
|
|
173
|
+
left: 0;
|
|
174
|
+
right: 0;
|
|
175
|
+
height: var(--drawer-height, auto);
|
|
176
|
+
max-height: 100vh;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.drawer__header {
|
|
180
|
+
padding: 1rem 1.5rem;
|
|
181
|
+
border-bottom: 1px solid hsl(var(--Stroke-Primary, 220 13% 85%));
|
|
182
|
+
flex-shrink: 0;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.drawer__title {
|
|
186
|
+
font-size: 1.125rem;
|
|
187
|
+
font-weight: 600;
|
|
188
|
+
color: hsl(var(--Text-Primary, 220 13% 13%));
|
|
189
|
+
margin: 0;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
.drawer__content {
|
|
193
|
+
flex: 1;
|
|
194
|
+
overflow-y: auto;
|
|
195
|
+
overscroll-behavior: contain;
|
|
196
|
+
-webkit-overflow-scrolling: touch;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.drawer__actions {
|
|
200
|
+
padding: 1rem 1.5rem;
|
|
201
|
+
border-top: 1px solid hsl(var(--Stroke-Primary, 220 13% 85%));
|
|
202
|
+
flex-shrink: 0;
|
|
203
|
+
display: flex;
|
|
204
|
+
flex-direction: column;
|
|
205
|
+
gap: 0.75rem;
|
|
206
|
+
}
|
|
207
|
+
</style>
|