@altinn/altinn-components 0.10.4 → 0.12.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/README.md +11 -1
- package/dist/assets/Breadcrumbs.css +1 -0
- package/dist/assets/BreadcrumbsLink.css +1 -0
- package/dist/assets/FieldBase.css +1 -0
- package/dist/assets/Flex.css +1 -0
- package/dist/assets/Grid.css +1 -0
- package/dist/assets/Heading.css +1 -1
- package/dist/assets/InputBase.css +1 -0
- package/dist/assets/ListItemBase.css +1 -1
- package/dist/assets/ListItemHeader.css +1 -1
- package/dist/assets/ListItemLabel.css +1 -1
- package/dist/assets/MenuItemMedia.css +1 -1
- package/dist/assets/QueryLabel.css +1 -1
- package/dist/assets/Section.css +1 -1
- package/dist/assets/SnackbarBase.css +1 -1
- package/dist/assets/SnackbarItem.css +1 -0
- package/dist/assets/Typography.css +1 -1
- package/dist/components/AccessAreaList/AccessAreaList.js +6 -5
- package/dist/components/AccessAreaList/AccessAreaListItem.js +13 -12
- package/dist/components/AccessPackageList/AccessPackageList.js +5 -4
- package/dist/components/AccessPackageList/AccessPackageListItem.js +6 -5
- package/dist/components/Autocomplete/AutocompleteItem.js +13 -12
- package/dist/components/Autocomplete/ScopeListItem.js +3 -2
- package/dist/components/Bookmarks/BookmarksListItem.js +69 -7
- package/dist/components/Bookmarks/BookmarksSection.js +33 -13
- package/dist/components/Bookmarks/QueryLabel.js +9 -9
- package/dist/components/Bookmarks/index.js +7 -9
- package/dist/components/Button/Button.js +16 -15
- package/dist/components/Button/IconButton.js +22 -10
- package/dist/components/Byline/Byline.js +4 -3
- package/dist/components/ContextMenu/ContextMenu.js +11 -10
- package/dist/components/Dialog/Dialog.js +16 -15
- package/dist/components/Dialog/DialogActions.js +3 -2
- package/dist/components/Dialog/DialogByline.js +5 -4
- package/dist/components/Dialog/DialogContent.js +8 -7
- package/dist/components/Dialog/DialogHeading.js +8 -7
- package/dist/components/Dialog/DialogHistory.js +6 -5
- package/dist/components/Dialog/DialogHistoryDetails.js +11 -10
- package/dist/components/Dialog/DialogHistoryItem.js +6 -5
- package/dist/components/Dialog/DialogList.js +3 -2
- package/dist/components/Dialog/DialogListGroup.js +8 -7
- package/dist/components/Dialog/DialogListItem.js +19 -18
- package/dist/components/Dialog/DialogMetadata.js +10 -9
- package/dist/components/Dialog/DialogSection.js +5 -4
- package/dist/components/Dialog/DialogTimeline.js +7 -6
- package/dist/components/Dialog/DialogTimelineItem.js +3 -2
- package/dist/components/Dialog/DialogTransmissions.js +3 -2
- package/dist/components/Dialog/DraftDialog.js +19 -18
- package/dist/components/Dropdown/DrawerButton.js +3 -2
- package/dist/components/Dropdown/DrawerOrDropdown.js +3 -2
- package/dist/components/Dropdown/DropdownBase.js +8 -7
- package/dist/components/GlobalMenu/AccountButton.js +3 -2
- package/dist/components/GlobalMenu/AccountMenu.js +12 -11
- package/dist/components/GlobalMenu/BackButton.js +3 -2
- package/dist/components/GlobalMenu/GlobalMenu.js +21 -20
- package/dist/components/Header/Header.js +3 -2
- package/dist/components/Header/HeaderBase.js +4 -3
- package/dist/components/Icon/iconsMap.js +16960 -739
- package/dist/components/Layout/Layout.js +7 -6
- package/dist/components/LayoutAction/ActionMenu.js +4 -3
- package/dist/components/List/List.js +5 -4
- package/dist/components/List/ListItemBase.js +11 -11
- package/dist/components/List/ListItemControls.js +15 -15
- package/dist/components/List/ListItemHeader.js +49 -49
- package/dist/components/List/ListItemLabel.js +8 -8
- package/dist/components/Menu/MenuItemMedia.js +5 -5
- package/dist/components/Menu/MenuItems.js +1 -0
- package/dist/components/Menu/MenuSearch.js +5 -4
- package/dist/components/Page/Article.js +4 -4
- package/dist/components/Page/Breadcrumbs.js +23 -0
- package/dist/components/Page/BreadcrumbsLink.js +28 -0
- package/dist/components/Page/Flex.js +42 -0
- package/dist/components/Page/Grid.js +34 -0
- package/dist/components/Page/PageHeader.js +11 -9
- package/dist/components/Page/PageNav.js +21 -17
- package/dist/components/Page/Section.js +12 -40
- package/dist/components/Page/index.js +18 -14
- package/dist/components/ResourceList/ResourceList.js +3 -2
- package/dist/components/ResourceList/ResourceListItem.js +3 -2
- package/dist/components/RootProvider/RootProvider.js +13 -12
- package/dist/components/Searchbar/SearchField.js +38 -28
- package/dist/components/Searchbar/Searchbar.js +3 -2
- package/dist/components/Snackbar/Snackbar.js +17 -8
- package/dist/components/Snackbar/SnackbarBase.js +5 -21
- package/dist/components/Snackbar/SnackbarItem.js +32 -0
- package/dist/components/Snackbar/index.js +2 -6
- package/dist/components/Snackbar/useSnackbar.js +47 -0
- package/dist/components/TextField/FieldBase.js +16 -0
- package/dist/components/TextField/InputBase.js +33 -0
- package/dist/components/TextField/TextField.js +7 -0
- package/dist/components/TextField/index.js +8 -0
- package/dist/components/Timeline/TimelineSection.js +3 -2
- package/dist/components/Toolbar/ToolbarAccountMenu.js +5 -4
- package/dist/components/Toolbar/ToolbarAdd.js +6 -5
- package/dist/components/Toolbar/ToolbarDaterange.js +11 -10
- package/dist/components/Toolbar/ToolbarFilter.js +12 -11
- package/dist/components/Toolbar/ToolbarMenu.js +3 -2
- package/dist/components/Toolbar/ToolbarOptions.js +10 -9
- package/dist/components/Toolbar/ToolbarSearch.js +5 -4
- package/dist/components/Transmission/TransmissionItem.js +3 -2
- package/dist/components/Transmission/TransmissionList.js +3 -2
- package/dist/components/Typography/Heading.js +3 -3
- package/dist/components/Typography/Typography.js +8 -9
- package/dist/components/index.js +270 -266
- package/dist/footer-BI7NNFeL.js +27 -0
- package/dist/globalMenu-A9dXKjrI.js +80 -0
- package/dist/header-B7oMg4iq.js +11 -0
- package/dist/inboxMenu-DXIoTtPz.js +48 -0
- package/dist/index.js +264 -260
- package/dist/types/lib/components/Bookmarks/BookmarksListItem.d.ts +18 -2
- package/dist/types/lib/components/Bookmarks/BookmarksListItem.stories.d.ts +2 -4
- package/dist/types/lib/components/Bookmarks/BookmarksSection.d.ts +8 -3
- package/dist/types/lib/components/Bookmarks/BookmarksSection.stories.d.ts +42 -3
- package/dist/types/lib/components/Bookmarks/index.d.ts +0 -1
- package/dist/types/lib/components/Button/Button.d.ts +2 -1
- package/dist/types/lib/components/Button/Button.stories.d.ts +1 -1
- package/dist/types/lib/components/Button/IconButton.d.ts +2 -1
- package/dist/types/lib/components/Button/IconButton.stories.d.ts +1 -1
- package/dist/types/lib/components/Layout/LayoutBase.d.ts +1 -1
- package/dist/types/lib/components/LayoutAction/ActionFooter.stories.d.ts +0 -2
- package/dist/types/lib/components/List/ListItemControls.d.ts +2 -1
- package/dist/types/lib/components/List/ListItemHeader.d.ts +2 -2
- package/dist/types/lib/components/Menu/MenuItemBase.d.ts +1 -1
- package/dist/types/lib/components/Page/Article.d.ts +1 -1
- package/dist/types/lib/components/Page/Breadcrumbs.d.ts +5 -0
- package/dist/types/lib/components/Page/BreadcrumbsLink.d.ts +11 -0
- package/dist/types/lib/components/Page/{PageBase.stories.d.ts → Examples.stories.d.ts} +2 -1
- package/dist/types/lib/components/Page/Flex.d.ts +29 -0
- package/dist/types/lib/components/Page/Grid.d.ts +22 -0
- package/dist/types/lib/components/Page/PageNav.d.ts +6 -3
- package/dist/types/lib/components/Page/PageNav.stories.d.ts +2 -1
- package/dist/types/lib/components/Page/Section.d.ts +6 -26
- package/dist/types/lib/components/Page/index.d.ts +4 -2
- package/dist/types/lib/components/Searchbar/Searchbar.stories.d.ts +6 -1
- package/dist/types/lib/components/Snackbar/Snackbar.d.ts +1 -16
- package/dist/types/lib/components/Snackbar/Snackbar.stories.d.ts +3 -8
- package/dist/types/lib/components/Snackbar/SnackbarBase.d.ts +6 -11
- package/dist/types/lib/components/Snackbar/SnackbarItem.d.ts +16 -0
- package/dist/types/lib/components/Snackbar/index.d.ts +2 -4
- package/dist/types/lib/components/Snackbar/useSnackbar.d.ts +39 -0
- package/dist/types/lib/components/TextField/FieldBase.d.ts +11 -0
- package/dist/types/lib/components/TextField/InputBase.d.ts +14 -0
- package/dist/types/lib/components/TextField/TextField.d.ts +7 -0
- package/dist/types/lib/components/TextField/index.d.ts +3 -0
- package/dist/types/lib/components/Typography/Heading.d.ts +2 -2
- package/dist/types/lib/components/Typography/Typography.d.ts +1 -1
- package/dist/types/lib/components/index.d.ts +1 -0
- package/dist/{useAccountMenu-ImwZYwks.js → useAccountMenu-DgXhBMw4.js} +19 -27
- package/package.json +7 -2
- package/dist/ZoomPlusFill-xyiiemTy.js +0 -17126
- package/dist/assets/ListItemMenu.css +0 -1
- package/dist/assets/SectionFooter.css +0 -1
- package/dist/assets/SnackbarLabel.css +0 -1
- package/dist/assets/SnackbarMedia.css +0 -1
- package/dist/components/Bookmarks/BookmarksList.js +0 -12
- package/dist/components/Icon/__AkselIcon.js +0 -1042
- package/dist/components/List/ListItemMenu.js +0 -8
- package/dist/components/Page/SectionFooter.js +0 -8
- package/dist/components/Page/SectionHeader.js +0 -12
- package/dist/components/Snackbar/SnackbarLabel.js +0 -7
- package/dist/components/Snackbar/SnackbarMedia.js +0 -11
- package/dist/types/lib/components/Bookmarks/BookmarksList.d.ts +0 -5
- package/dist/types/lib/components/Bookmarks/BookmarksList.stories.d.ts +0 -34
- package/dist/types/lib/components/List/ListItemMenu.d.ts +0 -8
- package/dist/types/lib/components/Page/SectionFooter.d.ts +0 -6
- package/dist/types/lib/components/Page/SectionHeader.d.ts +0 -6
- package/dist/types/lib/components/Snackbar/SnackbarLabel.d.ts +0 -5
- package/dist/types/lib/components/Snackbar/SnackbarMedia.d.ts +0 -6
|
@@ -7,28 +7,29 @@ import { ToolbarButton as j } from "./ToolbarButton.js";
|
|
|
7
7
|
import { useRootContext as B } from "../RootProvider/RootProvider.js";
|
|
8
8
|
import { ToolbarFilterBase as C } from "./ToolbarFilterBase.js";
|
|
9
9
|
import { DrawerOrDropdown as O } from "../Dropdown/DrawerOrDropdown.js";
|
|
10
|
+
import "../Snackbar/useSnackbar.js";
|
|
10
11
|
import { ToolbarOptions as k } from "./ToolbarOptions.js";
|
|
11
|
-
const D = (p, o) => Array.isArray(o) ? o.join(", ") : o,
|
|
12
|
+
const D = (p, o) => Array.isArray(o) ? o.join(", ") : o, J = ({
|
|
12
13
|
removable: p,
|
|
13
14
|
label: o,
|
|
14
15
|
name: t,
|
|
15
16
|
value: r,
|
|
16
|
-
options:
|
|
17
|
-
optionGroups:
|
|
17
|
+
options: m,
|
|
18
|
+
optionGroups: f,
|
|
18
19
|
onChange: d,
|
|
19
20
|
onRemove: a,
|
|
20
|
-
getSelectedLabel:
|
|
21
|
+
getSelectedLabel: i,
|
|
21
22
|
showResultsLabel: y = "Show results",
|
|
22
23
|
optionType: A,
|
|
23
24
|
id: c = `toolbar-filter-${t}`
|
|
24
25
|
}) => {
|
|
25
|
-
const { currentId: h, toggleId: T, closeAll: u } = B(), w = (
|
|
26
|
-
(
|
|
27
|
-
...
|
|
26
|
+
const { currentId: h, toggleId: T, closeAll: u } = B(), w = (m ?? []).map(
|
|
27
|
+
(n) => ({
|
|
28
|
+
...n,
|
|
28
29
|
name: t,
|
|
29
|
-
checked: Array.isArray(r) ? r.includes(
|
|
30
|
+
checked: Array.isArray(r) ? r.includes(n.value) : n.value === r
|
|
30
31
|
})
|
|
31
|
-
), x = (
|
|
32
|
+
), x = (i == null ? void 0 : i(t, r)) ?? D(t, r), e = () => T(c), l = h === c;
|
|
32
33
|
return /* @__PURE__ */ b(C, { expanded: l, children: [
|
|
33
34
|
/* @__PURE__ */ s(
|
|
34
35
|
j,
|
|
@@ -52,7 +53,7 @@ const D = (p, o) => Array.isArray(o) ? o.join(", ") : o, H = ({
|
|
|
52
53
|
k,
|
|
53
54
|
{
|
|
54
55
|
options: w,
|
|
55
|
-
optionGroups:
|
|
56
|
+
optionGroups: f,
|
|
56
57
|
onChange: d,
|
|
57
58
|
optionType: A
|
|
58
59
|
}
|
|
@@ -62,5 +63,5 @@ const D = (p, o) => Array.isArray(o) ? o.join(", ") : o, H = ({
|
|
|
62
63
|
] });
|
|
63
64
|
};
|
|
64
65
|
export {
|
|
65
|
-
|
|
66
|
+
J as ToolbarFilter
|
|
66
67
|
};
|
|
@@ -8,7 +8,8 @@ import { ToolbarButton as f } from "./ToolbarButton.js";
|
|
|
8
8
|
import { useRootContext as b } from "../RootProvider/RootProvider.js";
|
|
9
9
|
import { ToolbarFilterBase as g } from "./ToolbarFilterBase.js";
|
|
10
10
|
import { DrawerOrDropdown as h } from "../Dropdown/DrawerOrDropdown.js";
|
|
11
|
-
|
|
11
|
+
import "../Snackbar/useSnackbar.js";
|
|
12
|
+
const y = ({ label: e, value: n, groups: l, search: m, items: i, id: r = "toolbar-menu" }) => {
|
|
12
13
|
const { currentId: p, toggleId: s, closeAll: a } = b(), c = () => s(r), t = p === r;
|
|
13
14
|
return /* @__PURE__ */ d(g, { expanded: t, children: [
|
|
14
15
|
/* @__PURE__ */ o(f, { type: "switch", onToggle: c, active: !!n, children: e }),
|
|
@@ -16,5 +17,5 @@ const v = ({ label: e, value: n, groups: l, search: m, items: i, id: r = "toolba
|
|
|
16
17
|
] });
|
|
17
18
|
};
|
|
18
19
|
export {
|
|
19
|
-
|
|
20
|
+
y as ToolbarMenu
|
|
20
21
|
};
|
|
@@ -7,10 +7,11 @@ import { MenuSearch as j } from "../Menu/MenuSearch.js";
|
|
|
7
7
|
import { MenuHeader as x } from "../Menu/MenuHeader.js";
|
|
8
8
|
import "../Autocomplete/AutocompleteBase.js";
|
|
9
9
|
import "../RootProvider/RootProvider.js";
|
|
10
|
+
import "../Snackbar/useSnackbar.js";
|
|
10
11
|
import { MenuBase as O, MenuList as I, MenuListItem as m } from "../Menu/MenuBase.js";
|
|
11
|
-
const
|
|
12
|
-
var
|
|
13
|
-
const
|
|
12
|
+
const z = ({ search: p, optionGroups: n = {}, options: h, onChange: b, optionType: g }) => {
|
|
13
|
+
var i;
|
|
14
|
+
const d = h.reduce(
|
|
14
15
|
(e, l) => {
|
|
15
16
|
const o = l.groupId || "";
|
|
16
17
|
return e[o] = e[o] || [], e[o].push(l), e;
|
|
@@ -18,14 +19,14 @@ const w = ({ search: d, optionGroups: n = {}, options: h, onChange: b, optionTyp
|
|
|
18
19
|
{}
|
|
19
20
|
);
|
|
20
21
|
return /* @__PURE__ */ c(O, { theme: "global", children: [
|
|
21
|
-
|
|
22
|
-
/* @__PURE__ */ r(I, { children: (
|
|
22
|
+
p && /* @__PURE__ */ r(j, { ...p }),
|
|
23
|
+
/* @__PURE__ */ r(I, { children: (i = Object.keys(d)) == null ? void 0 : i.map((e, l) => {
|
|
23
24
|
var u;
|
|
24
|
-
const o = n[e] || {}, { title:
|
|
25
|
+
const o = n[e] || {}, { title: a, divider: f = !0 } = o;
|
|
25
26
|
return /* @__PURE__ */ c(M, { children: [
|
|
26
27
|
l && f ? /* @__PURE__ */ r(m, { role: "separator" }) : "",
|
|
27
|
-
|
|
28
|
-
(u =
|
|
28
|
+
a && /* @__PURE__ */ r(m, { children: /* @__PURE__ */ r(x, { title: a }) }),
|
|
29
|
+
(u = d[e]) == null ? void 0 : u.map((t) => {
|
|
29
30
|
var s;
|
|
30
31
|
return /* @__PURE__ */ r(m, { children: /* @__PURE__ */ r(
|
|
31
32
|
v,
|
|
@@ -44,5 +45,5 @@ const w = ({ search: d, optionGroups: n = {}, options: h, onChange: b, optionTyp
|
|
|
44
45
|
] });
|
|
45
46
|
};
|
|
46
47
|
export {
|
|
47
|
-
|
|
48
|
+
z as ToolbarOptions
|
|
48
49
|
};
|
|
@@ -6,19 +6,20 @@ import "react";
|
|
|
6
6
|
import "../Autocomplete/AutocompleteBase.js";
|
|
7
7
|
import { IconButton as m } from "../Button/IconButton.js";
|
|
8
8
|
import "../RootProvider/RootProvider.js";
|
|
9
|
+
import "../Snackbar/useSnackbar.js";
|
|
9
10
|
import '../../assets/ToolbarSearch.css';const l = "_field_tw5fx_1", p = "_icon_tw5fx_5", f = "_input_tw5fx_14", _ = "_clear_tw5fx_30", o = {
|
|
10
11
|
field: l,
|
|
11
12
|
icon: p,
|
|
12
13
|
input: f,
|
|
13
14
|
clear: _
|
|
14
|
-
},
|
|
15
|
+
}, k = ({ value: c, name: r, placeholder: n = "Search", onChange: s, onClear: i }) => /* @__PURE__ */ a("div", { className: o.field, children: [
|
|
15
16
|
/* @__PURE__ */ t(
|
|
16
17
|
"input",
|
|
17
18
|
{
|
|
18
19
|
type: "search",
|
|
19
20
|
value: c,
|
|
20
|
-
name:
|
|
21
|
-
placeholder:
|
|
21
|
+
name: r,
|
|
22
|
+
placeholder: n,
|
|
22
23
|
className: o.input,
|
|
23
24
|
onChange: s
|
|
24
25
|
}
|
|
@@ -37,5 +38,5 @@ import '../../assets/ToolbarSearch.css';const l = "_field_tw5fx_1", p = "_icon_t
|
|
|
37
38
|
)
|
|
38
39
|
] });
|
|
39
40
|
export {
|
|
40
|
-
|
|
41
|
+
k as ToolbarSearch
|
|
41
42
|
};
|
|
@@ -7,10 +7,11 @@ import "../Autocomplete/AutocompleteBase.js";
|
|
|
7
7
|
import "../RootProvider/RootProvider.js";
|
|
8
8
|
import { ListItem as b } from "../List/ListItem.js";
|
|
9
9
|
import { MetaTimestamp as z } from "../Meta/MetaTimestamp.js";
|
|
10
|
+
import "../Snackbar/useSnackbar.js";
|
|
10
11
|
import { DialogAttachments as I } from "../Dialog/DialogAttachments.js";
|
|
11
12
|
import '../../assets/TransmissionItem.css';const T = "_body_1m345_1", k = {
|
|
12
13
|
body: T
|
|
13
|
-
},
|
|
14
|
+
}, S = ({
|
|
14
15
|
type: i,
|
|
15
16
|
loading: g,
|
|
16
17
|
sender: o,
|
|
@@ -67,5 +68,5 @@ import '../../assets/TransmissionItem.css';const T = "_body_1m345_1", k = {
|
|
|
67
68
|
);
|
|
68
69
|
};
|
|
69
70
|
export {
|
|
70
|
-
|
|
71
|
+
S as TransmissionItem
|
|
71
72
|
};
|
|
@@ -5,8 +5,9 @@ import "../Icon/SvgIcon.js";
|
|
|
5
5
|
import "../Autocomplete/AutocompleteBase.js";
|
|
6
6
|
import "../RootProvider/RootProvider.js";
|
|
7
7
|
import { TransmissionItem as e } from "./TransmissionItem.js";
|
|
8
|
+
import "../Snackbar/useSnackbar.js";
|
|
8
9
|
import { ListBase as n } from "../List/ListBase.js";
|
|
9
|
-
const
|
|
10
|
+
const L = ({ items: r }) => r.length ? /* @__PURE__ */ o(n, { children: r.map((t, m) => /* @__PURE__ */ i(e, { ...t, key: m })) }) : null;
|
|
10
11
|
export {
|
|
11
|
-
|
|
12
|
+
L as TransmissionList
|
|
12
13
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx as n } from "react/jsx-runtime";
|
|
2
2
|
import { c as d } from "../../index-L8X2o7IH.js";
|
|
3
|
-
import '../../assets/Heading.css';const
|
|
4
|
-
heading:
|
|
5
|
-
}, h = ({ as:
|
|
3
|
+
import '../../assets/Heading.css';const m = "_heading_mt0g8_1", o = {
|
|
4
|
+
heading: m
|
|
5
|
+
}, h = ({ as: t = "h2", size: a = "md", weight: e = "medium", className: s, children: i }) => /* @__PURE__ */ n(t, { className: d(o.heading, s), "data-size": a, "data-weight": e, children: i });
|
|
6
6
|
export {
|
|
7
7
|
h as Heading
|
|
8
8
|
};
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { c as
|
|
3
|
-
import '../../assets/Typography.css';const n = "
|
|
4
|
-
typography: n
|
|
5
|
-
item: y
|
|
1
|
+
import { jsx as y } from "react/jsx-runtime";
|
|
2
|
+
import { c as e } from "../../index-L8X2o7IH.js";
|
|
3
|
+
import '../../assets/Typography.css';const n = "_typography_15hc3_1", m = {
|
|
4
|
+
typography: n
|
|
6
5
|
}, g = ({
|
|
7
6
|
as: t = "div",
|
|
8
7
|
size: o = "md",
|
|
9
8
|
theme: p = "inherit",
|
|
10
|
-
className:
|
|
11
|
-
children:
|
|
12
|
-
...
|
|
13
|
-
}) => /* @__PURE__ */
|
|
9
|
+
className: r,
|
|
10
|
+
children: a,
|
|
11
|
+
...s
|
|
12
|
+
}) => /* @__PURE__ */ y(t, { className: e(m.typography, r), "data-size": o, "data-theme": p, ...s, children: a });
|
|
14
13
|
export {
|
|
15
14
|
g as Typography
|
|
16
15
|
};
|