@salt-ds/core 1.64.1 → 1.65.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 (82) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/css/salt-core.css +241 -3
  3. package/dist-cjs/avatar/Avatar.css.js +1 -1
  4. package/dist-cjs/avatar/Avatar.js +12 -2
  5. package/dist-cjs/avatar/Avatar.js.map +1 -1
  6. package/dist-cjs/index.js +6 -0
  7. package/dist-cjs/index.js.map +1 -1
  8. package/dist-cjs/toolbar/Toolbar.css.js +6 -0
  9. package/dist-cjs/toolbar/Toolbar.css.js.map +1 -0
  10. package/dist-cjs/toolbar/Toolbar.js +401 -0
  11. package/dist-cjs/toolbar/Toolbar.js.map +1 -0
  12. package/dist-cjs/toolbar/ToolbarContent.css.js +6 -0
  13. package/dist-cjs/toolbar/ToolbarContent.css.js.map +1 -0
  14. package/dist-cjs/toolbar/ToolbarContent.js +38 -0
  15. package/dist-cjs/toolbar/ToolbarContent.js.map +1 -0
  16. package/dist-cjs/toolbar/ToolbarOverflow.css.js +6 -0
  17. package/dist-cjs/toolbar/ToolbarOverflow.css.js.map +1 -0
  18. package/dist-cjs/toolbar/ToolbarOverflow.js +712 -0
  19. package/dist-cjs/toolbar/ToolbarOverflow.js.map +1 -0
  20. package/dist-cjs/toolbar/ToolbarOverflowFloatingBoundary.js +160 -0
  21. package/dist-cjs/toolbar/ToolbarOverflowFloatingBoundary.js.map +1 -0
  22. package/dist-cjs/toolbar/Tooltray.css.js +6 -0
  23. package/dist-cjs/toolbar/Tooltray.css.js.map +1 -0
  24. package/dist-cjs/toolbar/Tooltray.js +59 -0
  25. package/dist-cjs/toolbar/Tooltray.js.map +1 -0
  26. package/dist-cjs/toolbar/toolbarKeyboardUtils.js +400 -0
  27. package/dist-cjs/toolbar/toolbarKeyboardUtils.js.map +1 -0
  28. package/dist-cjs/toolbar/toolbarUtils.js +220 -0
  29. package/dist-cjs/toolbar/toolbarUtils.js.map +1 -0
  30. package/dist-cjs/toolbar/useToolbarKeyboardNavigation.js +309 -0
  31. package/dist-cjs/toolbar/useToolbarKeyboardNavigation.js.map +1 -0
  32. package/dist-cjs/toolbar/useToolbarOverflow.js +750 -0
  33. package/dist-cjs/toolbar/useToolbarOverflow.js.map +1 -0
  34. package/dist-cjs/utils/mergeProps.js +2 -0
  35. package/dist-cjs/utils/mergeProps.js.map +1 -1
  36. package/dist-es/avatar/Avatar.css.js +1 -1
  37. package/dist-es/avatar/Avatar.js +12 -2
  38. package/dist-es/avatar/Avatar.js.map +1 -1
  39. package/dist-es/index.js +3 -0
  40. package/dist-es/index.js.map +1 -1
  41. package/dist-es/toolbar/Toolbar.css.js +4 -0
  42. package/dist-es/toolbar/Toolbar.css.js.map +1 -0
  43. package/dist-es/toolbar/Toolbar.js +399 -0
  44. package/dist-es/toolbar/Toolbar.js.map +1 -0
  45. package/dist-es/toolbar/ToolbarContent.css.js +4 -0
  46. package/dist-es/toolbar/ToolbarContent.css.js.map +1 -0
  47. package/dist-es/toolbar/ToolbarContent.js +36 -0
  48. package/dist-es/toolbar/ToolbarContent.js.map +1 -0
  49. package/dist-es/toolbar/ToolbarOverflow.css.js +4 -0
  50. package/dist-es/toolbar/ToolbarOverflow.css.js.map +1 -0
  51. package/dist-es/toolbar/ToolbarOverflow.js +707 -0
  52. package/dist-es/toolbar/ToolbarOverflow.js.map +1 -0
  53. package/dist-es/toolbar/ToolbarOverflowFloatingBoundary.js +154 -0
  54. package/dist-es/toolbar/ToolbarOverflowFloatingBoundary.js.map +1 -0
  55. package/dist-es/toolbar/Tooltray.css.js +4 -0
  56. package/dist-es/toolbar/Tooltray.css.js.map +1 -0
  57. package/dist-es/toolbar/Tooltray.js +57 -0
  58. package/dist-es/toolbar/Tooltray.js.map +1 -0
  59. package/dist-es/toolbar/toolbarKeyboardUtils.js +381 -0
  60. package/dist-es/toolbar/toolbarKeyboardUtils.js.map +1 -0
  61. package/dist-es/toolbar/toolbarUtils.js +216 -0
  62. package/dist-es/toolbar/toolbarUtils.js.map +1 -0
  63. package/dist-es/toolbar/useToolbarKeyboardNavigation.js +307 -0
  64. package/dist-es/toolbar/useToolbarKeyboardNavigation.js.map +1 -0
  65. package/dist-es/toolbar/useToolbarOverflow.js +748 -0
  66. package/dist-es/toolbar/useToolbarOverflow.js.map +1 -0
  67. package/dist-es/utils/mergeProps.js +2 -0
  68. package/dist-es/utils/mergeProps.js.map +1 -1
  69. package/dist-types/avatar/Avatar.d.ts +5 -0
  70. package/dist-types/index.d.ts +1 -0
  71. package/dist-types/toolbar/Toolbar.d.ts +12 -0
  72. package/dist-types/toolbar/ToolbarContent.d.ts +10 -0
  73. package/dist-types/toolbar/ToolbarOverflow.d.ts +34 -0
  74. package/dist-types/toolbar/ToolbarOverflowFloatingBoundary.d.ts +16 -0
  75. package/dist-types/toolbar/Tooltray.d.ts +36 -0
  76. package/dist-types/toolbar/index.d.ts +3 -0
  77. package/dist-types/toolbar/toolbarKeyboardUtils.d.ts +39 -0
  78. package/dist-types/toolbar/toolbarUtils.d.ts +44 -0
  79. package/dist-types/toolbar/useToolbarKeyboardNavigation.d.ts +42 -0
  80. package/dist-types/toolbar/useToolbarOverflow.d.ts +38 -0
  81. package/dist-types/utils/mergeProps.d.ts +4 -0
  82. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,55 @@
