@salt-ds/lab 1.0.0-alpha.86 → 1.0.0-alpha.88

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 (132) hide show
  1. package/CHANGELOG.md +126 -0
  2. package/css/salt-lab.css +145 -212
  3. package/dist-cjs/calendar/internal/CalendarDay.css.js +1 -1
  4. package/dist-cjs/common-hooks/useSelection.js +0 -2
  5. package/dist-cjs/common-hooks/useSelection.js.map +1 -1
  6. package/dist-cjs/contact-details/ContactDetails.css.js +1 -1
  7. package/dist-cjs/date-input/DateInput.css.js +1 -1
  8. package/dist-cjs/date-input/DateInputRange.js +2 -8
  9. package/dist-cjs/date-input/DateInputRange.js.map +1 -1
  10. package/dist-cjs/date-input/DateInputSingle.js +1 -1
  11. package/dist-cjs/date-input/DateInputSingle.js.map +1 -1
  12. package/dist-cjs/index.js +6 -2
  13. package/dist-cjs/index.js.map +1 -1
  14. package/dist-cjs/list-deprecated/ListItem.js.map +1 -1
  15. package/dist-cjs/rating/Rating.css.js +1 -1
  16. package/dist-cjs/rating/Rating.js +8 -7
  17. package/dist-cjs/rating/Rating.js.map +1 -1
  18. package/dist-cjs/tabs-next/TabListNext.js +1 -1
  19. package/dist-cjs/tabs-next/TabListNext.js.map +1 -1
  20. package/dist-cjs/tokenized-input-next/TokenizedInputNext.js +2 -2
  21. package/dist-cjs/tokenized-input-next/TokenizedInputNext.js.map +1 -1
  22. package/dist-cjs/tree/Tree.css.js +1 -1
  23. package/dist-cjs/tree/Tree.js +274 -207
  24. package/dist-cjs/tree/Tree.js.map +1 -1
  25. package/dist-cjs/tree/TreeContext.js +31 -0
  26. package/dist-cjs/tree/TreeContext.js.map +1 -0
  27. package/dist-cjs/tree/TreeNode.css.js +1 -1
  28. package/dist-cjs/tree/TreeNode.js +86 -42
  29. package/dist-cjs/tree/TreeNode.js.map +1 -1
  30. package/dist-cjs/tree/TreeNodeExpansionIcon.css.js +6 -0
  31. package/dist-cjs/tree/TreeNodeExpansionIcon.css.js.map +1 -0
  32. package/dist-cjs/tree/TreeNodeExpansionIcon.js +62 -0
  33. package/dist-cjs/tree/TreeNodeExpansionIcon.js.map +1 -0
  34. package/dist-cjs/tree/TreeNodeLabel.css.js +6 -0
  35. package/dist-cjs/tree/TreeNodeLabel.css.js.map +1 -0
  36. package/dist-cjs/tree/TreeNodeLabel.js +26 -0
  37. package/dist-cjs/tree/TreeNodeLabel.js.map +1 -0
  38. package/dist-cjs/tree/TreeNodeTrigger.css.js +6 -0
  39. package/dist-cjs/tree/TreeNodeTrigger.css.js.map +1 -0
  40. package/dist-cjs/tree/TreeNodeTrigger.js +152 -0
  41. package/dist-cjs/tree/TreeNodeTrigger.js.map +1 -0
  42. package/dist-cjs/tree/useTree.js +305 -133
  43. package/dist-cjs/tree/useTree.js.map +1 -1
  44. package/dist-es/calendar/internal/CalendarDay.css.js +1 -1
  45. package/dist-es/combo-box-deprecated/internal/DefaultComboBox.js +1 -1
  46. package/dist-es/combo-box-deprecated/internal/MultiSelectComboBox.js +1 -1
  47. package/dist-es/combo-box-deprecated/internal/useComboBox.js +1 -1
  48. package/dist-es/combo-box-deprecated/internal/useMultiSelectComboBox.js +1 -1
  49. package/dist-es/common-hooks/useCollectionItems.js +1 -1
  50. package/dist-es/common-hooks/useSelection.js +1 -2
  51. package/dist-es/common-hooks/useSelection.js.map +1 -1
  52. package/dist-es/contact-details/ContactDetails.css.js +1 -1
  53. package/dist-es/date-input/DateInput.css.js +1 -1
  54. package/dist-es/date-input/DateInputRange.js +2 -8
  55. package/dist-es/date-input/DateInputRange.js.map +1 -1
  56. package/dist-es/date-input/DateInputSingle.js +1 -1
  57. package/dist-es/date-input/DateInputSingle.js.map +1 -1
  58. package/dist-es/dropdown/DropdownBase.js +1 -1
  59. package/dist-es/index.js +3 -1
  60. package/dist-es/index.js.map +1 -1
  61. package/dist-es/list-deprecated/ListItem.js.map +1 -1
  62. package/dist-es/rating/Rating.css.js +1 -1
  63. package/dist-es/rating/Rating.js +8 -7
  64. package/dist-es/rating/Rating.js.map +1 -1
  65. package/dist-es/tabs/drag-drop/useDragDropNaturalMovement.js +1 -1
  66. package/dist-es/tabs-next/TabListNext.js +1 -1
  67. package/dist-es/tabs-next/TabListNext.js.map +1 -1
  68. package/dist-es/tokenized-input/TokenizedInputBase.js +1 -1
  69. package/dist-es/tokenized-input-next/TokenizedInputNext.js +2 -2
  70. package/dist-es/tokenized-input-next/TokenizedInputNext.js.map +1 -1
  71. package/dist-es/tree/Tree.css.js +1 -1
  72. package/dist-es/tree/Tree.js +275 -208
  73. package/dist-es/tree/Tree.js.map +1 -1
  74. package/dist-es/tree/TreeContext.js +26 -0
  75. package/dist-es/tree/TreeContext.js.map +1 -0
  76. package/dist-es/tree/TreeNode.css.js +1 -1
  77. package/dist-es/tree/TreeNode.js +87 -43
  78. package/dist-es/tree/TreeNode.js.map +1 -1
  79. package/dist-es/tree/TreeNodeExpansionIcon.css.js +4 -0
  80. package/dist-es/tree/TreeNodeExpansionIcon.css.js.map +1 -0
  81. package/dist-es/tree/TreeNodeExpansionIcon.js +60 -0
  82. package/dist-es/tree/TreeNodeExpansionIcon.js.map +1 -0
  83. package/dist-es/tree/TreeNodeLabel.css.js +4 -0
  84. package/dist-es/tree/TreeNodeLabel.css.js.map +1 -0
  85. package/dist-es/tree/TreeNodeLabel.js +24 -0
  86. package/dist-es/tree/TreeNodeLabel.js.map +1 -0
  87. package/dist-es/tree/TreeNodeTrigger.css.js +4 -0
  88. package/dist-es/tree/TreeNodeTrigger.css.js.map +1 -0
  89. package/dist-es/tree/TreeNodeTrigger.js +150 -0
  90. package/dist-es/tree/TreeNodeTrigger.js.map +1 -0
  91. package/dist-es/tree/useTree.js +306 -134
  92. package/dist-es/tree/useTree.js.map +1 -1
  93. package/dist-types/date-input/DateInputRange.d.ts +1 -1
  94. package/dist-types/date-input/DateInputSingle.d.ts +1 -1
  95. package/dist-types/index.d.ts +0 -1
  96. package/dist-types/list-deprecated/ListItem.d.ts +1 -0
  97. package/dist-types/rating/Rating.d.ts +5 -6
  98. package/dist-types/tokenized-input/internal/InputPill.d.ts +1 -1
  99. package/dist-types/tokenized-input-next/internal/InputPill.d.ts +1 -1
  100. package/dist-types/tree/Tree.d.ts +36 -3
  101. package/dist-types/tree/TreeContext.d.ts +71 -0
  102. package/dist-types/tree/TreeNode.d.ts +23 -10
  103. package/dist-types/tree/TreeNodeExpansionIcon.d.ts +4 -0
  104. package/dist-types/tree/TreeNodeLabel.d.ts +4 -0
  105. package/dist-types/tree/TreeNodeTrigger.d.ts +8 -0
  106. package/dist-types/tree/index.d.ts +3 -0
  107. package/dist-types/tree/useTree.d.ts +79 -3
  108. package/package.json +3 -3
  109. package/dist-cjs/common-hooks/calcPreferredHeight.js +0 -27
  110. package/dist-cjs/common-hooks/calcPreferredHeight.js.map +0 -1
  111. package/dist-cjs/common-hooks/useAutoSizer.js +0 -33
  112. package/dist-cjs/common-hooks/useAutoSizer.js.map +0 -1
  113. package/dist-cjs/kbd/Kbd.css.js +0 -6
  114. package/dist-cjs/kbd/Kbd.css.js.map +0 -1
  115. package/dist-cjs/kbd/Kbd.js +0 -34
  116. package/dist-cjs/kbd/Kbd.js.map +0 -1
  117. package/dist-cjs/tree/use-tree-keyboard-navigation.js +0 -51
  118. package/dist-cjs/tree/use-tree-keyboard-navigation.js.map +0 -1
  119. package/dist-es/common-hooks/calcPreferredHeight.js +0 -25
  120. package/dist-es/common-hooks/calcPreferredHeight.js.map +0 -1
  121. package/dist-es/common-hooks/useAutoSizer.js +0 -31
  122. package/dist-es/common-hooks/useAutoSizer.js.map +0 -1
  123. package/dist-es/kbd/Kbd.css.js +0 -4
  124. package/dist-es/kbd/Kbd.css.js.map +0 -1
  125. package/dist-es/kbd/Kbd.js +0 -32
  126. package/dist-es/kbd/Kbd.js.map +0 -1
  127. package/dist-es/tree/use-tree-keyboard-navigation.js +0 -48
  128. package/dist-es/tree/use-tree-keyboard-navigation.js.map +0 -1
  129. package/dist-types/kbd/Kbd.d.ts +0 -8
  130. package/dist-types/kbd/index.d.ts +0 -1
  131. package/dist-types/tree/treeTypes.d.ts +0 -42
  132. package/dist-types/tree/use-tree-keyboard-navigation.d.ts +0 -15
