@immich/ui 0.44.0 → 0.45.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.
Files changed (32) hide show
  1. package/dist/common/context.svelte.d.ts +1 -2
  2. package/dist/common/context.svelte.js +2 -2
  3. package/dist/components/AnnouncementBanner/AnnouncementBanner.svelte +6 -6
  4. package/dist/components/Badge/Badge.svelte +69 -0
  5. package/dist/components/Badge/Badge.svelte.d.ts +13 -0
  6. package/dist/components/Card/Card.svelte +6 -6
  7. package/dist/components/Checkbox/Checkbox.svelte +2 -2
  8. package/dist/components/DatePicker/DatePicker.svelte +45 -0
  9. package/dist/components/DatePicker/DatePicker.svelte.d.ts +4 -0
  10. package/dist/components/FormModal/FormModal.svelte +65 -0
  11. package/dist/components/FormModal/FormModal.svelte.d.ts +17 -0
  12. package/dist/components/Input/Input.svelte +24 -15
  13. package/dist/components/Switch/Switch.svelte +11 -11
  14. package/dist/components/Textarea/Textarea.svelte +3 -3
  15. package/dist/components/Toast/ToastContainer.svelte +12 -45
  16. package/dist/components/Toast/ToastContent.svelte +3 -11
  17. package/dist/index.d.ts +3 -0
  18. package/dist/index.js +3 -0
  19. package/dist/internal/Button.svelte +5 -5
  20. package/dist/internal/CommandPaletteModal.svelte +29 -18
  21. package/dist/internal/DatePicker.svelte +159 -0
  22. package/dist/internal/DatePicker.svelte.d.ts +15 -0
  23. package/dist/internal/Select.svelte +2 -2
  24. package/dist/services/command-palette-manager.svelte.d.ts +5 -2
  25. package/dist/services/command-palette-manager.svelte.js +42 -10
  26. package/dist/services/translation.svelte.d.ts +5 -0
  27. package/dist/services/translation.svelte.js +5 -0
  28. package/dist/styles.d.ts +9 -0
  29. package/dist/styles.js +9 -0
  30. package/dist/theme/default.css +194 -21
  31. package/dist/types.d.ts +11 -3
  32. package/package.json +2 -1
@@ -1,13 +1,78 @@
1
+ /**
2
+ * Default theme variables for Immich UI components
3
+ * Generate color pallet from https://www.tints.dev/ with lock at 500 value
4
+ */
5
+
1
6
  @import 'tailwindcss';
2
7
 