1
1
  # @salt-ds/core
2
2
 
3
+ ## 1.65.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 2516755: Added `Toolbar`, `ToolbarContent`, and `Tooltray` for composing horizontal toolbars with responsive overflow, grouped controls, and keyboard navigation.
8
+
9
+ Renamed from `ToolbarNext`, `ToolbarContentNext`, and `TooltrayNext` in lab.
10
+
11
+ **Basic Toolbar** — place `Tooltray` components directly inside `Toolbar`; use `align="end"` for trailing actions
12
+
13
+ ```tsx
14
+ import { Toolbar, Tooltray } from "@salt-ds/core";
15
+
16
+ <Toolbar aria-label="Data controls">
17
+ <Tooltray>{/* controls */}</Tooltray>
18
+ <Tooltray align="end" role="group" aria-label="View and actions">
19
+ {/* controls */}
20
+ </Tooltray>
21
+ </Toolbar>;
22
+ ```
23
+
24
+ **Centered Toolbar With Named Overflow** — use `ToolbarContent` when you need explicit start, center, and end regions
25
+
26
+ ```tsx
27
+ import { ToolbarContent, Toolbar, Tooltray } from "@salt-ds/core";
28
+
29
+ <Toolbar aria-label="Centered actions">
30
+ <ToolbarContent position="start">
31
+ <Tooltray overflowGroup="filters" overflowLabel="Filters">
32
+ {/* controls */}
33
+ </Tooltray>
34
+ </ToolbarContent>
35
+ <ToolbarContent position="center">
36
+ <Tooltray overflowMode="none" role="group" aria-label="View options">
37
+ {/* controls */}
38
+ </Tooltray>
39
+ </ToolbarContent>
40
+ <ToolbarContent position="end">
41
+ <Tooltray align="end">{/* controls */}</Tooltray>
42
+ </ToolbarContent>
43
+ </Toolbar>;
44
+ ```
45
+
46
+ - 027f8c4: Added a `render` prop to `Avatar` so teams can render the avatar root as a custom interactive element such as a button or link.
47
+
48
+ ### Patch Changes
49
+
50
+ - 906c94e: Fixed `Avatar` to use the notation text characteristic tokens for `font-family` and `font-weight`, aligning with its existing `font-size` and `line-height` values.
51
+ - 027f8c4: Fixed `mergeProps` discarding the host component's inline `style` when the render element supplied its own `style`. Both `style` objects are now shallow-merged, so CSS custom properties set internally by the component are preserved. Conflicting keys still resolve in favor of the render element's value.
52
+
3
53
  ## 1.64.1
4
54
 
5
55
  ### Patch Changes
package/css/salt-core.css CHANGED
@@ -129,13 +129,19 @@
129
129
  background: var(--saltAvatar-background, var(--avatar-background));
130
130
  font-size: var(--avatar-fontSize);
131
131
  line-height: var(--saltAvatar-lineHeight, var(--salt-text-notation-lineHeight));
132
- font-family: var(--salt-text-fontFamily);
133
- font-weight: var(--salt-text-fontWeight);
132
+ font-family: var(--salt-text-notation-fontFamily);
133
+ font-weight: var(--salt-text-notation-fontWeight);
134
134
  width: var(--avatar-container-size);
135
135
  min-width: var(--avatar-container-size);
136
136
  height: var(--avatar-container-size);
137
137
  min-height: var(--avatar-container-size);
138
138
  border-radius: var(--saltAvatar-borderRadius, var(--salt-palette-corner-strongest, 50%));
139
+ border: none;
140
+ padding: 0;
141
+ appearance: none;
142
+ -webkit-appearance: none;
143
+ text-decoration: none;
144
+ position: relative;
139
145
  display: flex;
140
146
  justify-content: center;
141
147
  align-items: center;
@@ -214,6 +220,38 @@
214
220
  width: 100%;
215
221
  height: 100%;
216
222
  }
223
+ .saltAvatar:focus-visible {
224
+ outline-offset: var(--salt-spacing-fixed-100);
225
+ }
226
+ button.saltAvatar,
227
+ a.saltAvatar {
228
+ cursor: var(--salt-cursor-hover);
229
+ }
230
+ button.saltAvatar:disabled {
231
+ cursor: var(--salt-cursor-disabled);
232
+ }
233
+ button.saltAvatar::after,
234
+ a.saltAvatar::after {
235
+ content: "";
236
+ position: absolute;
237
+ inset: 0;
238
+ border-radius: inherit;
239
+ pointer-events: none;
240
+ background: transparent;
241
+ }
242
+ .saltAvatar[aria-expanded=true][aria-haspopup=menu]::after,
243
+ .saltAvatar[aria-expanded=true][aria-haspopup=dialog]::after {
244
+ background: var(--salt-overlayable-background-hover);
245
+ }
246
+ @media (hover: hover) {
247
+ button.saltAvatar:hover::after,
248
+ a.saltAvatar:hover::after {
249
+ background: var(--salt-overlayable-background-hover);
250
+ }
251
+ button.saltAvatar:disabled:hover::after {
252
+ background: transparent;
253
+ }
254
+ }
217
255
 
218
256
  /* src/badge/Badge.css */
219
257
  .saltBadge {
@@ -5510,6 +5548,206 @@ label.saltText small,
5510
5548
  outline-offset: var(--salt-size-fixed-100);
5511
5549
  }
5512
5550
 