package/CHANGELOG.md CHANGED
@@ -1,5 +1,131 @@
1
1
  # @salt-ds/lab
2
2
 
3
+ ## 1.0.0-alpha.88
4
+
5
+ ### Patch Changes
6
+
7
+ - cfc1591: Simplify disabled styling across the system. This affected the following components:
8
+
9
+ ## Core
10
+
11
+ - Checkbox
12
+ - Combo box
13
+ - Dropdown
14
+ - List box
15
+ - Radio button
16
+ - Slider
17
+ - Switch
18
+
19
+ ## Lab
20
+
21
+ - Tree
22
+
23
+ - 89429e2: Updated accent token usage, to align to the recent theme change.
24
+ - Updated dependencies [5c36edc]
25
+ - Updated dependencies [cfc1591]
26
+ - Updated dependencies [89429e2]
27
+ - Updated dependencies [0a08ae0]
28
+ - Updated dependencies [49b3486]
29
+ - Updated dependencies [5c36edc]
30
+ - @salt-ds/core@1.59.0
31
+ - @salt-ds/icons@1.18.0
32
+
33
+ ## 1.0.0-alpha.87
34
+
35
+ ### Minor Changes
36
+
37
+ - 133a519: Removed `Kbd` from lab and promoted to core.
38
+ - 23b5f53: Added tertiary variant support to `DateInputRange` and `DateInputSingle`.
39
+ - b1a3e45: ## Summary
40
+
41
+ New `Tree`, `TreeNode`, and `TreeNodeTrigger` components for displaying hierarchical data with expand/collapse, selection, and keyboard navigation.
42
+
43
+ **What's included**
44
+
45
+ - Single and multi-select modes with optional checkbox variant
46
+ - Controlled and uncontrolled expanded/selected states
47
+ - Selection propagation to descendants and ancestors in multiselect mode
48
+ - Keyboard navigation (arrows, Home, End, Enter, Space, type-ahead)
49
+ - Disabled state at tree or individual node level
50
+ - Custom icons per node
51
+ - `TreeNodeTrigger` for custom row content (e.g. wrapping with `Tooltip`); use inside `TreeNode` when you need more than the default `label`
52
+
53
+ ## Examples
54
+
55
+ **Basic Tree** — use `TreeNode` with the `label` prop, optionally including an `icon` prop
56
+
57
+ ```tsx
58
+ import {
59
+ FolderOpenIcon,
60
+ FolderClosedIcon,
61
+ DocumentIcon,
62
+ } from "@salt-ds/icons";
63
+ import { Tree, TreeNode } from "@salt-ds/lab";
64
+
65
+ <Tree aria-label="File browser" defaultExpanded={["documents"]}>
66
+ <TreeNode value="documents" label="Documents" icon={FolderOpenIcon}>
67
+ <TreeNode value="reports" label="Reports" icon={FolderClosedIcon}>
68
+ <TreeNode
69
+ value="annual-report"
70
+ label="Annual Report"
71
+ icon={DocumentIcon}
72
+ />
73
+ <TreeNode
74
+ value="quarterly-report"
75
+ label="Quarterly Report"
76
+ icon={DocumentIcon}
77
+ />
78
+ </TreeNode>
79
+ <TreeNode value="invoices" label="Invoices" icon={FolderClosedIcon}>
80
+ <TreeNode value="invoice-001" label="Invoice 001" icon={DocumentIcon} />
81
+ <TreeNode value="invoice-002" label="Invoice 002" icon={DocumentIcon} />
82
+ </TreeNode>
83
+ </TreeNode>
84
+ <TreeNode value="downloads" label="Downloads" icon={FolderClosedIcon} />
85
+ </Tree>;
86
+ ```
87
+
88
+ **Tree with Tooltip** — use `TreeNodeTrigger` and `TreeNodeLabel` inside `TreeNode` when you need to wrap the row (e.g. in a `Tooltip`). Icons can be passed as direct children of `TreeNodeTrigger`.
89
+
90
+ ```tsx
91
+ import { Tooltip } from "@salt-ds/core";
92
+ import { FolderOpenIcon, FolderClosedIcon } from "@salt-ds/icons";
93
+ import { Tree, TreeNode, TreeNodeLabel, TreeNodeTrigger } from "@salt-ds/lab";
94
+
95
+ <Tree aria-label="File browser" defaultExpanded={["documents"]}>
96
+ <TreeNode value="documents">
97
+ <Tooltip content="Contains all document files" placement="right">
98
+ <TreeNodeTrigger>
99
+ <FolderOpenIcon aria-hidden />
100
+ <TreeNodeLabel>Documents</TreeNodeLabel>
101
+ </TreeNodeTrigger>
102
+ </Tooltip>
103
+ <TreeNode value="reports">
104
+ <Tooltip content="Financial reports folder" placement="right">
105
+ <TreeNodeTrigger>
106
+ <FolderClosedIcon aria-hidden />
107
+ <TreeNodeLabel>Reports</TreeNodeLabel>
108
+ </TreeNodeTrigger>
109
+ </Tooltip>
110
+ <TreeNode value="annual-report" label="Annual Report" />
111
+ <TreeNode value="quarterly-report" label="Quarterly Report" />
112
+ </TreeNode>
113
+ </TreeNode>
114
+ <TreeNode value="downloads" label="Downloads" />
115
+ </Tree>;
116
+ ```
117
+
118
+ ### Patch Changes
119
+
120
+ - aae0846: Fixed some controls having empty `aria-labelledby` or `aria-describedby` attributes when used outside a FormField.
121
+ - 852256d: Fixed `Rating` not inheriting readOnly and disabled states from form fields.
122
+ - fdb9cfc: Updated Rating to fix alignment issues and improve spacing.
123
+ - Updated dependencies [23b5f53]
124
+ - Updated dependencies [aae0846]
125
+ - Updated dependencies [133a519]
126
+ - Updated dependencies [503c186]
127
+ - @salt-ds/core@1.58.0
128
+
3
129
  ## 1.0.0-alpha.86
