@equinor/eds-core-react 2.3.1 → 2.3.2-beta.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 (44) hide show
  1. package/README.md +16 -1
  2. package/build/index.css +60 -207
  3. package/build/index.min.css +3 -3
  4. package/dist/eds-core-react.cjs +49 -24
  5. package/dist/esm/components/Autocomplete/AddNewOption.js +1 -1
  6. package/dist/esm/components/Autocomplete/Autocomplete.js +1 -1
  7. package/dist/esm/components/Autocomplete/MultipleInput.js +21 -5
  8. package/dist/esm/components/Autocomplete/Option.js +11 -2
  9. package/dist/esm/components/Autocomplete/SelectAllOption.js +1 -1
  10. package/dist/esm/components/Autocomplete/useAutocomplete.js +13 -2
  11. package/dist/esm/components/Banner/Banner.tokens.js +2 -10
  12. package/dist/esm/components/Chip/Chip.js +1 -1
  13. package/dist/esm/components/Chip/Chip.tokens.js +0 -2
  14. package/dist/esm/components/Datepicker/utils/get-calendar-date.js +1 -1
  15. package/dist/esm/components/EdsProvider/eds.context.js +31 -3
  16. package/dist/esm/components/Menu/Menu.context.js +1 -1
  17. package/dist/esm/components/SideBar/SideBar.context.js +1 -1
  18. package/dist/esm/components/Typography/Typography.js +1 -1
  19. package/dist/esm/index.js +64 -64
  20. package/dist/esm-next/components/EdsProvider/eds.context.js +11 -0
  21. package/dist/esm-next/components/Tooltip/Tooltip.js +152 -0
  22. package/dist/esm-next/components/Tooltip/Tooltip.tokens.js +54 -0
  23. package/dist/esm-next/components/Typography/Typography.new.js +67 -0
  24. package/dist/{esm → esm-next}/components/next/Button/Button.js +3 -5
  25. package/dist/index.next.cjs +3 -5
  26. package/dist/types/components/Autocomplete/Autocomplete.d.ts +1 -1
  27. package/dist/types/components/Autocomplete/AutocompleteContext.d.ts +2 -2
  28. package/dist/types/components/Autocomplete/useAutocomplete.d.ts +3 -2
  29. package/dist/types/components/Datepicker/DateRangePicker.d.ts +1 -1
  30. package/dist/types/components/SideBar/SideBarButton/index.d.ts +1 -1
  31. package/dist/types/components/Typography/index.d.ts +1 -0
  32. package/package.json +41 -34
  33. package/dist/{esm → esm-next}/components/next/Checkbox/Checkbox.js +0 -0
  34. package/dist/{esm → esm-next}/components/next/Field/Field.Description.js +0 -0
  35. package/dist/{esm → esm-next}/components/next/Field/Field.HelperMessage.js +0 -0
  36. package/dist/{esm → esm-next}/components/next/Field/Field.Label.js +0 -0
  37. package/dist/{esm → esm-next}/components/next/Field/Field.js +0 -0
  38. package/dist/{esm → esm-next}/components/next/Field/useFieldIds.js +0 -0
  39. package/dist/{esm → esm-next}/components/next/Icon/Icon.js +0 -0
  40. package/dist/{esm → esm-next}/components/next/Input/Input.js +0 -0
  41. package/dist/{esm → esm-next}/components/next/Radio/Radio.js +0 -0
  42. package/dist/{esm → esm-next}/components/next/Switch/Switch.js +0 -0
  43. package/dist/{esm → esm-next}/components/next/TextField/TextField.js +0 -0
  44. package/dist/{esm → esm-next}/index.next.js +4 -4