3
8
  @theme inline {
4
- --color-primary: rgb(var(--immich-ui-primary));
9
+ --color-primary-50: var(--immich-ui-primary-50);
10
+ --color-primary-100: var(--immich-ui-primary-100);
11
+ --color-primary-200: var(--immich-ui-primary-200);
12
+ --color-primary-300: var(--immich-ui-primary-300);
13
+ --color-primary-400: var(--immich-ui-primary-400);
14
+ --color-primary-500: var(--immich-ui-primary-500);
15
+ --color-primary-600: var(--immich-ui-primary-600);
16
+ --color-primary-700: var(--immich-ui-primary-700);
17
+ --color-primary-800: var(--immich-ui-primary-800);
18
+ --color-primary-900: var(--immich-ui-primary-900);
19
+ --color-primary-950: var(--immich-ui-primary-950);
20
+
21
+ --color-success-50: var(--immich-ui-success-50);
22
+ --color-success-100: var(--immich-ui-success-100);
23
+ --color-success-200: var(--immich-ui-success-200);
24
+ --color-success-300: var(--immich-ui-success-300);
25
+ --color-success-400: var(--immich-ui-success-400);
26
+ --color-success-500: var(--immich-ui-success-500);
27
+ --color-success-600: var(--immich-ui-success-600);
28
+ --color-success-700: var(--immich-ui-success-700);
29
+ --color-success-800: var(--immich-ui-success-800);
30
+ --color-success-900: var(--immich-ui-success-900);
31
+ --color-success-950: var(--immich-ui-success-950);
32
+
33
+ --color-danger-50: var(--immich-ui-danger-50);
34
+ --color-danger-100: var(--immich-ui-danger-100);
35
+ --color-danger-200: var(--immich-ui-danger-200);
36
+ --color-danger-300: var(--immich-ui-danger-300);
37
+ --color-danger-400: var(--immich-ui-danger-400);
38
+ --color-danger-500: var(--immich-ui-danger-500);
39
+ --color-danger-600: var(--immich-ui-danger-600);
40
+ --color-danger-700: var(--immich-ui-danger-700);
41
+ --color-danger-800: var(--immich-ui-danger-800);
42
+ --color-danger-900: var(--immich-ui-danger-900);
43
+ --color-danger-950: var(--immich-ui-danger-950);
44
+
45
+ --color-warning-50: var(--immich-ui-warning-50);
46
+ --color-warning-100: var(--immich-ui-warning-100);
47
+ --color-warning-200: var(--immich-ui-warning-200);
48
+ --color-warning-300: var(--immich-ui-warning-300);
49
+ --color-warning-400: var(--immich-ui-warning-400);
50
+ --color-warning-500: var(--immich-ui-warning-500);
51
+ --color-warning-600: var(--immich-ui-warning-600);
52
+ --color-warning-700: var(--immich-ui-warning-700);
53
+ --color-warning-800: var(--immich-ui-warning-800);
54
+ --color-warning-900: var(--immich-ui-warning-900);
55
+ --color-warning-950: var(--immich-ui-warning-950);
56
+
57
+ --color-info-50: var(--immich-ui-info-50);
58
+ --color-info-100: var(--immich-ui-info-100);
59
+ --color-info-200: var(--immich-ui-info-200);
60
+ --color-info-300: var(--immich-ui-info-300);
61
+ --color-info-400: var(--immich-ui-info-400);
62
+ --color-info-500: var(--immich-ui-info-500);
63
+ --color-info-600: var(--immich-ui-info-600);
64
+ --color-info-700: var(--immich-ui-info-700);
65
+ --color-info-800: var(--immich-ui-info-800);
66
+ --color-info-900: var(--immich-ui-info-900);
67
+ --color-info-950: var(--immich-ui-info-950);
68
+
69
+ --color-primary: var(--immich-ui-primary-500);
70
+ --color-success: var(--immich-ui-success-500);
71
+ --color-danger: var(--immich-ui-danger-500);
72
+ --color-warning: var(--immich-ui-warning-500);
73
+ --color-info: var(--immich-ui-info-500);
5
74
  --color-light: rgb(var(--immich-ui-light));
6
- --color-dark: rgb(var(--immich-ui-dark));
7
- --color-success: rgb(var(--immich-ui-success));
8
- --color-danger: rgb(var(--immich-ui-danger));
9
- --color-warning: rgb(var(--immich-ui-warning));
10
- --color-info: rgb(var(--immich-ui-info));
75
+ --color-dark: var(--immich-ui-dark);
11
76
  --color-muted: rgb(var(--immich-ui-muted));
12
77
  --color-subtle: rgb(var(--immich-ui-gray));
13
78
  }
@@ -18,31 +83,139 @@
18
83
  :root,