4
130
 
5
131
  ### Minor Changes
package/css/salt-lab.css CHANGED
@@ -654,7 +654,7 @@
654
654
  .saltContactDetails {
655
655
  --contactDetails-color: var(--salt-content-primary-foreground);
656
656
  --contactDetails-label-color: var(--salt-content-secondary-foreground);
657
- --contactDetails-noAvatar-color: var(--salt-accent-background);
657
+ --contactDetails-noAvatar-color: var(--salt-sentiment-accent-background);
658
658
  --contactDetails-noAvatar-indicator-width: 4px;
659
659
  --contactDetails-favoriteToggle-fill: var(--contactDetails-deselected-icon-color);
660
660
  --contactDetails-favoriteToggle-marginRight: 0px;
@@ -820,7 +820,7 @@
820
820
  outline: var(--salt-focused-outline);
821
821
  }
822
822
  .saltContactFavoriteToggle-deselected {
823
- --contactDetails-favoriteToggle-fill: var(--salt-accent-borderColor);
823
+ --contactDetails-favoriteToggle-fill: var(--salt-sentiment-accent-borderColor);
824
824
  }
825
825
  .saltContactFavoriteToggle-selecting {
826
826
  --contactDetails-favoriteToggle-fill: var(--salt-selectable-foreground-hover);
@@ -884,7 +884,6 @@
884
884
  width: 100%;
885
885
  }