5551
+ /* src/toolbar/Toolbar.css */
5552
+ .saltToolbar {
5553
+ box-sizing: border-box;
5554
+ inline-size: 100%;
5555
+ min-width: 0;
5556
+ position: relative;
5557
+ }
5558
+ .saltToolbar-layout {
5559
+ align-items: center;
5560
+ --saltToolbar-band-gap: var(--salt-spacing-100);
5561
+ }
5562
+ .saltToolbar-layout:not([data-centered]) {
5563
+ display: flex;
5564
+ column-gap: var(--saltToolbar-band-gap);
5565
+ }
5566
+ .saltToolbar-layout[data-centered] {
5567
+ display: grid;
5568
+ grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
5569
+ }
5570
+ .saltToolbar-band {
5571
+ display: flex;
5572
+ align-items: center;
5573
+ gap: var(--saltToolbar-band-gap);
5574
+ min-width: 0;
5575
+ }
5576
+ .saltToolbar-layout:not([data-centered]) > .saltToolbar-band[data-band-position=end] {
5577
+ justify-content: flex-end;
5578
+ margin-inline-start: auto;
5579
+ }
5580
+ .saltToolbar-layout[data-centered] > .saltToolbar-band[data-band-position=start] {
5581
+ grid-column: 1;
5582
+ }
5583
+ .saltToolbar-layout[data-centered] > .saltToolbar-band[data-band-position=center] {
5584
+ grid-column: 2;
5585
+ justify-content: center;
5586
+ }
5587
+ .saltToolbar-layout[data-centered] > .saltToolbar-band[data-band-position=end] {
5588
+ grid-column: 3;
5589
+ justify-content: flex-end;
5590
+ }
5591
+ .saltToolbar-fallback {
5592
+ display: flex;
5593
+ align-items: center;
5594
+ gap: var(--salt-spacing-100);
5595
+ }
5596
+ .saltToolbar-layout > * {
5597
+ min-width: 0;
5598
+ }
5599
+ .saltToolbar-primary {
5600
+ --toolbar-background: var(--salt-container-primary-background);
5601
+ --toolbar-borderColor: var(--salt-container-primary-borderColor);
5602
+ }
5603
+ .saltToolbar-secondary {
5604
+ --toolbar-background: var(--salt-container-secondary-background);
5605
+ --toolbar-borderColor: var(--salt-container-secondary-borderColor);
5606
+ }
5607
+ .saltToolbar-tertiary {
5608
+ --toolbar-background: var(--salt-container-tertiary-background);
5609
+ --toolbar-borderColor: var(--salt-container-tertiary-borderColor);
5610
+ }
5611
+ .saltToolbar-bordered {
5612
+ background: var(--saltToolbar-background, var(--toolbar-background));
5613
+ border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--saltToolbar-borderColor, var(--toolbar-borderColor));
5614
+ border-radius: var(--salt-palette-corner, 0);
5615
+ padding: var(--salt-spacing-100);
5616
+ }
5617
+ .saltToolbar-transparent {
5618
+ background: transparent;
5619
+ border: none;
5620
+ padding: 0;
5621
+ }
5622
+ .saltToolbar-measurements {
5623
+ display: flex;
5624
+ gap: var(--salt-spacing-100);
5625
+ position: absolute;
5626
+ visibility: hidden;
5627
+ pointer-events: none;
5628
+ inset: 0 auto auto 0;
5629
+ block-size: 0;
5630
+ overflow: hidden;
5631
+ }
5632
+ .saltToolbar-measureTrigger {
5633
+ white-space: nowrap;
5634
+ }
5635
+
5636
+ /* src/toolbar/ToolbarContent.css */
5637
+ .saltToolbarContent {
5638
+ display: flex;
5639
+ align-items: center;
5640
+ gap: var(--salt-spacing-100);
5641
+ min-width: 0;
5642
+ flex-shrink: 0;
5643
+ }
5644
+ .saltToolbarContent[data-position=start] {
5645
+ justify-content: flex-start;
5646
+ }
5647
+ .saltToolbarContent[data-position=center] {
5648
+ justify-content: center;
5649
+ }
5650
+ .saltToolbarContent[data-position=end] {
5651
+ justify-content: flex-end;
5652
+ }
5653
+ .saltToolbarContent[data-implicit] > .saltTooltray[data-align=center],
5654
+ .saltToolbarContent[data-implicit] > .saltTooltray[data-align=end] {
5655
+ margin-inline-start: 0;
5656
+ margin-inline-end: 0;
5657
+ }
5658
+
5659
+ /* src/toolbar/ToolbarOverflow.css */
5660
+ .saltToolbarOverflow-content {
5661
+ position: relative;
5662
+ }
5663
+ .saltToolbarOverflow-slot,
5664
+ .saltToolbarOverflow-panelItem {
5665
+ align-items: center;
5666
+ display: flex;
5667
+ flex-shrink: 0;
5668
+ gap: var(--salt-spacing-100);
5669
+ min-width: 0;
5670
+ }
5671
+ .saltToolbarOverflow-slot[data-align=end] {
5672
+ margin-inline-start: auto;
5673
+ }
5674
+ .saltToolbarOverflow-slot[data-align=center] {
5675
+ margin-inline-start: auto;
5676
+ margin-inline-end: auto;
5677
+ }
5678
+ .saltToolbarOverflow-item {
5679
+ align-items: center;
5680
+ display: flex;
5681
+ flex-shrink: 0;
5682
+ min-width: 0;
5683
+ }
5684
+ .saltToolbarOverflow-menu {
5685
+ display: flex;
5686
+ flex-shrink: 0;
5687
+ }
5688
+ .saltToolbarOverflow-itemHost,
5689
+ .saltToolbarOverflow-contentHost {
5690
+ display: contents;
5691
+ }
5692
+ .saltToolbarOverflow-trigger {
5693
+ white-space: nowrap;
5694
+ }
5695
+ .saltToolbarOverflow-panel {
5696
+ background: var(--salt-container-primary-background);
5697
+ border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-selectable-borderColor-selected);
5698
+ border-radius: var(--salt-palette-corner, 0);
5699
+ box-shadow: var(--salt-overlayable-shadow-popout);
5700
+ box-sizing: border-box;
5701
+ max-width: min(32rem, calc(100vw - var(--salt-spacing-300)));
5702
+ overflow: auto;
5703
+ position: absolute;
5704
+ z-index: var(--salt-zIndex-flyover);
5705
+ }
5706
+ .saltToolbarOverflow-floatingDescendant.saltToolbarOverflow-floatingDescendant {
5707
+ z-index: calc(var(--salt-zIndex-flyover) + var(--salt-zIndex-default));
5708
+ }
5709
+ .saltToolbarOverflow-panelContent {
5710
+ align-items: center;
5711
+ display: flex;
5712
+ flex-wrap: wrap;
5713
+ gap: var(--salt-spacing-100);
5714
+ max-width: inherit;
5715
+ min-width: max-content;
5716
+ padding: var(--salt-spacing-100);
5717
+ }
5718
+ .saltToolbarOverflow-panel .saltTooltray[data-align=center],
5719
+ .saltToolbarOverflow-panel .saltTooltray[data-align=end] {
5720
+ margin-inline-start: 0;
5721
+ margin-inline-end: 0;
5722
+ }
5723
+ .saltToolbarOverflow-panel .saltTooltray > * {
5724
+ inline-size: auto;
5725
+ }
5726
+ .saltToolbarOverflow-content > .saltToolbarOverflow-slot .saltTooltray[data-align=center],
5727
+ .saltToolbarOverflow-content > .saltToolbarOverflow-slot .saltTooltray[data-align=end] {
5728
+ margin-inline-start: 0;
5729
+ margin-inline-end: 0;
5730
+ }
5731
+
5732
+ /* src/toolbar/Tooltray.css */
5733
+ .saltTooltray {
5734
+ display: flex;
5735
+ align-items: center;
5736
+ flex: 0 0 auto;
5737
+ gap: var(--salt-spacing-100);
5738
+ min-width: 0;
5739
+ }
5740
+ .saltTooltray > * {
5741
+ flex-shrink: 0;
5742
+ }
5743
+ .saltTooltray[data-align=end] {
5744
+ margin-inline-start: auto;
5745
+ }
5746
+ .saltTooltray[data-align=center] {
5747
+ margin-inline-start: auto;
5748
+ margin-inline-end: auto;
5749
+ }
5750
+
5513
5751
  /* src/tooltip/Tooltip.css */