@@ -0,0 +1,67 @@
1
+ import { forwardRef } from 'react';
2
+ import { jsx } from 'react/jsx-runtime';
3
+
4
+ /**
5
+ * TypographyNext component for flexible typography with baseline grid support.
6
+ *
7
+ * Provides full control over typography properties including family, size,
8
+ * lineHeight, baseline alignment, weight, and tracking.
9
+ *
10
+ * **Display behavior:** Elements render as `display: block` by default for
11
+ * text-box trimming and baseline grid alignment. Override with CSS if needed.
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * import { TypographyNext as Typography } from '@equinor/eds-core-react'
16
+ *
17
+ * <Typography
18
+ * family="ui"
19
+ * size="md"
20
+ * lineHeight="default"
21
+ * baseline="grid"
22
+ * weight="normal"
23
+ * tracking="normal"
24
+ * >
25
+ * Text content (renders as block-level by default)
26
+ * </Typography>
27
+ *
28
+ * <Typography
29
+ * as="h1"
30
+ * family="header"
31
+ * size="3xl"
32
+ * lineHeight="squished"
33
+ * baseline="grid"
34
+ * weight="bolder"
35
+ * tracking="tight"
36
+ * >
37
+ * Page heading
38
+ * </Typography>
39
+ * ```
40
+ */
41
+ const TypographyNext = /*#__PURE__*/forwardRef(({
42
+ as = 'span',
43
+ family,
44
+ size,
45
+ baseline,
46
+ lineHeight,
47
+ weight,
48
+ tracking,
49
+ debug,
50
+ ...rest
51
+ }, ref) => {
52
+ const Component = as;
53
+ return /*#__PURE__*/jsx(Component, {
54
+ ref: ref,
55
+ "data-font-family": family,
56
+ "data-font-size": size,
57
+ "data-baseline": baseline || undefined,
58
+ "data-line-height": lineHeight || undefined,
59
+ "data-font-weight": weight || undefined,
60
+ "data-tracking": tracking || undefined,
61
+ "data-debug": debug ? '' : undefined,
62
+ ...rest
63
+ });
64
+ });
65
+ TypographyNext.displayName = 'TypographyNext';
66
+
67
+ export { TypographyNext };
@@ -32,18 +32,16 @@ const Button = /*#__PURE__*/forwardRef(function Button({
32
32
  "data-variant": variant,
33
33
  "data-selectable-space": selectableSpace,
34
34
  "data-space-proportions": "squished",
35
- "data-font-family": "ui",
36
- "data-font-size": typographySize,
37
- "data-line-height": "squished",
38
35
  "data-color-appearance": disabled ? 'neutral' : tone,
39
36
  "data-icon-only": icon || undefined,
40
37
  "data-round": icon && round ? true : undefined,
41
38
  ...rest,
42
- children: /*#__PURE__*/jsx(TypographyNext, {
39
+ children: icon ? children : /*#__PURE__*/jsx(TypographyNext, {
40
+ as: "span",
43
41
  family: "ui",
44
42
  size: typographySize,
45
- baseline: "center",
46
43
  lineHeight: "squished",
44
+ baseline: "center",
47
45
  children: children
48
46
  })
49
47
  });
@@ -106,18 +106,16 @@ const Button = /*#__PURE__*/react.forwardRef(function Button({
106
106
  "data-variant": variant,
107
107
  "data-selectable-space": selectableSpace,
108
108
  "data-space-proportions": "squished",
109
- "data-font-family": "ui",
110
- "data-font-size": typographySize,
111
- "data-line-height": "squished",
112
109
  "data-color-appearance": disabled ? 'neutral' : tone,
113
110
  "data-icon-only": icon || undefined,
114
111
  "data-round": icon && round ? true : undefined,
115
112
  ...rest,
116
- children: /*#__PURE__*/jsxRuntime.jsx(TypographyNext, {
113
+ children: icon ? children : /*#__PURE__*/jsxRuntime.jsx(TypographyNext, {
114
+ as: "span",
117
115
  family: "ui",
118
116
  size: typographySize,
119
- baseline: "center",
120
117
  lineHeight: "squished",
118
+ baseline: "center",
121
119
  children: children
122
120
  })
123
121
  });
@@ -11,7 +11,7 @@ export declare const StyledButton: import("styled-components/dist/types").IStyle
11
11
  disabled?: boolean;
12
12
  type?: string;
13
13
  fullWidth?: boolean;
14
- } & import("react").ButtonHTMLAttributes<HTMLButtonElement> & Omit<any, "variant" | "href" | keyof import("react").ButtonHTMLAttributes<HTMLButtonElement> | "fullWidth">, never>> & string & Omit<import("@equinor/eds-utils").OverridableComponent<import("../Button").ButtonProps, HTMLButtonElement> & {
14
+ } & import("react").ButtonHTMLAttributes<HTMLButtonElement> & Omit<any, keyof import("react").ButtonHTMLAttributes<HTMLButtonElement> | "variant" | "href" | "fullWidth">, never>> & string & Omit<import("@equinor/eds-utils").OverridableComponent<import("../Button").ButtonProps, HTMLButtonElement> & {
15
15
  Group: typeof import("../Button").ButtonGroup;
16
16
  Toggle: typeof import("../Button").ToggleButton;
17
17
  }, keyof import("react").Component<any, {}, any>>;
@@ -94,7 +94,7 @@ export declare const AutocompleteContext: import("react").Context<{
94
94
  optionLabel?: (option: unknown) => string;
95
95
  } & {
96
96
  ref?: React.Ref<HTMLInputElement>;
97
- }, "meta" | "label" | "disabled" | "style" | "ref" | "className" | "multiple" | "variant" | "placeholder" | "readOnly" | "options" | "helperText" | "helperIcon" | "loading" | "optionDisabled" | "totalOptions" | "initialSelectedOptions" | "noOptionsText" | "hideClearButton" | "selectedOptions" | "selectionDisplay" | "onOptionsChange" | "onInputChange" | "onAddNewOption" | "allowSelectAll" | "optionComponent" | "optionsFilter" | "autoWidth" | "clearSearchOnChange" | "multiline" | "dropdownHeight" | "itemToKey" | "itemCompare" | "onClear" | "optionLabel">;
97
+ }, "disabled" | "className" | "style" | "meta" | "label" | "ref" | "multiple" | "variant" | "placeholder" | "readOnly" | "options" | "helperText" | "helperIcon" | "loading" | "optionDisabled" | "totalOptions" | "initialSelectedOptions" | "noOptionsText" | "hideClearButton" | "selectedOptions" | "selectionDisplay" | "onOptionsChange" | "onInputChange" | "onAddNewOption" | "allowSelectAll" | "optionComponent" | "optionsFilter" | "autoWidth" | "clearSearchOnChange" | "multiline" | "dropdownHeight" | "itemToKey" | "itemCompare" | "onClear" | "optionLabel">;
98
98
  highlightedIndex: number;
99
99
  selectedItem: unknown;
100
100
  isOpen: boolean;
@@ -208,7 +208,7 @@ export declare const useAutocompleteContext: () => {
208
208
  optionLabel?: (option: unknown) => string;
209
209
  } & {
210
210
  ref?: React.Ref<HTMLInputElement>;
211
- }, "meta" | "label" | "disabled" | "style" | "ref" | "className" | "multiple" | "variant" | "placeholder" | "readOnly" | "options" | "helperText" | "helperIcon" | "loading" | "optionDisabled" | "totalOptions" | "initialSelectedOptions" | "noOptionsText" | "hideClearButton" | "selectedOptions" | "selectionDisplay" | "onOptionsChange" | "onInputChange" | "onAddNewOption" | "allowSelectAll" | "optionComponent" | "optionsFilter" | "autoWidth" | "clearSearchOnChange" | "multiline" | "dropdownHeight" | "itemToKey" | "itemCompare" | "onClear" | "optionLabel">;
211
+ }, "disabled" | "className" | "style" | "meta" | "label" | "ref" | "multiple" | "variant" | "placeholder" | "readOnly" | "options" | "helperText" | "helperIcon" | "loading" | "optionDisabled" | "totalOptions" | "initialSelectedOptions" | "noOptionsText" | "hideClearButton" | "selectedOptions" | "selectionDisplay" | "onOptionsChange" | "onInputChange" | "onAddNewOption" | "allowSelectAll" | "optionComponent" | "optionsFilter" | "autoWidth" | "clearSearchOnChange" | "multiline" | "dropdownHeight" | "itemToKey" | "itemCompare" | "onClear" | "optionLabel">;
212
212
  highlightedIndex: number;
213
213
  selectedItem: unknown;
214
214
  isOpen: boolean;
@@ -1,3 +1,4 @@
1
+ import type { DOMAttributes } from 'react';
1
2
  import { AutocompleteProps } from './Autocomplete';
2
3
  import { AutocompleteToken } from './Autocomplete.tokens';
3
4
  export declare const useAutocomplete: <T>({ options, totalOptions, label, meta, className, style, disabled, readOnly, loading, hideClearButton, onOptionsChange, onAddNewOption, onInputChange, selectedOptions: _selectedOptions, selectionDisplay, multiple, itemToKey: _itemToKey, itemCompare: _itemCompare, allowSelectAll, initialSelectedOptions: _initialSelectedOptions, optionDisabled, optionsFilter, autoWidth, placeholder, optionLabel, clearSearchOnChange, multiline, dropdownHeight, optionComponent, helperText, helperIcon, noOptionsText, variant, onClear, ref, ...other }: AutocompleteProps<T> & {
@@ -26,7 +27,7 @@ export declare const useAutocomplete: <T>({ options, totalOptions, label, meta,
26
27
  disabled: boolean;
27
28
  ref: import("react").RefObject<HTMLInputElement>;
28
29
  }>, "preventKeyAction">>;
29
- consolidatedEvents: Partial<import("react").DOMAttributes<unknown>>;
30
+ consolidatedEvents: Partial<DOMAttributes<unknown>>;
30
31
  multiple: boolean;
31
32
  disabled: boolean;
32
33
  optionDisabled: (option: T) => boolean;
@@ -102,7 +103,7 @@ export declare const useAutocomplete: <T>({ options, totalOptions, label, meta,
102
103
  optionLabel?: (option: T) => string;
103
104
  }) & {
104
105
  ref?: React.Ref<HTMLInputElement>;
105
- }, "meta" | "label" | "disabled" | "style" | "ref" | "className" | "multiple" | "variant" | "placeholder" | "readOnly" | "options" | "helperText" | "helperIcon" | "loading" | "optionDisabled" | "totalOptions" | "initialSelectedOptions" | "noOptionsText" | "hideClearButton" | "selectedOptions" | "selectionDisplay" | "onOptionsChange" | "onInputChange" | "onAddNewOption" | "allowSelectAll" | "optionComponent" | "optionsFilter" | "autoWidth" | "clearSearchOnChange" | "multiline" | "dropdownHeight" | "itemToKey" | "itemCompare" | "onClear" | "optionLabel">;
106
+ }, "disabled" | "className" | "style" | "meta" | "label" | "ref" | "multiple" | "variant" | "placeholder" | "readOnly" | "options" | "helperText" | "helperIcon" | "loading" | "optionDisabled" | "totalOptions" | "initialSelectedOptions" | "noOptionsText" | "hideClearButton" | "selectedOptions" | "selectionDisplay" | "onOptionsChange" | "onInputChange" | "onAddNewOption" | "allowSelectAll" | "optionComponent" | "optionsFilter" | "autoWidth" | "clearSearchOnChange" | "multiline" | "dropdownHeight" | "itemToKey" | "itemCompare" | "onClear" | "optionLabel">;
106
107
  highlightedIndex: number;
107
108
  selectedItem: T;
108
109
  isOpen: boolean;
@@ -2,7 +2,7 @@
2
2
  * DateRangePicker component encapsulates the logic for selecting a range of dates
3
3
  * Either by accessible input fields or by a calendar.
4
4
  */
5
- export declare const DateRangePicker: import("react").ForwardRefExoticComponent<Omit<import("./props").DatePickerProps, "defaultValue" | "onChange" | "multiple" | "value" | "showTimeInput" | "stateRef"> & Partial<{
5
+ export declare const DateRangePicker: import("react").ForwardRefExoticComponent<Omit<import("./props").DatePickerProps, "value" | "defaultValue" | "onChange" | "multiple" | "showTimeInput" | "stateRef"> & Partial<{
6
6
  onChange: (range: {
7
7
  from: Date | null;
8
8
  to: Date | null;
@@ -7,4 +7,4 @@ export type SideBarButtonProps = {
7
7
  export declare const SideBarButton: import("react").ForwardRefExoticComponent<{
8
8
  label: string;
9
9
  icon: IconData;
10
- } & Omit<ButtonProps, "variant" | "href" | "type" | "fullWidth"> & import("react").RefAttributes<HTMLButtonElement>>;
10
+ } & Omit<ButtonProps, "type" | "variant" | "href" | "fullWidth"> & import("react").RefAttributes<HTMLButtonElement>>;
@@ -6,3 +6,4 @@ export type { TypographyNextProps } from './Typography.new.types';
6
6
  export type { HeadingProps } from './Heading.types';
7
7
  export type { ParagraphProps } from './Paragraph.types';
8
8
  export type { FontFamily, FontSize, LineHeight, BaselineAlignment, FontWeight, Tracking, } from './types';
9
+ export type { TypographyVariants, ColorVariants, TypographyGroups, } from './Typography.tokens';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@equinor/eds-core-react",
3
- "version": "2.3.1",
3
+ "version": "2.3.2-beta.0",
4
4
  "description": "The React implementation of the Equinor Design System",
5
5
  "sideEffects": [
6
6
  "**/*.css"
@@ -31,7 +31,14 @@
31
31
  "types": "./dist/types/index.d.ts",
32
32
  "import": "./dist/esm/index.js",
33
33
  "require": "./dist/eds-core-react.cjs"
34
- }
34
+ },
35
+ "./next": {
36
+ "types": "./dist/types/index.next.d.ts",
37
+ "import": "./dist/esm-next/index.next.js",
38
+ "require": "./dist/index.next.cjs"
39
+ },
40
+ "./next/index.css": "./build/index.css",
41
+ "./next/index.min.css": "./build/index.min.css"
35
42
  },
36
43
  "keywords": [
37
44
  "eds",
@@ -40,27 +47,27 @@
40
47
  "react"
41
48
  ],
42
49
  "devDependencies": {
43
- "@figma/code-connect": "^1.3.12",
44
- "@playwright/test": "^1.57.0",
50
+ "@figma/code-connect": "^1.3.13",
51
+ "@playwright/test": "^1.58.2",
45
52
  "@rollup/plugin-babel": "^6.1.0",
46
53
  "@rollup/plugin-commonjs": "^28.0.8",
47
54
  "@rollup/plugin-node-resolve": "^16.0.3",
48
- "@storybook/addon-a11y": "^9.1.13",
49
- "@storybook/addon-docs": "^9.1.13",
50
- "@storybook/addon-links": "^9.1.13",
51
- "@storybook/react-vite": "^9.1.13",
55
+ "@storybook/addon-a11y": "^10.2.10",
56
+ "@storybook/addon-docs": "^10.2.10",
57
+ "@storybook/addon-links": "^10.2.10",
58
+ "@storybook/react-vite": "^10.2.10",
52
59
  "@testing-library/dom": "^10.4.1",
53
60
  "@testing-library/jest-dom": "^6.9.1",
54
- "@testing-library/react": "16.3.0",
61
+ "@testing-library/react": "16.3.2",
55
62
  "@testing-library/user-event": "14.6.1",
56
63
  "@types/jest": "^30.0.0",
57
64
  "@types/mdx": "^2.0.13",
58
- "@types/node": "^24.9.1",
65
+ "@types/node": "^25.2.3",
59
66
  "@types/ramda": "^0.31.1",
60
- "@types/react": "^19.2.2",
61
- "@types/react-dom": "^19.2.2",
67
+ "@types/react": "^19.2.14",
68
+ "@types/react-dom": "^19.2.3",
62
69
  "babel-plugin-styled-components": "^2.1.4",
63
- "eslint-plugin-storybook": "9.1.13",
70
+ "eslint-plugin-storybook": "10.2.8",
64
71
  "jest": "^30.2.0",
65
72
  "jest-environment-jsdom": "^30.2.0",
66
73
  "jest-styled-components": "^7.2.0",
@@ -68,16 +75,16 @@
68
75
  "postcss": "^8.5.6",
69
76
  "postcss-import": "^16.1.1",
70
77
  "ramda": "^0.32.0",
71
- "react": "^19.2.0",
72
- "react-dom": "^19.2.0",
73
- "react-hook-form": "^7.65.0",
74
- "react-router-dom": "^7.9.4",
75
- "rollup": "^4.52.5",
76
- "rollup-plugin-delete": "^3.0.1",
78
+ "react": "^19.2.4",
79
+ "react-dom": "^19.2.4",
80
+ "react-hook-form": "^7.71.1",
81
+ "react-router-dom": "^7.13.0",
82
+ "rollup": "^4.57.1",
83
+ "rollup-plugin-delete": "^3.0.2",
77
84
  "rollup-plugin-postcss": "^4.0.2",
78
85
  "rollup-preserve-directives": "^1.1.3",
79
- "storybook": "^9.1.13",
80
- "styled-components": "6.1.19",
86
+ "storybook": "^10.2.8",
87
+ "styled-components": "6.3.9",
81
88
  "tsc-watch": "^7.2.0",
82
89
  "typescript": "^5.9.3"
83
90
  },
@@ -87,19 +94,19 @@
87
94
  "styled-components": "^6"
88
95
  },
89
96
  "dependencies": {
90
- "@babel/runtime": "^7.28.4",
91
- "@floating-ui/react": "^0.27.16",
92
- "@internationalized/date": "^3.10.0",
93
- "@react-aria/utils": "^3.31.0",
94
- "@react-stately/calendar": "^3.9.0",
95
- "@react-stately/datepicker": "^3.15.2",
96
- "@react-types/shared": "^3.32.1",
97
- "@tanstack/react-virtual": "3.13.12",
98
- "downshift": "9.0.10",
99
- "react-aria": "^3.44.0",
100
- "@equinor/eds-icons": "^1.2.0",
101
- "@equinor/eds-utils": "^2.0.0",
102
- "@equinor/eds-tokens": "^2.1.1"
97
+ "@babel/runtime": "^7.28.6",
98
+ "@floating-ui/react": "^0.27.17",
99
+ "@internationalized/date": "^3.11.0",
100
+ "@react-aria/utils": "^3.33.0",
101
+ "@react-stately/calendar": "^3.9.2",
102
+ "@react-stately/datepicker": "^3.16.0",
103
+ "@react-types/shared": "^3.33.0",
104
+ "@tanstack/react-virtual": "3.13.18",
105
+ "downshift": "9.3.0",
106
+ "react-aria": "^3.46.0",
107
+ "@equinor/eds-icons": "^1.2.2",
108
+ "@equinor/eds-tokens": "^2.2.0",
109
+ "@equinor/eds-utils": "^2.0.0"
103
110
  },
104
111
  "scripts": {
105
112
  "build": "rollup -c && tsc -p tsconfig.build.json",
@@ -1,9 +1,9 @@
1
1
  export { Button } from './components/next/Button/Button.js';
2
- export { Icon } from './components/next/Icon/Icon.js';
3
- export { Field } from './components/next/Field/Field.js';
4
- export { useFieldIds } from './components/next/Field/useFieldIds.js';
5
2
  export { Checkbox } from './components/next/Checkbox/Checkbox.js';
3
+ export { Field } from './components/next/Field/Field.js';
4
+ export { Icon } from './components/next/Icon/Icon.js';
5
+ export { Input } from './components/next/Input/Input.js';
6
6
  export { Radio } from './components/next/Radio/Radio.js';
7
7
  export { Switch } from './components/next/Switch/Switch.js';
8
- export { Input } from './components/next/Input/Input.js';
9
8
  export { TextField } from './components/next/TextField/TextField.js';
9
+ export { useFieldIds } from './components/next/Field/useFieldIds.js';