@streamscloud/kit 0.0.1-1770364570820 → 0.0.1-1770761136792

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/core/continuation-token.d.ts +1 -0
  2. package/dist/core/continuation-token.js +4 -1
  3. package/dist/styles/_colors.scss +126 -0
  4. package/dist/styles/_form-group.scss +37 -0
  5. package/dist/styles/_functions.scss +37 -0
  6. package/dist/styles/_index.scss +6 -0
  7. package/dist/styles/_mixins.scss +128 -0
  8. package/dist/styles/_normalize.scss +257 -0
  9. package/dist/styles/_reset.scss +194 -0
  10. package/dist/styles/_responsive.scss +70 -0
  11. package/dist/styles/_row.scss +81 -0
  12. package/dist/styles/_theme.scss +68 -0
  13. package/dist/ui/button/cmp.button.svelte +10 -0
  14. package/dist/ui/button/cmp.button.svelte.d.ts +16 -0
  15. package/dist/ui/button/cmp.options-button.svelte +202 -0
  16. package/dist/ui/button/cmp.options-button.svelte.d.ts +21 -0
  17. package/dist/ui/button/index.d.ts +3 -0
  18. package/dist/ui/button/index.js +2 -0
  19. package/dist/ui/button/resources/button-base.svelte +81 -0
  20. package/dist/ui/button/resources/button-base.svelte.d.ts +13 -0
  21. package/dist/ui/button/resources/button-theme.svelte +233 -0
  22. package/dist/ui/button/resources/button-theme.svelte.d.ts +10 -0
  23. package/dist/ui/button/resources/types.d.ts +2 -0
  24. package/dist/ui/button/resources/types.js +1 -0
  25. package/dist/ui/dialog/cmp.dialog-button.svelte +13 -0
  26. package/dist/ui/dialog/cmp.dialog-button.svelte.d.ts +15 -0
  27. package/dist/ui/dialog/cmp.dialog-cancel-button.svelte +13 -0
  28. package/dist/ui/dialog/cmp.dialog-cancel-button.svelte.d.ts +11 -0
  29. package/dist/ui/dialog/cmp.dialog-close-button.svelte +17 -0
  30. package/dist/ui/dialog/cmp.dialog-close-button.svelte.d.ts +27 -0
  31. package/dist/ui/dialog/cmp.dialog-container.svelte +183 -0
  32. package/dist/ui/dialog/cmp.dialog-container.svelte.d.ts +27 -0
  33. package/dist/ui/dialog/cmp.dialog.svelte +113 -0
  34. package/dist/ui/dialog/cmp.dialog.svelte.d.ts +35 -0
  35. package/dist/ui/dialog/dialog-controller.d.ts +22 -0
  36. package/dist/ui/dialog/dialog-controller.js +45 -0
  37. package/dist/ui/dialog/dialog-data.d.ts +27 -0
  38. package/dist/ui/dialog/dialog-data.js +1 -0
  39. package/dist/ui/dialog/dialog-mount.d.ts +3 -0
  40. package/dist/ui/dialog/dialog-mount.js +19 -0
  41. package/dist/ui/dialog/dialogs.svelte.d.ts +13 -0
  42. package/dist/ui/dialog/dialogs.svelte.js +67 -0
  43. package/dist/ui/dialog/index.d.ts +8 -0
  44. package/dist/ui/dialog/index.js +7 -0
  45. package/dist/ui/dialog/types.svelte.d.ts +30 -0
  46. package/dist/ui/dialog/types.svelte.js +25 -0
  47. package/dist/ui/icon/cmp.icon.svelte +76 -0
  48. package/dist/ui/icon/cmp.icon.svelte.d.ts +8 -0
  49. package/dist/ui/icon/index.d.ts +2 -0
  50. package/dist/ui/icon/index.js +1 -0
  51. package/dist/ui/icon/types.d.ts +1 -0
  52. package/dist/ui/icon/types.js +1 -0
  53. package/package.json +42 -7
