@salt-ds/core 1.40.0 → 1.41.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 +40 -0
- package/css/salt-core.css +137 -26
- package/dist-cjs/avatar/Avatar.css.js +1 -1
- package/dist-cjs/avatar/Avatar.js +9 -8
- package/dist-cjs/avatar/Avatar.js.map +1 -1
- package/dist-cjs/border-item/BorderItem.js.map +1 -1
- package/dist-cjs/border-layout/BorderLayout.js.map +1 -1
- package/dist-cjs/combo-box/ComboBox.js +4 -4
- package/dist-cjs/combo-box/ComboBox.js.map +1 -1
- package/dist-cjs/flex-item/FlexItem.js +5 -10
- package/dist-cjs/flex-item/FlexItem.js.map +1 -1
- package/dist-cjs/flex-layout/FlexLayout.js +6 -11
- package/dist-cjs/flex-layout/FlexLayout.js.map +1 -1
- package/dist-cjs/flex-layout/parseSpacing.js +11 -0
- package/dist-cjs/flex-layout/parseSpacing.js.map +1 -0
- package/dist-cjs/form-field/FormField.css.js +1 -1
- package/dist-cjs/grid-item/GridItem.css.js +1 -1
- package/dist-cjs/grid-item/GridItem.js +7 -0
- package/dist-cjs/grid-item/GridItem.js.map +1 -1
- package/dist-cjs/grid-layout/GridLayout.css.js +1 -1
- package/dist-cjs/grid-layout/GridLayout.js +9 -8
- package/dist-cjs/grid-layout/GridLayout.js.map +1 -1
- package/dist-cjs/link/Link.css.js +1 -1
- package/dist-cjs/link/Link.js +8 -2
- package/dist-cjs/link/Link.js.map +1 -1
- package/dist-cjs/menu/MenuItem.css.js +1 -1
- package/dist-cjs/option/Option.css.js +1 -1
- package/dist-es/avatar/Avatar.css.js +1 -1
- package/dist-es/avatar/Avatar.js +9 -8
- package/dist-es/avatar/Avatar.js.map +1 -1
- package/dist-es/border-item/BorderItem.js.map +1 -1
- package/dist-es/border-layout/BorderLayout.js.map +1 -1
- package/dist-es/combo-box/ComboBox.js +4 -4
- package/dist-es/combo-box/ComboBox.js.map +1 -1
- package/dist-es/flex-item/FlexItem.js +3 -8
- package/dist-es/flex-item/FlexItem.js.map +1 -1
- package/dist-es/flex-layout/FlexLayout.js +3 -8
- package/dist-es/flex-layout/FlexLayout.js.map +1 -1
- package/dist-es/flex-layout/parseSpacing.js +9 -0
- package/dist-es/flex-layout/parseSpacing.js.map +1 -0
- package/dist-es/form-field/FormField.css.js +1 -1
- package/dist-es/grid-item/GridItem.css.js +1 -1
- package/dist-es/grid-item/GridItem.js +7 -0
- package/dist-es/grid-item/GridItem.js.map +1 -1
- package/dist-es/grid-layout/GridLayout.css.js +1 -1
- package/dist-es/grid-layout/GridLayout.js +7 -6
- package/dist-es/grid-layout/GridLayout.js.map +1 -1
- package/dist-es/link/Link.css.js +1 -1
- package/dist-es/link/Link.js +8 -2
- package/dist-es/link/Link.js.map +1 -1
- package/dist-es/menu/MenuItem.css.js +1 -1
- package/dist-es/option/Option.css.js +1 -1
- package/dist-types/avatar/Avatar.d.ts +5 -1
- package/dist-types/border-item/BorderItem.d.ts +9 -1
- package/dist-types/border-layout/BorderLayout.d.ts +9 -1
- package/dist-types/flex-layout/parseSpacing.d.ts +1 -0
- package/dist-types/grid-item/GridItem.d.ts +8 -0
- package/dist-types/grid-layout/GridLayout.d.ts +8 -0
- package/dist-types/link/Link.d.ts +2 -1
- package/package.json +2 -2
|
@@ -6,6 +6,7 @@ var window = require('@salt-ds/window');
|
|
|
6
6
|
var clsx = require('clsx');
|
|
7
7
|
var React = require('react');
|
|
8
8
|
var BreakpointProvider = require('../breakpoints/BreakpointProvider.js');
|
|
9
|
+
var parseSpacing = require('../flex-layout/parseSpacing.js');
|
|
9
10
|
var makePrefixer = require('../utils/makePrefixer.js');
|
|
10
11
|
require('../utils/useFloatingUI/useFloatingUI.js');
|
|
11
12
|
require('../utils/useId.js');
|
|
@@ -19,20 +20,14 @@ const FLEX_ITEM_ALIGNMENTS = [
|
|
|
19
20
|
"center",
|
|
20
21
|
"stretch"
|
|
21
22
|
];
|
|
22
|
-
function parseSpacing(value) {
|
|
23
|
-
if (value === void 0 || typeof value === "string") {
|
|
24
|
-
return value;
|
|
25
|
-
}
|
|
26
|
-
return `calc(var(--salt-spacing-100) * ${value})`;
|
|
27
|
-
}
|
|
28
23
|
const FlexItem = React.forwardRef(
|
|
29
24
|
({
|
|
30
25
|
as,
|
|
31
26
|
align,
|
|
32
27
|
children,
|
|
33
28
|
className,
|
|
34
|
-
margin
|
|
35
|
-
padding
|
|
29
|
+
margin,
|
|
30
|
+
padding,
|
|
36
31
|
shrink,
|
|
37
32
|
grow,
|
|
38
33
|
basis,
|
|
@@ -53,8 +48,8 @@ const FlexItem = React.forwardRef(
|
|
|
53
48
|
const flexItemMargin = useResponsiveProp.resolveResponsiveValue(margin, matchedBreakpoints);
|
|
54
49
|
const flexItemPadding = useResponsiveProp.resolveResponsiveValue(padding, matchedBreakpoints);
|
|
55
50
|
const itemStyle = {
|
|
56
|
-
"--flexItem-margin": parseSpacing(flexItemMargin),
|
|
57
|
-
"--flexItem-padding": parseSpacing(flexItemPadding),
|
|
51
|
+
"--flexItem-margin": parseSpacing.parseSpacing(flexItemMargin),
|
|
52
|
+
"--flexItem-padding": parseSpacing.parseSpacing(flexItemPadding),
|
|
58
53
|
"--saltFlexItem-alignment": align,
|
|
59
54
|
"--saltFlexItem-shrink": flexItemShrink,
|
|
60
55
|
"--saltFlexItem-grow": flexItemGrow,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlexItem.js","sources":["../src/flex-item/FlexItem.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type CSSProperties,\n type ElementType,\n type ReactElement,\n forwardRef,\n} from \"react\";\nimport { useBreakpoint } from \"../breakpoints\";\nimport {\n type PolymorphicComponentPropWithRef,\n type PolymorphicRef,\n type ResponsiveProp,\n makePrefixer,\n resolveResponsiveValue,\n} from \"../utils\";\nimport flexItemCss from \"./FlexItem.css\";\n\nconst withBaseName = makePrefixer(\"saltFlexItem\");\nexport const FLEX_ITEM_ALIGNMENTS = [\n \"start\",\n \"end\",\n \"center\",\n \"stretch\",\n] as const;\n\nexport type flexItemAlignment = (typeof FLEX_ITEM_ALIGNMENTS)[number];\n\nexport type FlexItemProps<T extends ElementType> =\n PolymorphicComponentPropWithRef<\n T,\n {\n /**\n * Allows the alignment specified by parent to be overridden for individual items, default is \"start\".\n */\n align?: flexItemAlignment;\n /**\n * Defines the ability for an item to shrink x times more compared to its siblings, default is 1.\n */\n shrink?: ResponsiveProp<number>;\n /**\n * Defines the ability for an item to grow x times more compared to its siblings, default is 0.\n */\n grow?: ResponsiveProp<number>;\n /**\n * Sets the initial main size of a flex item, default is \"auto\".\n */\n basis?: ResponsiveProp<CSSProperties[\"flexBasis\"]>;\n /**\n * Defines the margin around the component. It can be specified as a number (which acts as a multiplier) or a string representing the margin value. Default is `0`.\n */\n margin?: ResponsiveProp<number | string>;\n /**\n * Defines the padding within the component. It can be specified as a number (which acts as a multiplier) or a string representing the padding value. Default is `0`.\n */\n padding?: ResponsiveProp<number | string>;\n }\n >;\n\ntype FlexItemComponent = <T extends ElementType = \"div\">(\n props: FlexItemProps<T>,\n) => ReactElement | null;\n\
|
|
1
|
+
{"version":3,"file":"FlexItem.js","sources":["../src/flex-item/FlexItem.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type CSSProperties,\n type ElementType,\n type ReactElement,\n forwardRef,\n} from \"react\";\nimport { useBreakpoint } from \"../breakpoints\";\nimport { parseSpacing } from \"../flex-layout/parseSpacing\";\nimport {\n type PolymorphicComponentPropWithRef,\n type PolymorphicRef,\n type ResponsiveProp,\n makePrefixer,\n resolveResponsiveValue,\n} from \"../utils\";\nimport flexItemCss from \"./FlexItem.css\";\n\nconst withBaseName = makePrefixer(\"saltFlexItem\");\nexport const FLEX_ITEM_ALIGNMENTS = [\n \"start\",\n \"end\",\n \"center\",\n \"stretch\",\n] as const;\n\nexport type flexItemAlignment = (typeof FLEX_ITEM_ALIGNMENTS)[number];\n\nexport type FlexItemProps<T extends ElementType> =\n PolymorphicComponentPropWithRef<\n T,\n {\n /**\n * Allows the alignment specified by parent to be overridden for individual items, default is \"start\".\n */\n align?: flexItemAlignment;\n /**\n * Defines the ability for an item to shrink x times more compared to its siblings, default is 1.\n */\n shrink?: ResponsiveProp<number>;\n /**\n * Defines the ability for an item to grow x times more compared to its siblings, default is 0.\n */\n grow?: ResponsiveProp<number>;\n /**\n * Sets the initial main size of a flex item, default is \"auto\".\n */\n basis?: ResponsiveProp<CSSProperties[\"flexBasis\"]>;\n /**\n * Defines the margin around the component. It can be specified as a number (which acts as a multiplier) or a string representing the margin value. Default is `0`.\n */\n margin?: ResponsiveProp<number | string>;\n /**\n * Defines the padding within the component. It can be specified as a number (which acts as a multiplier) or a string representing the padding value. Default is `0`.\n */\n padding?: ResponsiveProp<number | string>;\n }\n >;\n\ntype FlexItemComponent = <T extends ElementType = \"div\">(\n props: FlexItemProps<T>,\n) => ReactElement | null;\n\nexport const FlexItem: FlexItemComponent = forwardRef(\n <T extends ElementType = \"div\">(\n {\n as,\n align,\n children,\n className,\n margin,\n padding,\n shrink,\n grow,\n basis,\n style,\n ...rest\n }: FlexItemProps<T>,\n ref?: PolymorphicRef<T>,\n ) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-flex-item\",\n css: flexItemCss,\n window: targetWindow,\n });\n const { matchedBreakpoints } = useBreakpoint();\n\n const Component = as || \"div\";\n const flexItemShrink = resolveResponsiveValue(shrink, matchedBreakpoints);\n const flexItemGrow = resolveResponsiveValue(grow, matchedBreakpoints);\n const flexItemBasis = resolveResponsiveValue(basis, matchedBreakpoints);\n const flexItemMargin = resolveResponsiveValue(margin, matchedBreakpoints);\n const flexItemPadding = resolveResponsiveValue(padding, matchedBreakpoints);\n\n const itemStyle = {\n \"--flexItem-margin\": parseSpacing(flexItemMargin),\n \"--flexItem-padding\": parseSpacing(flexItemPadding),\n \"--saltFlexItem-alignment\": align,\n \"--saltFlexItem-shrink\": flexItemShrink,\n \"--saltFlexItem-grow\": flexItemGrow,\n \"--saltFlexItem-basis\": flexItemBasis,\n ...style,\n };\n return (\n <Component\n className={clsx(withBaseName(), className)}\n ref={ref}\n style={itemStyle}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","useWindow","useComponentCssInjection","flexItemCss","useBreakpoint","resolveResponsiveValue","parseSpacing","jsx","clsx"],"mappings":";;;;;;;;;;;;;;;AAoBA,MAAM,YAAA,GAAeA,0BAAa,cAAc,CAAA;AACzC,MAAM,oBAAuB,GAAA;AAAA,EAClC,OAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF;AAuCO,MAAM,QAA8B,GAAAC,gBAAA;AAAA,EACzC,CACE;AAAA,IACE,EAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAG;AAAA,KAEL,GACG,KAAA;AACH,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,gBAAA;AAAA,MACR,GAAK,EAAAC,UAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AACD,IAAM,MAAA,EAAE,kBAAmB,EAAA,GAAIC,gCAAc,EAAA;AAE7C,IAAA,MAAM,YAAY,EAAM,IAAA,KAAA;AACxB,IAAM,MAAA,cAAA,GAAiBC,wCAAuB,CAAA,MAAA,EAAQ,kBAAkB,CAAA;AACxE,IAAM,MAAA,YAAA,GAAeA,wCAAuB,CAAA,IAAA,EAAM,kBAAkB,CAAA;AACpE,IAAM,MAAA,aAAA,GAAgBA,wCAAuB,CAAA,KAAA,EAAO,kBAAkB,CAAA;AACtE,IAAM,MAAA,cAAA,GAAiBA,wCAAuB,CAAA,MAAA,EAAQ,kBAAkB,CAAA;AACxE,IAAM,MAAA,eAAA,GAAkBA,wCAAuB,CAAA,OAAA,EAAS,kBAAkB,CAAA;AAE1E,IAAA,MAAM,SAAY,GAAA;AAAA,MAChB,mBAAA,EAAqBC,0BAAa,cAAc,CAAA;AAAA,MAChD,oBAAA,EAAsBA,0BAAa,eAAe,CAAA;AAAA,MAClD,0BAA4B,EAAA,KAAA;AAAA,MAC5B,uBAAyB,EAAA,cAAA;AAAA,MACzB,qBAAuB,EAAA,YAAA;AAAA,MACvB,sBAAwB,EAAA,aAAA;AAAA,MACxB,GAAG;AAAA,KACL;AACA,IACE,uBAAAC,cAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,QACzC,GAAA;AAAA,QACA,KAAO,EAAA,SAAA;AAAA,QACN,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA;AAGN;;;;;"}
|
|
@@ -11,6 +11,7 @@ require('../utils/useFloatingUI/useFloatingUI.js');
|
|
|
11
11
|
require('../utils/useId.js');
|
|
12
12
|
var useResponsiveProp = require('../utils/useResponsiveProp.js');
|
|
13
13
|
var FlexLayout$1 = require('./FlexLayout.css.js');
|
|
14
|
+
var parseSpacing = require('./parseSpacing.js');
|
|
14
15
|
|
|
15
16
|
const withBaseName = makePrefixer.makePrefixer("saltFlexLayout");
|
|
16
17
|
const FLEX_ALIGNMENT_BASE = ["start", "end", "center"];
|
|
@@ -23,12 +24,6 @@ const FLEX_CONTENT_ALIGNMENT_BASE = [
|
|
|
23
24
|
function parseAlignment(style) {
|
|
24
25
|
return style === "start" || style === "end" ? `flex-${style}` : style;
|
|
25
26
|
}
|
|
26
|
-
function parseSpacing(value) {
|
|
27
|
-
if (value === void 0 || typeof value === "string") {
|
|
28
|
-
return value;
|
|
29
|
-
}
|
|
30
|
-
return `calc(var(--salt-spacing-100) * ${value})`;
|
|
31
|
-
}
|
|
32
27
|
const FlexLayout = React.forwardRef(
|
|
33
28
|
({
|
|
34
29
|
as,
|
|
@@ -37,8 +32,8 @@ const FlexLayout = React.forwardRef(
|
|
|
37
32
|
className,
|
|
38
33
|
direction = "row",
|
|
39
34
|
gap = 3,
|
|
40
|
-
margin
|
|
41
|
-
padding
|
|
35
|
+
margin,
|
|
36
|
+
padding,
|
|
42
37
|
justify,
|
|
43
38
|
separators,
|
|
44
39
|
style,
|
|
@@ -63,9 +58,9 @@ const FlexLayout = React.forwardRef(
|
|
|
63
58
|
...style,
|
|
64
59
|
"--flexLayout-align": parseAlignment(align),
|
|
65
60
|
"--flexLayout-direction": flexDirection,
|
|
66
|
-
"--flexLayout-gap": parseSpacing(flexGap),
|
|
67
|
-
"--flexLayout-margin": parseSpacing(flexMargin),
|
|
68
|
-
"--flexLayout-padding": parseSpacing(flexPadding),
|
|
61
|
+
"--flexLayout-gap": parseSpacing.parseSpacing(flexGap),
|
|
62
|
+
"--flexLayout-margin": parseSpacing.parseSpacing(flexMargin),
|
|
63
|
+
"--flexLayout-padding": parseSpacing.parseSpacing(flexPadding),
|
|
69
64
|
"--flexLayout-justify": parseAlignment(justify),
|
|
70
65
|
"--flexLayout-wrap": flexWrap ? "wrap" : "nowrap"
|
|
71
66
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlexLayout.js","sources":["../src/flex-layout/FlexLayout.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type ElementType, type ReactElement, forwardRef } from \"react\";\nimport { useBreakpoint } from \"../breakpoints\";\nimport {\n type PolymorphicComponentPropWithRef,\n type PolymorphicRef,\n type ResponsiveProp,\n makePrefixer,\n resolveResponsiveValue,\n} from \"../utils\";\nimport flexLayoutCss from \"./FlexLayout.css\";\n\nconst withBaseName = makePrefixer(\"saltFlexLayout\");\n\nexport type LayoutSeparator = \"start\" | \"center\" | \"end\";\nexport type LayoutDirection = \"row\" | \"column\";\n\nexport const FLEX_ALIGNMENT_BASE = [\"start\", \"end\", \"center\"] as const;\nexport const FLEX_CONTENT_ALIGNMENT_BASE = [\n ...FLEX_ALIGNMENT_BASE,\n \"space-between\",\n \"space-around\",\n \"space-evenly\",\n] as const;\n\nexport type FlexAlignment = (typeof FLEX_ALIGNMENT_BASE)[number];\nexport type FlexContentAlignment = (typeof FLEX_CONTENT_ALIGNMENT_BASE)[number];\n\nexport type FlexLayoutProps<T extends ElementType> =\n PolymorphicComponentPropWithRef<\n T,\n {\n /**\n * Defines the default behavior for how flex items are laid out along the cross axis on the current line, default is \"stretch\".\n */\n align?: FlexAlignment | \"stretch\" | \"baseline\";\n /**\n * Establishes the main-axis, defining the direction children are placed. Default is \"row\".\n */\n direction?: ResponsiveProp<LayoutDirection>;\n /**\n * Controls the space between items, default is 3.\n */\n gap?: ResponsiveProp<number | string>;\n /**\n * Defines the alignment along the main axis, default is \"start\".\n */\n justify?: FlexContentAlignment;\n /**\n * **Deprecated:** For separators see `StackLayout` component instead.\n *\n * Adds a separator between elements if wrap is not active, default is false.\n */\n separators?: LayoutSeparator | true;\n /**\n * Allow the items to wrap as needed, default is false.\n */\n wrap?: ResponsiveProp<boolean>;\n /**\n * Defines the margin around the component. It can be specified as a number (which acts as a multiplier) or a string representing the margin value. Default is `0`.\n */\n margin?: ResponsiveProp<number | string>;\n /**\n * Defines the padding within the component. It can be specified as a number (which acts as a multiplier) or a string representing the padding value. Default is `0`.\n */\n padding?: ResponsiveProp<number | string>;\n }\n >;\n\ntype FlexLayoutComponent = <T extends ElementType = \"div\">(\n props: FlexLayoutProps<T>,\n) => ReactElement | null;\n\nfunction parseAlignment(style: string | undefined) {\n return style === \"start\" || style === \"end\" ? `flex-${style}` : style;\n}\n\
|
|
1
|
+
{"version":3,"file":"FlexLayout.js","sources":["../src/flex-layout/FlexLayout.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type ElementType, type ReactElement, forwardRef } from \"react\";\nimport { useBreakpoint } from \"../breakpoints\";\nimport {\n type PolymorphicComponentPropWithRef,\n type PolymorphicRef,\n type ResponsiveProp,\n makePrefixer,\n resolveResponsiveValue,\n} from \"../utils\";\nimport flexLayoutCss from \"./FlexLayout.css\";\nimport { parseSpacing } from \"./parseSpacing\";\n\nconst withBaseName = makePrefixer(\"saltFlexLayout\");\n\nexport type LayoutSeparator = \"start\" | \"center\" | \"end\";\nexport type LayoutDirection = \"row\" | \"column\";\n\nexport const FLEX_ALIGNMENT_BASE = [\"start\", \"end\", \"center\"] as const;\nexport const FLEX_CONTENT_ALIGNMENT_BASE = [\n ...FLEX_ALIGNMENT_BASE,\n \"space-between\",\n \"space-around\",\n \"space-evenly\",\n] as const;\n\nexport type FlexAlignment = (typeof FLEX_ALIGNMENT_BASE)[number];\nexport type FlexContentAlignment = (typeof FLEX_CONTENT_ALIGNMENT_BASE)[number];\n\nexport type FlexLayoutProps<T extends ElementType> =\n PolymorphicComponentPropWithRef<\n T,\n {\n /**\n * Defines the default behavior for how flex items are laid out along the cross axis on the current line, default is \"stretch\".\n */\n align?: FlexAlignment | \"stretch\" | \"baseline\";\n /**\n * Establishes the main-axis, defining the direction children are placed. Default is \"row\".\n */\n direction?: ResponsiveProp<LayoutDirection>;\n /**\n * Controls the space between items, default is 3.\n */\n gap?: ResponsiveProp<number | string>;\n /**\n * Defines the alignment along the main axis, default is \"start\".\n */\n justify?: FlexContentAlignment;\n /**\n * **Deprecated:** For separators see `StackLayout` component instead.\n *\n * Adds a separator between elements if wrap is not active, default is false.\n */\n separators?: LayoutSeparator | true;\n /**\n * Allow the items to wrap as needed, default is false.\n */\n wrap?: ResponsiveProp<boolean>;\n /**\n * Defines the margin around the component. It can be specified as a number (which acts as a multiplier) or a string representing the margin value. Default is `0`.\n */\n margin?: ResponsiveProp<number | string>;\n /**\n * Defines the padding within the component. It can be specified as a number (which acts as a multiplier) or a string representing the padding value. Default is `0`.\n */\n padding?: ResponsiveProp<number | string>;\n }\n >;\n\ntype FlexLayoutComponent = <T extends ElementType = \"div\">(\n props: FlexLayoutProps<T>,\n) => ReactElement | null;\n\nfunction parseAlignment(style: string | undefined) {\n return style === \"start\" || style === \"end\" ? `flex-${style}` : style;\n}\n\nexport const FlexLayout: FlexLayoutComponent = forwardRef(\n <T extends ElementType = \"div\">(\n {\n as,\n align,\n children,\n className,\n direction = \"row\",\n gap = 3,\n margin,\n padding,\n justify,\n separators,\n style,\n wrap = false,\n ...rest\n }: FlexLayoutProps<T>,\n ref?: PolymorphicRef<T>,\n ) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-flex-layout\",\n css: flexLayoutCss,\n window: targetWindow,\n });\n\n const Component = as || \"div\";\n const separatorAlignment = separators === true ? \"center\" : separators;\n\n const { matchedBreakpoints } = useBreakpoint();\n const flexGap = resolveResponsiveValue(gap, matchedBreakpoints);\n const flexMargin = resolveResponsiveValue(margin, matchedBreakpoints);\n const flexPadding = resolveResponsiveValue(padding, matchedBreakpoints);\n const flexDirection = resolveResponsiveValue(direction, matchedBreakpoints);\n const flexWrap = resolveResponsiveValue(wrap, matchedBreakpoints);\n const flexLayoutStyles = {\n ...style,\n \"--flexLayout-align\": parseAlignment(align),\n \"--flexLayout-direction\": flexDirection,\n \"--flexLayout-gap\": parseSpacing(flexGap),\n \"--flexLayout-margin\": parseSpacing(flexMargin),\n \"--flexLayout-padding\": parseSpacing(flexPadding),\n \"--flexLayout-justify\": parseAlignment(justify),\n \"--flexLayout-wrap\": flexWrap ? \"wrap\" : \"nowrap\",\n };\n\n return (\n <Component\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"separator\")]: separatorAlignment && !wrap,\n [withBaseName(\n `separator-${flexDirection ?? \"row\"}-${\n separatorAlignment ?? \"center\"\n }`,\n )]: separatorAlignment && !wrap,\n [withBaseName(`separator-${flexDirection ?? \"row\"}`)]:\n separatorAlignment && !wrap,\n },\n className,\n )}\n ref={ref}\n style={flexLayoutStyles}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","useWindow","useComponentCssInjection","flexLayoutCss","useBreakpoint","resolveResponsiveValue","parseSpacing","jsx","clsx"],"mappings":";;;;;;;;;;;;;;;AAeA,MAAM,YAAA,GAAeA,0BAAa,gBAAgB,CAAA;AAK3C,MAAM,mBAAsB,GAAA,CAAC,OAAS,EAAA,KAAA,EAAO,QAAQ;AACrD,MAAM,2BAA8B,GAAA;AAAA,EACzC,GAAG,mBAAA;AAAA,EACH,eAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF;AAkDA,SAAS,eAAe,KAA2B,EAAA;AACjD,EAAA,OAAO,UAAU,OAAW,IAAA,KAAA,KAAU,KAAQ,GAAA,CAAA,KAAA,EAAQ,KAAK,CAAK,CAAA,GAAA,KAAA;AAClE;AAEO,MAAM,UAAkC,GAAAC,gBAAA;AAAA,EAC7C,CACE;AAAA,IACE,EAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAY,GAAA,KAAA;AAAA,IACZ,GAAM,GAAA,CAAA;AAAA,IACN,MAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAO,GAAA,KAAA;AAAA,IACP,GAAG;AAAA,KAEL,GACG,KAAA;AACH,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,kBAAA;AAAA,MACR,GAAK,EAAAC,YAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAA,MAAM,YAAY,EAAM,IAAA,KAAA;AACxB,IAAM,MAAA,kBAAA,GAAqB,UAAe,KAAA,IAAA,GAAO,QAAW,GAAA,UAAA;AAE5D,IAAM,MAAA,EAAE,kBAAmB,EAAA,GAAIC,gCAAc,EAAA;AAC7C,IAAM,MAAA,OAAA,GAAUC,wCAAuB,CAAA,GAAA,EAAK,kBAAkB,CAAA;AAC9D,IAAM,MAAA,UAAA,GAAaA,wCAAuB,CAAA,MAAA,EAAQ,kBAAkB,CAAA;AACpE,IAAM,MAAA,WAAA,GAAcA,wCAAuB,CAAA,OAAA,EAAS,kBAAkB,CAAA;AACtE,IAAM,MAAA,aAAA,GAAgBA,wCAAuB,CAAA,SAAA,EAAW,kBAAkB,CAAA;AAC1E,IAAM,MAAA,QAAA,GAAWA,wCAAuB,CAAA,IAAA,EAAM,kBAAkB,CAAA;AAChE,IAAA,MAAM,gBAAmB,GAAA;AAAA,MACvB,GAAG,KAAA;AAAA,MACH,oBAAA,EAAsB,eAAe,KAAK,CAAA;AAAA,MAC1C,wBAA0B,EAAA,aAAA;AAAA,MAC1B,kBAAA,EAAoBC,0BAAa,OAAO,CAAA;AAAA,MACxC,qBAAA,EAAuBA,0BAAa,UAAU,CAAA;AAAA,MAC9C,sBAAA,EAAwBA,0BAAa,WAAW,CAAA;AAAA,MAChD,sBAAA,EAAwB,eAAe,OAAO,CAAA;AAAA,MAC9C,mBAAA,EAAqB,WAAW,MAAS,GAAA;AAAA,KAC3C;AAEA,IACE,uBAAAC,cAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,SAAW,EAAAC,SAAA;AAAA,UACT,YAAa,EAAA;AAAA,UACb;AAAA,YACE,CAAC,YAAa,CAAA,WAAW,CAAC,GAAG,sBAAsB,CAAC,IAAA;AAAA,YACpD,CAAC,YAAA;AAAA,cACC,CAAa,UAAA,EAAA,aAAA,IAAiB,KAAK,CAAA,CAAA,EACjC,sBAAsB,QACxB,CAAA;AAAA,aACD,GAAG,kBAAA,IAAsB,CAAC,IAAA;AAAA,YAC3B,CAAC,aAAa,CAAa,UAAA,EAAA,aAAA,IAAiB,KAAK,CAAE,CAAA,CAAC,GAClD,kBAAA,IAAsB,CAAC;AAAA,WAC3B;AAAA,UACA;AAAA,SACF;AAAA,QACA,GAAA;AAAA,QACA,KAAO,EAAA,gBAAA;AAAA,QACN,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA;AAGN;;;;;;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function parseSpacing(value) {
|
|
4
|
+
if (value === void 0 || typeof value === "string") {
|
|
5
|
+
return value;
|
|
6
|
+
}
|
|
7
|
+
return `calc(var(--salt-spacing-100) * ${value})`;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
exports.parseSpacing = parseSpacing;
|
|
11
|
+
//# sourceMappingURL=parseSpacing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseSpacing.js","sources":["../src/flex-layout/parseSpacing.ts"],"sourcesContent":["export function parseSpacing(value: number | string | undefined) {\n if (value === undefined || typeof value === \"string\") {\n return value;\n }\n\n return `calc(var(--salt-spacing-100) * ${value})`;\n}\n"],"names":[],"mappings":";;AAAO,SAAS,aAAa,KAAoC,EAAA;AAC/D,EAAA,IAAI,KAAU,KAAA,KAAA,CAAA,IAAa,OAAO,KAAA,KAAU,QAAU,EAAA;AACpD,IAAO,OAAA,KAAA;AAAA;AAGT,EAAA,OAAO,kCAAkC,KAAK,CAAA,CAAA,CAAA;AAChD;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var css_248z = ".saltFormField {\n display: inline-grid;\n position: relative;\n gap: var(--salt-spacing-100);\n text-align: left;\n width: var(--saltFormField-width, 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.saltFormField-labelTop {\n gap: var(--salt-spacing-75);\n grid-auto-rows: min-content;\n grid-template-areas:\n \"label\"\n \"controls\";\n}\n\n.saltFormField-labelTop .saltFormFieldHelperText {\n grid-area: 3 / 1;\n}\n\n.saltFormField-labelLeft {\n
|
|
3
|
+
var css_248z = ".saltFormField {\n display: inline-grid;\n position: relative;\n gap: var(--salt-spacing-100);\n text-align: left;\n width: var(--saltFormField-width, 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.saltFormField-labelTop {\n gap: var(--salt-spacing-75);\n grid-auto-rows: min-content;\n grid-template-areas:\n \"label\"\n \"controls\";\n}\n\n.saltFormField-labelTop .saltFormFieldHelperText {\n grid-area: 3 / 1;\n}\n\n.saltFormField-labelLeft {\n grid-template-columns: var(--saltFormField-label-width, var(--formField-label-width, 40%)) 1fr;\n grid-template-areas: \"label controls\";\n}\n\n.saltFormField-labelRight {\n grid-template-columns: var(--saltFormField-label-width, var(--formField-label-width, 40%)) 1fr;\n grid-template-areas: \"label controls\";\n}\n\n.saltFormField-labelLeft .saltFormFieldHelperText,\n.saltFormField-labelRight .saltFormFieldHelperText {\n grid-area: 2 / 2;\n}\n\n.saltFormField-labelRight .saltFormFieldLabel,\n.saltFormField-labelLeft .saltFormFieldLabel {\n padding-top: var(--salt-spacing-100);\n}\n\n.saltFormField-labelRight .saltFormFieldLabel {\n text-align: right;\n}\n\n.saltFormField-controls {\n align-items: center;\n display: grid;\n grid-auto-columns: minmax(0, 1fr);\n grid-auto-flow: column;\n grid-column-gap: var(--salt-spacing-100);\n}\n\n.saltFormFieldLabel {\n grid-area: label;\n}\n\n.saltFormFieldHelperText {\n grid-area: helperText;\n}\n\n.saltFormField-disabled {\n --saltInput-outline: none;\n --saltCheckbox-outline: none;\n --saltRadioButton-outline: none;\n}\n";
|
|
4
4
|
|
|
5
5
|
module.exports = css_248z;
|
|
6
6
|
//# sourceMappingURL=FormField.css.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var css_248z = "/* Style applied to the root element */\n.saltGridItem {\n justify-self: var(--gridItem-justifySelf);\n align-self: var(--gridItem-alignSelf);\n grid-row-start: var(--gridItem-gridRowStart);\n grid-column-start: var(--gridItem-gridColumnStart);\n grid-row-end: var(--gridItem-gridRowEnd);\n grid-column-end: var(--gridItem-gridColumnEnd);\n}\n\n.saltGridItem-area {\n grid-area: var(--gridItem-gridArea);\n}\n";
|
|
3
|
+
var css_248z = "/* Style applied to the root element */\n.saltGridItem {\n justify-self: var(--gridItem-justifySelf);\n align-self: var(--gridItem-alignSelf);\n grid-row-start: var(--gridItem-gridRowStart);\n grid-column-start: var(--gridItem-gridColumnStart);\n grid-row-end: var(--gridItem-gridRowEnd);\n grid-column-end: var(--gridItem-gridColumnEnd);\n margin: var(--gridItem-margin);\n padding: var(--gridItem-padding);\n}\n\n.saltGridItem-area {\n grid-area: var(--gridItem-gridArea);\n}\n";
|
|
4
4
|
|
|
5
5
|
module.exports = css_248z;
|
|
6
6
|
//# sourceMappingURL=GridItem.css.js.map
|
|
@@ -6,6 +6,7 @@ var React = require('react');
|
|
|
6
6
|
var styles = require('@salt-ds/styles');
|
|
7
7
|
var window = require('@salt-ds/window');
|
|
8
8
|
var BreakpointProvider = require('../breakpoints/BreakpointProvider.js');
|
|
9
|
+
var parseSpacing = require('../flex-layout/parseSpacing.js');
|
|
9
10
|
var makePrefixer = require('../utils/makePrefixer.js');
|
|
10
11
|
require('../utils/useFloatingUI/useFloatingUI.js');
|
|
11
12
|
require('../utils/useId.js');
|
|
@@ -28,6 +29,8 @@ const GridItem = React.forwardRef(
|
|
|
28
29
|
as,
|
|
29
30
|
children,
|
|
30
31
|
className,
|
|
32
|
+
margin,
|
|
33
|
+
padding,
|
|
31
34
|
colSpan = "auto",
|
|
32
35
|
rowSpan = "auto",
|
|
33
36
|
horizontalAlignment = "stretch",
|
|
@@ -45,11 +48,15 @@ const GridItem = React.forwardRef(
|
|
|
45
48
|
const Component = as || "div";
|
|
46
49
|
const gridItemColSpan = useResponsiveProp.resolveResponsiveValue(colSpan, matchedBreakpoints);
|
|
47
50
|
const gridItemRowSpan = useResponsiveProp.resolveResponsiveValue(rowSpan, matchedBreakpoints);
|
|
51
|
+
const gridItemMargin = useResponsiveProp.resolveResponsiveValue(margin, matchedBreakpoints);
|
|
52
|
+
const gridItemPadding = useResponsiveProp.resolveResponsiveValue(padding, matchedBreakpoints);
|
|
48
53
|
const gridColumnStart = gridItemColSpan ? `span ${gridItemColSpan}` : colStart;
|
|
49
54
|
const gridColumnEnd = gridItemColSpan ? `span ${gridItemColSpan}` : colEnd;
|
|
50
55
|
const gridRowStart = gridItemRowSpan ? `span ${gridItemRowSpan}` : rowStart;
|
|
51
56
|
const gridRowEnd = gridItemRowSpan ? `span ${gridItemRowSpan}` : rowEnd;
|
|
52
57
|
const gridStyles = {
|
|
58
|
+
"--gridItem-margin": parseSpacing.parseSpacing(gridItemMargin),
|
|
59
|
+
"--gridItem-padding": parseSpacing.parseSpacing(gridItemPadding),
|
|
53
60
|
...style,
|
|
54
61
|
"--gridItem-justifySelf": horizontalAlignment,
|
|
55
62
|
"--gridItem-alignSelf": verticalAlignment,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridItem.js","sources":["../src/grid-item/GridItem.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { type ElementType, type ReactElement, forwardRef } from \"react\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useBreakpoint } from \"../breakpoints\";\nimport {\n type PolymorphicComponentPropWithRef,\n type PolymorphicRef,\n type ResponsiveProp,\n makePrefixer,\n resolveResponsiveValue,\n} from \"../utils\";\nimport gridItemCss from \"./GridItem.css\";\n\nexport const GRID_ALIGNMENT_BASE = [\n \"start\",\n \"end\",\n \"center\",\n \"stretch\",\n] as const;\n\ntype GridAlignment = (typeof GRID_ALIGNMENT_BASE)[number];\n\ntype GridProperty = number | \"auto\";\nexport type GridItemProps<T extends ElementType> =\n PolymorphicComponentPropWithRef<\n T,\n {\n /**\n * The item will span across the provided number of grid columns. Defaults to \"auto\"\n */\n colSpan?: ResponsiveProp<GridProperty>;\n /**\n * The item will span across the provided number of grid rows. Defaults to \"auto\"\n */\n rowSpan?: ResponsiveProp<GridProperty>;\n /**\n * Aligns a grid item inside a cell along the inline (row) axis. Defaults to \"stretch\"\n */\n horizontalAlignment?: GridAlignment;\n /**\n * Aligns a grid item inside a cell along the block (column) axis. Defaults to \"stretch\"\n */\n verticalAlignment?: GridAlignment;\n }\n >;\n\nconst withBaseName = makePrefixer(\"saltGridItem\");\n\nconst colStart = \"auto\";\nconst colEnd = \"auto\";\nconst rowStart = \"auto\";\nconst rowEnd = \"auto\";\n\ntype GridItemComponent = <T extends ElementType = \"div\">(\n props: GridItemProps<T>,\n) => ReactElement | null;\n\nexport const GridItem: GridItemComponent = forwardRef(\n <T extends ElementType = \"div\">(\n {\n as,\n children,\n className,\n colSpan = \"auto\",\n rowSpan = \"auto\",\n horizontalAlignment = \"stretch\",\n verticalAlignment = \"stretch\",\n style,\n ...rest\n }: GridItemProps<T>,\n ref?: PolymorphicRef<T>,\n ) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-grid-item\",\n css: gridItemCss,\n window: targetWindow,\n });\n\n const { matchedBreakpoints } = useBreakpoint();\n\n const Component = as || \"div\";\n const gridItemColSpan = resolveResponsiveValue(colSpan, matchedBreakpoints);\n\n const gridItemRowSpan = resolveResponsiveValue(rowSpan, matchedBreakpoints);\n
|
|
1
|
+
{"version":3,"file":"GridItem.js","sources":["../src/grid-item/GridItem.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { type ElementType, type ReactElement, forwardRef } from \"react\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useBreakpoint } from \"../breakpoints\";\nimport { parseSpacing } from \"../flex-layout/parseSpacing\";\nimport {\n type PolymorphicComponentPropWithRef,\n type PolymorphicRef,\n type ResponsiveProp,\n makePrefixer,\n resolveResponsiveValue,\n} from \"../utils\";\nimport gridItemCss from \"./GridItem.css\";\n\nexport const GRID_ALIGNMENT_BASE = [\n \"start\",\n \"end\",\n \"center\",\n \"stretch\",\n] as const;\n\ntype GridAlignment = (typeof GRID_ALIGNMENT_BASE)[number];\n\ntype GridProperty = number | \"auto\";\nexport type GridItemProps<T extends ElementType> =\n PolymorphicComponentPropWithRef<\n T,\n {\n /**\n * The item will span across the provided number of grid columns. Defaults to \"auto\"\n */\n colSpan?: ResponsiveProp<GridProperty>;\n /**\n * The item will span across the provided number of grid rows. Defaults to \"auto\"\n */\n rowSpan?: ResponsiveProp<GridProperty>;\n /**\n * Aligns a grid item inside a cell along the inline (row) axis. Defaults to \"stretch\"\n */\n horizontalAlignment?: GridAlignment;\n /**\n * Aligns a grid item inside a cell along the block (column) axis. Defaults to \"stretch\"\n */\n verticalAlignment?: GridAlignment;\n /**\n * Defines the margin around the component. It can be specified as a number (which acts as a multiplier) or a string representing the margin value. Default is `0`.\n */\n margin?: ResponsiveProp<number | string>;\n /**\n * Defines the padding within the component. It can be specified as a number (which acts as a multiplier) or a string representing the padding value. Default is `0`.\n */\n padding?: ResponsiveProp<number | string>;\n }\n >;\n\nconst withBaseName = makePrefixer(\"saltGridItem\");\n\nconst colStart = \"auto\";\nconst colEnd = \"auto\";\nconst rowStart = \"auto\";\nconst rowEnd = \"auto\";\n\ntype GridItemComponent = <T extends ElementType = \"div\">(\n props: GridItemProps<T>,\n) => ReactElement | null;\n\nexport const GridItem: GridItemComponent = forwardRef(\n <T extends ElementType = \"div\">(\n {\n as,\n children,\n className,\n margin,\n padding,\n colSpan = \"auto\",\n rowSpan = \"auto\",\n horizontalAlignment = \"stretch\",\n verticalAlignment = \"stretch\",\n style,\n ...rest\n }: GridItemProps<T>,\n ref?: PolymorphicRef<T>,\n ) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-grid-item\",\n css: gridItemCss,\n window: targetWindow,\n });\n\n const { matchedBreakpoints } = useBreakpoint();\n\n const Component = as || \"div\";\n const gridItemColSpan = resolveResponsiveValue(colSpan, matchedBreakpoints);\n\n const gridItemRowSpan = resolveResponsiveValue(rowSpan, matchedBreakpoints);\n const gridItemMargin = resolveResponsiveValue(margin, matchedBreakpoints);\n const gridItemPadding = resolveResponsiveValue(padding, matchedBreakpoints);\n const gridColumnStart = gridItemColSpan\n ? `span ${gridItemColSpan}`\n : colStart;\n\n const gridColumnEnd = gridItemColSpan ? `span ${gridItemColSpan}` : colEnd;\n\n const gridRowStart = gridItemRowSpan ? `span ${gridItemRowSpan}` : rowStart;\n\n const gridRowEnd = gridItemRowSpan ? `span ${gridItemRowSpan}` : rowEnd;\n\n const gridStyles = {\n \"--gridItem-margin\": parseSpacing(gridItemMargin),\n \"--gridItem-padding\": parseSpacing(gridItemPadding),\n ...style,\n \"--gridItem-justifySelf\": horizontalAlignment,\n \"--gridItem-alignSelf\": verticalAlignment,\n \"--gridItem-gridRowStart\": gridRowStart,\n \"--gridItem-gridColumnStart\": gridColumnStart,\n \"--gridItem-gridRowEnd\": gridRowEnd,\n \"--gridItem-gridColumnEnd\": gridColumnEnd,\n };\n\n return (\n <Component\n className={clsx(withBaseName(), className)}\n style={gridStyles}\n ref={ref}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","useWindow","useComponentCssInjection","gridItemCss","useBreakpoint","resolveResponsiveValue","parseSpacing","jsx","clsx"],"mappings":";;;;;;;;;;;;;;;AAgBO,MAAM,mBAAsB,GAAA;AAAA,EACjC,OAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF;AAoCA,MAAM,YAAA,GAAeA,0BAAa,cAAc,CAAA;AAEhD,MAAM,QAAW,GAAA,MAAA;AACjB,MAAM,MAAS,GAAA,MAAA;AACf,MAAM,QAAW,GAAA,MAAA;AACjB,MAAM,MAAS,GAAA,MAAA;AAMR,MAAM,QAA8B,GAAAC,gBAAA;AAAA,EACzC,CACE;AAAA,IACE,EAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAU,GAAA,MAAA;AAAA,IACV,OAAU,GAAA,MAAA;AAAA,IACV,mBAAsB,GAAA,SAAA;AAAA,IACtB,iBAAoB,GAAA,SAAA;AAAA,IACpB,KAAA;AAAA,IACA,GAAG;AAAA,KAEL,GACG,KAAA;AACH,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,gBAAA;AAAA,MACR,GAAK,EAAAC,UAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAM,MAAA,EAAE,kBAAmB,EAAA,GAAIC,gCAAc,EAAA;AAE7C,IAAA,MAAM,YAAY,EAAM,IAAA,KAAA;AACxB,IAAM,MAAA,eAAA,GAAkBC,wCAAuB,CAAA,OAAA,EAAS,kBAAkB,CAAA;AAE1E,IAAM,MAAA,eAAA,GAAkBA,wCAAuB,CAAA,OAAA,EAAS,kBAAkB,CAAA;AAC1E,IAAM,MAAA,cAAA,GAAiBA,wCAAuB,CAAA,MAAA,EAAQ,kBAAkB,CAAA;AACxE,IAAM,MAAA,eAAA,GAAkBA,wCAAuB,CAAA,OAAA,EAAS,kBAAkB,CAAA;AAC1E,IAAA,MAAM,eAAkB,GAAA,eAAA,GACpB,CAAQ,KAAA,EAAA,eAAe,CACvB,CAAA,GAAA,QAAA;AAEJ,IAAA,MAAM,aAAgB,GAAA,eAAA,GAAkB,CAAQ,KAAA,EAAA,eAAe,CAAK,CAAA,GAAA,MAAA;AAEpE,IAAA,MAAM,YAAe,GAAA,eAAA,GAAkB,CAAQ,KAAA,EAAA,eAAe,CAAK,CAAA,GAAA,QAAA;AAEnE,IAAA,MAAM,UAAa,GAAA,eAAA,GAAkB,CAAQ,KAAA,EAAA,eAAe,CAAK,CAAA,GAAA,MAAA;AAEjE,IAAA,MAAM,UAAa,GAAA;AAAA,MACjB,mBAAA,EAAqBC,0BAAa,cAAc,CAAA;AAAA,MAChD,oBAAA,EAAsBA,0BAAa,eAAe,CAAA;AAAA,MAClD,GAAG,KAAA;AAAA,MACH,wBAA0B,EAAA,mBAAA;AAAA,MAC1B,sBAAwB,EAAA,iBAAA;AAAA,MACxB,yBAA2B,EAAA,YAAA;AAAA,MAC3B,4BAA8B,EAAA,eAAA;AAAA,MAC9B,uBAAyB,EAAA,UAAA;AAAA,MACzB,0BAA4B,EAAA;AAAA,KAC9B;AAEA,IACE,uBAAAC,cAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,QACzC,KAAO,EAAA,UAAA;AAAA,QACP,GAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA;AAGN;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var css_248z = "/* Style applied to the root element */\n.saltGridLayout {\n display: grid;\n column-gap: var(--gridLayout-columnGap);\n row-gap: var(--gridLayout-rowGap);\n grid-template-columns: var(--gridLayout-columns);\n grid-template-rows: var(--gridLayout-rows);\n grid-auto-columns: auto;\n grid-auto-rows: auto;\n}\n\n.saltGridLayout-area {\n grid-template: var(--gridLayout-gridTemplate);\n grid-template-columns: min-content 1fr min-content;\n grid-template-rows: min-content 1fr min-content;\n}\n";
|
|
3
|
+
var css_248z = "/* Style applied to the root element */\n.saltGridLayout {\n display: grid;\n column-gap: var(--gridLayout-columnGap);\n row-gap: var(--gridLayout-rowGap);\n grid-template-columns: var(--gridLayout-columns);\n grid-template-rows: var(--gridLayout-rows);\n margin: var(--gridLayout-margin);\n padding: var(--gridLayout-padding);\n grid-auto-columns: auto;\n grid-auto-rows: auto;\n}\n\n.saltGridLayout-area {\n grid-template: var(--gridLayout-gridTemplate);\n grid-template-columns: min-content 1fr min-content;\n grid-template-rows: min-content 1fr min-content;\n}\n";
|
|
4
4
|
|
|
5
5
|
module.exports = css_248z;
|
|
6
6
|
//# sourceMappingURL=GridLayout.css.js.map
|
|
@@ -10,6 +10,7 @@ var useResponsiveProp = require('../utils/useResponsiveProp.js');
|
|
|
10
10
|
var styles = require('@salt-ds/styles');
|
|
11
11
|
var window = require('@salt-ds/window');
|
|
12
12
|
var BreakpointProvider = require('../breakpoints/BreakpointProvider.js');
|
|
13
|
+
var parseSpacing = require('../flex-layout/parseSpacing.js');
|
|
13
14
|
var GridLayout$1 = require('./GridLayout.css.js');
|
|
14
15
|
|
|
15
16
|
const withBaseName = makePrefixer.makePrefixer("saltGridLayout");
|
|
@@ -19,12 +20,6 @@ function parseGridValue(value) {
|
|
|
19
20
|
}
|
|
20
21
|
return `repeat(${value}, 1fr)`;
|
|
21
22
|
}
|
|
22
|
-
function parseSpacing(value) {
|
|
23
|
-
if (value === void 0 || typeof value === "string") {
|
|
24
|
-
return value;
|
|
25
|
-
}
|
|
26
|
-
return `calc(var(--salt-spacing-100) * ${value})`;
|
|
27
|
-
}
|
|
28
23
|
const GridLayout = React.forwardRef(
|
|
29
24
|
({
|
|
30
25
|
as,
|
|
@@ -33,6 +28,8 @@ const GridLayout = React.forwardRef(
|
|
|
33
28
|
columns = 12,
|
|
34
29
|
rows = 1,
|
|
35
30
|
gap = 3,
|
|
31
|
+
margin,
|
|
32
|
+
padding,
|
|
36
33
|
columnGap,
|
|
37
34
|
rowGap,
|
|
38
35
|
style,
|
|
@@ -51,12 +48,16 @@ const GridLayout = React.forwardRef(
|
|
|
51
48
|
const gridGap = useResponsiveProp.resolveResponsiveValue(gap, matchedBreakpoints);
|
|
52
49
|
const gridColumnGap = useResponsiveProp.resolveResponsiveValue(columnGap, matchedBreakpoints);
|
|
53
50
|
const gridRowGap = useResponsiveProp.resolveResponsiveValue(rowGap, matchedBreakpoints);
|
|
51
|
+
const gridMargin = useResponsiveProp.resolveResponsiveValue(margin, matchedBreakpoints);
|
|
52
|
+
const gridPadding = useResponsiveProp.resolveResponsiveValue(padding, matchedBreakpoints);
|
|
54
53
|
const gridLayoutStyles = {
|
|
54
|
+
"--gridLayout-margin": parseSpacing.parseSpacing(gridMargin),
|
|
55
|
+
"--gridLayout-padding": parseSpacing.parseSpacing(gridPadding),
|
|
55
56
|
...style,
|
|
56
57
|
"--gridLayout-columns": parseGridValue(gridColumns),
|
|
57
58
|
"--gridLayout-rows": parseGridValue(gridRows),
|
|
58
|
-
"--gridLayout-columnGap": parseSpacing(gridColumnGap ?? gridGap),
|
|
59
|
-
"--gridLayout-rowGap": parseSpacing(gridRowGap ?? gridGap)
|
|
59
|
+
"--gridLayout-columnGap": parseSpacing.parseSpacing(gridColumnGap ?? gridGap),
|
|
60
|
+
"--gridLayout-rowGap": parseSpacing.parseSpacing(gridRowGap ?? gridGap)
|
|
60
61
|
};
|
|
61
62
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
62
63
|
Component,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridLayout.js","sources":["../src/grid-layout/GridLayout.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { type ElementType, type ReactElement, forwardRef } from \"react\";\n\nimport {\n type PolymorphicComponentPropWithRef,\n type PolymorphicRef,\n type ResponsiveProp,\n makePrefixer,\n resolveResponsiveValue,\n} from \"../utils\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useBreakpoint } from \"../breakpoints\";\nimport gridLayoutCss from \"./GridLayout.css\";\n\nexport type GridLayoutProps<T extends ElementType> =\n PolymorphicComponentPropWithRef<\n T,\n {\n /**\n * Number of columns to be displayed. Defaults to 12\n */\n columns?: ResponsiveProp<number | string>;\n /**\n * Number of rows to be displayed. Defaults to 1\n */\n rows?: ResponsiveProp<number | string>;\n /**\n * Defines the size of the gutter between the columns and the rows by setting a density multiplier. Defaults to 3\n */\n gap?: ResponsiveProp<number | string>;\n /**\n * Defines the size of the gutter between the columns by setting a density multiplier. Defaults to 1\n */\n columnGap?: ResponsiveProp<number | string>;\n /**\n * Defines the size of the gutter between the rows by setting a density multiplier. Defaults to 1\n */\n rowGap?: ResponsiveProp<number | string>;\n }\n >;\n\ntype GridLayoutComponent = <T extends ElementType = \"div\">(\n props: GridLayoutProps<T>,\n) => ReactElement | null;\n\nconst withBaseName = makePrefixer(\"saltGridLayout\");\n\nfunction parseGridValue(value: number | string | undefined) {\n if (value === undefined || typeof value === \"string\") {\n return value;\n }\n\n return `repeat(${value}, 1fr)`;\n}\n\
|
|
1
|
+
{"version":3,"file":"GridLayout.js","sources":["../src/grid-layout/GridLayout.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { type ElementType, type ReactElement, forwardRef } from \"react\";\n\nimport {\n type PolymorphicComponentPropWithRef,\n type PolymorphicRef,\n type ResponsiveProp,\n makePrefixer,\n resolveResponsiveValue,\n} from \"../utils\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useBreakpoint } from \"../breakpoints\";\nimport { parseSpacing } from \"../flex-layout/parseSpacing\";\nimport gridLayoutCss from \"./GridLayout.css\";\n\nexport type GridLayoutProps<T extends ElementType> =\n PolymorphicComponentPropWithRef<\n T,\n {\n /**\n * Number of columns to be displayed. Defaults to 12\n */\n columns?: ResponsiveProp<number | string>;\n /**\n * Number of rows to be displayed. Defaults to 1\n */\n rows?: ResponsiveProp<number | string>;\n /**\n * Defines the size of the gutter between the columns and the rows by setting a density multiplier. Defaults to 3\n */\n gap?: ResponsiveProp<number | string>;\n /**\n * Defines the size of the gutter between the columns by setting a density multiplier. Defaults to 1\n */\n columnGap?: ResponsiveProp<number | string>;\n /**\n * Defines the size of the gutter between the rows by setting a density multiplier. Defaults to 1\n */\n rowGap?: ResponsiveProp<number | string>;\n /**\n * Defines the margin around the component. It can be specified as a number (which acts as a multiplier) or a string representing the margin value. Default is `0`.\n */\n margin?: ResponsiveProp<number | string>;\n /**\n * Defines the padding within the component. It can be specified as a number (which acts as a multiplier) or a string representing the padding value. Default is `0`.\n */\n padding?: ResponsiveProp<number | string>;\n }\n >;\n\ntype GridLayoutComponent = <T extends ElementType = \"div\">(\n props: GridLayoutProps<T>,\n) => ReactElement | null;\n\nconst withBaseName = makePrefixer(\"saltGridLayout\");\n\nfunction parseGridValue(value: number | string | undefined) {\n if (value === undefined || typeof value === \"string\") {\n return value;\n }\n\n return `repeat(${value}, 1fr)`;\n}\n\nexport const GridLayout: GridLayoutComponent = forwardRef(\n <T extends ElementType = \"div\">(\n {\n as,\n children,\n className,\n columns = 12,\n rows = 1,\n gap = 3,\n margin,\n padding,\n columnGap,\n rowGap,\n style,\n ...rest\n }: GridLayoutProps<T>,\n ref?: PolymorphicRef<T>,\n ) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-grid-layout\",\n css: gridLayoutCss,\n window: targetWindow,\n });\n const Component = as || \"div\";\n\n const { matchedBreakpoints } = useBreakpoint();\n\n const gridColumns = resolveResponsiveValue(columns, matchedBreakpoints);\n\n const gridRows = resolveResponsiveValue(rows, matchedBreakpoints);\n\n const gridGap = resolveResponsiveValue(gap, matchedBreakpoints);\n\n const gridColumnGap = resolveResponsiveValue(columnGap, matchedBreakpoints);\n\n const gridRowGap = resolveResponsiveValue(rowGap, matchedBreakpoints);\n const gridMargin = resolveResponsiveValue(margin, matchedBreakpoints);\n const gridPadding = resolveResponsiveValue(padding, matchedBreakpoints);\n const gridLayoutStyles = {\n \"--gridLayout-margin\": parseSpacing(gridMargin),\n \"--gridLayout-padding\": parseSpacing(gridPadding),\n ...style,\n \"--gridLayout-columns\": parseGridValue(gridColumns),\n \"--gridLayout-rows\": parseGridValue(gridRows),\n \"--gridLayout-columnGap\": parseSpacing(gridColumnGap ?? gridGap),\n \"--gridLayout-rowGap\": parseSpacing(gridRowGap ?? gridGap),\n };\n\n return (\n <Component\n className={clsx(withBaseName(), className)}\n style={gridLayoutStyles}\n ref={ref}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","useWindow","useComponentCssInjection","gridLayoutCss","useBreakpoint","resolveResponsiveValue","parseSpacing","jsx","clsx"],"mappings":";;;;;;;;;;;;;;;AAwDA,MAAM,YAAA,GAAeA,0BAAa,gBAAgB,CAAA;AAElD,SAAS,eAAe,KAAoC,EAAA;AAC1D,EAAA,IAAI,KAAU,KAAA,KAAA,CAAA,IAAa,OAAO,KAAA,KAAU,QAAU,EAAA;AACpD,IAAO,OAAA,KAAA;AAAA;AAGT,EAAA,OAAO,UAAU,KAAK,CAAA,MAAA,CAAA;AACxB;AAEO,MAAM,UAAkC,GAAAC,gBAAA;AAAA,EAC7C,CACE;AAAA,IACE,EAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAU,GAAA,EAAA;AAAA,IACV,IAAO,GAAA,CAAA;AAAA,IACP,GAAM,GAAA,CAAA;AAAA,IACN,MAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAG;AAAA,KAEL,GACG,KAAA;AACH,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,kBAAA;AAAA,MACR,GAAK,EAAAC,YAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AACD,IAAA,MAAM,YAAY,EAAM,IAAA,KAAA;AAExB,IAAM,MAAA,EAAE,kBAAmB,EAAA,GAAIC,gCAAc,EAAA;AAE7C,IAAM,MAAA,WAAA,GAAcC,wCAAuB,CAAA,OAAA,EAAS,kBAAkB,CAAA;AAEtE,IAAM,MAAA,QAAA,GAAWA,wCAAuB,CAAA,IAAA,EAAM,kBAAkB,CAAA;AAEhE,IAAM,MAAA,OAAA,GAAUA,wCAAuB,CAAA,GAAA,EAAK,kBAAkB,CAAA;AAE9D,IAAM,MAAA,aAAA,GAAgBA,wCAAuB,CAAA,SAAA,EAAW,kBAAkB,CAAA;AAE1E,IAAM,MAAA,UAAA,GAAaA,wCAAuB,CAAA,MAAA,EAAQ,kBAAkB,CAAA;AACpE,IAAM,MAAA,UAAA,GAAaA,wCAAuB,CAAA,MAAA,EAAQ,kBAAkB,CAAA;AACpE,IAAM,MAAA,WAAA,GAAcA,wCAAuB,CAAA,OAAA,EAAS,kBAAkB,CAAA;AACtE,IAAA,MAAM,gBAAmB,GAAA;AAAA,MACvB,qBAAA,EAAuBC,0BAAa,UAAU,CAAA;AAAA,MAC9C,sBAAA,EAAwBA,0BAAa,WAAW,CAAA;AAAA,MAChD,GAAG,KAAA;AAAA,MACH,sBAAA,EAAwB,eAAe,WAAW,CAAA;AAAA,MAClD,mBAAA,EAAqB,eAAe,QAAQ,CAAA;AAAA,MAC5C,wBAAA,EAA0BA,yBAAa,CAAA,aAAA,IAAiB,OAAO,CAAA;AAAA,MAC/D,qBAAA,EAAuBA,yBAAa,CAAA,UAAA,IAAc,OAAO;AAAA,KAC3D;AAEA,IACE,uBAAAC,cAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,QACzC,KAAO,EAAA,gBAAA;AAAA,QACP,GAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA;AAGN;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var css_248z = ".saltLink {\n --link-color-hover:
|
|
3
|
+
var css_248z = ".saltLink {\n --link-color: \"inherit\";\n --link-color-hover: \"inherit\";\n --link-color-active: \"inherit\";\n --link-color-visited: var(--salt-content-foreground-visited);\n --link-color-focus: \"inherit\";\n --link-focus-outlineColor: currentColor;\n\n --link-textDecoration: var(--salt-navigable-textDecoration);\n --link-textDecoration-hover: var(--salt-navigable-textDecoration-hover);\n\n --link-fontFamily: var(--salt-text-fontFamily);\n}\n\n/* Main css class */\n.saltLink.saltText {\n color: var(--link-color);\n letter-spacing: var(--salt-text-letterSpacing);\n text-decoration: var(--link-textDecoration);\n font-family: var(--link-fontFamily);\n}\n\n/* Primary variant */\n.saltLink-primary {\n --link-color: var(--salt-content-primary-foreground);\n --link-color-hover: var(--salt-content-primary-foreground);\n --link-color-active: var(--salt-content-primary-foreground);\n --link-color-focus: var(--salt-content-primary-foreground);\n --link-focus-outlineColor: var(--salt-focused-outlineColor);\n --link-color-visited: var(--salt-content-foreground-visited);\n}\n\n/* Secondary variant */\n.saltLink-secondary {\n --link-color: var(--salt-content-secondary-foreground);\n --link-color-hover: var(--salt-content-secondary-foreground);\n --link-color-active: var(--salt-content-secondary-foreground);\n --link-color-focus: var(--salt-content-secondary-foreground);\n --link-focus-outlineColor: var(--salt-focused-outlineColor);\n --link-color-visited: var(--salt-content-foreground-visited);\n}\n\n.saltLink-accent {\n --link-color: var(--salt-content-accent-foreground);\n --link-color-hover: var(--salt-content-accent-foreground);\n --link-color-active: var(--salt-content-accent-foreground);\n --link-color-focus: var(--salt-content-accent-foreground);\n --link-focus-outlineColor: var(--salt-focused-outlineColor);\n --link-color-visited: var(--salt-content-foreground-visited);\n}\n\n/* External link's icon */\n.saltLink .saltLink-icon {\n margin-left: var(--salt-spacing-75);\n margin-bottom: -2px;\n}\n\n/* Set color for visited link */\n.saltLink:visited {\n color: var(--saltLink-color-visited, var(--link-color-visited));\n}\n\n/* Set color for hovered link */\n.saltLink:hover {\n color: var(--saltLink-color-hover, var(--link-color-hover));\n text-decoration: var(--link-textDecoration-hover);\n}\n\n/* Set color for active link */\n.saltLink:active {\n color: var(--saltLink-color-active, var(--link-color-active));\n}\n\n/* Set color for focused link */\n.saltLink:focus {\n color: var(--saltLink-color-focus, var(--link-color-focus));\n outline: var(--salt-focused-outline);\n outline-color: var(--link-focus-outlineColor);\n text-decoration: var(--link-textDecoration-hover);\n}\n\n/* Class for ADA content */\n.saltLink-externalLinkADA {\n display: block;\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n top: 0px;\n left: 0px;\n opacity: 0;\n}\n";
|
|
4
4
|
|
|
5
5
|
module.exports = css_248z;
|
|
6
6
|
//# sourceMappingURL=Link.css.js.map
|
package/dist-cjs/link/Link.js
CHANGED
|
@@ -45,11 +45,17 @@ const Link = React.forwardRef(function Link2({
|
|
|
45
45
|
Text.Text,
|
|
46
46
|
{
|
|
47
47
|
as: LinkAction.LinkAction,
|
|
48
|
-
className: clsx.clsx(
|
|
48
|
+
className: clsx.clsx(
|
|
49
|
+
withBaseName(),
|
|
50
|
+
{
|
|
51
|
+
[withBaseName(color)]: color !== "inherit"
|
|
52
|
+
},
|
|
53
|
+
className
|
|
54
|
+
),
|
|
49
55
|
href,
|
|
50
56
|
ref,
|
|
51
57
|
target,
|
|
52
|
-
color,
|
|
58
|
+
color: "inherit",
|
|
53
59
|
...rest,
|
|
54
60
|
children: [
|
|
55
61
|
children,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Link.js","sources":["../src/link/Link.tsx"],"sourcesContent":["import type { IconProps } from \"@salt-ds/icons\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type ComponentType,\n type ReactElement,\n forwardRef,\n} from \"react\";\nimport { useIcon } from \"../semantic-icon-provider\";\nimport { Text, type TextProps } from \"../text\";\nimport { type RenderPropsType, makePrefixer } from \"../utils\";\nimport linkCss from \"./Link.css\";\nimport { LinkAction } from \"./LinkAction\";\n\nconst withBaseName = makePrefixer(\"saltLink\");\n\n/**\n * Links are a fundamental navigation element. When clicked, they take the user to an entirely different page.\n *\n * @example\n * <LinkExample to=\"#link\">Action</LinkExample>\n */\nexport interface LinkProps\n extends Omit<ComponentPropsWithoutRef<\"a\">, \"color\">,\n Pick<TextProps<\"a\">, \"maxRows\" | \"styleAs\" | \"
|
|
1
|
+
{"version":3,"file":"Link.js","sources":["../src/link/Link.tsx"],"sourcesContent":["import type { IconProps } from \"@salt-ds/icons\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type ComponentType,\n type ReactElement,\n forwardRef,\n} from \"react\";\nimport { useIcon } from \"../semantic-icon-provider\";\nimport { Text, type TextProps } from \"../text\";\nimport { type RenderPropsType, makePrefixer } from \"../utils\";\nimport linkCss from \"./Link.css\";\nimport { LinkAction } from \"./LinkAction\";\n\nconst withBaseName = makePrefixer(\"saltLink\");\n\n/**\n * Links are a fundamental navigation element. When clicked, they take the user to an entirely different page.\n *\n * @example\n * <LinkExample to=\"#link\">Action</LinkExample>\n */\nexport interface LinkProps\n extends Omit<ComponentPropsWithoutRef<\"a\">, \"color\">,\n Pick<TextProps<\"a\">, \"maxRows\" | \"styleAs\" | \"variant\"> {\n IconComponent?: ComponentType<IconProps> | null;\n /**\n * Render prop to enable customisation of anchor element.\n */\n render?: RenderPropsType[\"render\"];\n /*\n * The color of the text. Defaults to \"primary\".\n */\n color?: \"inherit\" | \"primary\" | \"secondary\" | \"accent\";\n}\n\nexport const Link = forwardRef<HTMLAnchorElement, LinkProps>(function Link(\n {\n IconComponent,\n href,\n className,\n children,\n color: colorProp,\n variant,\n target = \"_self\",\n ...rest\n },\n ref,\n): ReactElement<LinkProps> {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-link\",\n css: linkCss,\n window: targetWindow,\n });\n const { ExternalIcon } = useIcon();\n\n const color = variant ?? colorProp ?? \"primary\";\n const LinkIconComponent =\n IconComponent === undefined ? ExternalIcon : IconComponent;\n\n return (\n <Text\n as={LinkAction}\n className={clsx(\n withBaseName(),\n {\n [withBaseName(color)]: color !== \"inherit\",\n },\n className,\n )}\n href={href}\n ref={ref}\n target={target}\n color=\"inherit\"\n {...rest}\n >\n {children}\n {target === \"_blank\" && (\n <>\n {LinkIconComponent && (\n <LinkIconComponent className={withBaseName(\"icon\")} aria-hidden />\n )}\n <span className={withBaseName(\"externalLinkADA\")}>External</span>\n </>\n )}\n </Text>\n );\n});\n"],"names":["makePrefixer","forwardRef","Link","useWindow","useComponentCssInjection","linkCss","useIcon","jsxs","Text","LinkAction","clsx","Fragment"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAM,YAAA,GAAeA,0BAAa,UAAU,CAAA;AAsB/B,MAAA,IAAA,GAAOC,gBAAyC,CAAA,SAASC,KACpE,CAAA;AAAA,EACE,aAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAO,EAAA,SAAA;AAAA,EACP,OAAA;AAAA,EACA,MAAS,GAAA,OAAA;AAAA,EACT,GAAG;AACL,CAAA,EACA,GACyB,EAAA;AACzB,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,WAAA;AAAA,IACR,GAAK,EAAAC,MAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AACD,EAAM,MAAA,EAAE,YAAa,EAAA,GAAIC,4BAAQ,EAAA;AAEjC,EAAM,MAAA,KAAA,GAAQ,WAAW,SAAa,IAAA,SAAA;AACtC,EAAM,MAAA,iBAAA,GACJ,aAAkB,KAAA,KAAA,CAAA,GAAY,YAAe,GAAA,aAAA;AAE/C,EACE,uBAAAC,eAAA;AAAA,IAACC,SAAA;AAAA,IAAA;AAAA,MACC,EAAI,EAAAC,qBAAA;AAAA,MACJ,SAAW,EAAAC,SAAA;AAAA,QACT,YAAa,EAAA;AAAA,QACb;AAAA,UACE,CAAC,YAAA,CAAa,KAAK,CAAC,GAAG,KAAU,KAAA;AAAA,SACnC;AAAA,QACA;AAAA,OACF;AAAA,MACA,IAAA;AAAA,MACA,GAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAM,EAAA,SAAA;AAAA,MACL,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QACA,MAAA,KAAW,4BAEPH,eAAA,CAAAI,mBAAA,EAAA,EAAA,QAAA,EAAA;AAAA,UAAA,iBAAA,mCACE,iBAAkB,EAAA,EAAA,SAAA,EAAW,aAAa,MAAM,CAAA,EAAG,eAAW,IAAC,EAAA,CAAA;AAAA,yCAEjE,MAAK,EAAA,EAAA,SAAA,EAAW,YAAa,CAAA,iBAAiB,GAAG,QAAQ,EAAA,UAAA,EAAA;AAAA,SAC5D,EAAA;AAAA;AAAA;AAAA,GAEJ;AAEJ,CAAC;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var css_248z = ".saltMenuItem {\n color: var(--salt-content-primary-foreground);\n background: var(--salt-selectable-background);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n font-family: var(--salt-text-fontFamily);\n line-height: var(--salt-text-lineHeight);\n letter-spacing: var(--salt-text-letterSpacing);\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n padding: calc(var(--salt-spacing-100) + var(--salt-spacing-25)) var(--salt-spacing-100);\n display: flex;\n gap: var(--salt-spacing-100);\n position: relative;\n cursor: var(--salt-selectable-cursor-hover);\n box-sizing: border-box;\n flex-shrink: 0;\n}\n\n.saltMenuItem:focus-visible {\n outline: var(--salt-focused-outline);\n outline-offset: calc(var(--salt-size-border) * -2);\n}\n\n.saltMenuItem:hover {\n outline: none;\n}\n\n.saltMenuItem:hover,\n.saltMenuItem:focus-visible {\n background: var(--salt-selectable-background-hover);\n}\n\n.saltMenuItem:active {\n background: var(--salt-selectable-background-selected);\n box-shadow: 0 calc(var(--salt-size-border) * -1) 0 0 var(--salt-selectable-borderColor-selected), 0 var(--salt-size-border) 0 0 var(--salt-selectable-borderColor-selected);\n}\n\n.saltMenuItem[aria-disabled=\"true\"],\n.saltMenuItem[aria-disabled=\"true\"]:active {\n background: var(--salt-selectable-background-disabled);\n color: var(--salt-content-primary-foreground-disabled);\n cursor: var(--salt-selectable-cursor-disabled);\n box-shadow: none;\n}\n\n.saltMenuItem-blurActive {\n z-index: var(--salt-zIndex-default);\n background: var(--salt-selectable-background-selected);\n box-shadow: 0 calc(var(--salt-size-border) * -1) 0 0 var(--salt-selectable-borderColor-selected), 0 var(--salt-size-border) 0 0 var(--salt-selectable-borderColor-selected);\n box-shadow: 0 calc(var(--salt-size-border) * -1) 0 0 var(--salt-selectable-borderColor-selected), 0 var(--salt-size-border) 0 0 var(--salt-selectable-borderColor-selected);\n}\n\n.saltMenuItem-expandIcon.saltIcon {\n margin-left: auto;\n}\n";
|
|
3
|
+
var css_248z = ".saltMenuItem {\n color: var(--salt-content-primary-foreground);\n background: var(--salt-selectable-background);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n font-family: var(--salt-text-fontFamily);\n line-height: var(--salt-text-lineHeight);\n letter-spacing: var(--salt-text-letterSpacing);\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n padding: calc(var(--salt-spacing-100) + var(--salt-spacing-25)) var(--salt-spacing-100);\n display: flex;\n gap: var(--salt-spacing-100);\n position: relative;\n cursor: var(--salt-selectable-cursor-hover);\n box-sizing: border-box;\n flex-shrink: 0;\n}\n\n.saltMenuItem:focus-visible {\n outline: var(--salt-focused-outline);\n outline-offset: calc(var(--salt-size-border) * -2);\n}\n\n.saltMenuItem:hover {\n outline: none;\n}\n\n.saltMenuItem:hover,\n.saltMenuItem:focus-visible {\n background: var(--salt-selectable-background-hover);\n}\n\n.saltMenuItem:active {\n background: var(--salt-selectable-background-selected);\n box-shadow: 0 calc(var(--salt-size-border) * -1) 0 0 var(--salt-selectable-borderColor-selected), 0 var(--salt-size-border) 0 0 var(--salt-selectable-borderColor-selected);\n}\n\n.saltMenuItem[aria-disabled=\"true\"],\n.saltMenuItem[aria-disabled=\"true\"]:active {\n background: var(--salt-selectable-background-disabled);\n color: var(--salt-content-primary-foreground-disabled);\n cursor: var(--salt-selectable-cursor-disabled);\n box-shadow: none;\n}\n\n.saltMenuItem-blurActive {\n z-index: var(--salt-zIndex-default);\n background: var(--salt-selectable-background-selected);\n box-shadow: 0 calc(var(--salt-size-border) * -1) 0 0 var(--salt-selectable-borderColor-selected), 0 var(--salt-size-border) 0 0 var(--salt-selectable-borderColor-selected);\n box-shadow: 0 calc(var(--salt-size-border) * -1) 0 0 var(--salt-selectable-borderColor-selected), 0 var(--salt-size-border) 0 0 var(--salt-selectable-borderColor-selected);\n}\n\n/* TODO: Find a better way of doing this */\n.saltMenuItem .saltIcon:not(.saltCheckboxIcon-icon) {\n min-height: var(--salt-text-lineHeight);\n}\n\n.saltMenuItem-expandIcon.saltIcon {\n margin-left: auto;\n}\n";
|
|
4
4
|
|
|
5
5
|
module.exports = css_248z;
|
|
6
6
|
//# sourceMappingURL=MenuItem.css.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var css_248z = ".saltOption {\n color: var(--salt-content-primary-foreground);\n background: var(--salt-selectable-background);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n font-family: var(--salt-text-fontFamily);\n line-height: var(--salt-text-lineHeight);\n letter-spacing: var(--salt-text-letterSpacing);\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n padding: calc(var(--salt-spacing-100) + var(--salt-spacing-25)) var(--salt-spacing-100);\n display: flex;\n gap: var(--salt-spacing-100);\n position: relative;\n cursor: var(--salt-selectable-cursor-hover);\n box-sizing: border-box;\n flex-shrink: 0;\n}\n\n.saltOption-active {\n background: var(--salt-selectable-background-hover);\n}\n\n.saltOption-focusVisible {\n outline: var(--salt-focused-outline);\n outline-offset: calc(var(--salt-size-border) * -2);\n}\n\n.saltOption:hover {\n background: var(--salt-selectable-background-hover);\n}\n\n.saltOption[aria-selected=\"true\"] {\n z-index: var(--salt-zIndex-default);\n background: var(--salt-selectable-background-selected);\n box-shadow: calc(var(--salt-size-border) * -2) 0 0 0 var(--salt-selectable-background-hover), calc(var(--salt-size-border) * -1) 0 0 var(--salt-size-border)\n var(--salt-selectable-borderColor-selected), 0 calc(var(--salt-size-border) * -1) 0 var(--salt-selectable-borderColor-selected);\n}\n\n.saltOption[aria-disabled=\"true\"] {\n color: var(--salt-content-primary-foreground-disabled);\n cursor: var(--salt-selectable-cursor-disabled);\n}\n";
|
|
3
|
+
var css_248z = ".saltOption {\n color: var(--salt-content-primary-foreground);\n background: var(--salt-selectable-background);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n font-family: var(--salt-text-fontFamily);\n line-height: var(--salt-text-lineHeight);\n letter-spacing: var(--salt-text-letterSpacing);\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n padding: calc(var(--salt-spacing-100) + var(--salt-spacing-25)) var(--salt-spacing-100);\n display: flex;\n gap: var(--salt-spacing-100);\n position: relative;\n cursor: var(--salt-selectable-cursor-hover);\n box-sizing: border-box;\n flex-shrink: 0;\n}\n\n.saltOption-active {\n background: var(--salt-selectable-background-hover);\n}\n\n.saltOption-focusVisible {\n outline: var(--salt-focused-outline);\n outline-offset: calc(var(--salt-size-border) * -2);\n}\n\n.saltOption:hover {\n background: var(--salt-selectable-background-hover);\n}\n\n.saltOption[aria-selected=\"true\"] {\n z-index: var(--salt-zIndex-default);\n background: var(--salt-selectable-background-selected);\n box-shadow: calc(var(--salt-size-border) * -2) 0 0 0 var(--salt-selectable-background-hover), calc(var(--salt-size-border) * -1) 0 0 var(--salt-size-border)\n var(--salt-selectable-borderColor-selected), 0 calc(var(--salt-size-border) * -1) 0 var(--salt-selectable-borderColor-selected);\n}\n\n.saltOption[aria-disabled=\"true\"] {\n color: var(--salt-content-primary-foreground-disabled);\n cursor: var(--salt-selectable-cursor-disabled);\n}\n\n/* TODO: Find a better way of doing this */\n.saltOption .saltIcon:not(.saltCheckboxIcon-icon) {\n min-height: var(--salt-text-lineHeight);\n}\n";
|
|
4
4
|
|
|
5
5
|
module.exports = css_248z;
|
|
6
6
|
//# sourceMappingURL=Option.css.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var css_248z = "/* Default variables applied to the root element */\n.saltAvatar {\n --avatar-
|
|
1
|
+
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(--avatar-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-accent-background);\n --avatar-foreground: var(--salt-accent-foreground);\n}\n\n.saltAvatar-category-1 {\n --avatar-background: var(--salt-category-1-bold-background);\n --avatar-foreground: var(--salt-category-1-bold-foreground);\n}\n.saltAvatar-category-2 {\n --avatar-background: var(--salt-category-2-bold-background);\n --avatar-foreground: var(--salt-category-2-bold-foreground);\n}\n\n.saltAvatar-category-3 {\n --avatar-background: var(--salt-category-3-bold-background);\n --avatar-foreground: var(--salt-category-3-bold-foreground);\n}\n\n.saltAvatar-category-4 {\n --avatar-background: var(--salt-category-4-bold-background);\n --avatar-foreground: var(--salt-category-4-bold-foreground);\n}\n\n.saltAvatar-category-5 {\n --avatar-background: var(--salt-category-5-bold-background);\n --avatar-foreground: var(--salt-category-5-bold-foreground);\n}\n\n.saltAvatar-category-6 {\n --avatar-background: var(--salt-category-6-bold-background);\n --avatar-foreground: var(--salt-category-6-bold-foreground);\n}\n\n.saltAvatar-category-7 {\n --avatar-background: var(--salt-category-7-bold-background);\n --avatar-foreground: var(--salt-category-7-bold-foreground);\n}\n\n.saltAvatar-category-8 {\n --avatar-background: var(--salt-category-8-bold-background);\n --avatar-foreground: var(--salt-category-8-bold-foreground);\n}\n\n.saltAvatar-category-9 {\n --avatar-background: var(--salt-category-9-bold-background);\n --avatar-foreground: var(--salt-category-9-bold-foreground);\n}\n\n.saltAvatar-category-10 {\n --avatar-background: var(--salt-category-10-bold-background);\n --avatar-foreground: var(--salt-category-10-bold-foreground);\n}\n.saltAvatar-category-11 {\n --avatar-background: var(--salt-category-11-bold-background);\n --avatar-foreground: var(--salt-category-11-bold-foreground);\n}\n.saltAvatar-category-12 {\n --avatar-background: var(--salt-category-12-bold-background);\n --avatar-foreground: var(--salt-category-12-bold-foreground);\n}\n.saltAvatar-category-13 {\n --avatar-background: var(--salt-category-13-bold-background);\n --avatar-foreground: var(--salt-category-13-bold-foreground);\n}\n.saltAvatar-category-14 {\n --avatar-background: var(--salt-category-14-bold-background);\n --avatar-foreground: var(--salt-category-14-bold-foreground);\n}\n.saltAvatar-category-15 {\n --avatar-background: var(--salt-category-15-bold-background);\n --avatar-foreground: var(--salt-category-15-bold-foreground);\n}\n.saltAvatar-category-16 {\n --avatar-background: var(--salt-category-16-bold-background);\n --avatar-foreground: var(--salt-category-16-bold-foreground);\n}\n.saltAvatar-category-17 {\n --avatar-background: var(--salt-category-17-bold-background);\n --avatar-foreground: var(--salt-category-17-bold-foreground);\n}\n.saltAvatar-category-18 {\n --avatar-background: var(--salt-category-18-bold-background);\n --avatar-foreground: var(--salt-category-18-bold-foreground);\n}\n.saltAvatar-category-19 {\n --avatar-background: var(--salt-category-19-bold-background);\n --avatar-foreground: var(--salt-category-19-bold-foreground);\n}\n.saltAvatar-category-20 {\n --avatar-background: var(--salt-category-20-bold-background);\n --avatar-foreground: var(--salt-category-20-bold-foreground);\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";
|
|
2
2
|
|
|
3
3
|
export { css_248z as default };
|
|
4
4
|
//# sourceMappingURL=Avatar.css.js.map
|
package/dist-es/avatar/Avatar.js
CHANGED
|
@@ -18,6 +18,7 @@ const defaultNameToInitials = (name) => name == null ? void 0 : name.split(" ").
|
|
|
18
18
|
const Avatar = forwardRef(function Avatar2({
|
|
19
19
|
className,
|
|
20
20
|
children: childrenProp,
|
|
21
|
+
color = "accent",
|
|
21
22
|
name,
|
|
22
23
|
nameToInitials = defaultNameToInitials,
|
|
23
24
|
src,
|
|
@@ -28,7 +29,7 @@ const Avatar = forwardRef(function Avatar2({
|
|
|
28
29
|
}, ref) {
|
|
29
30
|
const targetWindow = useWindow();
|
|
30
31
|
const { UserIcon } = useIcon();
|
|
31
|
-
const fallbackIcon = fallbackIconProp === void 0 ? /* @__PURE__ */ jsx(UserIcon, { "aria-
|
|
32
|
+
const fallbackIcon = fallbackIconProp === void 0 ? /* @__PURE__ */ jsx(UserIcon, { "aria-hidden": true }) : fallbackIconProp;
|
|
32
33
|
useComponentCssInjection({
|
|
33
34
|
testId: "salt-avatar",
|
|
34
35
|
css: css_248z,
|
|
@@ -42,15 +43,11 @@ const Avatar = forwardRef(function Avatar2({
|
|
|
42
43
|
const status = useAvatarImage({ src });
|
|
43
44
|
const hasImgNotFailing = status === "loaded";
|
|
44
45
|
if (hasImgNotFailing) {
|
|
45
|
-
children = /* @__PURE__ */ jsx("img", { alt:
|
|
46
|
+
children = /* @__PURE__ */ jsx("img", { alt: "", src });
|
|
46
47
|
} else if (childrenProp != null) {
|
|
47
48
|
children = childrenProp;
|
|
48
49
|
}
|
|
49
50
|
const avatarInitials = nameToInitials(name);
|
|
50
|
-
const initialsProps = avatarInitials ? {
|
|
51
|
-
role: "img",
|
|
52
|
-
"aria-label": name
|
|
53
|
-
} : {};
|
|
54
51
|
return /* @__PURE__ */ jsx(
|
|
55
52
|
"div",
|
|
56
53
|
{
|
|
@@ -58,10 +55,14 @@ const Avatar = forwardRef(function Avatar2({
|
|
|
58
55
|
style,
|
|
59
56
|
className: clsx(
|
|
60
57
|
withBaseName(),
|
|
61
|
-
|
|
58
|
+
withBaseName(color),
|
|
59
|
+
{
|
|
60
|
+
[withBaseName("withImage")]: hasImgNotFailing
|
|
61
|
+
},
|
|
62
62
|
className
|
|
63
63
|
),
|
|
64
|
-
|
|
64
|
+
role: name ? "img" : void 0,
|
|
65
|
+
"aria-label": name,
|
|
65
66
|
...rest,
|
|
66
67
|
children: children || avatarInitials || fallbackIcon
|
|
67
68
|
}
|
|
@@ -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 { type HTMLAttributes, type ReactNode, forwardRef } 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
|
|
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 { type HTMLAttributes, type ReactNode, forwardRef } 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 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 role={name ? \"img\" : undefined}\n aria-label={name}\n {...rest}\n >\n {children || avatarInitials || fallbackIcon}\n </div>\n );\n});\n"],"names":["Avatar","avatarCss"],"mappings":";;;;;;;;;;;;;;AA4DA,MAAM,YAAA,GAAe,aAAa,YAAY,CAAA;AAC9C,MAAM,mBAAsB,GAAA,CAAA;AAE5B,MAAM,wBAAwB,CAAC,IAAA,KAC7B,IACI,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAA,KAAA,CAAM,KACP,KAAM,CAAA,CAAA,EAAG,CACT,CAAA,CAAA,GAAA,CAAI,CAAC,CAAM,KAAA,CAAA,CAAE,CAAC,CAAA,CAAA,CACd,KAAK,EACL,CAAA,CAAA,WAAA,EAAA;AAEQ,MAAA,MAAA,GAAS,UAAwC,CAAA,SAASA,OACrE,CAAA;AAAA,EACE,SAAA;AAAA,EACA,QAAU,EAAA,YAAA;AAAA,EACV,KAAQ,GAAA,QAAA;AAAA,EACR,IAAA;AAAA,EACA,cAAiB,GAAA,qBAAA;AAAA,EACjB,GAAA;AAAA,EACA,IAAO,GAAA,mBAAA;AAAA,EACP,KAAO,EAAA,SAAA;AAAA,EACP,YAAc,EAAA,gBAAA;AAAA,EACd,GAAG;AACL,CAAA,EACA,GACA,EAAA;AACA,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAM,MAAA,EAAE,QAAS,EAAA,GAAI,OAAQ,EAAA;AAE7B,EAAA,MAAM,eACJ,gBAAqB,KAAA,KAAA,CAAA,uBAClB,QAAS,EAAA,EAAA,aAAA,EAAW,MAAC,CAEtB,GAAA,gBAAA;AAGJ,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,aAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAI,IAAA,QAAA;AAEJ,EAAA,MAAM,KAAQ,GAAA;AAAA,IACZ,GAAG,SAAA;AAAA,IACH,8BAAA,EAAgC,GAAG,IAAI,CAAA;AAAA,GACzC;AAEA,EAAA,MAAM,MAAS,GAAA,cAAA,CAAe,EAAE,GAAA,EAAK,CAAA;AACrC,EAAA,MAAM,mBAAmB,MAAW,KAAA,QAAA;AACpC,EAAA,IAAI,gBAAkB,EAAA;AACpB,IAAA,QAAA,mBAAY,GAAA,CAAA,KAAA,EAAA,EAAI,GAAI,EAAA,EAAA,EAAG,GAAU,EAAA,CAAA;AAAA,GACnC,MAAA,IAAW,gBAAgB,IAAM,EAAA;AAC/B,IAAW,QAAA,GAAA,YAAA;AAAA;AAGb,EAAM,MAAA,cAAA,GAAiB,eAAe,IAAI,CAAA;AAE1C,EACE,uBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAW,EAAA,IAAA;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,MACA,IAAA,EAAM,OAAO,KAAQ,GAAA,KAAA,CAAA;AAAA,MACrB,YAAY,EAAA,IAAA;AAAA,MACX,GAAG,IAAA;AAAA,MAEH,sBAAY,cAAkB,IAAA;AAAA;AAAA,GACjC;AAEJ,CAAC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BorderItem.js","sources":["../src/border-item/BorderItem.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type ElementType, type ReactElement, forwardRef } from \"react\";\nimport { GridItem, type GridItemProps } from \"../grid-item\";\nimport {\n type PolymorphicComponentPropWithRef,\n type PolymorphicRef,\n makePrefixer,\n} from \"../utils\";\nimport borderItemCss from \"./BorderItem.css\";\n\nexport const BORDER_POSITION = [\n \"north\",\n \"west\",\n \"center\",\n \"east\",\n \"south\",\n] as const;\n\nexport type BorderPosition = (typeof BORDER_POSITION)[number];\n\nexport type BorderItemProps<T extends ElementType> =\n PolymorphicComponentPropWithRef<\n T,\n {\n /**\n * Aligns a grid item inside a cell along the inline (row) axis. Defaults to \"stretch\"\n */\n horizontalAlignment?: GridItemProps<T>[\"horizontalAlignment\"];\n /**\n * Aligns a grid item inside a cell along the block (column) axis. Defaults to \"stretch\"\n */\n verticalAlignment?: GridItemProps<T>[\"verticalAlignment\"];\n /**\n * Position in the Border Layout\n */\n position: BorderPosition;\n /**\n * Defines if the item should stick to the edges of its container. Defaults to \"false\"\n */\n sticky?: boolean;\n }\n >;\n\nconst withBaseName = makePrefixer(\"saltBorderItem\");\n\ntype BorderItemComponent = <T extends ElementType = \"div\">(\n props: BorderItemProps<T>,\n) => ReactElement | null;\n\nexport const BorderItem: BorderItemComponent = forwardRef(\n <T extends ElementType>(\n {\n children,\n className,\n position,\n sticky = false,\n style,\n ...rest\n }: BorderItemProps<T>,\n ref?: PolymorphicRef<T>,\n ) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-border-item\",\n css: borderItemCss,\n window: targetWindow,\n });\n\n const gridItemStyles = {\n ...style,\n \"--gridItem-gridArea\": position,\n };\n\n return (\n <GridItem\n ref={ref}\n className={clsx(\n withBaseName(),\n \"saltGridItem-area\",\n {\n [withBaseName(\"sticky\")]: sticky,\n },\n className,\n )}\n style={gridItemStyles}\n {...rest}\n >\n {children}\n </GridItem>\n );\n },\n);\n"],"names":["borderItemCss"],"mappings":";;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"BorderItem.js","sources":["../src/border-item/BorderItem.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type ElementType, type ReactElement, forwardRef } from \"react\";\nimport { GridItem, type GridItemProps } from \"../grid-item\";\nimport {\n type PolymorphicComponentPropWithRef,\n type PolymorphicRef,\n type ResponsiveProp,\n makePrefixer,\n} from \"../utils\";\nimport borderItemCss from \"./BorderItem.css\";\n\nexport const BORDER_POSITION = [\n \"north\",\n \"west\",\n \"center\",\n \"east\",\n \"south\",\n] as const;\n\nexport type BorderPosition = (typeof BORDER_POSITION)[number];\n\nexport type BorderItemProps<T extends ElementType> =\n PolymorphicComponentPropWithRef<\n T,\n {\n /**\n * Aligns a grid item inside a cell along the inline (row) axis. Defaults to \"stretch\"\n */\n horizontalAlignment?: GridItemProps<T>[\"horizontalAlignment\"];\n /**\n * Aligns a grid item inside a cell along the block (column) axis. Defaults to \"stretch\"\n */\n verticalAlignment?: GridItemProps<T>[\"verticalAlignment\"];\n /**\n * Position in the Border Layout\n */\n position: BorderPosition;\n /**\n * Defines if the item should stick to the edges of its container. Defaults to \"false\"\n */\n sticky?: boolean;\n /**\n * Defines the margin around the component. It can be specified as a number (which acts as a multiplier) or a string representing the margin value. Default is `0`.\n */\n margin?: ResponsiveProp<number | string>;\n /**\n * Defines the padding within the component. It can be specified as a number (which acts as a multiplier) or a string representing the padding value. Default is `0`.\n */\n padding?: ResponsiveProp<number | string>;\n }\n >;\n\nconst withBaseName = makePrefixer(\"saltBorderItem\");\n\ntype BorderItemComponent = <T extends ElementType = \"div\">(\n props: BorderItemProps<T>,\n) => ReactElement | null;\n\nexport const BorderItem: BorderItemComponent = forwardRef(\n <T extends ElementType>(\n {\n children,\n className,\n position,\n sticky = false,\n style,\n ...rest\n }: BorderItemProps<T>,\n ref?: PolymorphicRef<T>,\n ) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-border-item\",\n css: borderItemCss,\n window: targetWindow,\n });\n\n const gridItemStyles = {\n ...style,\n \"--gridItem-gridArea\": position,\n };\n\n return (\n <GridItem\n ref={ref}\n className={clsx(\n withBaseName(),\n \"saltGridItem-area\",\n {\n [withBaseName(\"sticky\")]: sticky,\n },\n className,\n )}\n style={gridItemStyles}\n {...rest}\n >\n {children}\n </GridItem>\n );\n },\n);\n"],"names":["borderItemCss"],"mappings":";;;;;;;;;;;;;AAaO,MAAM,eAAkB,GAAA;AAAA,EAC7B,OAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF;AAmCA,MAAM,YAAA,GAAe,aAAa,gBAAgB,CAAA;AAM3C,MAAM,UAAkC,GAAA,UAAA;AAAA,EAC7C,CACE;AAAA,IACE,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAS,GAAA,KAAA;AAAA,IACT,KAAA;AAAA,IACA,GAAG;AAAA,KAEL,GACG,KAAA;AACH,IAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,IAAyB,wBAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,kBAAA;AAAA,MACR,GAAK,EAAAA,QAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAA,MAAM,cAAiB,GAAA;AAAA,MACrB,GAAG,KAAA;AAAA,MACH,qBAAuB,EAAA;AAAA,KACzB;AAEA,IACE,uBAAA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAW,EAAA,IAAA;AAAA,UACT,YAAa,EAAA;AAAA,UACb,mBAAA;AAAA,UACA;AAAA,YACE,CAAC,YAAA,CAAa,QAAQ,CAAC,GAAG;AAAA,WAC5B;AAAA,UACA;AAAA,SACF;AAAA,QACA,KAAO,EAAA,cAAA;AAAA,QACN,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA;AAGN;;;;"}
|