@ndlib/component-library 0.0.7

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/dist/components/elements/Button/Button.stories.d.ts +8 -0
  2. package/dist/components/elements/Button/Button.stories.js +39 -0
  3. package/dist/components/elements/Button/Button.test.d.ts +1 -0
  4. package/dist/components/elements/Button/Button.test.js +20 -0
  5. package/dist/components/elements/Button/index.d.ts +20 -0
  6. package/dist/components/elements/Button/index.js +82 -0
  7. package/dist/components/elements/Group/index.d.ts +23 -0
  8. package/dist/components/elements/Group/index.js +70 -0
  9. package/dist/components/elements/Link/Link.stories.d.ts +6 -0
  10. package/dist/components/elements/Link/Link.stories.js +21 -0
  11. package/dist/components/elements/Link/Link.test.d.ts +1 -0
  12. package/dist/components/elements/Link/Link.test.js +58 -0
  13. package/dist/components/elements/Link/index.d.ts +14 -0
  14. package/dist/components/elements/Link/index.js +41 -0
  15. package/dist/components/elements/layout/Box.d.ts +6 -0
  16. package/dist/components/elements/layout/Box.js +4 -0
  17. package/dist/components/elements/layout/Box.stories.d.ts +6 -0
  18. package/dist/components/elements/layout/Box.stories.js +12 -0
  19. package/dist/components/elements/layout/Column.d.ts +7 -0
  20. package/dist/components/elements/layout/Column.js +18 -0
  21. package/dist/components/elements/layout/Flex.stories.d.ts +9 -0
  22. package/dist/components/elements/layout/Flex.stories.js +23 -0
  23. package/dist/components/elements/layout/Flex.test.d.ts +1 -0
  24. package/dist/components/elements/layout/Flex.test.js +34 -0
  25. package/dist/components/elements/layout/Row.d.ts +17 -0
  26. package/dist/components/elements/layout/Row.js +44 -0
  27. package/dist/components/elements/text/Heading/Heading.stories.d.ts +8 -0
  28. package/dist/components/elements/text/Heading/Heading.stories.js +37 -0
  29. package/dist/components/elements/text/Heading/Heading.test.d.ts +1 -0
  30. package/dist/components/elements/text/Heading/Heading.test.js +51 -0
  31. package/dist/components/elements/text/Heading/index.d.ts +19 -0
  32. package/dist/components/elements/text/Heading/index.js +59 -0
  33. package/dist/components/elements/text/Label/Label.stories.d.ts +6 -0
  34. package/dist/components/elements/text/Label/Label.stories.js +20 -0
  35. package/dist/components/elements/text/Label/Label.test.d.ts +1 -0
  36. package/dist/components/elements/text/Label/Label.test.js +56 -0
  37. package/dist/components/elements/text/Label/index.d.ts +20 -0
  38. package/dist/components/elements/text/Label/index.js +36 -0
  39. package/dist/components/elements/text/Paragraph/Paragraph.stories.d.ts +6 -0
  40. package/dist/components/elements/text/Paragraph/Paragraph.stories.js +26 -0
  41. package/dist/components/elements/text/Paragraph/Paragraph.test.d.ts +1 -0
  42. package/dist/components/elements/text/Paragraph/Paragraph.test.js +9 -0
  43. package/dist/components/elements/text/Paragraph/index.d.ts +13 -0
  44. package/dist/components/elements/text/Paragraph/index.js +29 -0
  45. package/dist/components/providers/componentConfig.d.ts +20 -0
  46. package/dist/components/providers/componentConfig.js +31 -0
  47. package/dist/components/providers/env.d.ts +14 -0
  48. package/dist/components/providers/env.js +25 -0
  49. package/dist/components/providers/theme.d.ts +2 -0
  50. package/dist/components/providers/theme.js +6 -0
  51. package/dist/components/providers/ui.d.ts +10 -0
  52. package/dist/components/providers/ui.js +7 -0
  53. package/dist/index.d.ts +13 -0
  54. package/dist/index.js +13 -0
  55. package/dist/theme/Color.stories.d.ts +5 -0
  56. package/dist/theme/Color.stories.js +26 -0
  57. package/dist/theme/colors.d.ts +14 -0
  58. package/dist/theme/colors.js +23 -0
  59. package/dist/theme/index.d.ts +19 -0
  60. package/dist/theme/index.js +18 -0
  61. package/dist/theme/spacing.d.ts +0 -0
  62. package/dist/theme/spacing.js +1 -0
  63. package/dist/theme/typography.d.ts +52 -0
  64. package/dist/theme/typography.js +135 -0
  65. package/dist/utils/misc.d.ts +3 -0
  66. package/dist/utils/misc.js +1 -0
  67. package/dist/utils/test.d.ts +2 -0
  68. package/dist/utils/test.js +7 -0
  69. package/global.css +59 -0
  70. package/package.json +72 -0
