@navikt/ds-react 6.11.0 → 6.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/cjs/alert/Alert.d.ts +9 -4
  2. package/cjs/alert/Alert.js +5 -3
  3. package/cjs/alert/Alert.js.map +1 -1
  4. package/cjs/layout/base/BasePrimitive.d.ts +35 -3
  5. package/cjs/layout/base/BasePrimitive.js +33 -3
  6. package/cjs/layout/base/BasePrimitive.js.map +1 -1
  7. package/cjs/layout/base/PrimitiveAsChildProps.d.ts +41 -0
  8. package/cjs/layout/base/PrimitiveAsChildProps.js +3 -0
  9. package/cjs/layout/base/PrimitiveAsChildProps.js.map +1 -0
  10. package/cjs/layout/box/Box.d.ts +5 -32
  11. package/cjs/layout/box/Box.js +15 -4
  12. package/cjs/layout/box/Box.js.map +1 -1
  13. package/cjs/layout/grid/HGrid.d.ts +7 -5
  14. package/cjs/layout/grid/HGrid.js +7 -2
  15. package/cjs/layout/grid/HGrid.js.map +1 -1
  16. package/cjs/layout/stack/HStack.d.ts +2 -1
  17. package/cjs/layout/stack/HStack.js.map +1 -1
  18. package/cjs/layout/stack/Stack.d.ts +8 -5
  19. package/cjs/layout/stack/Stack.js +10 -5
  20. package/cjs/layout/stack/Stack.js.map +1 -1
  21. package/cjs/layout/stack/VStack.d.ts +2 -1
  22. package/cjs/layout/stack/VStack.js.map +1 -1
  23. package/cjs/layout/utilities/css.js +3 -0
  24. package/cjs/layout/utilities/css.js.map +1 -1
  25. package/cjs/modal/Modal.js +3 -2
  26. package/cjs/modal/Modal.js.map +1 -1
  27. package/cjs/modal/types.d.ts +5 -0
  28. package/cjs/toggle-group/parts/useToggleItem.js +1 -1
  29. package/cjs/toggle-group/parts/useToggleItem.js.map +1 -1
  30. package/cjs/util/types/AsChildProps.d.ts +1 -0
  31. package/esm/alert/Alert.d.ts +9 -4
  32. package/esm/alert/Alert.js +5 -3
  33. package/esm/alert/Alert.js.map +1 -1
  34. package/esm/layout/base/BasePrimitive.d.ts +35 -3
  35. package/esm/layout/base/BasePrimitive.js +32 -2
  36. package/esm/layout/base/BasePrimitive.js.map +1 -1
  37. package/esm/layout/base/PrimitiveAsChildProps.d.ts +41 -0
  38. package/esm/layout/base/PrimitiveAsChildProps.js +2 -0
  39. package/esm/layout/base/PrimitiveAsChildProps.js.map +1 -0
  40. package/esm/layout/box/Box.d.ts +5 -32
  41. package/esm/layout/box/Box.js +15 -4
  42. package/esm/layout/box/Box.js.map +1 -1
  43. package/esm/layout/grid/HGrid.d.ts +7 -5
  44. package/esm/layout/grid/HGrid.js +7 -2
  45. package/esm/layout/grid/HGrid.js.map +1 -1
  46. package/esm/layout/stack/HStack.d.ts +2 -1
  47. package/esm/layout/stack/HStack.js.map +1 -1
  48. package/esm/layout/stack/Stack.d.ts +8 -5
  49. package/esm/layout/stack/Stack.js +10 -5
  50. package/esm/layout/stack/Stack.js.map +1 -1
  51. package/esm/layout/stack/VStack.d.ts +2 -1
  52. package/esm/layout/stack/VStack.js.map +1 -1
  53. package/esm/layout/utilities/css.js +3 -0
  54. package/esm/layout/utilities/css.js.map +1 -1
  55. package/esm/modal/Modal.js +3 -2
  56. package/esm/modal/Modal.js.map +1 -1
  57. package/esm/modal/types.d.ts +5 -0
  58. package/esm/toggle-group/parts/useToggleItem.js +1 -1
  59. package/esm/toggle-group/parts/useToggleItem.js.map +1 -1
  60. package/esm/util/types/AsChildProps.d.ts +1 -0
  61. package/package.json +3 -3
  62. package/src/alert/Alert.tsx +27 -6
  63. package/src/layout/base/BasePrimitive.tsx +84 -2
  64. package/src/layout/base/PrimitiveAsChildProps.ts +42 -0
  65. package/src/layout/box/Box.tsx +64 -81
  66. package/src/layout/grid/HGrid.tsx +73 -45
  67. package/src/layout/stack/HStack.tsx +2 -1
  68. package/src/layout/stack/Stack.tsx +80 -62
  69. package/src/layout/stack/VStack.tsx +3 -1
  70. package/src/layout/utilities/css.ts +3 -0
  71. package/src/modal/Modal.tsx +3 -1
  72. package/src/modal/types.ts +5 -0
  73. package/src/toggle-group/parts/useToggleItem.ts +4 -1
  74. package/src/util/types/AsChildProps.ts +1 -0
  75. package/cjs/layout/sidemal-test/AvatarPanel.d.ts +0 -4
  76. package/cjs/layout/sidemal-test/AvatarPanel.js +0 -19
  77. package/cjs/layout/sidemal-test/AvatarPanel.js.map +0 -1
  78. package/cjs/layout/sidemal-test/Content.d.ts +0 -2
  79. package/cjs/layout/sidemal-test/Content.js +0 -67
  80. package/cjs/layout/sidemal-test/Content.js.map +0 -1
  81. package/cjs/layout/sidemal-test/Filter.d.ts +0 -2
  82. package/cjs/layout/sidemal-test/Filter.js +0 -49
  83. package/cjs/layout/sidemal-test/Filter.js.map +0 -1
  84. package/cjs/layout/sidemal-test/Header.d.ts +0 -2
  85. package/cjs/layout/sidemal-test/Header.js +0 -49
  86. package/cjs/layout/sidemal-test/Header.js.map +0 -1
  87. package/cjs/layout/sidemal-test/Intro.d.ts +0 -2
  88. package/cjs/layout/sidemal-test/Intro.js +0 -37
  89. package/cjs/layout/sidemal-test/Intro.js.map +0 -1
  90. package/cjs/layout/sidemal-test/Sidebar.d.ts +0 -4
  91. package/cjs/layout/sidemal-test/Sidebar.js +0 -50
  92. package/cjs/layout/sidemal-test/Sidebar.js.map +0 -1
  93. package/cjs/layout/sidemal-test/content-box/ContentBox.d.ts +0 -8
  94. package/cjs/layout/sidemal-test/content-box/ContentBox.js +0 -66
  95. package/cjs/layout/sidemal-test/content-box/ContentBox.js.map +0 -1
  96. package/cjs/layout/sidemal-test/content-box/index.d.ts +0 -1
  97. package/cjs/layout/sidemal-test/content-box/index.js +0 -9
  98. package/cjs/layout/sidemal-test/content-box/index.js.map +0 -1
  99. package/esm/layout/sidemal-test/AvatarPanel.d.ts +0 -4
  100. package/esm/layout/sidemal-test/AvatarPanel.js +0 -12
  101. package/esm/layout/sidemal-test/AvatarPanel.js.map +0 -1
  102. package/esm/layout/sidemal-test/Content.d.ts +0 -2
  103. package/esm/layout/sidemal-test/Content.js +0 -60
  104. package/esm/layout/sidemal-test/Content.js.map +0 -1
  105. package/esm/layout/sidemal-test/Filter.d.ts +0 -2
  106. package/esm/layout/sidemal-test/Filter.js +0 -22
  107. package/esm/layout/sidemal-test/Filter.js.map +0 -1
  108. package/esm/layout/sidemal-test/Header.d.ts +0 -2
  109. package/esm/layout/sidemal-test/Header.js +0 -42
  110. package/esm/layout/sidemal-test/Header.js.map +0 -1
  111. package/esm/layout/sidemal-test/Intro.d.ts +0 -2
  112. package/esm/layout/sidemal-test/Intro.js +0 -30
  113. package/esm/layout/sidemal-test/Intro.js.map +0 -1
  114. package/esm/layout/sidemal-test/Sidebar.d.ts +0 -4
  115. package/esm/layout/sidemal-test/Sidebar.js +0 -41
  116. package/esm/layout/sidemal-test/Sidebar.js.map +0 -1
  117. package/esm/layout/sidemal-test/content-box/ContentBox.d.ts +0 -8
  118. package/esm/layout/sidemal-test/content-box/ContentBox.js +0 -37
  119. package/esm/layout/sidemal-test/content-box/ContentBox.js.map +0 -1
  120. package/esm/layout/sidemal-test/content-box/index.d.ts +0 -1
  121. package/esm/layout/sidemal-test/content-box/index.js +0 -2
  122. package/esm/layout/sidemal-test/content-box/index.js.map +0 -1
  123. package/src/layout/sidemal-test/AvatarPanel.tsx +0 -27
  124. package/src/layout/sidemal-test/Content.tsx +0 -129
  125. package/src/layout/sidemal-test/Filter.tsx +0 -46
  126. package/src/layout/sidemal-test/Header.tsx +0 -96
  127. package/src/layout/sidemal-test/Intro.tsx +0 -91
  128. package/src/layout/sidemal-test/Sidebar.tsx +0 -77
  129. package/src/layout/sidemal-test/content-box/ContentBox.tsx +0 -46
  130. package/src/layout/sidemal-test/content-box/index.ts +0 -1
  131. package/src/layout/sidemal-test/styling.css +0 -43