@@ -0,0 +1,81 @@
1
+ <script lang="ts">let { type = 'button', disabled = false, autofocus = false, on, children } = $props();
2
+ let buttonRef;
3
+ $effect(() => {
4
+ if (autofocus) {
5
+ buttonRef.focus();
6
+ }
7
+ });
8
+ export {};
9
+ </script>
10
+
11
+ <button class="button" disabled={disabled} type={type} bind:this={buttonRef} onclick={(e) => on?.click?.(e)}>
12
+ <span class="button__text">
13
+ {@render children()}
14
+ </span>
15
+ </button>
16
+
17
+ <style>.button {
18
+ --_button--font--size: var(--button--font--size, 1rem);
19
+ --_button--font--color: var(--button--font--color, black);
20
+ --_button--font--color--active: var(--button--font--color--active, var(--_button--font--color));
21
+ --_button--font--color--disabled: var(--button--font--color--disabled, var(--_button--font--color));
22
+ --_button--font-weight: var(--button--font-weight, 400);
23
+ --_button--text--font-size: var(--button--text--font-size, 0.75em);
24
+ --_button--icon--font-size: var(--button--icon--font-size, 1em);
25
+ --_button--justify-content: var(--button--justify-content, center);
26
+ --_button--background: var(--button--background, white);
27
+ --_button--background--hover: var(--button--background--hover, var(--_button--background));
28
+ --_button--background--active: var(--button--background--active, var(--_button--background));
29
+ --_button--background--disabled: var(--button--background--disabled, var(--_button--background));
30
+ --_button--border: var(--button--border, none);
31
+ --_button--border--disabled: var(--button--border--disabled, var(--_button--border));
32
+ --_button--border-radius: var(--button--border-radius, 0.25em);
33
+ --_button--padding--vertical: var(--button--padding--vertical, 0);
34
+ --_button--padding--horizontal: var(--button--padding--horizontal, 1em);
35
+ --_button--min-width: var(--button--min-width, 0);
36
+ --_button--width: var(--button--width, auto);
37
+ --_button--height: var(--button--height, 2em);
38
+ --_button--box-shadow: var(--button--box-shadow, none);
39
+ font-size: var(--_button--font--size);
40
+ font-weight: var(--_button--font-weight);
41
+ padding: var(--_button--padding--vertical) var(--_button--padding--horizontal);
42
+ color: var(--_button--font--color);
43
+ background: var(--_button--background);
44
+ box-shadow: var(--_button--box-shadow);
45
+ border: var(--_button--border);
46
+ border-radius: var(--_button--border-radius);
47
+ min-width: var(--_button--min-width);
48
+ width: var(--_button--width);
49
+ max-width: 100%;
50
+ height: var(--_button--height);
51
+ outline: none;
52
+ display: inline-flex;
53
+ justify-content: var(--_button--justify-content);
54
+ align-items: center;
55
+ vertical-align: middle;
56
+ transition: background-color linear 0.2s, color linear 0.2s, border-color linear 0.2s, filter linear 0.2s;
57
+ white-space: nowrap;
58
+ cursor: pointer;
59
+ }
60
+ .button__text {
61
+ width: 100%;
62
+ text-align: center;
63
+ font-size: var(--_button--text--font-size);
64
+ --icon-text--global--font-size: 1rem;
65
+ --icon-text--text--font-size: var(--_button--text--font-size);
66
+ --icon-text--icon--font-size: var(--_button--icon--font-size);
67
+ --icon-text--justify-content: var(--_button--justify-content);
68
+ }
69
+ .button:not(:disabled):hover {
70
+ background: var(--_button--background--hover);
71
+ }
72
+ .button:not(:disabled):active {
73
+ background: var(--_button--background--active);
74
+ color: var(--_button--font--color--active);
75
+ }
76
+ .button:disabled {
77
+ cursor: default;
78
+ background: var(--_button--background--disabled);
79
+ border: var(--_button--border--disabled);
80
+ color: var(--_button--font--color--disabled);
81
+ }</style>
@@ -0,0 +1,13 @@
1
+ import type { Snippet } from 'svelte';
2
+ type Props = {
3
+ type?: 'button' | 'submit' | 'reset';
4
+ disabled?: boolean;
5
+ autofocus?: boolean;
6
+ on?: {
7
+ click?: (e: MouseEvent) => void;
8
+ };
9
+ children: Snippet;
10
+ };
11
+ declare const ButtonBase: import("svelte").Component<Props, {}, "">;
12
+ type ButtonBase = ReturnType<typeof ButtonBase>;
13
+ export default ButtonBase;
@@ -0,0 +1,233 @@
1
+ <script lang="ts">let { variant = undefined, size = 'standard', children } = $props();
2
+ export {};
3
+ </script>
4
+
5
+ <div
6
+ class="button-theme"
7
+ class:button-theme--standard={variant === 'standard'}
8
+ class:button-theme--primary={variant === 'primary'}
9
+ class:button-theme--alert={variant === 'alert'}
10
+ class:button-theme--warning={variant === 'warning'}
11
+ class:button-theme--white={variant === 'white'}
12
+ class:button-theme--gray={variant === 'gray'}
13
+ class:button-theme--green={variant === 'green'}
14
+ class:button-theme--black={variant === 'black'}
15
+ class:button-theme--text-only={variant === 'text-only'}
16
+ class:button-theme--transparent-success={variant === 'transparent-success'}
17
+ class:button-theme--transparent-primary={variant === 'transparent-primary'}
18
+ class:button-theme--transparent-gray={variant === 'transparent-gray'}
19
+ class:button-theme--transparent-white={variant === 'transparent-white'}
20
+ class:button-theme--transparent-warning={variant === 'transparent-warning'}
21
+ class:button-theme--transparent-destructive={variant === 'transparent-destructive'}
22
+ class:button-theme--size-standard={size === 'standard'}
23
+ class:button-theme--size-large={size === 'large'}
24
+ class:button-theme--size-small={size === 'small'}>
25
+ {@render children()}
26
+ </div>
27
+
28
+ <style>.button-theme {
29
+ display: contents;
30
+ }
31
+ .button-theme--primary {
32
+ --button--font--color: var(--button--primary--font--color, #ffffff);
33
+ --button--font--color--active: var(--button--primary--font--color--active, #ffffff);
34
+ --button--font--color--disabled: var(--button--primary--font--color--disabled, #ffffff);
35
+ --button--background: var(--button--primary--background, #144ab0);
36
+ --button--background--hover: var(--button--primary--background--hover, #1244a0);
37
+ --button--background--active: var(--button--primary--background--active, #103a89);
38
+ --button--background--disabled: var(--button--primary--background--disabled, #91b3f3);
39
+ --button--border: var(--button--primary--border, none);
40
+ --button--border--disabled: var(--button--primary--border--disabled, none);
41
+ --button--box-shadow: var(--button--primary--box-shadow, 0px 3px 0px 0px rgba(255, 255, 255, 0.3) inset);
42
+ }
43
+ .button-theme--standard {
44
+ --button--font--color: var(--button--standard--font--color, light-dark(#2e2e2e, #ffffff));
45
+ --button--font--color--active: var(--button--standard--font--color--active, light-dark(#2e2e2e, #ffffff));
46
+ --button--font--color--disabled: var(--button--standard--font--color--disabled, light-dark(#2e2e2e, #ffffff));
47
+ --button--background: var(--button--standard--background, light-dark(#ffffff, #111827));
48
+ --button--background--hover: var(--button--standard--background--hover, light-dark(#f9fafb, #1f2937));
49
+ --button--background--active: var(--button--standard--background--active, light-dark(#f2f2f3, #374151));
50
+ --button--background--disabled: var(--button--standard--background--disabled, light-dark(#f2f2f3, #374151));
51
+ --button--border: var(--button--standard--border, 1px solid light-dark(#e5e7eb, #4b5563));
52
+ --button--border--disabled: var(--button--standard--border--disabled, 1px solid light-dark(#e5e7eb, #4b5563));
53
+ --button--box-shadow: var(--button--standard--box-shadow, 0px 3px 0px 0px light-dark(transparent, rgba(255, 255, 255, 0.3)) inset);
54
+ }
55
+ .button-theme--white {
56
+ --button--font--color: var(--button--white--font--color, light-dark(#2e2e2e, #ffffff));
57
+ --button--font--color--active: var(--button--white--font--color--active, light-dark(#2e2e2e, #ffffff));
58
+ --button--font--color--disabled: var(--button--white--font--color--disabled, light-dark(#2e2e2e, #ffffff));
59
+ --button--background: var(--button--white--background, light-dark(#ffffff, #111827));
60
+ --button--background--hover: var(--button--white--background--hover, light-dark(#f9fafb, #1f2937));
61
+ --button--background--active: var(--button--white--background--active, light-dark(#f2f2f3, #374151));
62
+ --button--background--disabled: var(--button--white--background--disabled, light-dark(#f2f2f3, #374151));
63
+ --button--border: var(--button--white--border, none);
64
+ --button--border--disabled: var(--button--white--border--disabled, none);
65
+ --button--box-shadow: var(--button--white--box-shadow, 0px 3px 0px 0px light-dark(transparent, rgba(255, 255, 255, 0.3)) inset);
66
+ }
67
+ .button-theme--gray {
68
+ --button--font--color: var(--button--gray--font--color, light-dark(#2e2e2e, #ffffff));
69
+ --button--font--color--active: var(--button--gray--font--color--active, light-dark(#2e2e2e, #ffffff));
70
+ --button--font--color--disabled: var(--button--gray--font--color--disabled, light-dark(#2e2e2e, #ffffff));
71
+ --button--background: var(--button--gray--background, light-dark(#f2f2f3, #374151));
72
+ --button--background--hover: var(--button--gray--background--hover, light-dark(#f9fafb, #1f2937));
73
+ --button--background--active: var(--button--gray--background--active, light-dark(#f2f2f3, #374151));
74
+ --button--background--disabled: var(--button--gray--background--disabled, light-dark(#f2f2f3, #374151));
75
+ --button--border: var(--button--gray--border, 1px solid light-dark(#e5e7eb, #4b5563));
76
+ --button--border--disabled: var(--button--gray--border--disabled, 1px solid light-dark(#e5e7eb, #4b5563));
77
+ --button--box-shadow: var(--button--gray--box-shadow, 0px 3px 0px 0px rgba(255, 255, 255, 0.3) inset);
78
+ }
79
+ .button-theme--green {
80
+ --button--font--color: var(--button--green--font--color, light-dark(#0cce6b, #ffffff));
81
+ --button--font--color--active: var(--button--green--font--color--active, light-dark(#0cce6b, #ffffff));
82
+ --button--font--color--disabled: var(--button--green--font--color--disabled, light-dark(#0cce6b, #ffffff));
83
+ --button--background: var(--button--green--background, light-dark(#d4fce7, #374151));
84
+ --button--background--hover: var(--button--green--background--hover, light-dark(#088745, #1f2937));
85
+ --button--background--active: var(--button--green--background--active, light-dark(#088745, #374151));
86
+ --button--background--disabled: var(--button--green--background--disabled, light-dark(#ffffff, #374151));
87
+ --button--border: var(--button--green--border, 1px solid light-dark(#0cce6b, #4b5563));
88
+ --button--border--disabled: var(--button--green--border--disabled, 1px solid light-dark(#0cce6b, #4b5563));
89
+ --button--box-shadow: var(--button--green--box-shadow, 0px 3px 0px 0px rgba(255, 255, 255, 0.3) inset);
90
+ }
91
+ .button-theme--black {
92
+ --button--font--color: var(--button--black--font--color, light-dark(#ffffff, #2e2e2e));
93
+ --button--font--color--active: var(--button--black--font--color--active, light-dark(#ffffff, #2e2e2e));
94
+ --button--font--color--disabled: var(--button--black--font--color--disabled, light-dark(#ffffff, #2e2e2e));
95
+ --button--background: var(--button--black--background, light-dark(#1c1c1c, #fafafa));
96
+ --button--background--hover: var(--button--black--background--hover, light-dark(#1f2937, #f2f2f3));
97
+ --button--background--active: var(--button--black--background--active, light-dark(#374151, #e5e7eb));
98
+ --button--background--disabled: var(--button--black--background--disabled, light-dark(#374151, #e5e7eb));
99
+ --button--border: var(--button--black--border, none);
100
+ --button--border--disabled: var(--button--black--border--disabled, none);
101
+ --button--box-shadow: var(--button--black--box-shadow, 0px 3px 0px 0px rgba(255, 255, 255, 0.3) inset);
102
+ }
103
+ .button-theme--alert {
104
+ --button--font--color: var(--button--alert--font--color, #ffffff);
105
+ --button--font--color--active: var(--button--alert--font--color--active, #ffffff);
106
+ --button--font--color--disabled: var(--button--alert--font--color--disabled, #ffffff);
107
+ --button--background: var(--button--alert--background, #e71d36);
108
+ --button--background--hover: var(--button--alert--background--hover, #d4172d);
109
+ --button--background--active: var(--button--alert--background--active, #b81427);
110
+ --button--background--disabled: var(--button--alert--background--disabled, #f6a7b1);
111
+ --button--border: var(--button--alert--border, none);
112
+ --button--border--disabled: var(--button--alert--border--disabled, none);
113
+ --button--box-shadow: var(--button--alert--box-shadow, 0px 3px 0px 0px rgba(255, 255, 255, 0.3) inset);
114
+ }
115
+ .button-theme--warning {
116
+ --button--font--color: var(--button--warning--font--color, #ffffff);
117
+ --button--font--color--active: var(--button--warning--font--color--active, #ffffff);
118
+ --button--font--color--disabled: var(--button--warning--font--color--disabled, #ffffff);
119
+ --button--background: var(--button--warning--background, #ffa62b);
120
+ --button--background--hover: var(--button--warning--background--hover, #d97706);
121
+ --button--background--active: var(--button--warning--background--active, #b45309);
122
+ --button--background--disabled: var(--button--warning--background--disabled, #fcd34d);
123
+ --button--border: var(--button--warning--border, none);
124
+ --button--border--disabled: var(--button--warning--border--disabled, none);
125
+ --button--box-shadow: var(--button--warning--box-shadow, 0px 3px 0px 0px rgba(255, 255, 255, 0.3) inset);
126
+ }
127
+ .button-theme--text-only {
128
+ --button--font--color: var(--button--text-only--font--color, light-dark(#2e2e2e, #ffffff));
129
+ --button--font--color--active: var(--button--text-only--font--color--active, light-dark(#2e2e2e, #ffffff));
130
+ --button--font--color--disabled: var(--button--text-only--font--color--disabled, light-dark(#2e2e2e, #ffffff));
131
+ --button--background: var(--button--text-only--background, transparent);
132
+ --button--background--hover: var(--button--text-only--background--hover, light-dark(#f2f2f3, #111827));
133
+ --button--background--active: var(--button--text-only--background--active, light-dark(#e5e7eb, #1f2937));
134
+ --button--background--disabled: var(--button--text-only--background--disabled, transparent);
135
+ --button--border: var(--button--text-only--border, none);
136
+ --button--border--disabled: var(--button--text-only--border--disabled, none);
137
+ --button--box-shadow: var(--button--text-only--box-shadow, none);
138
+ }
139
+ .button-theme--transparent-success {
140
+ --button--font--color: var(--button--transparent-success--font--color, #0cce6b);
141
+ --button--font--color--active: var(--button--transparent-success--font--color--active, #0cce6b);
142
+ --button--font--color--disabled: var(--button--transparent-success--font--color--disabled, #39f393);
143
+ --button--background: var(--button--transparent-success--background, #ecfef4);
144
+ --button--background--hover: var(--button--transparent-success--background--hover, #ecfef4);
145
+ --button--background--active: var(--button--transparent-success--background--active, #d4fce7);
146
+ --button--background--disabled: var(--button--transparent-success--background--disabled, transparent);
147
+ --button--border: var(--button--transparent-success--border, 1px solid #0cce6b);
148
+ --button--border--disabled: var(--button--transparent-success--border--disabled, 1px solid #39f393);
149
+ --button--box-shadow: var(--button--transparent-success--box-shadow, none);
150
+ }
151
+ .button-theme--transparent-primary {
152
+ --button--font--color: var(--button--transparent-primary--font--color, #144ab0);
153
+ --button--font--color--active: var(--button--transparent-primary--font--color--active, #144ab0);
154
+ --button--font--color--disabled: var(--button--transparent-primary--font--color--disabled, #91b3f3);
155
+ --button--background: var(--button--transparent-primary--background, #f1f6fd);
156
+ --button--background--hover: var(--button--transparent-primary--background--hover, #f1f6fd);
157
+ --button--background--active: var(--button--transparent-primary--background--active, #dfe9fb);
158
+ --button--background--disabled: var(--button--transparent-primary--background--disabled, transparent);
159
+ --button--border: var(--button--transparent-primary--border, 1px solid #144ab0);
160
+ --button--border--disabled: var(--button--transparent-primary--border--disabled, 1px solid #91b3f3);
161
+ --button--box-shadow: var(--button--transparent-primary--box-shadow, none);
162
+ }
163
+ .button-theme--transparent-white {
164
+ --button--font--color: var(--button--transparent-white--font--color, #ffffff);
165
+ --button--font--color--active: var(--button--transparent-white--font--color--active, #ffffff);
166
+ --button--font--color--disabled: var(--button--transparent-white--font--color--disabled, #ffffff);
167
+ --button--background: var(--button--transparent-white--background, transparent);
168
+ --button--background--hover: var(--button--transparent-white--background--hover, transparent);
169
+ --button--background--active: var(--button--transparent-white--background--active, transparent);
170
+ --button--background--disabled: var(--button--transparent-white--background--disabled, transparent);
171
+ --button--border: var(--button--transparent-white--border, 1px solid #ffffff);
172
+ --button--border--disabled: var(--button--transparent-white--border--disabled, 1px solid #ffffff);
173
+ --button--box-shadow: var(--button--transparent-white--box-shadow, none);
174
+ }
175
+ .button-theme--transparent-gray {
176
+ --button--font--color: var(--button--transparent-gray--font--color, light-dark(#6b7280, #e5e7eb));
177
+ --button--font--color--active: var(
178
+ --button--transparent-gray--font--color--active,
179
+ light-dark(#6b7280, #e5e7eb)
180
+ );
181
+ --button--font--color--disabled: var(
182
+ --button--transparent-gray--font--color--disabled,
183
+ light-dark(#6b7280, #e5e7eb)
184
+ );
185
+ --button--background: var(--button--transparent-gray--background, light-dark(#f9fafb, #1f2937));
186
+ --button--background--hover: var(--button--transparent-gray--background--hover, light-dark(#f9fafb, #1f2937));
187
+ --button--background--active: var(--button--transparent-gray--background--active, light-dark(#f2f2f3, #374151));
188
+ --button--background--disabled: var(--button--transparent-gray--background--disabled, transparent);
189
+ --button--border: var(--button--transparent-gray--border, 1px solid light-dark(#6b7280, #e5e7eb));
190
+ --button--border--disabled: var(
191
+ --button--transparent-gray--border--disabled,
192
+ 1px solid light-dark(#6b7280, #e5e7eb)
193
+ );
194
+ --button--box-shadow: var(--button--transparent-gray--box-shadow, none);
195
+ }
196
+ .button-theme--transparent-warning {
197
+ --button--font--color: var(--button--transparent-warning--font--color, #ffa62b);
198
+ --button--font--color--active: var(--button--transparent-warning--font--color--active, #ffa62b);
199
+ --button--font--color--disabled: var(--button--transparent-warning--font--color--disabled, #fcd34d);
200
+ --button--background: var(--button--transparent-warning--background, #fffbeb);
201
+ --button--background--hover: var(--button--transparent-warning--background--hover, #fffbeb);
202
+ --button--background--active: var(--button--transparent-warning--background--active, #fef3c7);
203
+ --button--background--disabled: var(--button--transparent-warning--background--disabled, transparent);
204
+ --button--border: var(--button--transparent-warning--border, 1px solid #ffa62b);
205
+ --button--border--disabled: var(--button--transparent-warning--border--disabled, 1px solid #fcd34d);
206
+ --button--box-shadow: var(--button--transparent-warning--box-shadow, none);
207
+ }
208
+ .button-theme--transparent-destructive {
209
+ --button--font--color: var(--button--transparent-destructive--font--color, #e71d36);
210
+ --button--font--color--active: var(--button--transparent-destructive--font--color--active, #e71d36);
211
+ --button--font--color--disabled: var(--button--transparent-destructive--font--color--disabled, #f6a7b1);
212
+ --button--background: var(--button--transparent-destructive--background, #fef1f3);
213
+ --button--background--hover: var(--button--transparent-destructive--background--hover, #fef1f3);
214
+ --button--background--active: var(--button--transparent-destructive--background--active, #fde8ea);
215
+ --button--background--disabled: var(--button--transparent-destructive--background--disabled, transparent);
216
+ --button--border: var(--button--transparent-destructive--border, 1px solid #e71d36);
217
+ --button--border--disabled: var(--button--transparent-destructive--border--disabled, 1px solid #f6a7b1);
218
+ --button--box-shadow: var(--button--transparent-destructive--box-shadow, none);
219
+ }
220
+ .button-theme--size-standard {
221
+ --button--height: 2em;
222
+ --button--text--font-size: 0.75em;
223
+ }
224
+ .button-theme--size-large {
225
+ --button--height: 3em;
226
+ --button--font-weight: 500;
227
+ --icon--stroke-width: 0.4;
228
+ --button--text--font-size: 0.9375em;
229
+ }
230
+ .button-theme--size-small {
231
+ --button--height: 1.5em;
232
+ --button--text--font-size: 0.625em;
233
+ }</style>
@@ -0,0 +1,10 @@
1
+ import type { ButtonSize, ButtonVariant } from './types';
2
+ import type { Snippet } from 'svelte';
3
+ type Props = {
4
+ variant?: ButtonVariant | null;
5
+ size?: ButtonSize | null;
6
+ children: Snippet;
7
+ };
8
+ declare const ButtonTheme: import("svelte").Component<Props, {}, "">;
9
+ type ButtonTheme = ReturnType<typeof ButtonTheme>;
10
+ export default ButtonTheme;
@@ -0,0 +1,2 @@
1
+ export type ButtonVariant = 'primary' | 'standard' | 'alert' | 'warning' | 'white' | 'gray' | 'green' | 'black' | 'text-only' | 'transparent-success' | 'transparent-primary' | 'transparent-gray' | 'transparent-white' | 'transparent-warning' | 'transparent-destructive';
2
+ export type ButtonSize = 'standard' | 'large' | 'small';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ <script lang="ts">import { default as Button } from '../button/cmp.button.svelte';
2
+ let { type = 'button', disabled = false, autofocus = false, variant = 'primary', on, children } = $props();
3
+ </script>
4
+
5
+ <div class="dialog-button">
6
+ <Button type={type} disabled={disabled} autofocus={autofocus} variant={variant} on={on}>
7
+ {@render children()}
8
+ </Button>
9
+ </div>
10
+
11
+ <style>.dialog-button {
12
+ --button--min-width: 8em;
13
+ }</style>
@@ -0,0 +1,15 @@
1
+ import type { ButtonVariant } from '../button/resources/types';
2
+ import type { Snippet } from 'svelte';
3
+ type Props = {
4
+ type?: 'button' | 'submit' | 'reset';
5
+ disabled?: boolean;
6
+ autofocus?: boolean;
7
+ variant?: ButtonVariant;
8
+ on?: {
9
+ click?: (e: MouseEvent) => void;
10
+ };
11
+ children: Snippet;
12
+ };
13
+ declare const Cmp: import("svelte").Component<Props, {}, "">;
14
+ type Cmp = ReturnType<typeof Cmp>;
15
+ export default Cmp;
@@ -0,0 +1,13 @@
1
+ <script lang="ts">import { default as Button } from '../button/cmp.button.svelte';
2
+ let { disabled = false, on, children } = $props();
3
+ </script>
4
+
5
+ <div class="dialog-cancel-button">
6
+ <Button type="button" disabled={disabled} variant="standard" on={on}>
7
+ {@render children()}
8
+ </Button>
9
+ </div>
10
+
11
+ <style>.dialog-cancel-button {
12
+ --button--min-width: 8em;
13
+ }</style>
@@ -0,0 +1,11 @@
1
+ import type { Snippet } from 'svelte';
2
+ type Props = {
3
+ disabled?: boolean;
4
+ on?: {
5
+ click?: (e: MouseEvent) => void;
6
+ };
7
+ children: Snippet;
8
+ };
9
+ declare const Cmp: import("svelte").Component<Props, {}, "">;
10
+ type Cmp = ReturnType<typeof Cmp>;
11
+ export default Cmp;
@@ -0,0 +1,17 @@
1
+ <script lang="ts" generics="TResult = void, TCancelResult = void">import { default as Icon } from '../icon/cmp.icon.svelte';
2
+ import IconDismiss24Filled from '@fluentui/svg-icons/icons/dismiss_24_filled.svg?raw';
3
+ let { controller } = $props();
4
+ const handleClick = () => {
5
+ controller.cancel();
6
+ };
7
+ </script>
8
+
9
+ <button type="button" class="dialog-close-button" onclick={handleClick} aria-label="Close">
10
+ <Icon src={IconDismiss24Filled} />
11
+ </button>
12
+
13
+ <style>.dialog-close-button {
14
+ --_dialog-close-button--color: var(--dialog-close-button--color, light-dark(#6b7280, #d1d5db));
15
+ --icon--size: 1.5rem;
16
+ color: var(--_dialog-close-button--color);
17
+ }</style>
@@ -0,0 +1,27 @@
1
+ import type { DialogController } from './dialog-controller';
2
+ declare function $$render<TResult = void, TCancelResult = void>(): {
3
+ props: {
4
+ controller: DialogController<TResult, TCancelResult>;
5
+ };
6
+ exports: {};
7
+ bindings: "";
8
+ slots: {};
9
+ events: {};
10
+ };
11
+ declare class __sveltets_Render<TResult = void, TCancelResult = void> {
12
+ props(): ReturnType<typeof $$render<TResult, TCancelResult>>['props'];
13
+ events(): ReturnType<typeof $$render<TResult, TCancelResult>>['events'];
14
+ slots(): ReturnType<typeof $$render<TResult, TCancelResult>>['slots'];
15
+ bindings(): "";
16
+ exports(): {};
17
+ }
18
+ interface $$IsomorphicComponent {
19
+ new <TResult = void, TCancelResult = void>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TResult, TCancelResult>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TResult, TCancelResult>['props']>, ReturnType<__sveltets_Render<TResult, TCancelResult>['events']>, ReturnType<__sveltets_Render<TResult, TCancelResult>['slots']>> & {
20
+ $$bindings?: ReturnType<__sveltets_Render<TResult, TCancelResult>['bindings']>;
21
+ } & ReturnType<__sveltets_Render<TResult, TCancelResult>['exports']>;
22
+ <TResult = void, TCancelResult = void>(internal: unknown, props: ReturnType<__sveltets_Render<TResult, TCancelResult>['props']> & {}): ReturnType<__sveltets_Render<TResult, TCancelResult>['exports']>;
23
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
24
+ }
25
+ declare const Cmp: $$IsomorphicComponent;
26
+ type Cmp<TResult = void, TCancelResult = void> = InstanceType<typeof Cmp<TResult, TCancelResult>>;
27
+ export default Cmp;
@@ -0,0 +1,183 @@
1
+ <script lang="ts" generics="TResult = void, TCancelResult = void, TData = void">import { Dialogs } from './dialogs.svelte';
2
+ import { DialogPosition, DialogSize } from './types.svelte';
3
+ import { untrack } from 'svelte';
4
+ let { dialog } = $props();
5
+ let dialogElement = $state();
6
+ const isActive = $derived(Dialogs.active?.id === dialog.id);
7
+ const canDismiss = $derived(!dialog.controller.settings.nonCancelable && dialog.controller.settings.closeOnEsc);
8
+ const DialogView = $derived(dialog.view);
9
+ // TEMP: Workaround for Chromium bug where preventDefault() on cancel event
10
+ // doesn't always prevent dialog close. Using keydown to block ESC earlier.
11
+ // Remove when browser bug is fixed.
12
+ // See: https://issues.chromium.org/issues/41487622
13
+ const handleKeydown = (event) => {
14
+ if (event.key !== /*@wc-ignore*/ 'Escape') {
15
+ return;
16
+ }
17
+ if (!canDismiss) {
18
+ event.preventDefault();
19
+ }
20
+ };
21
+ const handleCancel = (event) => {
22
+ event.preventDefault();
23
+ if (canDismiss) {
24
+ dialog.controller.cancel();
25
+ }
26
+ };
27
+ const handleBackdropClick = (event) => {
28
+ if (!dialog.controller.settings.closeOnClickOutside) {
29
+ return;
30
+ }
31
+ if (dialog.controller.settings.nonCancelable) {
32
+ return;
33
+ }
34
+ if (event.target === dialogElement) {
35
+ dialog.controller.cancel();
36
+ }
37
+ };
38
+ // Use $effect to ensure showModal() is called when dialog element changes (including HMR)
39
+ $effect(() => {
40
+ if (dialogElement && !dialogElement.open) {
41
+ dialogElement.showModal();
42
+ }
43
+ });
44
+ $effect(() => {
45
+ const handleNavigateBack = () => {
46
+ Dialogs.closeAll();
47
+ };
48
+ const shouldTrack = untrack(() => Dialogs.count === 1);
49
+ if (shouldTrack) {
50
+ window.addEventListener('popstate', handleNavigateBack);
51
+ }
52
+ return () => {
53
+ if (shouldTrack) {
54
+ window.removeEventListener('popstate', handleNavigateBack);
55
+ }
56
+ };
57
+ });
58
+ const size = $derived(dialog.controller.containerSettings.size);
59
+ const position = $derived(dialog.controller.containerSettings.position);
60
+ const isCustomWidth = $derived(!Object.values(DialogSize).includes(size));
61
+ const customWidth = $derived(isCustomWidth ? size : null);
62
+ </script>
63
+
64
+ <dialog
65
+ bind:this={dialogElement}
66
+ class="dialog-container"
67
+ class:dialog-container--inactive={!isActive}
68
+ class:dialog-container--size-small={size === DialogSize.Small}
69
+ class:dialog-container--size-medium={size === DialogSize.Medium}
70
+ class:dialog-container--size-default={size === DialogSize.Default}
71
+ class:dialog-container--size-large={size === DialogSize.Large}
72
+ class:dialog-container--size-fullhd={size === DialogSize.FullHD}
73
+ class:dialog-container--size-auto={size === DialogSize.Auto}
74
+ class:dialog-container--position-center={position === DialogPosition.Center}
75
+ class:dialog-container--position-center-top={position === DialogPosition.CenterTop}
76
+ class:dialog-container--position-full-screen={position === DialogPosition.FullScreen}
77
+ class:dialog-container--position-full-height={position === DialogPosition.FullHeight}
78
+ onkeydown={handleKeydown}
79
+ oncancel={handleCancel}
80
+ onclick={handleBackdropClick}
81
+ style:--_dialog-container--custom-width={customWidth}>
82
+ <div class="dialog-container__content">
83
+ <DialogView controller={dialog.controller} data={dialog.data as TData} />
84
+ </div>
85
+ </dialog>
86
+
87
+ <style>.dialog-container {
88
+ --_dialog-container--backdrop: var(--dialog-container--backdrop, light-dark(rgba(0, 0, 0, 0.5), rgba(255, 255, 255, 0.15)));
89
+ --_dialog-container--border-radius: var(--dialog-container--border-radius, 0.5rem);
90
+ --_dialog-container--max-width: var(--dialog-container--max-width, 64rem);
91
+ --_dialog-container--padding: var(--dialog-container--padding, 1rem);
92
+ --_dialog-container--scrollbar-thumb: var(--dialog-container--scrollbar-thumb, light-dark(#c1c1c1, #383838));
93
+ position: fixed;
94
+ inset: 0;
95
+ margin: 0;
96
+ border: none;
97
+ background: transparent;
98
+ max-width: 100vw;
99
+ max-height: 100vh;
100
+ width: 100vw;
101
+ height: 100vh;
102
+ overflow-x: hidden;
103
+ overflow-y: auto;
104
+ display: flex;
105
+ flex-direction: column;
106
+ align-items: center;
107
+ box-sizing: border-box;
108
+ padding: var(--_dialog-container--padding);
109
+ --_cross-browser-scrollbar--thumb-color: var(--_dialog-container--scrollbar-thumb);
110
+ --_cross-browser-scrollbar--track-color: var(--scrollbar--track-color, transparent);
111
+ }
112
+ .dialog-container::-webkit-scrollbar {
113
+ width: 6px;
114
+ height: 6px;
115
+ }
116
+ .dialog-container::-webkit-scrollbar-track {
117
+ background: var(--_cross-browser-scrollbar--track-color);
118
+ border-radius: 100vw;
119
+ }
120
+ .dialog-container::-webkit-scrollbar-thumb {
121
+ background: var(--_cross-browser-scrollbar--thumb-color);
122
+ border-radius: 100vw;
123
+ }
124
+ @supports (scrollbar-color: transparent transparent) {
125
+ .dialog-container {
126
+ scrollbar-color: var(--_cross-browser-scrollbar--thumb-color) var(--_cross-browser-scrollbar--track-color);
127
+ scrollbar-width: thin;
128
+ }
129
+ }
130
+ .dialog-container::backdrop {
131
+ background: var(--_dialog-container--backdrop);
132
+ }
133
+ .dialog-container--inactive::backdrop {
134
+ background: transparent;
135
+ }
136
+
137
+ .dialog-container--size-small {
138
+ --_dialog-container--max-width: 31.25rem;
139
+ }
140
+ .dialog-container--size-medium {
141
+ --_dialog-container--max-width: 48.75rem;
142
+ }
143
+ .dialog-container--size-default {
144
+ --_dialog-container--max-width: 64rem;
145
+ }
146
+ .dialog-container--size-large {
147
+ --_dialog-container--max-width: 80rem;
148
+ }
149
+ .dialog-container--size-fullhd {
150
+ --_dialog-container--max-width: 118.75rem;
151
+ }
152
+ .dialog-container--size-auto {
153
+ --_dialog-container--max-width: max-content;
154
+ }
155
+ .dialog-container--position-center {
156
+ justify-content: center;
157
+ }
158
+ .dialog-container--position-center-top {
159
+ justify-content: flex-start;
160
+ }
161
+ .dialog-container--position-full-screen {
162
+ --_dialog-container--padding: 0;
163
+ --_dialog-container--border-radius: 0;
164
+ --_dialog-container--max-width: 100%;
165
+ overflow: hidden;
166
+ }
167
+ .dialog-container--position-full-height {
168
+ --_dialog-container--padding: 0;
169
+ --_dialog-container--border-radius: 0;
170
+ overflow: hidden;
171
+ }
172
+ .dialog-container__content {
173
+ width: 100%;
174
+ max-width: var(--_dialog-container--custom-width, var(--_dialog-container--max-width));
175
+ border-radius: var(--_dialog-container--border-radius);
176
+ pointer-events: auto;
177
+ }
178
+
179
+ .dialog-container--position-full-screen .dialog-container__content,
180
+ .dialog-container--position-full-height .dialog-container__content {
181
+ flex: 1;
182
+ min-height: 0;
183
+ }</style>