886
886
  .saltDateInput:hover {
887
- background: var(--saltDateInput-background-hover, var(--input-background-hover));
888
887
  cursor: var(--salt-cursor-text);
889
888
  }
890
889
  .saltDateInput-bordered.saltDateInput {
@@ -944,10 +943,8 @@
944
943
  }
945
944
  .saltDateInput-primary {
946
945
  --input-background: var(--salt-editable-primary-background);
947
- --input-background-active: var(--salt-editable-primary-background-active);
948
- --input-background-hover: var(--salt-editable-primary-background-hover);
949
946
  --input-background-disabled: var(--salt-editable-primary-background-disabled);
950
- --input-background-readonly: var(--salt-editable-primary-background-readonly);
947
+ --input-background-readonly: var(--salt-editable-background-readonly);
951
948
  --input-borderColor: var(--salt-editable-borderColor);
952
949
  --input-borderColor-active: var(--salt-editable-borderColor-active);
953
950
  --input-borderColor-hover: var(--salt-editable-borderColor-hover);
@@ -955,10 +952,16 @@
955
952
  }
956
953
  .saltDateInput-secondary {
957
954
  --input-background: var(--salt-editable-secondary-background);
958
- --input-background-active: var(--salt-editable-secondary-background-active);
959
- --input-background-hover: var(--salt-editable-secondary-background-active);
960
955
  --input-background-disabled: var(--salt-editable-secondary-background-disabled);
961
- --input-background-readonly: var(--salt-editable-secondary-background-readonly);
956
+ --input-background-readonly: var(--salt-editable-background-readonly);
957
+ --input-borderColor: var(--salt-editable-borderColor);
958
+ --input-borderColor-active: var(--salt-editable-borderColor-active);
959
+ --input-borderColor-hover: var(--salt-editable-borderColor-hover);
960
+ --input-outlineColor: var(--salt-focused-outlineColor);
961
+ }
962
+ .saltDateInput-tertiary {
963
+ --input-background: var(--salt-editable-tertiary-background);
964
+ --input-background-readonly: var(--salt-editable-background-readonly);
962
965
  --input-borderColor: var(--salt-editable-borderColor);
963
966
  --input-borderColor-active: var(--salt-editable-borderColor-active);
964
967
  --input-borderColor-hover: var(--salt-editable-borderColor-hover);
@@ -966,8 +969,6 @@
966
969
  }
967
970
  .saltDateInput-error {
968
971
  --input-background: var(--salt-status-error-background);
969
- --input-background-active: var(--salt-status-error-background);
970
- --input-background-hover: var(--salt-status-error-background);
971
972
  --input-background-readonly: var(--salt-status-error-background);
972
973
  --input-borderColor: var(--salt-status-error-borderColor);
973
974
  --input-borderColor-active: var(--salt-status-error-borderColor);
@@ -976,8 +977,6 @@
976
977
  }
977
978
  .saltDateInput-warning {
978
979
  --input-background: var(--salt-status-warning-background);
979
- --input-background-active: var(--salt-status-warning-background);
980
- --input-background-hover: var(--salt-status-warning-background);
981
980
  --input-background-readonly: var(--salt-status-warning-background);
982
981
  --input-borderColor: var(--salt-status-warning-borderColor);
983
982
  --input-borderColor-active: var(--salt-status-warning-borderColor);
@@ -986,8 +985,6 @@
986
985
  }
987
986
  .saltDateInput-success {
988
987
  --input-background: var(--salt-status-success-background);
989
- --input-background-active: var(--salt-status-success-background);
990
- --input-background-hover: var(--salt-status-success-background);
991
988
  --input-background-readonly: var(--salt-status-success-background);
992
989
  --input-borderColor: var(--salt-status-success-borderColor);
993
990
  --input-borderColor-active: var(--salt-status-success-borderColor);
@@ -996,7 +993,6 @@
996
993
  }
997
994
  .saltDateInput-focused,