5514
5752
  .saltTooltip {
5515
5753
  --tooltip-background: var(--saltTooltip-background, var(--salt-container-primary-background));
@@ -6494,4 +6732,4 @@ label.saltText small,
6494
6732
  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);
6495
6733
  }
6496
6734
 
6497
- /* src/8da7d430-1995-4d8c-8a61-22f6edca92c1.css */
6735
+ /* src/92a1d535-e903-4ee6-a57a-19ffbbd587e6.css */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = "/* Default variables applied to the root element */\n.saltAvatar {\n --avatar-size-multiplier: var(--saltAvatar-size-multiplier, 1);\n --avatar-base-size: var(--salt-size-base);\n --avatar-base-fontSize: var(--saltAvatar-fontSize, var(--salt-text-notation-fontSize));\n --avatar-container-size: calc(var(--avatar-base-size) * var(--avatar-size-multiplier));\n --avatar-fontSize: calc(var(--avatar-base-fontSize) * var(--avatar-size-multiplier));\n /* Icon styling */\n --saltIcon-size: calc(var(--avatar-container-size) / 2);\n}\n\n/* Style applied to the root element */\n.saltAvatar {\n color: var(--saltAvatar-foreground, var(--salt-content-bold-foreground));\n background: var(--saltAvatar-background, var(--avatar-background));\n font-size: var(--avatar-fontSize);\n line-height: var(--saltAvatar-lineHeight, var(--salt-text-notation-lineHeight));\n font-family: var(--salt-text-fontFamily);\n font-weight: var(--salt-text-fontWeight);\n width: var(--avatar-container-size);\n min-width: var(--avatar-container-size);\n height: var(--avatar-container-size);\n min-height: var(--avatar-container-size);\n border-radius: var(--saltAvatar-borderRadius, var(--salt-palette-corner-strongest, 50%));\n\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n user-select: none;\n}\n\n.saltAvatar-accent {\n --avatar-background: var(--salt-sentiment-accent-background);\n}\n\n.saltAvatar-category-1 {\n --avatar-background: var(--salt-category-1-bold-background);\n}\n.saltAvatar-category-2 {\n --avatar-background: var(--salt-category-2-bold-background);\n}\n\n.saltAvatar-category-3 {\n --avatar-background: var(--salt-category-3-bold-background);\n}\n\n.saltAvatar-category-4 {\n --avatar-background: var(--salt-category-4-bold-background);\n}\n\n.saltAvatar-category-5 {\n --avatar-background: var(--salt-category-5-bold-background);\n}\n\n.saltAvatar-category-6 {\n --avatar-background: var(--salt-category-6-bold-background);\n}\n\n.saltAvatar-category-7 {\n --avatar-background: var(--salt-category-7-bold-background);\n}\n\n.saltAvatar-category-8 {\n --avatar-background: var(--salt-category-8-bold-background);\n}\n\n.saltAvatar-category-9 {\n --avatar-background: var(--salt-category-9-bold-background);\n}\n\n.saltAvatar-category-10 {\n --avatar-background: var(--salt-category-10-bold-background);\n}\n.saltAvatar-category-11 {\n --avatar-background: var(--salt-category-11-bold-background);\n}\n.saltAvatar-category-12 {\n --avatar-background: var(--salt-category-12-bold-background);\n}\n.saltAvatar-category-13 {\n --avatar-background: var(--salt-category-13-bold-background);\n}\n.saltAvatar-category-14 {\n --avatar-background: var(--salt-category-14-bold-background);\n}\n.saltAvatar-category-15 {\n --avatar-background: var(--salt-category-15-bold-background);\n}\n.saltAvatar-category-16 {\n --avatar-background: var(--salt-category-16-bold-background);\n}\n.saltAvatar-category-17 {\n --avatar-background: var(--salt-category-17-bold-background);\n}\n.saltAvatar-category-18 {\n --avatar-background: var(--salt-category-18-bold-background);\n}\n.saltAvatar-category-19 {\n --avatar-background: var(--salt-category-19-bold-background);\n}\n.saltAvatar-category-20 {\n --avatar-background: var(--salt-category-20-bold-background);\n}\n\n.saltAvatar:has(img),\n.saltAvatar-withImage {\n --avatar-background: none;\n}\n\n/* Style applied to the image/svg element. We specifically allow SVGs as the Avatar image to enable SVGs such as Flags to take up the full Avatar space */\n.saltAvatar > img,\n.saltAvatar > svg:not(.saltIcon) {\n width: 100%;\n height: 100%;\n}\n";
3
+ var css_248z = "/* Default variables applied to the root element */\n.saltAvatar {\n --avatar-size-multiplier: var(--saltAvatar-size-multiplier, 1);\n --avatar-base-size: var(--salt-size-base);\n --avatar-base-fontSize: var(--saltAvatar-fontSize, var(--salt-text-notation-fontSize));\n --avatar-container-size: calc(var(--avatar-base-size) * var(--avatar-size-multiplier));\n --avatar-fontSize: calc(var(--avatar-base-fontSize) * var(--avatar-size-multiplier));\n /* Icon styling */\n --saltIcon-size: calc(var(--avatar-container-size) / 2);\n}\n\n/* Style applied to the root element */\n.saltAvatar {\n color: var(--saltAvatar-foreground, var(--salt-content-bold-foreground));\n background: var(--saltAvatar-background, var(--avatar-background));\n font-size: var(--avatar-fontSize);\n line-height: var(--saltAvatar-lineHeight, var(--salt-text-notation-lineHeight));\n font-family: var(--salt-text-notation-fontFamily);\n font-weight: var(--salt-text-notation-fontWeight);\n width: var(--avatar-container-size);\n min-width: var(--avatar-container-size);\n height: var(--avatar-container-size);\n min-height: var(--avatar-container-size);\n border-radius: var(--saltAvatar-borderRadius, var(--salt-palette-corner-strongest, 50%));\n border: none;\n padding: 0;\n appearance: none;\n -webkit-appearance: none;\n text-decoration: none;\n position: relative;\n\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n user-select: none;\n}\n\n.saltAvatar-accent {\n --avatar-background: var(--salt-sentiment-accent-background);\n}\n\n.saltAvatar-category-1 {\n --avatar-background: var(--salt-category-1-bold-background);\n}\n.saltAvatar-category-2 {\n --avatar-background: var(--salt-category-2-bold-background);\n}\n\n.saltAvatar-category-3 {\n --avatar-background: var(--salt-category-3-bold-background);\n}\n\n.saltAvatar-category-4 {\n --avatar-background: var(--salt-category-4-bold-background);\n}\n\n.saltAvatar-category-5 {\n --avatar-background: var(--salt-category-5-bold-background);\n}\n\n.saltAvatar-category-6 {\n --avatar-background: var(--salt-category-6-bold-background);\n}\n\n.saltAvatar-category-7 {\n --avatar-background: var(--salt-category-7-bold-background);\n}\n\n.saltAvatar-category-8 {\n --avatar-background: var(--salt-category-8-bold-background);\n}\n\n.saltAvatar-category-9 {\n --avatar-background: var(--salt-category-9-bold-background);\n}\n\n.saltAvatar-category-10 {\n --avatar-background: var(--salt-category-10-bold-background);\n}\n.saltAvatar-category-11 {\n --avatar-background: var(--salt-category-11-bold-background);\n}\n.saltAvatar-category-12 {\n --avatar-background: var(--salt-category-12-bold-background);\n}\n.saltAvatar-category-13 {\n --avatar-background: var(--salt-category-13-bold-background);\n}\n.saltAvatar-category-14 {\n --avatar-background: var(--salt-category-14-bold-background);\n}\n.saltAvatar-category-15 {\n --avatar-background: var(--salt-category-15-bold-background);\n}\n.saltAvatar-category-16 {\n --avatar-background: var(--salt-category-16-bold-background);\n}\n.saltAvatar-category-17 {\n --avatar-background: var(--salt-category-17-bold-background);\n}\n.saltAvatar-category-18 {\n --avatar-background: var(--salt-category-18-bold-background);\n}\n.saltAvatar-category-19 {\n --avatar-background: var(--salt-category-19-bold-background);\n}\n.saltAvatar-category-20 {\n --avatar-background: var(--salt-category-20-bold-background);\n}\n\n.saltAvatar:has(img),\n.saltAvatar-withImage {\n --avatar-background: none;\n}\n\n/* Style applied to the image/svg element. We specifically allow SVGs as the Avatar image to enable SVGs such as Flags to take up the full Avatar space */\n.saltAvatar > img,\n.saltAvatar > svg:not(.saltIcon) {\n width: 100%;\n height: 100%;\n}\n\n.saltAvatar:focus-visible {\n outline-offset: var(--salt-spacing-fixed-100);\n}\n\nbutton.saltAvatar,\na.saltAvatar {\n cursor: var(--salt-cursor-hover);\n}\n\nbutton.saltAvatar:disabled {\n cursor: var(--salt-cursor-disabled);\n}\n\nbutton.saltAvatar::after,\na.saltAvatar::after {\n content: \"\";\n position: absolute;\n inset: 0;\n border-radius: inherit;\n pointer-events: none;\n background: transparent;\n}\n\n.saltAvatar[aria-expanded=\"true\"][aria-haspopup=\"menu\"]::after,\n.saltAvatar[aria-expanded=\"true\"][aria-haspopup=\"dialog\"]::after {\n background: var(--salt-overlayable-background-hover);\n}\n\n@media (hover: hover) {\n button.saltAvatar:hover::after,\n a.saltAvatar:hover::after {\n background: var(--salt-overlayable-background-hover);\n }\n\n button.saltAvatar:disabled:hover::after {\n background: transparent;\n }\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=Avatar.css.js.map
@@ -7,6 +7,7 @@ var clsx = require('clsx');
7
7
  var React = require('react');