19
84
  .light {
20
85
  /* light */
21
- --immich-ui-primary: 66 80 175;
22
- --immich-ui-dark: 20 22 26;
86
+ --immich-ui-primary-50: oklch(0.949 0.016 282.34);
87
+ --immich-ui-primary-100: oklch(0.897 0.033 281.96);
88
+ --immich-ui-primary-200: oklch(0.787 0.07 281.03);
89
+ --immich-ui-primary-300: oklch(0.686 0.106 278.96);
90
+ --immich-ui-primary-400: oklch(0.577 0.142 275.93);
91
+ --immich-ui-primary-500: oklch(0.473 0.151 272.94);
92
+ --immich-ui-primary-600: oklch(0.404 0.129 273.18);
93
+ --immich-ui-primary-700: oklch(0.343 0.109 272.56);
94
+ --immich-ui-primary-800: oklch(0.272 0.088 272.94);
95
+ --immich-ui-primary-900: oklch(0.211 0.068 273.01);
96
+ --immich-ui-primary-950: oklch(0.15 0.05 273.01);
97
+
98
+ --immich-ui-success-50: oklch(0.969 0.048 153.5);
99
+ --immich-ui-success-100: oklch(0.926 0.124 152.83);
100
+ --immich-ui-success-200: oklch(0.864 0.223 152.18);
101
+ --immich-ui-success-300: oklch(0.804 0.206 152.33);
102
+ --immich-ui-success-400: oklch(0.755 0.194 152.36);
103
+ --immich-ui-success-500: oklch(0.698 0.179 152.3);
104
+ --immich-ui-success-600: oklch(0.588 0.151 152.25);
105
+ --immich-ui-success-700: oklch(0.469 0.12 152.39);
106
+ --immich-ui-success-800: oklch(0.359 0.093 152.23);
107
+ --immich-ui-success-900: oklch(0.243 0.063 151.99);
108
+ --immich-ui-success-950: oklch(0.169 0.042 151.99);
109
+
110
+ --immich-ui-danger-50: oklch(0.976 0.008 17.52);
111
+ --immich-ui-danger-100: oklch(0.951 0.015 17.54);
112
+ --immich-ui-danger-200: oklch(0.867 0.046 18.1);
113
+ --immich-ui-danger-300: oklch(0.778 0.085 19.18);
114
+ --immich-ui-danger-400: oklch(0.696 0.129 20.93);
115
+ --immich-ui-danger-500: oklch(0.608 0.179 24.17);
116
+ --immich-ui-danger-600: oklch(0.518 0.153 24.17);
117
+ --immich-ui-danger-700: oklch(0.422 0.124 24.12);
118
+ --immich-ui-danger-800: oklch(0.331 0.098 24.2);
119
+ --immich-ui-danger-900: oklch(0.231 0.069 24.25);
120
+ --immich-ui-danger-950: oklch(0.184 0.055 24.33);
121
+
122
+ --immich-ui-warning: oklch(0.689 0.133 67.56);
123
+ --immich-ui-warning-50: oklch(0.974 0.013 67.56);
124
+ --immich-ui-warning-100: oklch(0.947 0.029 67.56);
125
+ --immich-ui-warning-200: oklch(0.892 0.061 67.56);
126
+ --immich-ui-warning-300: oklch(0.825 0.097 67.56);
127
+ --immich-ui-warning-400: oklch(0.757 0.115 67.56);
128
+ --immich-ui-warning-500: oklch(0.689 0.133 67.56);
129
+ --immich-ui-warning-600: oklch(0.604 0.117 67.56);
130
+ --immich-ui-warning-700: oklch(0.509 0.099 67.56);
131
+ --immich-ui-warning-800: oklch(0.418 0.081 67.56);
132
+ --immich-ui-warning-900: oklch(0.341 0.066 67.56);
133
+ --immich-ui-warning-950: oklch(0.273 0.053 67.56);
134
+
135
+ --immich-ui-info-50: oklch(0.967 0.018 254.53);
136
+ --immich-ui-info-100: oklch(0.933 0.037 254.53);
137
+ --immich-ui-info-200: oklch(0.862 0.078 254.53);
138
+ --immich-ui-info-300: oklch(0.768 0.126 254.53);
139
+ --immich-ui-info-400: oklch(0.667 0.152 254.53);
140
+ --immich-ui-info-500: oklch(0.567 0.177 254.53);
141
+ --immich-ui-info-600: oklch(0.492 0.155 254.53);
142
+ --immich-ui-info-700: oklch(0.419 0.132 254.53);
143
+ --immich-ui-info-800: oklch(0.347 0.109 254.53);
144
+ --immich-ui-info-900: oklch(0.285 0.089 254.53);
145
+ --immich-ui-info-950: oklch(0.232 0.073 254.53);
146
+
23
147
  --immich-ui-light: 255 255 255;
24
- --immich-ui-success: 16 188 99;
25
- --immich-ui-danger: 200 60 60;
26
- --immich-ui-warning: 216 143 64;
27
- --immich-ui-info: 8 111 230;
148
+ --immich-ui-dark: rgb(63, 60, 60);
28
149
  --immich-ui-muted: 161 161 161;
29
150
  --immich-ui-gray: 246 246 246;
30
-
31
151
  --immich-ui-default-border: 209 213 219;
32
152
  }