@@ -74,7 +74,7 @@ const polyfillClassName = "navds-modal--polyfilled";
74
74
  */
75
75
  export const Modal = forwardRef((_a, ref) => {
76
76
  var _b, _c;
77
- var { header, children, open, onBeforeClose, onCancel, closeOnBackdropClick, width, portal, className, "aria-labelledby": ariaLabelledby, style, onClick, onMouseDown } = _a, rest = __rest(_a, ["header", "children", "open", "onBeforeClose", "onCancel", "closeOnBackdropClick", "width", "portal", "className", "aria-labelledby", "style", "onClick", "onMouseDown"]);
77
+ var { header, children, open, onBeforeClose, onCancel, closeOnBackdropClick, width, placement, portal, className, "aria-labelledby": ariaLabelledby, style, onClick, onMouseDown } = _a, rest = __rest(_a, ["header", "children", "open", "onBeforeClose", "onCancel", "closeOnBackdropClick", "width", "placement", "portal", "className", "aria-labelledby", "style", "onClick", "onMouseDown"]);
78
78
  const modalRef = useRef(null);
79
79
  const mergedRef = useMergeRefs(modalRef, ref);
80
80
  const ariaLabelId = useId();
@@ -117,9 +117,10 @@ export const Modal = forwardRef((_a, ref) => {
117
117
  useBodyScrollLock(modalRef, portalNode, isNested);
118
118
  const isWidthPreset = typeof width === "string" && ["small", "medium"].includes(width);
119
119
  const mergedClassName = cl("navds-modal", className, {
120
- polyfillClassName: needPolyfill,
120
+ [polyfillClassName]: needPolyfill,
121
121
  "navds-modal--autowidth": !width,
122
122
  [`navds-modal--${width}`]: isWidthPreset,
123
+ "navds-modal--top": placement === "top" && !needPolyfill,
123
124
  });
124
125
  const mergedStyle = Object.assign(Object.assign({}, style), (!isWidthPreset ? { width } : {}));
125
126
  const mouseClickStart = useRef({
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../src/modal/Modal.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../src/modal/Modal.tsx"],"names":[],"mappings":"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"}
@@ -60,6 +60,11 @@ interface ModalPropsBase extends React.DialogHTMLAttributes<HTMLDialogElement> {
60
60
  * @default fit-content (up to 700px)
61
61
  * */
62
62
  width?: "medium" | "small" | number | `${number}${string}`;
63
+ /**
64
+ * Where to place the modal in the viewport. (Will always be centered on mobile and old browsers.)
65
+ * @default "center"
66
+ */
67
+ placement?: "top" | "center";
63
68
  /**
64
69
  * Lets you render the modal into a different part of the DOM.
65
70
  * Will use `rootElement` from `Provider` if defined, otherwise `document.body`.
@@ -64,7 +64,7 @@ export function useToggleItem({ value, disabled = false, onFocus: _onFocus, onCl
64
64
  ref: mergeRefs([register, ref]),
65
65
  isSelected,
66
66
  isFocused: focusedValue === value,
67
- onClick: composeEventHandlers(onClick, () => setSelectedValue(value)),
67
+ onClick: composeEventHandlers(onClick, () => selectedValue !== value && setSelectedValue(value)),
68
68
  onFocus: disabled ? undefined : composeEventHandlers(_onFocus, onFocus),
69
69
  onKeyDown: composeEventHandlers(_onKeyDown, onKeyDown),
70
70
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useToggleItem.js","sourceRoot":"","sources":["../../../src/toggle-group/parts/useToggleItem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useToggleItem.js","sourceRoot":"","sources":["../../../src/toggle-group/parts/useToggleItem.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@ export type AsChildProps = {
16
16
  * ```
17
17
  */
18
18
  asChild: true;
19
+ as?: never;
19
20
  } | {
20
21
  children: React.ReactNode;
21
22
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@navikt/ds-react",
3
- "version": "6.11.0",
3
+ "version": "6.13.0",
4
4
  "description": "React components from the Norwegian Labour and Welfare Administration.",
5
5
  "author": "Aksel, a team part of the Norwegian Labour and Welfare Administration.",
6
6
  "license": "MIT",
@@ -594,8 +594,8 @@
594
594
  "dependencies": {
595
595
  "@floating-ui/react": "0.25.4",
596
596
  "@floating-ui/react-dom": "^2.0.9",
597
- "@navikt/aksel-icons": "^6.11.0",
598
- "@navikt/ds-tokens": "^6.11.0",
597
+ "@navikt/aksel-icons": "^6.13.0",
598
+ "@navikt/ds-tokens": "^6.13.0",
599
599
  "clsx": "^2.1.0",
600
600
  "date-fns": "^3.0.0",
601
601
  "react-day-picker": "8.10.0"
@@ -16,7 +16,7 @@ export interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {
16
16
  */
17
17
  children: React.ReactNode;
18
18
  /**
19
- * Changes colors and icon usage when changed.
19
+ * Level of severity. Changes colors and icon.
20
20
  */
21
21
  variant: "error" | "warning" | "info" | "success";
22
22
  /**
@@ -30,15 +30,20 @@ export interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {
30
30
  */
31
31
  fullWidth?: boolean;
32
32
  /**
33
- * Removes background from Alert.
33
+ * Sets max-width on the content to 43.5rem.
34
+ * @default true
35
+ */
36
+ contentMaxWidth?: boolean;
37
+ /**
38
+ * Removes background, border and padding.
34
39
  * @default false
35
40
  */
36
41
  inline?: boolean;
37
42
  /**
38
- * Removes close-button(X) when false.
43
+ * Adds a close-button (X).
39
44
  *
40
45
  * **Requires onClose to be set**.
41
- * @default true
46
+ * @default false
42
47
  */
43
48
  closeButton?: boolean;
44
49
  /**
@@ -85,6 +90,7 @@ export const Alert = forwardRef<HTMLDivElement, AlertProps>(
85
90
  variant,
86
91
  size = "medium",
87
92
  fullWidth = false,
93
+ contentMaxWidth = true,
88
94
  inline = false,
89
95
  closeButton = false,
90
96
  onClose,
@@ -109,7 +115,14 @@ export const Alert = forwardRef<HTMLDivElement, AlertProps>(
109
115
  )}
110
116
  >
111
117
  <Icon variant={variant} className="navds-alert__icon" />
112
- <BodyLong as="div" size={size} className="navds-alert__wrapper">
118
+ <BodyLong
119
+ as="div"
120
+ size={size}
121
+ className={cl(
122
+ "navds-alert__wrapper",
123
+ contentMaxWidth && "navds-alert__wrapper--maxwidth",
124
+ )}
125
+ >
113
126
  {children}
114
127
  </BodyLong>
115
128
  {closeButton && !inline && (
@@ -120,7 +133,15 @@ export const Alert = forwardRef<HTMLDivElement, AlertProps>(
120
133
  variant="tertiary-neutral"
121
134
  onClick={onClose}
122
135
  type="button"
123
- icon={<XMarkIcon title="Lukk Alert" />}
136
+ icon={
137
+ <XMarkIcon
138
+ title={
139
+ ["error", "warning"].includes(variant)
140
+ ? "Lukk varsel"
141
+ : "Lukk melding"
142
+ }
143
+ />
144
+ }
124
145
  />
125
146
  </div>
126
147
  )}
@@ -4,8 +4,7 @@ import { Slot } from "../../slot/Slot";
4
4
  import { getResponsiveProps, getResponsiveValue } from "../utilities/css";
5
5
  import { ResponsiveProp, SpacingScale } from "../utilities/types";
6
6
 
7
- export interface BasePrimitiveProps {
8
- children: React.ReactElement;
7
+ export type PrimitiveProps = {
9
8
  className?: string;
10
9
  /**
11
10
  * Padding around children.
@@ -40,6 +39,47 @@ export interface BasePrimitiveProps {
40
39
  paddingBlock?: ResponsiveProp<
41
40
  SpacingScale | `${SpacingScale} ${SpacingScale}`
42
41
  >;
42
+ /**
43
+ * Margin around element.
44
+ * Accepts a [spacing token](https://aksel.nav.no/grunnleggende/styling/design-tokens#0cc9fb32f213)
45
+ * or an object of spacing tokens for different breakpoints.
46
+ * @example
47
+ * margin='4'
48
+ * margin={{xs: '2', sm: '3', md: '4', lg: '5', xl: '6'}}
49
+ */
50
+ margin?: ResponsiveProp<SpacingScale>;
51
+ /**
52
+ * Horizontal margin around element.
53
+ * Accepts a [spacing token](https://aksel.nav.no/grunnleggende/styling/design-tokens#0cc9fb32f213)
54
+ * or an object of spacing tokens for different breakpoints.
55
+ * @example
56
+ * marginInline='4'
57
+ * marginInline='4 5'
58
+ * marginInline={{xs: '0 32', sm: '3', md: '4 5', lg: '5', xl: '6'}}
59
+ */
60
+ marginInline?: ResponsiveProp<
61
+ | SpacingScale
62
+ | `${SpacingScale} ${SpacingScale}`
63
+ | "auto"
64
+ | `auto ${SpacingScale}`
65
+ | `${SpacingScale} auto`
66
+ >;
67
+ /**
68
+ * Vertical margin around element.
69
+ * Accepts a [spacing token](https://aksel.nav.no/grunnleggende/styling/design-tokens#0cc9fb32f213)
70
+ * or an object of spacing tokens for different breakpoints.
71
+ * @example
72
+ * marginBlock='4'
73
+ * marginBlock='4 5'
74
+ * marginBlock={{xs: '2', sm: '3', md: '4', lg: '5', xl: '6'}}
75
+ */
76
+ marginBlock?: ResponsiveProp<
77
+ | SpacingScale
78
+ | `${SpacingScale} ${SpacingScale}`
79
+ | "auto"
80
+ | `auto ${SpacingScale}`
81
+ | `${SpacingScale} auto`
82
+ >;
43
83
  /**
44
84
  * CSS `width`
45
85
  */
@@ -140,6 +180,38 @@ export interface BasePrimitiveProps {
140
180
  * CSS `flex-grow`
141
181
  */
142
182
  flexGrow?: ResponsiveProp<string>;
183
+ };
184
+
185
+ export const PRIMITIVE_PROPS: (keyof PrimitiveProps)[] = [
186
+ "className",
187
+ "padding",
188
+ "paddingInline",
189
+ "paddingBlock",
190
+ "margin",
191
+ "marginInline",
192
+ "marginBlock",
193
+ "width",
194
+ "minWidth",
195
+ "maxWidth",
196
+ "height",
197
+ "minHeight",
198
+ "maxHeight",
199
+ "position",
200
+ "inset",
201
+ "top",
202
+ "right",
203
+ "bottom",
204
+ "left",
205
+ "overflow",
206
+ "overflowX",
207
+ "overflowY",
208
+ "flexBasis",
209
+ "flexGrow",
210
+ "flexShrink",
211
+ ];
212
+
213
+ interface BasePrimitiveProps extends PrimitiveProps {
214
+ children: React.ReactElement;
143
215
  }
144
216
 
145
217
  export const BasePrimitive = ({
@@ -148,6 +220,9 @@ export const BasePrimitive = ({
148
220
  padding,
149
221
  paddingInline,
150
222
  paddingBlock,
223
+ margin,
224
+ marginInline,
225
+ marginBlock,
151
226
  width,
152
227
  minWidth,
153
228
  maxWidth,
@@ -172,6 +247,10 @@ export const BasePrimitive = ({
172
247
  ...getResponsiveProps("r", "p", "spacing", padding),
173
248
  ...getResponsiveProps("r", "pi", "spacing", paddingInline),
174
249
  ...getResponsiveProps("r", "pb", "spacing", paddingBlock),
250
+ /* Margin */
251
+ ...getResponsiveProps("r", "m", "spacing", margin),
252
+ ...getResponsiveProps("r", "mi", "spacing", marginInline),
253
+ ...getResponsiveProps("r", "mb", "spacing", marginBlock),
175
254
  /* Width & height */
176
255
  ...getResponsiveValue("r", "w", width),
177
256
  ...getResponsiveValue("r", "minw", minWidth),
@@ -203,6 +282,9 @@ export const BasePrimitive = ({
203
282
  "navds-r-p": padding,
204
283
  "navds-r-pi": paddingInline,
205
284
  "navds-r-pb": paddingBlock,
285
+ "navds-r-m": margin,
286
+ "navds-r-mi": marginInline,
287
+ "navds-r-mb": marginBlock,
206
288
  "navds-r-w": width,
207
289
  "navds-r-minw": minWidth,
208
290
  "navds-r-maxw": maxWidth,
@@ -0,0 +1,42 @@
1
+ export type PrimitiveAsChildProps =
2
+ | {
3
+ children: React.ReactElement | false | null;
4
+ /**
5
+ * Renders the component and its child as a single element,
6
+ * merging the props of the component with the props of the child.
7
+ * @example
8
+ * ```tsx
9
+ * <Component asChild data-prop>
10
+ * <ChildComponent data-child />
11
+ * </Component>
12
+ *
13
+ * // Renders
14
+ * <div data-prop data-child />
15
+ * ```
16
+ */
17
+ asChild: true;
18
+ /**
19
+ * Implements [OverridableComponent](https://aksel.nav.no/grunnleggende/kode/overridablecomponent)
20
+ *
21
+ * When using asChild, the prop is not allowed as it would have no effect.
22
+ */
23
+ as?: never;
24
+ }
25
+ | {
26
+ children?: React.ReactNode;
27
+ /**
28
+ * Renders the component and its child as a single element,
29
+ * merging the props of the component with the props of the child.
30
+ *
31
+ * @example
32
+ * ```tsx
33
+ * <Component asChild data-prop>
34
+ * <ChildComponent data-child />
35
+ * </Component>
36
+ *
37
+ * // Renders
38
+ * <div data-prop data-child />
39
+ * ```
40
+ */
41
+ asChild?: false;
42
+ };
@@ -1,6 +1,13 @@
1
1
  import cl from "clsx";
2
2
  import React, { forwardRef } from "react";
3
+ import { Slot } from "../../slot/Slot";
4
+ import { omit } from "../../util";
3
5
  import { OverridableComponent } from "../../util/types";
6
+ import BasePrimitive, {
7
+ PRIMITIVE_PROPS,
8
+ PrimitiveProps,
9
+ } from "../base/BasePrimitive";
10
+ import { PrimitiveAsChildProps } from "../base/PrimitiveAsChildProps";
4
11
  import { getResponsiveProps } from "../utilities/css";
5
12
  import {
6
13
  BackgroundColorToken,
@@ -9,77 +16,45 @@ import {
9
16
  ResponsiveProp,
10
17
  ShadowToken,
11
18
  SpaceDelimitedAttribute,
12
- SpacingScale,
13
19
  SurfaceColorToken,
14
20
  } from "../utilities/types";
15
21
 
16
- export interface BoxProps extends React.HTMLAttributes<HTMLDivElement> {
17
- /**
18
- * CSS `background-color` property.
19
- * Accepts a [background/surface color token](https://aksel.nav.no/grunnleggende/styling/design-tokens#afff774dad80).
20
- */
21
- background?: BackgroundColorToken | SurfaceColorToken;
22
- /**
23
- * CSS `border-color` property.
24
- * Accepts a [border color token](https://aksel.nav.no/grunnleggende/styling/design-tokens#adb1767e2f87).
25
- */
26
- borderColor?: BorderColorToken;
27
- /**
28
- * CSS `border-radius` property.
29
- * Accepts a [radius token](https://aksel.nav.no/grunnleggende/styling/design-tokens#6d79c5605d31)
30
- * or an object of radius tokens for different breakpoints.
31
- * @example
32
- * borderRadius='full'
33
- * borderRadius='0 full large small'
34
- * borderRadius={{xs: 'small large', sm: '0', md: 'large', lg: 'full'}}
35
- */
36
- borderRadius?: ResponsiveProp<SpaceDelimitedAttribute<BorderRadiiToken>>;
37
- /**
38
- * CSS `border-width` property. If this is not set there will be no border.
39
- * @example
40
- * borderWidth='2'
41
- * borderWidth='1 2 3 4'
42
- */
43
- borderWidth?: SpaceDelimitedAttribute<"0" | "1" | "2" | "3" | "4" | "5">;
44
- /**
45
- * Padding around children.
46
- * Accepts a [spacing token](https://aksel.nav.no/grunnleggende/styling/design-tokens#0cc9fb32f213)
47
- * or an object of spacing tokens for different breakpoints.
48
- * @example
49
- * padding='4'
50
- * padding={{xs: '2', sm: '3', md: '4', lg: '5', xl: '6'}}
51
- */
52
- padding?: ResponsiveProp<SpacingScale>;
53
- /**
54
- * Horizontal padding around children.
55
- * Accepts a [spacing token](https://aksel.nav.no/grunnleggende/styling/design-tokens#0cc9fb32f213)
56
- * or an object of spacing tokens for different breakpoints.
57
- * @example
58
- * paddingInline='4'
59
- * paddingInline='4 5'
60
- * paddingInline={{xs: '0 32', sm: '3', md: '4 5', lg: '5', xl: '6'}}
61
- */
62
- paddingInline?: ResponsiveProp<
63
- SpacingScale | `${SpacingScale} ${SpacingScale}`
64
- >;
65
- /**
66
- * Vertical padding around children.
67
- * Accepts a [spacing token](https://aksel.nav.no/grunnleggende/styling/design-tokens#0cc9fb32f213)
68
- * or an object of spacing tokens for different breakpoints.
69
- * @example
70
- * paddingBlock='4'
71
- * paddingBlock='4 5'
72
- * paddingBlock={{xs: '2', sm: '3', md: '4', lg: '5', xl: '6'}}
73
- */
74
- paddingBlock?: ResponsiveProp<
75
- SpacingScale | `${SpacingScale} ${SpacingScale}`
76
- >;
77
- /** Shadow on box. Accepts a shadow token.
78
- * @example
79
- * shadow='small'
80
- */
81
- shadow?: ShadowToken;
82
- }
22
+ export type BoxProps = PrimitiveProps &
23
+ PrimitiveAsChildProps &
24
+ React.HTMLAttributes<HTMLDivElement> & {
25
+ /**
26
+ * CSS `background-color` property.
27
+ * Accepts a [background/surface color token](https://aksel.nav.no/grunnleggende/styling/design-tokens#afff774dad80).
28
+ */
29
+ background?: BackgroundColorToken | SurfaceColorToken;
30
+ /**
31
+ * CSS `border-color` property.
32
+ * Accepts a [border color token](https://aksel.nav.no/grunnleggende/styling/design-tokens#adb1767e2f87).
33
+ */
34
+ borderColor?: BorderColorToken;
35
+ /**
36
+ * CSS `border-radius` property.
37
+ * Accepts a [radius token](https://aksel.nav.no/grunnleggende/styling/design-tokens#6d79c5605d31)
38
+ * or an object of radius tokens for different breakpoints.
39
+ * @example
40
+ * borderRadius='full'
41
+ * borderRadius='0 full large small'
42
+ * borderRadius={{xs: 'small large', sm: '0', md: 'large', lg: 'full'}}
43
+ */
44
+ borderRadius?: ResponsiveProp<SpaceDelimitedAttribute<BorderRadiiToken>>;
45
+ /**
46
+ * CSS `border-width` property. If this is not set there will be no border.
47
+ * @example
48
+ * borderWidth='2'
49
+ * borderWidth='1 2 3 4'
50
+ */
51
+ borderWidth?: SpaceDelimitedAttribute<"0" | "1" | "2" | "3" | "4" | "5">;
52
+ /** Shadow on box. Accepts a shadow token.
53
+ * @example
54
+ * shadow='small'
55
+ */
56
+ shadow?: ShadowToken;
57
+ };
83
58
 
84
59
  /**
85
60
  * Foundational Layout-primitive for generic encapsulation & styling.
@@ -111,17 +86,16 @@ export interface BoxProps extends React.HTMLAttributes<HTMLDivElement> {
111
86
  export const Box: OverridableComponent<BoxProps, HTMLDivElement> = forwardRef(
112
87
  (
113
88
  {
89
+ children,
90
+ className,
114
91
  as: Component = "div",
115
92
  background,
116
93
  borderColor,
117
94
  borderWidth,
118
95
  borderRadius,
119
- className,
120
- padding,
121
- paddingInline,
122
- paddingBlock,
123
96
  shadow,
124
97
  style: _style,
98
+ asChild,
125
99
  ...rest
126
100
  },
127
101
  ref,
@@ -149,18 +123,27 @@ export const Box: OverridableComponent<BoxProps, HTMLDivElement> = forwardRef(
149
123
  false,
150
124
  ["0"],
151
125
  ),
152
- ...getResponsiveProps("box", "padding", "spacing", padding),
153
- ...getResponsiveProps("box", "padding-inline", "spacing", paddingInline),
154
- ...getResponsiveProps("box", "padding-block", "spacing", paddingBlock),
155
126
  };
156
127
 
128
+ const Comp = asChild ? Slot : Component;
129
+
157
130
  return (
158
- <Component
159
- {...rest}
160
- className={cl("navds-box", className)}
161
- ref={ref}
162
- style={style}
163
- />
131
+ <BasePrimitive {...rest}>
132
+ <Comp
133
+ {...omit(rest, PRIMITIVE_PROPS)}
134
+ ref={ref}
135
+ style={style}
136
+ className={cl("navds-box", className, {
137
+ "navds-box-bg": background,
138
+ "navds-box-border-color": borderColor,
139
+ "navds-box-border-width": borderWidth,
140
+ "navds-box-border-radius": borderRadius,
141
+ "navds-box-shadow": shadow,
142
+ })}
143
+ >
144
+ {children}
145
+ </Comp>
146
+ </BasePrimitive>
164
147
  );
165
148
  },
166
149
  );