@navikt/ds-react 8.1.0 → 8.2.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 (135) hide show
  1. package/cjs/data/action-bar/root/DataActionBarRoot.d.ts +27 -0
  2. package/cjs/data/action-bar/root/DataActionBarRoot.js +49 -0
  3. package/cjs/data/action-bar/root/DataActionBarRoot.js.map +1 -0
  4. package/cjs/data/filter/index.d.ts +2 -0
  5. package/cjs/data/filter/index.js +8 -0
  6. package/cjs/data/filter/index.js.map +1 -0
  7. package/cjs/data/filter/item/DataFilterItem.d.ts +5 -0
  8. package/cjs/data/filter/item/DataFilterItem.js +24 -0
  9. package/cjs/data/filter/item/DataFilterItem.js.map +1 -0
  10. package/cjs/data/filter/root/DataFilterRoot.d.ts +23 -0
  11. package/cjs/data/filter/root/DataFilterRoot.js +28 -0
  12. package/cjs/data/filter/root/DataFilterRoot.js.map +1 -0
  13. package/cjs/data/stories/dummy-data.d.ts +17 -0
  14. package/cjs/data/stories/dummy-data.js +1526 -0
  15. package/cjs/data/stories/dummy-data.js.map +1 -0
  16. package/cjs/data/table/caption/DataTableCaption.d.ts +5 -0
  17. package/cjs/data/table/caption/DataTableCaption.js +55 -0
  18. package/cjs/data/table/caption/DataTableCaption.js.map +1 -0
  19. package/cjs/data/table/index.d.ts +2 -0
  20. package/cjs/data/table/index.js +16 -0
  21. package/cjs/data/table/index.js.map +1 -0
  22. package/cjs/data/table/root/DataTableRoot.d.ts +94 -0
  23. package/cjs/data/table/root/DataTableRoot.js +74 -0
  24. package/cjs/data/table/root/DataTableRoot.js.map +1 -0
  25. package/cjs/data/table/tbody/DataTableTbody.d.ts +5 -0
  26. package/cjs/data/table/tbody/DataTableTbody.js +55 -0
  27. package/cjs/data/table/tbody/DataTableTbody.js.map +1 -0
  28. package/cjs/data/table/td/DataTableTd.d.ts +5 -0
  29. package/cjs/data/table/td/DataTableTd.js +55 -0
  30. package/cjs/data/table/td/DataTableTd.js.map +1 -0
  31. package/cjs/data/table/th/DataTableTh.d.ts +5 -0
  32. package/cjs/data/table/th/DataTableTh.js +55 -0
  33. package/cjs/data/table/th/DataTableTh.js.map +1 -0
  34. package/cjs/data/table/thead/DataTableThead.d.ts +5 -0
  35. package/cjs/data/table/thead/DataTableThead.js +55 -0
  36. package/cjs/data/table/thead/DataTableThead.js.map +1 -0
  37. package/cjs/data/table/tr/DataTableTr.d.ts +5 -0
  38. package/cjs/data/table/tr/DataTableTr.js +55 -0
  39. package/cjs/data/table/tr/DataTableTr.js.map +1 -0
  40. package/cjs/data/toolbar/index.d.ts +2 -0
  41. package/cjs/data/toolbar/index.js +9 -0
  42. package/cjs/data/toolbar/index.js.map +1 -0
  43. package/cjs/data/toolbar/root/DataToolbarRoot.d.ts +32 -0
  44. package/cjs/data/toolbar/root/DataToolbarRoot.js +32 -0
  45. package/cjs/data/toolbar/root/DataToolbarRoot.js.map +1 -0
  46. package/cjs/data/toolbar/search-field/DataToolbarSearchField.d.ts +7 -0
  47. package/cjs/data/toolbar/search-field/DataToolbarSearchField.js +26 -0
  48. package/cjs/data/toolbar/search-field/DataToolbarSearchField.js.map +1 -0
  49. package/cjs/data/toolbar/toggle-button/DataToolbarToggleButton.d.ts +36 -0
  50. package/cjs/data/toolbar/toggle-button/DataToolbarToggleButton.js +32 -0
  51. package/cjs/data/toolbar/toggle-button/DataToolbarToggleButton.js.map +1 -0
  52. package/cjs/internal-header/InternalHeader.d.ts +5 -6
  53. package/cjs/internal-header/InternalHeader.js +5 -6
  54. package/cjs/internal-header/InternalHeader.js.map +1 -1
  55. package/cjs/overlays/action-menu/ActionMenu.d.ts +11 -1
  56. package/cjs/overlays/action-menu/ActionMenu.js +8 -9
  57. package/cjs/overlays/action-menu/ActionMenu.js.map +1 -1
  58. package/esm/data/action-bar/root/DataActionBarRoot.d.ts +27 -0
  59. package/esm/data/action-bar/root/DataActionBarRoot.js +43 -0
  60. package/esm/data/action-bar/root/DataActionBarRoot.js.map +1 -0
  61. package/esm/data/filter/index.d.ts +2 -0
  62. package/esm/data/filter/index.js +3 -0
  63. package/esm/data/filter/index.js.map +1 -0
  64. package/esm/data/filter/item/DataFilterItem.d.ts +5 -0
  65. package/esm/data/filter/item/DataFilterItem.js +18 -0
  66. package/esm/data/filter/item/DataFilterItem.js.map +1 -0
  67. package/esm/data/filter/root/DataFilterRoot.d.ts +23 -0
  68. package/esm/data/filter/root/DataFilterRoot.js +21 -0
  69. package/esm/data/filter/root/DataFilterRoot.js.map +1 -0
  70. package/esm/data/stories/dummy-data.d.ts +17 -0
  71. package/esm/data/stories/dummy-data.js +1520 -0
  72. package/esm/data/stories/dummy-data.js.map +1 -0
  73. package/esm/data/table/caption/DataTableCaption.d.ts +5 -0
  74. package/esm/data/table/caption/DataTableCaption.js +19 -0
  75. package/esm/data/table/caption/DataTableCaption.js.map +1 -0
  76. package/esm/data/table/index.d.ts +2 -0
  77. package/esm/data/table/index.js +3 -0
  78. package/esm/data/table/index.js.map +1 -0
  79. package/esm/data/table/root/DataTableRoot.d.ts +94 -0
  80. package/esm/data/table/root/DataTableRoot.js +32 -0
  81. package/esm/data/table/root/DataTableRoot.js.map +1 -0
  82. package/esm/data/table/tbody/DataTableTbody.d.ts +5 -0
  83. package/esm/data/table/tbody/DataTableTbody.js +19 -0
  84. package/esm/data/table/tbody/DataTableTbody.js.map +1 -0
  85. package/esm/data/table/td/DataTableTd.d.ts +5 -0
  86. package/esm/data/table/td/DataTableTd.js +19 -0
  87. package/esm/data/table/td/DataTableTd.js.map +1 -0
  88. package/esm/data/table/th/DataTableTh.d.ts +5 -0
  89. package/esm/data/table/th/DataTableTh.js +19 -0
  90. package/esm/data/table/th/DataTableTh.js.map +1 -0
  91. package/esm/data/table/thead/DataTableThead.d.ts +5 -0
  92. package/esm/data/table/thead/DataTableThead.js +19 -0
  93. package/esm/data/table/thead/DataTableThead.js.map +1 -0
  94. package/esm/data/table/tr/DataTableTr.d.ts +5 -0
  95. package/esm/data/table/tr/DataTableTr.js +19 -0
  96. package/esm/data/table/tr/DataTableTr.js.map +1 -0
  97. package/esm/data/toolbar/index.d.ts +2 -0
  98. package/esm/data/toolbar/index.js +3 -0
  99. package/esm/data/toolbar/index.js.map +1 -0
  100. package/esm/data/toolbar/root/DataToolbarRoot.d.ts +32 -0
  101. package/esm/data/toolbar/root/DataToolbarRoot.js +24 -0
  102. package/esm/data/toolbar/root/DataToolbarRoot.js.map +1 -0
  103. package/esm/data/toolbar/search-field/DataToolbarSearchField.d.ts +7 -0
  104. package/esm/data/toolbar/search-field/DataToolbarSearchField.js +20 -0
  105. package/esm/data/toolbar/search-field/DataToolbarSearchField.js.map +1 -0
  106. package/esm/data/toolbar/toggle-button/DataToolbarToggleButton.d.ts +36 -0
  107. package/esm/data/toolbar/toggle-button/DataToolbarToggleButton.js +26 -0
  108. package/esm/data/toolbar/toggle-button/DataToolbarToggleButton.js.map +1 -0
  109. package/esm/internal-header/InternalHeader.d.ts +5 -6
  110. package/esm/internal-header/InternalHeader.js +5 -6
  111. package/esm/internal-header/InternalHeader.js.map +1 -1
  112. package/esm/overlays/action-menu/ActionMenu.d.ts +11 -1
  113. package/esm/overlays/action-menu/ActionMenu.js +8 -9
  114. package/esm/overlays/action-menu/ActionMenu.js.map +1 -1
  115. package/package.json +7 -7
  116. package/src/data/action-bar/root/DataActionBarRoot.tsx +59 -0
  117. package/src/data/filter/index.ts +6 -0
  118. package/src/data/filter/item/DataFilterItem.tsx +12 -0
  119. package/src/data/filter/root/DataFilterRoot.tsx +42 -0
  120. package/src/data/stories/dummy-data.tsx +1596 -0
  121. package/src/data/table/Readme.md +11 -0
  122. package/src/data/table/caption/DataTableCaption.tsx +20 -0
  123. package/src/data/table/index.tsx +19 -0
  124. package/src/data/table/root/DataTableRoot.tsx +143 -0
  125. package/src/data/table/tbody/DataTableTbody.tsx +19 -0
  126. package/src/data/table/td/DataTableTd.tsx +19 -0
  127. package/src/data/table/th/DataTableTh.tsx +19 -0
  128. package/src/data/table/thead/DataTableThead.tsx +19 -0
  129. package/src/data/table/tr/DataTableTr.tsx +19 -0
  130. package/src/data/toolbar/index.ts +11 -0
  131. package/src/data/toolbar/root/DataToolbarRoot.tsx +65 -0
  132. package/src/data/toolbar/search-field/DataToolbarSearchField.tsx +29 -0
  133. package/src/data/toolbar/toggle-button/DataToolbarToggleButton.tsx +60 -0
  134. package/src/internal-header/InternalHeader.tsx +5 -6
  135. package/src/overlays/action-menu/ActionMenu.tsx +58 -34