33
153
 
34
154
  .dark {
35
- /* dark */
36
- --immich-ui-primary: 172 203 250;
155
+ --immich-ui-primary-50: oklch(0.982 0.007 268.63);
156
+ --immich-ui-primary-100: oklch(0.966 0.015 260.75);
157
+ --immich-ui-primary-200: oklch(0.932 0.03 262.55);
158
+ --immich-ui-primary-300: oklch(0.906 0.041 260.95);
159
+ --immich-ui-primary-400: oklch(0.871 0.057 259.89);
160
+ --immich-ui-primary-500: oklch(0.836 0.074 258.58);
161
+ --immich-ui-primary-600: oklch(0.526 0.063 256.86);
162
+ --immich-ui-primary-700: oklch(0.449 0.054 257.6);
163
+ --immich-ui-primary-800: oklch(0.372 0.045 257.42);
164
+ --immich-ui-primary-900: oklch(0.258 0.032 258.31);
165
+ --immich-ui-primary-950: oklch(0.198 0.023 257.29);
166
+
167
+ --immich-ui-success-50: oklch(0.979 0.027 157.32);
168
+ --immich-ui-success-100: oklch(0.969 0.043 155.86);
169
+ --immich-ui-success-200: oklch(0.937 0.09 156.81);
170
+ --immich-ui-success-300: oklch(0.894 0.164 156.29);
171
+ --immich-ui-success-400: oklch(0.866 0.186 156.06);
172
+ --immich-ui-success-500: oklch(0.842 0.181 156.04);
173
+ --immich-ui-success-600: oklch(0.699 0.151 155.85);
174
+ --immich-ui-success-700: oklch(0.555 0.119 156.26);
175
+ --immich-ui-success-800: oklch(0.419 0.089 156.41);
176
+ --immich-ui-success-900: oklch(0.279 0.06 155.24);
177
+ --immich-ui-success-950: oklch(0.181 0.04 155.24);
178
+
179
+ --immich-ui-danger-50: oklch(0.975 0.011 17.5);
180
+ --immich-ui-danger-100: oklch(0.943 0.025 17.67);
181
+ --immich-ui-danger-200: oklch(0.894 0.049 18.13);
182
+ --immich-ui-danger-300: oklch(0.836 0.079 18.9);
183
+ --immich-ui-danger-400: oklch(0.781 0.112 19.92);
184
+ --immich-ui-danger-500: oklch(0.727 0.149 21.41);
185
+ --immich-ui-danger-600: oklch(0.622 0.232 27.33);
186
+ --immich-ui-danger-700: oklch(0.505 0.188 27.33);
187
+ --immich-ui-danger-800: oklch(0.387 0.144 27.27);
188
+ --immich-ui-danger-900: oklch(0.262 0.097 27.31);
189
+ --immich-ui-danger-950: oklch(0.207 0.077 27.3);
190
+
191
+ --immich-ui-warning-50: oklch(0.993 0.005 67.8);
192
+ --immich-ui-warning-100: oklch(0.975 0.017 67.63);
193
+ --immich-ui-warning-200: oklch(0.958 0.029 67.47);
194
+ --immich-ui-warning-300: oklch(0.934 0.048 69.18);
195
+ --immich-ui-warning-400: oklch(0.907 0.07 70.22);
196
+ --immich-ui-warning-500: oklch(0.888 0.089 72.24);
197
+ --immich-ui-warning-600: oklch(0.738 0.153 79.79);
198
+ --immich-ui-warning-700: oklch(0.589 0.122 79.52);
199
+ --immich-ui-warning-800: oklch(0.442 0.092 79.1);
200
+ --immich-ui-warning-900: oklch(0.286 0.059 78.61);
201
+ --immich-ui-warning-950: oklch(0.197 0.039 78.61);
202
+
203
+ --immich-ui-info-50: oklch(0.975 0.012 259.84);
204
+ --immich-ui-info-100: oklch(0.956 0.021 261.78);
205
+ --immich-ui-info-200: oklch(0.905 0.046 259.51);
206
+ --immich-ui-info-300: oklch(0.861 0.068 259.36);
207
+ --immich-ui-info-400: oklch(0.811 0.096 255.92);
208
+ --immich-ui-info-500: oklch(0.767 0.122 253.35);
209
+ --immich-ui-info-600: oklch(0.638 0.166 246.52);
210
+ --immich-ui-info-700: oklch(0.516 0.135 246.69);
211
+ --immich-ui-info-800: oklch(0.386 0.1 246.5);
212
+ --immich-ui-info-900: oklch(0.265 0.07 247.05);
213
+ --immich-ui-info-950: oklch(0.186 0.049 247.05);
214
+
37
215
  --immich-ui-light: 0 0 0;
38
- --immich-ui-dark: 229 231 235;
39
- --immich-ui-success: 72 237 152;
40
- --immich-ui-danger: 246 125 125;
41
- --immich-ui-warning: 254 197 132;
42
- --immich-ui-info: 121 183 254;
216
+ --immich-ui-dark: rgb(221, 221, 221);
43
217
  --immich-ui-muted: 212 212 212;
44
218
  --immich-ui-gray: 33 33 33;
45
-
46
219
  --immich-ui-default-border: 33 33 33;
47
220
  }