@@ -0,0 +1,23 @@
1
+ export var COLOR;
2
+ (function (COLOR) {
3
+ COLOR["TEXT"] = "text";
4
+ COLOR["BACKGROUND"] = "background";
5
+ COLOR["TRANSPARENT"] = "transparent";
6
+ COLOR["PRIMARY"] = "primary";
7
+ COLOR["PRIMARY_HIGHLIGHT"] = "primaryHighlight";
8
+ COLOR["SECONDARY"] = "secondary";
9
+ COLOR["SECONDARY_HIGHLIGHT"] = "secondaryHighlight";
10
+ COLOR["TEXT_ON_PRIMARY"] = "textOnPrimary";
11
+ COLOR["TEXT_ON_SECONDARY"] = "textOnSecondary";
12
+ })(COLOR || (COLOR = {}));
13
+ export const colors = {
14
+ [COLOR.TEXT]: '#222222',
15
+ [COLOR.BACKGROUND]: '#ffffff',
16
+ [COLOR.TRANSPARENT]: 'rgba(0,0,0,0)',
17
+ [COLOR.PRIMARY]: '#0c2340',
18
+ [COLOR.PRIMARY_HIGHLIGHT]: '#000d1d',
19
+ [COLOR.TEXT_ON_PRIMARY]: '#ffffff',
20
+ [COLOR.SECONDARY]: '#f8e999',
21
+ [COLOR.SECONDARY_HIGHLIGHT]: '#ddcc70',
22
+ [COLOR.TEXT_ON_SECONDARY]: '#242111',
23
+ };
@@ -0,0 +1,19 @@
1
+ import { PropsWithChildren } from 'react';
2
+ import { Theme, ThemeUICSSObject } from 'theme-ui';
3
+ import { FONT, FONT_SIZE, FONT_WEIGHT, LINE_HEIGHT } from './typography';
4
+ import { COLOR } from './colors';
5
+ export declare const theme: Theme;
6
+ export type StylesProp = ThemeUICSSObject & {
7
+ color?: COLOR;
8
+ bg?: COLOR;
9
+ borderColor?: COLOR;
10
+ fontSize?: FONT_SIZE;
11
+ font?: FONT;
12
+ fontWeight?: FONT_WEIGHT;
13
+ lineHeight?: LINE_HEIGHT;
14
+ };
15
+ export type StyledElementProps<E extends Element, CustomProps = object> = {
16
+ sx?: StylesProp;
17
+ children?: React.ReactNode;
18
+ } & React.HTMLAttributes<E> & CustomProps;
19
+ export declare const ThemeProvider: React.FC<PropsWithChildren>;
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { ThemeProvider as ThemeUiProvider, } from 'theme-ui';
3
+ import { fontStyles, } from './typography';
4
+ import { colors } from './colors';
5
+ export const theme = Object.assign(Object.assign({}, fontStyles), { colors, space: [
6
+ '0rem',
7
+ '0.25rem',
8
+ '0.5rem',
9
+ '0.75rem',
10
+ '1rem',
11
+ '1.5rem',
12
+ '2rem',
13
+ '3rem',
14
+ '4rem',
15
+ ] });
16
+ export const ThemeProvider = ({ children }) => {
17
+ return _jsx(ThemeUiProvider, Object.assign({ theme: theme }, { children: children }));
18
+ };
File without changes
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,52 @@
1
+ /** @jsxImportSource theme-ui */
2
+ import { Theme } from 'theme-ui';
3
+ export declare enum FONT {
4
+ BRANDED = "branded",
5
+ BRANDED2 = "branded2",
6
+ NORMAL = "normal"
7
+ }
8
+ export declare enum FONT_SIZE {
9
+ XS = "xs",
10
+ SM = "sm",
11
+ MD = "md",
12
+ LG = "lg",
13
+ XL = "xl",
14
+ XXL = "xxl"
15
+ }
16
+ export declare enum FONT_WEIGHT {
17
+ NORMAL = "normal",
18
+ BOLD = "bold"
19
+ }
20
+ export declare enum LINE_HEIGHT {
21
+ NORMAL = "normal",
22
+ CONDENSED = "condensed",
23
+ EXTRA = "extra"
24
+ }
25
+ export declare const fontStyles: Partial<Theme>;
26
+ export declare enum TYPOGRAPHY_TYPE {
27
+ PARAGRAPH_SMALL = "paragraphSmall",
28
+ PARAGRAPH_MEDIUM = "paragraphMedium",
29
+ PARAGRAPH_LARGE = "paragraphLarge",
30
+ HEADING_XSMALL = "headingXSmall",
31
+ HEADING_SMALL = "headingSmall",
32
+ HEADING_MEDIUM = "headingMedium",
33
+ HEADING_LARGE = "headingLarge",
34
+ HEADING_XLARGE = "headingXLarge",
35
+ CONTROL_SMALL = "controlSmall",
36
+ CONTROL_MEDIUM = "controlMedium",
37
+ CONTROL_LARGE = "controlLarge"
38
+ }
39
+ export declare const typographyStyleMap: {
40
+ [key in TYPOGRAPHY_TYPE]: {
41
+ fontFamily: FONT;
42
+ fontSize: FONT_SIZE;
43
+ fontWeight?: FONT_WEIGHT;
44
+ lineHeight?: LINE_HEIGHT;
45
+ };
46
+ };
47
+ export declare const getTypographyStyles: (typography?: TYPOGRAPHY_TYPE) => {
48
+ fontFamily: FONT;
49
+ fontSize: FONT_SIZE;
50
+ fontWeight?: FONT_WEIGHT | undefined;
51
+ lineHeight?: LINE_HEIGHT | undefined;
52
+ };
@@ -0,0 +1,135 @@
1
+ export var FONT;
2
+ (function (FONT) {
3
+ FONT["BRANDED"] = "branded";
4
+ FONT["BRANDED2"] = "branded2";
5
+ FONT["NORMAL"] = "normal";
6
+ })(FONT || (FONT = {}));
7
+ export var FONT_SIZE;
8
+ (function (FONT_SIZE) {
9
+ FONT_SIZE["XS"] = "xs";
10
+ FONT_SIZE["SM"] = "sm";
11
+ FONT_SIZE["MD"] = "md";
12
+ FONT_SIZE["LG"] = "lg";
13
+ FONT_SIZE["XL"] = "xl";
14
+ FONT_SIZE["XXL"] = "xxl";
15
+ })(FONT_SIZE || (FONT_SIZE = {}));
16
+ export var FONT_WEIGHT;
17
+ (function (FONT_WEIGHT) {
18
+ FONT_WEIGHT["NORMAL"] = "normal";
19
+ FONT_WEIGHT["BOLD"] = "bold";
20
+ })(FONT_WEIGHT || (FONT_WEIGHT = {}));
21
+ // export enum LETTER_SPACING {
22
+ // NORMAL='normal',
23
+ // EXTRA='extra',
24
+ // }
25
+ export var LINE_HEIGHT;
26
+ (function (LINE_HEIGHT) {
27
+ LINE_HEIGHT["NORMAL"] = "normal";
28
+ LINE_HEIGHT["CONDENSED"] = "condensed";
29
+ LINE_HEIGHT["EXTRA"] = "extra";
30
+ })(LINE_HEIGHT || (LINE_HEIGHT = {}));
31
+ export const fontStyles = {
32
+ fonts: {
33
+ [FONT.BRANDED]: 'GPMed, sans-serif',
34
+ [FONT.BRANDED2]: 'GPCMed, sans-serif',
35
+ [FONT.NORMAL]: "Inter, Roboto, 'Helvetica Neue', sans-serif",
36
+ },
37
+ fontSizes: {
38
+ [FONT_SIZE.XS]: '0.75rem',
39
+ [FONT_SIZE.SM]: '0.875rem',
40
+ [FONT_SIZE.MD]: '1rem',
41
+ [FONT_SIZE.LG]: '1.25rem',
42
+ [FONT_SIZE.XL]: '2rem',
43
+ [FONT_SIZE.XXL]: '3rem',
44
+ },
45
+ lineHeights: {
46
+ [LINE_HEIGHT.NORMAL]: 1.2,
47
+ [LINE_HEIGHT.CONDENSED]: 1.1,
48
+ [LINE_HEIGHT.EXTRA]: 1.3,
49
+ },
50
+ fontWeights: {
51
+ [FONT_WEIGHT.NORMAL]: 400,
52
+ [FONT_WEIGHT.BOLD]: 700,
53
+ },
54
+ // letterSpacings: {
55
+ // [LETTER_SPACING.NORMAL]: 'none',
56
+ // [LETTER_SPACING.EXTRA]: '0.5px'
57
+ // }
58
+ };
59
+ export var TYPOGRAPHY_TYPE;
60
+ (function (TYPOGRAPHY_TYPE) {
61
+ TYPOGRAPHY_TYPE["PARAGRAPH_SMALL"] = "paragraphSmall";
62
+ TYPOGRAPHY_TYPE["PARAGRAPH_MEDIUM"] = "paragraphMedium";
63
+ TYPOGRAPHY_TYPE["PARAGRAPH_LARGE"] = "paragraphLarge";
64
+ TYPOGRAPHY_TYPE["HEADING_XSMALL"] = "headingXSmall";
65
+ TYPOGRAPHY_TYPE["HEADING_SMALL"] = "headingSmall";
66
+ TYPOGRAPHY_TYPE["HEADING_MEDIUM"] = "headingMedium";
67
+ TYPOGRAPHY_TYPE["HEADING_LARGE"] = "headingLarge";
68
+ TYPOGRAPHY_TYPE["HEADING_XLARGE"] = "headingXLarge";
69
+ TYPOGRAPHY_TYPE["CONTROL_SMALL"] = "controlSmall";
70
+ TYPOGRAPHY_TYPE["CONTROL_MEDIUM"] = "controlMedium";
71
+ TYPOGRAPHY_TYPE["CONTROL_LARGE"] = "controlLarge";
72
+ })(TYPOGRAPHY_TYPE || (TYPOGRAPHY_TYPE = {}));
73
+ export const typographyStyleMap = {
74
+ [TYPOGRAPHY_TYPE.PARAGRAPH_SMALL]: {
75
+ fontFamily: FONT.NORMAL,
76
+ fontSize: FONT_SIZE.SM,
77
+ lineHeight: LINE_HEIGHT.EXTRA,
78
+ },
79
+ [TYPOGRAPHY_TYPE.PARAGRAPH_MEDIUM]: {
80
+ fontFamily: FONT.NORMAL,
81
+ fontSize: FONT_SIZE.MD,
82
+ lineHeight: LINE_HEIGHT.NORMAL,
83
+ },
84
+ [TYPOGRAPHY_TYPE.PARAGRAPH_LARGE]: {
85
+ fontFamily: FONT.NORMAL,
86
+ fontSize: FONT_SIZE.LG,
87
+ lineHeight: LINE_HEIGHT.NORMAL,
88
+ },
89
+ [TYPOGRAPHY_TYPE.HEADING_XSMALL]: {
90
+ fontFamily: FONT.BRANDED2,
91
+ fontSize: FONT_SIZE.SM,
92
+ lineHeight: LINE_HEIGHT.NORMAL,
93
+ },
94
+ [TYPOGRAPHY_TYPE.HEADING_SMALL]: {
95
+ fontFamily: FONT.BRANDED2,
96
+ fontSize: FONT_SIZE.MD,
97
+ lineHeight: LINE_HEIGHT.NORMAL,
98
+ },
99
+ [TYPOGRAPHY_TYPE.HEADING_MEDIUM]: {
100
+ fontFamily: FONT.BRANDED,
101
+ fontSize: FONT_SIZE.LG,
102
+ lineHeight: LINE_HEIGHT.NORMAL,
103
+ },
104
+ [TYPOGRAPHY_TYPE.HEADING_LARGE]: {
105
+ fontFamily: FONT.BRANDED,
106
+ fontSize: FONT_SIZE.XL,
107
+ lineHeight: LINE_HEIGHT.NORMAL,
108
+ },
109
+ [TYPOGRAPHY_TYPE.HEADING_XLARGE]: {
110
+ fontFamily: FONT.BRANDED,
111
+ fontSize: FONT_SIZE.XXL,
112
+ lineHeight: LINE_HEIGHT.NORMAL,
113
+ },
114
+ [TYPOGRAPHY_TYPE.CONTROL_SMALL]: {
115
+ fontFamily: FONT.NORMAL,
116
+ fontSize: FONT_SIZE.SM,
117
+ fontWeight: FONT_WEIGHT.BOLD,
118
+ lineHeight: LINE_HEIGHT.NORMAL,
119
+ },
120
+ [TYPOGRAPHY_TYPE.CONTROL_MEDIUM]: {
121
+ fontFamily: FONT.NORMAL,
122
+ fontSize: FONT_SIZE.MD,
123
+ fontWeight: FONT_WEIGHT.BOLD,
124
+ lineHeight: LINE_HEIGHT.NORMAL,
125
+ },
126
+ [TYPOGRAPHY_TYPE.CONTROL_LARGE]: {
127
+ fontFamily: FONT.NORMAL,
128
+ fontSize: FONT_SIZE.LG,
129
+ fontWeight: FONT_WEIGHT.BOLD,
130
+ lineHeight: LINE_HEIGHT.NORMAL,
131
+ },
132
+ };
133
+ export const getTypographyStyles = (typography) => {
134
+ return typographyStyleMap[typography || TYPOGRAPHY_TYPE.PARAGRAPH_MEDIUM];
135
+ };
@@ -0,0 +1,3 @@
1
+ export type DeepPartial<T> = T extends object ? {
2
+ [P in keyof T]?: DeepPartial<T[P]>;
3
+ } : T;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ import { UiConfig } from '../components/providers/ui';
2
+ export declare const render: (component: React.ReactNode, configParam?: UiConfig) => import("@testing-library/react").RenderResult<typeof import("@testing-library/dom/types/queries"), HTMLElement, HTMLElement>;
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { render as rtlRender } from '@testing-library/react';
3
+ import { UiProvider } from '../components/providers/ui';
4
+ export const render = (component, configParam) => {
5
+ const config = configParam || {};
6
+ return rtlRender(_jsx(UiProvider, Object.assign({ env: config.env, components: config.components }, { children: component })));
7
+ };
package/global.css ADDED
@@ -0,0 +1,59 @@
1
+ html, body, div, span, applet, object, iframe,
2
+ h1, h2, h3, h4, h5, h6, p, blockquote, pre,
3
+ a, abbr, acronym, address, big, cite, code,
4
+ del, dfn, em, img, ins, kbd, q, s, samp,
5
+ small, strike, strong, sub, sup, tt, var,
6
+ b, u, i, center,
7
+ dl, dt, dd, ol, ul, li,
8
+ fieldset, form, label, legend,
9
+ table, caption, tbody, tfoot, thead, tr, th, td,
10
+ article, aside, canvas, details, embed,
11
+ figure, figcaption, footer, header, hgroup,
12
+ menu, nav, output, ruby, section, summary,
13
+ time, mark, audio, video {
14
+ margin: 0;
15
+ padding: 0;
16
+ border: 0;
17
+ font-size: 100%;
18
+ font: inherit;
19
+ vertical-align: baseline;
20
+ }
21
+
22
+ /* HTML5 display-role reset for older browsers */
23
+ article, aside, details, figcaption, figure,
24
+ footer, header, hgroup, menu, nav, section {
25
+ display: block;
26
+ }
27
+ body {
28
+ line-height: 1;
29
+ font-size: 16px;
30
+ }
31
+ ol, ul {
32
+ list-style: none;
33
+ }
34
+ blockquote, q {
35
+ quotes: none;
36
+ }
37
+ blockquote:before, blockquote:after,
38
+ q:before, q:after {
39
+ content: '';
40
+ content: none;
41
+ }
42
+ table {
43
+ border-collapse: collapse;
44
+ border-spacing: 0;
45
+ }
46
+
47
+ @font-face {
48
+ font-family: GPCMed;
49
+ font-display: swap;
50
+ src: url('https://static.nd.edu/fonts/gp-min/gpc-medium.woff2');
51
+ src:url("https://static.nd.edu/fonts/gp-min/gpc-medium.woff2") format("woff2"),url("https://static.nd.edu/fonts/gp-min/gpc-medium.woff") format("woff"),url("https://static.nd.edu/fonts/gp-min/gpc-medium.ttf") format("truetype")
52
+ }
53
+
54
+ @font-face {
55
+ font-family: GPMed;
56
+ font-display: swap;
57
+ src: url('https://static.nd.edu/fonts/gp-min/gp-medium.woff2');
58
+ src:url("https://static.nd.edu/fonts/gp-min/gp-medium.woff2") format("woff2"),url("https://static.nd.edu/fonts/gp-min/gp-medium.woff") format("woff"),url("https://static.nd.edu/fonts/gp-min/gp-medium.ttf") format("truetype")
59
+ }
package/package.json ADDED
@@ -0,0 +1,72 @@
1
+ {
2
+ "name": "@ndlib/component-library",
3
+ "version": "0.0.7",
4
+ "type": "module",
5
+ "sideEffects": false,
6
+ "files": [
7
+ "dist",
8
+ "global.css"
9
+ ],
10
+ "main": "./dist/index.js",
11
+ "exports": {
12
+ ".": "./dist/index.js",
13
+ "./global.css": "./global.css"
14
+ },
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "https://github.com/ndlibrary/hesburgh-component-library.git"
18
+ },
19
+ "scripts": {
20
+ "lint": "eslint src --ext ts,tsx --report-unused-disable-directives && yarn prettier",
21
+ "lint:fix": "eslint src --ext ts,tsx --report-unused-disable-directives --fix && yarn prettify",
22
+ "test": "vitest",
23
+ "prettier": "prettier --check src/**/*.{ts,tsx}",
24
+ "prettify": "prettier --write src/**/*.{ts,tsx}",
25
+ "start": "storybook dev -p 6006",
26
+ "build-storybook": "storybook build -o docs && touch docs/.nojekyll",
27
+ "build": "tsc"
28
+ },
29
+ "dependencies": {
30
+ "@emotion/react": "^11.11.0",
31
+ "@mui/lab": "^5.0.0-alpha.133",
32
+ "formik": "^2.2.9",
33
+ "theme-ui": "^0.15.7"
34
+ },
35
+ "peerDependencies": {
36
+ "react": "^18.2.0",
37
+ "react-dom": "^18.2.0"
38
+ },
39
+ "devDependencies": {
40
+ "@storybook/addon-essentials": "^7.0.17",
41
+ "@storybook/addon-interactions": "^7.0.18",
42
+ "@storybook/addon-links": "^7.0.17",
43
+ "@storybook/blocks": "^7.0.17",
44
+ "@storybook/react": "^7.0.17",
45
+ "@storybook/react-vite": "^7.0.17",
46
+ "@testing-library/jest-dom": "^5.16.5",
47
+ "@testing-library/react": "^14.0.0",
48
+ "@testing-library/user-event": "^14.4.3",
49
+ "@types/react": "^18.0.28",
50
+ "@types/react-dom": "^18.0.11",
51
+ "@typescript-eslint/eslint-plugin": "^5.57.1",
52
+ "@typescript-eslint/parser": "^5.57.1",
53
+ "@vitejs/plugin-react-swc": "^3.0.0",
54
+ "eslint": "^8.38.0",
55
+ "eslint-plugin-react-hooks": "^4.6.0",
56
+ "eslint-plugin-react-refresh": "^0.3.4",
57
+ "eslint-plugin-storybook": "^0.6.12",
58
+ "jsdom": "^22.1.0",
59
+ "prettier": "^2.8.8",
60
+ "prop-types": "^15.8.1",
61
+ "react": "^18.2.0",
62
+ "react-dom": "^18.2.0",
63
+ "storybook": "^7.0.17",
64
+ "typescript": "^5.0.2",
65
+ "vite": "^4.3.2",
66
+ "vitest": "^0.31.4"
67
+ },
68
+ "prettier": {
69
+ "singleQuote": true,
70
+ "semi": false
71
+ }
72
+ }