8
8
  var SemanticIconProvider = require('../semantic-icon-provider/SemanticIconProvider.js');
9
9
  var makePrefixer = require('../utils/makePrefixer.js');
10
+ var renderProps = require('../utils/renderProps.js');
10
11
  require('../utils/useFloatingUI/useFloatingUI.js');
11
12
  require('../utils/useId.js');
12
13
  require('../salt-provider/SaltProvider.js');
@@ -16,6 +17,11 @@ var useAvatarImage = require('./useAvatarImage.js');
16
17
 
17
18
  const withBaseName = makePrefixer.makePrefixer("saltAvatar");
18
19
  const DEFAULT_AVATAR_SIZE = 2;
20
+ const AvatarAction = React.forwardRef(
21
+ function AvatarAction2(props, ref) {
22
+ return renderProps.renderProps("div", { ...props, ref });
23
+ }
24
+ );
19
25
  const defaultNameToInitials = (name) => name == null ? void 0 : name.split(" ").slice(0, 2).map((n) => n[0]).join("").toUpperCase();
20
26
  const Avatar = React.forwardRef(function Avatar2({
21
27
  className,
@@ -27,6 +33,7 @@ const Avatar = React.forwardRef(function Avatar2({
27
33
  size = DEFAULT_AVATAR_SIZE,
28
34
  style: styleProp,
29
35
  fallbackIcon: fallbackIconProp,
36
+ render,
30
37
  ...rest
31
38
  }, ref) {
32
39
  const targetWindow = window.useWindow();
@@ -50,14 +57,17 @@ const Avatar = React.forwardRef(function Avatar2({
50
57
  children = childrenProp;
51
58
  }
52
59
  const avatarInitials = nameToInitials(name);
53
- const ariaProps = name ? {
60
+ const ariaProps = name ? render ? {
61
+ "aria-label": name
62
+ } : {
54
63
  role: "img",
55
64
  "aria-label": name
56
65
  } : {};
57
66
  return /* @__PURE__ */ jsxRuntime.jsx(
58
- "div",
67
+ AvatarAction,
59
68
  {
60
69
  ref,
70
+ render,
61
71
  style,
62
72
  className: clsx.clsx(
63
73
  withBaseName(),
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.js","sources":["../src/avatar/Avatar.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { useIcon } from \"../semantic-icon-provider\";\nimport { makePrefixer } from \"../utils\";\nimport avatarCss from \"./Avatar.css\";\nimport { useAvatarImage } from \"./useAvatarImage\";\n\nexport type NameToInitials = (name?: string) => string;\n\nexport interface AvatarProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * The name that Avatar represents.\n */\n name?: string;\n /**\n * Defines the function that gets initials. Default is capital first letter of each separate word in name.\n * If a function is not passed or returns undefined, Avatar will default to Icon.\n */\n nameToInitials?: NameToInitials;\n /**\n * Image src of Avatar.\n */\n src?: string;\n /**\n * Multiplier for the base avatar.\n */\n size?: number;\n /**\n * Icon to be used as a default item. Defaults to `UserIcon`.\n */\n fallbackIcon?: ReactNode;\n /**\n * Changes Avatar's color.\n */\n color?:\n | \"accent\"\n | \"category-1\"\n | \"category-2\"\n | \"category-3\"\n | \"category-4\"\n | \"category-5\"\n | \"category-6\"\n | \"category-7\"\n | \"category-8\"\n | \"category-9\"\n | \"category-10\"\n | \"category-11\"\n | \"category-12\"\n | \"category-13\"\n | \"category-14\"\n | \"category-15\"\n | \"category-16\"\n | \"category-17\"\n | \"category-18\"\n | \"category-19\"\n | \"category-20\";\n}\n\nconst withBaseName = makePrefixer(\"saltAvatar\");\nconst DEFAULT_AVATAR_SIZE = 2; // medium\n\nconst defaultNameToInitials = (name?: string) =>\n name\n ?.split(\" \")\n .slice(0, 2)\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase();\n\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\n {\n className,\n children: childrenProp,\n color = \"accent\",\n name,\n nameToInitials = defaultNameToInitials,\n src,\n size = DEFAULT_AVATAR_SIZE,\n style: styleProp,\n fallbackIcon: fallbackIconProp,\n ...rest\n },\n ref,\n) {\n const targetWindow = useWindow();\n const { UserIcon } = useIcon();\n\n const fallbackIcon =\n fallbackIconProp === undefined ? (\n <UserIcon aria-hidden />\n ) : (\n fallbackIconProp\n );\n\n useComponentCssInjection({\n testId: \"salt-avatar\",\n css: avatarCss,\n window: targetWindow,\n });\n\n let children: ReactNode;\n\n const style = {\n ...styleProp,\n \"--saltAvatar-size-multiplier\": `${size}`,\n };\n\n const status = useAvatarImage({ src });\n const hasImgNotFailing = status === \"loaded\";\n if (hasImgNotFailing) {\n children = <img alt=\"\" src={src} />;\n } else if (childrenProp != null) {\n children = childrenProp;\n }\n\n const avatarInitials = nameToInitials(name);\n\n const ariaProps = name\n ? {\n role: \"img\",\n \"aria-label\": name,\n }\n : {};\n\n return (\n <div\n ref={ref}\n style={style}\n className={clsx(\n withBaseName(),\n withBaseName(color),\n {\n [withBaseName(\"withImage\")]: hasImgNotFailing,\n },\n className,\n )}\n {...ariaProps}\n {...rest}\n >\n {children || avatarInitials || fallbackIcon}\n </div>\n );\n});\n"],"names":["makePrefixer","forwardRef","Avatar","useWindow","useIcon","useComponentCssInjection","avatarCss","useAvatarImage","jsx","clsx"],"mappings":";;;;;;;;;;;;;;;;AA4DA,MAAM,YAAA,GAAeA,0BAAa,YAAY,CAAA;AAC9C,MAAM,mBAAA,GAAsB,CAAA;AAE5B,MAAM,wBAAwB,CAAC,IAAA,KAC7B,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CACI,KAAA,CAAM,KACP,KAAA,CAAM,CAAA,EAAG,CAAA,CAAA,CACT,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,CAAC,CAAA,CAAA,CACd,KAAK,EAAA,CAAA,CACL,WAAA,EAAA;AAEE,MAAM,MAAA,GAASC,gBAAA,CAAwC,SAASC,OAAAA,CACrE;AAAA,EACE,SAAA;AAAA,EACA,QAAA,EAAU,YAAA;AAAA,EACV,KAAA,GAAQ,QAAA;AAAA,EACR,IAAA;AAAA,EACA,cAAA,GAAiB,qBAAA;AAAA,EACjB,GAAA;AAAA,EACA,IAAA,GAAO,mBAAA;AAAA,EACP,KAAA,EAAO,SAAA;AAAA,EACP,YAAA,EAAc,gBAAA;AAAA,EACd,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,EAAA,MAAM,EAAE,QAAA,EAAS,GAAIC,4BAAA,EAAQ;AAE7B,EAAA,MAAM,eACJ,gBAAA,KAAqB,MAAA,kCAClB,QAAA,EAAA,EAAS,aAAA,EAAW,MAAC,CAAA,GAEtB,gBAAA;AAGJ,EAAAC,+BAAA,CAAyB;AAAA,IACvB,MAAA,EAAQ,aAAA;AAAA,IACR,GAAA,EAAKC,QAAA;AAAA,IACL,MAAA,EAAQ;AAAA,GACT,CAAA;AAED,EAAA,IAAI,QAAA;AAEJ,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,GAAG,SAAA;AAAA,IACH,8BAAA,EAAgC,GAAG,IAAI,CAAA;AAAA,GACzC;AAEA,EAAA,MAAM,MAAA,GAASC,6BAAA,CAAe,EAAE,GAAA,EAAK,CAAA;AACrC,EAAA,MAAM,mBAAmB,MAAA,KAAW,QAAA;AACpC,EAAA,IAAI,gBAAA,EAAkB;AACpB,IAAA,QAAA,mBAAWC,cAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAI,EAAA,EAAG,GAAA,EAAU,CAAA;AAAA,EACnC,CAAA,MAAA,IAAW,gBAAgB,IAAA,EAAM;AAC/B,IAAA,QAAA,GAAW,YAAA;AAAA,EACb;AAEA,EAAA,MAAM,cAAA,GAAiB,eAAe,IAAI,CAAA;AAE1C,EAAA,MAAM,YAAY,IAAA,GACd;AAAA,IACE,IAAA,EAAM,KAAA;AAAA,IACN,YAAA,EAAc;AAAA,MAEhB,EAAC;AAEL,EAAA,uBACEA,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAA,EAAWC,SAAA;AAAA,QACT,YAAA,EAAa;AAAA,QACb,aAAa,KAAK,CAAA;AAAA,QAClB;AAAA,UACE,CAAC,YAAA,CAAa,WAAW,CAAC,GAAG;AAAA,SAC/B;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,SAAA;AAAA,MACH,GAAG,IAAA;AAAA,MAEH,sBAAY,cAAA,IAAkB;AAAA;AAAA,GACjC;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"Avatar.js","sources":["../src/avatar/Avatar.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { useIcon } from \"../semantic-icon-provider\";\nimport { makePrefixer, type RenderPropsType, renderProps } from \"../utils\";\nimport avatarCss from \"./Avatar.css\";\nimport { useAvatarImage } from \"./useAvatarImage\";\n\nexport type NameToInitials = (name?: string) => string;\n\nexport interface AvatarProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * The name that Avatar represents.\n */\n name?: string;\n /**\n * Defines the function that gets initials. Default is capital first letter of each separate word in name.\n * If a function is not passed or returns undefined, Avatar will default to Icon.\n */\n nameToInitials?: NameToInitials;\n /**\n * Image src of Avatar.\n */\n src?: string;\n /**\n * Multiplier for the base avatar.\n */\n size?: number;\n /**\n * Icon to be used as a default item. Defaults to `UserIcon`.\n */\n fallbackIcon?: ReactNode;\n /**\n * Changes Avatar's color.\n */\n color?:\n | \"accent\"\n | \"category-1\"\n | \"category-2\"\n | \"category-3\"\n | \"category-4\"\n | \"category-5\"\n | \"category-6\"\n | \"category-7\"\n | \"category-8\"\n | \"category-9\"\n | \"category-10\"\n | \"category-11\"\n | \"category-12\"\n | \"category-13\"\n | \"category-14\"\n | \"category-15\"\n | \"category-16\"\n | \"category-17\"\n | \"category-18\"\n | \"category-19\"\n | \"category-20\";\n /**\n * Render prop to enable customization of the avatar root element.\n */\n render?: RenderPropsType[\"render\"];\n}\n\nconst withBaseName = makePrefixer(\"saltAvatar\");\nconst DEFAULT_AVATAR_SIZE = 2; // medium\n\ninterface AvatarActionProps extends ComponentPropsWithoutRef<\"div\"> {\n render?: RenderPropsType[\"render\"];\n}\n\nconst AvatarAction = forwardRef<HTMLDivElement, AvatarActionProps>(\n function AvatarAction(props, ref) {\n return renderProps(\"div\", { ...props, ref });\n },\n);\n\nconst defaultNameToInitials = (name?: string) =>\n name\n ?.split(\" \")\n .slice(0, 2)\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase();\n\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\n {\n className,\n children: childrenProp,\n color = \"accent\",\n name,\n nameToInitials = defaultNameToInitials,\n src,\n size = DEFAULT_AVATAR_SIZE,\n style: styleProp,\n fallbackIcon: fallbackIconProp,\n render,\n ...rest\n },\n ref,\n) {\n const targetWindow = useWindow();\n const { UserIcon } = useIcon();\n\n const fallbackIcon =\n fallbackIconProp === undefined ? (\n <UserIcon aria-hidden />\n ) : (\n fallbackIconProp\n );\n\n useComponentCssInjection({\n testId: \"salt-avatar\",\n css: avatarCss,\n window: targetWindow,\n });\n\n let children: ReactNode;\n\n const style = {\n ...styleProp,\n \"--saltAvatar-size-multiplier\": `${size}`,\n };\n\n const status = useAvatarImage({ src });\n const hasImgNotFailing = status === \"loaded\";\n if (hasImgNotFailing) {\n children = <img alt=\"\" src={src} />;\n } else if (childrenProp != null) {\n children = childrenProp;\n }\n\n const avatarInitials = nameToInitials(name);\n\n const ariaProps = name\n ? render\n ? {\n \"aria-label\": name,\n }\n : {\n role: \"img\",\n \"aria-label\": name,\n }\n : {};\n\n return (\n <AvatarAction\n ref={ref}\n render={render}\n style={style}\n className={clsx(\n withBaseName(),\n withBaseName(color),\n {\n [withBaseName(\"withImage\")]: hasImgNotFailing,\n },\n className,\n )}\n {...ariaProps}\n {...rest}\n >\n {children || avatarInitials || fallbackIcon}\n </AvatarAction>\n );\n});\n"],"names":["makePrefixer","forwardRef","AvatarAction","renderProps","Avatar","useWindow","useIcon","useComponentCssInjection","avatarCss","useAvatarImage","jsx","clsx"],"mappings":";;;;;;;;;;;;;;;;;AAqEA,MAAM,YAAA,GAAeA,0BAAa,YAAY,CAAA;AAC9C,MAAM,mBAAA,GAAsB,CAAA;AAM5B,MAAM,YAAA,GAAeC,gBAAA;AAAA,EACnB,SAASC,aAAAA,CAAa,KAAA,EAAO,GAAA,EAAK;AAChC,IAAA,OAAOC,wBAAY,KAAA,EAAO,EAAE,GAAG,KAAA,EAAO,KAAK,CAAA;AAAA,EAC7C;AACF,CAAA;AAEA,MAAM,wBAAwB,CAAC,IAAA,KAC7B,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CACI,KAAA,CAAM,KACP,KAAA,CAAM,CAAA,EAAG,CAAA,CAAA,CACT,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,CAAC,CAAA,CAAA,CACd,KAAK,EAAA,CAAA,CACL,WAAA,EAAA;AAEE,MAAM,MAAA,GAASF,gBAAA,CAAwC,SAASG,OAAAA,CACrE;AAAA,EACE,SAAA;AAAA,EACA,QAAA,EAAU,YAAA;AAAA,EACV,KAAA,GAAQ,QAAA;AAAA,EACR,IAAA;AAAA,EACA,cAAA,GAAiB,qBAAA;AAAA,EACjB,GAAA;AAAA,EACA,IAAA,GAAO,mBAAA;AAAA,EACP,KAAA,EAAO,SAAA;AAAA,EACP,YAAA,EAAc,gBAAA;AAAA,EACd,MAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,EAAA,MAAM,EAAE,QAAA,EAAS,GAAIC,4BAAA,EAAQ;AAE7B,EAAA,MAAM,eACJ,gBAAA,KAAqB,MAAA,kCAClB,QAAA,EAAA,EAAS,aAAA,EAAW,MAAC,CAAA,GAEtB,gBAAA;AAGJ,EAAAC,+BAAA,CAAyB;AAAA,IACvB,MAAA,EAAQ,aAAA;AAAA,IACR,GAAA,EAAKC,QAAA;AAAA,IACL,MAAA,EAAQ;AAAA,GACT,CAAA;AAED,EAAA,IAAI,QAAA;AAEJ,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,GAAG,SAAA;AAAA,IACH,8BAAA,EAAgC,GAAG,IAAI,CAAA;AAAA,GACzC;AAEA,EAAA,MAAM,MAAA,GAASC,6BAAA,CAAe,EAAE,GAAA,EAAK,CAAA;AACrC,EAAA,MAAM,mBAAmB,MAAA,KAAW,QAAA;AACpC,EAAA,IAAI,gBAAA,EAAkB;AACpB,IAAA,QAAA,mBAAWC,cAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAI,EAAA,EAAG,GAAA,EAAU,CAAA;AAAA,EACnC,CAAA,MAAA,IAAW,gBAAgB,IAAA,EAAM;AAC/B,IAAA,QAAA,GAAW,YAAA;AAAA,EACb;AAEA,EAAA,MAAM,cAAA,GAAiB,eAAe,IAAI,CAAA;AAE1C,EAAA,MAAM,SAAA,GAAY,OACd,MAAA,GACE;AAAA,IACE,YAAA,EAAc;AAAA,GAChB,GACA;AAAA,IACE,IAAA,EAAM,KAAA;AAAA,IACN,YAAA,EAAc;AAAA,MAElB,EAAC;AAEL,EAAA,uBACEA,cAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAA,EAAWC,SAAA;AAAA,QACT,YAAA,EAAa;AAAA,QACb,aAAa,KAAK,CAAA;AAAA,QAClB;AAAA,UACE,CAAC,YAAA,CAAa,WAAW,CAAC,GAAG;AAAA,SAC/B;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,SAAA;AAAA,MACH,GAAG,IAAA;AAAA,MAEH,sBAAY,cAAA,IAAkB;AAAA;AAAA,GACjC;AAEJ,CAAC;;;;"}
package/dist-cjs/index.js CHANGED
@@ -153,6 +153,9 @@ var ToggleButtonGroupContext = require('./toggle-button-group/ToggleButtonGroupC
153
153
  var Toggletip = require('./toggletip/Toggletip.js');
154
154
  var ToggletipPanel = require('./toggletip/ToggletipPanel.js');
155
155
  var ToggletipTrigger = require('./toggletip/ToggletipTrigger.js');
156
+ var Toolbar = require('./toolbar/Toolbar.js');
157
+ var ToolbarContent = require('./toolbar/ToolbarContent.js');
158
+ var Tooltray = require('./toolbar/Tooltray.js');
156
159
  var Tooltip = require('./tooltip/Tooltip.js');
157
160
  var useTooltip = require('./tooltip/useTooltip.js');
158
161
  var Tree = require('./tree/Tree.js');
@@ -381,6 +384,9 @@ exports.useToggleButtonGroup = ToggleButtonGroupContext.useToggleButtonGroup;
381
384
  exports.Toggletip = Toggletip.Toggletip;
382
385
  exports.ToggletipPanel = ToggletipPanel.ToggletipPanel;
383
386
  exports.ToggletipTrigger = ToggletipTrigger.ToggletipTrigger;
387
+ exports.Toolbar = Toolbar.Toolbar;
388
+ exports.ToolbarContent = ToolbarContent.ToolbarContent;
389
+ exports.Tooltray = Tooltray.Tooltray;
384
390
  exports.Tooltip = Tooltip.Tooltip;
385
391
  exports.useTooltip = useTooltip.useTooltip;
386
392
  exports.Tree = Tree.Tree;
@@ -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 = ".saltToolbar {\n box-sizing: border-box;\n inline-size: 100%;\n min-width: 0;\n position: relative;\n}\n\n.saltToolbar-layout {\n align-items: center;\n --saltToolbar-band-gap: var(--salt-spacing-100);\n}\n\n.saltToolbar-layout:not([data-centered]) {\n display: flex;\n column-gap: var(--saltToolbar-band-gap);\n}\n\n.saltToolbar-layout[data-centered] {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);\n}\n\n.saltToolbar-band {\n display: flex;\n align-items: center;\n gap: var(--saltToolbar-band-gap);\n min-width: 0;\n}\n\n.saltToolbar-layout:not([data-centered]) > .saltToolbar-band[data-band-position=\"end\"] {\n justify-content: flex-end;\n margin-inline-start: auto;\n}\n\n.saltToolbar-layout[data-centered] > .saltToolbar-band[data-band-position=\"start\"] {\n grid-column: 1;\n}\n\n.saltToolbar-layout[data-centered] > .saltToolbar-band[data-band-position=\"center\"] {\n grid-column: 2;\n justify-content: center;\n}\n\n.saltToolbar-layout[data-centered] > .saltToolbar-band[data-band-position=\"end\"] {\n grid-column: 3;\n justify-content: flex-end;\n}\n\n.saltToolbar-fallback {\n display: flex;\n align-items: center;\n gap: var(--salt-spacing-100);\n}\n\n.saltToolbar-layout > * {\n min-width: 0;\n}\n\n.saltToolbar-primary {\n --toolbar-background: var(--salt-container-primary-background);\n --toolbar-borderColor: var(--salt-container-primary-borderColor);\n}\n\n.saltToolbar-secondary {\n --toolbar-background: var(--salt-container-secondary-background);\n --toolbar-borderColor: var(--salt-container-secondary-borderColor);\n}\n\n.saltToolbar-tertiary {\n --toolbar-background: var(--salt-container-tertiary-background);\n --toolbar-borderColor: var(--salt-container-tertiary-borderColor);\n}\n\n.saltToolbar-bordered {\n background: var(--saltToolbar-background, var(--toolbar-background));\n border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--saltToolbar-borderColor, var(--toolbar-borderColor));\n border-radius: var(--salt-palette-corner, 0);\n padding: var(--salt-spacing-100);\n}\n\n.saltToolbar-transparent {\n background: transparent;\n border: none;\n padding: 0;\n}\n\n.saltToolbar-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.saltToolbar-measureTrigger {\n white-space: nowrap;\n}\n";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=Toolbar.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toolbar.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}