@ndlib/component-library 0.0.7-9.1
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 +101 -0
- package/dist/FontLoader.d.ts +1 -0
- package/dist/FontLoader.js +4 -0
- package/dist/components/composites/Card/Card.stories.d.ts +13 -0
- package/dist/components/composites/Card/Card.stories.js +122 -0
- package/dist/components/composites/Card/Card.test.d.ts +1 -0
- package/dist/components/composites/Card/Card.test.js +37 -0
- package/dist/components/composites/Card/index.d.ts +36 -0
- package/dist/components/composites/Card/index.js +89 -0
- package/dist/components/composites/DragDropList/DragDropList.stories.d.ts +7 -0
- package/dist/components/composites/DragDropList/DragDropList.stories.js +32 -0
- package/dist/components/composites/DragDropList/index.d.ts +25 -0
- package/dist/components/composites/DragDropList/index.js +48 -0
- package/dist/components/composites/DropdownLinks/DropdownLinks.stories.d.ts +8 -0
- package/dist/components/composites/DropdownLinks/DropdownLinks.stories.js +25 -0
- package/dist/components/composites/DropdownLinks/DropdownLinks.test.d.ts +1 -0
- package/dist/components/composites/DropdownLinks/DropdownLinks.test.js +27 -0
- package/dist/components/composites/DropdownLinks/index.d.ts +15 -0
- package/dist/components/composites/DropdownLinks/index.js +28 -0
- package/dist/components/composites/EmptyState/EmptyState.stories.d.ts +10 -0
- package/dist/components/composites/EmptyState/EmptyState.stories.js +31 -0
- package/dist/components/composites/EmptyState/EmptyState.test.d.ts +1 -0
- package/dist/components/composites/EmptyState/EmptyState.test.js +20 -0
- package/dist/components/composites/EmptyState/index.d.ts +15 -0
- package/dist/components/composites/EmptyState/index.js +32 -0
- package/dist/components/composites/Modal/Modal.stories.d.ts +6 -0
- package/dist/components/composites/Modal/Modal.stories.js +40 -0
- package/dist/components/composites/Modal/index.d.ts +21 -0
- package/dist/components/composites/Modal/index.js +64 -0
- package/dist/components/composites/NavMenu/NavMenu.stories.d.ts +6 -0
- package/dist/components/composites/NavMenu/NavMenu.stories.js +12 -0
- package/dist/components/composites/NavMenu/NavMenu.test.d.ts +1 -0
- package/dist/components/composites/NavMenu/NavMenu.test.js +96 -0
- package/dist/components/composites/NavMenu/demo.d.ts +1 -0
- package/dist/components/composites/NavMenu/demo.js +172 -0
- package/dist/components/composites/NavMenu/index.d.ts +5 -0
- package/dist/components/composites/NavMenu/index.js +52 -0
- package/dist/components/composites/Seo/SeoDataDisplay/index.d.ts +2 -0
- package/dist/components/composites/Seo/SeoDataDisplay/index.js +9 -0
- package/dist/components/composites/Seo/index.d.ts +11 -0
- package/dist/components/composites/Seo/index.js +16 -0
- package/dist/components/composites/Seo/seo.stories.d.ts +6 -0
- package/dist/components/composites/Seo/seo.stories.js +12 -0
- package/dist/components/composites/Seo/seo.test.d.ts +1 -0
- package/dist/components/composites/Seo/seo.test.js +56 -0
- package/dist/components/composites/Seo/siteMetadata.d.ts +9 -0
- package/dist/components/composites/Seo/siteMetadata.js +16 -0
- package/dist/components/composites/SnackBar/SnackBar.stories.d.ts +8 -0
- package/dist/components/composites/SnackBar/SnackBar.stories.js +20 -0
- package/dist/components/composites/SnackBar/SnackBar.test.d.ts +1 -0
- package/dist/components/composites/SnackBar/SnackBar.test.js +75 -0
- package/dist/components/composites/SnackBar/examples.d.ts +3 -0
- package/dist/components/composites/SnackBar/examples.js +35 -0
- package/dist/components/composites/SnackBar/index.d.ts +1 -0
- package/dist/components/composites/SnackBar/index.js +45 -0
- package/dist/components/composites/StructuredData/StructuredData.stories.d.ts +6 -0
- package/dist/components/composites/StructuredData/StructuredData.stories.js +12 -0
- package/dist/components/composites/StructuredData/StructuredData.test.d.ts +1 -0
- package/dist/components/composites/StructuredData/StructuredData.test.js +48 -0
- package/dist/components/composites/StructuredData/StructuredDataDisplay/index.d.ts +2 -0
- package/dist/components/composites/StructuredData/StructuredDataDisplay/index.js +37 -0
- package/dist/components/composites/StructuredData/index.d.ts +38 -0
- package/dist/components/composites/StructuredData/index.js +58 -0
- package/dist/components/composites/StructuredData/sdEvent/index.d.ts +13 -0
- package/dist/components/composites/StructuredData/sdEvent/index.js +16 -0
- package/dist/components/composites/StructuredData/sdEvent/makeEventSchema.d.ts +15 -0
- package/dist/components/composites/StructuredData/sdEvent/makeEventSchema.js +16 -0
- package/dist/components/composites/StructuredData/sdNews/index.d.ts +11 -0
- package/dist/components/composites/StructuredData/sdNews/index.js +14 -0
- package/dist/components/composites/StructuredData/sdNews/makeNewsSchema.d.ts +12 -0
- package/dist/components/composites/StructuredData/sdNews/makeNewsSchema.js +11 -0
- package/dist/components/composites/StructuredData/sdWebsite/index.d.ts +8 -0
- package/dist/components/composites/StructuredData/sdWebsite/index.js +11 -0
- package/dist/components/composites/StructuredData/sdWebsite/makeWebPageSchema.d.ts +9 -0
- package/dist/components/composites/StructuredData/sdWebsite/makeWebPageSchema.js +9 -0
- package/dist/components/composites/StructuredData/siteMetadata.d.ts +9 -0
- package/dist/components/composites/StructuredData/siteMetadata.js +12 -0
- package/dist/components/elements/Alerts/Alert.stories.d.ts +9 -0
- package/dist/components/elements/Alerts/Alert.stories.js +41 -0
- package/dist/components/elements/Alerts/Alerts.stories.d.ts +6 -0
- package/dist/components/elements/Alerts/Alerts.stories.js +12 -0
- package/dist/components/elements/Alerts/Alerts.test.d.ts +1 -0
- package/dist/components/elements/Alerts/Alerts.test.js +61 -0
- package/dist/components/elements/Alerts/index.d.ts +14 -0
- package/dist/components/elements/Alerts/index.js +64 -0
- package/dist/components/elements/ArrowLink/ArrowLink.stories.d.ts +6 -0
- package/dist/components/elements/ArrowLink/ArrowLink.stories.js +12 -0
- package/dist/components/elements/ArrowLink/ArrowLink.test.d.ts +1 -0
- package/dist/components/elements/ArrowLink/ArrowLink.test.js +34 -0
- package/dist/components/elements/ArrowLink/index.d.ts +7 -0
- package/dist/components/elements/ArrowLink/index.js +39 -0
- package/dist/components/elements/BrandingBar/BrandingBar.stories.d.ts +6 -0
- package/dist/components/elements/BrandingBar/BrandingBar.stories.js +11 -0
- package/dist/components/elements/BrandingBar/index.d.ts +2 -0
- package/dist/components/elements/BrandingBar/index.js +52 -0
- package/dist/components/elements/Button/Button.stories.d.ts +15 -0
- package/dist/components/elements/Button/Button.stories.js +88 -0
- package/dist/components/elements/Button/Button.test.d.ts +1 -0
- package/dist/components/elements/Button/Button.test.js +39 -0
- package/dist/components/elements/Button/index.d.ts +49 -0
- package/dist/components/elements/Button/index.js +138 -0
- package/dist/components/elements/Dropdown/Dropdown.stories.d.ts +7 -0
- package/dist/components/elements/Dropdown/Dropdown.stories.js +20 -0
- package/dist/components/elements/Dropdown/index.d.ts +24 -0
- package/dist/components/elements/Dropdown/index.js +87 -0
- package/dist/components/elements/Fields/AutoComplete/AutoComplete.stories.d.ts +6 -0
- package/dist/components/elements/Fields/AutoComplete/AutoComplete.stories.js +60 -0
- package/dist/components/elements/Fields/AutoComplete/index.d.ts +11 -0
- package/dist/components/elements/Fields/AutoComplete/index.js +26 -0
- package/dist/components/elements/Fields/Checkbox/Checkbox.stories.d.ts +6 -0
- package/dist/components/elements/Fields/Checkbox/Checkbox.stories.js +17 -0
- package/dist/components/elements/Fields/Checkbox/index.d.ts +8 -0
- package/dist/components/elements/Fields/Checkbox/index.js +22 -0
- package/dist/components/elements/Fields/CheckboxGroup/CheckboxGroup.stories.d.ts +7 -0
- package/dist/components/elements/Fields/CheckboxGroup/CheckboxGroup.stories.js +26 -0
- package/dist/components/elements/Fields/CheckboxGroup/index.d.ts +16 -0
- package/dist/components/elements/Fields/CheckboxGroup/index.js +49 -0
- package/dist/components/elements/Fields/DatePicker/DatePicker.stories.d.ts +8 -0
- package/dist/components/elements/Fields/DatePicker/DatePicker.stories.js +31 -0
- package/dist/components/elements/Fields/DatePicker/index.d.ts +20 -0
- package/dist/components/elements/Fields/DatePicker/index.js +48 -0
- package/dist/components/elements/Fields/MonthPicker/MonthPicker.stories.d.ts +7 -0
- package/dist/components/elements/Fields/MonthPicker/MonthPicker.stories.js +20 -0
- package/dist/components/elements/Fields/MonthPicker/index.d.ts +13 -0
- package/dist/components/elements/Fields/MonthPicker/index.js +24 -0
- package/dist/components/elements/Fields/Radio/Radio.stories.d.ts +6 -0
- package/dist/components/elements/Fields/Radio/Radio.stories.js +17 -0
- package/dist/components/elements/Fields/Radio/index.d.ts +8 -0
- package/dist/components/elements/Fields/Radio/index.js +22 -0
- package/dist/components/elements/Fields/RadioGroup/RadioGroup.stories.d.ts +6 -0
- package/dist/components/elements/Fields/RadioGroup/RadioGroup.stories.js +23 -0
- package/dist/components/elements/Fields/RadioGroup/index.d.ts +14 -0
- package/dist/components/elements/Fields/RadioGroup/index.js +28 -0
- package/dist/components/elements/Fields/Select/Select.stories.d.ts +8 -0
- package/dist/components/elements/Fields/Select/Select.stories.js +39 -0
- package/dist/components/elements/Fields/Select/index.d.ts +18 -0
- package/dist/components/elements/Fields/Select/index.js +178 -0
- package/dist/components/elements/Fields/TextInput/TextInput.stories.d.ts +9 -0
- package/dist/components/elements/Fields/TextInput/TextInput.stories.js +35 -0
- package/dist/components/elements/Fields/TextInput/index.d.ts +45 -0
- package/dist/components/elements/Fields/TextInput/index.js +119 -0
- package/dist/components/elements/Fields/option.d.ts +16 -0
- package/dist/components/elements/Fields/option.js +3 -0
- package/dist/components/elements/Group/index.d.ts +22 -0
- package/dist/components/elements/Group/index.js +69 -0
- package/dist/components/elements/Icon/Icon.stories.d.ts +7 -0
- package/dist/components/elements/Icon/Icon.stories.js +29 -0
- package/dist/components/elements/Icon/Icon.test.d.ts +1 -0
- package/dist/components/elements/Icon/Icon.test.js +26 -0
- package/dist/components/elements/Icon/index.d.ts +10 -0
- package/dist/components/elements/Icon/index.js +34 -0
- package/dist/components/elements/Link/Link.stories.d.ts +6 -0
- package/dist/components/elements/Link/Link.stories.js +21 -0
- package/dist/components/elements/Link/Link.test.d.ts +1 -0
- package/dist/components/elements/Link/Link.test.js +58 -0
- package/dist/components/elements/Link/index.d.ts +14 -0
- package/dist/components/elements/Link/index.js +41 -0
- package/dist/components/elements/List/List.stories.d.ts +10 -0
- package/dist/components/elements/List/List.stories.js +37 -0
- package/dist/components/elements/List/List.test.d.ts +1 -0
- package/dist/components/elements/List/List.test.js +24 -0
- package/dist/components/elements/List/index.d.ts +27 -0
- package/dist/components/elements/List/index.js +103 -0
- package/dist/components/elements/ListBox/Listbox.stories.d.ts +6 -0
- package/dist/components/elements/ListBox/Listbox.stories.js +17 -0
- package/dist/components/elements/ListBox/index.d.ts +33 -0
- package/dist/components/elements/ListBox/index.js +51 -0
- package/dist/components/elements/Markdown/Markdown.stories.d.ts +10 -0
- package/dist/components/elements/Markdown/Markdown.stories.js +97 -0
- package/dist/components/elements/Markdown/Markdown.test.d.ts +1 -0
- package/dist/components/elements/Markdown/Markdown.test.js +91 -0
- package/dist/components/elements/Markdown/index.d.ts +21 -0
- package/dist/components/elements/Markdown/index.js +75 -0
- package/dist/components/elements/Pill/Pill.stories.d.ts +8 -0
- package/dist/components/elements/Pill/Pill.stories.js +40 -0
- package/dist/components/elements/Pill/Pill.test.d.ts +1 -0
- package/dist/components/elements/Pill/Pill.test.js +18 -0
- package/dist/components/elements/Pill/index.d.ts +21 -0
- package/dist/components/elements/Pill/index.js +117 -0
- package/dist/components/elements/Spinner/Spinner.stories.d.ts +7 -0
- package/dist/components/elements/Spinner/Spinner.stories.js +26 -0
- package/dist/components/elements/Spinner/Spinner.test.d.ts +1 -0
- package/dist/components/elements/Spinner/Spinner.test.js +9 -0
- package/dist/components/elements/Spinner/index.d.ts +14 -0
- package/dist/components/elements/Spinner/index.js +49 -0
- package/dist/components/elements/TabList/TabList.stories.d.ts +6 -0
- package/dist/components/elements/TabList/TabList.stories.js +12 -0
- package/dist/components/elements/TabList/TabList.test.d.ts +1 -0
- package/dist/components/elements/TabList/TabList.test.js +19 -0
- package/dist/components/elements/TabList/example.d.ts +7 -0
- package/dist/components/elements/TabList/example.js +36 -0
- package/dist/components/elements/TabList/index.d.ts +10 -0
- package/dist/components/elements/TabList/index.js +30 -0
- package/dist/components/elements/Table/Table.stories.d.ts +10 -0
- package/dist/components/elements/Table/Table.stories.js +96 -0
- package/dist/components/elements/Table/Table.test.d.ts +1 -0
- package/dist/components/elements/Table/Table.test.js +36 -0
- package/dist/components/elements/Table/index.d.ts +30 -0
- package/dist/components/elements/Table/index.js +100 -0
- package/dist/components/elements/layout/Box.d.ts +9 -0
- package/dist/components/elements/layout/Box.js +3 -0
- package/dist/components/elements/layout/Box.stories.d.ts +6 -0
- package/dist/components/elements/layout/Box.stories.js +12 -0
- package/dist/components/elements/layout/Column.d.ts +8 -0
- package/dist/components/elements/layout/Column.js +19 -0
- package/dist/components/elements/layout/Flex.stories.d.ts +10 -0
- package/dist/components/elements/layout/Flex.stories.js +26 -0
- package/dist/components/elements/layout/Flex.test.d.ts +1 -0
- package/dist/components/elements/layout/Flex.test.js +34 -0
- package/dist/components/elements/layout/Row.d.ts +20 -0
- package/dist/components/elements/layout/Row.js +52 -0
- package/dist/components/elements/text/Heading/Heading.stories.d.ts +8 -0
- package/dist/components/elements/text/Heading/Heading.stories.js +35 -0
- package/dist/components/elements/text/Heading/Heading.test.d.ts +1 -0
- package/dist/components/elements/text/Heading/Heading.test.js +51 -0
- package/dist/components/elements/text/Heading/index.d.ts +20 -0
- package/dist/components/elements/text/Heading/index.js +62 -0
- package/dist/components/elements/text/Inline/Inline.stories.d.ts +6 -0
- package/dist/components/elements/text/Inline/Inline.stories.js +12 -0
- package/dist/components/elements/text/Inline/index.d.ts +6 -0
- package/dist/components/elements/text/Inline/index.js +21 -0
- package/dist/components/elements/text/Label/Label.stories.d.ts +6 -0
- package/dist/components/elements/text/Label/Label.stories.js +20 -0
- package/dist/components/elements/text/Label/Label.test.d.ts +1 -0
- package/dist/components/elements/text/Label/Label.test.js +56 -0
- package/dist/components/elements/text/Label/index.d.ts +20 -0
- package/dist/components/elements/text/Label/index.js +38 -0
- package/dist/components/elements/text/Paragraph/Paragraph.stories.d.ts +6 -0
- package/dist/components/elements/text/Paragraph/Paragraph.stories.js +25 -0
- package/dist/components/elements/text/Paragraph/Paragraph.test.d.ts +1 -0
- package/dist/components/elements/text/Paragraph/Paragraph.test.js +9 -0
- package/dist/components/elements/text/Paragraph/index.d.ts +14 -0
- package/dist/components/elements/text/Paragraph/index.js +29 -0
- package/dist/components/elements/text/ReadMore/ReadMore.stories.d.ts +8 -0
- package/dist/components/elements/text/ReadMore/ReadMore.stories.js +26 -0
- package/dist/components/elements/text/ReadMore/index.d.ts +12 -0
- package/dist/components/elements/text/ReadMore/index.js +71 -0
- package/dist/components/providers/alerts.d.ts +41 -0
- package/dist/components/providers/alerts.js +133 -0
- package/dist/components/providers/componentConfig.d.ts +25 -0
- package/dist/components/providers/componentConfig.js +37 -0
- package/dist/components/providers/dialogs.d.ts +9 -0
- package/dist/components/providers/dialogs.js +32 -0
- package/dist/components/providers/env.d.ts +14 -0
- package/dist/components/providers/env.js +25 -0
- package/dist/components/providers/media.d.ts +8 -0
- package/dist/components/providers/media.js +43 -0
- package/dist/components/providers/menu.d.ts +46 -0
- package/dist/components/providers/menu.js +304 -0
- package/dist/components/providers/snackBar.d.ts +23 -0
- package/dist/components/providers/snackBar.js +53 -0
- package/dist/components/providers/ui.d.ts +18 -0
- package/dist/components/providers/ui.js +16 -0
- package/dist/components/providers/uniqueIds.d.ts +3 -0
- package/dist/components/providers/uniqueIds.js +23 -0
- package/dist/components/providers/uniqueIds.test.d.ts +1 -0
- package/dist/components/providers/uniqueIds.test.js +26 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.js +51 -0
- package/dist/theme/Color.stories.d.ts +5 -0
- package/dist/theme/Color.stories.js +63 -0
- package/dist/theme/GlobalStyles.d.ts +1 -0
- package/dist/theme/GlobalStyles.js +167 -0
- package/dist/theme/Typography.stories.d.ts +5 -0
- package/dist/theme/Typography.stories.js +44 -0
- package/dist/theme/colors.d.ts +51 -0
- package/dist/theme/colors.js +97 -0
- package/dist/theme/custom.d.ts +11 -0
- package/dist/theme/custom.js +13 -0
- package/dist/theme/index.d.ts +185 -0
- package/dist/theme/index.js +25 -0
- package/dist/theme/spacing.d.ts +0 -0
- package/dist/theme/spacing.js +1 -0
- package/dist/theme/typography.d.ts +100 -0
- package/dist/theme/typography.js +206 -0
- package/dist/utils/hooks/useCheckMidClick.d.ts +8 -0
- package/dist/utils/hooks/useCheckMidClick.js +17 -0
- package/dist/utils/hooks/useCheckMidKeyPress.d.ts +9 -0
- package/dist/utils/hooks/useCheckMidKeyPress.js +23 -0
- package/dist/utils/hooks/useHover.d.ts +7 -0
- package/dist/utils/hooks/useHover.js +12 -0
- package/dist/utils/hooks/useStorage.d.ts +14 -0
- package/dist/utils/hooks/useStorage.js +37 -0
- package/dist/utils/misc.d.ts +14 -0
- package/dist/utils/misc.js +19 -0
- package/dist/utils/sortByKey.d.ts +12 -0
- package/dist/utils/sortByKey.js +20 -0
- package/dist/utils/test.d.ts +2 -0
- package/dist/utils/test.js +9 -0
- package/package.json +98 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { render } from '../../../../utils/test';
|
|
3
|
+
import { Paragraph } from '.';
|
|
4
|
+
describe('Paragraph', () => {
|
|
5
|
+
it('renders without an error', () => {
|
|
6
|
+
const { getByText } = render(_jsx(Paragraph, { children: "Foo" }));
|
|
7
|
+
expect(getByText('Foo')).toBeInTheDocument();
|
|
8
|
+
});
|
|
9
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { TYPOGRAPHY_TYPE } from '../../../../theme/typography';
|
|
3
|
+
import { StyledElementProps } from '../../../../theme';
|
|
4
|
+
type ParagraphProps = StyledElementProps<HTMLSpanElement, {
|
|
5
|
+
size?: PARAGRAPH_SIZE;
|
|
6
|
+
typography?: TYPOGRAPHY_TYPE;
|
|
7
|
+
}>;
|
|
8
|
+
export declare enum PARAGRAPH_SIZE {
|
|
9
|
+
SM = "sm",
|
|
10
|
+
MD = "md",
|
|
11
|
+
LG = "lg"
|
|
12
|
+
}
|
|
13
|
+
export declare const Paragraph: React.FC<ParagraphProps>;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "theme-ui/jsx-runtime";
|
|
13
|
+
import { getTypographyStyles, TYPOGRAPHY_TYPE, } from '../../../../theme/typography';
|
|
14
|
+
export var PARAGRAPH_SIZE;
|
|
15
|
+
(function (PARAGRAPH_SIZE) {
|
|
16
|
+
PARAGRAPH_SIZE["SM"] = "sm";
|
|
17
|
+
PARAGRAPH_SIZE["MD"] = "md";
|
|
18
|
+
PARAGRAPH_SIZE["LG"] = "lg";
|
|
19
|
+
})(PARAGRAPH_SIZE || (PARAGRAPH_SIZE = {}));
|
|
20
|
+
const SIZE_TYPOGRAPHY_MAP = {
|
|
21
|
+
[PARAGRAPH_SIZE.SM]: TYPOGRAPHY_TYPE.PARAGRAPH_SMALL,
|
|
22
|
+
[PARAGRAPH_SIZE.MD]: TYPOGRAPHY_TYPE.PARAGRAPH_MEDIUM,
|
|
23
|
+
[PARAGRAPH_SIZE.LG]: TYPOGRAPHY_TYPE.PARAGRAPH_LARGE,
|
|
24
|
+
};
|
|
25
|
+
export const Paragraph = (_a) => {
|
|
26
|
+
var { size, typography: typographyParam, sx } = _a, rest = __rest(_a, ["size", "typography", "sx"]);
|
|
27
|
+
const typography = typographyParam || SIZE_TYPOGRAPHY_MAP[size || PARAGRAPH_SIZE.MD];
|
|
28
|
+
return (_jsx("div", Object.assign({ sx: Object.assign(Object.assign(Object.assign({}, getTypographyStyles(typography)), { my: 1 }), sx) }, rest)));
|
|
29
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { ReadMore } from '.';
|
|
3
|
+
declare const meta: Meta<typeof ReadMore>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof ReadMore>;
|
|
6
|
+
export declare const Default: Story;
|
|
7
|
+
export declare const NotTruncated: Story;
|
|
8
|
+
export declare const CustomColor: Story;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { ReadMore } from '.';
|
|
3
|
+
import { Column } from '../../layout/Column';
|
|
4
|
+
import { TYPOGRAPHY_TYPE } from '../../../../theme/typography';
|
|
5
|
+
import { COLOR } from '../../../../theme/colors';
|
|
6
|
+
const meta = {
|
|
7
|
+
title: 'Elements/ReadMore',
|
|
8
|
+
component: ReadMore,
|
|
9
|
+
tags: ['autodocs'],
|
|
10
|
+
};
|
|
11
|
+
export default meta;
|
|
12
|
+
const p1 = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris ultrices venenatis purus at porta. Etiam congue sapien leo, sed malesuada justo commodo in. Nunc consequat, massa non cursus posuere, magna eros lacinia lectus, eget lobortis mi erat ut justo. Maecenas nisi mi, mollis sed ornare vitae, pharetra sed augue. Curabitur mollis orci risus, sed imperdiet nisi aliquet et. Ut non elit nec magna rhoncus maximus sit amet ut dui. Mauris sit amet eleifend lectus. Aliquam consectetur posuere libero eu ultricies. Etiam rutrum non orci nec vulputate. Sed vel accumsan diam. Cras aliquet eros eros, sit amet pharetra eros tincidunt ut. Vestibulum est erat, eleifend dapibus eros vel, elementum vehicula risus. Etiam blandit condimentum sodales. Donec non libero in orci aliquam egestas fringilla eget purus. Suspendisse pellentesque at ligula ut accumsan.';
|
|
13
|
+
const p2 = 'Lorem ipsum dolor sit';
|
|
14
|
+
export const Default = {
|
|
15
|
+
render: () => (_jsx(Column, { children: _jsx(ReadMore, Object.assign({ sx: { width: '250px' }, lines: 2, typography: TYPOGRAPHY_TYPE.PARAGRAPH_MEDIUM }, { children: p1 })) })),
|
|
16
|
+
};
|
|
17
|
+
export const NotTruncated = {
|
|
18
|
+
render: () => (_jsx(Column, { children: _jsx(ReadMore, Object.assign({ sx: { width: '250px' }, lines: 2, typography: TYPOGRAPHY_TYPE.PARAGRAPH_MEDIUM }, { children: p2 })) })),
|
|
19
|
+
};
|
|
20
|
+
export const CustomColor = {
|
|
21
|
+
render: () => (_jsx(Column, { children: _jsx(ReadMore, Object.assign({ lines: 2, typography: TYPOGRAPHY_TYPE.PARAGRAPH_MEDIUM, sx: {
|
|
22
|
+
color: COLOR.BACKGROUND,
|
|
23
|
+
bg: COLOR.PRIMARY,
|
|
24
|
+
width: '250px',
|
|
25
|
+
} }, { children: p1 })) })),
|
|
26
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { StyledElementProps } from '../../../../theme';
|
|
3
|
+
import { TYPOGRAPHY_TYPE } from '../../../../theme/typography';
|
|
4
|
+
export declare const useLinesHeight: (args: {
|
|
5
|
+
lines: number;
|
|
6
|
+
typography: TYPOGRAPHY_TYPE;
|
|
7
|
+
}) => string;
|
|
8
|
+
export declare const ReadMore: React.FC<StyledElementProps<HTMLDivElement, {
|
|
9
|
+
typography: TYPOGRAPHY_TYPE;
|
|
10
|
+
lines: number;
|
|
11
|
+
fixedHeight?: boolean;
|
|
12
|
+
}, string>>;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx, jsxs as _jsxs } from "theme-ui/jsx-runtime";
|
|
13
|
+
import React, { useState } from 'react';
|
|
14
|
+
import { useTheme } from '../../../../theme';
|
|
15
|
+
import { COLOR, colors } from '../../../../theme/colors';
|
|
16
|
+
import { getTypographyStyles, } from '../../../../theme/typography';
|
|
17
|
+
import { useMediaQuery } from '../../../providers/media';
|
|
18
|
+
const ReadMoreLink = (props) => {
|
|
19
|
+
const bg = colors[props.bg || COLOR.BACKGROUND];
|
|
20
|
+
const color = colors[props.color || COLOR.ND_BLUE_LIGHT];
|
|
21
|
+
return (_jsx("div", Object.assign({ css: {
|
|
22
|
+
whiteSpace: 'nowrap',
|
|
23
|
+
position: 'absolute',
|
|
24
|
+
right: 0,
|
|
25
|
+
bottom: 0,
|
|
26
|
+
paddingLeft: '3rem',
|
|
27
|
+
background: `linear-gradient(to right, ${bg}00, ${bg} 30%, ${bg} 100%)`,
|
|
28
|
+
} }, { children: _jsx("div", Object.assign({ "aria-hidden": "true", sx: {
|
|
29
|
+
color,
|
|
30
|
+
transform: 'scale(0.9)',
|
|
31
|
+
cursor: 'pointer',
|
|
32
|
+
} }, { children: "Read More..." })) })));
|
|
33
|
+
};
|
|
34
|
+
export const useLinesHeight = (args) => {
|
|
35
|
+
const theme = useTheme();
|
|
36
|
+
const styles = getTypographyStyles(args.typography);
|
|
37
|
+
const fontSize = styles.fontSize;
|
|
38
|
+
const fontSizeRem = theme.fontSizes[fontSize];
|
|
39
|
+
const fontSizeNumber = Number(fontSizeRem.slice(0, fontSizeRem.length - 3));
|
|
40
|
+
const linesHeight = fontSizeNumber * theme.lineHeights[styles.lineHeight] * args.lines;
|
|
41
|
+
return `${linesHeight}rem`;
|
|
42
|
+
};
|
|
43
|
+
export const ReadMore = (_a) => {
|
|
44
|
+
var { typography, sx, role, lines, fixedHeight, children } = _a, rest = __rest(_a, ["typography", "sx", "role", "lines", "fixedHeight", "children"]);
|
|
45
|
+
const ref = React.useRef(null);
|
|
46
|
+
const [showEllipsis, setShowEllipsis] = useState(true);
|
|
47
|
+
const wrapperHeight = useLinesHeight({ typography, lines });
|
|
48
|
+
const { screenSize } = useMediaQuery();
|
|
49
|
+
const { color, bg } = sx || {};
|
|
50
|
+
React.useEffect(() => {
|
|
51
|
+
if (ref.current) {
|
|
52
|
+
if (fixedHeight) {
|
|
53
|
+
ref.current.style.height = wrapperHeight;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
ref.current.style.maxHeight = wrapperHeight;
|
|
57
|
+
}
|
|
58
|
+
const isOverflowing = ref.current.scrollHeight > ref.current.clientHeight;
|
|
59
|
+
if (isOverflowing) {
|
|
60
|
+
setShowEllipsis(true);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
setShowEllipsis(false);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}, [children, wrapperHeight, fixedHeight, screenSize]);
|
|
67
|
+
return (_jsxs("div", Object.assign({ role: role || 'paragraph', ref: ref, style: {
|
|
68
|
+
overflow: 'hidden',
|
|
69
|
+
position: 'relative',
|
|
70
|
+
}, sx: Object.assign(Object.assign({}, getTypographyStyles(typography)), sx) }, rest, { children: [children, showEllipsis && _jsx(ReadMoreLink, { bg: bg, color: color })] })));
|
|
71
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare enum ALERT_TYPE {
|
|
3
|
+
INFORMATIONAL = "Informational",
|
|
4
|
+
INFORMATIONAL_YELLOW = "Informational_Yellow",
|
|
5
|
+
WARNING = "Warning"
|
|
6
|
+
}
|
|
7
|
+
export declare enum ALERT_DOMAIN {
|
|
8
|
+
LIBRARY = "library",
|
|
9
|
+
PRIMO = "primo",
|
|
10
|
+
PRIMO_NDU = "primoNDU",
|
|
11
|
+
PRIMO_HCC = "primoHCC",
|
|
12
|
+
ILLIAD = "illiad",
|
|
13
|
+
CATALOGUE_CLASSIC_NDU = "catalogueClassicNDU",
|
|
14
|
+
CATALOGUE_CLASSIC_HCC = "catalogueClassicHCC"
|
|
15
|
+
}
|
|
16
|
+
export type AlertProperties = {
|
|
17
|
+
uuid: string;
|
|
18
|
+
title: string;
|
|
19
|
+
type: ALERT_TYPE;
|
|
20
|
+
description: string;
|
|
21
|
+
domains: ALERT_DOMAIN[];
|
|
22
|
+
global?: boolean;
|
|
23
|
+
key?: number | null;
|
|
24
|
+
};
|
|
25
|
+
export type StrapiAlertAttributes = {
|
|
26
|
+
attributes: AlertProperties;
|
|
27
|
+
};
|
|
28
|
+
export type AlertQueryParams = {
|
|
29
|
+
domain?: ALERT_DOMAIN;
|
|
30
|
+
endpoint?: string;
|
|
31
|
+
startTime?: string;
|
|
32
|
+
endTime?: string;
|
|
33
|
+
disable?: boolean;
|
|
34
|
+
};
|
|
35
|
+
type AlertsProviderProps = React.PropsWithChildren<AlertQueryParams>;
|
|
36
|
+
export declare const AlertsProvider: React.FC<AlertsProviderProps>;
|
|
37
|
+
export declare const useAlerts: (pageAlerts?: string[]) => {
|
|
38
|
+
alerts: AlertProperties[];
|
|
39
|
+
dismiss: (id: string) => void;
|
|
40
|
+
};
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
+
import React, { useEffect, useState } from 'react';
|
|
12
|
+
import { useStorage } from '../../utils/hooks/useStorage';
|
|
13
|
+
const DISMISSED_ALERTS_STORAGE_KEY = 'DISSMISSED_ALERTS_STORAGE_KEY';
|
|
14
|
+
export var ALERT_TYPE;
|
|
15
|
+
(function (ALERT_TYPE) {
|
|
16
|
+
ALERT_TYPE["INFORMATIONAL"] = "Informational";
|
|
17
|
+
ALERT_TYPE["INFORMATIONAL_YELLOW"] = "Informational_Yellow";
|
|
18
|
+
ALERT_TYPE["WARNING"] = "Warning";
|
|
19
|
+
})(ALERT_TYPE || (ALERT_TYPE = {}));
|
|
20
|
+
export var ALERT_DOMAIN;
|
|
21
|
+
(function (ALERT_DOMAIN) {
|
|
22
|
+
ALERT_DOMAIN["LIBRARY"] = "library";
|
|
23
|
+
ALERT_DOMAIN["PRIMO"] = "primo";
|
|
24
|
+
ALERT_DOMAIN["PRIMO_NDU"] = "primoNDU";
|
|
25
|
+
ALERT_DOMAIN["PRIMO_HCC"] = "primoHCC";
|
|
26
|
+
ALERT_DOMAIN["ILLIAD"] = "illiad";
|
|
27
|
+
ALERT_DOMAIN["CATALOGUE_CLASSIC_NDU"] = "catalogueClassicNDU";
|
|
28
|
+
ALERT_DOMAIN["CATALOGUE_CLASSIC_HCC"] = "catalogueClassicHCC";
|
|
29
|
+
})(ALERT_DOMAIN || (ALERT_DOMAIN = {}));
|
|
30
|
+
const composeGraphqlQuery = ({ startTime, endTime, }) => {
|
|
31
|
+
return JSON.stringify({
|
|
32
|
+
query: `
|
|
33
|
+
query AlertQuery($startTime: DateTime, $endTime: DateTime) {
|
|
34
|
+
alerts(
|
|
35
|
+
filters: {
|
|
36
|
+
startTime: { lte: $startTime }
|
|
37
|
+
endTime: { gte: $endTime }
|
|
38
|
+
}
|
|
39
|
+
pagination: { start: 0, limit: 100 }
|
|
40
|
+
sort: ["type:desc", "startTime:asc"]
|
|
41
|
+
) {
|
|
42
|
+
data {
|
|
43
|
+
attributes {
|
|
44
|
+
uuid
|
|
45
|
+
title
|
|
46
|
+
description
|
|
47
|
+
type
|
|
48
|
+
global
|
|
49
|
+
domains
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
`,
|
|
55
|
+
variables: {
|
|
56
|
+
startTime: startTime,
|
|
57
|
+
endTime: endTime,
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
const DEFAULT_DATE = new Date().toISOString();
|
|
62
|
+
const useAlertsQuery = ({ domain = ALERT_DOMAIN.LIBRARY, endpoint = DEFAULT_ENDPOINT, startTime = DEFAULT_DATE, endTime = DEFAULT_DATE, disable = false, }) => {
|
|
63
|
+
const [alerts, setAlerts] = useState([]);
|
|
64
|
+
useEffect(() => {
|
|
65
|
+
const fetchData = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
66
|
+
var _a, _b, _c;
|
|
67
|
+
try {
|
|
68
|
+
const myHeaders = new Headers();
|
|
69
|
+
myHeaders.append('Content-Type', 'application/json');
|
|
70
|
+
const response = yield fetch(endpoint, {
|
|
71
|
+
method: 'POST',
|
|
72
|
+
headers: myHeaders,
|
|
73
|
+
body: composeGraphqlQuery({
|
|
74
|
+
startTime,
|
|
75
|
+
endTime,
|
|
76
|
+
}),
|
|
77
|
+
redirect: 'follow',
|
|
78
|
+
});
|
|
79
|
+
const json = yield response.json();
|
|
80
|
+
const results = (_c = (_b = (_a = json === null || json === void 0 ? void 0 : json.data) === null || _a === void 0 ? void 0 : _a.alerts) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.map((a) => a === null || a === void 0 ? void 0 : a.attributes);
|
|
81
|
+
setAlerts(results);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
console.log('error', error);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
if (!disable) {
|
|
88
|
+
fetchData();
|
|
89
|
+
}
|
|
90
|
+
}, [endpoint, domain, startTime, endTime, disable]);
|
|
91
|
+
return alerts;
|
|
92
|
+
};
|
|
93
|
+
const AlertsContext = React.createContext({
|
|
94
|
+
alerts: [],
|
|
95
|
+
dismiss: () => { },
|
|
96
|
+
});
|
|
97
|
+
const DEFAULT_ENDPOINT = 'https://library-website-cms.library.nd.edu/graphql';
|
|
98
|
+
export const AlertsProvider = ({ domain = ALERT_DOMAIN.LIBRARY, endpoint, startTime, endTime, children, disable, }) => {
|
|
99
|
+
const alerts = useAlertsQuery({
|
|
100
|
+
domain,
|
|
101
|
+
endpoint,
|
|
102
|
+
startTime,
|
|
103
|
+
endTime,
|
|
104
|
+
disable,
|
|
105
|
+
});
|
|
106
|
+
const storage = useStorage(`alert-storage-${domain}`);
|
|
107
|
+
const storedDismissedAlerts = storage.getItem(DISMISSED_ALERTS_STORAGE_KEY);
|
|
108
|
+
const [dismissedAlerts, setDismissedAlerts] = useState(storedDismissedAlerts ? JSON.parse(storedDismissedAlerts) : []);
|
|
109
|
+
const dismiss = (id) => {
|
|
110
|
+
if (!dismissedAlerts.includes(id)) {
|
|
111
|
+
const newDismissed = dismissedAlerts.concat([id]);
|
|
112
|
+
storage.setItem(DISMISSED_ALERTS_STORAGE_KEY, JSON.stringify(newDismissed));
|
|
113
|
+
setDismissedAlerts(newDismissed);
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
const filteredAlerts = alerts
|
|
117
|
+
.filter((alert) => !dismissedAlerts.includes(alert.uuid))
|
|
118
|
+
.filter((alert) => alert.domains.includes(domain));
|
|
119
|
+
return (_jsx(AlertsContext.Provider, Object.assign({ value: {
|
|
120
|
+
alerts: filteredAlerts,
|
|
121
|
+
dismiss,
|
|
122
|
+
} }, { children: children })));
|
|
123
|
+
};
|
|
124
|
+
export const useAlerts = (pageAlerts) => {
|
|
125
|
+
const { alerts: allAlerts, dismiss } = React.useContext(AlertsContext);
|
|
126
|
+
const alerts = pageAlerts
|
|
127
|
+
? allAlerts.filter((alert) => alert.global || pageAlerts.includes(alert.uuid))
|
|
128
|
+
: allAlerts.filter((alert) => alert.global);
|
|
129
|
+
return {
|
|
130
|
+
alerts,
|
|
131
|
+
dismiss,
|
|
132
|
+
};
|
|
133
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { PropsWithChildren } from 'react';
|
|
2
|
+
import { DeepPartial } from '../../utils/misc';
|
|
3
|
+
import { StyledElementProps } from '../../theme';
|
|
4
|
+
export type ComponentConfig = {
|
|
5
|
+
link: {
|
|
6
|
+
externalMatcher: RegExp;
|
|
7
|
+
navigate: (url: string) => void;
|
|
8
|
+
internalLinkComponent: React.FC<LinkComponentProps>;
|
|
9
|
+
externalLinkComponent: React.FC<LinkComponentProps>;
|
|
10
|
+
};
|
|
11
|
+
modal: {
|
|
12
|
+
appElement: HTMLElement | undefined;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
export type ComponentConfigParam = DeepPartial<ComponentConfig>;
|
|
16
|
+
export type LinkComponentProps = StyledElementProps<HTMLAnchorElement, {
|
|
17
|
+
to: string;
|
|
18
|
+
target?: string;
|
|
19
|
+
}>;
|
|
20
|
+
export declare const DefaultLink: React.FC<LinkComponentProps>;
|
|
21
|
+
export declare const ComponentConfigContext: import("react").Context<ComponentConfig>;
|
|
22
|
+
export declare const useComponentConfig: () => ComponentConfig;
|
|
23
|
+
export declare const ComponentConfigProvider: React.FC<PropsWithChildren<{
|
|
24
|
+
config: ComponentConfigParam;
|
|
25
|
+
}>>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import { createContext, useContext, useMemo } from 'react';
|
|
14
|
+
const DEFAULT_EXTERNAL_LINK_MATCHER = /[a-zA-Z0-9]*:\/\/[^\s]*/g;
|
|
15
|
+
export const DefaultLink = (_a) => {
|
|
16
|
+
var { to } = _a, rest = __rest(_a, ["to"]);
|
|
17
|
+
return _jsx("a", Object.assign({ href: to }, rest));
|
|
18
|
+
};
|
|
19
|
+
const defaultComponentConfig = {
|
|
20
|
+
link: {
|
|
21
|
+
externalMatcher: DEFAULT_EXTERNAL_LINK_MATCHER,
|
|
22
|
+
navigate: (url) => {
|
|
23
|
+
window.location.href = url;
|
|
24
|
+
},
|
|
25
|
+
internalLinkComponent: DefaultLink,
|
|
26
|
+
externalLinkComponent: DefaultLink,
|
|
27
|
+
},
|
|
28
|
+
modal: {
|
|
29
|
+
appElement: undefined,
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
export const ComponentConfigContext = createContext(defaultComponentConfig);
|
|
33
|
+
export const useComponentConfig = () => useContext(ComponentConfigContext);
|
|
34
|
+
export const ComponentConfigProvider = ({ config: configParam, children }) => {
|
|
35
|
+
const config = useMemo(() => (Object.assign(Object.assign(Object.assign({}, defaultComponentConfig), configParam), { link: Object.assign(Object.assign({}, defaultComponentConfig.link), configParam.link) })), []);
|
|
36
|
+
return (_jsx(ComponentConfigContext.Provider, Object.assign({ value: config }, { children: children })));
|
|
37
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
const DialogContext = React.createContext({
|
|
4
|
+
open: () => { },
|
|
5
|
+
close: () => { },
|
|
6
|
+
dialogs: {},
|
|
7
|
+
});
|
|
8
|
+
export const DialogsProvider = ({ children }) => {
|
|
9
|
+
const [dialogs, setDialogs] = React.useState({});
|
|
10
|
+
const open = (key) => {
|
|
11
|
+
setDialogs(Object.assign(Object.assign({}, dialogs), { [key]: { isOpen: true } }));
|
|
12
|
+
};
|
|
13
|
+
const close = (key) => {
|
|
14
|
+
setDialogs(Object.assign(Object.assign({}, dialogs), { [key]: { isOpen: false } }));
|
|
15
|
+
};
|
|
16
|
+
return (_jsx(DialogContext.Provider, Object.assign({ value: {
|
|
17
|
+
dialogs,
|
|
18
|
+
open,
|
|
19
|
+
close,
|
|
20
|
+
} }, { children: children })));
|
|
21
|
+
};
|
|
22
|
+
export const useDialog = (id) => {
|
|
23
|
+
const dialogs = React.useContext(DialogContext);
|
|
24
|
+
const open = () => dialogs.open(id);
|
|
25
|
+
const close = () => dialogs.close(id);
|
|
26
|
+
const state = dialogs.dialogs[id] || { isOpen: false };
|
|
27
|
+
return {
|
|
28
|
+
open,
|
|
29
|
+
close,
|
|
30
|
+
state,
|
|
31
|
+
};
|
|
32
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { PropsWithChildren } from 'react';
|
|
2
|
+
export declare enum ENVIRONMENT {
|
|
3
|
+
DEV = "DEVELOPMENT",
|
|
4
|
+
PROD = "PRODUCTION"
|
|
5
|
+
}
|
|
6
|
+
type EnvironmentContextType = {
|
|
7
|
+
env?: ENVIRONMENT;
|
|
8
|
+
flagInDevelopment: (message: string) => void;
|
|
9
|
+
};
|
|
10
|
+
export declare const useEnvironment: () => EnvironmentContextType;
|
|
11
|
+
export declare const EnvironmentProvider: React.FC<PropsWithChildren<{
|
|
12
|
+
env?: ENVIRONMENT;
|
|
13
|
+
}>>;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useContext } from 'react';
|
|
3
|
+
export var ENVIRONMENT;
|
|
4
|
+
(function (ENVIRONMENT) {
|
|
5
|
+
ENVIRONMENT["DEV"] = "DEVELOPMENT";
|
|
6
|
+
ENVIRONMENT["PROD"] = "PRODUCTION";
|
|
7
|
+
})(ENVIRONMENT || (ENVIRONMENT = {}));
|
|
8
|
+
const EnvironmentContext = createContext({
|
|
9
|
+
flagInDevelopment: () => { },
|
|
10
|
+
});
|
|
11
|
+
export const useEnvironment = () => useContext(EnvironmentContext);
|
|
12
|
+
export const EnvironmentProvider = ({ env, children }) => {
|
|
13
|
+
const flagInDevelopment = (message) => {
|
|
14
|
+
if (env === ENVIRONMENT.DEV) {
|
|
15
|
+
throw new Error(message);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
console.warn(message);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
return (_jsx(EnvironmentContext.Provider, Object.assign({ value: {
|
|
22
|
+
env,
|
|
23
|
+
flagInDevelopment,
|
|
24
|
+
} }, { children: children })));
|
|
25
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React, { PropsWithChildren } from 'react';
|
|
2
|
+
type MediaContextType = {
|
|
3
|
+
screenSize: number;
|
|
4
|
+
breakpoint: number;
|
|
5
|
+
};
|
|
6
|
+
export declare const MediaSizeProvider: React.FC<PropsWithChildren>;
|
|
7
|
+
export declare const useMediaQuery: () => MediaContextType;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useContext, useEffect, useMemo, useState, } from 'react';
|
|
3
|
+
import { useTheme } from '../../theme';
|
|
4
|
+
const MediaContext = createContext({
|
|
5
|
+
screenSize: -1,
|
|
6
|
+
breakpoint: -1,
|
|
7
|
+
});
|
|
8
|
+
export const MediaSizeProvider = ({ children, }) => {
|
|
9
|
+
const [renderCount, setRenderCount] = useState(0);
|
|
10
|
+
const theme = useTheme();
|
|
11
|
+
const breakpoints = theme.breakpoints.map((bp) => parseInt(bp.slice(0, -2)), [theme]);
|
|
12
|
+
const { screenSize, breakpoint } = useMemo(() => {
|
|
13
|
+
if (typeof window === 'undefined') {
|
|
14
|
+
return {
|
|
15
|
+
screenSize: -1,
|
|
16
|
+
breakpoint: -1,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
const screenSize = window.innerWidth;
|
|
20
|
+
const closestBreakpoint = breakpoints.findIndex((bp) => screenSize < bp);
|
|
21
|
+
const breakpoint = closestBreakpoint === -1 ? breakpoints.length : closestBreakpoint;
|
|
22
|
+
return {
|
|
23
|
+
screenSize,
|
|
24
|
+
breakpoint,
|
|
25
|
+
};
|
|
26
|
+
}, [renderCount, breakpoints]);
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
if (typeof window === 'undefined')
|
|
29
|
+
return;
|
|
30
|
+
const rerenderOnResize = () => {
|
|
31
|
+
setRenderCount((renderCount) => renderCount + 1);
|
|
32
|
+
};
|
|
33
|
+
window.addEventListener('resize', rerenderOnResize);
|
|
34
|
+
return () => {
|
|
35
|
+
window.removeEventListener('resize', rerenderOnResize);
|
|
36
|
+
};
|
|
37
|
+
}, []);
|
|
38
|
+
return (_jsx(MediaContext.Provider, Object.assign({ value: {
|
|
39
|
+
breakpoint,
|
|
40
|
+
screenSize,
|
|
41
|
+
} }, { children: children })));
|
|
42
|
+
};
|
|
43
|
+
export const useMediaQuery = () => useContext(MediaContext);
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare enum MENU_ACTION_TYPE {
|
|
3
|
+
SUBMENU = "SUBMENU",
|
|
4
|
+
LINK = "LINK"
|
|
5
|
+
}
|
|
6
|
+
export declare enum MENU_ORIENTATION {
|
|
7
|
+
HORIZONTAL = "HORIZONTAL",
|
|
8
|
+
VERTICAL = "VERTICAL"
|
|
9
|
+
}
|
|
10
|
+
type SubmenuAction = {
|
|
11
|
+
type: MENU_ACTION_TYPE.SUBMENU;
|
|
12
|
+
submenu: Menu;
|
|
13
|
+
};
|
|
14
|
+
type LinkAction = {
|
|
15
|
+
type: MENU_ACTION_TYPE.LINK;
|
|
16
|
+
to: string;
|
|
17
|
+
};
|
|
18
|
+
type Action = SubmenuAction | LinkAction;
|
|
19
|
+
type MenuItem = {
|
|
20
|
+
id: string;
|
|
21
|
+
label: string;
|
|
22
|
+
action: Action;
|
|
23
|
+
};
|
|
24
|
+
export type Menu = {
|
|
25
|
+
orientation: MENU_ORIENTATION;
|
|
26
|
+
items: MenuItem[];
|
|
27
|
+
};
|
|
28
|
+
type Path = string[];
|
|
29
|
+
type HtmlAttributes = Omit<React.HTMLAttributes<any>, 'color'>;
|
|
30
|
+
type MenuContextType = {
|
|
31
|
+
menu: Menu;
|
|
32
|
+
activePath: Path;
|
|
33
|
+
isOpen: boolean;
|
|
34
|
+
open: () => void;
|
|
35
|
+
close: () => void;
|
|
36
|
+
getMenuItem: (path: Path) => MenuItem | undefined;
|
|
37
|
+
getMenuItemProps: (path: Path) => HtmlAttributes;
|
|
38
|
+
getMenuProps: (path?: Path) => HtmlAttributes;
|
|
39
|
+
};
|
|
40
|
+
type MenuProviderProps = {
|
|
41
|
+
menu: Menu;
|
|
42
|
+
children: React.ReactNode | ((context: MenuContextType) => React.ReactNode);
|
|
43
|
+
};
|
|
44
|
+
export declare const useMenu: () => MenuContextType;
|
|
45
|
+
export declare const MenuProvider: React.FC<MenuProviderProps>;
|
|
46
|
+
export {};
|