@streamscloud/kit 0.16.2 → 0.18.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 (113) hide show
  1. package/dist/styles/_semantic.scss +3 -0
  2. package/dist/ui/badge/cmp.badge.svelte +4 -0
  3. package/dist/ui/badge/cmp.badge.svelte.d.ts +1 -0
  4. package/dist/ui/button/cmp.button.svelte +6 -2
  5. package/dist/ui/button/cmp.button.svelte.d.ts +1 -1
  6. package/dist/ui/date-picker/cmp.date-picker.svelte +21 -18
  7. package/dist/ui/date-picker/cmp.date-picker.svelte.d.ts +1 -1
  8. package/dist/ui/form-field/cmp.form-field-validatable.svelte +1 -1
  9. package/dist/ui/form-field/cmp.form-field-validatable.svelte.d.ts +1 -1
  10. package/dist/ui/input/cmp.input.svelte +21 -18
  11. package/dist/ui/input/cmp.input.svelte.d.ts +1 -1
  12. package/dist/ui/numeral-input/cmp.numeral-input.svelte +21 -18
  13. package/dist/ui/numeral-input/cmp.numeral-input.svelte.d.ts +1 -1
  14. package/dist/ui/page-toolbar/cmp.reorderable-checkbox-list.svelte +131 -0
  15. package/dist/ui/page-toolbar/cmp.reorderable-checkbox-list.svelte.d.ts +31 -0
  16. package/dist/ui/page-toolbar/cmp.toolbar-checkbox.svelte +14 -0
  17. package/dist/ui/page-toolbar/cmp.toolbar-checkbox.svelte.d.ts +19 -0
  18. package/dist/ui/page-toolbar/cmp.toolbar-divider.svelte +19 -0
  19. package/dist/ui/page-toolbar/cmp.toolbar-divider.svelte.d.ts +35 -0
  20. package/dist/ui/page-toolbar/cmp.toolbar-filter-select.svelte +143 -0
  21. package/dist/ui/page-toolbar/cmp.toolbar-filter-select.svelte.d.ts +68 -0
  22. package/dist/ui/page-toolbar/cmp.toolbar-icon-button.svelte +71 -0
  23. package/dist/ui/page-toolbar/cmp.toolbar-icon-button.svelte.d.ts +32 -0
  24. package/dist/ui/page-toolbar/cmp.toolbar-option.svelte +189 -0
  25. package/dist/ui/page-toolbar/cmp.toolbar-option.svelte.d.ts +47 -0
  26. package/dist/ui/page-toolbar/cmp.toolbar-popover.svelte +23 -8
  27. package/dist/ui/page-toolbar/cmp.toolbar-popover.svelte.d.ts +14 -6
  28. package/dist/ui/page-toolbar/cmp.toolbar-section-title.svelte +46 -0
  29. package/dist/ui/page-toolbar/cmp.toolbar-section-title.svelte.d.ts +24 -0
  30. package/dist/ui/page-toolbar/cmp.toolbar-sort-select.svelte +31 -0
  31. package/dist/ui/page-toolbar/cmp.toolbar-sort-select.svelte.d.ts +44 -0
  32. package/dist/ui/page-toolbar/{cmp.toolbar-switch-item.svelte → cmp.toolbar-switch.svelte} +10 -10
  33. package/dist/ui/page-toolbar/{cmp.toolbar-switch-item.svelte.d.ts → cmp.toolbar-switch.svelte.d.ts} +2 -2
  34. package/dist/ui/page-toolbar/cmp.toolbar-toggle.svelte +14 -0
  35. package/dist/ui/page-toolbar/cmp.toolbar-toggle.svelte.d.ts +19 -0
  36. package/dist/ui/page-toolbar/cmp.toolbar-value-stepper.svelte +4 -1
  37. package/dist/ui/page-toolbar/cmp.toolbar-view-controls.svelte +51 -0
  38. package/dist/ui/page-toolbar/cmp.toolbar-view-controls.svelte.d.ts +27 -0
  39. package/dist/ui/page-toolbar/index.d.ts +12 -7
  40. package/dist/ui/page-toolbar/index.js +11 -6
  41. package/dist/ui/page-toolbar/reorderable-checkbox-list-localization.d.ts +5 -0
  42. package/dist/ui/page-toolbar/reorderable-checkbox-list-localization.js +17 -0
  43. package/dist/ui/page-toolbar/toolbar-filter-select-localization.d.ts +5 -0
  44. package/dist/ui/page-toolbar/toolbar-filter-select-localization.js +20 -0
  45. package/dist/ui/page-toolbar/toolbar-sort-select-localization.d.ts +3 -0
  46. package/dist/ui/page-toolbar/toolbar-sort-select-localization.js +9 -0
  47. package/dist/ui/page-toolbar/toolbar-view-controls-localization.d.ts +5 -0
  48. package/dist/ui/page-toolbar/toolbar-view-controls-localization.js +17 -0
  49. package/dist/ui/page-toolbar/types.d.ts +1 -1
  50. package/dist/ui/rich-text-input/cmp.rich-text-input.svelte +9 -6
  51. package/dist/ui/rich-text-input/cmp.rich-text-input.svelte.d.ts +1 -1
  52. package/dist/ui/segmented-control/cmp.segmented-control.svelte +4 -2
  53. package/dist/ui/segmented-control/cmp.segmented-control.svelte.d.ts +1 -1
  54. package/dist/ui/select/_select-trigger.scss +20 -17
  55. package/dist/ui/select/cmp.singleselect-async.svelte +20 -17
  56. package/dist/ui/select/index.d.ts +1 -0
  57. package/dist/ui/select/index.js +1 -0
  58. package/dist/ui/select/multiselect-base.svelte +21 -18
  59. package/dist/ui/select/select-listbox.svelte +11 -5
  60. package/dist/ui/select/select-listbox.svelte.d.ts +1 -1
  61. package/dist/ui/table/_table-styles.scss +156 -0
  62. package/dist/ui/table/cmp.table-draggable.svelte +338 -0
  63. package/dist/ui/table/cmp.table-draggable.svelte.d.ts +79 -0
  64. package/dist/ui/table/cmp.table.svelte +96 -265
  65. package/dist/ui/table/cmp.table.svelte.d.ts +16 -8
  66. package/dist/ui/table/index.d.ts +1 -0
  67. package/dist/ui/table/index.js +1 -0
  68. package/dist/ui/table/table-cells/index.d.ts +1 -12
  69. package/dist/ui/table/table-cells/index.js +1 -12
  70. package/dist/ui/table/table-cells/table-cell.svelte +77 -0
  71. package/dist/ui/table/table-cells/{table-select-cell.svelte.d.ts → table-cell.svelte.d.ts} +12 -6
  72. package/dist/ui/table/table-column-models.svelte.d.ts +1 -2
  73. package/dist/ui/table/table-column-models.svelte.js +0 -1
  74. package/dist/ui/table/table-columns-manager/cmp.table-columns-manager.svelte +20 -47
  75. package/dist/ui/table/table-columns-manager/cmp.table-columns-manager.svelte.d.ts +3 -7
  76. package/dist/ui/table/table-columns-manager/table-columns-manager-localization.d.ts +1 -1
  77. package/dist/ui/table/table-columns-manager/table-columns-manager-localization.js +7 -7
  78. package/dist/ui/table/table-localization.d.ts +0 -2
  79. package/dist/ui/table/table-localization.js +0 -14
  80. package/dist/ui/table/table-model.svelte.d.ts +2 -3
  81. package/dist/ui/table/table-model.svelte.js +5 -35
  82. package/dist/ui/table/table-view.svelte.d.ts +14 -0
  83. package/dist/ui/table/table-view.svelte.js +32 -0
  84. package/dist/ui/table/types.d.ts +5 -28
  85. package/dist/ui/textarea/cmp.textarea.svelte +17 -14
  86. package/dist/ui/textarea/cmp.textarea.svelte.d.ts +1 -1
  87. package/dist/ui/toggle/cmp.toggle.svelte +32 -26
  88. package/dist/ui/toggle/cmp.toggle.svelte.d.ts +2 -0
  89. package/dist/ui/tree/cmp.tree-node-view.svelte +7 -2
  90. package/dist/ui/tree/cmp.tree.svelte +9 -1
  91. package/dist/ui/tree/cmp.tree.svelte.d.ts +1 -1
  92. package/dist/ui/tree/tree-navigation.svelte.d.ts +2 -0
  93. package/dist/ui/tree/tree-navigation.svelte.js +3 -0
  94. package/dist/ui/validatable/cmp.validatable.svelte +5 -5
  95. package/dist/ui/validatable/cmp.validatable.svelte.d.ts +2 -2
  96. package/dist/ui/validatable/cmp.validation-error.svelte +4 -4
  97. package/dist/ui/validatable/cmp.validation-error.svelte.d.ts +1 -1
  98. package/dist/ui/validatable/{cmp.field-error.svelte → field-frame.svelte} +6 -6
  99. package/dist/ui/validatable/{cmp.field-error.svelte.d.ts → field-frame.svelte.d.ts} +4 -4
  100. package/package.json +1 -1
  101. package/dist/ui/page-toolbar/cmp.reorderable-toggle-list.svelte +0 -153
  102. package/dist/ui/page-toolbar/cmp.reorderable-toggle-list.svelte.d.ts +0 -20
  103. package/dist/ui/page-toolbar/cmp.toolbar-checkbox-item.svelte +0 -19
  104. package/dist/ui/page-toolbar/cmp.toolbar-checkbox-item.svelte.d.ts +0 -12
  105. package/dist/ui/page-toolbar/cmp.toolbar-panel-button.svelte +0 -42
  106. package/dist/ui/page-toolbar/cmp.toolbar-panel-button.svelte.d.ts +0 -20
  107. package/dist/ui/page-toolbar/cmp.toolbar-panel.svelte +0 -57
  108. package/dist/ui/page-toolbar/cmp.toolbar-panel.svelte.d.ts +0 -19
  109. package/dist/ui/page-toolbar/cmp.toolbar-toggle-item.svelte +0 -16
  110. package/dist/ui/page-toolbar/cmp.toolbar-toggle-item.svelte.d.ts +0 -12
  111. package/dist/ui/table/table-cells/table-select-cell.svelte +0 -28
  112. package/dist/ui/table/table-cells/table-text-input-cell.svelte +0 -69
  113. package/dist/ui/table/table-cells/table-text-input-cell.svelte.d.ts +0 -38
