@salt-ds/lab 1.0.0-alpha.93 → 1.0.0-alpha.94

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 (131) hide show
  1. package/CHANGELOG.md +104 -0
  2. package/css/salt-lab.css +163 -122
  3. package/dist-cjs/index.js +6 -8
  4. package/dist-cjs/index.js.map +1 -1
  5. package/dist-cjs/toolbar-next/ToolbarContentNext.css.js +6 -0
  6. package/dist-cjs/toolbar-next/ToolbarContentNext.css.js.map +1 -0
  7. package/dist-cjs/toolbar-next/ToolbarContentNext.js +32 -0
  8. package/dist-cjs/toolbar-next/ToolbarContentNext.js.map +1 -0
  9. package/dist-cjs/toolbar-next/ToolbarNext.css.js +6 -0
  10. package/dist-cjs/toolbar-next/ToolbarNext.css.js.map +1 -0
  11. package/dist-cjs/toolbar-next/ToolbarNext.js +394 -0
  12. package/dist-cjs/toolbar-next/ToolbarNext.js.map +1 -0
  13. package/dist-cjs/toolbar-next/ToolbarNextOverflow.css.js +6 -0
  14. package/dist-cjs/toolbar-next/ToolbarNextOverflow.css.js.map +1 -0
  15. package/dist-cjs/toolbar-next/ToolbarNextOverflow.js +705 -0
  16. package/dist-cjs/toolbar-next/ToolbarNextOverflow.js.map +1 -0
  17. package/dist-cjs/toolbar-next/ToolbarNextOverflowFloatingBoundary.js +165 -0
  18. package/dist-cjs/toolbar-next/ToolbarNextOverflowFloatingBoundary.js.map +1 -0
  19. package/dist-cjs/toolbar-next/TooltrayNext.css.js +6 -0
  20. package/dist-cjs/toolbar-next/TooltrayNext.css.js.map +1 -0
  21. package/dist-cjs/toolbar-next/TooltrayNext.js +55 -0
  22. package/dist-cjs/toolbar-next/TooltrayNext.js.map +1 -0
  23. package/dist-cjs/toolbar-next/toolbarNextKeyboardUtils.js +391 -0
  24. package/dist-cjs/toolbar-next/toolbarNextKeyboardUtils.js.map +1 -0
  25. package/dist-cjs/toolbar-next/toolbarNextUtils.js +215 -0
  26. package/dist-cjs/toolbar-next/toolbarNextUtils.js.map +1 -0
  27. package/dist-cjs/toolbar-next/useToolbarNextKeyboardNavigation.js +334 -0
  28. package/dist-cjs/toolbar-next/useToolbarNextKeyboardNavigation.js.map +1 -0
  29. package/dist-cjs/toolbar-next/useToolbarNextOverflow.js +743 -0
  30. package/dist-cjs/toolbar-next/useToolbarNextOverflow.js.map +1 -0
  31. package/dist-es/index.js +3 -4
  32. package/dist-es/index.js.map +1 -1
  33. package/dist-es/toolbar-next/ToolbarContentNext.css.js +4 -0
  34. package/dist-es/toolbar-next/ToolbarContentNext.css.js.map +1 -0
  35. package/dist-es/toolbar-next/ToolbarContentNext.js +30 -0
  36. package/dist-es/toolbar-next/ToolbarContentNext.js.map +1 -0
  37. package/dist-es/toolbar-next/ToolbarNext.css.js +4 -0
  38. package/dist-es/toolbar-next/ToolbarNext.css.js.map +1 -0
  39. package/dist-es/toolbar-next/ToolbarNext.js +392 -0
  40. package/dist-es/toolbar-next/ToolbarNext.js.map +1 -0
  41. package/dist-es/toolbar-next/ToolbarNextOverflow.css.js +4 -0
  42. package/dist-es/toolbar-next/ToolbarNextOverflow.css.js.map +1 -0
  43. package/dist-es/toolbar-next/ToolbarNextOverflow.js +700 -0
  44. package/dist-es/toolbar-next/ToolbarNextOverflow.js.map +1 -0
  45. package/dist-es/toolbar-next/ToolbarNextOverflowFloatingBoundary.js +159 -0
  46. package/dist-es/toolbar-next/ToolbarNextOverflowFloatingBoundary.js.map +1 -0
  47. package/dist-es/toolbar-next/TooltrayNext.css.js +4 -0
  48. package/dist-es/toolbar-next/TooltrayNext.css.js.map +1 -0
  49. package/dist-es/toolbar-next/TooltrayNext.js +53 -0
  50. package/dist-es/toolbar-next/TooltrayNext.js.map +1 -0
  51. package/dist-es/toolbar-next/toolbarNextKeyboardUtils.js +372 -0
  52. package/dist-es/toolbar-next/toolbarNextKeyboardUtils.js.map +1 -0
  53. package/dist-es/toolbar-next/toolbarNextUtils.js +211 -0
  54. package/dist-es/toolbar-next/toolbarNextUtils.js.map +1 -0
  55. package/dist-es/toolbar-next/useToolbarNextKeyboardNavigation.js +332 -0
  56. package/dist-es/toolbar-next/useToolbarNextKeyboardNavigation.js.map +1 -0
  57. package/dist-es/toolbar-next/useToolbarNextOverflow.js +741 -0
  58. package/dist-es/toolbar-next/useToolbarNextOverflow.js.map +1 -0
  59. package/dist-types/index.d.ts +1 -1
  60. package/dist-types/toolbar-next/ToolbarContentNext.d.ts +11 -0
  61. package/dist-types/toolbar-next/ToolbarNext.d.ts +12 -0
  62. package/dist-types/toolbar-next/ToolbarNextOverflow.d.ts +34 -0
  63. package/dist-types/toolbar-next/ToolbarNextOverflowFloatingBoundary.d.ts +16 -0
  64. package/dist-types/toolbar-next/TooltrayNext.d.ts +37 -0
  65. package/dist-types/toolbar-next/index.d.ts +3 -0
  66. package/dist-types/toolbar-next/toolbarNextKeyboardUtils.d.ts +39 -0
  67. package/dist-types/toolbar-next/toolbarNextUtils.d.ts +42 -0
  68. package/dist-types/toolbar-next/useToolbarNextKeyboardNavigation.d.ts +41 -0
  69. package/dist-types/toolbar-next/useToolbarNextOverflow.d.ts +37 -0
  70. package/package.json +2 -2
  71. package/dist-cjs/tree/Tree.css.js +0 -6
  72. package/dist-cjs/tree/Tree.css.js.map +0 -1
  73. package/dist-cjs/tree/Tree.js +0 -303
  74. package/dist-cjs/tree/Tree.js.map +0 -1
  75. package/dist-cjs/tree/TreeContext.js +0 -31
  76. package/dist-cjs/tree/TreeContext.js.map +0 -1
  77. package/dist-cjs/tree/TreeNode.css.js +0 -6
  78. package/dist-cjs/tree/TreeNode.css.js.map +0 -1
  79. package/dist-cjs/tree/TreeNode.js +0 -103
  80. package/dist-cjs/tree/TreeNode.js.map +0 -1
  81. package/dist-cjs/tree/TreeNodeExpansionIcon.css.js +0 -6
  82. package/dist-cjs/tree/TreeNodeExpansionIcon.css.js.map +0 -1
  83. package/dist-cjs/tree/TreeNodeExpansionIcon.js +0 -62
  84. package/dist-cjs/tree/TreeNodeExpansionIcon.js.map +0 -1
  85. package/dist-cjs/tree/TreeNodeLabel.css.js +0 -6
  86. package/dist-cjs/tree/TreeNodeLabel.css.js.map +0 -1
  87. package/dist-cjs/tree/TreeNodeLabel.js +0 -26
  88. package/dist-cjs/tree/TreeNodeLabel.js.map +0 -1
  89. package/dist-cjs/tree/TreeNodeTrigger.css.js +0 -6
  90. package/dist-cjs/tree/TreeNodeTrigger.css.js.map +0 -1
  91. package/dist-cjs/tree/TreeNodeTrigger.js +0 -153
  92. package/dist-cjs/tree/TreeNodeTrigger.js.map +0 -1
  93. package/dist-cjs/tree/treeModel.js +0 -61
  94. package/dist-cjs/tree/treeModel.js.map +0 -1
  95. package/dist-cjs/tree/useTree.js +0 -337
  96. package/dist-cjs/tree/useTree.js.map +0 -1
  97. package/dist-es/tree/Tree.css.js +0 -4
  98. package/dist-es/tree/Tree.css.js.map +0 -1
  99. package/dist-es/tree/Tree.js +0 -301
  100. package/dist-es/tree/Tree.js.map +0 -1
  101. package/dist-es/tree/TreeContext.js +0 -26
  102. package/dist-es/tree/TreeContext.js.map +0 -1
  103. package/dist-es/tree/TreeNode.css.js +0 -4
  104. package/dist-es/tree/TreeNode.css.js.map +0 -1
  105. package/dist-es/tree/TreeNode.js +0 -101
  106. package/dist-es/tree/TreeNode.js.map +0 -1
  107. package/dist-es/tree/TreeNodeExpansionIcon.css.js +0 -4
  108. package/dist-es/tree/TreeNodeExpansionIcon.css.js.map +0 -1
  109. package/dist-es/tree/TreeNodeExpansionIcon.js +0 -60
  110. package/dist-es/tree/TreeNodeExpansionIcon.js.map +0 -1
  111. package/dist-es/tree/TreeNodeLabel.css.js +0 -4
  112. package/dist-es/tree/TreeNodeLabel.css.js.map +0 -1
  113. package/dist-es/tree/TreeNodeLabel.js +0 -24
  114. package/dist-es/tree/TreeNodeLabel.js.map +0 -1
  115. package/dist-es/tree/TreeNodeTrigger.css.js +0 -4
  116. package/dist-es/tree/TreeNodeTrigger.css.js.map +0 -1
  117. package/dist-es/tree/TreeNodeTrigger.js +0 -151
  118. package/dist-es/tree/TreeNodeTrigger.js.map +0 -1
  119. package/dist-es/tree/treeModel.js +0 -57
  120. package/dist-es/tree/treeModel.js.map +0 -1
  121. package/dist-es/tree/useTree.js +0 -335
  122. package/dist-es/tree/useTree.js.map +0 -1
  123. package/dist-types/tree/Tree.d.ts +0 -36
  124. package/dist-types/tree/TreeContext.d.ts +0 -77
  125. package/dist-types/tree/TreeNode.d.ts +0 -25
  126. package/dist-types/tree/TreeNodeExpansionIcon.d.ts +0 -4
  127. package/dist-types/tree/TreeNodeLabel.d.ts +0 -4
  128. package/dist-types/tree/TreeNodeTrigger.d.ts +0 -8
  129. package/dist-types/tree/index.d.ts +0 -4
  130. package/dist-types/tree/treeModel.d.ts +0 -24
  131. package/dist-types/tree/useTree.d.ts +0 -68
