@ndlib/component-library 1.0.30 → 1.0.42

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 (70) hide show
  1. package/README.md +16 -0
  2. package/dist/components/elements/AlertsV2/AlertV2.stories.d.ts +10 -0
  3. package/dist/components/elements/AlertsV2/AlertV2.stories.js +51 -0
  4. package/dist/components/elements/AlertsV2/AlertsV2.module.css +49 -0
  5. package/dist/components/elements/AlertsV2/AlertsV2.stories.d.ts +7 -0
  6. package/dist/components/elements/AlertsV2/AlertsV2.stories.js +17 -0
  7. package/dist/components/elements/AlertsV2/index.d.ts +15 -0
  8. package/dist/components/elements/AlertsV2/index.js +50 -0
  9. package/dist/components/elements/BlockQuoteV2/BlockQuoteV2.module.css +6 -0
  10. package/dist/components/elements/BlockQuoteV2/index.d.ts +4 -0
  11. package/dist/components/elements/BlockQuoteV2/index.js +21 -0
  12. package/dist/components/elements/BrandingBarV2/BrandingBarV2.module.css +68 -0
  13. package/dist/components/elements/BrandingBarV2/BrandingBarV2.stories.d.ts +6 -0
  14. package/dist/components/elements/BrandingBarV2/BrandingBarV2.stories.js +13 -0
  15. package/dist/components/elements/BrandingBarV2/index.d.ts +2 -0
  16. package/dist/components/elements/BrandingBarV2/index.js +10 -0
  17. package/dist/components/elements/CaptionV2/index.d.ts +2 -0
  18. package/dist/components/elements/CaptionV2/index.js +22 -0
  19. package/dist/components/elements/DatePickerV2/DatePickerV2.stories.d.ts +8 -0
  20. package/dist/components/elements/DatePickerV2/DatePickerV2.stories.js +53 -0
  21. package/dist/components/elements/DatePickerV2/index.d.ts +23 -0
  22. package/dist/components/elements/DatePickerV2/index.js +57 -0
  23. package/dist/components/elements/DropdownV2/DropdownV2.stories.d.ts +8 -0
  24. package/dist/components/elements/DropdownV2/DropdownV2.stories.js +26 -0
  25. package/dist/components/elements/DropdownV2/index.d.ts +26 -0
  26. package/dist/components/elements/DropdownV2/index.js +81 -0
  27. package/dist/components/elements/Heading/index.js +1 -1
  28. package/dist/components/elements/InlineV2/InlineV2.stories.d.ts +6 -0
  29. package/dist/components/elements/InlineV2/InlineV2.stories.js +14 -0
  30. package/dist/components/elements/InlineV2/index.d.ts +6 -0
  31. package/dist/components/elements/InlineV2/index.js +23 -0
  32. package/dist/components/elements/ListV2/ListV2.stories.d.ts +10 -0
  33. package/dist/components/elements/ListV2/ListV2.stories.js +39 -0
  34. package/dist/components/elements/ListV2/index.d.ts +27 -0
  35. package/dist/components/elements/ListV2/index.js +102 -0
  36. package/dist/components/elements/MarkdownV2/MarkdownV2.module.css +39 -0
  37. package/dist/components/elements/MarkdownV2/MarkdownV2.stories.d.ts +10 -0
  38. package/dist/components/elements/MarkdownV2/MarkdownV2.stories.js +130 -0
  39. package/dist/components/elements/MarkdownV2/index.d.ts +11 -0
  40. package/dist/components/elements/MarkdownV2/index.js +123 -0
  41. package/dist/components/elements/MonthPickerV2/MonthPickerV2.stories.d.ts +7 -0
  42. package/dist/components/elements/MonthPickerV2/MonthPickerV2.stories.js +33 -0
  43. package/dist/components/elements/MonthPickerV2/index.d.ts +14 -0
  44. package/dist/components/elements/MonthPickerV2/index.js +26 -0
  45. package/dist/components/elements/PillV2/PillV2.module.css +29 -0
  46. package/dist/components/elements/PillV2/PillV2.stories.d.ts +8 -0
  47. package/dist/components/elements/PillV2/PillV2.stories.js +42 -0
  48. package/dist/components/elements/PillV2/index.d.ts +21 -0
  49. package/dist/components/elements/PillV2/index.js +79 -0
  50. package/dist/components/elements/RadioGroupV2/RadioGroupV2.stories.d.ts +7 -0
  51. package/dist/components/elements/RadioGroupV2/RadioGroupV2.stories.js +28 -0
  52. package/dist/components/elements/RadioGroupV2/index.d.ts +16 -0
  53. package/dist/components/elements/RadioGroupV2/index.js +27 -0
  54. package/dist/components/elements/RadioV2/RadioV2.module.css +17 -0
  55. package/dist/components/elements/RadioV2/RadioV2.stories.d.ts +6 -0
  56. package/dist/components/elements/RadioV2/RadioV2.stories.js +19 -0
  57. package/dist/components/elements/RadioV2/index.d.ts +8 -0
  58. package/dist/components/elements/RadioV2/index.js +23 -0
  59. package/dist/components/elements/TabListV2/TabListV2.module.css +21 -0
  60. package/dist/components/elements/TabListV2/TabListV2.stories.d.ts +6 -0
  61. package/dist/components/elements/TabListV2/TabListV2.stories.js +14 -0
  62. package/dist/components/elements/TabListV2/example.d.ts +7 -0
  63. package/dist/components/elements/TabListV2/example.js +36 -0
  64. package/dist/components/elements/TabListV2/index.d.ts +10 -0
  65. package/dist/components/elements/TabListV2/index.js +31 -0
  66. package/dist/index.d.ts +11 -0
  67. package/dist/index.js +11 -0
  68. package/dist/utils/sanitizeHtml.d.ts +1 -0
  69. package/dist/utils/sanitizeHtml.js +25 -1
  70. package/package.json +6 -1
