@streamscloud/kit 0.85.1 → 0.87.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/README.md +2 -2
- package/dist/core/files/file-decorators.d.ts +3 -0
- package/dist/core/files/file-decorators.js +2 -0
- package/dist/core/files/file-validation-rules.d.ts +3 -8
- package/dist/core/files/file-with-blob-data-helper.d.ts +1 -1
- package/dist/core/files/file-with-blob-data-helper.js +1 -1
- package/dist/core/files/image-resizer.d.ts +17 -29
- package/dist/core/files/image-resizer.js +30 -57
- package/dist/core/files/index.d.ts +4 -4
- package/dist/core/files/index.js +2 -2
- package/dist/core/files/types.d.ts +14 -2
- package/dist/core/files/types.js +1 -10
- package/dist/core/files/upload-media-store.svelte.d.ts +11 -17
- package/dist/core/files/upload-media-store.svelte.js +32 -35
- package/dist/styles/_mixins.scss +71 -17
- package/dist/styles/reset.css +19 -12
- package/dist/ui/ai-panel/cmp.ai-panel.svelte +27 -0
- package/dist/ui/cropper/image-editor-dialog/cmp.image-editor-dialog.svelte +8 -12
- package/dist/ui/cropper/image-editor-dialog/crop-and-resize.d.ts +6 -13
- package/dist/ui/cropper/image-editor-dialog/crop-and-resize.js +6 -18
- package/dist/ui/cropper/image-editor-dialog/open-image-editor-dialog.d.ts +6 -1
- package/dist/ui/cropper/image-editor-dialog/open-image-editor-dialog.js +6 -1
- package/dist/ui/cropper/image-editor-dialog/types.d.ts +8 -5
- package/dist/ui/cropper/img-cropper/img-cropper.svelte.d.ts +6 -2
- package/dist/ui/cropper/img-cropper/img-cropper.svelte.js +18 -11
- package/dist/ui/date-picker/cmp.date-time-picker.svelte +67 -8
- package/dist/ui/date-picker/cmp.date-time-picker.svelte.d.ts +8 -5
- package/dist/ui/date-picker/cmp.time-picker.svelte +3 -2
- package/dist/ui/date-picker/cmp.time-picker.svelte.d.ts +2 -0
- package/dist/ui/dialog/cmp.dialog-container.svelte +19 -12
- package/dist/ui/dialog/cmp.dialog.svelte +19 -12
- package/dist/ui/dialog/layout/cmp.stepper-dialog.svelte +54 -0
- package/dist/ui/emoji-picker/cmp.emoji-panel.svelte +19 -12
- package/dist/ui/file-uploader/cmp.upload-progress-toaster.svelte +20 -11
- package/dist/ui/grouped-sidebar/cmp.grouped-sidebar.svelte +20 -11
- package/dist/ui/navigation/cmp.nav-menu.svelte +20 -11
- package/dist/ui/page-layout/cmp.page-layout.svelte +38 -24
- package/dist/ui/page-layout/cmp.page-panel-sidebars.svelte +40 -22
- package/dist/ui/page-layout/cmp.page-panel.svelte +20 -11
- package/dist/ui/popover/cmp.popover.svelte +19 -12
- package/dist/ui/select/cmp.input-suggest.svelte +1 -0
- package/dist/ui/select/cmp.singleselect-async.svelte +1 -0
- package/dist/ui/select/multiselect-base.svelte +1 -0
- package/dist/ui/select/select-core.svelte.js +41 -11
- package/dist/ui/select/select-listbox.svelte +42 -19
- package/dist/ui/select/select-listbox.svelte.d.ts +5 -3
- package/dist/ui/table/table-core.svelte +19 -12
- package/dist/ui/textarea/cmp.textarea.svelte +20 -11
- package/package.json +4 -7
|
@@ -6,7 +6,7 @@ import IconCheckboxChecked from '@fluentui/svg-icons/icons/checkbox_checked_16_f
|
|
|
6
6
|
import IconCheckboxIndeterminate from '@fluentui/svg-icons/icons/checkbox_indeterminate_16_filled.svg?raw';
|
|
7
7
|
import IconCheckboxUnchecked from '@fluentui/svg-icons/icons/checkbox_unchecked_16_regular.svg?raw';
|
|
8
8
|
import IconCheckmark from '@fluentui/svg-icons/icons/checkmark_16_regular.svg?raw';
|
|
9
|
-
let { triggerEl, isOpen, rows, highlight, loading = false, listboxId, matchTriggerWidth = true, selectedDisplay = 'checkmark', optionSnippet, headerSnippet, bodySnippet, hideCreateRows = false, createPrefix, suppressEmpty = false, on } = $props();
|
|
9
|
+
let { triggerEl, isOpen, rows, highlight, loading = false, size = 'md', listboxId, matchTriggerWidth = true, selectedDisplay = 'checkmark', optionSnippet, headerSnippet, bodySnippet, hideCreateRows = false, createPrefix, suppressEmpty = false, on } = $props();
|
|
10
10
|
const localization = new SelectListboxLocalization();
|
|
11
11
|
// rows keep their index into the full `rows` array — `highlight` and row ids are core-side indices,
|
|
12
12
|
// so filtering without preserving them shifts every row by one and Enter acts on the wrong row
|
|
@@ -115,7 +115,7 @@ $effect(() => {
|
|
|
115
115
|
{#if isOpen && (hasRows || showEmpty)}
|
|
116
116
|
<div
|
|
117
117
|
bind:this={panelEl}
|
|
118
|
-
class="select-listbox select-listbox--display-{selectedDisplay}"
|
|
118
|
+
class="select-listbox select-listbox--{size} select-listbox--display-{selectedDisplay}"
|
|
119
119
|
role="listbox"
|
|
120
120
|
id={listboxId}
|
|
121
121
|
tabindex="-1"
|
|
@@ -237,10 +237,10 @@ dismiss events upward. Floating UI handles placement with autoUpdate on scroll/r
|
|
|
237
237
|
| `--sc-kit--select--panel--border-color` | Panel border | `var(--sc-kit--color--border)` |
|
|
238
238
|
| `--sc-kit--select--panel--border-radius` | Panel radius | `var(--sc-kit--radius--md)` |
|
|
239
239
|
| `--sc-kit--select--panel--box-shadow` | Panel shadow | `var(--sc-kit--shadow--lg)` |
|
|
240
|
-
| `--sc-kit--select--panel--font-size` | Option / group / empty-state text size | `var(--sc-kit--font-size--md)` |
|
|
240
|
+
| `--sc-kit--select--panel--font-size` | Option / group / empty-state text size | per size — `var(--sc-kit--font-size--{sm,md,lg})` |
|
|
241
241
|
| `--sc-kit--select--panel--max-height` | Panel max height | `18rem` |
|
|
242
|
-
| `--sc-kit--select--panel--padding` | Panel inner padding | `var(--sc-kit--space--1)` |
|
|
243
|
-
| `--sc-kit--select--option--height` | Option row height | `var(--sc-kit--field--height--md)`
|
|
242
|
+
| `--sc-kit--select--panel--padding` | Panel inner padding; in Chrome / Safari the 4px scrollbar takes its share of the end side | `var(--sc-kit--space--1)` |
|
|
243
|
+
| `--sc-kit--select--option--height` | Option row height | per size — `var(--sc-kit--field--height--{sm,md,lg})` |
|
|
244
244
|
| `--sc-kit--select--option--padding-inline` | Option horizontal padding | `var(--sc-kit--space--3)` |
|
|
245
245
|
| `--sc-kit--select--option--background--active` | Active / focused row background | `var(--sc-kit--color--accent--softer)` |
|
|
246
246
|
| `--sc-kit--select--option--color` | Row text color | `var(--sc-kit--color--text--primary)` |
|
|
@@ -257,8 +257,8 @@ dismiss events upward. Floating UI handles placement with autoUpdate on scroll/r
|
|
|
257
257
|
--_lb--box-shadow: var(--sc-kit--select--panel--box-shadow, var(--sc-kit--shadow--lg));
|
|
258
258
|
--_lb--max-height: var(--sc-kit--select--panel--max-height, 18rem);
|
|
259
259
|
--_lb--padding: var(--sc-kit--select--panel--padding, var(--sc-kit--space--1));
|
|
260
|
-
--_lb--font-size: var(--sc-kit--select--panel--font-size, var(--sc-kit--font-size--md));
|
|
261
|
-
--_lb--row-height: var(--sc-kit--select--option--height, var(--sc-kit--field--height--md));
|
|
260
|
+
--_lb--font-size: var(--sc-kit--select--panel--font-size, var(--_lb--size-font-size, var(--sc-kit--font-size--md)));
|
|
261
|
+
--_lb--row-height: var(--sc-kit--select--option--height, var(--_lb--size-row-height, var(--sc-kit--field--height--md)));
|
|
262
262
|
--_lb--row-padding-inline: var(--sc-kit--select--option--padding-inline, var(--sc-kit--space--3));
|
|
263
263
|
--_lb--row-background-active: var(--sc-kit--select--option--background--active, var(--sc-kit--color--accent--softer));
|
|
264
264
|
--_lb--row-color: var(--sc-kit--select--option--color, var(--sc-kit--color--text--primary));
|
|
@@ -278,28 +278,51 @@ dismiss events upward. Floating UI handles placement with autoUpdate on scroll/r
|
|
|
278
278
|
box-shadow: var(--_lb--box-shadow);
|
|
279
279
|
max-height: var(--_lb--max-height);
|
|
280
280
|
padding: var(--_lb--padding);
|
|
281
|
+
padding-inline-start: max(var(--_lb--padding), var(--_cross-browser-scrollbar--gutter, 0px));
|
|
282
|
+
padding-inline-end: max(0px, var(--_lb--padding) - var(--_cross-browser-scrollbar--gutter, 0px));
|
|
281
283
|
overflow-y: auto;
|
|
282
284
|
--_cross-browser-scrollbar--thumb-color: var(--scrollbar--thumb-color, light-dark(#d1d5db, #4b5563));
|
|
283
285
|
--_cross-browser-scrollbar--track-color: var(--scrollbar--track-color, transparent);
|
|
286
|
+
--_cross-browser-scrollbar--gutter: 0px;
|
|
284
287
|
}
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
288
|
+
@supports selector(::-webkit-scrollbar) {
|
|
289
|
+
.select-listbox {
|
|
290
|
+
scrollbar-color: auto;
|
|
291
|
+
scrollbar-width: auto;
|
|
292
|
+
}
|
|
293
|
+
.select-listbox::-webkit-scrollbar {
|
|
294
|
+
width: 4px;
|
|
295
|
+
height: 4px;
|
|
296
|
+
}
|
|
297
|
+
.select-listbox::-webkit-scrollbar-track {
|
|
298
|
+
background: var(--_cross-browser-scrollbar--track-color);
|
|
299
|
+
border-radius: 100vw;
|
|
300
|
+
}
|
|
301
|
+
.select-listbox::-webkit-scrollbar-thumb {
|
|
302
|
+
background: var(--_cross-browser-scrollbar--thumb-color);
|
|
303
|
+
border-radius: 100vw;
|
|
304
|
+
}
|
|
296
305
|
}
|
|
297
|
-
@supports (scrollbar
|
|
306
|
+
@supports not selector(::-webkit-scrollbar) {
|
|
298
307
|
.select-listbox {
|
|
299
308
|
scrollbar-color: var(--_cross-browser-scrollbar--thumb-color) var(--_cross-browser-scrollbar--track-color);
|
|
300
309
|
scrollbar-width: thin;
|
|
301
310
|
}
|
|
302
311
|
}
|
|
312
|
+
@supports selector(::-webkit-scrollbar) {
|
|
313
|
+
.select-listbox {
|
|
314
|
+
--_cross-browser-scrollbar--gutter: 4px;
|
|
315
|
+
overflow-y: scroll;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
.select-listbox--sm {
|
|
319
|
+
--_lb--size-font-size: var(--sc-kit--font-size--sm);
|
|
320
|
+
--_lb--size-row-height: var(--sc-kit--field--height--sm);
|
|
321
|
+
}
|
|
322
|
+
.select-listbox--lg {
|
|
323
|
+
--_lb--size-font-size: var(--sc-kit--font-size--lg);
|
|
324
|
+
--_lb--size-row-height: var(--sc-kit--field--height--lg);
|
|
325
|
+
}
|
|
303
326
|
.select-listbox__row {
|
|
304
327
|
display: flex;
|
|
305
328
|
align-items: center;
|
|
@@ -9,6 +9,8 @@ declare function $$render<T>(): {
|
|
|
9
9
|
/** Index into `rows` — highlighted row gets the active background and scrolls into view. */
|
|
10
10
|
highlight: number;
|
|
11
11
|
loading?: boolean;
|
|
12
|
+
/** Field size the rows follow (font size + row height). @default 'md' */
|
|
13
|
+
size?: "sm" | "md" | "lg";
|
|
12
14
|
/** Stable id for aria-controls + aria-activedescendant. */
|
|
13
15
|
listboxId: string;
|
|
14
16
|
/** When true, panel width equals trigger width. @default true */
|
|
@@ -79,10 +81,10 @@ interface $$IsomorphicComponent {
|
|
|
79
81
|
* | `--sc-kit--select--panel--border-color` | Panel border | `var(--sc-kit--color--border)` |
|
|
80
82
|
* | `--sc-kit--select--panel--border-radius` | Panel radius | `var(--sc-kit--radius--md)` |
|
|
81
83
|
* | `--sc-kit--select--panel--box-shadow` | Panel shadow | `var(--sc-kit--shadow--lg)` |
|
|
82
|
-
* | `--sc-kit--select--panel--font-size` | Option / group / empty-state text size | `var(--sc-kit--font-size--md)` |
|
|
84
|
+
* | `--sc-kit--select--panel--font-size` | Option / group / empty-state text size | per size — `var(--sc-kit--font-size--{sm,md,lg})` |
|
|
83
85
|
* | `--sc-kit--select--panel--max-height` | Panel max height | `18rem` |
|
|
84
|
-
* | `--sc-kit--select--panel--padding` | Panel inner padding | `var(--sc-kit--space--1)` |
|
|
85
|
-
* | `--sc-kit--select--option--height` | Option row height | `var(--sc-kit--field--height--md)`
|
|
86
|
+
* | `--sc-kit--select--panel--padding` | Panel inner padding; in Chrome / Safari the 4px scrollbar takes its share of the end side | `var(--sc-kit--space--1)` |
|
|
87
|
+
* | `--sc-kit--select--option--height` | Option row height | per size — `var(--sc-kit--field--height--{sm,md,lg})` |
|
|
86
88
|
* | `--sc-kit--select--option--padding-inline` | Option horizontal padding | `var(--sc-kit--space--3)` |
|
|
87
89
|
* | `--sc-kit--select--option--background--active` | Active / focused row background | `var(--sc-kit--color--accent--softer)` |
|
|
88
90
|
* | `--sc-kit--select--option--color` | Row text color | `var(--sc-kit--color--text--primary)` |
|
|
@@ -290,20 +290,27 @@ Not exported from `index.ts` — for kit-internal use only.
|
|
|
290
290
|
overflow: auto;
|
|
291
291
|
--_cross-browser-scrollbar--thumb-color: var(--scrollbar--thumb-color, light-dark(#d1d5db, #4b5563));
|
|
292
292
|
--_cross-browser-scrollbar--track-color: var(--scrollbar--track-color, transparent);
|
|
293
|
+
--_cross-browser-scrollbar--gutter: 0px;
|
|
293
294
|
}
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
295
|
+
@supports selector(::-webkit-scrollbar) {
|
|
296
|
+
.table-container__scroll {
|
|
297
|
+
scrollbar-color: auto;
|
|
298
|
+
scrollbar-width: auto;
|
|
299
|
+
}
|
|
300
|
+
.table-container__scroll::-webkit-scrollbar {
|
|
301
|
+
width: 6px;
|
|
302
|
+
height: 6px;
|
|
303
|
+
}
|
|
304
|
+
.table-container__scroll::-webkit-scrollbar-track {
|
|
305
|
+
background: var(--_cross-browser-scrollbar--track-color);
|
|
306
|
+
border-radius: 100vw;
|
|
307
|
+
}
|
|
308
|
+
.table-container__scroll::-webkit-scrollbar-thumb {
|
|
309
|
+
background: var(--_cross-browser-scrollbar--thumb-color);
|
|
310
|
+
border-radius: 100vw;
|
|
311
|
+
}
|
|
305
312
|
}
|
|
306
|
-
@supports (scrollbar
|
|
313
|
+
@supports not selector(::-webkit-scrollbar) {
|
|
307
314
|
.table-container__scroll {
|
|
308
315
|
scrollbar-color: var(--_cross-browser-scrollbar--thumb-color) var(--_cross-browser-scrollbar--track-color);
|
|
309
316
|
scrollbar-width: thin;
|
|
@@ -285,19 +285,28 @@ what the field shows. Blank lines inside the text are left alone. Typing is unto
|
|
|
285
285
|
--_cross-browser-scrollbar--thumb-color: var(--sc-kit--color--border--strong);
|
|
286
286
|
--_cross-browser-scrollbar--track-color: var(--scrollbar--track-color, transparent);
|
|
287
287
|
}
|
|
288
|
-
.textarea__el
|
|
289
|
-
|
|
290
|
-
height: 6px;
|
|
291
|
-
}
|
|
292
|
-
.textarea__el::-webkit-scrollbar-track {
|
|
293
|
-
background: var(--_cross-browser-scrollbar--track-color);
|
|
294
|
-
border-radius: 100vw;
|
|
288
|
+
.textarea__el {
|
|
289
|
+
--_cross-browser-scrollbar--gutter: 0px;
|
|
295
290
|
}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
291
|
+
@supports selector(::-webkit-scrollbar) {
|
|
292
|
+
.textarea__el {
|
|
293
|
+
scrollbar-color: auto;
|
|
294
|
+
scrollbar-width: auto;
|
|
295
|
+
}
|
|
296
|
+
.textarea__el::-webkit-scrollbar {
|
|
297
|
+
width: 6px;
|
|
298
|
+
height: 6px;
|
|
299
|
+
}
|
|
300
|
+
.textarea__el::-webkit-scrollbar-track {
|
|
301
|
+
background: var(--_cross-browser-scrollbar--track-color);
|
|
302
|
+
border-radius: 100vw;
|
|
303
|
+
}
|
|
304
|
+
.textarea__el::-webkit-scrollbar-thumb {
|
|
305
|
+
background: var(--_cross-browser-scrollbar--thumb-color);
|
|
306
|
+
border-radius: 100vw;
|
|
307
|
+
}
|
|
299
308
|
}
|
|
300
|
-
@supports (scrollbar
|
|
309
|
+
@supports not selector(::-webkit-scrollbar) {
|
|
301
310
|
.textarea__el {
|
|
302
311
|
scrollbar-color: var(--_cross-browser-scrollbar--thumb-color) var(--_cross-browser-scrollbar--track-color);
|
|
303
312
|
scrollbar-width: thin;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@streamscloud/kit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.87.0",
|
|
4
4
|
"author": "StreamsCloud",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -9,18 +9,15 @@
|
|
|
9
9
|
"type": "module",
|
|
10
10
|
"scripts": {
|
|
11
11
|
"dev": "vite dev --port 3011 --host",
|
|
12
|
-
"build": "svelte-package --tsconfig ./tsconfig.app.json && npm run build:css
|
|
12
|
+
"build": "npm run check && svelte-package --tsconfig ./tsconfig.app.json && npm run build:css",
|
|
13
13
|
"build:css": "sass dist/styles/_normalize.scss dist/styles/normalize.css --no-source-map && sass dist/styles/_reset.scss dist/styles/reset.css --no-source-map",
|
|
14
14
|
"publish:prod": "npm run build && npm publish --access public --tag latest",
|
|
15
15
|
"version:dev": "node -e \"const p=require('./package.json');p.version=p.version.split('-')[0]+'-'+Date.now();require('fs').writeFileSync('package.json',JSON.stringify(p,null,2)+'\\n')\"",
|
|
16
16
|
"publish:dev": "npm run build && npm run version:dev && npm publish --tag next && git checkout -- package.json",
|
|
17
17
|
"pack": "npm run build && npm pack",
|
|
18
18
|
"preview": "vite preview",
|
|
19
|
-
"check": "svelte-check --tsconfig ./tsconfig.app.json && tsc -p tsconfig.node.json",
|
|
20
|
-
"
|
|
21
|
-
"lint": "prettier --check --plugin prettier-plugin-svelte . && eslint .",
|
|
22
|
-
"lint-format": "prettier --write --plugin prettier-plugin-svelte . && eslint --fix .",
|
|
23
|
-
"format": "prettier --write --plugin prettier-plugin-svelte ."
|
|
19
|
+
"check": "svelte-check --tsconfig ./tsconfig.app.json --fail-on-warnings --output machine && tsc -p tsconfig.node.json && eslint . --format codeframe --max-warnings 0 && prettier --check --plugin prettier-plugin-svelte --cache .",
|
|
20
|
+
"lint:fix": "eslint --fix . && prettier --write --plugin prettier-plugin-svelte ."
|
|
24
21
|
},
|
|
25
22
|
"files": [
|
|
26
23
|
"dist"
|