package/CHANGELOG.md CHANGED
@@ -1,5 +1,109 @@
1
1
  # @salt-ds/lab
2
2
 
3
+ ## 1.0.0-alpha.94
4
+
5
+ ### Minor Changes
6
+
7
+ - fcf295b: Removed `Tree`, `TreeNode`, `TreeNodeTrigger`, and `TreeNodeLabel` from lab and promoted to core.
8
+ - 5fc9124: ## Summary
9
+
10
+ New `ToolbarNext`, `ToolbarContentNext`, and `TooltrayNext` components for composing horizontal toolbars with responsive overflow, grouped controls, and keyboard navigation.
11
+
12
+ **What's included**
13
+
14
+ - Flat authoring with `TooltrayNext` children aligned to start, center, or end
15
+ - Explicit `ToolbarContentNext` regions for start, center, and end toolbar layouts
16
+ - Shared, named, grouped, independent, and non-overflowing tooltray overflow modes
17
+ - Overflow priority control for deciding which trays collapse first
18
+ - Bordered and transparent appearances with primary, secondary, and tertiary variants
19
+ - Horizontal toolbar semantics and keyboard navigation across toolbar controls and overflow menus
20
+ - `TooltrayNext` as a layout-only wrapper, with optional `role="group"` and accessible labels for meaningful control groups
21
+
22
+ ## Examples
23
+
24
+ **Basic Toolbar** — place `TooltrayNext` components directly inside `ToolbarNext`; use `align="end"` for trailing actions
25
+
26
+ ```tsx
27
+ import { Button, Dropdown, Input, Option } from "@salt-ds/core";
28
+ import { GridIcon, ListIcon, SearchIcon } from "@salt-ds/icons";
29
+ import { ToolbarNext, TooltrayNext } from "@salt-ds/lab";
30
+
31
+ const options = ["Option A", "Option B", "Option C"];
32
+
33
+ <ToolbarNext aria-label="Data controls">
34
+ <TooltrayNext>
35
+ <Dropdown bordered defaultSelected={["Option A"]} style={{ width: 160 }}>
36
+ {options.map((option) => (
37
+ <Option value={option} key={option} />
38
+ ))}
39
+ </Dropdown>
40
+ </TooltrayNext>
41
+ <TooltrayNext role="group" aria-label="Search">
42
+ <Input
43
+ bordered
44
+ startAdornment={<SearchIcon />}
45
+ placeholder="Search"
46
+ style={{ width: 180 }}
47
+ />
48
+ </TooltrayNext>
49
+ <TooltrayNext align="end" role="group" aria-label="View and actions">
50
+ <Button appearance="transparent" aria-label="Grid view">
51
+ <GridIcon aria-hidden />
52
+ </Button>
53
+ <Button appearance="transparent" aria-label="List view">
54
+ <ListIcon aria-hidden />
55
+ </Button>
56
+ <Button appearance="solid">Run</Button>
57
+ </TooltrayNext>
58
+ </ToolbarNext>;
59
+ ```
60
+
61
+ **Centered Toolbar With Named Overflow** — use `ToolbarContentNext` when you need explicit start, center, and end regions; named overflow keeps related actions behind a labelled trigger
62
+
63
+ ```tsx
64
+ import { Button, ToggleButton, ToggleButtonGroup } from "@salt-ds/core";
65
+ import { ToolbarContentNext, ToolbarNext, TooltrayNext } from "@salt-ds/lab";
66
+
67
+ <ToolbarNext aria-label="Centered actions">
68
+ <ToolbarContentNext position="start">
69
+ <TooltrayNext
70
+ overflowMode="none"
71
+ role="group"
72
+ aria-label="Primary action"
73
+ >
74
+ <Button appearance="solid">Create</Button>
75
+ </TooltrayNext>
76
+ </ToolbarContentNext>
77
+ <ToolbarContentNext position="center">
78
+ <TooltrayNext overflowMode="none" role="group" aria-label="View options">
79
+ <ToggleButtonGroup>
80
+ <ToggleButton value="day">Day</ToggleButton>
81
+ <ToggleButton value="week">Week</ToggleButton>
82
+ <ToggleButton value="month">Month</ToggleButton>
83
+ </ToggleButtonGroup>
84
+ </TooltrayNext>
85
+ </ToolbarContentNext>
86
+ <ToolbarContentNext position="end">
87
+ <TooltrayNext
88
+ overflowGroup="Actions"
89
+ overflowLabel="Actions"
90
+ overflowMode="grouped"
91
+ overflowPriority={5}
92
+ role="group"
93
+ aria-label="Secondary actions"
94
+ >
95
+ <Button appearance="transparent">Export</Button>
96
+ <Button appearance="transparent">Settings</Button>
97
+ </TooltrayNext>
98
+ </ToolbarContentNext>
99
+ </ToolbarNext>;
100
+ ```
101
+
102
+ ### Patch Changes
103
+
104
+ - Updated dependencies [fcf295b]
105
+ - @salt-ds/core@1.63.0
106
+
3
107
  ## 1.0.0-alpha.93