@@ -4,7 +4,15 @@ let { nodes, showSelectedCheckmark, children } = $props();
4
4
  const nodesComputed = $derived(nodes ? (Array.isArray(nodes) ? nodes : [nodes]) : []);
5
5
  const hideExpandIcon = $derived(nodesComputed.every((f) => !f.children.length));
6
6
  const nav = new TreeNavigation(() => nodesComputed);
7
+ const handleFocusIn = (e) => {
8
+ nav.focus();
9
+ nav.keyboardActive = e.currentTarget.matches(':focus-visible');
10
+ };
7
11
  const handleKeydown = (e) => {
12
+ // Only the container itself drives tree navigation; a focused descendant (e.g. the actions popover) keeps its own keys.
13
+ if (e.target !== e.currentTarget) {
14
+ return;
15
+ }
8
16
  nav.handleKeydown(e);
9
17
  // ArrowLeft collapses a subtree; if focus sat on a treeitem inside it, the unmount would drop focus
10
18
  // to <body> and arrow keys would die. Re-grab the container before the unmount so the single
@@ -20,7 +28,7 @@ const handleKeydown = (e) => {
20
28
  role="tree"
21
29
  tabindex="0"
22
30
  aria-activedescendant={nav.activeId ? `tree-item-${nav.activeId}` : undefined}
23
- onfocusin={() => nav.focus()}
31
+ onfocusin={handleFocusIn}
24
32
  onfocusout={(e) => {
25
33
  if (!(e.relatedTarget instanceof Node) || !e.currentTarget.contains(e.relatedTarget)) {
26
34
  nav.blur();
@@ -2,7 +2,7 @@ import type { TreeNode } from './tree-node.svelte';
2
2
  import type { Snippet } from 'svelte';
3
3
  type Props = {
4
4
  /** Root node, or array of root nodes. */
5
- nodes: TreeNode | TreeNode[];
5
+ nodes: TreeNode | readonly TreeNode[];
6
6
  /** Show a success checkmark on the selected node when it has no actions. */
7
7
  showSelectedCheckmark?: boolean;
8
8
  /** Optional content rendered above the nodes (e.g. a header). */
@@ -2,6 +2,8 @@ import type { TreeNode } from './tree-node.svelte';
2
2
  export declare class TreeNavigation {
3
3
  activeId: string | null;
4
4
  hasFocus: boolean;
5
+ /** True only while the active node was reached via keyboard — gates the focus ring (mouse selection shows background only). */
6
+ keyboardActive: boolean;
5
7
  private _getRoots;
6
8
  constructor(getRoots: () => readonly TreeNode[]);
7
9
  itemId(node: TreeNode): string;
@@ -1,6 +1,8 @@
1
1
  export class TreeNavigation {
2
2
  activeId = $state(null);
3
3
  hasFocus = $state(false);
4
+ /** True only while the active node was reached via keyboard — gates the focus ring (mouse selection shows background only). */
5
+ keyboardActive = $state(false);
4
6
  _getRoots;
5
7
  constructor(getRoots) {
6
8
  this._getRoots = getRoots;
@@ -31,6 +33,7 @@ export class TreeNavigation {
31
33
  if (!visible.length) {
32
34
  return;
33
35
  }
36
+ this.keyboardActive = true;
34
37
  const index = visible.findIndex((n) => n.id === this.activeId);
35
38
  const current = index < 0 ? null : visible[index];
36
39
  switch (e.key) {
@@ -2,8 +2,8 @@
2
2
  </script>
3
3
 
4
4
  <script lang="ts" generics="T extends Record<string, unknown>, K extends keyof T & string">import { Utils } from '../../core/utils';
5
- import { default as FieldError } from './cmp.field-error.svelte';
6
- let { handler, name, validateOn = ['input', 'change', 'blur'], debounceMs = 0, disableTouchedTracking = false, reserveErrorSpace = true, on, children } = $props();
5
+ import { default as FieldFrame } from './field-frame.svelte';
6
+ let { handler, name, validateOn = ['input', 'change', 'blur'], debounceMs = 0, disableTouchedTracking = false, reserveErrorSpace = false, on, children } = $props();
7
7
  // True between a value change and the next completed validation. Hides the stale error in the
8
8
  // UI without mutating handler.errors — the model keeps the last known result, the view just
9
9
  // doesn't trust it until the validator has caught up.
@@ -59,15 +59,15 @@ const field = $derived({
59
59
  });
60
60
  </script>
61
61
 
62
- <FieldError error={showErrors ? handler.errors[name] : null} reserveErrorSpace={reserveErrorSpace}>
62
+ <FieldFrame error={showErrors ? handler.errors[name] : null} reserveErrorSpace={reserveErrorSpace}>
63
63
  {@render children(field)}
64
- </FieldError>
64
+ </FieldFrame>
65
65
 
66
66
  <!--
67
67
  @component
68
68
  Binds a form field to any kit input via a render-prop snippet. The base inputs stay unchanged;
69
69
  `Validatable` is the only place that knows about `FormValidationHandler`. Wraps children in an
70
- internal `FieldError` frame that reserves space for the error message so toggling doesn't shift
70
+ internal `FieldFrame` that reserves space for the error message so toggling doesn't shift
71
71
  layout; `reserveErrorSpace={false}` drops the reserve — the message overlays content below.
72
72
 
73
73
  ### Usage
@@ -33,7 +33,7 @@ declare function $$render<T extends Record<string, unknown>, K extends keyof T &
33
33
  /**
34
34
  * Reserve space below the field for the error message. Turn off when a sibling must align to
35
35
  * the field's real bottom edge — the message then overlays whatever sits below the field.
36
- * @default true
36
+ * @default false
37
37
  */
38
38
  reserveErrorSpace?: boolean;
39
39
  /**
@@ -70,7 +70,7 @@ interface $$IsomorphicComponent {
70
70
  /**
71
71
  * Binds a form field to any kit input via a render-prop snippet. The base inputs stay unchanged;
72
72
  * `Validatable` is the only place that knows about `FormValidationHandler`. Wraps children in an
73
- * internal `FieldError` frame that reserves space for the error message so toggling doesn't shift
73
+ * internal `FieldFrame` that reserves space for the error message so toggling doesn't shift
74
74
  * layout; `reserveErrorSpace={false}` drops the reserve — the message overlays content below.
75
75
  *
76
76
  * ### Usage
@@ -1,11 +1,11 @@
1
- <script lang="ts" generics="T extends Record<string, unknown>">import { default as FieldError } from './cmp.field-error.svelte';
2
- let { name, validationResult, reserveErrorSpace = true, children } = $props();
1
+ <script lang="ts" generics="T extends Record<string, unknown>">import { default as FieldFrame } from './field-frame.svelte';
2
+ let { name, validationResult, reserveErrorSpace = false, children } = $props();
3
3
  const errorText = $derived(validationResult?.errors[name] ?? null);
4
4
  </script>
5
5
 
6
- <FieldError error={errorText} reserveErrorSpace={reserveErrorSpace}>
6
+ <FieldFrame error={errorText} reserveErrorSpace={reserveErrorSpace}>
7
7
  {@render children()}
8
- </FieldError>
8
+ </FieldFrame>
9
9
 
10
10
  <!--
11
11
  @component
@@ -9,7 +9,7 @@ declare function $$render<T extends Record<string, unknown>>(): {
9
9
  /**
10
10
  * Reserve space below the field for the error message. Turn off when a sibling must align to
11
11
  * the field's real bottom edge — the message then overlays whatever sits below the field.
12
- * @default true
12
+ * @default false
13
13
  */
14
14
  reserveErrorSpace?: boolean;
15
15
  children: Snippet;
@@ -1,11 +1,11 @@
1
- <script lang="ts">let { error, reserveErrorSpace = true, children } = $props();
1
+ <script lang="ts">let { error, reserveErrorSpace = false, children } = $props();
2
2
  export {};
3
3
  </script>
4
4
 
5
- <div class="field-error" class:field-error--errored={!!error} class:field-error--no-reserve={!reserveErrorSpace}>
5
+ <div class="field-frame" class:field-frame--errored={!!error} class:field-frame--no-reserve={!reserveErrorSpace}>
6
6
  {@render children()}
7
7
  {#if error}
8
- <small class="field-error__message">{error}</small>
8
+ <small class="field-frame__message">{error}</small>
9
9
  {/if}
10
10
  </div>
11
11
 
@@ -20,15 +20,15 @@ any other field-shaped kit consumer that needs the same visual contract).
20
20
  Not exported from `index.ts` — for kit-internal use only.
21
21
  -->
22
22
 
23
- <style>.field-error {
23
+ <style>.field-frame {
24
24
  position: relative;
25
25
  margin-bottom: 1.1em;
26
26
  display: block;
27
27
  }
28
- .field-error--no-reserve {
28
+ .field-frame--no-reserve {
29
29
  margin-bottom: 0;
30
30
  }
31
- .field-error__message {
31
+ .field-frame__message {
32
32
  position: absolute;
33
33
  top: calc(100% + 0.1em);
34
34
  left: 0;
@@ -2,7 +2,7 @@ import type { Snippet } from 'svelte';
2
2
  type Props = {
3
3
  /** Error message to display below the field. Falsy hides the message and the `--errored` flag. */
4
4
  error?: string | null | undefined;
5
- /** Reserve space below the field for the error message. Off drops the reserve — the message overlays content below. @default true */
5
+ /** Reserve space below the field for the error message. Off drops the reserve — the message overlays content below. @default false */
6
6
  reserveErrorSpace?: boolean;
7
7
  children: Snippet;
8
8
  };
@@ -15,6 +15,6 @@ type Props = {
15
15
  *
16
16
  * Not exported from `index.ts` — for kit-internal use only.
17
17
  */
18
- declare const Cmp: import("svelte").Component<Props, {}, "">;
19
- type Cmp = ReturnType<typeof Cmp>;
20
- export default Cmp;
18
+ declare const FieldFrame: import("svelte").Component<Props, {}, "">;
19
+ type FieldFrame = ReturnType<typeof FieldFrame>;
20
+ export default FieldFrame;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@streamscloud/kit",
3
- "version": "0.16.2",
3
+ "version": "0.18.0",
4
4
  "author": "StreamsCloud",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,153 +0,0 @@
1
- <script lang="ts">import { Icon } from '../icon';
2
- import { Toggle } from '../toggle';
3
- import IconReorderDotsVertical from '@fluentui/svg-icons/icons/re_order_dots_vertical_20_regular.svg?raw';
4
- import { flip } from 'svelte/animate';
5
- import { dndzone } from 'svelte-dnd-action';
6
- let { items, on } = $props();
7
- const reorderableItems = $derived(items.filter((i) => !i.fixed));
8
- const fixedItems = $derived(items.filter((i) => i.fixed));
9
- let dndItems = $state.raw([]);
10
- $effect(() => {
11
- dndItems = reorderableItems.map(({ id, label, enabled }) => ({ id, label, enabled }));
12
- });
13
- const flipDurationMs = 200;
14
- const emitChange = (reordered) => {
15
- const merged = [
16
- ...fixedItems.map(({ id, label, enabled, fixed }) => ({ id, label, enabled, fixed })),
17
- ...reordered.map(({ id, label, enabled }) => ({ id, label, enabled }))
18
- ];
19
- on.change(merged);
20
- };
21
- const handleConsider = (e) => {
22
- dndItems = e.detail.items;
23
- };
24
- const handleFinalize = (e) => {
25
- emitChange(e.detail.items);
26
- };
27
- const handleToggle = (id, enabled) => {
28
- emitChange(dndItems.map((i) => (i.id === id ? { ...i, enabled } : i)));
29
- };
30
- const handleFixedToggle = (id, enabled) => {
31
- const updatedFixed = fixedItems.map(({ id: fId, label, enabled: fEnabled, fixed }) => ({
32
- id: fId,
33
- label,
34
- enabled: fId === id ? enabled : fEnabled,
35
- fixed
36
- }));
37
- on.change([...updatedFixed, ...dndItems.map(({ id, label, enabled }) => ({ id, label, enabled }))]);
38
- };
39
- </script>
40
-
41
- <div class="reorderable-toggle-list">
42
- {#each fixedItems as item (item.id)}
43
- <div class="reorderable-toggle-list__item">
44
- <div class="reorderable-toggle-list__drag-handle reorderable-toggle-list__drag-handle--hidden">
45
- <Icon src={IconReorderDotsVertical} />
46
- </div>
47
- <div class="reorderable-toggle-list__label">
48
- {item.label}
49
- </div>
50
- <div class="reorderable-toggle-list__toggle">
51
- <Toggle
52
- checked={item.enabled}
53
- on={{
54
- change: (value) => handleFixedToggle(item.id, value)
55
- }} />
56
- </div>
57
- </div>
58
- {/each}
59
- <div
60
- class="reorderable-toggle-list__dnd"
61
- use:dndzone={{
62
- items: dndItems,
63
- dropTargetStyle: {},
64
- flipDurationMs,
65
- morphDisabled: true
66
- }}
67
- onconsider={handleConsider}
68
- onfinalize={handleFinalize}>
69
- {#each dndItems as item (item.id)}
70
- <div class="reorderable-toggle-list__item" animate:flip={{ duration: flipDurationMs }}>
71
- <div class="reorderable-toggle-list__drag-handle">
72
- <Icon src={IconReorderDotsVertical} />
73
- </div>
74
- <div class="reorderable-toggle-list__label">
75
- {item.label}
76
- </div>
77
- <div class="reorderable-toggle-list__toggle">
78
- <Toggle
79
- checked={item.enabled}
80
- on={{
81
- change: (value) => handleToggle(item.id, value)
82
- }} />
83
- </div>
84
- </div>
85
- {/each}
86
- </div>
87
- </div>
88
-
89
- <!--
90
- @component
91
- A reorderable list of toggle items with drag-and-drop support. Fixed items appear above the reorderable zone.
92
-
93
- ### CSS Custom Properties
94
- | Property | Description | Default |
95
- |---|---|---|
96
- | `--sc-kit--reorderable-toggle-list--label--color` | Label text color | `var(--sc-kit--color--text--primary)` |
97
- | `--sc-kit--reorderable-toggle-list--handle--color` | Drag handle icon color | `var(--sc-kit--color--text--secondary)` |
98
- | `--sc-kit--reorderable-toggle-list--handle--background` | Drag handle background | `var(--sc-kit--color--bg--element)` |
99
- -->
100
-
101
- <style>.reorderable-toggle-list {
102
- --_reorderable-toggle-list--label--color: var(--sc-kit--reorderable-toggle-list--label--color, var(--sc-kit--color--text--primary));
103
- --_reorderable-toggle-list--handle--color: var(--sc-kit--reorderable-toggle-list--handle--color, var(--sc-kit--color--text--secondary));
104
- --_reorderable-toggle-list--handle--background: var(--sc-kit--reorderable-toggle-list--handle--background, var(--sc-kit--color--bg--element));
105
- display: flex;
106
- flex-direction: column;
107
- gap: var(--sc-kit--space--3);
108
- }
109
- .reorderable-toggle-list__dnd {
110
- display: flex;
111
- flex-direction: column;
112
- gap: var(--sc-kit--space--3);
113
- }
114
- .reorderable-toggle-list__item {
115
- display: flex;
116
- align-items: center;
117
- gap: var(--sc-kit--space--3);
118
- padding: var(--sc-kit--space--1) var(--sc-kit--space--2);
119
- }
120
- .reorderable-toggle-list__drag-handle {
121
- --sc-kit--icon--size: 1rem;
122
- --sc-kit--icon--color: var(--_reorderable-toggle-list--handle--color);
123
- display: flex;
124
- align-items: center;
125
- justify-content: center;
126
- height: 1.375rem;
127
- padding-inline: 0.1875rem;
128
- border-radius: var(--sc-kit--radius--sm) 0 0 var(--sc-kit--radius--sm);
129
- cursor: grab;
130
- background: var(--_reorderable-toggle-list--handle--background);
131
- }
132
- .reorderable-toggle-list__drag-handle:active {
133
- cursor: grabbing;
134
- }
135
- .reorderable-toggle-list__drag-handle--hidden {
136
- visibility: hidden;
137
- }
138
- .reorderable-toggle-list__label {
139
- flex: 1;
140
- min-width: 0;
141
- font-size: var(--sc-kit--font-size--md);
142
- font-weight: var(--sc-kit--font-weight--regular);
143
- line-height: var(--sc-kit--line-height--md);
144
- color: var(--_reorderable-toggle-list--label--color);
145
- text-overflow: ellipsis;
146
- max-width: 100%;
147
- white-space: nowrap;
148
- overflow: hidden;
149
- }
150
- .reorderable-toggle-list__toggle {
151
- flex-shrink: 0;
152
- margin-left: auto;
153
- }</style>
@@ -1,20 +0,0 @@
1
- import type { ReorderableToggleItem } from './types';
2
- type Props = {
3
- items: ReorderableToggleItem[];
4
- on: {
5
- change: (items: ReorderableToggleItem[]) => void;
6
- };
7
- };
8
- /**
9
- * A reorderable list of toggle items with drag-and-drop support. Fixed items appear above the reorderable zone.
10
- *
11
- * ### CSS Custom Properties
12
- * | Property | Description | Default |
13
- * |---|---|---|
14
- * | `--sc-kit--reorderable-toggle-list--label--color` | Label text color | `var(--sc-kit--color--text--primary)` |
15
- * | `--sc-kit--reorderable-toggle-list--handle--color` | Drag handle icon color | `var(--sc-kit--color--text--secondary)` |
16
- * | `--sc-kit--reorderable-toggle-list--handle--background` | Drag handle background | `var(--sc-kit--color--bg--element)` |
17
- */
18
- declare const Cmp: import("svelte").Component<Props, {}, "">;
19
- type Cmp = ReturnType<typeof Cmp>;
20
- export default Cmp;
@@ -1,19 +0,0 @@
1
- <script lang="ts">import { Checkbox } from '../checkbox';
2
- const { checked, children, on } = $props();
3
- </script>
4
-
5
- <div class="toolbar-checkbox-item">
6
- <Checkbox checked={checked} label={children} on={{ change: (value) => on?.change?.(value) }} />
7
- </div>
8
-
9
- <!--
10
- @component
11
- A checkbox item for toolbar panels. Wraps the kit Checkbox with toolbar-appropriate sizing.
12
- -->
13
-
14
- <style>.toolbar-checkbox-item {
15
- padding: var(--sc-kit--space--1) var(--sc-kit--space--2);
16
- overflow: hidden;
17
- --sc-kit--checkbox--gap: var(--sc-kit--space--5);
18
- --sc-kit--checkbox--icon--size: 1.125rem;
19
- }</style>
@@ -1,12 +0,0 @@
1
- import type { Snippet } from 'svelte';
2
- type Props = {
3
- checked: boolean;
4
- children: Snippet;
5
- on?: {
6
- change?: (value: boolean) => void;
7
- };
8
- };
9
- /** A checkbox item for toolbar panels. Wraps the kit Checkbox with toolbar-appropriate sizing. */
10
- declare const Cmp: import("svelte").Component<Props, {}, "">;
11
- type Cmp = ReturnType<typeof Cmp>;
12
- export default Cmp;
@@ -1,42 +0,0 @@
1
- <script lang="ts">const { children, on } = $props();
2
- export {};
3
- </script>
4
-
5
- <button type="button" class="toolbar-panel-button" onclick={() => on?.click?.()}>
6
- {@render children()}
7
- </button>
8
-
9
- <!--
10
- @component
11
- A text-row button for toolbar panels / popovers (rendered inside `<ToolbarPanel>` / `<ToolbarPopover>`).
12
- For the toolbar's primary action area use `<ToolbarButton>` instead.
13
-
14
- ### CSS Custom Properties
15
- | Property | Description | Default |
16
- |---|---|---|
17
- | `--sc-kit--toolbar-panel-button--color` | Text color | `var(--sc-kit--color--text--primary)` |
18
- | `--sc-kit--toolbar-panel-button--color-hover` | Text color on hover | `var(--sc-kit--color--accent)` |
19
- -->
20
-
21
- <style>.toolbar-panel-button {
22
- --_toolbar-panel-button--color: var(--sc-kit--toolbar-panel-button--color, var(--sc-kit--color--text--primary));
23
- --_toolbar-panel-button--color-hover: var(--sc-kit--toolbar-panel-button--color-hover, var(--sc-kit--color--accent));
24
- appearance: none;
25
- background: transparent;
26
- border: 0;
27
- text-align: inherit;
28
- cursor: pointer;
29
- font-size: var(--sc-kit--font-size--md);
30
- font-weight: var(--sc-kit--font-weight--regular);
31
- line-height: var(--sc-kit--line-height--md);
32
- color: var(--_toolbar-panel-button--color);
33
- padding: var(--sc-kit--space--1) var(--sc-kit--space--2);
34
- max-width: 100%;
35
- text-overflow: ellipsis;
36
- max-width: 100%;
37
- white-space: nowrap;
38
- overflow: hidden;
39
- }
40
- .toolbar-panel-button:hover {
41
- color: var(--_toolbar-panel-button--color-hover);
42
- }</style>
@@ -1,20 +0,0 @@
1
- import type { Snippet } from 'svelte';
2
- type Props = {
3
- children: Snippet;
4
- on?: {
5
- click?: () => void;
6
- };
7
- };
8
- /**
9
- * A text-row button for toolbar panels / popovers (rendered inside `<ToolbarPanel>` / `<ToolbarPopover>`).
10
- * For the toolbar's primary action area use `<ToolbarButton>` instead.
11
- *
12
- * ### CSS Custom Properties
13
- * | Property | Description | Default |
14
- * |---|---|---|
15
- * | `--sc-kit--toolbar-panel-button--color` | Text color | `var(--sc-kit--color--text--primary)` |
16
- * | `--sc-kit--toolbar-panel-button--color-hover` | Text color on hover | `var(--sc-kit--color--accent)` |
17
- */
18
- declare const Cmp: import("svelte").Component<Props, {}, "">;
19
- type Cmp = ReturnType<typeof Cmp>;
20
- export default Cmp;
@@ -1,57 +0,0 @@
1
- <script lang="ts">const { title, children, footer } = $props();
2
- export {};
3
- </script>
4
-
5
- <div class="toolbar-panel">
6
- <div class="toolbar-panel__title">{title}</div>
7
- <div class="toolbar-panel__body">
8
- {@render children()}
9
- {#if footer}
10
- <div class="toolbar-panel__divider"></div>
11
- {@render footer()}
12
- {/if}
13
- </div>
14
- </div>
15
-
16
- <!--
17
- @component
18
- A panel container used inside toolbar dropdowns. Provides a title, body area, and optional footer.
19
-
20
- ### CSS Custom Properties
21
- | Property | Description | Default |
22
- |---|---|---|
23
- | `--sc-kit--toolbar-panel--width` | Panel width | `21.875rem` |
24
- | `--sc-kit--toolbar-panel--title--color` | Title text color | `var(--sc-kit--color--text--primary)` |
25
- | `--sc-kit--toolbar-panel--divider--color` | Divider line color | `var(--sc-kit--color--border)` |
26
- -->
27
-
28
- <style>.toolbar-panel {
29
- --_toolbar-panel--width: var(--sc-kit--toolbar-panel--width, 21.875rem);
30
- --_toolbar-panel--title--color: var(--sc-kit--toolbar-panel--title--color, var(--sc-kit--color--text--primary));
31
- --_toolbar-panel--divider--color: var(--sc-kit--toolbar-panel--divider--color, var(--sc-kit--color--border));
32
- width: var(--_toolbar-panel--width);
33
- padding: var(--sc-kit--space--6);
34
- }
35
- .toolbar-panel__title {
36
- font-size: var(--sc-kit--font-size--md);
37
- font-weight: var(--sc-kit--font-weight--semibold);
38
- line-height: var(--sc-kit--line-height--md);
39
- color: var(--_toolbar-panel--title--color);
40
- margin-bottom: var(--sc-kit--space--2);
41
- min-width: 0;
42
- text-overflow: ellipsis;
43
- max-width: 100%;
44
- white-space: nowrap;
45
- overflow: hidden;
46
- }
47
- .toolbar-panel__body {
48
- display: flex;
49
- flex-direction: column;
50
- gap: var(--sc-kit--space--4);
51
- padding-block: var(--sc-kit--space--2);
52
- }
53
- .toolbar-panel__divider {
54
- height: 1px;
55
- background: var(--_toolbar-panel--divider--color);
56
- margin: var(--sc-kit--space--1) var(--sc-kit--space--2);
57
- }</style>
@@ -1,19 +0,0 @@
1
- import type { Snippet } from 'svelte';
2
- type Props = {
3
- title: string;
4
- children: Snippet;
5
- footer?: Snippet;
6
- };
7
- /**
8
- * A panel container used inside toolbar dropdowns. Provides a title, body area, and optional footer.
9
- *
10
- * ### CSS Custom Properties
11
- * | Property | Description | Default |
12
- * |---|---|---|
13
- * | `--sc-kit--toolbar-panel--width` | Panel width | `21.875rem` |
14
- * | `--sc-kit--toolbar-panel--title--color` | Title text color | `var(--sc-kit--color--text--primary)` |
15
- * | `--sc-kit--toolbar-panel--divider--color` | Divider line color | `var(--sc-kit--color--border)` |
16
- */
17
- declare const Cmp: import("svelte").Component<Props, {}, "">;
18
- type Cmp = ReturnType<typeof Cmp>;
19
- export default Cmp;
@@ -1,16 +0,0 @@
1
- <script lang="ts">import { Toggle } from '../toggle';
2
- const { checked, children, on } = $props();
3
- </script>
4
-
5
- <div class="toolbar-toggle-item">
6
- <Toggle checked={checked} label={children} layout="spread" on={{ change: (value) => on?.change?.(value) }} />
7
- </div>
8
-
9
- <!--
10
- @component
11
- A toggle item for toolbar panels. Wraps the kit Toggle with toolbar-appropriate padding.
12
- -->
13
-
14
- <style>.toolbar-toggle-item {
15
- padding: var(--sc-kit--space--1) var(--sc-kit--space--2);
16
- }</style>
@@ -1,12 +0,0 @@
1
- import type { Snippet } from 'svelte';
2
- type Props = {
3
- checked: boolean;
4
- children: Snippet;
5
- on?: {
6
- change?: (value: boolean) => void;
7
- };
8
- };
9
- /** A toggle item for toolbar panels. Wraps the kit Toggle with toolbar-appropriate padding. */
10
- declare const Cmp: import("svelte").Component<Props, {}, "">;
11
- type Cmp = ReturnType<typeof Cmp>;
12
- export default Cmp;
@@ -1,28 +0,0 @@
1
- <script lang="ts" generics="T extends {id: string}">import { Singleselect } from '../../select';
2
- let { item, column } = $props();
3
- const getValueForColumn = (column, item) => (column.valueFactory ? column.valueFactory(item) : item[column.id]);
4
- const onSelected = (value) => {
5
- column.onSelected(item, value);
6
- item = item;
7
- };
8
- </script>
9
-
10
- {#if !column.visibilityFactory || column.visibilityFactory(item)}
11
- {#if column.clearable}
12
- <Singleselect
13
- clearable
14
- placeholder={column.placeholder || ' '}
15
- value={getValueForColumn(column, item)}
16
- options={column.optionsFactory(item)}
17
- disabled={(column.disabledFactory && column.disabledFactory(item)) || false}
18
- on={{ change: (v) => onSelected(v) }} />
19
- {:else}
20
- <Singleselect
21
- clearable={false}
22
- placeholder={column.placeholder || ' '}
23
- value={getValueForColumn(column, item)}
24
- options={column.optionsFactory(item)}
25
- disabled={(column.disabledFactory && column.disabledFactory(item)) || false}
26
- on={{ change: (v) => onSelected(v) }} />
27
- {/if}
28
- {/if}