48
221
 
package/dist/types.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { Translations } from './services/translation.svelte.js';
2
+ import type { DateTime } from 'luxon';
2
3
  import type { Component, Snippet } from 'svelte';
3
4
  import type { HTMLAnchorAttributes, HTMLAttributes, HTMLButtonAttributes, HTMLInputAttributes, HTMLLabelAttributes, HTMLTextareaAttributes } from 'svelte/elements';
4
5
  export type Color = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info';
@@ -104,8 +105,7 @@ export type FieldContext = {
104
105
  description?: string;
105
106
  invalid?: boolean;
106
107
  disabled?: boolean;
107
- required?: boolean;
108
- requiredIndicator?: boolean;
108
+ required?: boolean | 'indicator';
109
109
  readOnly?: boolean;
110
110
  } & LabelProps;
111
111
  type BaseInputProps<T> = {
@@ -162,7 +162,6 @@ export type ToastId = {
162
162
  };
163
163
  type ToastCommonProps = {
164
164
  color?: Color;
165
- variant?: ToastVariant;
166
165
  };
167
166
  export type ToastContentProps = ToastCommonProps & {
168
167
  title?: string | Snippet;
@@ -233,6 +232,15 @@ export type ContextMenuBaseProps = MenuProps & {
233
232
  export type ContextMenuProps = ContextMenuBaseProps & {
234
233
  onClose: () => void;
235
234
  };
235
+ export type DatePickerProps = {
236
+ onChange?: (date: DateTime | undefined) => void;
237
+ value?: DateTime | undefined;
238
+ minDate?: DateTime;
239
+ maxDate?: DateTime;
240
+ size?: Size;
241
+ shape?: Shape;
242
+ class?: string;
243
+ };
236
244
  export type IfLike = {
237
245
  $if?: () => boolean;
238
246
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@immich/ui",
3
- "version": "0.44.0",
3
+ "version": "0.45.0",
4
4
  "license": "GNU Affero General Public License version 3",
5
5
  "repository": {
6
6
  "type": "git",
@@ -47,6 +47,7 @@
47
47
  "vitest": "^4.0.0"
48
48
  },
49
49
  "dependencies": {
50
+ "@internationalized/date": "^3.10.0",
50
51
  "@mdi/js": "^7.4.47",
51
52
  "bits-ui": "^2.9.8",
52
53
  "luxon": "^3.7.2",