4
108
 
5
109
  ### Minor Changes
package/css/salt-lab.css CHANGED
@@ -3121,163 +3121,204 @@
3121
3121
  flex-basis: 0;
3122
3122
  }
3123
3123
 
3124
- /* src/tree/Tree.css */
3125
- .saltTree {
3124
+ /* src/toolbar-next/ToolbarContentNext.css */
3125
+ .saltToolbarContentNext {
3126
3126
  display: flex;
3127
- flex-direction: column;
3128
- gap: var(--salt-spacing-fixed-100);
3129
- list-style: none;
3130
- margin: 0;
3131
- padding: 0;
3132
- outline: none;
3133
- width: 100%;
3134
- box-sizing: border-box;
3127
+ align-items: center;
3128
+ gap: var(--salt-spacing-100);
3129
+ min-width: 0;
3130
+ flex-shrink: 0;
3135
3131
  }
3136
- .saltTree-disabled {
3137
- cursor: var(--salt-cursor-disabled);
3132
+ .saltToolbarContentNext[data-position=start] {
3133
+ justify-content: flex-start;
3138
3134
  }
3139
-
3140
- /* src/tree/TreeNode.css */
3141
- .saltTreeNode {
3142
- list-style: none;
3143
- position: relative;
3144
- cursor: var(--salt-cursor-hover);
3135
+ .saltToolbarContentNext[data-position=center] {
3136
+ justify-content: center;
3145
3137
  }
3146
- .saltTreeNode:focus {
3147
- outline: none;
3138
+ .saltToolbarContentNext[data-position=end] {
3139
+ justify-content: flex-end;
3148
3140
  }
3149
- .saltTreeNode:focus-visible > .saltTreeNodeTrigger,
3150
- .saltTreeNode-focusVisible > .saltTreeNodeTrigger {
3151
- outline: var(--salt-focused-outline);
3152
- outline-offset: calc(var(--salt-size-fixed-100) * -2);
3141
+ .saltToolbarContentNext[data-implicit] > .saltTooltrayNext[data-align=center],
3142
+ .saltToolbarContentNext[data-implicit] > .saltTooltrayNext[data-align=end] {
3143
+ margin-inline-start: 0;
3144
+ margin-inline-end: 0;
3145
+ }
3146
+
3147
+ /* src/toolbar-next/ToolbarNext.css */
3148
+ .saltToolbarNext {
3149
+ box-sizing: border-box;
3150
+ inline-size: 100%;
3151
+ min-width: 0;
3153
3152
  position: relative;
3154
- z-index: calc(var(--salt-zIndex-default) + 1);
3155
3153
  }
3156
- .saltTreeNode-selected:focus-visible > .saltTreeNodeTrigger,
3157
- .saltTreeNode-selected.saltTreeNode-focusVisible > .saltTreeNodeTrigger {
3158
- outline: var(--salt-focused-outline);
3159
- outline-offset: calc(var(--salt-size-fixed-100) * -2);
3160
- z-index: calc(var(--salt-zIndex-default) + 1);
3154
+ .saltToolbarNext-layout {
3155
+ align-items: center;
3156
+ --saltToolbarNext-band-gap: var(--salt-spacing-100);
3161
3157
  }
3162
- .saltTreeNode-group {
3158
+ .saltToolbarNext-layout:not([data-centered]) {
3163
3159
  display: flex;
3164
- flex-direction: column;
3165
- gap: var(--salt-spacing-fixed-100);
3166
- list-style: none;
3167
- margin: 0;
3168
- padding: 0;
3169
- padding-top: var(--salt-spacing-fixed-100);
3160
+ column-gap: var(--saltToolbarNext-band-gap);
3170
3161
  }
3171
- .saltTreeNode-checkbox {
3172
- flex-shrink: 0;
3173
- height: var(--salt-size-selectable);
3162
+ .saltToolbarNext-layout[data-centered] {
3163
+ display: grid;
3164
+ grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
3174
3165
  }
3175
- .saltTreeNode-icon {
3166
+ .saltToolbarNext-band {
3176
3167
  display: flex;
3177
3168
  align-items: center;
3169
+ gap: var(--saltToolbarNext-band-gap);
3170
+ min-width: 0;
3171
+ }
3172
+ .saltToolbarNext-layout:not([data-centered]) > .saltToolbarNext-band[data-band-position=end] {
3173
+ justify-content: flex-end;
3174
+ margin-inline-start: auto;
3175
+ }
3176
+ .saltToolbarNext-layout[data-centered] > .saltToolbarNext-band[data-band-position=start] {
3177
+ grid-column: 1;
3178
+ }
3179
+ .saltToolbarNext-layout[data-centered] > .saltToolbarNext-band[data-band-position=center] {
3180
+ grid-column: 2;
3178
3181
  justify-content: center;
3179
- width: var(--saltTreeNodeTrigger-iconSize);
3180
- min-width: var(--saltTreeNodeTrigger-iconSize);
3181
- height: var(--saltTreeNodeTrigger-iconSize);
3182
- flex-shrink: 0;
3183
3182
  }
3184
- .saltTreeNode-icon > * {
3185
- color: var(--salt-content-primary-foreground);
3183
+ .saltToolbarNext-layout[data-centered] > .saltToolbarNext-band[data-band-position=end] {
3184
+ grid-column: 3;
3185
+ justify-content: flex-end;
3186
3186
  }
3187
-
3188
- /* src/tree/TreeNodeExpansionIcon.css */
3189
- .saltTreeNodeExpansionIcon {
3187
+ .saltToolbarNext-fallback {
3190
3188
  display: flex;
3191
3189
  align-items: center;
3192
- justify-content: center;
3193
- width: var(--saltTreeNodeTrigger-iconSize);
3194
- min-width: var(--saltTreeNodeTrigger-iconSize);
3195
- height: var(--saltTreeNodeTrigger-iconSize);
3196
- flex-shrink: 0;
3197
- position: relative;
3190
+ gap: var(--salt-spacing-100);
3198
3191
  }
3199
- .saltTreeNodeExpansionIcon-icon {
3200
- color: var(--salt-content-primary-foreground);
3192
+ .saltToolbarNext-layout > * {
3193
+ min-width: 0;
3201
3194
  }
3202
- .saltTreeNodeExpansionIcon::before {
3203
- content: "";
3204
- display: block;
3195
+ .saltToolbarNext-primary {
3196
+ --toolbarNext-background: var(--salt-container-primary-background);
3197
+ --toolbarNext-borderColor: var(--salt-container-primary-borderColor);
3198
+ }
3199
+ .saltToolbarNext-secondary {
3200
+ --toolbarNext-background: var(--salt-container-secondary-background);
3201
+ --toolbarNext-borderColor: var(--salt-container-secondary-borderColor);
3202
+ }
3203
+ .saltToolbarNext-tertiary {
3204
+ --toolbarNext-background: var(--salt-container-tertiary-background);
3205
+ --toolbarNext-borderColor: var(--salt-container-tertiary-borderColor);
3206
+ }
3207
+ .saltToolbarNext-bordered {
3208
+ background: var(--saltToolbarNext-background, var(--toolbarNext-background));
3209
+ border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--saltToolbarNext-borderColor, var(--toolbarNext-borderColor));
3210
+ border-radius: var(--salt-palette-corner, 0);
3211
+ padding: var(--salt-spacing-100);
3212
+ }
3213
+ .saltToolbarNext-transparent {
3214
+ background: transparent;
3215
+ border: none;
3216
+ padding: 0;
3217
+ }
3218
+ .saltToolbarNext-measurements {
3219
+ display: flex;
3220
+ gap: var(--salt-spacing-100);
3205
3221
  position: absolute;
3206
- width: var(--salt-size-base);
3207
- height: var(--salt-size-base);
3208
- top: 50%;
3209
- left: 50%;
3210
- transform: translate(-50%, -50%);
3222
+ visibility: hidden;
3223
+ pointer-events: none;
3224
+ inset: 0 auto auto 0;
3225
+ block-size: 0;
3226
+ overflow: hidden;
3211
3227
  }
3212
-
3213
- /* src/tree/TreeNodeLabel.css */
3214
- .saltTreeNodeLabel {
3215
- flex: 1;
3216
- font-family: var(--salt-text-fontFamily);
3217
- font-size: var(--salt-text-fontSize);
3218
- font-weight: var(--salt-text-fontWeight);
3219
- line-height: var(--salt-text-lineHeight);
3220
- letter-spacing: var(--salt-text-letterSpacing);
3221
- word-break: break-word;
3228
+ .saltToolbarNext-measureTrigger {
3229
+ white-space: nowrap;
3222
3230
  }
3223
3231
 
3224
- /* src/tree/TreeNodeTrigger.css */
3225
- .saltTreeNodeTrigger {
3226
- box-sizing: border-box;
3232
+ /* src/toolbar-next/ToolbarNextOverflow.css */
3233
+ .saltToolbarNextOverflow-content {
3234
+ position: relative;
3235
+ }
3236
+ .saltToolbarNextOverflow-slot,
3237
+ .saltToolbarNextOverflow-panelItem {
3238
+ align-items: center;
3227
3239
  display: flex;
3228
- align-items: flex-start;
3240
+ flex-shrink: 0;
3229
3241
  gap: var(--salt-spacing-100);
3230
- width: 100%;
3231
- padding-top: calc(var(--salt-spacing-75) + var(--salt-spacing-50));
3232
- padding-bottom: calc(var(--salt-spacing-75) + var(--salt-spacing-50));
3233
- padding-right: var(--salt-spacing-100);
3234
- --saltTreeNodeTrigger-iconSize: max(var(--salt-size-icon), 12px);
3235
- --saltTreeNodeTrigger-indentStep: calc(var(--saltTreeNodeTrigger-iconSize) + var(--salt-spacing-100));
3236
- --saltTreeNodeTrigger-iconOffsetY: calc((var(--salt-text-lineHeight) - var(--saltTreeNodeTrigger-iconSize)) / 2);
3237
- --saltTreeNodeTrigger-checkboxOffsetY: calc((var(--salt-text-lineHeight) - var(--salt-size-selectable)) / 2);
3238
- padding-left: calc(var(--salt-spacing-100) + (var(--saltTreeNodeTrigger-indentStep) * (var(--saltTreeNode-level, 1) - 1)));
3239
- background: var(--salt-selectable-background);
3240
- color: var(--salt-content-primary-foreground);
3242
+ min-width: 0;
3241
3243
  }
3242
- .saltTree-multiselect .saltTreeNodeTrigger {
3243
- --saltTreeNodeTrigger-indentStep: calc(((var(--saltTreeNodeTrigger-iconSize) + var(--salt-size-selectable)) / 2) + var(--salt-spacing-100));
3244
+ .saltToolbarNextOverflow-slot[data-align=end] {
3245
+ margin-inline-start: auto;
3244
3246
  }
3245
- .saltTreeNodeTrigger:hover {
3246
- background: var(--salt-selectable-background-hover);
3247
+ .saltToolbarNextOverflow-slot[data-align=center] {
3248
+ margin-inline-start: auto;
3249
+ margin-inline-end: auto;
3247
3250
  }
3248
- .saltTreeNode:focus-visible > .saltTreeNodeTrigger,
3249
- .saltTreeNode-focusVisible > .saltTreeNodeTrigger {
3250
- background: var(--salt-selectable-background-hover);
3251
+ .saltToolbarNextOverflow-item {
3252
+ align-items: center;
3253
+ display: flex;
3254
+ flex-shrink: 0;
3255
+ min-width: 0;
3251
3256
  }
3252
- .saltTreeNode-selected > .saltTreeNodeTrigger {
3253
- background: var(--salt-selectable-background-selected);
3254
- box-shadow: 0 calc(var(--salt-size-fixed-100) * -1) 0 0 var(--salt-selectable-borderColor-selected), 0 var(--salt-size-fixed-100) 0 0 var(--salt-selectable-borderColor-selected);
3255
- position: relative;
3256
- z-index: var(--salt-zIndex-default);
3257
+ .saltToolbarNextOverflow-menu {
3258
+ display: flex;
3259
+ flex-shrink: 0;
3257
3260
  }
3258
- .saltTreeNode-selected:focus-visible > .saltTreeNodeTrigger,
3259
- .saltTreeNode-selected.saltTreeNode-focusVisible > .saltTreeNodeTrigger {
3260
- background: var(--salt-selectable-background-selected);
3261
+ .saltToolbarNextOverflow-itemHost,
3262
+ .saltToolbarNextOverflow-contentHost {
3263
+ display: contents;
3261
3264
  }
3262
- .saltTreeNode-disabled > .saltTreeNodeTrigger,
3263
- .saltTreeNode-disabled:hover > .saltTreeNodeTrigger {
3264
- opacity: 0.4;
3265
- cursor: var(--salt-cursor-disabled);
3266
- background: var(--salt-selectable-background);
3267
- color: var(--salt-content-primary-foreground);
3265
+ .saltToolbarNextOverflow-trigger {
3266
+ white-space: nowrap;
3267
+ }
3268
+ .saltToolbarNextOverflow-panel {
3269
+ background: var(--salt-container-primary-background);
3270
+ border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-selectable-borderColor-selected);
3271
+ border-radius: var(--salt-palette-corner, 0);
3272
+ box-shadow: var(--salt-overlayable-shadow-popout);
3273
+ box-sizing: border-box;
3274
+ max-width: min(32rem, calc(100vw - var(--salt-spacing-300)));
3275
+ overflow: auto;
3276
+ position: absolute;
3277
+ z-index: var(--salt-zIndex-flyover);
3278
+ }
3279
+ .saltToolbarNextOverflow-floatingDescendant.saltToolbarNextOverflow-floatingDescendant {
3280
+ z-index: calc(var(--salt-zIndex-flyover) + var(--salt-zIndex-default));
3268
3281
  }
3269
- .saltTreeNodeTrigger > .saltTreeNode-checkbox {
3270
- margin-top: var(--saltTreeNodeTrigger-checkboxOffsetY);
3271
- margin-bottom: 0;
3282
+ .saltToolbarNextOverflow-panelContent {
3283
+ align-items: center;
3284
+ display: flex;
3285
+ flex-wrap: wrap;
3286
+ gap: var(--salt-spacing-100);
3287
+ max-width: inherit;
3288
+ min-width: max-content;
3289
+ padding: var(--salt-spacing-100);
3272
3290
  }
3273
- .saltTreeNodeTrigger > .saltTreeNodeExpansionIcon,
3274
- .saltTreeNodeTrigger > .saltTreeNode-icon {
3275
- margin-top: var(--saltTreeNodeTrigger-iconOffsetY);
3291
+ .saltToolbarNextOverflow-panel .saltTooltrayNext[data-align=center],
3292
+ .saltToolbarNextOverflow-panel .saltTooltrayNext[data-align=end] {
3293
+ margin-inline-start: 0;
3294
+ margin-inline-end: 0;
3295
+ }
3296
+ .saltToolbarNextOverflow-panel .saltTooltrayNext > * {
3297
+ inline-size: auto;
3298
+ }
3299
+ .saltToolbarNextOverflow-content > .saltToolbarNextOverflow-slot .saltTooltrayNext[data-align=center],
3300
+ .saltToolbarNextOverflow-content > .saltToolbarNextOverflow-slot .saltTooltrayNext[data-align=end] {
3301
+ margin-inline-start: 0;
3302
+ margin-inline-end: 0;
3303
+ }
3304
+
3305
+ /* src/toolbar-next/TooltrayNext.css */
3306
+ .saltTooltrayNext {
3307
+ display: flex;
3308
+ align-items: center;
3309
+ flex: 0 0 auto;
3310
+ gap: var(--salt-spacing-100);
3311
+ min-width: 0;
3276
3312
  }
3277
- .saltTreeNodeTrigger > .saltIcon {
3278
- margin-top: var(--saltTreeNodeTrigger-iconOffsetY);
3313
+ .saltTooltrayNext > * {
3279
3314
  flex-shrink: 0;
3280
- color: var(--salt-content-primary-foreground);
3315
+ }
3316
+ .saltTooltrayNext[data-align=end] {
3317
+ margin-inline-start: auto;
3318
+ }
3319
+ .saltTooltrayNext[data-align=center] {
3320
+ margin-inline-start: auto;
3321
+ margin-inline-end: auto;
3281
3322
  }
3282
3323
 
3283
3324
  /* src/window/ElectronWindow.css */
@@ -3390,4 +3431,4 @@
3390
3431
  margin: calc(var(--salt-size-unit) / 2) 0;
3391
3432
  }
3392
3433
 
3393
- /* src/4e80e272-9a7e-4873-a06d-4a946b33ff4b.css */
3434
+ /* src/90f79509-9c05-4f28-ba07-621519e16301.css */
package/dist-cjs/index.js CHANGED
@@ -130,10 +130,9 @@ var Toolbar = require('./toolbar/Toolbar.js');
130
130
  var ToolbarButton = require('./toolbar/ToolbarButton.js');
131
131
  var Tooltray = require('./toolbar/Tooltray.js');
132
132
  var ToolbarField = require('./toolbar/toolbar-field/ToolbarField.js');
133
- var Tree = require('./tree/Tree.js');
134
- var TreeNode = require('./tree/TreeNode.js');
135
- var TreeNodeLabel = require('./tree/TreeNodeLabel.js');
136
- var TreeNodeTrigger = require('./tree/TreeNodeTrigger.js');
133
+ var ToolbarContentNext = require('./toolbar-next/ToolbarContentNext.js');
134
+ var ToolbarNext = require('./toolbar-next/ToolbarNext.js');
135
+ var TooltrayNext = require('./toolbar-next/TooltrayNext.js');
137
136
  var ElectronWindow = require('./window/ElectronWindow.js');
138
137
  var WindowContext = require('./window/WindowContext.js');
139
138
  var dateComponents = require('@salt-ds/date-components');
@@ -321,10 +320,9 @@ exports.Toolbar = Toolbar.Toolbar;
321
320
  exports.ToolbarButton = ToolbarButton.ToolbarButton;
322
321
  exports.Tooltray = Tooltray.Tooltray;
323
322
  exports.ToolbarField = ToolbarField.ToolbarField;
324
- exports.Tree = Tree.Tree;
325
- exports.TreeNode = TreeNode.TreeNode;
326
- exports.TreeNodeLabel = TreeNodeLabel.TreeNodeLabel;
327
- exports.TreeNodeTrigger = TreeNodeTrigger.TreeNodeTrigger;
323
+ exports.ToolbarContentNext = ToolbarContentNext.ToolbarContentNext;
324
+ exports.ToolbarNext = ToolbarNext.ToolbarNext;
325
+ exports.TooltrayNext = TooltrayNext.TooltrayNext;
328
326
  exports.ElectronWindow = ElectronWindow.ElectronWindow;
329
327
  exports.Window = WindowContext.Window;
330
328
  exports.WindowContext = WindowContext.WindowContext;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var css_248z = ".saltToolbarContentNext {\n display: flex;\n align-items: center;\n gap: var(--salt-spacing-100);\n min-width: 0;\n flex-shrink: 0;\n}\n\n.saltToolbarContentNext[data-position=\"start\"] {\n justify-content: flex-start;\n}\n\n.saltToolbarContentNext[data-position=\"center\"] {\n justify-content: center;\n}\n\n.saltToolbarContentNext[data-position=\"end\"] {\n justify-content: flex-end;\n}\n\n.saltToolbarContentNext[data-implicit] > .saltTooltrayNext[data-align=\"center\"],\n.saltToolbarContentNext[data-implicit] > .saltTooltrayNext[data-align=\"end\"] {\n margin-inline-start: 0;\n margin-inline-end: 0;\n}\n";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=ToolbarContentNext.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolbarContentNext.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var core = require('@salt-ds/core');
5
+ var styles = require('@salt-ds/styles');
6
+ var window = require('@salt-ds/window');
7
+ var clsx = require('clsx');
8
+ var react = require('react');
9
+ var ToolbarContentNext$1 = require('./ToolbarContentNext.css.js');
10
+
11
+ const withBaseName = core.makePrefixer("saltToolbarContentNext");
12
+ const ToolbarContentNext = react.forwardRef(function ToolbarContentNext2({ children, className, position, ...rest }, ref) {
13
+ const targetWindow = window.useWindow();
14
+ styles.useComponentCssInjection({
15
+ testId: "salt-toolbar-content-next",
16
+ css: ToolbarContentNext$1,
17
+ window: targetWindow
18
+ });
19
+ return /* @__PURE__ */ jsxRuntime.jsx(
20
+ "div",
21
+ {
22
+ className: clsx.clsx(withBaseName(), className),
23
+ ...rest,
24
+ "data-position": position,
25
+ ref,
26
+ children
27
+ }
28
+ );
29
+ });
30
+
31
+ exports.ToolbarContentNext = ToolbarContentNext;
32
+ //# sourceMappingURL=ToolbarContentNext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolbarContentNext.js","sources":["../src/toolbar-next/ToolbarContentNext.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type ComponentPropsWithoutRef, forwardRef } from \"react\";\n\nimport toolbarContentNextCss from \"./ToolbarContentNext.css\";\n\nexport type ToolbarContentNextPosition = \"start\" | \"center\" | \"end\";\n\nexport interface ToolbarContentNextProps\n extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Controls where the content is placed across the full toolbar.\n * If any content uses `\"center\"`, `ToolbarNext` reserves symmetric side space\n * so the center band stays on the toolbar midpoint.\n */\n position: ToolbarContentNextPosition;\n}\n\nconst withBaseName = makePrefixer(\"saltToolbarContentNext\");\n\nexport const ToolbarContentNext = forwardRef<\n HTMLDivElement,\n ToolbarContentNextProps\n>(function ToolbarContentNext({ children, className, position, ...rest }, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-toolbar-content-next\",\n css: toolbarContentNextCss,\n window: targetWindow,\n });\n\n return (\n <div\n className={clsx(withBaseName(), className)}\n {...rest}\n data-position={position}\n ref={ref}\n >\n {children}\n </div>\n );\n});\n"],"names":["makePrefixer","forwardRef","ToolbarContentNext","useWindow","useComponentCssInjection","toolbarContentNextCss","jsx","clsx"],"mappings":";;;;;;;;;;AAoBA,MAAM,YAAA,GAAeA,kBAAa,wBAAwB,CAAA;AAEnD,MAAM,kBAAA,GAAqBC,gBAAA,CAGhC,SAASC,mBAAAA,CAAmB,EAAE,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,GAAG,IAAA,EAAK,EAAG,GAAA,EAAK;AAC7E,EAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,EAAAC,+BAAA,CAAyB;AAAA,IACvB,MAAA,EAAQ,2BAAA;AAAA,IACR,GAAA,EAAKC,oBAAA;AAAA,IACL,MAAA,EAAQ;AAAA,GACT,CAAA;AAED,EAAA,uBACEC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWC,SAAA,CAAK,YAAA,EAAa,EAAG,SAAS,CAAA;AAAA,MACxC,GAAG,IAAA;AAAA,MACJ,eAAA,EAAe,QAAA;AAAA,MACf,GAAA;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ,CAAC;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var css_248z = ".saltToolbarNext {\n box-sizing: border-box;\n inline-size: 100%;\n min-width: 0;\n position: relative;\n}\n\n.saltToolbarNext-layout {\n align-items: center;\n --saltToolbarNext-band-gap: var(--salt-spacing-100);\n}\n\n.saltToolbarNext-layout:not([data-centered]) {\n display: flex;\n column-gap: var(--saltToolbarNext-band-gap);\n}\n\n.saltToolbarNext-layout[data-centered] {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);\n}\n\n.saltToolbarNext-band {\n display: flex;\n align-items: center;\n gap: var(--saltToolbarNext-band-gap);\n min-width: 0;\n}\n\n.saltToolbarNext-layout:not([data-centered]) > .saltToolbarNext-band[data-band-position=\"end\"] {\n justify-content: flex-end;\n margin-inline-start: auto;\n}\n\n.saltToolbarNext-layout[data-centered] > .saltToolbarNext-band[data-band-position=\"start\"] {\n grid-column: 1;\n}\n\n.saltToolbarNext-layout[data-centered] > .saltToolbarNext-band[data-band-position=\"center\"] {\n grid-column: 2;\n justify-content: center;\n}\n\n.saltToolbarNext-layout[data-centered] > .saltToolbarNext-band[data-band-position=\"end\"] {\n grid-column: 3;\n justify-content: flex-end;\n}\n\n.saltToolbarNext-fallback {\n display: flex;\n align-items: center;\n gap: var(--salt-spacing-100);\n}\n\n.saltToolbarNext-layout > * {\n min-width: 0;\n}\n\n.saltToolbarNext-primary {\n --toolbarNext-background: var(--salt-container-primary-background);\n --toolbarNext-borderColor: var(--salt-container-primary-borderColor);\n}\n\n.saltToolbarNext-secondary {\n --toolbarNext-background: var(--salt-container-secondary-background);\n --toolbarNext-borderColor: var(--salt-container-secondary-borderColor);\n}\n\n.saltToolbarNext-tertiary {\n --toolbarNext-background: var(--salt-container-tertiary-background);\n --toolbarNext-borderColor: var(--salt-container-tertiary-borderColor);\n}\n\n.saltToolbarNext-bordered {\n background: var(--saltToolbarNext-background, var(--toolbarNext-background));\n border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--saltToolbarNext-borderColor, var(--toolbarNext-borderColor));\n border-radius: var(--salt-palette-corner, 0);\n padding: var(--salt-spacing-100);\n}\n\n.saltToolbarNext-transparent {\n background: transparent;\n border: none;\n padding: 0;\n}\n\n.saltToolbarNext-measurements {\n display: flex;\n gap: var(--salt-spacing-100);\n position: absolute;\n visibility: hidden;\n pointer-events: none;\n inset: 0 auto auto 0;\n block-size: 0;\n overflow: hidden;\n}\n\n.saltToolbarNext-measureTrigger {\n white-space: nowrap;\n}\n";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=ToolbarNext.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolbarNext.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}