@streamscloud/kit 0.2.11 → 0.2.13
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/core/local-storage/index.d.ts +1 -0
- package/dist/core/local-storage/index.js +1 -0
- package/dist/core/local-storage/local-storage-item.d.ts +10 -0
- package/dist/core/local-storage/local-storage-item.js +27 -0
- package/dist/styles/_responsive.scss +48 -0
- package/dist/ui/button/cmp.button.svelte +2 -2
- package/dist/ui/button/cmp.button.svelte.d.ts +2 -2
- package/dist/ui/button/cmp.options-button.svelte +2 -2
- package/dist/ui/button/resources/button-base.svelte +3 -3
- package/dist/ui/button/resources/button-theme.svelte +2 -2
- package/dist/ui/dropdown/cmp.dropdown.svelte +8 -3
- package/dist/ui/icon-text/cmp.icon-text.svelte +2 -2
- package/dist/ui/icon-text/cmp.icon-text.svelte.d.ts +2 -0
- package/dist/ui/page-toolbar/cmp.reorderable-toggle-list.svelte +160 -0
- package/dist/ui/page-toolbar/cmp.reorderable-toggle-list.svelte.d.ts +20 -0
- package/dist/ui/page-toolbar/cmp.toolbar-button-item.svelte +34 -0
- package/dist/ui/page-toolbar/cmp.toolbar-button-item.svelte.d.ts +18 -0
- package/dist/ui/page-toolbar/cmp.toolbar-checkbox-item.svelte +21 -0
- package/dist/ui/page-toolbar/cmp.toolbar-checkbox-item.svelte.d.ts +12 -0
- package/dist/ui/page-toolbar/cmp.toolbar-dropdown.svelte +29 -0
- package/dist/ui/page-toolbar/cmp.toolbar-dropdown.svelte.d.ts +17 -0
- package/dist/ui/page-toolbar/cmp.toolbar-panel.svelte +58 -0
- package/dist/ui/page-toolbar/cmp.toolbar-panel.svelte.d.ts +19 -0
- package/dist/ui/page-toolbar/cmp.toolbar-search-input.svelte +49 -0
- package/dist/ui/page-toolbar/cmp.toolbar-search-input.svelte.d.ts +20 -0
- package/dist/ui/page-toolbar/cmp.toolbar-segmented-control.svelte +40 -0
- package/dist/ui/page-toolbar/cmp.toolbar-segmented-control.svelte.d.ts +39 -0
- package/dist/ui/page-toolbar/cmp.toolbar-switch-item.svelte +51 -0
- package/dist/ui/page-toolbar/cmp.toolbar-switch-item.svelte.d.ts +43 -0
- package/dist/ui/page-toolbar/cmp.toolbar-toggle-item.svelte +45 -0
- package/dist/ui/page-toolbar/cmp.toolbar-toggle-item.svelte.d.ts +19 -0
- package/dist/ui/page-toolbar/index.d.ts +10 -0
- package/dist/ui/page-toolbar/index.js +9 -0
- package/dist/ui/page-toolbar/types.d.ts +6 -0
- package/dist/ui/page-toolbar/types.js +1 -0
- package/dist/ui/player/carousel/cmp.carousel.svelte +20 -11
- package/dist/ui/player/carousel/cmp.carousel.svelte.d.ts +4 -0
- package/dist/ui/seek-bar/cmp.seek-bar.svelte +5 -3
- package/dist/ui/segmented-control/cmp.segmented-control.svelte +97 -0
- package/dist/ui/segmented-control/cmp.segmented-control.svelte.d.ts +52 -0
- package/dist/ui/segmented-control/index.d.ts +1 -0
- package/dist/ui/segmented-control/index.js +1 -0
- package/dist/ui/table/cmp.table.svelte +5 -3
- package/dist/ui/table/index.d.ts +1 -1
- package/dist/ui/table/table-cells/table-text-cell.svelte +2 -2
- package/dist/ui/table/table-columns-manager/cmp.table-columns-manager.svelte +77 -38
- package/dist/ui/table/table-columns-manager/cmp.table-columns-manager.svelte.d.ts +16 -6
- package/dist/ui/table/table-columns-manager/table-columns-manager-localization.d.ts +4 -0
- package/dist/ui/table/table-columns-manager/table-columns-manager-localization.js +19 -0
- package/dist/ui/table/table-group-actions/cmp.table-group-actions.svelte +3 -1
- package/dist/ui/table/table-group-actions/table-group-actions-localization.d.ts +3 -0
- package/dist/ui/table/table-group-actions/table-group-actions-localization.js +12 -0
- package/dist/ui/table/table-headers/table-header-sortable-localization.d.ts +7 -0
- package/dist/ui/table/table-headers/table-header-sortable-localization.js +40 -0
- package/dist/ui/table/table-headers/table-header-sortable.svelte +7 -5
- package/dist/ui/table/table-localization.d.ts +6 -0
- package/dist/ui/table/table-localization.js +33 -0
- package/dist/ui/table/table-model.svelte.d.ts +1 -0
- package/dist/ui/table/table-model.svelte.js +3 -0
- package/dist/ui/table/types.d.ts +5 -0
- package/package.json +13 -1
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<script lang="ts">import { Utils } from '../../core/utils';
|
|
2
|
+
import { Icon } from '../icon';
|
|
3
|
+
import { Input } from '../inputs';
|
|
4
|
+
import IconSearch from '@fluentui/svg-icons/icons/search_20_regular.svg?raw';
|
|
5
|
+
const { value, placeholder = 'Search...', debounce = 0, on } = $props();
|
|
6
|
+
let focused = $state(false);
|
|
7
|
+
const expanded = $derived(focused || !!value);
|
|
8
|
+
const onInput = (v) => {
|
|
9
|
+
on?.input?.(v);
|
|
10
|
+
};
|
|
11
|
+
const onInputDebounced = $derived(debounce > 0 ? Utils.debounce(onInput, debounce) : onInput);
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
{#snippet searchIcon()}
|
|
15
|
+
<Icon src={IconSearch} />
|
|
16
|
+
{/snippet}
|
|
17
|
+
|
|
18
|
+
<div class="toolbar-search-input" class:toolbar-search-input--expanded={expanded}>
|
|
19
|
+
<Input
|
|
20
|
+
value={value}
|
|
21
|
+
placeholder={placeholder}
|
|
22
|
+
icon={searchIcon}
|
|
23
|
+
clearable
|
|
24
|
+
borderless={!expanded}
|
|
25
|
+
on={{ input: onInputDebounced, change: onInputDebounced, focus: () => (focused = true), blur: () => (focused = false) }} />
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<!--
|
|
29
|
+
@component
|
|
30
|
+
A collapsible search input for toolbars. Expands when focused or when value is present.
|
|
31
|
+
|
|
32
|
+
### CSS Custom Properties
|
|
33
|
+
| Property | Description | Default |
|
|
34
|
+
|---|---|---|
|
|
35
|
+
| `--sc-kit--toolbar-search-input--width` | Expanded width | `12.5rem` |
|
|
36
|
+
-->
|
|
37
|
+
|
|
38
|
+
<style>.toolbar-search-input {
|
|
39
|
+
--_toolbar-search-input--width: var(--sc-kit--toolbar-search-input--width, 12.5rem);
|
|
40
|
+
--sc-kit--input--root--font-size: 0.875rem;
|
|
41
|
+
--sc-kit--input--width: 1.75rem;
|
|
42
|
+
--sc-kit--input--height: 1.75rem;
|
|
43
|
+
--sc-kit--input--icon--color: var(--sc-color--text-brand, #5a8dec);
|
|
44
|
+
--sc-kit--input--accent-color: transparent;
|
|
45
|
+
}
|
|
46
|
+
.toolbar-search-input--expanded {
|
|
47
|
+
--sc-kit--input--width: var(--_toolbar-search-input--width);
|
|
48
|
+
--sc-kit--input--icon--color: initial;
|
|
49
|
+
}</style>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
type Props = {
|
|
2
|
+
value: string;
|
|
3
|
+
placeholder?: string;
|
|
4
|
+
/** Debounce delay in ms @default 0 */
|
|
5
|
+
debounce?: number;
|
|
6
|
+
on?: {
|
|
7
|
+
input?: (value: string) => void;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* A collapsible search input for toolbars. Expands when focused or when value is present.
|
|
12
|
+
*
|
|
13
|
+
* ### CSS Custom Properties
|
|
14
|
+
* | Property | Description | Default |
|
|
15
|
+
* |---|---|---|
|
|
16
|
+
* | `--sc-kit--toolbar-search-input--width` | Expanded width | `12.5rem` |
|
|
17
|
+
*/
|
|
18
|
+
declare const Cmp: import("svelte").Component<Props, {}, "">;
|
|
19
|
+
type Cmp = ReturnType<typeof Cmp>;
|
|
20
|
+
export default Cmp;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<script lang="ts" generics="T extends string | number">import { LocalStorageItem } from '../../core/local-storage';
|
|
2
|
+
import { SegmentedControl } from '../segmented-control';
|
|
3
|
+
import { untrack } from 'svelte';
|
|
4
|
+
const { segments, selected, localStorageKey, on } = $props();
|
|
5
|
+
let storage = null;
|
|
6
|
+
// One-time init: load from localStorage
|
|
7
|
+
$effect(() => untrack(() => {
|
|
8
|
+
if (!localStorageKey) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
storage = LocalStorageItem.of(localStorageKey);
|
|
12
|
+
const saved = storage.get();
|
|
13
|
+
if (saved !== null && segments.some((s) => s.id === saved)) {
|
|
14
|
+
on?.change?.(saved);
|
|
15
|
+
}
|
|
16
|
+
}));
|
|
17
|
+
const handleChange = (id) => {
|
|
18
|
+
storage?.set(id);
|
|
19
|
+
on?.change?.(id);
|
|
20
|
+
};
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
<div class="toolbar-segmented-control">
|
|
24
|
+
<SegmentedControl segments={segments} selected={selected} on={{ change: handleChange }} />
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
<!--
|
|
28
|
+
@component
|
|
29
|
+
A segmented control styled for toolbar use with optional localStorage persistence.
|
|
30
|
+
Wraps SegmentedControl with toolbar-specific sizing (28px height, 10px font, 4px radius).
|
|
31
|
+
-->
|
|
32
|
+
|
|
33
|
+
<style>.toolbar-segmented-control {
|
|
34
|
+
--sc-kit--segmented-control--height: 1.75rem;
|
|
35
|
+
--sc-kit--segmented-control--label--font-size: 0.625rem;
|
|
36
|
+
--sc-kit--segmented-control--border-radius: 0.25rem;
|
|
37
|
+
--sc-kit--segmented-control--selected--background: var(--sc-color--bg-menu-active, light-dark(#f1f6fd, #2c2c2c));
|
|
38
|
+
--sc-kit--segmented-control--selected--box-shadow: inset 0px 1.5px 0px 0px rgba(255, 255, 255, 0.3);
|
|
39
|
+
--sc-kit--segmented-control--border-color: var(--sc-color--border-primary, light-dark(#f2f2f3, #1e1e1e));
|
|
40
|
+
}</style>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
declare function $$render<T extends string | number>(): {
|
|
2
|
+
props: {
|
|
3
|
+
segments: {
|
|
4
|
+
id: T;
|
|
5
|
+
label: string;
|
|
6
|
+
}[];
|
|
7
|
+
selected: T;
|
|
8
|
+
/** localStorage key for persisting selection */
|
|
9
|
+
localStorageKey?: string;
|
|
10
|
+
on?: {
|
|
11
|
+
change?: (id: T) => void;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
exports: {};
|
|
15
|
+
bindings: "";
|
|
16
|
+
slots: {};
|
|
17
|
+
events: {};
|
|
18
|
+
};
|
|
19
|
+
declare class __sveltets_Render<T extends string | number> {
|
|
20
|
+
props(): ReturnType<typeof $$render<T>>['props'];
|
|
21
|
+
events(): ReturnType<typeof $$render<T>>['events'];
|
|
22
|
+
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
23
|
+
bindings(): "";
|
|
24
|
+
exports(): {};
|
|
25
|
+
}
|
|
26
|
+
interface $$IsomorphicComponent {
|
|
27
|
+
new <T extends string | number>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
|
|
28
|
+
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
29
|
+
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
30
|
+
<T extends string | number>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
31
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* A segmented control styled for toolbar use with optional localStorage persistence.
|
|
35
|
+
* Wraps SegmentedControl with toolbar-specific sizing (28px height, 10px font, 4px radius).
|
|
36
|
+
*/
|
|
37
|
+
declare const Cmp: $$IsomorphicComponent;
|
|
38
|
+
type Cmp<T extends string | number> = InstanceType<typeof Cmp<T>>;
|
|
39
|
+
export default Cmp;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<script lang="ts" generics="T extends string | number">import { SegmentedControl } from '../segmented-control';
|
|
2
|
+
const { segments, selected, children, on } = $props();
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<div class="toolbar-switch-item">
|
|
6
|
+
<div class="toolbar-switch-item__label">
|
|
7
|
+
{@render children()}
|
|
8
|
+
</div>
|
|
9
|
+
<div class="toolbar-switch-item__switch">
|
|
10
|
+
<SegmentedControl segments={segments} selected={selected} on={{ change: (id) => on?.change?.(id) }} />
|
|
11
|
+
</div>
|
|
12
|
+
</div>
|
|
13
|
+
|
|
14
|
+
<!--
|
|
15
|
+
@component
|
|
16
|
+
A switch item for toolbar panels. Shows a label on the left and a segmented control on the right.
|
|
17
|
+
|
|
18
|
+
### CSS Custom Properties
|
|
19
|
+
| Property | Description | Default |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| `--sc-kit--toolbar-switch-item--label--color` | Label text color | `var(--sc-color--text-primary, light-dark(black, white))` |
|
|
22
|
+
-->
|
|
23
|
+
|
|
24
|
+
<style>.toolbar-switch-item {
|
|
25
|
+
--_toolbar-switch-item--label--color: var(
|
|
26
|
+
--sc-kit--toolbar-switch-item--label--color,
|
|
27
|
+
var(--sc-color--text-primary, light-dark(#000000, #ffffff))
|
|
28
|
+
);
|
|
29
|
+
display: flex;
|
|
30
|
+
align-items: center;
|
|
31
|
+
justify-content: space-between;
|
|
32
|
+
gap: 0.5rem;
|
|
33
|
+
padding: 0.25rem 0.5rem;
|
|
34
|
+
}
|
|
35
|
+
.toolbar-switch-item__label {
|
|
36
|
+
font-size: 0.875rem;
|
|
37
|
+
font-weight: 400;
|
|
38
|
+
line-height: 1.25rem;
|
|
39
|
+
color: var(--_toolbar-switch-item--label--color);
|
|
40
|
+
min-width: 0;
|
|
41
|
+
text-overflow: ellipsis;
|
|
42
|
+
max-width: 100%;
|
|
43
|
+
white-space: nowrap;
|
|
44
|
+
overflow: hidden;
|
|
45
|
+
}
|
|
46
|
+
.toolbar-switch-item__switch {
|
|
47
|
+
flex-shrink: 0;
|
|
48
|
+
--sc-kit--segmented-control--border-radius: 0.375rem;
|
|
49
|
+
--sc-kit--segmented-control--selected--background: var(--sc-color--bg-brand, #144ab0);
|
|
50
|
+
--sc-kit--segmented-control--selected--color: #ffffff;
|
|
51
|
+
}</style>
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
declare function $$render<T extends string | number>(): {
|
|
3
|
+
props: {
|
|
4
|
+
segments: {
|
|
5
|
+
id: T;
|
|
6
|
+
label: string;
|
|
7
|
+
}[];
|
|
8
|
+
selected: T;
|
|
9
|
+
children: Snippet;
|
|
10
|
+
on?: {
|
|
11
|
+
change?: (id: T) => void;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
exports: {};
|
|
15
|
+
bindings: "";
|
|
16
|
+
slots: {};
|
|
17
|
+
events: {};
|
|
18
|
+
};
|
|
19
|
+
declare class __sveltets_Render<T extends string | number> {
|
|
20
|
+
props(): ReturnType<typeof $$render<T>>['props'];
|
|
21
|
+
events(): ReturnType<typeof $$render<T>>['events'];
|
|
22
|
+
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
23
|
+
bindings(): "";
|
|
24
|
+
exports(): {};
|
|
25
|
+
}
|
|
26
|
+
interface $$IsomorphicComponent {
|
|
27
|
+
new <T extends string | number>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
|
|
28
|
+
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
29
|
+
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
30
|
+
<T extends string | number>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
31
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* A switch item for toolbar panels. Shows a label on the left and a segmented control on the right.
|
|
35
|
+
*
|
|
36
|
+
* ### CSS Custom Properties
|
|
37
|
+
* | Property | Description | Default |
|
|
38
|
+
* |---|---|---|
|
|
39
|
+
* | `--sc-kit--toolbar-switch-item--label--color` | Label text color | `var(--sc-color--text-primary, light-dark(black, white))` |
|
|
40
|
+
*/
|
|
41
|
+
declare const Cmp: $$IsomorphicComponent;
|
|
42
|
+
type Cmp<T extends string | number> = InstanceType<typeof Cmp<T>>;
|
|
43
|
+
export default Cmp;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<script lang="ts">import { Toggle } from '../toggle';
|
|
2
|
+
const { isOn, children, on } = $props();
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<div class="toolbar-toggle-item">
|
|
6
|
+
<div class="toolbar-toggle-item__label">
|
|
7
|
+
{@render children()}
|
|
8
|
+
</div>
|
|
9
|
+
<Toggle isOn={isOn} on={{ change: (value) => on?.change?.(value) }} />
|
|
10
|
+
</div>
|
|
11
|
+
|
|
12
|
+
<!--
|
|
13
|
+
@component
|
|
14
|
+
A toggle item for toolbar panels. Shows a label on the left and a toggle switch on the right.
|
|
15
|
+
|
|
16
|
+
### CSS Custom Properties
|
|
17
|
+
| Property | Description | Default |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| `--sc-kit--toolbar-toggle-item--label--color` | Label text color | `var(--sc-color--text-primary, light-dark(black, white))` |
|
|
20
|
+
-->
|
|
21
|
+
|
|
22
|
+
<style>.toolbar-toggle-item {
|
|
23
|
+
--_toolbar-toggle-item--label--color: var(
|
|
24
|
+
--sc-kit--toolbar-toggle-item--label--color,
|
|
25
|
+
var(--sc-color--text-primary, light-dark(#000000, #ffffff))
|
|
26
|
+
);
|
|
27
|
+
display: flex;
|
|
28
|
+
align-items: center;
|
|
29
|
+
justify-content: space-between;
|
|
30
|
+
gap: 0.5rem;
|
|
31
|
+
padding: 0.25rem 0.5rem;
|
|
32
|
+
--sc-kit--toggle--switch--height: 1.125rem;
|
|
33
|
+
--sc-kit--toggle--switch--width: 2.3125rem;
|
|
34
|
+
}
|
|
35
|
+
.toolbar-toggle-item__label {
|
|
36
|
+
font-size: 0.875rem;
|
|
37
|
+
font-weight: 400;
|
|
38
|
+
line-height: 1.25rem;
|
|
39
|
+
color: var(--_toolbar-toggle-item--label--color);
|
|
40
|
+
min-width: 0;
|
|
41
|
+
text-overflow: ellipsis;
|
|
42
|
+
max-width: 100%;
|
|
43
|
+
white-space: nowrap;
|
|
44
|
+
overflow: hidden;
|
|
45
|
+
}</style>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
type Props = {
|
|
3
|
+
isOn: boolean;
|
|
4
|
+
children: Snippet;
|
|
5
|
+
on?: {
|
|
6
|
+
change?: (value: boolean) => void;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* A toggle item for toolbar panels. Shows a label on the left and a toggle switch on the right.
|
|
11
|
+
*
|
|
12
|
+
* ### CSS Custom Properties
|
|
13
|
+
* | Property | Description | Default |
|
|
14
|
+
* |---|---|---|
|
|
15
|
+
* | `--sc-kit--toolbar-toggle-item--label--color` | Label text color | `var(--sc-color--text-primary, light-dark(black, white))` |
|
|
16
|
+
*/
|
|
17
|
+
declare const Cmp: import("svelte").Component<Props, {}, "">;
|
|
18
|
+
type Cmp = ReturnType<typeof Cmp>;
|
|
19
|
+
export default Cmp;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { default as ReorderableToggleList } from './cmp.reorderable-toggle-list.svelte';
|
|
2
|
+
export { default as ToolbarButtonItem } from './cmp.toolbar-button-item.svelte';
|
|
3
|
+
export { default as ToolbarCheckboxItem } from './cmp.toolbar-checkbox-item.svelte';
|
|
4
|
+
export { default as ToolbarDropdown } from './cmp.toolbar-dropdown.svelte';
|
|
5
|
+
export { default as ToolbarPanel } from './cmp.toolbar-panel.svelte';
|
|
6
|
+
export { default as ToolbarSearchInput } from './cmp.toolbar-search-input.svelte';
|
|
7
|
+
export { default as ToolbarSegmentedControl } from './cmp.toolbar-segmented-control.svelte';
|
|
8
|
+
export { default as ToolbarSwitchItem } from './cmp.toolbar-switch-item.svelte';
|
|
9
|
+
export { default as ToolbarToggleItem } from './cmp.toolbar-toggle-item.svelte';
|
|
10
|
+
export type { ReorderableToggleItem } from './types';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { default as ReorderableToggleList } from './cmp.reorderable-toggle-list.svelte';
|
|
2
|
+
export { default as ToolbarButtonItem } from './cmp.toolbar-button-item.svelte';
|
|
3
|
+
export { default as ToolbarCheckboxItem } from './cmp.toolbar-checkbox-item.svelte';
|
|
4
|
+
export { default as ToolbarDropdown } from './cmp.toolbar-dropdown.svelte';
|
|
5
|
+
export { default as ToolbarPanel } from './cmp.toolbar-panel.svelte';
|
|
6
|
+
export { default as ToolbarSearchInput } from './cmp.toolbar-search-input.svelte';
|
|
7
|
+
export { default as ToolbarSegmentedControl } from './cmp.toolbar-segmented-control.svelte';
|
|
8
|
+
export { default as ToolbarSwitchItem } from './cmp.toolbar-switch-item.svelte';
|
|
9
|
+
export { default as ToolbarToggleItem } from './cmp.toolbar-toggle-item.svelte';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -284,6 +284,10 @@ A horizontal slide carousel with infinite looping, touch swipe support, keyboard
|
|
|
284
284
|
| `--sc-kit--carousel--dot-color` | Dot indicator color (fill when active, border when inactive) | `white` |
|
|
285
285
|
| `--sc-kit--carousel--dot-size` | Dot indicator diameter | `0.5rem` |
|
|
286
286
|
| `--sc-kit--carousel--text-color` | Arrow button icon and counter text color | `white` |
|
|
287
|
+
| `--sc-kit--carousel--counts--font-size` | Counter text font size | `0.9375rem` |
|
|
288
|
+
| `--sc-kit--carousel--counts--width` | Counter container width | `5.625rem` |
|
|
289
|
+
| `--sc-kit--carousel--counts--text-shadow` | Counter text shadow | `0 1px 0/3px/6px rgba(0,0,0,...)` |
|
|
290
|
+
| `--sc-kit--carousel--navigation-button--size` | Navigation button width and height | `1.875rem` |
|
|
287
291
|
-->
|
|
288
292
|
|
|
289
293
|
<style>@charset "UTF-8";
|
|
@@ -293,6 +297,15 @@ A horizontal slide carousel with infinite looping, touch swipe support, keyboard
|
|
|
293
297
|
--_carousel--dot-color: var(--sc-kit--carousel--dot-color, #ffffff);
|
|
294
298
|
--_carousel--dot-size: var(--sc-kit--carousel--dot-size, 0.5rem);
|
|
295
299
|
--_carousel--text-color: var(--sc-kit--carousel--text-color, #ffffff);
|
|
300
|
+
--_carousel--counts--font-size: var(--sc-kit--carousel--counts--font-size, 0.9375rem);
|
|
301
|
+
--_carousel--counts--width: var(--sc-kit--carousel--counts--width, 5.625rem);
|
|
302
|
+
--_carousel--counts--text-shadow: var(
|
|
303
|
+
--sc-kit--carousel--counts--text-shadow,
|
|
304
|
+
0 1px 0 rgba(0, 0, 0, 0.1),
|
|
305
|
+
0 1px 3px rgba(0, 0, 0, 0.1),
|
|
306
|
+
0 1px 6px rgba(0, 0, 0, 0.05)
|
|
307
|
+
);
|
|
308
|
+
--_carousel--navigation-button--size: var(--sc-kit--carousel--navigation-button--size, 1.875rem);
|
|
296
309
|
--_carousel--animation: var(--carousel--animation);
|
|
297
310
|
/* Mode control — overridden by modifiers */
|
|
298
311
|
--_carousel--nav-display: block;
|
|
@@ -375,8 +388,8 @@ A horizontal slide carousel with infinite looping, touch swipe support, keyboard
|
|
|
375
388
|
.carousel__navigation-button {
|
|
376
389
|
display: var(--_carousel--nav-display);
|
|
377
390
|
font-size: 0.75rem;
|
|
378
|
-
width:
|
|
379
|
-
height:
|
|
391
|
+
width: var(--_carousel--navigation-button--size);
|
|
392
|
+
height: var(--_carousel--navigation-button--size);
|
|
380
393
|
background-color: var(--_carousel--button-color);
|
|
381
394
|
border-radius: 50%;
|
|
382
395
|
text-align: center;
|
|
@@ -387,9 +400,8 @@ A horizontal slide carousel with infinite looping, touch swipe support, keyboard
|
|
|
387
400
|
opacity: var(--_carousel--nav-opacity);
|
|
388
401
|
visibility: var(--_carousel--nav-visibility);
|
|
389
402
|
transition: opacity 0.2s, visibility 0.2s;
|
|
390
|
-
/* Set 'container-type: inline-size;' to reference container*/
|
|
391
403
|
}
|
|
392
|
-
@
|
|
404
|
+
@media screen and (max-width: 768px) {
|
|
393
405
|
.carousel__navigation-button {
|
|
394
406
|
opacity: 1;
|
|
395
407
|
visibility: visible;
|
|
@@ -417,12 +429,12 @@ A horizontal slide carousel with infinite looping, touch swipe support, keyboard
|
|
|
417
429
|
z-index: 1;
|
|
418
430
|
}
|
|
419
431
|
.carousel__counts {
|
|
420
|
-
font-size:
|
|
432
|
+
font-size: var(--_carousel--counts--font-size);
|
|
421
433
|
font-weight: 300;
|
|
422
|
-
width:
|
|
434
|
+
width: var(--_carousel--counts--width);
|
|
423
435
|
text-align: center;
|
|
424
436
|
color: var(--_carousel--text-color);
|
|
425
|
-
text-shadow:
|
|
437
|
+
text-shadow: var(--_carousel--counts--text-shadow);
|
|
426
438
|
}
|
|
427
439
|
.carousel__counts-navigation-button {
|
|
428
440
|
font-size: 0.75rem;
|
|
@@ -440,10 +452,7 @@ A horizontal slide carousel with infinite looping, touch swipe support, keyboard
|
|
|
440
452
|
opacity: 0.5;
|
|
441
453
|
cursor: default;
|
|
442
454
|
}
|
|
443
|
-
|
|
444
|
-
/* Set 'container-type: inline-size;' to reference container*/
|
|
445
|
-
}
|
|
446
|
-
@container (width < 576px) {
|
|
455
|
+
@media screen and (max-width: 768px) {
|
|
447
456
|
.carousel__counts-navigation-button {
|
|
448
457
|
opacity: 1;
|
|
449
458
|
visibility: visible;
|
|
@@ -52,6 +52,10 @@ interface $$IsomorphicComponent {
|
|
|
52
52
|
* | `--sc-kit--carousel--dot-color` | Dot indicator color (fill when active, border when inactive) | `white` |
|
|
53
53
|
* | `--sc-kit--carousel--dot-size` | Dot indicator diameter | `0.5rem` |
|
|
54
54
|
* | `--sc-kit--carousel--text-color` | Arrow button icon and counter text color | `white` |
|
|
55
|
+
* | `--sc-kit--carousel--counts--font-size` | Counter text font size | `0.9375rem` |
|
|
56
|
+
* | `--sc-kit--carousel--counts--width` | Counter container width | `5.625rem` |
|
|
57
|
+
* | `--sc-kit--carousel--counts--text-shadow` | Counter text shadow | `0 1px 0/3px/6px rgba(0,0,0,...)` |
|
|
58
|
+
* | `--sc-kit--carousel--navigation-button--size` | Navigation button width and height | `1.875rem` |
|
|
55
59
|
*/
|
|
56
60
|
declare const Cmp: $$IsomorphicComponent;
|
|
57
61
|
type Cmp<T> = InstanceType<typeof Cmp<T>>;
|
|
@@ -121,14 +121,16 @@ A draggable media seek bar with a track, filled portion, and scrubber handle. Su
|
|
|
121
121
|
-->
|
|
122
122
|
|
|
123
123
|
<style>.seek-bar {
|
|
124
|
-
|
|
125
|
-
position: relative;
|
|
126
|
-
padding: 0.3125rem 0;
|
|
124
|
+
--_seek-bar--padding-block: var(--seek-bar--padding-block, 0.3125rem);
|
|
127
125
|
--_seek-bar--container-color: var(--sc-kit--seek-bar--container-color, #9ca3af);
|
|
128
126
|
--_seek-bar--value-color: var(--sc-kit--seek-bar--value-color, #ffffff);
|
|
129
127
|
--_seek-bar--scrubber-color: var(--sc-kit--seek-bar--scrubber-color, #ffffff);
|
|
130
128
|
--_seek-bar--scrubber-border-color: var(--sc-kit--seek-bar--scrubber-border-color, #9ca3af);
|
|
131
129
|
--_seek-bar--scrubber-opacity: 0;
|
|
130
|
+
cursor: pointer;
|
|
131
|
+
position: relative;
|
|
132
|
+
padding: var(--_seek-bar--padding-block) 0;
|
|
133
|
+
user-select: none;
|
|
132
134
|
}
|
|
133
135
|
.seek-bar:hover {
|
|
134
136
|
--_seek-bar--scrubber-opacity: 1;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
<script lang="ts" generics="T extends string | number">const { segments, selected, on } = $props();
|
|
2
|
+
</script>
|
|
3
|
+
|
|
4
|
+
<div class="segmented-control">
|
|
5
|
+
{#each segments as segment (segment.id)}
|
|
6
|
+
<button
|
|
7
|
+
type="button"
|
|
8
|
+
class="segmented-control__segment"
|
|
9
|
+
class:segmented-control__segment--selected={selected === segment.id}
|
|
10
|
+
onclick={() => on?.change?.(segment.id)}>
|
|
11
|
+
<span class="segmented-control__label">{segment.label}</span>
|
|
12
|
+
</button>
|
|
13
|
+
{/each}
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<!--
|
|
17
|
+
@component
|
|
18
|
+
A segmented control for switching between a set of options. Each segment is a button with a label.
|
|
19
|
+
|
|
20
|
+
### CSS Custom Properties
|
|
21
|
+
| Property | Description | Default |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
| `--sc-kit--segmented-control--root--font-size` | Base font size for em-based sizing | `1rem` |
|
|
24
|
+
| `--sc-kit--segmented-control--height` | Height of the control | `1.75em` |
|
|
25
|
+
| `--sc-kit--segmented-control--background` | Background color | `var(--sc-color--bg-button, light-dark(neutral-50, dark-600))` |
|
|
26
|
+
| `--sc-kit--segmented-control--border-color` | Border color | `var(--sc-color--border-primary, light-dark(neutral-100, dark-800))` |
|
|
27
|
+
| `--sc-kit--segmented-control--border-radius` | Border radius | `0.25em` |
|
|
28
|
+
| `--sc-kit--segmented-control--segment--padding-block` | Segment vertical padding | `0.25em` |
|
|
29
|
+
| `--sc-kit--segmented-control--segment--padding-inline` | Segment horizontal padding | `1.125em` |
|
|
30
|
+
| `--sc-kit--segmented-control--label--color` | Label text color | `var(--sc-color--text-primary, light-dark(black, white))` |
|
|
31
|
+
| `--sc-kit--segmented-control--label--font-size` | Label font size | `0.625em` |
|
|
32
|
+
| `--sc-kit--segmented-control--selected--background` | Selected segment background | `var(--sc-color--bg-menu-active, light-dark(primary-50, dark-400))` |
|
|
33
|
+
| `--sc-kit--segmented-control--selected--box-shadow` | Selected segment box shadow | `0px 1px 3px rgba(0,0,0,0.1)` |
|
|
34
|
+
| `--sc-kit--segmented-control--selected--color` | Selected segment text color | `var(--sc-color--text-primary, light-dark(black, white))` |
|
|
35
|
+
-->
|
|
36
|
+
|
|
37
|
+
<style>.segmented-control {
|
|
38
|
+
--_segmented-control--root--font-size: var(--sc-kit--segmented-control--root--font-size, 1rem);
|
|
39
|
+
--_segmented-control--height: var(--sc-kit--segmented-control--height, 1.75em);
|
|
40
|
+
--_segmented-control--background: var(
|
|
41
|
+
--sc-kit--segmented-control--background,
|
|
42
|
+
var(--sc-color--bg-button, light-dark(#f9fafb, #242424))
|
|
43
|
+
);
|
|
44
|
+
--_segmented-control--border-color: var(
|
|
45
|
+
--sc-kit--segmented-control--border-color,
|
|
46
|
+
var(--sc-color--border-primary, light-dark(#f2f2f3, #1e1e1e))
|
|
47
|
+
);
|
|
48
|
+
--_segmented-control--border-radius: var(--sc-kit--segmented-control--border-radius, 0.25em);
|
|
49
|
+
--_segmented-control--segment--padding-block: var(--sc-kit--segmented-control--segment--padding-block, 0.25em);
|
|
50
|
+
--_segmented-control--segment--padding-inline: var(--sc-kit--segmented-control--segment--padding-inline, 1.125em);
|
|
51
|
+
--_segmented-control--label--color: var(
|
|
52
|
+
--sc-kit--segmented-control--label--color,
|
|
53
|
+
var(--sc-color--text-primary, light-dark(#000000, #ffffff))
|
|
54
|
+
);
|
|
55
|
+
--_segmented-control--label--font-size: var(--sc-kit--segmented-control--label--font-size, 0.625em);
|
|
56
|
+
--_segmented-control--selected--background: var(
|
|
57
|
+
--sc-kit--segmented-control--selected--background,
|
|
58
|
+
var(--sc-color--bg-menu-active, light-dark(#f1f6fd, #2c2c2c))
|
|
59
|
+
);
|
|
60
|
+
--_segmented-control--selected--box-shadow: var(
|
|
61
|
+
--sc-kit--segmented-control--selected--box-shadow,
|
|
62
|
+
0px 1px 3px var(--sc-color--box-shadow, rgba(0, 0, 0, 0.1))
|
|
63
|
+
);
|
|
64
|
+
--_segmented-control--selected--color: var(
|
|
65
|
+
--sc-kit--segmented-control--selected--color,
|
|
66
|
+
var(--sc-color--text-primary, light-dark(#000000, #ffffff))
|
|
67
|
+
);
|
|
68
|
+
display: flex;
|
|
69
|
+
width: 100%;
|
|
70
|
+
font-size: var(--_segmented-control--root--font-size);
|
|
71
|
+
height: var(--_segmented-control--height);
|
|
72
|
+
background: var(--_segmented-control--background);
|
|
73
|
+
border: 1px solid var(--_segmented-control--border-color);
|
|
74
|
+
border-radius: var(--_segmented-control--border-radius);
|
|
75
|
+
gap: 0.0313em;
|
|
76
|
+
overflow: hidden;
|
|
77
|
+
}
|
|
78
|
+
.segmented-control__segment {
|
|
79
|
+
color: var(--_segmented-control--label--color);
|
|
80
|
+
flex: 1;
|
|
81
|
+
display: flex;
|
|
82
|
+
flex-direction: column;
|
|
83
|
+
align-items: center;
|
|
84
|
+
justify-content: center;
|
|
85
|
+
padding: var(--_segmented-control--segment--padding-block) var(--_segmented-control--segment--padding-inline);
|
|
86
|
+
transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1), color 250ms cubic-bezier(0.4, 0, 0.2, 1), box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
87
|
+
}
|
|
88
|
+
.segmented-control__segment--selected {
|
|
89
|
+
box-shadow: var(--_segmented-control--selected--box-shadow);
|
|
90
|
+
}
|
|
91
|
+
.segmented-control__segment--selected, .segmented-control__segment:hover {
|
|
92
|
+
background: var(--_segmented-control--selected--background);
|
|
93
|
+
color: var(--_segmented-control--selected--color);
|
|
94
|
+
}
|
|
95
|
+
.segmented-control__label {
|
|
96
|
+
font-size: var(--_segmented-control--label--font-size);
|
|
97
|
+
}</style>
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
declare function $$render<T extends string | number>(): {
|
|
2
|
+
props: {
|
|
3
|
+
segments: {
|
|
4
|
+
id: T;
|
|
5
|
+
label: string;
|
|
6
|
+
}[];
|
|
7
|
+
selected: T;
|
|
8
|
+
on?: {
|
|
9
|
+
change?: (id: T) => void;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
exports: {};
|
|
13
|
+
bindings: "";
|
|
14
|
+
slots: {};
|
|
15
|
+
events: {};
|
|
16
|
+
};
|
|
17
|
+
declare class __sveltets_Render<T extends string | number> {
|
|
18
|
+
props(): ReturnType<typeof $$render<T>>['props'];
|
|
19
|
+
events(): ReturnType<typeof $$render<T>>['events'];
|
|
20
|
+
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
21
|
+
bindings(): "";
|
|
22
|
+
exports(): {};
|
|
23
|
+
}
|
|
24
|
+
interface $$IsomorphicComponent {
|
|
25
|
+
new <T extends string | number>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
|
|
26
|
+
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
27
|
+
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
28
|
+
<T extends string | number>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
29
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* A segmented control for switching between a set of options. Each segment is a button with a label.
|
|
33
|
+
*
|
|
34
|
+
* ### CSS Custom Properties
|
|
35
|
+
* | Property | Description | Default |
|
|
36
|
+
* |---|---|---|
|
|
37
|
+
* | `--sc-kit--segmented-control--root--font-size` | Base font size for em-based sizing | `1rem` |
|
|
38
|
+
* | `--sc-kit--segmented-control--height` | Height of the control | `1.75em` |
|
|
39
|
+
* | `--sc-kit--segmented-control--background` | Background color | `var(--sc-color--bg-button, light-dark(neutral-50, dark-600))` |
|
|
40
|
+
* | `--sc-kit--segmented-control--border-color` | Border color | `var(--sc-color--border-primary, light-dark(neutral-100, dark-800))` |
|
|
41
|
+
* | `--sc-kit--segmented-control--border-radius` | Border radius | `0.25em` |
|
|
42
|
+
* | `--sc-kit--segmented-control--segment--padding-block` | Segment vertical padding | `0.25em` |
|
|
43
|
+
* | `--sc-kit--segmented-control--segment--padding-inline` | Segment horizontal padding | `1.125em` |
|
|
44
|
+
* | `--sc-kit--segmented-control--label--color` | Label text color | `var(--sc-color--text-primary, light-dark(black, white))` |
|
|
45
|
+
* | `--sc-kit--segmented-control--label--font-size` | Label font size | `0.625em` |
|
|
46
|
+
* | `--sc-kit--segmented-control--selected--background` | Selected segment background | `var(--sc-color--bg-menu-active, light-dark(primary-50, dark-400))` |
|
|
47
|
+
* | `--sc-kit--segmented-control--selected--box-shadow` | Selected segment box shadow | `0px 1px 3px rgba(0,0,0,0.1)` |
|
|
48
|
+
* | `--sc-kit--segmented-control--selected--color` | Selected segment text color | `var(--sc-color--text-primary, light-dark(black, white))` |
|
|
49
|
+
*/
|
|
50
|
+
declare const Cmp: $$IsomorphicComponent;
|
|
51
|
+
type Cmp<T extends string | number> = InstanceType<typeof Cmp<T>>;
|
|
52
|
+
export default Cmp;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as SegmentedControl } from './cmp.segmented-control.svelte';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as SegmentedControl } from './cmp.segmented-control.svelte';
|
|
@@ -6,11 +6,13 @@ import { IconText } from '../icon-text';
|
|
|
6
6
|
import { Placeholder } from '../placeholder';
|
|
7
7
|
import { TableActionsCell, TableBadgeCell, TableButtonCell, TableByCell, TableCheckboxCell, TableHideableCell, TableIconCell, TableImageCell, TableMoveRowCell, TableCustomCell, TableSelectCell, TableTextCell, TableTextInputCell } from './table-cells';
|
|
8
8
|
import { ResolvedColumn } from './table-column-models.svelte';
|
|
9
|
+
import { TableLocalization } from './table-localization';
|
|
9
10
|
import IconReorderDotsHorizontal from '@fluentui/svg-icons/icons/re_order_dots_horizontal_20_regular.svg?raw';
|
|
10
11
|
import { untrack } from 'svelte';
|
|
11
12
|
import { flip } from 'svelte/animate';
|
|
12
13
|
import { dndzone } from 'svelte-dnd-action';
|
|
13
14
|
let { model, rowsDraggable = false, showPlaceholder = false, showAlternativeView = false, on, alternativeView, placeholderRow, customNoItemsPlaceholder } = $props();
|
|
15
|
+
const localization = new TableLocalization();
|
|
14
16
|
let showNoItemsPlaceholder = $state(false);
|
|
15
17
|
let showNoItemsTimeout = 0;
|
|
16
18
|
let showNoItemsPlaceholderFn = null;
|
|
@@ -151,7 +153,7 @@ const getEditorColumnOrDefault = (column, editMode) => {
|
|
|
151
153
|
{:else if customNoItemsPlaceholder}
|
|
152
154
|
{@render customNoItemsPlaceholder()}
|
|
153
155
|
{:else}
|
|
154
|
-
<Placeholder imageSrc="/placeholders/default.svg" title=
|
|
156
|
+
<Placeholder imageSrc="/placeholders/default.svg" title={localization.noItemsFoundTitle} body={localization.noItemsFoundBody} />
|
|
155
157
|
{/if}
|
|
156
158
|
</div>
|
|
157
159
|
</td>
|
|
@@ -164,8 +166,8 @@ const getEditorColumnOrDefault = (column, editMode) => {
|
|
|
164
166
|
{#if anyVisibleItemActions(item)}
|
|
165
167
|
{#if editMode}
|
|
166
168
|
<div class="table__save-cancel">
|
|
167
|
-
<Button size="small" variant="transparent-success" on={{ click: () => on?.saveChanges?.(item) }}>
|
|
168
|
-
<Button size="small" variant="gray" on={{ click: () => on?.cancelChanges?.() }}>
|
|
169
|
+
<Button size="small" variant="transparent-success" on={{ click: () => on?.saveChanges?.(item) }}>{localization.save}</Button>
|
|
170
|
+
<Button size="small" variant="gray" on={{ click: () => on?.cancelChanges?.() }}>{localization.cancel}</Button>
|
|
169
171
|
</div>
|
|
170
172
|
{:else}
|
|
171
173
|
<TableActionsCell dropdownPosition={model.styles?.actionsDropdownTopDirection ? 'top' : 'bottom'}>
|