@salt-ds/core 1.47.5 → 1.48.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.
- package/CHANGELOG.md +39 -0
- package/css/salt-core.css +171 -1
- package/dist-cjs/banner/Banner.css.js +1 -1
- package/dist-cjs/collapsible/Collapsible.js +52 -0
- package/dist-cjs/collapsible/Collapsible.js.map +1 -0
- package/dist-cjs/collapsible/CollapsibleContext.js +29 -0
- package/dist-cjs/collapsible/CollapsibleContext.js.map +1 -0
- package/dist-cjs/collapsible/CollapsiblePanel.css.js +6 -0
- package/dist-cjs/collapsible/CollapsiblePanel.css.js.map +1 -0
- package/dist-cjs/collapsible/CollapsiblePanel.js +46 -0
- package/dist-cjs/collapsible/CollapsiblePanel.js.map +1 -0
- package/dist-cjs/collapsible/CollapsibleTrigger.js +40 -0
- package/dist-cjs/collapsible/CollapsibleTrigger.js.map +1 -0
- package/dist-cjs/index.js +21 -0
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/vertical-navigation/SubMenuContext.js +39 -0
- package/dist-cjs/vertical-navigation/SubMenuContext.js.map +1 -0
- package/dist-cjs/vertical-navigation/VerticalNavigation.css.js +6 -0
- package/dist-cjs/vertical-navigation/VerticalNavigation.css.js.map +1 -0
- package/dist-cjs/vertical-navigation/VerticalNavigation.js +38 -0
- package/dist-cjs/vertical-navigation/VerticalNavigation.js.map +1 -0
- package/dist-cjs/vertical-navigation/VerticalNavigationItem.js +53 -0
- package/dist-cjs/vertical-navigation/VerticalNavigationItem.js.map +1 -0
- package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.css.js +6 -0
- package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.css.js.map +1 -0
- package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.js +88 -0
- package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.js.map +1 -0
- package/dist-cjs/vertical-navigation/VerticalNavigationItemExpansionIcon.js +35 -0
- package/dist-cjs/vertical-navigation/VerticalNavigationItemExpansionIcon.js.map +1 -0
- package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.css.js +6 -0
- package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.css.js.map +1 -0
- package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.js +28 -0
- package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.js.map +1 -0
- package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.css.js +6 -0
- package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.css.js.map +1 -0
- package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.js +74 -0
- package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.js.map +1 -0
- package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.css.js +6 -0
- package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.css.js.map +1 -0
- package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.js +39 -0
- package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.js.map +1 -0
- package/dist-es/banner/Banner.css.js +1 -1
- package/dist-es/collapsible/Collapsible.js +50 -0
- package/dist-es/collapsible/Collapsible.js.map +1 -0
- package/dist-es/collapsible/CollapsibleContext.js +26 -0
- package/dist-es/collapsible/CollapsibleContext.js.map +1 -0
- package/dist-es/collapsible/CollapsiblePanel.css.js +4 -0
- package/dist-es/collapsible/CollapsiblePanel.css.js.map +1 -0
- package/dist-es/collapsible/CollapsiblePanel.js +44 -0
- package/dist-es/collapsible/CollapsiblePanel.js.map +1 -0
- package/dist-es/collapsible/CollapsibleTrigger.js +38 -0
- package/dist-es/collapsible/CollapsibleTrigger.js.map +1 -0
- package/dist-es/index.js +10 -0
- package/dist-es/index.js.map +1 -1
- package/dist-es/vertical-navigation/SubMenuContext.js +35 -0
- package/dist-es/vertical-navigation/SubMenuContext.js.map +1 -0
- package/dist-es/vertical-navigation/VerticalNavigation.css.js +4 -0
- package/dist-es/vertical-navigation/VerticalNavigation.css.js.map +1 -0
- package/dist-es/vertical-navigation/VerticalNavigation.js +36 -0
- package/dist-es/vertical-navigation/VerticalNavigation.js.map +1 -0
- package/dist-es/vertical-navigation/VerticalNavigationItem.js +50 -0
- package/dist-es/vertical-navigation/VerticalNavigationItem.js.map +1 -0
- package/dist-es/vertical-navigation/VerticalNavigationItemContent.css.js +4 -0
- package/dist-es/vertical-navigation/VerticalNavigationItemContent.css.js.map +1 -0
- package/dist-es/vertical-navigation/VerticalNavigationItemContent.js +86 -0
- package/dist-es/vertical-navigation/VerticalNavigationItemContent.js.map +1 -0
- package/dist-es/vertical-navigation/VerticalNavigationItemExpansionIcon.js +33 -0
- package/dist-es/vertical-navigation/VerticalNavigationItemExpansionIcon.js.map +1 -0
- package/dist-es/vertical-navigation/VerticalNavigationItemLabel.css.js +4 -0
- package/dist-es/vertical-navigation/VerticalNavigationItemLabel.css.js.map +1 -0
- package/dist-es/vertical-navigation/VerticalNavigationItemLabel.js +26 -0
- package/dist-es/vertical-navigation/VerticalNavigationItemLabel.js.map +1 -0
- package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.css.js +4 -0
- package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.css.js.map +1 -0
- package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.js +72 -0
- package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.js.map +1 -0
- package/dist-es/vertical-navigation/VerticalNavigationSubMenu.css.js +4 -0
- package/dist-es/vertical-navigation/VerticalNavigationSubMenu.css.js.map +1 -0
- package/dist-es/vertical-navigation/VerticalNavigationSubMenu.js +37 -0
- package/dist-es/vertical-navigation/VerticalNavigationSubMenu.js.map +1 -0
- package/dist-types/collapsible/Collapsible.d.ts +16 -0
- package/dist-types/collapsible/CollapsibleContext.d.ts +9 -0
- package/dist-types/collapsible/CollapsiblePanel.d.ts +4 -0
- package/dist-types/collapsible/CollapsibleTrigger.d.ts +5 -0
- package/dist-types/collapsible/index.d.ts +3 -0
- package/dist-types/index.d.ts +2 -0
- package/dist-types/vertical-navigation/SubMenuContext.d.ts +14 -0
- package/dist-types/vertical-navigation/VerticalNavigation.d.ts +8 -0
- package/dist-types/vertical-navigation/VerticalNavigationItem.d.ts +12 -0
- package/dist-types/vertical-navigation/VerticalNavigationItemContent.d.ts +4 -0
- package/dist-types/vertical-navigation/VerticalNavigationItemExpansionIcon.d.ts +2 -0
- package/dist-types/vertical-navigation/VerticalNavigationItemLabel.d.ts +4 -0
- package/dist-types/vertical-navigation/VerticalNavigationItemTrigger.d.ts +6 -0
- package/dist-types/vertical-navigation/VerticalNavigationSubMenu.d.ts +4 -0
- package/dist-types/vertical-navigation/index.d.ts +7 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,44 @@
|
|
|
1
1
|
# @salt-ds/core
|
|
2
2
|
|
|
3
|
+
## 1.48.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- f1dc9fc: Added `VerticalNavigation` and related components.
|
|
8
|
+
|
|
9
|
+
`VerticalNavigation` has been introduced to replace the existing `NavigationItem` component for vertical navigation. The new component provides a more structured and flexible way to create vertical navigation. For now you can continue to use the `NavigationItem` component, but we recommend migrating to the new `VerticalNavigation` component as the `NavigationItem` component will be deprecated in a future release and removed in the future major release.
|
|
10
|
+
|
|
11
|
+
```tsx
|
|
12
|
+
<VerticalNavigation aria-label="Basic sidebar" appearance="indicator">
|
|
13
|
+
<VerticalNavigationItem active>
|
|
14
|
+
<VerticalNavigationItemContent>
|
|
15
|
+
<VerticalNavigationItemTrigger>
|
|
16
|
+
<VerticalNavigationItemLabel>Item 1</VerticalNavigationItemLabel>
|
|
17
|
+
</VerticalNavigationItemTrigger>
|
|
18
|
+
</VerticalNavigationItemContent>
|
|
19
|
+
</VerticalNavigationItem>
|
|
20
|
+
</VerticalNavigation>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
- f1dc9fc: Added `Collapsible` and related components.
|
|
24
|
+
|
|
25
|
+
`Collapsible` enables content to be either collapsed (hidden) or expanded (visible). It has two elements: a trigger and a panel whose visibility is controlled by the button.
|
|
26
|
+
|
|
27
|
+
```tsx
|
|
28
|
+
<Collapsible>
|
|
29
|
+
<CollapsibleTrigger>
|
|
30
|
+
<Button>Click</Button>
|
|
31
|
+
</CollapsibleTrigger>
|
|
32
|
+
<CollapsiblePanel>
|
|
33
|
+
<p>Content</p>
|
|
34
|
+
</CollapsiblePanel>
|
|
35
|
+
</Collapsible>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Patch Changes
|
|
39
|
+
|
|
40
|
+
- 9560539: Fixed foreground color not being applied explicitly to Banner.
|
|
41
|
+
|
|
3
42
|
## 1.47.5
|
|
4
43
|
|
|
5
44
|
### Patch Changes
|
package/css/salt-core.css
CHANGED
|
@@ -299,6 +299,7 @@
|
|
|
299
299
|
font-size: var(--salt-text-fontSize);
|
|
300
300
|
font-weight: var(--salt-text-fontWeight);
|
|
301
301
|
line-height: var(--salt-text-lineHeight);
|
|
302
|
+
color: var(--salt-content-primary-foreground);
|
|
302
303
|
}
|
|
303
304
|
.saltBanner-icon.saltIcon {
|
|
304
305
|
min-height: var(--salt-size-base);
|
|
@@ -994,6 +995,28 @@ a:focus .saltCard-interactable.saltCard-disabled {
|
|
|
994
995
|
transform: scale(1.01);
|
|
995
996
|
}
|
|
996
997
|
|
|
998
|
+
/* src/collapsible/CollapsiblePanel.css */
|
|
999
|
+
.saltCollapsiblePanel {
|
|
1000
|
+
display: grid;
|
|
1001
|
+
transition:
|
|
1002
|
+
grid-template-rows var(--salt-duration-perceptible) ease-in-out,
|
|
1003
|
+
opacity var(--salt-duration-perceptible) ease-in-out,
|
|
1004
|
+
visibility var(--salt-duration-perceptible) ease-in-out;
|
|
1005
|
+
}
|
|
1006
|
+
.saltCollapsiblePanel[aria-hidden=true] {
|
|
1007
|
+
grid-template-rows: 0fr;
|
|
1008
|
+
opacity: 0;
|
|
1009
|
+
visibility: hidden;
|
|
1010
|
+
}
|
|
1011
|
+
.saltCollapsiblePanel {
|
|
1012
|
+
grid-template-rows: 1fr;
|
|
1013
|
+
opacity: 1;
|
|
1014
|
+
visibility: visible;
|
|
1015
|
+
}
|
|
1016
|
+
.saltCollapsiblePanel-inner {
|
|
1017
|
+
overflow: hidden;
|
|
1018
|
+
}
|
|
1019
|
+
|
|
997
1020
|
/* src/combo-box/ComboBox.css */
|
|
998
1021
|
.saltComboBox-focused {
|
|
999
1022
|
outline: var(--saltPillInput-outline, var(--salt-focused-outlineWidth) var(--salt-focused-outlineStyle) var(--pillInput-outlineColor));
|
|
@@ -4734,6 +4757,153 @@ label.saltText small,
|
|
|
4734
4757
|
--tooltip-status-borderColor: var(--salt-status-success-borderColor);
|
|
4735
4758
|
}
|
|
4736
4759
|
|
|
4760
|
+
/* src/vertical-navigation/VerticalNavigation.css */
|
|
4761
|
+
.saltVerticalNavigation ol {
|
|
4762
|
+
display: flex;
|
|
4763
|
+
flex-direction: column;
|
|
4764
|
+
gap: var(--salt-spacing-fixed-100);
|
|
4765
|
+
list-style: none;
|
|
4766
|
+
padding: 0;
|
|
4767
|
+
margin: 0;
|
|
4768
|
+
position: relative;
|
|
4769
|
+
}
|
|
4770
|
+
.saltVerticalNavigationSubMenu > .saltDivider-horizontal,
|
|
4771
|
+
.saltVerticalNavigationItem > .saltDivider-horizontal,
|
|
4772
|
+
.saltVerticalNavigation ol > .saltDivider-horizontal {
|
|
4773
|
+
margin-bottom: calc(var(--salt-size-fixed-100) * -1);
|
|
4774
|
+
}
|
|
4775
|
+
.saltVerticalNavigation [data-has-direct-icons=false] .saltCollapsiblePanel-inner {
|
|
4776
|
+
margin-bottom: calc(var(--salt-size-fixed-100) * -1);
|
|
4777
|
+
}
|
|
4778
|
+
.saltVerticalNavigation [data-has-direct-icons=false] .saltCollapsiblePanel-inner .saltVerticalNavigationSubMenu {
|
|
4779
|
+
border-bottom: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-separable-tertiary-borderColor);
|
|
4780
|
+
}
|
|
4781
|
+
.saltVerticalNavigation .saltCollapsiblePanel-inner .saltCollapsiblePanel-inner,
|
|
4782
|
+
.saltVerticalNavigation .saltCollapsiblePanel[aria-hidden=true] .saltCollapsiblePanel-inner {
|
|
4783
|
+
margin-bottom: 0;
|
|
4784
|
+
}
|
|
4785
|
+
.saltVerticalNavigation .saltCollapsiblePanel-inner .saltCollapsiblePanel-inner .saltVerticalNavigationSubMenu,
|
|
4786
|
+
.saltVerticalNavigation .saltCollapsiblePanel[aria-hidden=true] .saltCollapsiblePanel-inner .saltVerticalNavigationSubMenu {
|
|
4787
|
+
border-bottom: none;
|
|
4788
|
+
}
|
|
4789
|
+
|
|
4790
|
+
/* src/vertical-navigation/VerticalNavigationItemContent.css */
|
|
4791
|
+
.saltVerticalNavigationItemContent {
|
|
4792
|
+
--verticalNavigationItem-iconPadding: calc(var(--saltVerticalNavigationItem-iconPaddingMultiplier, 0) * (var(--salt-size-icon) + var(--salt-spacing-100)));
|
|
4793
|
+
--verticalNavigationItem-depthPadding: calc(var(--salt-spacing-100) * max(0, calc(var(--verticalNavigationItem-depth, 0) - 1)));
|
|
4794
|
+
}
|
|
4795
|
+
.saltVerticalNavigation-indicator .saltVerticalNavigationItemContent {
|
|
4796
|
+
--verticalNavigationItem-paddingLeft: calc(var(--salt-spacing-150) + var(--salt-size-indicator) + var(--verticalNavigationItem-depthPadding) + var(--verticalNavigationItem-iconPadding));
|
|
4797
|
+
--verticalNavigationItem-paddingBlock: var(--salt-spacing-50);
|
|
4798
|
+
}
|
|
4799
|
+
.saltVerticalNavigation-bordered .saltVerticalNavigationItemContent {
|
|
4800
|
+
--verticalNavigationItem-paddingLeft: calc(var(--salt-spacing-100) + var(--verticalNavigationItem-depthPadding) + var(--verticalNavigationItem-iconPadding));
|
|
4801
|
+
--verticalNavigationItem-paddingBlock: calc(var(--salt-spacing-50) - var(--salt-size-fixed-100));
|
|
4802
|
+
}
|
|
4803
|
+
.saltVerticalNavigationItemContent {
|
|
4804
|
+
display: flex;
|
|
4805
|
+
flex-direction: row;
|
|
4806
|
+
gap: var(--salt-spacing-100);
|
|
4807
|
+
appearance: none;
|
|
4808
|
+
-webkit-appearance: none;
|
|
4809
|
+
min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));
|
|
4810
|
+
min-width: 4em;
|
|
4811
|
+
padding: var(--verticalNavigationItem-paddingBlock) var(--salt-spacing-100) var(--verticalNavigationItem-paddingBlock) var(--verticalNavigationItem-paddingLeft);
|
|
4812
|
+
position: relative;
|
|
4813
|
+
flex-shrink: 0;
|
|
4814
|
+
box-sizing: border-box;
|
|
4815
|
+
border-radius: var(--salt-palette-corner-weak, 0);
|
|
4816
|
+
overflow: hidden;
|
|
4817
|
+
cursor: var(--salt-cursor-hover);
|
|
4818
|
+
color: var(--salt-content-primary-foreground);
|
|
4819
|
+
font-weight: var(--salt-text-h4-fontWeight);
|
|
4820
|
+
font-family: var(--salt-text-h4-fontFamily);
|
|
4821
|
+
text-align: var(--salt-text-textAlign);
|
|
4822
|
+
letter-spacing: var(--salt-text-letterSpacing);
|
|
4823
|
+
line-height: var(--salt-text-h4-lineHeight);
|
|
4824
|
+
font-size: var(--salt-text-h4-fontSize);
|
|
4825
|
+
}
|
|
4826
|
+
.saltVerticalNavigation-indicator .saltVerticalNavigationItemContent-active,
|
|
4827
|
+
.saltVerticalNavigation-indicator .saltVerticalNavigationItemContent-active:hover {
|
|
4828
|
+
background: var(--salt-navigable-accent-background-active);
|
|
4829
|
+
}
|
|
4830
|
+
.saltVerticalNavigation-indicator .saltVerticalNavigationItemContent::before {
|
|
4831
|
+
left: var(--salt-spacing-50);
|
|
4832
|
+
content: "";
|
|
4833
|
+
position: absolute;
|
|
4834
|
+
height: var(--salt-size-base);
|
|
4835
|
+
border-radius: var(--salt-palette-corner-strongest);
|
|
4836
|
+
width: var(--salt-size-indicator);
|
|
4837
|
+
}
|
|
4838
|
+
.saltVerticalNavigation-indicator .saltVerticalNavigationItemContent-active::before {
|
|
4839
|
+
background: var(--salt-navigable-accent-indicator-active);
|
|
4840
|
+
}
|
|
4841
|
+
.saltVerticalNavigation-bordered .saltVerticalNavigationItemContent {
|
|
4842
|
+
border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) transparent;
|
|
4843
|
+
}
|
|
4844
|
+
.saltVerticalNavigation-bordered .saltVerticalNavigationItemContent-active,
|
|
4845
|
+
.saltVerticalNavigation-bordered .saltVerticalNavigationItemContent-active:hover {
|
|
4846
|
+
background: var(--salt-navigable-accent-background-active);
|
|
4847
|
+
border-color: var(--salt-navigable-accent-borderColor-active);
|
|
4848
|
+
}
|
|
4849
|
+
.saltVerticalNavigationItemContent .saltIcon,
|
|
4850
|
+
.saltVerticalNavigationItemContent .saltBadge {
|
|
4851
|
+
min-height: var(--salt-text-lineHeight);
|
|
4852
|
+
}
|
|
4853
|
+
.saltVerticalNavigationItemContent-focused {
|
|
4854
|
+
outline: var(--salt-focused-outline);
|
|
4855
|
+
outline-offset: calc(var(--salt-size-fixed-100) * -2);
|
|
4856
|
+
z-index: 1;
|
|
4857
|
+
}
|
|
4858
|
+
.saltVerticalNavigationItemContent:hover {
|
|
4859
|
+
background: var(--salt-overlayable-background-hover);
|
|
4860
|
+
}
|
|
4861
|
+
.saltVerticalNavigation .saltVerticalNavigationItemContent-active,
|
|
4862
|
+
.saltVerticalNavigation .saltVerticalNavigationSubMenu .saltVerticalNavigationItemContent-active {
|
|
4863
|
+
font-weight: var(--salt-text-h4-fontWeight);
|
|
4864
|
+
}
|
|
4865
|
+
@supports selector(:has(*)) {
|
|
4866
|
+
.saltVerticalNavigationItemContent-active:hover:has(.saltVerticalNavigationItemTrigger[aria-controls]) {
|
|
4867
|
+
background: linear-gradient(var(--salt-overlayable-background-hover), var(--salt-overlayable-background-hover)) var(--salt-navigable-accent-background-active);
|
|
4868
|
+
}
|
|
4869
|
+
}
|
|
4870
|
+
|
|
4871
|
+
/* src/vertical-navigation/VerticalNavigationItemLabel.css */
|
|
4872
|
+
.saltVerticalNavigationItemLabel {
|
|
4873
|
+
flex: 1;
|
|
4874
|
+
}
|
|
4875
|
+
|
|
4876
|
+
/* src/vertical-navigation/VerticalNavigationItemTrigger.css */
|
|
4877
|
+
.saltVerticalNavigationItemTrigger {
|
|
4878
|
+
all: unset;
|
|
4879
|
+
padding: var(--salt-spacing-75) 0;
|
|
4880
|
+
display: flex;
|
|
4881
|
+
gap: var(--salt-spacing-100);
|
|
4882
|
+
width: 100%;
|
|
4883
|
+
}
|
|
4884
|
+
.saltVerticalNavigationItemTrigger::before {
|
|
4885
|
+
content: "";
|
|
4886
|
+
display: block;
|
|
4887
|
+
width: 100%;
|
|
4888
|
+
position: absolute;
|
|
4889
|
+
height: 100%;
|
|
4890
|
+
left: 0;
|
|
4891
|
+
top: 0;
|
|
4892
|
+
}
|
|
4893
|
+
|
|
4894
|
+
/* src/vertical-navigation/VerticalNavigationSubMenu.css */
|
|
4895
|
+
.saltVerticalNavigationSubMenu {
|
|
4896
|
+
display: flex;
|
|
4897
|
+
flex-direction: column;
|
|
4898
|
+
gap: var(--salt-spacing-fixed-100);
|
|
4899
|
+
list-style: none;
|
|
4900
|
+
padding: var(--salt-spacing-fixed-100) 0 0;
|
|
4901
|
+
margin: 0;
|
|
4902
|
+
}
|
|
4903
|
+
.saltVerticalNavigationSubMenu .saltVerticalNavigationItemContent {
|
|
4904
|
+
font-weight: var(--salt-text-h4-fontWeight-small);
|
|
4905
|
+
}
|
|
4906
|
+
|
|
4737
4907
|
/* src/progress/CircularProgress/CircularProgress.css */
|
|
4738
4908
|
.saltCircularProgress {
|
|
4739
4909
|
color: var(--salt-content-primary-foreground);
|
|
@@ -5285,4 +5455,4 @@ label.saltText small,
|
|
|
5285
5455
|
color: var(--salt-status-error-foreground-informative);
|
|
5286
5456
|
}
|
|
5287
5457
|
|
|
5288
|
-
/* src/
|
|
5458
|
+
/* src/a3c9275d-f674-46ac-ba4b-1442197b5a6e.css */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var css_248z = "/* Styles applied to root component */\n.saltBanner {\n --banner-background: var(--salt-container-primary-background);\n\n background: var(--saltBanner-background, var(--banner-background));\n border-color: var(--saltBanner-borderColor, var(--banner-borderColor));\n border-width: var(--saltBanner-borderWidth, var(--salt-size-fixed-100));\n border-style: var(--saltBanner-borderStyle, var(--salt-borderStyle-solid));\n border-radius: var(--saltBanner-borderRadius, var(--salt-palette-corner, 0));\n box-sizing: border-box;\n display: inline-flex;\n gap: var(--salt-spacing-75);\n padding: var(--saltBanner-padding, var(--salt-spacing-50) var(--salt-spacing-100));\n width: 100%;\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n line-height: var(--salt-text-lineHeight);\n}\n\n/* Styles applied to icon */\n.saltBanner-icon.saltIcon {\n min-height: var(--salt-size-base);\n}\n\n/* Styles applied when state = \"info\" */\n.saltBanner-info {\n --banner-borderColor: var(--salt-status-info-borderColor);\n}\n\n/* Styles applied when state = \"error\" */\n.saltBanner-error {\n --banner-borderColor: var(--salt-status-error-borderColor);\n}\n\n/* Styles applied when state = \"warning\" */\n.saltBanner-warning {\n --banner-borderColor: var(--salt-status-warning-borderColor);\n}\n\n/* Styles applied when state = \"success\" */\n.saltBanner-success {\n --banner-borderColor: var(--salt-status-success-borderColor);\n}\n\n.saltBanner-secondary.saltBanner-info {\n --banner-background: var(--salt-status-info-background);\n}\n\n.saltBanner-secondary.saltBanner-error {\n --banner-background: var(--salt-status-error-background);\n}\n\n.saltBanner-secondary.saltBanner-warning {\n --banner-background: var(--salt-status-warning-background);\n}\n\n.saltBanner-secondary.saltBanner-success {\n --banner-background: var(--salt-status-success-background);\n}\n";
|
|
3
|
+
var css_248z = "/* Styles applied to root component */\n.saltBanner {\n --banner-background: var(--salt-container-primary-background);\n\n background: var(--saltBanner-background, var(--banner-background));\n border-color: var(--saltBanner-borderColor, var(--banner-borderColor));\n border-width: var(--saltBanner-borderWidth, var(--salt-size-fixed-100));\n border-style: var(--saltBanner-borderStyle, var(--salt-borderStyle-solid));\n border-radius: var(--saltBanner-borderRadius, var(--salt-palette-corner, 0));\n box-sizing: border-box;\n display: inline-flex;\n gap: var(--salt-spacing-75);\n padding: var(--saltBanner-padding, var(--salt-spacing-50) var(--salt-spacing-100));\n width: 100%;\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n line-height: var(--salt-text-lineHeight);\n color: var(--salt-content-primary-foreground);\n}\n\n/* Styles applied to icon */\n.saltBanner-icon.saltIcon {\n min-height: var(--salt-size-base);\n}\n\n/* Styles applied when state = \"info\" */\n.saltBanner-info {\n --banner-borderColor: var(--salt-status-info-borderColor);\n}\n\n/* Styles applied when state = \"error\" */\n.saltBanner-error {\n --banner-borderColor: var(--salt-status-error-borderColor);\n}\n\n/* Styles applied when state = \"warning\" */\n.saltBanner-warning {\n --banner-borderColor: var(--salt-status-warning-borderColor);\n}\n\n/* Styles applied when state = \"success\" */\n.saltBanner-success {\n --banner-borderColor: var(--salt-status-success-borderColor);\n}\n\n.saltBanner-secondary.saltBanner-info {\n --banner-background: var(--salt-status-info-background);\n}\n\n.saltBanner-secondary.saltBanner-error {\n --banner-background: var(--salt-status-error-background);\n}\n\n.saltBanner-secondary.saltBanner-warning {\n --banner-background: var(--salt-status-warning-background);\n}\n\n.saltBanner-secondary.saltBanner-success {\n --banner-background: var(--salt-status-success-background);\n}\n";
|
|
4
4
|
|
|
5
5
|
module.exports = css_248z;
|
|
6
6
|
//# sourceMappingURL=Banner.css.js.map
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var clsx = require('clsx');
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var makePrefixer = require('../utils/makePrefixer.js');
|
|
7
|
+
var useControlled = require('../utils/useControlled.js');
|
|
8
|
+
require('../utils/useFloatingUI/useFloatingUI.js');
|
|
9
|
+
require('../utils/useId.js');
|
|
10
|
+
require('../salt-provider/SaltProvider.js');
|
|
11
|
+
require('../viewport/ViewportProvider.js');
|
|
12
|
+
var CollapsibleContext = require('./CollapsibleContext.js');
|
|
13
|
+
|
|
14
|
+
const withBaseName = makePrefixer.makePrefixer("saltCollapsible");
|
|
15
|
+
const Collapsible = React.forwardRef(
|
|
16
|
+
function Collapsible2(props, ref) {
|
|
17
|
+
const {
|
|
18
|
+
className,
|
|
19
|
+
open: openProp,
|
|
20
|
+
defaultOpen,
|
|
21
|
+
onOpenChange,
|
|
22
|
+
...rest
|
|
23
|
+
} = props;
|
|
24
|
+
const [open, setOpenState] = useControlled.useControlled({
|
|
25
|
+
default: Boolean(defaultOpen),
|
|
26
|
+
controlled: openProp,
|
|
27
|
+
name: "Collapsible",
|
|
28
|
+
state: "open"
|
|
29
|
+
});
|
|
30
|
+
const [panelId, setPanelId] = React.useState(void 0);
|
|
31
|
+
const setOpen = React.useCallback(
|
|
32
|
+
(event, newOpen) => {
|
|
33
|
+
setOpenState(newOpen);
|
|
34
|
+
onOpenChange == null ? void 0 : onOpenChange(event, newOpen);
|
|
35
|
+
},
|
|
36
|
+
[onOpenChange]
|
|
37
|
+
);
|
|
38
|
+
const contextValue = React.useMemo(
|
|
39
|
+
() => ({
|
|
40
|
+
open,
|
|
41
|
+
setOpen,
|
|
42
|
+
panelId,
|
|
43
|
+
setPanelId
|
|
44
|
+
}),
|
|
45
|
+
[open, setOpen, panelId]
|
|
46
|
+
);
|
|
47
|
+
return /* @__PURE__ */ jsxRuntime.jsx(CollapsibleContext.CollapsibleContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx.clsx(withBaseName(), className), ref, ...rest }) });
|
|
48
|
+
}
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
exports.Collapsible = Collapsible;
|
|
52
|
+
//# sourceMappingURL=Collapsible.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Collapsible.js","sources":["../src/collapsible/Collapsible.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type SyntheticEvent,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\nimport { makePrefixer, useControlled } from \"../utils\";\nimport { CollapsibleContext } from \"./CollapsibleContext\";\n\nexport interface CollapsibleProps\n extends Omit<ComponentPropsWithoutRef<\"div\">, \"onToggle\"> {\n /**\n * Whether the accordion is open.\n */\n open?: boolean;\n /**\n * Whether the accordion is open by default.\n */\n defaultOpen?: boolean;\n /**\n * Callback fired when the accordion is opened or closed.\n */\n onOpenChange?: (\n event: SyntheticEvent<HTMLButtonElement>,\n open: boolean,\n ) => void;\n}\n\nconst withBaseName = makePrefixer(\"saltCollapsible\");\n\nexport const Collapsible = forwardRef<HTMLDivElement, CollapsibleProps>(\n function Collapsible(props, ref) {\n const {\n className,\n open: openProp,\n defaultOpen,\n onOpenChange,\n ...rest\n } = props;\n\n const [open, setOpenState] = useControlled({\n default: Boolean(defaultOpen),\n controlled: openProp,\n name: \"Collapsible\",\n state: \"open\",\n });\n\n const [panelId, setPanelId] = useState<string | undefined>(undefined);\n\n const setOpen = useCallback(\n (event: SyntheticEvent<HTMLButtonElement>, newOpen: boolean) => {\n setOpenState(newOpen);\n onOpenChange?.(event, newOpen);\n },\n [onOpenChange],\n );\n\n const contextValue = useMemo(\n () => ({\n open,\n setOpen,\n panelId,\n setPanelId,\n }),\n [open, setOpen, panelId],\n );\n\n return (\n <CollapsibleContext.Provider value={contextValue}>\n <div className={clsx(withBaseName(), className)} ref={ref} {...rest} />\n </CollapsibleContext.Provider>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","Collapsible","useControlled","useState","useCallback","useMemo","CollapsibleContext","jsx","clsx"],"mappings":";;;;;;;;;;;;;AA+BA,MAAM,YAAA,GAAeA,0BAAa,iBAAiB,CAAA;AAE5C,MAAM,WAAc,GAAAC,gBAAA;AAAA,EACzB,SAASC,YAAY,CAAA,KAAA,EAAO,GAAK,EAAA;AAC/B,IAAM,MAAA;AAAA,MACJ,SAAA;AAAA,MACA,IAAM,EAAA,QAAA;AAAA,MACN,WAAA;AAAA,MACA,YAAA;AAAA,MACA,GAAG;AAAA,KACD,GAAA,KAAA;AAEJ,IAAA,MAAM,CAAC,IAAA,EAAM,YAAY,CAAA,GAAIC,2BAAc,CAAA;AAAA,MACzC,OAAA,EAAS,QAAQ,WAAW,CAAA;AAAA,MAC5B,UAAY,EAAA,QAAA;AAAA,MACZ,IAAM,EAAA,aAAA;AAAA,MACN,KAAO,EAAA;AAAA,KACR,CAAA;AAED,IAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,eAA6B,MAAS,CAAA;AAEpE,IAAA,MAAM,OAAU,GAAAC,iBAAA;AAAA,MACd,CAAC,OAA0C,OAAqB,KAAA;AAC9D,QAAA,YAAA,CAAa,OAAO,CAAA;AACpB,QAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAe,KAAO,EAAA,OAAA,CAAA;AAAA,OACxB;AAAA,MACA,CAAC,YAAY;AAAA,KACf;AAEA,IAAA,MAAM,YAAe,GAAAC,aAAA;AAAA,MACnB,OAAO;AAAA,QACL,IAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA;AAAA,OACF,CAAA;AAAA,MACA,CAAC,IAAM,EAAA,OAAA,EAAS,OAAO;AAAA,KACzB;AAEA,IAAA,sCACGC,qCAAmB,CAAA,QAAA,EAAnB,EAA4B,KAAA,EAAO,cAClC,QAAC,kBAAAC,cAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAAC,SAAA,CAAK,cAAgB,EAAA,SAAS,GAAG,GAAW,EAAA,GAAG,MAAM,CACvE,EAAA,CAAA;AAAA;AAGN;;;;"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var createContext = require('../utils/createContext.js');
|
|
5
|
+
require('clsx');
|
|
6
|
+
require('react/jsx-runtime');
|
|
7
|
+
require('../utils/useFloatingUI/useFloatingUI.js');
|
|
8
|
+
require('../utils/useId.js');
|
|
9
|
+
require('../salt-provider/SaltProvider.js');
|
|
10
|
+
require('../viewport/ViewportProvider.js');
|
|
11
|
+
|
|
12
|
+
const CollapsibleContext = createContext.createContext(
|
|
13
|
+
"CollapsibleContext",
|
|
14
|
+
{
|
|
15
|
+
open: false,
|
|
16
|
+
setOpen: () => {
|
|
17
|
+
},
|
|
18
|
+
panelId: void 0,
|
|
19
|
+
setPanelId: () => {
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
);
|
|
23
|
+
function useCollapsibleContext() {
|
|
24
|
+
return React.useContext(CollapsibleContext);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
exports.CollapsibleContext = CollapsibleContext;
|
|
28
|
+
exports.useCollapsibleContext = useCollapsibleContext;
|
|
29
|
+
//# sourceMappingURL=CollapsibleContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CollapsibleContext.js","sources":["../src/collapsible/CollapsibleContext.ts"],"sourcesContent":["import { type SyntheticEvent, useContext } from \"react\";\nimport { createContext } from \"../utils\";\n\nexport type CollapsibleContextValue = {\n open: boolean;\n setOpen: (event: SyntheticEvent<HTMLButtonElement>, open: boolean) => void;\n panelId?: string;\n setPanelId?: (panelId: string) => void;\n};\n\nexport const CollapsibleContext = createContext<CollapsibleContextValue>(\n \"CollapsibleContext\",\n {\n open: false,\n setOpen: () => {},\n panelId: undefined,\n setPanelId: () => {},\n },\n);\n\nexport function useCollapsibleContext() {\n return useContext(CollapsibleContext);\n}\n"],"names":["createContext","useContext"],"mappings":";;;;;;;;;;;AAUO,MAAM,kBAAqB,GAAAA,2BAAA;AAAA,EAChC,oBAAA;AAAA,EACA;AAAA,IACE,IAAM,EAAA,KAAA;AAAA,IACN,SAAS,MAAM;AAAA,KAAC;AAAA,IAChB,OAAS,EAAA,MAAA;AAAA,IACT,YAAY,MAAM;AAAA;AAAC;AAEvB;AAEO,SAAS,qBAAwB,GAAA;AACtC,EAAA,OAAOC,iBAAW,kBAAkB,CAAA;AACtC;;;;;"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var css_248z = ".saltCollapsiblePanel {\n display: grid;\n transition:\n grid-template-rows var(--salt-duration-perceptible) ease-in-out,\n opacity var(--salt-duration-perceptible) ease-in-out,\n visibility var(--salt-duration-perceptible) ease-in-out;\n}\n\n.saltCollapsiblePanel[aria-hidden=\"true\"] {\n grid-template-rows: 0fr;\n opacity: 0;\n visibility: hidden;\n}\n\n.saltCollapsiblePanel {\n grid-template-rows: 1fr;\n opacity: 1;\n visibility: visible;\n}\n\n.saltCollapsiblePanel-inner {\n overflow: hidden;\n}\n";
|
|
4
|
+
|
|
5
|
+
module.exports = css_248z;
|
|
6
|
+
//# sourceMappingURL=CollapsiblePanel.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CollapsiblePanel.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var styles = require('@salt-ds/styles');
|
|
5
|
+
var window = require('@salt-ds/window');
|
|
6
|
+
var clsx = require('clsx');
|
|
7
|
+
var React = require('react');
|
|
8
|
+
var makePrefixer = require('../utils/makePrefixer.js');
|
|
9
|
+
require('../utils/useFloatingUI/useFloatingUI.js');
|
|
10
|
+
var useId = require('../utils/useId.js');
|
|
11
|
+
require('../salt-provider/SaltProvider.js');
|
|
12
|
+
require('../viewport/ViewportProvider.js');
|
|
13
|
+
var CollapsibleContext = require('./CollapsibleContext.js');
|
|
14
|
+
var CollapsiblePanel$1 = require('./CollapsiblePanel.css.js');
|
|
15
|
+
|
|
16
|
+
const withBaseName = makePrefixer.makePrefixer("saltCollapsiblePanel");
|
|
17
|
+
const CollapsiblePanel = (props) => {
|
|
18
|
+
const { children, className, id: idProp, ...rest } = props;
|
|
19
|
+
const targetWindow = window.useWindow();
|
|
20
|
+
styles.useComponentCssInjection({
|
|
21
|
+
testId: "salt-collapsible-panel",
|
|
22
|
+
css: CollapsiblePanel$1,
|
|
23
|
+
window: targetWindow
|
|
24
|
+
});
|
|
25
|
+
const id = useId.useId(idProp);
|
|
26
|
+
const { open, setPanelId } = CollapsibleContext.useCollapsibleContext();
|
|
27
|
+
React.useEffect(() => {
|
|
28
|
+
if (id) {
|
|
29
|
+
setPanelId == null ? void 0 : setPanelId(id);
|
|
30
|
+
}
|
|
31
|
+
}, [id, setPanelId]);
|
|
32
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
33
|
+
"div",
|
|
34
|
+
{
|
|
35
|
+
className: clsx.clsx(withBaseName(), className),
|
|
36
|
+
id,
|
|
37
|
+
"aria-hidden": !open ? "true" : void 0,
|
|
38
|
+
hidden: !open,
|
|
39
|
+
...rest,
|
|
40
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: withBaseName("inner"), children })
|
|
41
|
+
}
|
|
42
|
+
);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
exports.CollapsiblePanel = CollapsiblePanel;
|
|
46
|
+
//# sourceMappingURL=CollapsiblePanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CollapsiblePanel.js","sources":["../src/collapsible/CollapsiblePanel.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type ComponentPropsWithoutRef, useEffect } from \"react\";\nimport { makePrefixer, useId } from \"../utils\";\n\nimport { useCollapsibleContext } from \"./CollapsibleContext\";\nimport collapsiblePanelCss from \"./CollapsiblePanel.css\";\n\nexport interface CollapsiblePanelProps\n extends ComponentPropsWithoutRef<\"div\"> {}\n\nconst withBaseName = makePrefixer(\"saltCollapsiblePanel\");\n\nexport const CollapsiblePanel = (props: CollapsiblePanelProps) => {\n const { children, className, id: idProp, ...rest } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-collapsible-panel\",\n css: collapsiblePanelCss,\n window: targetWindow,\n });\n\n const id = useId(idProp);\n const { open, setPanelId } = useCollapsibleContext();\n\n useEffect(() => {\n if (id) {\n setPanelId?.(id);\n }\n }, [id, setPanelId]);\n\n return (\n <div\n className={clsx(withBaseName(), className)}\n id={id}\n aria-hidden={!open ? \"true\" : undefined}\n hidden={!open}\n {...rest}\n >\n <div className={withBaseName(\"inner\")}>{children}</div>\n </div>\n );\n};\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","collapsiblePanelCss","useId","useCollapsibleContext","useEffect","jsx","clsx"],"mappings":";;;;;;;;;;;;;;;AAYA,MAAM,YAAA,GAAeA,0BAAa,sBAAsB,CAAA;AAE3C,MAAA,gBAAA,GAAmB,CAAC,KAAiC,KAAA;AAChE,EAAA,MAAM,EAAE,QAAU,EAAA,SAAA,EAAW,IAAI,MAAQ,EAAA,GAAG,MAAS,GAAA,KAAA;AAErD,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,wBAAA;AAAA,IACR,GAAK,EAAAC,kBAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAM,MAAA,EAAA,GAAKC,YAAM,MAAM,CAAA;AACvB,EAAA,MAAM,EAAE,IAAA,EAAM,UAAW,EAAA,GAAIC,wCAAsB,EAAA;AAEnD,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,EAAI,EAAA;AACN,MAAa,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAA,EAAA,CAAA;AAAA;AACf,GACC,EAAA,CAAC,EAAI,EAAA,UAAU,CAAC,CAAA;AAEnB,EACE,uBAAAC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACzC,EAAA;AAAA,MACA,aAAA,EAAa,CAAC,IAAA,GAAO,MAAS,GAAA,MAAA;AAAA,MAC9B,QAAQ,CAAC,IAAA;AAAA,MACR,GAAG,IAAA;AAAA,MAEJ,yCAAC,KAAI,EAAA,EAAA,SAAA,EAAW,YAAa,CAAA,OAAO,GAAI,QAAS,EAAA;AAAA;AAAA,GACnD;AAEJ;;;;"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var clsx = require('clsx');
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var makePrefixer = require('../utils/makePrefixer.js');
|
|
7
|
+
var mergeProps = require('../utils/mergeProps.js');
|
|
8
|
+
require('../utils/useFloatingUI/useFloatingUI.js');
|
|
9
|
+
require('../utils/useId.js');
|
|
10
|
+
require('../salt-provider/SaltProvider.js');
|
|
11
|
+
require('../viewport/ViewportProvider.js');
|
|
12
|
+
var CollapsibleContext = require('./CollapsibleContext.js');
|
|
13
|
+
|
|
14
|
+
const withBaseName = makePrefixer.makePrefixer("saltCollapsibleTrigger");
|
|
15
|
+
const CollapsibleTrigger = React.forwardRef(function CollapsibleTrigger2(props, ref) {
|
|
16
|
+
const { children, className, onClick } = props;
|
|
17
|
+
const { open, setOpen, panelId } = CollapsibleContext.useCollapsibleContext();
|
|
18
|
+
const handleClick = (event) => {
|
|
19
|
+
setOpen(event, !open);
|
|
20
|
+
onClick == null ? void 0 : onClick(event);
|
|
21
|
+
};
|
|
22
|
+
if (!children || !React.isValidElement(children)) {
|
|
23
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
|
|
24
|
+
}
|
|
25
|
+
return React.cloneElement(children, {
|
|
26
|
+
...mergeProps.mergeProps(
|
|
27
|
+
{
|
|
28
|
+
className: clsx.clsx(withBaseName(), className),
|
|
29
|
+
"aria-expanded": open,
|
|
30
|
+
"aria-controls": panelId,
|
|
31
|
+
onClick: handleClick
|
|
32
|
+
},
|
|
33
|
+
children.props
|
|
34
|
+
),
|
|
35
|
+
ref
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
exports.CollapsibleTrigger = CollapsibleTrigger;
|
|
40
|
+
//# sourceMappingURL=CollapsibleTrigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CollapsibleTrigger.js","sources":["../src/collapsible/CollapsibleTrigger.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n cloneElement,\n forwardRef,\n isValidElement,\n type MouseEvent,\n type ReactNode,\n type Ref,\n} from \"react\";\nimport { makePrefixer, mergeProps } from \"../utils\";\nimport { useCollapsibleContext } from \"./CollapsibleContext\";\n\nexport interface CollapsibleTriggerProps\n extends Pick<ComponentPropsWithoutRef<\"button\">, \"className\" | \"onClick\"> {\n children: ReactNode;\n}\n\nconst withBaseName = makePrefixer(\"saltCollapsibleTrigger\");\n\nexport const CollapsibleTrigger = forwardRef<\n HTMLButtonElement,\n CollapsibleTriggerProps\n>(function CollapsibleTrigger(props, ref) {\n const { children, className, onClick } = props;\n\n const { open, setOpen, panelId } = useCollapsibleContext();\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n setOpen(event, !open);\n onClick?.(event);\n };\n\n if (!children || !isValidElement<{ ref?: Ref<unknown> }>(children)) {\n // Should we log or throw error?\n return <>{children}</>;\n }\n\n return cloneElement(children, {\n ...mergeProps(\n {\n className: clsx(withBaseName(), className),\n \"aria-expanded\": open,\n \"aria-controls\": panelId,\n onClick: handleClick,\n },\n children.props,\n ),\n ref,\n });\n});\n"],"names":["makePrefixer","forwardRef","CollapsibleTrigger","useCollapsibleContext","isValidElement","cloneElement","mergeProps","clsx"],"mappings":";;;;;;;;;;;;;AAkBA,MAAM,YAAA,GAAeA,0BAAa,wBAAwB,CAAA;AAEnD,MAAM,kBAAqB,GAAAC,gBAAA,CAGhC,SAASC,mBAAAA,CAAmB,OAAO,GAAK,EAAA;AACxC,EAAA,MAAM,EAAE,QAAA,EAAU,SAAW,EAAA,OAAA,EAAY,GAAA,KAAA;AAEzC,EAAA,MAAM,EAAE,IAAA,EAAM,OAAS,EAAA,OAAA,KAAYC,wCAAsB,EAAA;AAEzD,EAAM,MAAA,WAAA,GAAc,CAAC,KAAyC,KAAA;AAC5D,IAAQ,OAAA,CAAA,KAAA,EAAO,CAAC,IAAI,CAAA;AACpB,IAAU,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAA,KAAA,CAAA;AAAA,GACZ;AAEA,EAAA,IAAI,CAAC,QAAA,IAAY,CAACC,oBAAA,CAAuC,QAAQ,CAAG,EAAA;AAElE,IAAA,6DAAU,QAAS,EAAA,CAAA;AAAA;AAGrB,EAAA,OAAOC,mBAAa,QAAU,EAAA;AAAA,IAC5B,GAAGC,qBAAA;AAAA,MACD;AAAA,QACE,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,QACzC,eAAiB,EAAA,IAAA;AAAA,QACjB,eAAiB,EAAA,OAAA;AAAA,QACjB,OAAS,EAAA;AAAA,OACX;AAAA,MACA,QAAS,CAAA;AAAA,KACX;AAAA,IACA;AAAA,GACD,CAAA;AACH,CAAC;;;;"}
|
package/dist-cjs/index.js
CHANGED
|
@@ -24,6 +24,9 @@ var Card = require('./card/Card.js');
|
|
|
24
24
|
var Checkbox = require('./checkbox/Checkbox.js');
|
|
25
25
|
var CheckboxGroup = require('./checkbox/CheckboxGroup.js');
|
|
26
26
|
var CheckboxIcon = require('./checkbox/CheckboxIcon.js');
|
|
27
|
+
var Collapsible = require('./collapsible/Collapsible.js');
|
|
28
|
+
var CollapsiblePanel = require('./collapsible/CollapsiblePanel.js');
|
|
29
|
+
var CollapsibleTrigger = require('./collapsible/CollapsibleTrigger.js');
|
|
27
30
|
var ComboBox = require('./combo-box/ComboBox.js');
|
|
28
31
|
var Dialog = require('./dialog/Dialog.js');
|
|
29
32
|
var DialogActions = require('./dialog/DialogActions.js');
|
|
@@ -145,6 +148,13 @@ var usePrevious = require('./utils/usePrevious.js');
|
|
|
145
148
|
var useResizeObserver = require('./utils/useResizeObserver.js');
|
|
146
149
|
var useResponsiveProp = require('./utils/useResponsiveProp.js');
|
|
147
150
|
var useValueEffect = require('./utils/useValueEffect.js');
|
|
151
|
+
var VerticalNavigation = require('./vertical-navigation/VerticalNavigation.js');
|
|
152
|
+
var VerticalNavigationItem = require('./vertical-navigation/VerticalNavigationItem.js');
|
|
153
|
+
var VerticalNavigationItemContent = require('./vertical-navigation/VerticalNavigationItemContent.js');
|
|
154
|
+
var VerticalNavigationItemExpansionIcon = require('./vertical-navigation/VerticalNavigationItemExpansionIcon.js');
|
|
155
|
+
var VerticalNavigationItemLabel = require('./vertical-navigation/VerticalNavigationItemLabel.js');
|
|
156
|
+
var VerticalNavigationItemTrigger = require('./vertical-navigation/VerticalNavigationItemTrigger.js');
|
|
157
|
+
var VerticalNavigationSubMenu = require('./vertical-navigation/VerticalNavigationSubMenu.js');
|
|
148
158
|
var ViewportProvider = require('./viewport/ViewportProvider.js');
|
|
149
159
|
|
|
150
160
|
|
|
@@ -178,6 +188,9 @@ exports.Card = Card.Card;
|
|
|
178
188
|
exports.Checkbox = Checkbox.Checkbox;
|
|
179
189
|
exports.CheckboxGroup = CheckboxGroup.CheckboxGroup;
|
|
180
190
|
exports.CheckboxIcon = CheckboxIcon.CheckboxIcon;
|
|
191
|
+
exports.Collapsible = Collapsible.Collapsible;
|
|
192
|
+
exports.CollapsiblePanel = CollapsiblePanel.CollapsiblePanel;
|
|
193
|
+
exports.CollapsibleTrigger = CollapsibleTrigger.CollapsibleTrigger;
|
|
181
194
|
exports.ComboBox = ComboBox.ComboBox;
|
|
182
195
|
exports.ConditionalScrimWrapper = Dialog.ConditionalScrimWrapper;
|
|
183
196
|
exports.Dialog = Dialog.Dialog;
|
|
@@ -338,6 +351,14 @@ exports.useCurrentBreakpoint = useResponsiveProp.useCurrentBreakpoint;
|
|
|
338
351
|
exports.useOrderedBreakpoints = useResponsiveProp.useOrderedBreakpoints;
|
|
339
352
|
exports.useResponsiveProp = useResponsiveProp.useResponsiveProp;
|
|
340
353
|
exports.useValueEffect = useValueEffect.useValueEffect;
|
|
354
|
+
exports.VerticalNavigation = VerticalNavigation.VerticalNavigation;
|
|
355
|
+
exports.VerticalNavigationItem = VerticalNavigationItem.VerticalNavigationItem;
|
|
356
|
+
exports.useVerticalNavigationItem = VerticalNavigationItem.useVerticalNavigationItem;
|
|
357
|
+
exports.VerticalNavigationItemContent = VerticalNavigationItemContent.VerticalNavigationItemContent;
|
|
358
|
+
exports.VerticalNavigationItemExpansionIcon = VerticalNavigationItemExpansionIcon.VerticalNavigationItemExpansionIcon;
|
|
359
|
+
exports.VerticalNavigationItemLabel = VerticalNavigationItemLabel.VerticalNavigationItemLabel;
|
|
360
|
+
exports.VerticalNavigationItemTrigger = VerticalNavigationItemTrigger.VerticalNavigationItemTrigger;
|
|
361
|
+
exports.VerticalNavigationSubMenu = VerticalNavigationSubMenu.VerticalNavigationSubMenu;
|
|
341
362
|
exports.ViewportContext = ViewportProvider.ViewportContext;
|
|
342
363
|
exports.ViewportProvider = ViewportProvider.ViewportProvider;
|
|
343
364
|
exports.useViewport = ViewportProvider.useViewport;
|
package/dist-cjs/index.js.map
CHANGED
|
@@ -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,39 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var createContext = require('../utils/createContext.js');
|
|
6
|
+
require('clsx');
|
|
7
|
+
require('../utils/useFloatingUI/useFloatingUI.js');
|
|
8
|
+
require('../utils/useId.js');
|
|
9
|
+
require('../salt-provider/SaltProvider.js');
|
|
10
|
+
require('../viewport/ViewportProvider.js');
|
|
11
|
+
|
|
12
|
+
const SubMenuContext = createContext.createContext(
|
|
13
|
+
"SubMenuContext",
|
|
14
|
+
{ depth: -1, iconPaddingCount: 0 }
|
|
15
|
+
);
|
|
16
|
+
const useSubMenuContext = () => {
|
|
17
|
+
return React.useContext(SubMenuContext);
|
|
18
|
+
};
|
|
19
|
+
function SubMenuProvider({
|
|
20
|
+
children,
|
|
21
|
+
directIcons,
|
|
22
|
+
setDirectIcons
|
|
23
|
+
}) {
|
|
24
|
+
const { depth, iconPaddingCount } = useSubMenuContext();
|
|
25
|
+
const context = React.useMemo(
|
|
26
|
+
() => ({
|
|
27
|
+
depth: depth + 1,
|
|
28
|
+
iconPaddingCount: iconPaddingCount + (directIcons.length > 0 ? 1 : 0),
|
|
29
|
+
setDirectIcons
|
|
30
|
+
}),
|
|
31
|
+
[depth, iconPaddingCount, directIcons, setDirectIcons]
|
|
32
|
+
);
|
|
33
|
+
return /* @__PURE__ */ jsxRuntime.jsx(SubMenuContext.Provider, { value: context, children });
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
exports.SubMenuContext = SubMenuContext;
|
|
37
|
+
exports.SubMenuProvider = SubMenuProvider;
|
|
38
|
+
exports.useSubMenuContext = useSubMenuContext;
|
|
39
|
+
//# sourceMappingURL=SubMenuContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SubMenuContext.js","sources":["../src/vertical-navigation/SubMenuContext.tsx"],"sourcesContent":["import {\n type Dispatch,\n type ReactNode,\n type SetStateAction,\n useContext,\n useMemo,\n} from \"react\";\nimport { createContext } from \"../utils\";\n\ntype SubMenuContextValue = {\n depth: number;\n iconPaddingCount: number;\n setDirectIcons?: Dispatch<SetStateAction<string[]>>;\n};\n\nexport const SubMenuContext = createContext<SubMenuContextValue>(\n \"SubMenuContext\",\n { depth: -1, iconPaddingCount: 0 },\n);\n\nexport const useSubMenuContext = () => {\n return useContext(SubMenuContext);\n};\n\nexport function SubMenuProvider({\n children,\n directIcons,\n setDirectIcons,\n}: {\n children: ReactNode;\n directIcons: string[];\n setDirectIcons?: Dispatch<SetStateAction<string[]>>;\n}) {\n const { depth, iconPaddingCount } = useSubMenuContext();\n\n const context = useMemo(\n () => ({\n depth: depth + 1,\n iconPaddingCount: iconPaddingCount + (directIcons.length > 0 ? 1 : 0),\n setDirectIcons,\n }),\n [depth, iconPaddingCount, directIcons, setDirectIcons],\n );\n\n return (\n <SubMenuContext.Provider value={context}>\n {children}\n </SubMenuContext.Provider>\n );\n}\n"],"names":["createContext","useContext","useMemo"],"mappings":";;;;;;;;;;;AAeO,MAAM,cAAiB,GAAAA,2BAAA;AAAA,EAC5B,gBAAA;AAAA,EACA,EAAE,KAAA,EAAO,EAAI,EAAA,gBAAA,EAAkB,CAAE;AACnC;AAEO,MAAM,oBAAoB,MAAM;AACrC,EAAA,OAAOC,iBAAW,cAAc,CAAA;AAClC;AAEO,SAAS,eAAgB,CAAA;AAAA,EAC9B,QAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAIG,EAAA;AACD,EAAA,MAAM,EAAE,KAAA,EAAO,gBAAiB,EAAA,GAAI,iBAAkB,EAAA;AAEtD,EAAA,MAAM,OAAU,GAAAC,aAAA;AAAA,IACd,OAAO;AAAA,MACL,OAAO,KAAQ,GAAA,CAAA;AAAA,MACf,gBAAkB,EAAA,gBAAA,IAAoB,WAAY,CAAA,MAAA,GAAS,IAAI,CAAI,GAAA,CAAA,CAAA;AAAA,MACnE;AAAA,KACF,CAAA;AAAA,IACA,CAAC,KAAA,EAAO,gBAAkB,EAAA,WAAA,EAAa,cAAc;AAAA,GACvD;AAEA,EAAA,sCACG,cAAe,CAAA,QAAA,EAAf,EAAwB,KAAA,EAAO,SAC7B,QACH,EAAA,CAAA;AAEJ;;;;;;"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var css_248z = ".saltVerticalNavigation ol {\n display: flex;\n flex-direction: column;\n gap: var(--salt-spacing-fixed-100);\n list-style: none;\n padding: 0;\n margin: 0;\n position: relative;\n}\n\n.saltVerticalNavigationSubMenu > .saltDivider-horizontal,\n.saltVerticalNavigationItem > .saltDivider-horizontal,\n.saltVerticalNavigation ol > .saltDivider-horizontal {\n margin-bottom: calc(var(--salt-size-fixed-100) * -1);\n}\n\n.saltVerticalNavigation [data-has-direct-icons=\"false\"] .saltCollapsiblePanel-inner {\n margin-bottom: calc(var(--salt-size-fixed-100) * -1);\n}\n\n.saltVerticalNavigation [data-has-direct-icons=\"false\"] .saltCollapsiblePanel-inner .saltVerticalNavigationSubMenu {\n border-bottom: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-separable-tertiary-borderColor);\n}\n\n/* Only show border at the top-level */\n\n.saltVerticalNavigation .saltCollapsiblePanel-inner .saltCollapsiblePanel-inner,\n.saltVerticalNavigation .saltCollapsiblePanel[aria-hidden=\"true\"] .saltCollapsiblePanel-inner {\n margin-bottom: 0;\n}\n\n.saltVerticalNavigation .saltCollapsiblePanel-inner .saltCollapsiblePanel-inner .saltVerticalNavigationSubMenu,\n.saltVerticalNavigation .saltCollapsiblePanel[aria-hidden=\"true\"] .saltCollapsiblePanel-inner .saltVerticalNavigationSubMenu {\n border-bottom: none;\n}\n";
|
|
4
|
+
|
|
5
|
+
module.exports = css_248z;
|
|
6
|
+
//# sourceMappingURL=VerticalNavigation.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VerticalNavigation.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var styles = require('@salt-ds/styles');
|
|
5
|
+
var window = require('@salt-ds/window');
|
|
6
|
+
var clsx = require('clsx');
|
|
7
|
+
var React = require('react');
|
|
8
|
+
var makePrefixer = require('../utils/makePrefixer.js');
|
|
9
|
+
require('../utils/useFloatingUI/useFloatingUI.js');
|
|
10
|
+
require('../utils/useId.js');
|
|
11
|
+
require('../salt-provider/SaltProvider.js');
|
|
12
|
+
require('../viewport/ViewportProvider.js');
|
|
13
|
+
var SubMenuContext = require('./SubMenuContext.js');
|
|
14
|
+
var VerticalNavigation$1 = require('./VerticalNavigation.css.js');
|
|
15
|
+
|
|
16
|
+
const withBaseName = makePrefixer.makePrefixer("saltVerticalNavigation");
|
|
17
|
+
const VerticalNavigation = React.forwardRef(function VerticalNavigation2(props, ref) {
|
|
18
|
+
const { appearance = "bordered", children, className, ...rest } = props;
|
|
19
|
+
const targetWindow = window.useWindow();
|
|
20
|
+
styles.useComponentCssInjection({
|
|
21
|
+
testId: "salt-vertical-navigation",
|
|
22
|
+
css: VerticalNavigation$1,
|
|
23
|
+
window: targetWindow
|
|
24
|
+
});
|
|
25
|
+
const [directIcons, setDirectIcons] = React.useState([]);
|
|
26
|
+
return /* @__PURE__ */ jsxRuntime.jsx(SubMenuContext.SubMenuProvider, { directIcons, setDirectIcons, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
27
|
+
"nav",
|
|
28
|
+
{
|
|
29
|
+
ref,
|
|
30
|
+
className: clsx.clsx(withBaseName(), withBaseName(appearance), className),
|
|
31
|
+
...rest,
|
|
32
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("ol", { "data-has-direct-icons": directIcons.length > 0, children })
|
|
33
|
+
}
|
|
34
|
+
) });
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
exports.VerticalNavigation = VerticalNavigation;
|
|
38
|
+
//# sourceMappingURL=VerticalNavigation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VerticalNavigation.js","sources":["../src/vertical-navigation/VerticalNavigation.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type ComponentPropsWithoutRef, forwardRef, useState } from \"react\";\nimport { makePrefixer } from \"../utils\";\nimport { SubMenuProvider } from \"./SubMenuContext\";\nimport verticalNavigationCss from \"./VerticalNavigation.css\";\n\nexport interface VerticalNavigationProps\n extends ComponentPropsWithoutRef<\"nav\"> {\n /**\n * The appearance of the tabs. Defaults to \"bordered\".\n */\n appearance?: \"indicator\" | \"bordered\";\n}\n\nconst withBaseName = makePrefixer(\"saltVerticalNavigation\");\n\nexport const VerticalNavigation = forwardRef<\n HTMLElement,\n VerticalNavigationProps\n>(function VerticalNavigation(props, ref) {\n const { appearance = \"bordered\", children, className, ...rest } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-vertical-navigation\",\n css: verticalNavigationCss,\n window: targetWindow,\n });\n\n const [directIcons, setDirectIcons] = useState<string[]>([]);\n\n return (\n <SubMenuProvider directIcons={directIcons} setDirectIcons={setDirectIcons}>\n <nav\n ref={ref}\n className={clsx(withBaseName(), withBaseName(appearance), className)}\n {...rest}\n >\n <ol data-has-direct-icons={directIcons.length > 0}>{children}</ol>\n </nav>\n </SubMenuProvider>\n );\n});\n"],"names":["makePrefixer","forwardRef","VerticalNavigation","useWindow","useComponentCssInjection","verticalNavigationCss","useState","jsx","SubMenuProvider","clsx"],"mappings":";;;;;;;;;;;;;;;AAgBA,MAAM,YAAA,GAAeA,0BAAa,wBAAwB,CAAA;AAEnD,MAAM,kBAAqB,GAAAC,gBAAA,CAGhC,SAASC,mBAAAA,CAAmB,OAAO,GAAK,EAAA;AACxC,EAAA,MAAM,EAAE,UAAa,GAAA,UAAA,EAAY,UAAU,SAAW,EAAA,GAAG,MAAS,GAAA,KAAA;AAElE,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,0BAAA;AAAA,IACR,GAAK,EAAAC,oBAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,MAAM,CAAC,WAAa,EAAA,cAAc,CAAI,GAAAC,cAAA,CAAmB,EAAE,CAAA;AAE3D,EACE,uBAAAC,cAAA,CAACC,8BAAgB,EAAA,EAAA,WAAA,EAA0B,cACzC,EAAA,QAAA,kBAAAD,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,WAAWE,SAAK,CAAA,YAAA,IAAgB,YAAa,CAAA,UAAU,GAAG,SAAS,CAAA;AAAA,MAClE,GAAG,IAAA;AAAA,MAEJ,yCAAC,IAAG,EAAA,EAAA,uBAAA,EAAuB,WAAY,CAAA,MAAA,GAAS,GAAI,QAAS,EAAA;AAAA;AAAA,GAEjE,EAAA,CAAA;AAEJ,CAAC;;;;"}
|