998
995
  .saltDateInput-focused:hover {
999
- background: var(--saltDateInput-background-active, var(--input-background-active));
1000
996
  cursor: var(--salt-cursor-text);
1001
997
  outline: var(--saltDateInput-outline, var(--salt-focused-outlineWidth) var(--salt-focused-outlineStyle) var(--input-outlineColor));
1002
998
  }
@@ -1771,36 +1767,6 @@
1771
1767
  padding-right: var(--inputLegacy-staticAdornment-padding);
1772
1768
  }
1773
1769
 
1774
- /* src/kbd/Kbd.css */
1775
- .saltKbd-primary {
1776
- --kbd-background: var(--salt-container-primary-background);
1777
- }
1778
- .saltKbd-secondary {
1779
- --kbd-background: var(--salt-container-secondary-background);
1780
- }
1781
- .saltKbd-tertiary {
1782
- --kbd-background: var(--salt-container-tertiary-background);
1783
- }
1784
- .saltKbd {
1785
- display: inline-flex;
1786
- box-sizing: border-box;
1787
- width: fit-content;
1788
- border-radius: var(--salt-palette-corner-weaker);
1789
- border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-container-primary-borderColor);
1790
- background: var(--kbd-background);
1791
- box-shadow: 0 var(--salt-size-fixed-100) 0 0 var(--salt-container-primary-borderColor);
1792
- height: calc(var(--salt-size-base) - var(--salt-spacing-100));
1793
- align-items: center;
1794
- padding: 0 var(--salt-spacing-50);
1795
- text-transform: capitalize;
1796
- color: var(--salt-content-primary-foreground);
1797
- font-family: var(--salt-text-code-fontFamily);
1798
- font-size: var(--salt-text-fontSize);
1799
- font-style: normal;
1800
- font-weight: var(--salt-text-fontWeight);
1801
- line-height: var(--salt-text-lineHeight);
1802
- }
1803
-
1804
1770
  /* src/layer-layout/LayerLayout.css */