package/README.md CHANGED
@@ -78,6 +78,22 @@ Dependencies must be installed before storybook can be started. Dependencies can
78
78
 
79
79
  To build and deploy your storybook locally for development, run `yarn start`
80
80
 
81
+ ## Testing locally
82
+
83
+ If you wish to test your changes locally in another project that uses the component library, use the following steps:
84
+
85
+ 1. Run `yarn build`
86
+ 2. Enter `pwd` in the terminal to generate the path where the component library is located on your machine
87
+ 3. In the package.json of the project you wish to test the locally modified component library in, replace the version of the component library with `"file:///<PATH>"`
88
+ 4. Run `yarn install` or `npm run install`
89
+
90
+ If you need to make a change in the component library and test again:
91
+
92
+ 1. Rerun `yarn build` in the component library
93
+ 2. In your other project, change the package.json to use the version number again instead of the path
94
+ 3. Run `yarn install` or `npm run install` again
95
+ 4. Change the version back to the path, and run `yarn install` or `npm run install` again
96
+
81
97
  ## Deploying Storybook
82
98
 
83
99
  Whenever a commit is added to the main branch, the contents of the `/docs` folder will be deployed to our Github pages site.
@@ -0,0 +1,10 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { AlertV2 } from '.';
3
+ declare const meta: Meta<typeof AlertV2>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof AlertV2>;
6
+ export declare const Default: Story;
7
+ export declare const InformationalAlert: Story;
8
+ export declare const YellowAlert: Story;
9
+ export declare const WarningAlert: Story;
10
+ export declare const SuccessAlert: Story;
@@ -0,0 +1,51 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { AlertV2 } from '.';
3
+ import { ALERT_TYPE } from '../../providers/alerts';
4
+ import { UIVersion2 } from '../../../utils/decorators/UIVersion2';
5
+ const meta = {
6
+ title: 'Elements/AlertV2',
7
+ component: AlertV2,
8
+ tags: ['autodocs'],
9
+ decorators: [UIVersion2],
10
+ };
11
+ export default meta;
12
+ export const Default = {
13
+ render: (args) => _jsx(AlertV2, Object.assign({}, args)),
14
+ args: {
15
+ title: 'Informational Alert',
16
+ type: ALERT_TYPE.INFORMATIONAL,
17
+ description: 'This is an informational alert',
18
+ },
19
+ };
20
+ export const InformationalAlert = {
21
+ render: (args) => _jsx(AlertV2, Object.assign({}, args)),
22
+ args: {
23
+ title: 'Informational Alert',
24
+ type: ALERT_TYPE.INFORMATIONAL,
25
+ description: 'This is an informational alert',
26
+ },
27
+ };
28
+ export const YellowAlert = {
29
+ render: (args) => _jsx(AlertV2, Object.assign({}, args)),
30
+ args: {
31
+ title: 'Informational - Yellow Alert',
32
+ type: ALERT_TYPE.INFORMATIONAL_YELLOW,
33
+ description: 'This is an informational yellow alert',
34
+ },
35
+ };
36
+ export const WarningAlert = {
37
+ render: (args) => _jsx(AlertV2, Object.assign({}, args)),
38
+ args: {
39
+ title: 'Warning Alert',
40
+ type: ALERT_TYPE.WARNING,
41
+ description: 'This is a warning alert',
42
+ },
43
+ };
44
+ export const SuccessAlert = {
45
+ render: (args) => _jsx(AlertV2, Object.assign({}, args)),
46
+ args: {
47
+ title: 'Success Alert',
48
+ type: ALERT_TYPE.SUCCESS,
49
+ description: 'This is a success alert',
50
+ },
51
+ };
@@ -0,0 +1,49 @@
1
+ .alertWrapper {
2
+ border-width: 2px;
3
+ border-style: solid;
4
+ margin: 0;
5
+ padding: 1rem;
6
+ box-shadow: 0 0 8px #dfdfdf;
7
+ }
8
+
9
+ .alertWrapper[data-alert-type='Informational'] {
10
+ background-color: var(--alertInformationalBg);
11
+ border-color: var(--alertInformationalBorder);
12
+ }
13
+
14
+ .alertWrapper[data-alert-type='Informational_Yellow'] {
15
+ background-color: var(--alertInformationalYellowBg);
16
+ border-color: var(--alertInformationalYellowBorder);
17
+ }
18
+
19
+ .alertWrapper[data-alert-type='Warning'] {
20
+ background-color: var(--alertWarningBg);
21
+ border-color: var(--alertWarningBorder);
22
+ }
23
+
24
+ .alertWrapper[data-alert-type='Success'] {
25
+ background-color: var(--alertSuccessBg);
26
+ border-color: var(--alertSuccessBorder);
27
+ }
28
+
29
+ .alertInnerWrapper {
30
+ box-sizing: border-box;
31
+ margin: 0 auto;
32
+ padding-left: 0.5rem;
33
+ padding-right: 0.5rem;
34
+ width: 100%;
35
+ }
36
+
37
+ .icon {
38
+ margin-right: 1rem;
39
+ font-size: 1.75rem;
40
+ }
41
+
42
+ .markdownWrapper {
43
+ flex-grow: 1;
44
+ justify-content: center;
45
+ }
46
+
47
+ .button {
48
+ margin-left: 1rem;
49
+ }
@@ -0,0 +1,7 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { AlertsV2 } from '.';
3
+ declare const meta: Meta<typeof AlertsV2>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof AlertsV2>;
6
+ export declare const Default: Story;
7
+ export declare const CustomizeAlertStyles: Story;
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { AlertsV2 } from '.';
3
+ import { AlertsProvider } from '../../providers/alerts';
4
+ import { UIVersion2 } from '../../../utils/decorators/UIVersion2';
5
+ const meta = {
6
+ title: 'Elements/AlertsV2',
7
+ component: AlertsV2,
8
+ tags: ['autodocs'],
9
+ decorators: [UIVersion2],
10
+ };
11
+ export default meta;
12
+ export const Default = {
13
+ render: () => (_jsx(AlertsProvider, Object.assign({ startTime: new Date('2022-01-01').toISOString(), endTime: new Date('2022-01-01').toISOString(), endpoint: "http://localhost:1337/graphql" }, { children: _jsx(AlertsV2, {}) }))),
14
+ };
15
+ export const CustomizeAlertStyles = {
16
+ render: () => (_jsx(AlertsProvider, Object.assign({ startTime: new Date('2022-01-01').toISOString(), endTime: new Date('2022-01-01').toISOString(), endpoint: "http://localhost:1337/graphql" }, { children: _jsx(AlertsV2, { alertStyles: { borderRadius: '0px' } }) }))),
17
+ };
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { ALERT_TYPE } from '../../providers/alerts';
3
+ import { StyledElementPropsV2, StylesPropV2 } from '../../../theme';
4
+ type AlertsV2Props = StyledElementPropsV2<HTMLDivElement, {
5
+ pageAlerts?: string[];
6
+ alertStyles?: StylesPropV2;
7
+ }>;
8
+ export declare const AlertsV2: React.FC<AlertsV2Props>;
9
+ type AlertV2Props = StyledElementPropsV2<HTMLDivElement, {
10
+ type: ALERT_TYPE;
11
+ description: string;
12
+ dismiss: () => void;
13
+ }>;
14
+ export declare const AlertV2: React.FC<AlertV2Props>;
15
+ export {};
@@ -0,0 +1,50 @@
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 "react/jsx-runtime";
13
+ import _WarningIcon from '@mui/icons-material/Warning';
14
+ import _InfoIcon from '@mui/icons-material/Info';
15
+ import _SuccessIcon from '@mui/icons-material/CheckCircle';
16
+ import { MarkdownV2 } from '../MarkdownV2';
17
+ import { RowV2 } from '../RowV2';
18
+ import { IconV2 } from '../IconV2';
19
+ import { useAlerts, ALERT_TYPE } from '../../providers/alerts';
20
+ import { BUTTONV2_TYPE, ButtonV2 } from '../ButtonV2';
21
+ import { importedDefaultComponentShim } from '../../../utils/misc';
22
+ import { BoxV2 } from '../BoxV2';
23
+ import { processSx } from '../../../utils/processSx';
24
+ import * as styles from './AlertsV2.module.css';
25
+ import clsx from 'clsx';
26
+ const typeSafeStyles = styles;
27
+ const WarningIcon = importedDefaultComponentShim(_WarningIcon);
28
+ const InfoIcon = importedDefaultComponentShim(_InfoIcon);
29
+ const SuccessIcon = importedDefaultComponentShim(_SuccessIcon);
30
+ export const AlertsV2 = (_a) => {
31
+ var { pageAlerts, alertStyles } = _a, rest = __rest(_a, ["pageAlerts", "alertStyles"]);
32
+ const { alerts, dismiss } = useAlerts(pageAlerts);
33
+ return (_jsx(BoxV2, Object.assign({}, rest, { children: alerts.map((alert, i) => {
34
+ const { type, description } = alert;
35
+ return (_jsx(AlertV2, { type: type, description: description, "data-nosnippet": true, sx: Object.assign({ mt: i ? '4px' : 0 }, alertStyles), dismiss: () => {
36
+ dismiss(alert.id);
37
+ } }, i));
38
+ }) })));
39
+ };
40
+ export const AlertV2 = (_a) => {
41
+ var { type = ALERT_TYPE.INFORMATIONAL, description, dismiss, sx } = _a, rest = __rest(_a, ["type", "description", "dismiss", "sx"]);
42
+ const processedStyles = processSx(sx);
43
+ const icon = {
44
+ [ALERT_TYPE.WARNING]: WarningIcon,
45
+ [ALERT_TYPE.INFORMATIONAL_YELLOW]: InfoIcon,
46
+ [ALERT_TYPE.INFORMATIONAL]: InfoIcon,
47
+ [ALERT_TYPE.SUCCESS]: SuccessIcon,
48
+ }[type];
49
+ return (_jsx(RowV2, Object.assign({ className: clsx(processedStyles, typeSafeStyles.alertWrapper), "data-alert-type": type }, rest, { children: _jsxs(RowV2, Object.assign({ className: typeSafeStyles.alertInnerWrapper }, { children: [icon && _jsx(IconV2, { icon: icon, className: typeSafeStyles.icon }), _jsx(RowV2, Object.assign({ className: typeSafeStyles.markdownWrapper }, { children: _jsx(MarkdownV2, { content: description }) })), _jsx(ButtonV2, Object.assign({ type: BUTTONV2_TYPE.TEXT, onClick: dismiss }, { children: "Dismiss" }))] })) })));
50
+ };
@@ -0,0 +1,6 @@
1
+ .blockQuote {
2
+ margin-left: 1.25rem;
3
+ border-left: 8px solid var(--ndBlueBright);
4
+ padding: 1rem;
5
+ color: var(--gray);
6
+ }
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { StyledElementPropsV2 } from '../../../theme';
3
+ export type BlockQuoteV2Props = StyledElementPropsV2<HTMLQuoteElement>;
4
+ export declare const BlockQuoteV2: React.FC<BlockQuoteV2Props>;
@@ -0,0 +1,21 @@
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 { TYPOGRAPHY_TYPE, getTypographyStyles } from '../../../theme/typography';
14
+ import * as styles from './BlockQuoteV2.module.css';
15
+ import { processSx } from '../../../utils/processSx';
16
+ const typeSafeStyles = styles;
17
+ export const BlockQuoteV2 = (_a) => {
18
+ var { sx } = _a, props = __rest(_a, ["sx"]);
19
+ const processedStyles = processSx(Object.assign(Object.assign({}, sx), getTypographyStyles(TYPOGRAPHY_TYPE.PARAGRAPH_LARGE)));
20
+ return (_jsx("blockquote", Object.assign({}, props, { className: typeSafeStyles.blockQuote, style: Object.assign({}, processedStyles) })));
21
+ };
@@ -0,0 +1,68 @@
1
+ .sharedLink {
2
+ background-size: cover;
3
+ background-repeat: no-repeat;
4
+ display: block;
5
+ height: 50px;
6
+ line-height: 50px;
7
+ overflow: hidden;
8
+ text-indent: -9999px;
9
+ }
10
+
11
+ .universityLogo {
12
+ margin: 0 auto;
13
+ position: relative;
14
+ width: 300px;
15
+
16
+ @media screen and (min-width: 800px) {
17
+ left: 12px;
18
+ margin: 0;
19
+ position: absolute;
20
+ }
21
+
22
+ @media screen and (min-width: 1212px) {
23
+ left: 0;
24
+ }
25
+ }
26
+
27
+ .provostLogo {
28
+ display: none;
29
+
30
+ @media screen and (min-width: 800px) {
31
+ display: block;
32
+ position: absolute;
33
+ right: 12px;
34
+ width: 227px;
35
+ }
36
+
37
+ @media screen and (min-width: 1212px) {
38
+ right: 0;
39
+ }
40
+ }
41
+
42
+ .hGroup {
43
+ background-color: var(--ndProvostBlue);
44
+ height: 50px;
45
+ display: block;
46
+
47
+ a {
48
+ color: var(--white);
49
+ text-decoration: none;
50
+ }
51
+ }
52
+
53
+ .navWrapper {
54
+ display: block;
55
+ margin: 0 auto;
56
+ max-width: 1200px;
57
+ padding: 0;
58
+ position: relative;
59
+ }
60
+
61
+ .nav {
62
+ box-sizing: border-box;
63
+ display: block;
64
+ height: 50px;
65
+ position: relative;
66
+ overflow: hidden;
67
+ width: 100%;
68
+ }
@@ -0,0 +1,6 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { BrandingBarV2 } from '.';
3
+ declare const meta: Meta<typeof BrandingBarV2>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof BrandingBarV2>;
6
+ export declare const Default: Story;
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { BrandingBarV2 } from '.';
3
+ import { UIVersion2 } from '../../../utils/decorators/UIVersion2';
4
+ const meta = {
5
+ title: 'Elements/BrandingBarV2',
6
+ component: BrandingBarV2,
7
+ tags: ['autodocs'],
8
+ decorators: [UIVersion2],
9
+ };
10
+ export default meta;
11
+ export const Default = {
12
+ render: () => _jsx(BrandingBarV2, {}),
13
+ };
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const BrandingBarV2: React.FC;
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { BoxV2 } from '../BoxV2';
3
+ import * as styles from './BrandingBarV2.module.css';
4
+ import clsx from 'clsx';
5
+ const typeSafeStyles = styles;
6
+ const ProvostImage = 'data:image/png;base64,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';
7
+ const UniversityLogo = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlcAAABkCAMAAACclOWcAAAABGdBTUEAALGPC/xhBQAAADNQTFRF////////////////////////////////////////////////////////////AAAA////FbWC9gAAABB0Uk5TcI+vUM8w358gYO8Qf0C/AK6MYRQAAAmFSURBVHja7ZzrlqyqDoVVFOVavv/TbgFFLlGxu/qMM/ae80+v0hJD+AghWqv7QND31cEFELiCwBUEriAIXEHgCgJXEASuIHAFgSsIAlcQuILAFQSBKwhcQeAKgsAVBK4gcAVB4AoCVxC4giBwBYErCFxBELiCwBUEriAIXEHgCgJXEASuIHAFgSsIAlcQuPq/09R1C7wArr5MlR36VQKsfyFXyhjzPLCi/Ar7BgyT3JzVr/rnDRgz/c+s/Zl71de4WuyuwX3U+4fzTuHzvH8cwsc+mcPp5cEtxyH2SZqMvhI2k0iM0Xrej2pB+VaMqxOfk2N9fjcvK/N7jGscz6OD1sRrh0afS+cVQ8Sr3WiV36G03XrbVyvKsbux9iP00b++m+r4mam/sf307KDFdPm1sW5jqRtn1cj1uSWTi1dsdt2VwezFd3825yWml+48OxIMHr8bTNkv789Lls67kO8OXLqtgZmp84rBnR6dAVtjKSMz9xdaj09f+l9tzQ7GiO1LJk15eBiuZLw3e/z4uOObtj9nd7TvDtfq+DCLNq6GMNwLlXV5E3bXBxcm/vC3dT1lxt+Qs/zyG2s/nT8s/dHVlvc2ffBXuJxf274MfG/Hytj7OsZIqo19gDNPlA5fRDTf3UCEdZCfTvGf5mKm+XYPSxZ/War88nhoTByXt6hcg8HverXVhduZZcwa2KnbsPKX89wCb1/qqGUdPTXrPkQiHanP4jw7REsaqdpau4lry3p26cqF4Ua+Z+LTbK3rtVt6lftbx8oxnA3X367BMTgYx6hkxHec86lYNieB5Ri+EkB2mP9Rg7PIcWWjcT4slxmE7/E5ylm0+FSXn0M9xQ9SlTM0NlKsF3Y/4wdKV2NndoN0ZV/exyk/PmSntTu+7P9sXARdG+zmrHdRHPbShSLpzCQLsBqs1ceol4tr6nt9y1Xqcz86gkaPWky9w+Z8cO2HgORIGEiudMmNWWXasF0/j1wpmVwwVKlu2seR5MrH2vxUd04a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';
8
+ export const BrandingBarV2 = () => {
9
+ return (_jsx("hgroup", Object.assign({ className: typeSafeStyles.hGroup }, { children: _jsx(BoxV2, Object.assign({ className: typeSafeStyles.navWrapper }, { children: _jsxs("nav", Object.assign({ "aria-label": "University of Notre Dame", className: typeSafeStyles.nav }, { children: [_jsxs("a", Object.assign({ className: clsx(typeSafeStyles.universityLogo, typeSafeStyles.sharedLink), style: { backgroundImage: `url(${UniversityLogo})` }, href: "http://nd.edu" }, { children: ["University ", _jsx("i", { children: "of" }), " Notre Dame"] })), _jsxs("a", Object.assign({ className: clsx(typeSafeStyles.provostLogo, typeSafeStyles.sharedLink), style: { backgroundImage: `url(${ProvostImage})` }, href: "http://provost.nd.edu" }, { children: ["Office ", _jsx("i", { children: "of the" }), " Provost"] }))] })) })) })));
10
+ };
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const CaptionV2: React.FC<React.HTMLAttributes<HTMLTableCaptionElement>>;
@@ -0,0 +1,22 @@
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
+ export const CaptionV2 = (_a) => {
14
+ var rest = __rest(_a, []);
15
+ return (_jsx("caption", Object.assign({ style: {
16
+ display: 'block',
17
+ fontStyle: 'italic',
18
+ fontWeight: 400,
19
+ fontFamily: '"Libre Franklin","Helvetica Neue",Helvetica,Arial,Verdana,sans-serif',
20
+ fontSize: '0.8rem',
21
+ } }, rest)));
22
+ };
@@ -0,0 +1,8 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { DatePickerV2 } from '.';
3
+ declare const meta: Meta<typeof DatePickerV2>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof DatePickerV2>;
6
+ export declare const Default: Story;
7
+ export declare const Inline: Story;
8
+ export declare const HighlightedDates: Story;
@@ -0,0 +1,53 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { DatePickerV2 } from '.';
4
+ import { BoxV2 } from '../BoxV2';
5
+ import { UIVersion2 } from '../../../utils/decorators/UIVersion2';
6
+ const meta = {
7
+ title: 'Elements/Fields/DatePickerV2',
8
+ component: DatePickerV2,
9
+ tags: ['autodocs'],
10
+ decorators: [UIVersion2],
11
+ };
12
+ export default meta;
13
+ const StatefulDatePickerV2 = (props) => {
14
+ const [date, setDate] = useState(new Date());
15
+ return (_jsx(DatePickerV2, Object.assign({}, props, { value: date, onChange: (d) => {
16
+ setDate(d);
17
+ } })));
18
+ };
19
+ export const Default = {
20
+ render: () => (_jsx(BoxV2, Object.assign({ sx: { height: '500px' } }, { children: _jsx(StatefulDatePickerV2, { placeholder: "test" }) }))),
21
+ };
22
+ export const Inline = {
23
+ argTypes: {
24
+ backgroundColor: {
25
+ options: ['blue', 'gold', 'green', 'red'],
26
+ control: {
27
+ type: 'select',
28
+ },
29
+ },
30
+ },
31
+ render: (args) => {
32
+ const { backgroundColor } = args;
33
+ return (_jsx(BoxV2, Object.assign({ sx: { height: '500px' } }, { children: _jsx(StatefulDatePickerV2, { backgroundColor: backgroundColor, inline: true }) })));
34
+ },
35
+ };
36
+ export const HighlightedDates = {
37
+ argTypes: {
38
+ backgroundColor: {
39
+ options: ['blue', 'gold', 'green', 'red'],
40
+ control: {
41
+ type: 'select',
42
+ },
43
+ },
44
+ },
45
+ render: (args) => {
46
+ const { backgroundColor } = args;
47
+ const highlightedDate1 = new Date();
48
+ highlightedDate1.setDate(highlightedDate1.getDate() + 1);
49
+ const highlightedDate2 = new Date();
50
+ highlightedDate2.setDate(highlightedDate2.getDate() - 1);
51
+ return (_jsx(BoxV2, Object.assign({ sx: { height: '500px' } }, { children: _jsx(StatefulDatePickerV2, { inline: true, backgroundColor: backgroundColor, highlightDates: [highlightedDate1, highlightedDate2] }) })));
52
+ },
53
+ };
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ import 'react-datepicker/dist/react-datepicker.css';
3
+ import { TextInputV2Props } from '../TextInputV2';
4
+ import { BoxV2Props } from '../BoxV2';
5
+ export declare const InputWrapperV2: React.ForwardRefExoticComponent<{
6
+ onChange?: ((e: React.ChangeEvent) => void) | undefined;
7
+ onClick?: ((e: React.MouseEvent) => void) | undefined;
8
+ value?: string | undefined;
9
+ children: React.ReactElement;
10
+ } & React.RefAttributes<any>>;
11
+ export declare const areDatesEqual: (d1: Date, d2: Date) => boolean;
12
+ export declare const isDateInThePast: (d1: Date, d2: Date) => boolean;
13
+ export declare const DatePickerV2: React.FC<{
14
+ value: Date;
15
+ onChange: (date: Date) => void;
16
+ minDate?: Date;
17
+ maxDate?: Date;
18
+ inline?: boolean;
19
+ backgroundColor?: string;
20
+ highlightDates?: Date[];
21
+ wrapperProps?: BoxV2Props;
22
+ inputProps?: Partial<TextInputV2Props>;
23
+ }>;
@@ -0,0 +1,57 @@
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 React from 'react';
14
+ import _ReactDatePicker from 'react-datepicker';
15
+ import 'react-datepicker/dist/react-datepicker.css';
16
+ import { TextInputV2 } from '../TextInputV2';
17
+ import _CalendarIcon from '@mui/icons-material/CalendarMonth';
18
+ import { BoxV2 } from '../BoxV2';
19
+ import { importedDefaultComponentShim } from '../../../utils/misc';
20
+ const CalendarIcon = importedDefaultComponentShim(_CalendarIcon);
21
+ const ReactDatePicker = importedDefaultComponentShim(_ReactDatePicker);
22
+ export const InputWrapperV2 = React.forwardRef(({ onChange, value, children, onClick }, ref) => {
23
+ return React.cloneElement(children, {
24
+ value: value,
25
+ onChangeRaw: onChange,
26
+ ref: ref,
27
+ leftIcon: CalendarIcon,
28
+ onClick,
29
+ });
30
+ });
31
+ const PermissiveTextInputV2 = TextInputV2;
32
+ export const areDatesEqual = (d1, d2) => {
33
+ const serializeDate = (d) => `${d.getFullYear()} ${d.getMonth()} ${d.getDate()}`;
34
+ return serializeDate(d1) === serializeDate(d2);
35
+ };
36
+ export const isDateInThePast = (d1, d2) => {
37
+ const serializeDate = (d) => `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}`;
38
+ return serializeDate(d1) < serializeDate(d2);
39
+ };
40
+ export const DatePickerV2 = (_a) => {
41
+ var { value, wrapperProps, inputProps, backgroundColor, highlightDates } = _a, rest = __rest(_a, ["value", "wrapperProps", "inputProps", "backgroundColor", "highlightDates"]);
42
+ const highlightDateSet = new Set(highlightDates === null || highlightDates === void 0 ? void 0 : highlightDates.map((d) => d.toDateString()));
43
+ if (!backgroundColor)
44
+ backgroundColor = 'blue';
45
+ return (_jsx(BoxV2, Object.assign({}, wrapperProps, { children: _jsx(ReactDatePicker, Object.assign({ calendarClassName: `ndlib-date-picker ndlib-date-picker-${backgroundColor}`, selected: value, dayClassName: (date) => {
46
+ if (areDatesEqual(date, value)) {
47
+ return '';
48
+ }
49
+ if (isDateInThePast(date, value)) {
50
+ return 'ndlib-date-picker-pastdate';
51
+ }
52
+ if (highlightDateSet.has(date.toDateString())) {
53
+ return 'ndlib-date-picker-highlight';
54
+ }
55
+ return '';
56
+ }, customInput: _jsx(InputWrapperV2, { children: _jsx(PermissiveTextInputV2, Object.assign({}, inputProps)) }) }, rest)) })));
57
+ };
@@ -0,0 +1,8 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { DropdownV2 } from '.';
3
+ declare const meta: Meta<typeof DropdownV2>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof DropdownV2>;
6
+ export declare const Default: Story;
7
+ export declare const MatchWidth: Story;
8
+ export declare const ForcePlacement: Story;
@@ -0,0 +1,26 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';
3
+ import { ButtonV2 } from '../ButtonV2';
4
+ import { BoxV2 } from '../BoxV2';
5
+ import { DropdownV2 } from '.';
6
+ import { ParagraphV2 } from '../ParagraphV2';
7
+ import { ColumnV2 } from '../ColumnV2';
8
+ import { UIVersion2 } from '../../../utils/decorators/UIVersion2';
9
+ const meta = {
10
+ title: 'Elements/DropdownV2',
11
+ component: DropdownV2,
12
+ tags: ['autodocs'],
13
+ decorators: [UIVersion2],
14
+ };
15
+ export default meta;
16
+ const lorem = `Lorem ipsum dolor sit amet, consectetur adipiscing elit.
17
+ Nullam id nunc vitae magna aliquam aliquet. In hac habitasse platea dictumst.`;
18
+ export const Default = {
19
+ render: () => (_jsx(BoxV2, Object.assign({ sx: { width: '200px', height: '200px' } }, { children: _jsx(DropdownV2, { renderAnchor: ({ anchorProps }) => (_jsx(ButtonV2, Object.assign({}, anchorProps, { rightIcon: ArrowDropDownIcon }, { children: "Open Dropdown" }))), renderDropdown: () => _jsx(ParagraphV2, { children: lorem }) }) }))),
20
+ };
21
+ export const MatchWidth = {
22
+ render: () => (_jsx(BoxV2, Object.assign({ sx: { width: '200px', height: '200px' } }, { children: _jsx(DropdownV2, { matchWidth: true, renderAnchor: ({ anchorProps }) => (_jsx(ButtonV2, Object.assign({}, anchorProps, { rightIcon: ArrowDropDownIcon }, { children: "Open Dropdown" }))), renderDropdown: () => _jsx(ParagraphV2, { children: lorem }) }) }))),
23
+ };
24
+ export const ForcePlacement = {
25
+ render: () => (_jsx(ColumnV2, Object.assign({ sx: { width: '200x', height: '100vh' }, justify: "flex-end" }, { children: _jsx(DropdownV2, { allowedPlacements: ['bottom-start'], renderAnchor: ({ anchorProps }) => (_jsx(ButtonV2, Object.assign({}, anchorProps, { rightIcon: ArrowDropDownIcon }, { children: "Open Dropdown" }))), renderDropdown: () => _jsx(ParagraphV2, { children: lorem }) }) }))),
26
+ };
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ import { StyledElementPropsV2 } from '../../../theme';
3
+ type AnchorProps = Omit<React.HTMLAttributes<HTMLButtonElement>, 'color'>;
4
+ type AnchorRenderFn = (params: {
5
+ anchorProps: AnchorProps;
6
+ isOpen: boolean;
7
+ setIsOpen: (isOpen: boolean) => void;
8
+ }) => React.ReactNode;
9
+ type DropdownRenderFn = (params: {
10
+ styles: React.CSSProperties;
11
+ ref: React.Ref<any>;
12
+ isOpen: boolean;
13
+ setIsOpen: (isOpen: boolean) => void;
14
+ id: string;
15
+ }) => React.ReactNode;
16
+ type Placement = 'top-start' | 'bottom-start' | 'top-end' | 'bottom-end';
17
+ type DropdownV2Props = StyledElementPropsV2<HTMLDivElement, {
18
+ renderAnchor: AnchorRenderFn;
19
+ renderDropdown: DropdownRenderFn;
20
+ shouldRenderDropdownContainer?: boolean;
21
+ matchWidth?: boolean;
22
+ allowedPlacements?: Placement[];
23
+ }>;
24
+ export declare const OverlayV2: React.FC<StyledElementPropsV2<HTMLDivElement>>;
25
+ export declare const DropdownV2: React.FC<DropdownV2Props>;
26
+ export {};