@@ -0,0 +1,27 @@
1
+ import React from "react";
2
+ interface DataActionBarProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ children: React.ReactNode;
4
+ /**
5
+ * Number of selected rows
6
+ */
7
+ numOfSelectedRows: number;
8
+ /**
9
+ * Callback for the clear button
10
+ */
11
+ onClear: () => void;
12
+ }
13
+ /**
14
+ * TODO
15
+ *
16
+ * @see 🏷️ {@link DataActionBarProps}
17
+ * @example
18
+ * ```tsx
19
+ * <DataActionBar numOfSelectedRows={selectedRows.length} onClear={handleClear}>
20
+ * TODO
21
+ * </DataActionBar>
22
+ * ```
23
+ */
24
+ declare const DataActionBar: React.ForwardRefExoticComponent<DataActionBarProps & React.RefAttributes<HTMLDivElement>>;
25
+ export default DataActionBar;
26
+ export { DataActionBar };
27
+ export type { DataActionBarProps };
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.DataActionBar = void 0;
18
+ const react_1 = __importDefault(require("react"));
19
+ const button_1 = require("../../../button");
20
+ const box_1 = require("../../../layout/box");
21
+ const stack_1 = require("../../../layout/stack");
22
+ const typography_1 = require("../../../typography");
23
+ /**
24
+ * TODO
25
+ *
26
+ * @see 🏷️ {@link DataActionBarProps}
27
+ * @example
28
+ * ```tsx
29
+ * <DataActionBar numOfSelectedRows={selectedRows.length} onClear={handleClear}>
30
+ * TODO
31
+ * </DataActionBar>
32
+ * ```
33
+ */
34
+ const DataActionBar = react_1.default.forwardRef((_a, forwardRef) => {
35
+ var { children, numOfSelectedRows, onClear } = _a, rest = __rest(_a, ["children", "numOfSelectedRows", "onClear"]);
36
+ return (react_1.default.createElement(box_1.Box, { asChild: true, borderWidth: "1", borderRadius: "16", borderColor: "neutral", background: "raised", padding: "space-16", "data-color": "neutral" },
37
+ react_1.default.createElement(stack_1.HStack, Object.assign({ gap: "space-16", align: "center", ref: forwardRef }, rest),
38
+ react_1.default.createElement(typography_1.BodyShort, { textColor: "subtle" },
39
+ numOfSelectedRows,
40
+ " rad",
41
+ numOfSelectedRows > 1 ? "er" : "",
42
+ " valgt"),
43
+ react_1.default.createElement(button_1.Button, { variant: "secondary", size: "small", onClick: onClear }, "Nullstill valg"),
44
+ react_1.default.createElement(stack_1.Spacer, null),
45
+ children)));
46
+ });
47
+ exports.DataActionBar = DataActionBar;
48
+ exports.default = DataActionBar;
49
+ //# sourceMappingURL=DataActionBarRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataActionBarRoot.js","sourceRoot":"","sources":["../../../../src/data/action-bar/root/DataActionBarRoot.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,4CAAyC;AACzC,6CAA0C;AAC1C,iDAAuD;AACvD,oDAAgD;AAchD;;;;;;;;;;GAUG;AACH,MAAM,aAAa,GAAG,eAAK,CAAC,UAAU,CACpC,CAAC,EAAiD,EAAE,UAAU,EAAE,EAAE;QAAjE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,OAAW,EAAN,IAAI,cAA/C,4CAAiD,CAAF;IAC9C,OAAO,CACL,8BAAC,SAAG,IACF,OAAO,QACP,WAAW,EAAC,GAAG,EACf,YAAY,EAAC,IAAI,EACjB,WAAW,EAAC,SAAS,EACrB,UAAU,EAAC,QAAQ,EACnB,OAAO,EAAC,UAAU,gBACP,SAAS;QAEpB,8BAAC,cAAM,kBAAC,GAAG,EAAC,UAAU,EAAC,KAAK,EAAC,QAAQ,EAAC,GAAG,EAAE,UAAU,IAAM,IAAI;YAC7D,8BAAC,sBAAS,IAAC,SAAS,EAAC,QAAQ;gBAC1B,iBAAiB;;gBAAM,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;yBAC/C;YACZ,8BAAC,eAAM,IAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAE,OAAO,qBAEhD;YACT,8BAAC,cAAM,OAAG;YACT,QAAQ,CACF,CACL,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAGO,sCAAa;AADtB,kBAAe,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { DataFilter, DataFilterItem } from "./root/DataFilterRoot";
2
+ export type { DataFilterProps, DataFilterItemProps, } from "./root/DataFilterRoot";
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ "use client";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DataFilterItem = exports.DataFilter = void 0;
5
+ var DataFilterRoot_1 = require("./root/DataFilterRoot");
6
+ Object.defineProperty(exports, "DataFilter", { enumerable: true, get: function () { return DataFilterRoot_1.DataFilter; } });
7
+ Object.defineProperty(exports, "DataFilterItem", { enumerable: true, get: function () { return DataFilterRoot_1.DataFilterItem; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/data/filter/index.ts"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;AACb,wDAAmE;AAA1D,4GAAA,UAAU,OAAA;AAAE,gHAAA,cAAc,OAAA"}
@@ -0,0 +1,5 @@
1
+ import React from "react";
2
+ type DataFilterItemProps = React.HTMLAttributes<HTMLDivElement>;
3
+ declare const DataFilterItem: React.ForwardRefExoticComponent<DataFilterItemProps & React.RefAttributes<HTMLDivElement>>;
4
+ export { DataFilterItem };
5
+ export type { DataFilterItemProps };
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.DataFilterItem = void 0;
18
+ const react_1 = __importDefault(require("react"));
19
+ const DataFilterItem = react_1.default.forwardRef((_a, ref) => {
20
+ var { className } = _a, props = __rest(_a, ["className"]);
21
+ return react_1.default.createElement("div", Object.assign({ className: className, ref: ref }, props));
22
+ });
23
+ exports.DataFilterItem = DataFilterItem;
24
+ //# sourceMappingURL=DataFilterItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataFilterItem.js","sourceRoot":"","sources":["../../../../src/data/filter/item/DataFilterItem.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAI1B,MAAM,cAAc,GAAG,eAAK,CAAC,UAAU,CACrC,CAAC,EAAuB,EAAE,GAAG,EAAE,EAAE;QAAhC,EAAE,SAAS,OAAY,EAAP,KAAK,cAArB,aAAuB,CAAF;IACpB,OAAO,qDAAK,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,IAAM,KAAK,EAAI,CAAC;AAC5D,CAAC,CACF,CAAC;AAEO,wCAAc"}
@@ -0,0 +1,23 @@
1
+ import React from "react";
2
+ import { DataFilterItem, type DataFilterItemProps } from "../item/DataFilterItem";
3
+ interface DataFilterProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ children: React.ReactNode;
5
+ }
6
+ interface DataFilterRootComponent extends React.ForwardRefExoticComponent<DataFilterProps & React.RefAttributes<HTMLDivElement>> {
7
+ /**
8
+ * @see 🏷️ {@link DataFilterItemProps}
9
+ * @example
10
+ * ```tsx
11
+ * <DataFilter>
12
+ * <DataFilter.Item />
13
+ * <DataFilter.Item />
14
+ * <DataFilter.Item />
15
+ * </DataFilter>
16
+ * ```
17
+ */
18
+ Item: typeof DataFilterItem;
19
+ }
20
+ declare const DataFilter: DataFilterRootComponent;
21
+ export default DataFilter;
22
+ export { DataFilter, DataFilterItem };
23
+ export type { DataFilterProps, DataFilterItemProps };
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.DataFilterItem = exports.DataFilter = void 0;
18
+ const react_1 = __importDefault(require("react"));
19
+ const DataFilterItem_1 = require("../item/DataFilterItem");
20
+ Object.defineProperty(exports, "DataFilterItem", { enumerable: true, get: function () { return DataFilterItem_1.DataFilterItem; } });
21
+ const DataFilter = react_1.default.forwardRef((_a, forwardRef) => {
22
+ var { children } = _a, rest = __rest(_a, ["children"]);
23
+ return (react_1.default.createElement("div", Object.assign({ ref: forwardRef }, rest), children));
24
+ });
25
+ exports.DataFilter = DataFilter;
26
+ DataFilter.Item = DataFilterItem_1.DataFilterItem;
27
+ exports.default = DataFilter;
28
+ //# sourceMappingURL=DataFilterRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataFilterRoot.js","sourceRoot":"","sources":["../../../../src/data/filter/root/DataFilterRoot.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,2DAGgC;AAoCX,+FAtCnB,+BAAc,OAsCmB;AAbnC,MAAM,UAAU,GAAG,eAAK,CAAC,UAAU,CACjC,CAAC,EAAqB,EAAE,UAAU,EAAE,EAAE;QAArC,EAAE,QAAQ,OAAW,EAAN,IAAI,cAAnB,YAAqB,CAAF;IAClB,OAAO,CACL,qDAAK,GAAG,EAAE,UAAU,IAAM,IAAI,GAC3B,QAAQ,CACL,CACP,CAAC;AACJ,CAAC,CACyB,CAAC;AAKpB,gCAAU;AAHnB,UAAU,CAAC,IAAI,GAAG,+BAAc,CAAC;AAEjC,kBAAe,UAAU,CAAC"}
@@ -0,0 +1,17 @@
1
+ interface PersonInfo {
2
+ name: string;
3
+ nationalId: string;
4
+ dayJob: string;
5
+ supervisor: string;
6
+ dateReceived: string;
7
+ message: string;
8
+ age: number;
9
+ forceSensitive: boolean;
10
+ homeSystem: string;
11
+ skills: string[];
12
+ }
13
+ export declare const columns: import("@tanstack/react-table").AccessorKeyColumnDef<PersonInfo, string[]>[];
14
+ export declare const homeSystemOptions: string[];
15
+ export declare const skillOptions: string[];
16
+ export declare const sampleData: PersonInfo[];
17
+ export {};