@getmicdrop/svelte-components 2.2.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +129 -3
- package/dist/components/Badges/Badge.svelte.d.ts +8 -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 +1 -0
- package/dist/components/Checkbox/Checkbox.svelte +116 -0
- package/dist/components/Checkbox/Checkbox.svelte.d.ts +52 -0
- package/dist/components/Checkbox/Checkbox.svelte.d.ts.map +1 -0
- 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 +129 -0
- package/dist/components/Dropdown/Dropdown.svelte.d.ts +48 -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/Input/Input.svelte.d.ts +6 -6
- package/dist/components/Input/MultiSelect.svelte +4 -5
- package/dist/components/Input/MultiSelect.svelte.d.ts +6 -6
- package/dist/components/Input/MultiSelect.svelte.d.ts.map +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 +4 -5
- package/dist/components/Input/Select.svelte.d.ts +6 -6
- 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/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 +34 -8
- 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/OrderSummary/OrderSummary.svelte +2 -2
- package/dist/components/OrderSummary/OrderSummary.svelte.d.ts.map +1 -1
- 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/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/Skeleton/Skeleton.svelte +68 -0
- package/dist/components/Skeleton/Skeleton.svelte.d.ts +37 -0
- package/dist/components/Skeleton/Skeleton.svelte.d.ts.map +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/pages/performers/ShowItemCard.svelte.d.ts +2 -2
- 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 +2 -2
- package/dist/components/pages/profile/profile-form.svelte +1 -1
- 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/index.d.ts +16 -0
- package/dist/index.js +18 -0
- package/package.json +1 -1
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import { createEventDispatcher } from "svelte";
|
|
3
|
+
|
|
4
|
+
const dispatch = createEventDispatcher();
|
|
5
|
+
|
|
6
|
+
// API compatible with flowbite-svelte Textarea
|
|
7
|
+
export let value = "";
|
|
8
|
+
export let placeholder = "";
|
|
9
|
+
export let rows = 4;
|
|
10
|
+
export let disabled = false;
|
|
11
|
+
export let required = false;
|
|
12
|
+
export let readonly = false;
|
|
13
|
+
export let id = "";
|
|
14
|
+
export let name = "";
|
|
15
|
+
export let label = "";
|
|
16
|
+
export let error = "";
|
|
17
|
+
export let maxlength = null;
|
|
18
|
+
export let minlength = null;
|
|
19
|
+
|
|
20
|
+
// Additional props
|
|
21
|
+
let className = "";
|
|
22
|
+
export { className as class };
|
|
23
|
+
|
|
24
|
+
function handleInput(event) {
|
|
25
|
+
value = event.target.value;
|
|
26
|
+
dispatch("input", { value });
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function handleChange(event) {
|
|
30
|
+
dispatch("change", { value: event.target.value });
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function handleBlur(event) {
|
|
34
|
+
dispatch("blur", event);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function handleFocus(event) {
|
|
38
|
+
dispatch("focus", event);
|
|
39
|
+
}
|
|
40
|
+
</script>
|
|
41
|
+
|
|
42
|
+
<div class="textarea-wrapper">
|
|
43
|
+
{#if label}
|
|
44
|
+
<label for={id || name} class="textarea-label">
|
|
45
|
+
{label}{#if required}<span class="textarea-required">*</span>{/if}
|
|
46
|
+
</label>
|
|
47
|
+
{/if}
|
|
48
|
+
|
|
49
|
+
<textarea
|
|
50
|
+
{id}
|
|
51
|
+
{name}
|
|
52
|
+
{placeholder}
|
|
53
|
+
{rows}
|
|
54
|
+
{disabled}
|
|
55
|
+
{readonly}
|
|
56
|
+
{maxlength}
|
|
57
|
+
{minlength}
|
|
58
|
+
class="textarea-field {error ? 'textarea-error' : ''} {className}"
|
|
59
|
+
bind:value
|
|
60
|
+
on:input={handleInput}
|
|
61
|
+
on:change={handleChange}
|
|
62
|
+
on:blur={handleBlur}
|
|
63
|
+
on:focus={handleFocus}
|
|
64
|
+
on:keydown
|
|
65
|
+
on:keyup
|
|
66
|
+
on:keypress
|
|
67
|
+
aria-required={required}
|
|
68
|
+
aria-invalid={!!error}
|
|
69
|
+
{...$$restProps}
|
|
70
|
+
></textarea>
|
|
71
|
+
|
|
72
|
+
{#if error}
|
|
73
|
+
<p class="textarea-error-text">{error}</p>
|
|
74
|
+
{/if}
|
|
75
|
+
</div>
|
|
76
|
+
|
|
77
|
+
<style>
|
|
78
|
+
.textarea-wrapper {
|
|
79
|
+
--textarea-bg: #f9fafb;
|
|
80
|
+
--textarea-text: #0d1526;
|
|
81
|
+
--textarea-text-placeholder: #6b7280;
|
|
82
|
+
--textarea-border: #e5e7eb;
|
|
83
|
+
--textarea-border-error: #ff6666;
|
|
84
|
+
--textarea-focus-ring: #3b82f6;
|
|
85
|
+
--textarea-label-text: #0d1526;
|
|
86
|
+
width: 100%;
|
|
87
|
+
display: flex;
|
|
88
|
+
flex-direction: column;
|
|
89
|
+
gap: 0.5rem;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.textarea-label {
|
|
93
|
+
color: var(--textarea-label-text);
|
|
94
|
+
font-size: 0.875rem;
|
|
95
|
+
font-weight: 500;
|
|
96
|
+
line-height: 1.25;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.textarea-required {
|
|
100
|
+
color: var(--textarea-border-error);
|
|
101
|
+
font-weight: 500;
|
|
102
|
+
font-size: 0.875rem;
|
|
103
|
+
margin-left: 0.125rem;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.textarea-field {
|
|
107
|
+
width: 100%;
|
|
108
|
+
padding: 0.625rem 0.75rem;
|
|
109
|
+
background-color: var(--textarea-bg);
|
|
110
|
+
color: var(--textarea-text);
|
|
111
|
+
font-size: 0.875rem;
|
|
112
|
+
line-height: 1.5;
|
|
113
|
+
border: 1px solid var(--textarea-border);
|
|
114
|
+
border-radius: 0.5rem;
|
|
115
|
+
resize: vertical;
|
|
116
|
+
transition: border-color 0.15s ease, box-shadow 0.15s ease;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.textarea-field:focus {
|
|
120
|
+
outline: none;
|
|
121
|
+
box-shadow: 0 0 0 2px var(--textarea-focus-ring);
|
|
122
|
+
border-color: var(--textarea-focus-ring);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.textarea-field:hover:not(:focus):not(:disabled) {
|
|
126
|
+
border-color: var(--textarea-focus-ring);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.textarea-field:disabled {
|
|
130
|
+
opacity: 0.5;
|
|
131
|
+
cursor: not-allowed;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.textarea-field::-moz-placeholder {
|
|
135
|
+
color: var(--textarea-text-placeholder);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.textarea-field::placeholder {
|
|
139
|
+
color: var(--textarea-text-placeholder);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.textarea-field.textarea-error {
|
|
143
|
+
border-color: var(--textarea-border-error);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.textarea-error-text {
|
|
147
|
+
margin: 0;
|
|
148
|
+
color: var(--textarea-border-error);
|
|
149
|
+
font-size: 0.875rem;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/* Dark mode overrides */
|
|
153
|
+
:global(.dark) .textarea-wrapper {
|
|
154
|
+
--textarea-bg: #111827;
|
|
155
|
+
--textarea-text: #f7f7f8;
|
|
156
|
+
--textarea-text-placeholder: #9ca3af;
|
|
157
|
+
--textarea-border: #374151;
|
|
158
|
+
--textarea-label-text: #f7f7f8;
|
|
159
|
+
}
|
|
160
|
+
</style>
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
export default Textarea;
|
|
2
|
+
type Textarea = SvelteComponent<{
|
|
3
|
+
[x: string]: any;
|
|
4
|
+
class?: string | undefined;
|
|
5
|
+
error?: string | undefined;
|
|
6
|
+
disabled?: boolean | undefined;
|
|
7
|
+
value?: string | undefined;
|
|
8
|
+
name?: string | undefined;
|
|
9
|
+
label?: string | undefined;
|
|
10
|
+
id?: string | undefined;
|
|
11
|
+
required?: boolean | undefined;
|
|
12
|
+
maxlength?: null | undefined;
|
|
13
|
+
minlength?: null | undefined;
|
|
14
|
+
placeholder?: string | undefined;
|
|
15
|
+
readonly?: boolean | undefined;
|
|
16
|
+
rows?: number | undefined;
|
|
17
|
+
}, {
|
|
18
|
+
keydown: KeyboardEvent;
|
|
19
|
+
keyup: KeyboardEvent;
|
|
20
|
+
keypress: KeyboardEvent;
|
|
21
|
+
input: CustomEvent<any>;
|
|
22
|
+
change: CustomEvent<any>;
|
|
23
|
+
blur: CustomEvent<any>;
|
|
24
|
+
focus: CustomEvent<any>;
|
|
25
|
+
} & {
|
|
26
|
+
[evt: string]: CustomEvent<any>;
|
|
27
|
+
}, {}> & {
|
|
28
|
+
$$bindings?: string | undefined;
|
|
29
|
+
};
|
|
30
|
+
declare const Textarea: $$__sveltets_2_IsomorphicComponent<{
|
|
31
|
+
[x: string]: any;
|
|
32
|
+
class?: string | undefined;
|
|
33
|
+
error?: string | undefined;
|
|
34
|
+
disabled?: boolean | undefined;
|
|
35
|
+
value?: string | undefined;
|
|
36
|
+
name?: string | undefined;
|
|
37
|
+
label?: string | undefined;
|
|
38
|
+
id?: string | undefined;
|
|
39
|
+
required?: boolean | undefined;
|
|
40
|
+
maxlength?: null | undefined;
|
|
41
|
+
minlength?: null | undefined;
|
|
42
|
+
placeholder?: string | undefined;
|
|
43
|
+
readonly?: boolean | undefined;
|
|
44
|
+
rows?: number | undefined;
|
|
45
|
+
}, {
|
|
46
|
+
keydown: KeyboardEvent;
|
|
47
|
+
keyup: KeyboardEvent;
|
|
48
|
+
keypress: KeyboardEvent;
|
|
49
|
+
input: CustomEvent<any>;
|
|
50
|
+
change: CustomEvent<any>;
|
|
51
|
+
blur: CustomEvent<any>;
|
|
52
|
+
focus: CustomEvent<any>;
|
|
53
|
+
} & {
|
|
54
|
+
[evt: string]: CustomEvent<any>;
|
|
55
|
+
}, {}, {}, string>;
|
|
56
|
+
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> {
|
|
57
|
+
new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
|
|
58
|
+
$$bindings?: Bindings;
|
|
59
|
+
} & Exports;
|
|
60
|
+
(internal: unknown, props: Props & {
|
|
61
|
+
$$events?: Events;
|
|
62
|
+
$$slots?: Slots;
|
|
63
|
+
}): Exports & {
|
|
64
|
+
$set?: any;
|
|
65
|
+
$on?: any;
|
|
66
|
+
};
|
|
67
|
+
z_$$bindings?: Bindings;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=Textarea.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Textarea.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Input/Textarea.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyEA;;;;;;;;;;;;;;;;;;;;;;;;;mBAA0P;6CAT7M,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,60 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
// API compatible with flowbite-svelte Label
|
|
3
|
+
export let color = "gray";
|
|
4
|
+
export let defaultClass = "text-sm rtl:text-right font-medium block";
|
|
5
|
+
export let show = true;
|
|
6
|
+
|
|
7
|
+
// Additional props for convenience
|
|
8
|
+
let className = "";
|
|
9
|
+
export { className as class };
|
|
10
|
+
|
|
11
|
+
const colorClasses = {
|
|
12
|
+
gray: "label-gray",
|
|
13
|
+
green: "label-green",
|
|
14
|
+
red: "label-red",
|
|
15
|
+
disabled: "label-disabled"
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
$: labelClass = `label-wrapper ${defaultClass} ${colorClasses[color] || colorClasses.gray} ${className}`;
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
{#if show}
|
|
22
|
+
<!-- svelte-ignore a11y-label-has-associated-control -->
|
|
23
|
+
<label {...$$restProps} class={labelClass}><slot /></label>
|
|
24
|
+
{:else}
|
|
25
|
+
<slot />
|
|
26
|
+
{/if}
|
|
27
|
+
|
|
28
|
+
<style>
|
|
29
|
+
.label-wrapper {
|
|
30
|
+
--label-text-gray: #111827;
|
|
31
|
+
--label-text-green: #047857;
|
|
32
|
+
--label-text-red: #dc2626;
|
|
33
|
+
--label-text-disabled: #9ca3af;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.label-gray {
|
|
37
|
+
color: var(--label-text-gray);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.label-green {
|
|
41
|
+
color: var(--label-text-green);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.label-red {
|
|
45
|
+
color: var(--label-text-red);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.label-disabled {
|
|
49
|
+
color: var(--label-text-disabled);
|
|
50
|
+
filter: grayscale(1) contrast(0.5);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/* Dark mode overrides */
|
|
54
|
+
:global(.dark) .label-wrapper {
|
|
55
|
+
--label-text-gray: #d1d5db;
|
|
56
|
+
--label-text-green: #34d399;
|
|
57
|
+
--label-text-red: #f87171;
|
|
58
|
+
--label-text-disabled: #6b7280;
|
|
59
|
+
}
|
|
60
|
+
</style>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export default Label;
|
|
2
|
+
type Label = SvelteComponent<$$__sveltets_2_PropsWithChildren<{
|
|
3
|
+
[x: string]: any;
|
|
4
|
+
class?: string | undefined;
|
|
5
|
+
color?: string | undefined;
|
|
6
|
+
show?: boolean | undefined;
|
|
7
|
+
defaultClass?: string | undefined;
|
|
8
|
+
}, {
|
|
9
|
+
default: {};
|
|
10
|
+
}>, {
|
|
11
|
+
[evt: string]: CustomEvent<any>;
|
|
12
|
+
}, {
|
|
13
|
+
default: {};
|
|
14
|
+
}> & {
|
|
15
|
+
$$bindings?: string | undefined;
|
|
16
|
+
};
|
|
17
|
+
declare const Label: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
|
|
18
|
+
[x: string]: any;
|
|
19
|
+
class?: string | undefined;
|
|
20
|
+
color?: string | undefined;
|
|
21
|
+
show?: boolean | undefined;
|
|
22
|
+
defaultClass?: string | undefined;
|
|
23
|
+
}, {
|
|
24
|
+
default: {};
|
|
25
|
+
}>, {
|
|
26
|
+
[evt: string]: CustomEvent<any>;
|
|
27
|
+
}, {
|
|
28
|
+
default: {};
|
|
29
|
+
}, {}, string>;
|
|
30
|
+
type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
|
|
31
|
+
default: any;
|
|
32
|
+
} ? Props extends Record<string, never> ? any : {
|
|
33
|
+
children?: any;
|
|
34
|
+
} : {});
|
|
35
|
+
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> {
|
|
36
|
+
new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
|
|
37
|
+
$$bindings?: Bindings;
|
|
38
|
+
} & Exports;
|
|
39
|
+
(internal: unknown, props: Props & {
|
|
40
|
+
$$events?: Events;
|
|
41
|
+
$$slots?: Slots;
|
|
42
|
+
}): Exports & {
|
|
43
|
+
$set?: any;
|
|
44
|
+
$on?: any;
|
|
45
|
+
};
|
|
46
|
+
z_$$bindings?: Bindings;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=Label.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Label.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Label/Label.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAgDA;;;;;;;;;;;;eAAyK;sCATnI,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"}
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
class="avatar-button"
|
|
80
80
|
on:click={() => showDesktopDropdown = !showDesktopDropdown}
|
|
81
81
|
>
|
|
82
|
-
<Avatar src={avatar}
|
|
82
|
+
<Avatar src={avatar} rounded size="md" />
|
|
83
83
|
</button>
|
|
84
84
|
|
|
85
85
|
{#if showDesktopDropdown}
|
|
@@ -137,7 +137,7 @@
|
|
|
137
137
|
<div class="header-avatar-wrapper">
|
|
138
138
|
<!-- Mobile: triggers bottom sheet -->
|
|
139
139
|
<button class="avatar-button avatar-button--mobile" on:click={() => showMobileSheet = true}>
|
|
140
|
-
<Avatar src={avatar}
|
|
140
|
+
<Avatar src={avatar} rounded size="md" />
|
|
141
141
|
</button>
|
|
142
142
|
|
|
143
143
|
<!-- Desktop: triggers dropdown -->
|
|
@@ -145,7 +145,7 @@
|
|
|
145
145
|
class="avatar-button avatar-button--desktop"
|
|
146
146
|
on:click={() => showDesktopDropdown = !showDesktopDropdown}
|
|
147
147
|
>
|
|
148
|
-
<Avatar src={avatar}
|
|
148
|
+
<Avatar src={avatar} rounded size="md" />
|
|
149
149
|
</button>
|
|
150
150
|
|
|
151
151
|
<!-- Desktop dropdown -->
|
|
@@ -294,13 +294,23 @@
|
|
|
294
294
|
margin-left: 0.25rem;
|
|
295
295
|
}
|
|
296
296
|
|
|
297
|
+
/* Fix avatar image aspect ratio and border radius */
|
|
298
|
+
:global(.avatar-button img) {
|
|
299
|
+
-o-object-fit: cover !important;
|
|
300
|
+
object-fit: cover !important;
|
|
301
|
+
aspect-ratio: 1 / 1 !important;
|
|
302
|
+
border-radius: 0.5rem !important;
|
|
303
|
+
}
|
|
304
|
+
|
|
297
305
|
.avatar-button {
|
|
298
306
|
background: none;
|
|
299
307
|
border: none;
|
|
300
308
|
padding: 0;
|
|
301
309
|
cursor: pointer;
|
|
302
|
-
border-radius:
|
|
310
|
+
border-radius: 0.5rem;
|
|
303
311
|
transition: opacity 0.15s;
|
|
312
|
+
min-width: 40px;
|
|
313
|
+
min-height: 40px;
|
|
304
314
|
}
|
|
305
315
|
|
|
306
316
|
.avatar-button:hover {
|
|
@@ -5,21 +5,68 @@
|
|
|
5
5
|
import Modal from "./Modal.svelte";
|
|
6
6
|
|
|
7
7
|
export let show = false;
|
|
8
|
+
export let size = "default"; // "small" | "default" | "large"
|
|
8
9
|
export let title = "";
|
|
9
10
|
export let description = "";
|
|
10
11
|
export let warningText = "";
|
|
11
12
|
export let actions = [];
|
|
12
13
|
export let icon = null;
|
|
14
|
+
export let customIcon = null; // Alias for icon (used by some wrappers)
|
|
13
15
|
export let closeBtn = false; // To show close button
|
|
14
16
|
|
|
17
|
+
// Simple props-based API (alternative to actions array)
|
|
18
|
+
export let primaryButtonText = "";
|
|
19
|
+
export let secondaryButtonText = "";
|
|
20
|
+
export let variant = "default"; // "default" | "danger"
|
|
21
|
+
|
|
22
|
+
// Loading/disabled state
|
|
23
|
+
export let loading = false;
|
|
24
|
+
export let disabled = false;
|
|
25
|
+
|
|
15
26
|
const dispatch = createEventDispatcher();
|
|
16
27
|
|
|
28
|
+
// Resolve icon (support both prop names)
|
|
29
|
+
$: resolvedIcon = customIcon || icon;
|
|
30
|
+
|
|
31
|
+
// Build actions from simple props if actions array is empty
|
|
32
|
+
$: resolvedActions = actions.length > 0 ? actions : buildActionsFromProps();
|
|
33
|
+
|
|
34
|
+
function buildActionsFromProps() {
|
|
35
|
+
const result = [];
|
|
36
|
+
|
|
37
|
+
if (secondaryButtonText) {
|
|
38
|
+
result.push({
|
|
39
|
+
label: secondaryButtonText,
|
|
40
|
+
variant: "gray-outline",
|
|
41
|
+
onClick: () => dispatch("cancel")
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (primaryButtonText) {
|
|
46
|
+
result.push({
|
|
47
|
+
label: primaryButtonText,
|
|
48
|
+
variant: variant === "danger" ? "red-solid" : "blue-solid",
|
|
49
|
+
onClick: () => dispatch("confirm"),
|
|
50
|
+
primary: true
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
|
|
17
57
|
const handleAction = (action) => {
|
|
18
|
-
|
|
58
|
+
if (disabled || loading) return;
|
|
59
|
+
action.onClick?.();
|
|
19
60
|
dispatch(action.label.toLowerCase());
|
|
20
61
|
show = false;
|
|
21
62
|
};
|
|
22
63
|
|
|
64
|
+
const handleClose = () => {
|
|
65
|
+
if (disabled || loading) return;
|
|
66
|
+
dispatch("close");
|
|
67
|
+
show = false;
|
|
68
|
+
};
|
|
69
|
+
|
|
23
70
|
const getVariant = (action) => {
|
|
24
71
|
// If variant is already specified, use it
|
|
25
72
|
if (action.variant) return action.variant;
|
|
@@ -48,54 +95,59 @@
|
|
|
48
95
|
onClick,
|
|
49
96
|
beforeIcon,
|
|
50
97
|
afterIcon,
|
|
98
|
+
primary,
|
|
51
99
|
...rest
|
|
52
100
|
} = action;
|
|
53
101
|
return rest;
|
|
54
102
|
};
|
|
55
103
|
</script>
|
|
56
104
|
|
|
57
|
-
<Modal bind:show>
|
|
58
|
-
<div slot="header" class="
|
|
105
|
+
<Modal bind:show {size}>
|
|
106
|
+
<div slot="header" class="text-center">
|
|
59
107
|
{#if closeBtn}
|
|
60
|
-
<div class="flex justify-end">
|
|
61
|
-
<button
|
|
62
|
-
|
|
108
|
+
<div class="flex justify-end -mt-2 -mr-2 mb-2">
|
|
109
|
+
<button
|
|
110
|
+
class="p-1 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none transition-colors"
|
|
111
|
+
on:click={handleClose}
|
|
112
|
+
{disabled}
|
|
113
|
+
>
|
|
114
|
+
<img src={Cancel} alt="Close" class="w-5 h-5" />
|
|
63
115
|
</button>
|
|
64
116
|
</div>
|
|
65
117
|
{/if}
|
|
66
|
-
{#if
|
|
67
|
-
<div class="flex justify-center
|
|
68
|
-
<img src={
|
|
118
|
+
{#if resolvedIcon}
|
|
119
|
+
<div class="flex justify-center mb-4">
|
|
120
|
+
<img src={resolvedIcon} alt="" class="w-12 h-12" />
|
|
69
121
|
</div>
|
|
70
122
|
{/if}
|
|
71
123
|
{#if title}
|
|
72
|
-
<h2 class="text-xl text-
|
|
124
|
+
<h2 class="text-xl font-medium text-gray-900 dark:text-white">{title}</h2>
|
|
73
125
|
{/if}
|
|
74
126
|
</div>
|
|
75
127
|
|
|
76
|
-
<div slot="body" class="
|
|
128
|
+
<div slot="body" class="text-center mt-4">
|
|
77
129
|
{#if description}
|
|
78
|
-
<p class="text-
|
|
130
|
+
<p class="text-sm text-gray-500 dark:text-gray-400 leading-relaxed">
|
|
79
131
|
{description}
|
|
80
132
|
</p>
|
|
81
133
|
{/if}
|
|
82
134
|
{#if warningText}
|
|
83
|
-
<p
|
|
84
|
-
class="text-accent-Danger text-center text-sm leading-[22px] font-bold"
|
|
85
|
-
>
|
|
135
|
+
<p class="mt-3 text-sm font-medium text-red-600 dark:text-red-400">
|
|
86
136
|
{warningText}
|
|
87
137
|
</p>
|
|
88
138
|
{/if}
|
|
89
139
|
</div>
|
|
90
140
|
|
|
91
|
-
<div slot="footer" class="flex
|
|
92
|
-
{#each
|
|
141
|
+
<div slot="footer" class="flex gap-3">
|
|
142
|
+
{#each resolvedActions as action}
|
|
93
143
|
<Button
|
|
94
144
|
size="full"
|
|
95
145
|
variant={getVariant(action)}
|
|
96
146
|
{...cleanActionProps(action)}
|
|
97
147
|
beforeIcon={action.beforeIcon}
|
|
98
148
|
afterIcon={action.afterIcon}
|
|
149
|
+
disabled={disabled || action.disabled}
|
|
150
|
+
loading={action.primary && loading}
|
|
99
151
|
on:click={() => handleAction(action)}
|
|
100
152
|
>
|
|
101
153
|
{action.label}
|
|
@@ -1,26 +1,48 @@
|
|
|
1
1
|
export default ConfirmationModal;
|
|
2
2
|
type ConfirmationModal = SvelteComponent<{
|
|
3
3
|
title?: string | undefined;
|
|
4
|
+
size?: string | undefined;
|
|
5
|
+
variant?: string | undefined;
|
|
4
6
|
actions?: any[] | undefined;
|
|
5
7
|
show?: boolean | undefined;
|
|
8
|
+
disabled?: boolean | undefined;
|
|
9
|
+
loading?: boolean | undefined;
|
|
6
10
|
icon?: null | undefined;
|
|
7
11
|
description?: string | undefined;
|
|
8
12
|
warningText?: string | undefined;
|
|
13
|
+
customIcon?: null | undefined;
|
|
9
14
|
closeBtn?: boolean | undefined;
|
|
15
|
+
primaryButtonText?: string | undefined;
|
|
16
|
+
secondaryButtonText?: string | undefined;
|
|
10
17
|
}, {
|
|
18
|
+
cancel: CustomEvent<any>;
|
|
19
|
+
confirm: CustomEvent<any>;
|
|
20
|
+
close: CustomEvent<any>;
|
|
21
|
+
} & {
|
|
11
22
|
[evt: string]: CustomEvent<any>;
|
|
12
23
|
}, {}> & {
|
|
13
24
|
$$bindings?: string | undefined;
|
|
14
25
|
};
|
|
15
26
|
declare const ConfirmationModal: $$__sveltets_2_IsomorphicComponent<{
|
|
16
27
|
title?: string | undefined;
|
|
28
|
+
size?: string | undefined;
|
|
29
|
+
variant?: string | undefined;
|
|
17
30
|
actions?: any[] | undefined;
|
|
18
31
|
show?: boolean | undefined;
|
|
32
|
+
disabled?: boolean | undefined;
|
|
33
|
+
loading?: boolean | undefined;
|
|
19
34
|
icon?: null | undefined;
|
|
20
35
|
description?: string | undefined;
|
|
21
36
|
warningText?: string | undefined;
|
|
37
|
+
customIcon?: null | undefined;
|
|
22
38
|
closeBtn?: boolean | undefined;
|
|
39
|
+
primaryButtonText?: string | undefined;
|
|
40
|
+
secondaryButtonText?: string | undefined;
|
|
23
41
|
}, {
|
|
42
|
+
cancel: CustomEvent<any>;
|
|
43
|
+
confirm: CustomEvent<any>;
|
|
44
|
+
close: CustomEvent<any>;
|
|
45
|
+
} & {
|
|
24
46
|
[evt: string]: CustomEvent<any>;
|
|
25
47
|
}, {}, {}, string>;
|
|
26
48
|
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> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfirmationModal.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Modal/ConfirmationModal.svelte.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ConfirmationModal.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Modal/ConfirmationModal.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAoKA;;;;;;;;;;;;;;;;;;;;;mBAAoS;6CATvP,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"}
|