1805
1771
  .saltLayerLayout {
1806
1772
  --layerLayout-boxShadow: var(--saltLayerLayout-boxShadow, var(--salt-overlayable-shadow-modal));
@@ -2472,29 +2438,37 @@
2472
2438
 
2473
2439
  /* src/rating/Rating.css */
2474
2440
  .saltRating {
2475
- display: flex;
2476
- gap: calc(2 * var(--salt-spacing-fixed-600));
2477
- align-items: center;
2441
+ display: inline-flex;
2478
2442
  box-sizing: border-box;
2479
2443
  }
2480
- .saltFormField .saltRating {
2444
+ .saltFormField .saltRating-container {
2445
+ height: var(--salt-size-base);
2446
+ padding-top: calc(var(--salt-spacing-100) + var(--salt-spacing-fixed-100));
2447
+ }
2448
+ .saltFormField .saltRating-label {
2481
2449
  min-height: var(--salt-size-base);
2450
+ padding-top: var(--salt-spacing-100);
2482
2451
  }
2483
- .saltRating-wrapper-top,
2484
- .saltRating-wrapper-bottom {
2452
+ .saltRating-labelTop,
2453
+ .saltRating-labelBottom {
2485
2454
  flex-direction: column;
2455
+ align-items: flex-start;
2456
+ gap: var(--salt-spacing-fixed-600);
2486
2457
  }
2487
- .saltRating-wrapper-left,
2488
- .saltRating-wrapper-right {
2458
+ .saltRating-labelLeft,
2459
+ .saltRating-labelRight {
2489
2460
  flex-direction: row;
2461
+ gap: var(--salt-spacing-fixed-1200);
2490
2462
  }
2491
2463
  .saltRating-container {
2492
2464
  display: flex;
2493
2465
  flex-direction: row;
2494
- gap: calc(2 * var(--salt-spacing-fixed-600));
2466
+ gap: var(--salt-spacing-fixed-1200);
2495
2467
  flex-wrap: nowrap;
2496
2468
  justify-content: flex-start;
2497
- align-items: stretch;
2469
+ padding-top: var(--salt-spacing-fixed-100);
2470
+ padding-bottom: var(--salt-spacing-fixed-100);
2471
+ box-sizing: border-box;
2498
2472
  }
2499
2473
  .saltRating-label {
2500
2474
  color: var(--salt-content-primary-foreground);
@@ -2502,10 +2476,7 @@
2502
2476
  font-size: var(--salt-text-fontSize);
2503
2477
  font-weight: var(--salt-text-fontWeight);
2504
2478
  line-height: var(--salt-text-lineHeight);
2505
- }
2506
- .saltRating-label.saltRating-label-top,
2507
- .saltRating-label.saltRating-label-bottom {
2508
- text-align: center;
2479
+ box-sizing: border-box;
2509
2480
  }
2510
2481
  .saltRating-label.saltRating-label-left {
2511
2482
  text-align: right;
@@ -3714,186 +3685,148 @@
3714
3685
 
3715
3686
  /* src/tree/Tree.css */
3716
3687
  .saltTree {
3717
- --tree-node-collapse: var(--saltTree-node-collapse, var(--list-svg-tree-node-collapse));
3718
- --tree-node-expand: var(--saltTree-node-expand, var(--list-svg-tree-node-expand));
3719
- --tree-node-expanded-transform: var(--saltTree-node-expanded-transform, none);
3720
- --tree-node-indent: 0px;
3721
- --tree-toggle-width: 12px;
3722
- --list-background-highlighted: rgba(1, 1, 1, 0.1);
3723
- --list-item-height: 30px;
3724
- --list-item-padding: 0 6px;
3725
- --list-item-header-background: black;
3726
- --list-item-header-color: white;
3727
- --list-item-header-fontWeight: bold;
3728
- --list-item-header-twisty-color: black;
3729
- --list-item-header-twisty-content: "";
3730
- --list-item-header-twisty-top: 50%;
3731
- --list-item-header-twisty-left: -18px;
3732
- --list-item-header-twisty-right: auto;
3733
- --list-item-selected-color: white;
3688
+ list-style: none;
3734
3689
  margin: 0;
3735
- padding: 0 1px;
3736
- font-size: var(--saltTree-fontSize, 14px);
3737
- max-height: inherit;
3690
+ padding: 0;
3738
3691
  outline: none;
3739
- overflow-y: auto;
3740
- position: relative;
3741
- user-select: none;
3742
- }
3743
- .saltTree-child-nodes {
3744
3692
  width: 100%;
3693
+ box-sizing: border-box;
3745
3694
  }
3746
- .saltTree-scrollingContentContainer {
3747
- box-sizing: inherit;
3748
- list-style: none;
3749
- margin: 0;
3750
- position: relative;
3695
+ .saltTree-disabled {
3696
+ cursor: var(--salt-cursor-disabled);
3751
3697
  }
3752
3698
 
3753
3699
  /* src/tree/TreeNode.css */
3754
3700
  .saltTreeNode {
3755
- --tree-item-text-color: var(--salt-content-primary-foreground);
3756
- --tree-item-background: var(--salt-selectable-background);
3757
- --tree-item-background-hover: var(--salt-selectable-background-hover);
3758
- --tree-node-height: var(--saltTree-node-height, var(--salt-size-stackable));
3759
- --tree-node-icon-size: 12px;
3760
- --tree-node-icon-transform: none;
3761
- --tree-node-paddingLeft: 6px;
3762
- align-items: flex-start;
3763
- min-height: var(--tree-node-height, auto);
3764
- line-height: var(--salt-text-lineHeight);
3765
3701
  list-style: none;
3766
3702
  position: relative;
3767
- text-align: var(--list-item-textAlign);
3768
- }
3769
- .saltTreeNode-highlighted {
3770
- --tree-item-background: var(--salt-selectable-background-hover);
3771
- }
3772
- .saltTreeNode-item[aria-selected=true] {
3773
- background: var(--salt-selectable-background-selected);
3774
- color: var(--salt-content-primary-foreground);
3775
- --saltIcon-color: var(--salt-content-primary-foreground);
3703
+ cursor: var(--salt-cursor-hover);
3776
3704
  }
3777
- .saltTreeNode[aria-expanded=true] {
3778
- --tree-node-icon-transform: rotate(45deg) translate(1px, 1px);
3705
+ .saltTreeNode:focus {
3706
+ outline: none;
3779
3707
  }
3780
- .saltTreeNode-item {
3781
- align-items: center;
3782
- background: var(--tree-item-background);
3783
- display: flex;
3784
- height: var(--tree-node-height);
3785
- padding-left: calc(var(--tree-node-paddingLeft) + var(--tree-node-indent));
3708
+ .saltTreeNode:focus-visible > .saltTreeNodeTrigger,
3709
+ .saltTreeNode-focusVisible > .saltTreeNodeTrigger {
3710
+ outline: var(--salt-focused-outline);
3786
3711
  position: relative;
3712
+ z-index: calc(var(--salt-zIndex-default) + 1);
3787
3713
  }
3788
- .saltTreeNode-toggle {
3789
- display: inline-block;
3790
- flex: 0 0 18px;
3791
- height: var(--tree-node-icon-size);
3792
- transform: var(--tree-node-icon-transform);
3793
- transition: transform 0.1s ease;
3794
- }
3795
- .saltTreeNode-label {
3796
- align-items: center;
3797
- display: inline-flex;
3798
- height: var(--tree-node-height);
3799
- }
3800
- .saltTreeNode-description {
3801
- align-items: center;
3802
- display: inline-flex;
3803
- height: var(--tree-node-height);
3804
- padding-left: var(--salt-size-unit);
3714
+ .saltTreeNode-selected:focus-visible > .saltTreeNodeTrigger,
3715
+ .saltTreeNode-selected.saltTreeNode-focusVisible > .saltTreeNodeTrigger {
3716
+ outline: var(--salt-focused-outline);
3717
+ z-index: calc(var(--salt-zIndex-default) + 1);
3805
3718
  }
3806
- .saltTreeNode[aria-expanded] > .saltTreeNode-label {
3807
- --checkbox-borderColor: black;
3808
- --checkbox-borderWidth: 1px;
3809
- --checkbox-tick: black;
3810
- --list-svg-toggle: var(--tree-node-collapse);
3811
- color: var(--list-item-text-color);
3812
- flex-wrap: nowrap;
3813
- line-height: var(--tree-node-height);
3814
- padding: var(--list-item-padding);
3815
- position: relative;
3816
- cursor: default;
3719
+ .saltTreeNode-group {
3720
+ list-style: none;
3817
3721
  margin: 0;
3818
- white-space: nowrap;
3819
- }
3820
- .saltTreeNode:not([aria-expanded]) {
3821
- padding-left: calc(var(--tree-node-paddingLeft) + var(--tree-toggle-width) + var(--tree-node-indent));
3822
- }
3823
- .saltTreeNode[aria-expanded] > .saltTreeNode-label {
3824
- padding-left: calc(var(--tree-node-paddingLeft) + var(--tree-toggle-width) + var(--tree-node-indent));
3722
+ padding: 0;
3825
3723
  }
3826
- .saltTreeNode[aria-expanded] {
3827
- flex-direction: column;
3724
+ .saltTreeNode-checkbox {
3725
+ flex-shrink: 0;
3726
+ height: var(--salt-size-selectable);
3828
3727
  }
3829
- .saltTreeNode[aria-expanded] {
3830
- flex-direction: column;
3831
- height: auto;
3728
+ .saltTreeNode-icon {
3729
+ display: flex;
3730
+ align-items: center;
3731
+ justify-content: center;
3732
+ width: var(--salt-size-selectable);
3733
+ min-width: var(--salt-size-selectable);
3734
+ height: var(--salt-size-selectable);
3735
+ flex-shrink: 0;
3832
3736
  }
3833
- .saltTreeNode > *[role=group] {
3834
- padding-left: 0px;
3737
+ .saltTreeNode-icon > * {
3738
+ color: var(--salt-content-primary-foreground);
3835
3739
  }
3836
- [aria-level="2"] {
3837
- --tree-node-indent: 24px;
3740
+
3741
+ /* src/tree/TreeNodeExpansionIcon.css */
3742
+ .saltTreeNodeExpansionIcon {
3743
+ display: flex;
3744
+ align-items: center;
3745
+ justify-content: center;
3746
+ width: var(--salt-size-selectable);
3747
+ min-width: var(--salt-size-selectable);
3748
+ height: var(--salt-size-selectable);
3749
+ flex-shrink: 0;
3750
+ position: relative;
3838
3751
  }
3839
- [aria-level="3"] {
3840
- --tree-node-indent: 36px;
3752
+ .saltTreeNodeExpansionIcon-icon {
3753
+ color: var(--salt-content-primary-foreground);
3841
3754
  }
3842
- [aria-level="4"] {
3843
- --tree-node-indent: 48px;
3755
+ .saltTreeNodeExpansionIcon::before {
3756
+ content: "";
3757
+ display: block;
3758
+ position: absolute;
3759
+ width: var(--salt-size-base);
3760
+ height: var(--salt-size-base);
3761
+ top: 50%;
3762
+ left: 50%;
3763
+ transform: translate(-50%, -50%);
3844
3764
  }
3845
- .saltTreeNode:not(.focusVisible):not([aria-expanded])[data-highlighted],
3846
- .saltTreeNode:not(.focusVisible)[aria-expanded][data-highlighted] > div:first-child {
3847
- background: var(--list-background-highlighted);
3765
+
3766
+ /* src/tree/TreeNodeLabel.css */
3767
+ .saltTreeNodeLabel {
3768
+ flex: 1;
3769
+ font-family: var(--salt-text-fontFamily);
3770
+ font-size: var(--salt-text-fontSize);
3771
+ font-weight: var(--salt-text-fontWeight);
3772
+ line-height: var(--salt-text-lineHeight);
3773
+ letter-spacing: var(--salt-text-letterSpacing);
3774
+ word-break: break-word;
3848
3775
  }
3849
- .saltTree-toggle {
3850
- cursor: pointer;
3776
+
3777
+ /* src/tree/TreeNodeTrigger.css */
3778
+ .saltTreeNodeTrigger {
3779
+ box-sizing: border-box;
3780
+ display: flex;
3781
+ align-items: flex-start;
3782
+ gap: var(--salt-spacing-100);
3783
+ width: 100%;
3784
+ min-height: var(--salt-size-base);
3785
+ padding-top: calc((var(--salt-size-base) - var(--salt-size-selectable)) / 2);
3786
+ padding-bottom: calc((var(--salt-size-base) - var(--salt-size-selectable)) / 2);
3787
+ padding-right: var(--salt-spacing-100);
3788
+ --saltTreeNodeTrigger-indentStep: calc(var(--salt-size-selectable) + var(--salt-spacing-100));
3789
+ padding-left: calc(var(--salt-spacing-100) + (var(--saltTreeNodeTrigger-indentStep) * (var(--saltTreeNode-level, 1) - 1)));
3790
+ background: var(--salt-selectable-background);
3791
+ color: var(--salt-content-primary-foreground);
3851
3792
  }
3852
- .saltTreeNode[aria-selected=true] {
3853
- --list-item-header-twisty-color: var(--list-item-selected-color);
3793
+ [aria-multiselectable=true] .saltTreeNodeTrigger {
3794
+ --saltTreeNodeTrigger-indentStep: calc(var(--salt-size-selectable) + var(--salt-spacing-150));
3854
3795
  }
3855
- .saltTreeNode:not(.focusVisible):focus {
3856
- background: rgba(0, 0, 0, 0.1);
3796
+ .saltTreeNodeTrigger:hover {
3797
+ background: var(--salt-selectable-background-hover);
3857
3798
  }
3858
- .saltTreeNode:not([aria-expanded]).focusVisible:before,
3859
- .saltTreeNode[aria-expanded].focusVisible > div:first-child:before {
3860
- content: "";
3861
- position: absolute;
3862
- top: 0px;
3863
- left: var(--tree-offset-left-focusVisible, 0px);
3864
- right: 0;
3865
- bottom: 0px;
3866
- border: dotted rgb(141, 154, 179) 2px;
3867
- background: var(--list-background-highlighted);
3799
+ .saltTreeNode:focus-visible > .saltTreeNodeTrigger,
3800
+ .saltTreeNode-focusVisible > .saltTreeNodeTrigger {
3801
+ background: var(--salt-selectable-background-hover);
3868
3802
  }
3869
- .saltTreeNode[aria-expanded=false] > *:first-child:after {
3870
- --list-svg-toggle: var(--tree-node-expand);
3803
+ .saltTreeNode-selected > .saltTreeNodeTrigger {
3804
+ background: var(--salt-selectable-background-selected);
3805
+ box-shadow: 0 calc(var(--salt-size-border) * -1) 0 0 var(--salt-selectable-borderColor-selected), 0 var(--salt-size-border) 0 0 var(--salt-selectable-borderColor-selected);
3806
+ position: relative;
3807
+ z-index: var(--salt-zIndex-default);
3871
3808
  }
3872
- .saltTreeNode[aria-expanded=true] > *:first-child:after {
3873
- transform: var(--tree-node-expanded-transform);
3809
+ .saltTreeNode-selected:focus-visible > .saltTreeNodeTrigger,
3810
+ .saltTreeNode-selected.saltTreeNode-focusVisible > .saltTreeNodeTrigger {
3811
+ background: var(--salt-selectable-background-selected);
3874
3812
  }
3875
- .saltTree:not(.checkbox-only) .saltTreeNode:not([aria-expanded])[aria-selected=true],
3876
- .saltTree:not(.checkbox-only) .saltTreeNode[aria-expanded][aria-selected=true] > div:first-child {
3877
- --checkbox-borderColor: var(--list-item-selected-color);
3878
- --checkbox-tick: var(--list-item-selected-color);
3879
- --tree-borderColor-focusVisible: var(--list-item-selected-color);
3880
- background: var(--list-item-background-active);
3881
- color: var(--list-item-selected-color);
3813
+ .saltTreeNode-disabled > .saltTreeNodeTrigger,
3814
+ .saltTreeNode-disabled:hover > .saltTreeNodeTrigger {
3815
+ opacity: 0.4;
3816
+ cursor: var(--salt-cursor-disabled);
3817
+ background: var(--salt-selectable-background);
3818
+ color: var(--salt-content-primary-foreground);
3882
3819
  }
3883
- .with-checkbox .saltTreeNode {
3884
- padding-left: 28px;
3820
+ .saltTreeNodeTrigger > .saltIcon {
3821
+ width: var(--salt-size-selectable);
3822
+ height: var(--salt-size-selectable);
3823
+ min-width: var(--salt-size-selectable);
3824
+ flex-shrink: 0;
3825
+ color: var(--salt-content-primary-foreground);
3885
3826
  }
3886
- .with-checkbox .saltTreeNode:before {
3887
- border-style: solid;
3888
- border-width: var(--checkbox-borderWidth);
3889
- border-color: var(--checkbox-borderColor);
3890
- content: "";
3891
- height: 12px;
3892
- left: 3px;
3893
- margin-top: -7px;
3894
- position: absolute;
3895
- top: 50%;
3896
- width: 12px;
3827
+ .saltTreeNodeTrigger > .saltTreeNode-checkbox {
3828
+ margin-left: calc(var(--salt-spacing-150) - var(--salt-spacing-100));
3829
+ margin-right: calc(var(--salt-spacing-150) - var(--salt-spacing-100));
3897
3830
  }
3898
3831
 
3899
3832
  /* src/window/ElectronWindow.css */
@@ -4153,7 +4086,7 @@
4153
4086
  box-sizing: border-box;
4154
4087
  height: var(--calendar-day-highlight-size);
4155
4088
  width: var(--calendar-day-highlight-size);
4156
- background: var(--salt-accent-background);
4089
+ background: var(--salt-sentiment-accent-background);
4157
4090
  position: absolute;
4158
4091
  clip-path: polygon(100% 0, 100% 100%, 0 0);
4159
4092
  z-index: var(--calendar-day-zIndex-highlight);
@@ -4173,7 +4106,7 @@
4173
4106
  display: block;
4174
4107
  width: calc(100% - calc(var(--salt-spacing-50) * 2));
4175
4108
  height: var(--salt-size-indicator);
4176
- background: var(--salt-accent-borderColor);
4109
+ background: var(--salt-sentiment-accent-borderColor);
4177
4110
  border-radius: var(--salt-palette-corner-weak);
4178
4111
  position: absolute;
4179
4112
  bottom: var(--salt-spacing-50);
@@ -4232,7 +4165,7 @@
4232
4165
 
4233
4166
  /* src/tabs/drag-drop/DropIndicator.css */
4234
4167
  .saltDropIndicator {
4235
- background: var(--salt-accent-background);
4168
+ background: var(--salt-sentiment-accent-background);
4236
4169
  cursor: move;
4237
4170
  position: absolute;
4238
4171
  transform: translate(-4px, 0);
@@ -4311,4 +4244,4 @@
4311
4244
  margin: calc(var(--salt-size-unit) / 2) 0;
4312
4245
  }
4313
4246
 
4314
- /* src/e9027b72-c8b2-4bef-b218-a3ff3976ba17.css */
4247
+ /* src/4ab77bbb-d93c-4e89-bc2e-478a2cbac219.css */