@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.
Files changed (290) hide show
  1. package/README.md +101 -0
  2. package/dist/FontLoader.d.ts +1 -0
  3. package/dist/FontLoader.js +4 -0
  4. package/dist/components/composites/Card/Card.stories.d.ts +13 -0
  5. package/dist/components/composites/Card/Card.stories.js +122 -0
  6. package/dist/components/composites/Card/Card.test.d.ts +1 -0
  7. package/dist/components/composites/Card/Card.test.js +37 -0
  8. package/dist/components/composites/Card/index.d.ts +36 -0
  9. package/dist/components/composites/Card/index.js +89 -0
  10. package/dist/components/composites/DragDropList/DragDropList.stories.d.ts +7 -0
  11. package/dist/components/composites/DragDropList/DragDropList.stories.js +32 -0
  12. package/dist/components/composites/DragDropList/index.d.ts +25 -0
  13. package/dist/components/composites/DragDropList/index.js +48 -0
  14. package/dist/components/composites/DropdownLinks/DropdownLinks.stories.d.ts +8 -0
  15. package/dist/components/composites/DropdownLinks/DropdownLinks.stories.js +25 -0
  16. package/dist/components/composites/DropdownLinks/DropdownLinks.test.d.ts +1 -0
  17. package/dist/components/composites/DropdownLinks/DropdownLinks.test.js +27 -0
  18. package/dist/components/composites/DropdownLinks/index.d.ts +15 -0
  19. package/dist/components/composites/DropdownLinks/index.js +28 -0
  20. package/dist/components/composites/EmptyState/EmptyState.stories.d.ts +10 -0
  21. package/dist/components/composites/EmptyState/EmptyState.stories.js +31 -0
  22. package/dist/components/composites/EmptyState/EmptyState.test.d.ts +1 -0
  23. package/dist/components/composites/EmptyState/EmptyState.test.js +20 -0
  24. package/dist/components/composites/EmptyState/index.d.ts +15 -0
  25. package/dist/components/composites/EmptyState/index.js +32 -0
  26. package/dist/components/composites/Modal/Modal.stories.d.ts +6 -0
  27. package/dist/components/composites/Modal/Modal.stories.js +40 -0
  28. package/dist/components/composites/Modal/index.d.ts +21 -0
  29. package/dist/components/composites/Modal/index.js +64 -0
  30. package/dist/components/composites/NavMenu/NavMenu.stories.d.ts +6 -0
  31. package/dist/components/composites/NavMenu/NavMenu.stories.js +12 -0
  32. package/dist/components/composites/NavMenu/NavMenu.test.d.ts +1 -0
  33. package/dist/components/composites/NavMenu/NavMenu.test.js +96 -0
  34. package/dist/components/composites/NavMenu/demo.d.ts +1 -0
  35. package/dist/components/composites/NavMenu/demo.js +172 -0
  36. package/dist/components/composites/NavMenu/index.d.ts +5 -0
  37. package/dist/components/composites/NavMenu/index.js +52 -0
  38. package/dist/components/composites/Seo/SeoDataDisplay/index.d.ts +2 -0
  39. package/dist/components/composites/Seo/SeoDataDisplay/index.js +9 -0
  40. package/dist/components/composites/Seo/index.d.ts +11 -0
  41. package/dist/components/composites/Seo/index.js +16 -0
  42. package/dist/components/composites/Seo/seo.stories.d.ts +6 -0
  43. package/dist/components/composites/Seo/seo.stories.js +12 -0
  44. package/dist/components/composites/Seo/seo.test.d.ts +1 -0
  45. package/dist/components/composites/Seo/seo.test.js +56 -0
  46. package/dist/components/composites/Seo/siteMetadata.d.ts +9 -0
  47. package/dist/components/composites/Seo/siteMetadata.js +16 -0
  48. package/dist/components/composites/SnackBar/SnackBar.stories.d.ts +8 -0
  49. package/dist/components/composites/SnackBar/SnackBar.stories.js +20 -0
  50. package/dist/components/composites/SnackBar/SnackBar.test.d.ts +1 -0
  51. package/dist/components/composites/SnackBar/SnackBar.test.js +75 -0
  52. package/dist/components/composites/SnackBar/examples.d.ts +3 -0
  53. package/dist/components/composites/SnackBar/examples.js +35 -0
  54. package/dist/components/composites/SnackBar/index.d.ts +1 -0
  55. package/dist/components/composites/SnackBar/index.js +45 -0
  56. package/dist/components/composites/StructuredData/StructuredData.stories.d.ts +6 -0
  57. package/dist/components/composites/StructuredData/StructuredData.stories.js +12 -0
  58. package/dist/components/composites/StructuredData/StructuredData.test.d.ts +1 -0
  59. package/dist/components/composites/StructuredData/StructuredData.test.js +48 -0
  60. package/dist/components/composites/StructuredData/StructuredDataDisplay/index.d.ts +2 -0
  61. package/dist/components/composites/StructuredData/StructuredDataDisplay/index.js +37 -0
  62. package/dist/components/composites/StructuredData/index.d.ts +38 -0
  63. package/dist/components/composites/StructuredData/index.js +58 -0
  64. package/dist/components/composites/StructuredData/sdEvent/index.d.ts +13 -0
  65. package/dist/components/composites/StructuredData/sdEvent/index.js +16 -0
  66. package/dist/components/composites/StructuredData/sdEvent/makeEventSchema.d.ts +15 -0
  67. package/dist/components/composites/StructuredData/sdEvent/makeEventSchema.js +16 -0
  68. package/dist/components/composites/StructuredData/sdNews/index.d.ts +11 -0
  69. package/dist/components/composites/StructuredData/sdNews/index.js +14 -0
  70. package/dist/components/composites/StructuredData/sdNews/makeNewsSchema.d.ts +12 -0
  71. package/dist/components/composites/StructuredData/sdNews/makeNewsSchema.js +11 -0
  72. package/dist/components/composites/StructuredData/sdWebsite/index.d.ts +8 -0
  73. package/dist/components/composites/StructuredData/sdWebsite/index.js +11 -0
  74. package/dist/components/composites/StructuredData/sdWebsite/makeWebPageSchema.d.ts +9 -0
  75. package/dist/components/composites/StructuredData/sdWebsite/makeWebPageSchema.js +9 -0
  76. package/dist/components/composites/StructuredData/siteMetadata.d.ts +9 -0
  77. package/dist/components/composites/StructuredData/siteMetadata.js +12 -0
  78. package/dist/components/elements/Alerts/Alert.stories.d.ts +9 -0
  79. package/dist/components/elements/Alerts/Alert.stories.js +41 -0
  80. package/dist/components/elements/Alerts/Alerts.stories.d.ts +6 -0
  81. package/dist/components/elements/Alerts/Alerts.stories.js +12 -0
  82. package/dist/components/elements/Alerts/Alerts.test.d.ts +1 -0
  83. package/dist/components/elements/Alerts/Alerts.test.js +61 -0
  84. package/dist/components/elements/Alerts/index.d.ts +14 -0
  85. package/dist/components/elements/Alerts/index.js +64 -0
  86. package/dist/components/elements/ArrowLink/ArrowLink.stories.d.ts +6 -0
  87. package/dist/components/elements/ArrowLink/ArrowLink.stories.js +12 -0
  88. package/dist/components/elements/ArrowLink/ArrowLink.test.d.ts +1 -0
  89. package/dist/components/elements/ArrowLink/ArrowLink.test.js +34 -0
  90. package/dist/components/elements/ArrowLink/index.d.ts +7 -0
  91. package/dist/components/elements/ArrowLink/index.js +39 -0
  92. package/dist/components/elements/BrandingBar/BrandingBar.stories.d.ts +6 -0
  93. package/dist/components/elements/BrandingBar/BrandingBar.stories.js +11 -0
  94. package/dist/components/elements/BrandingBar/index.d.ts +2 -0
  95. package/dist/components/elements/BrandingBar/index.js +52 -0
  96. package/dist/components/elements/Button/Button.stories.d.ts +15 -0
  97. package/dist/components/elements/Button/Button.stories.js +88 -0
  98. package/dist/components/elements/Button/Button.test.d.ts +1 -0
  99. package/dist/components/elements/Button/Button.test.js +39 -0
  100. package/dist/components/elements/Button/index.d.ts +49 -0
  101. package/dist/components/elements/Button/index.js +138 -0
  102. package/dist/components/elements/Dropdown/Dropdown.stories.d.ts +7 -0
  103. package/dist/components/elements/Dropdown/Dropdown.stories.js +20 -0
  104. package/dist/components/elements/Dropdown/index.d.ts +24 -0
  105. package/dist/components/elements/Dropdown/index.js +87 -0
  106. package/dist/components/elements/Fields/AutoComplete/AutoComplete.stories.d.ts +6 -0
  107. package/dist/components/elements/Fields/AutoComplete/AutoComplete.stories.js +60 -0
  108. package/dist/components/elements/Fields/AutoComplete/index.d.ts +11 -0
  109. package/dist/components/elements/Fields/AutoComplete/index.js +26 -0
  110. package/dist/components/elements/Fields/Checkbox/Checkbox.stories.d.ts +6 -0
  111. package/dist/components/elements/Fields/Checkbox/Checkbox.stories.js +17 -0
  112. package/dist/components/elements/Fields/Checkbox/index.d.ts +8 -0
  113. package/dist/components/elements/Fields/Checkbox/index.js +22 -0
  114. package/dist/components/elements/Fields/CheckboxGroup/CheckboxGroup.stories.d.ts +7 -0
  115. package/dist/components/elements/Fields/CheckboxGroup/CheckboxGroup.stories.js +26 -0
  116. package/dist/components/elements/Fields/CheckboxGroup/index.d.ts +16 -0
  117. package/dist/components/elements/Fields/CheckboxGroup/index.js +49 -0
  118. package/dist/components/elements/Fields/DatePicker/DatePicker.stories.d.ts +8 -0
  119. package/dist/components/elements/Fields/DatePicker/DatePicker.stories.js +31 -0
  120. package/dist/components/elements/Fields/DatePicker/index.d.ts +20 -0
  121. package/dist/components/elements/Fields/DatePicker/index.js +48 -0
  122. package/dist/components/elements/Fields/MonthPicker/MonthPicker.stories.d.ts +7 -0
  123. package/dist/components/elements/Fields/MonthPicker/MonthPicker.stories.js +20 -0
  124. package/dist/components/elements/Fields/MonthPicker/index.d.ts +13 -0
  125. package/dist/components/elements/Fields/MonthPicker/index.js +24 -0
  126. package/dist/components/elements/Fields/Radio/Radio.stories.d.ts +6 -0
  127. package/dist/components/elements/Fields/Radio/Radio.stories.js +17 -0
  128. package/dist/components/elements/Fields/Radio/index.d.ts +8 -0
  129. package/dist/components/elements/Fields/Radio/index.js +22 -0
  130. package/dist/components/elements/Fields/RadioGroup/RadioGroup.stories.d.ts +6 -0
  131. package/dist/components/elements/Fields/RadioGroup/RadioGroup.stories.js +23 -0
  132. package/dist/components/elements/Fields/RadioGroup/index.d.ts +14 -0
  133. package/dist/components/elements/Fields/RadioGroup/index.js +28 -0
  134. package/dist/components/elements/Fields/Select/Select.stories.d.ts +8 -0
  135. package/dist/components/elements/Fields/Select/Select.stories.js +39 -0
  136. package/dist/components/elements/Fields/Select/index.d.ts +18 -0
  137. package/dist/components/elements/Fields/Select/index.js +178 -0
  138. package/dist/components/elements/Fields/TextInput/TextInput.stories.d.ts +9 -0
  139. package/dist/components/elements/Fields/TextInput/TextInput.stories.js +35 -0
  140. package/dist/components/elements/Fields/TextInput/index.d.ts +45 -0
  141. package/dist/components/elements/Fields/TextInput/index.js +119 -0
  142. package/dist/components/elements/Fields/option.d.ts +16 -0
  143. package/dist/components/elements/Fields/option.js +3 -0
  144. package/dist/components/elements/Group/index.d.ts +22 -0
  145. package/dist/components/elements/Group/index.js +69 -0
  146. package/dist/components/elements/Icon/Icon.stories.d.ts +7 -0
  147. package/dist/components/elements/Icon/Icon.stories.js +29 -0
  148. package/dist/components/elements/Icon/Icon.test.d.ts +1 -0
  149. package/dist/components/elements/Icon/Icon.test.js +26 -0
  150. package/dist/components/elements/Icon/index.d.ts +10 -0
  151. package/dist/components/elements/Icon/index.js +34 -0
  152. package/dist/components/elements/Link/Link.stories.d.ts +6 -0
  153. package/dist/components/elements/Link/Link.stories.js +21 -0
  154. package/dist/components/elements/Link/Link.test.d.ts +1 -0
  155. package/dist/components/elements/Link/Link.test.js +58 -0
  156. package/dist/components/elements/Link/index.d.ts +14 -0
  157. package/dist/components/elements/Link/index.js +41 -0
  158. package/dist/components/elements/List/List.stories.d.ts +10 -0
  159. package/dist/components/elements/List/List.stories.js +37 -0
  160. package/dist/components/elements/List/List.test.d.ts +1 -0
  161. package/dist/components/elements/List/List.test.js +24 -0
  162. package/dist/components/elements/List/index.d.ts +27 -0
  163. package/dist/components/elements/List/index.js +103 -0
  164. package/dist/components/elements/ListBox/Listbox.stories.d.ts +6 -0
  165. package/dist/components/elements/ListBox/Listbox.stories.js +17 -0
  166. package/dist/components/elements/ListBox/index.d.ts +33 -0
  167. package/dist/components/elements/ListBox/index.js +51 -0
  168. package/dist/components/elements/Markdown/Markdown.stories.d.ts +10 -0
  169. package/dist/components/elements/Markdown/Markdown.stories.js +97 -0
  170. package/dist/components/elements/Markdown/Markdown.test.d.ts +1 -0
  171. package/dist/components/elements/Markdown/Markdown.test.js +91 -0
  172. package/dist/components/elements/Markdown/index.d.ts +21 -0
  173. package/dist/components/elements/Markdown/index.js +75 -0
  174. package/dist/components/elements/Pill/Pill.stories.d.ts +8 -0
  175. package/dist/components/elements/Pill/Pill.stories.js +40 -0
  176. package/dist/components/elements/Pill/Pill.test.d.ts +1 -0
  177. package/dist/components/elements/Pill/Pill.test.js +18 -0
  178. package/dist/components/elements/Pill/index.d.ts +21 -0
  179. package/dist/components/elements/Pill/index.js +117 -0
  180. package/dist/components/elements/Spinner/Spinner.stories.d.ts +7 -0
  181. package/dist/components/elements/Spinner/Spinner.stories.js +26 -0
  182. package/dist/components/elements/Spinner/Spinner.test.d.ts +1 -0
  183. package/dist/components/elements/Spinner/Spinner.test.js +9 -0
  184. package/dist/components/elements/Spinner/index.d.ts +14 -0
  185. package/dist/components/elements/Spinner/index.js +49 -0
  186. package/dist/components/elements/TabList/TabList.stories.d.ts +6 -0
  187. package/dist/components/elements/TabList/TabList.stories.js +12 -0
  188. package/dist/components/elements/TabList/TabList.test.d.ts +1 -0
  189. package/dist/components/elements/TabList/TabList.test.js +19 -0
  190. package/dist/components/elements/TabList/example.d.ts +7 -0
  191. package/dist/components/elements/TabList/example.js +36 -0
  192. package/dist/components/elements/TabList/index.d.ts +10 -0
  193. package/dist/components/elements/TabList/index.js +30 -0
  194. package/dist/components/elements/Table/Table.stories.d.ts +10 -0
  195. package/dist/components/elements/Table/Table.stories.js +96 -0
  196. package/dist/components/elements/Table/Table.test.d.ts +1 -0
  197. package/dist/components/elements/Table/Table.test.js +36 -0
  198. package/dist/components/elements/Table/index.d.ts +30 -0
  199. package/dist/components/elements/Table/index.js +100 -0
  200. package/dist/components/elements/layout/Box.d.ts +9 -0
  201. package/dist/components/elements/layout/Box.js +3 -0
  202. package/dist/components/elements/layout/Box.stories.d.ts +6 -0
  203. package/dist/components/elements/layout/Box.stories.js +12 -0
  204. package/dist/components/elements/layout/Column.d.ts +8 -0
  205. package/dist/components/elements/layout/Column.js +19 -0
  206. package/dist/components/elements/layout/Flex.stories.d.ts +10 -0
  207. package/dist/components/elements/layout/Flex.stories.js +26 -0
  208. package/dist/components/elements/layout/Flex.test.d.ts +1 -0
  209. package/dist/components/elements/layout/Flex.test.js +34 -0
  210. package/dist/components/elements/layout/Row.d.ts +20 -0
  211. package/dist/components/elements/layout/Row.js +52 -0
  212. package/dist/components/elements/text/Heading/Heading.stories.d.ts +8 -0
  213. package/dist/components/elements/text/Heading/Heading.stories.js +35 -0
  214. package/dist/components/elements/text/Heading/Heading.test.d.ts +1 -0
  215. package/dist/components/elements/text/Heading/Heading.test.js +51 -0
  216. package/dist/components/elements/text/Heading/index.d.ts +20 -0
  217. package/dist/components/elements/text/Heading/index.js +62 -0
  218. package/dist/components/elements/text/Inline/Inline.stories.d.ts +6 -0
  219. package/dist/components/elements/text/Inline/Inline.stories.js +12 -0
  220. package/dist/components/elements/text/Inline/index.d.ts +6 -0
  221. package/dist/components/elements/text/Inline/index.js +21 -0
  222. package/dist/components/elements/text/Label/Label.stories.d.ts +6 -0
  223. package/dist/components/elements/text/Label/Label.stories.js +20 -0
  224. package/dist/components/elements/text/Label/Label.test.d.ts +1 -0
  225. package/dist/components/elements/text/Label/Label.test.js +56 -0
  226. package/dist/components/elements/text/Label/index.d.ts +20 -0
  227. package/dist/components/elements/text/Label/index.js +38 -0
  228. package/dist/components/elements/text/Paragraph/Paragraph.stories.d.ts +6 -0
  229. package/dist/components/elements/text/Paragraph/Paragraph.stories.js +25 -0
  230. package/dist/components/elements/text/Paragraph/Paragraph.test.d.ts +1 -0
  231. package/dist/components/elements/text/Paragraph/Paragraph.test.js +9 -0
  232. package/dist/components/elements/text/Paragraph/index.d.ts +14 -0
  233. package/dist/components/elements/text/Paragraph/index.js +29 -0
  234. package/dist/components/elements/text/ReadMore/ReadMore.stories.d.ts +8 -0
  235. package/dist/components/elements/text/ReadMore/ReadMore.stories.js +26 -0
  236. package/dist/components/elements/text/ReadMore/index.d.ts +12 -0
  237. package/dist/components/elements/text/ReadMore/index.js +71 -0
  238. package/dist/components/providers/alerts.d.ts +41 -0
  239. package/dist/components/providers/alerts.js +133 -0
  240. package/dist/components/providers/componentConfig.d.ts +25 -0
  241. package/dist/components/providers/componentConfig.js +37 -0
  242. package/dist/components/providers/dialogs.d.ts +9 -0
  243. package/dist/components/providers/dialogs.js +32 -0
  244. package/dist/components/providers/env.d.ts +14 -0
  245. package/dist/components/providers/env.js +25 -0
  246. package/dist/components/providers/media.d.ts +8 -0
  247. package/dist/components/providers/media.js +43 -0
  248. package/dist/components/providers/menu.d.ts +46 -0
  249. package/dist/components/providers/menu.js +304 -0
  250. package/dist/components/providers/snackBar.d.ts +23 -0
  251. package/dist/components/providers/snackBar.js +53 -0
  252. package/dist/components/providers/ui.d.ts +18 -0
  253. package/dist/components/providers/ui.js +16 -0
  254. package/dist/components/providers/uniqueIds.d.ts +3 -0
  255. package/dist/components/providers/uniqueIds.js +23 -0
  256. package/dist/components/providers/uniqueIds.test.d.ts +1 -0
  257. package/dist/components/providers/uniqueIds.test.js +26 -0
  258. package/dist/index.d.ts +53 -0
  259. package/dist/index.js +51 -0
  260. package/dist/theme/Color.stories.d.ts +5 -0
  261. package/dist/theme/Color.stories.js +63 -0
  262. package/dist/theme/GlobalStyles.d.ts +1 -0
  263. package/dist/theme/GlobalStyles.js +167 -0
  264. package/dist/theme/Typography.stories.d.ts +5 -0
  265. package/dist/theme/Typography.stories.js +44 -0
  266. package/dist/theme/colors.d.ts +51 -0
  267. package/dist/theme/colors.js +97 -0
  268. package/dist/theme/custom.d.ts +11 -0
  269. package/dist/theme/custom.js +13 -0
  270. package/dist/theme/index.d.ts +185 -0
  271. package/dist/theme/index.js +25 -0
  272. package/dist/theme/spacing.d.ts +0 -0
  273. package/dist/theme/spacing.js +1 -0
  274. package/dist/theme/typography.d.ts +100 -0
  275. package/dist/theme/typography.js +206 -0
  276. package/dist/utils/hooks/useCheckMidClick.d.ts +8 -0
  277. package/dist/utils/hooks/useCheckMidClick.js +17 -0
  278. package/dist/utils/hooks/useCheckMidKeyPress.d.ts +9 -0
  279. package/dist/utils/hooks/useCheckMidKeyPress.js +23 -0
  280. package/dist/utils/hooks/useHover.d.ts +7 -0
  281. package/dist/utils/hooks/useHover.js +12 -0
  282. package/dist/utils/hooks/useStorage.d.ts +14 -0
  283. package/dist/utils/hooks/useStorage.js +37 -0
  284. package/dist/utils/misc.d.ts +14 -0
  285. package/dist/utils/misc.js +19 -0
  286. package/dist/utils/sortByKey.d.ts +12 -0
  287. package/dist/utils/sortByKey.js +20 -0
  288. package/dist/utils/test.d.ts +2 -0
  289. package/dist/utils/test.js +9 -0
  290. package/package.json +98 -0
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { siteMetadata } from './siteMetadata';
3
+ export const Seo = ({ title, description, image, nofollow, noindex, }) => {
4
+ const { title: defaultTitle, description: defaultDescription, image: defaultImage, nofollow: defaultNoindex, noindex: defaultNofollow, siteUrl, twitterUsername, } = siteMetadata();
5
+ const seo = {
6
+ title: title || defaultTitle,
7
+ description: description || defaultDescription,
8
+ image: image ? image : defaultImage,
9
+ url: siteUrl + location.pathname || '',
10
+ nofollow: nofollow || defaultNofollow,
11
+ noindex: noindex || defaultNoindex,
12
+ twitterUsername,
13
+ };
14
+ return (_jsxs("head", { children: [seo.title ? _jsx("title", Object.assign({ "data-testid": "seo-title" }, { children: seo.title })) : null, seo.title ? (_jsx("meta", { "data-testid": "seo-twitter-title", name: "twitter:title", content: seo.title })) : null, seo.title ? (_jsx("meta", { "data-testid": "seo-og-title", property: "og:title", content: seo.title })) : null, seo.url ? (_jsx("meta", { "data-testid": "seo-twitter-url", name: "twitter:url", content: seo.url })) : null, seo.url ? (_jsx("meta", { "data-testid": "seo-og-url", property: "og:url", content: seo.url })) : null, seo.description ? (_jsx("meta", { "data-testid": "seo-twitter-description", name: "twitter:description", content: seo.description })) : null, seo.description ? (_jsx("meta", { "data-testid": "seo-og-description", property: "og:description", content: seo.description })) : null, seo.image ? (_jsx("meta", { "data-testid": "seo-twitter-image", name: "twitter:image", content: seo.image })) : null, seo.image ? (_jsx("meta", { "data-testid": "seo-og-image", name: "og:image", content: seo.image })) : null, seo.twitterUsername ? (_jsx("meta", { "data-testid": "seo-twitter-creator", name: "twitter:creator", content: seo.twitterUsername })) : null, seo.nofollow ? (_jsx("meta", { "data-testid": "seo-nofollow", name: "robots", content: "nofollow" })) : null, seo.noindex ? (_jsx("meta", { "data-testid": "seo-noindex", name: "robots", content: "noindex" })) : null, _jsx("meta", { name: "twitter:card", content: "summary_large_image" }), _jsx("meta", { name: "viewport", content: "width=device-width, initial-scale=1" })] }));
15
+ };
16
+ export default Seo;
@@ -0,0 +1,6 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import Seo from './index';
3
+ declare const meta: Meta<typeof Seo>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Seo>;
6
+ export declare const Default: Story;
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import SeoDataDisplay from './SeoDataDisplay';
3
+ import Seo from './index';
4
+ const meta = {
5
+ title: 'Composites/Seo',
6
+ component: Seo,
7
+ tags: ['autodocs'],
8
+ };
9
+ export default meta;
10
+ export const Default = {
11
+ render: () => (_jsx(_Fragment, { children: _jsx(SeoDataDisplay, {}) })),
12
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,56 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { render } from '../../../utils/test';
3
+ import { screen } from '@testing-library/dom';
4
+ import { Seo } from './index';
5
+ const title = 'Component Library';
6
+ const description = 'Component Library for the Hesburgh Libraries';
7
+ const image = '/image.png';
8
+ const nofollow = true;
9
+ const noindex = true;
10
+ describe('Seo', () => {
11
+ it('renders meta tag for title', () => {
12
+ render(_jsx(Seo, { title: title }));
13
+ const element = screen.getByTestId('seo-title');
14
+ expect(element).toContainHTML('Component Library');
15
+ });
16
+ it('renders meta tag for twitter title', () => {
17
+ render(_jsx(Seo, { title: title }));
18
+ const element = screen.getByTestId('seo-twitter-title');
19
+ expect(element).toContainHTML('Component Library');
20
+ });
21
+ it('renders meta tag for open graph title', () => {
22
+ render(_jsx(Seo, { title: title }));
23
+ const element = screen.getByTestId('seo-og-title');
24
+ expect(element).toContainHTML('Component Library');
25
+ });
26
+ it('renders meta tag for twitter description', () => {
27
+ render(_jsx(Seo, { description: description }));
28
+ const element = screen.getByTestId('seo-twitter-description');
29
+ expect(element).toContainHTML('Component Library for the Hesburgh Libraries');
30
+ });
31
+ it('renders meta tag for open graph description', () => {
32
+ render(_jsx(Seo, { description: description }));
33
+ const element = screen.getByTestId('seo-og-description');
34
+ expect(element).toContainHTML('Component Library for the Hesburgh Libraries');
35
+ });
36
+ it('renders meta tag for twitter image', () => {
37
+ render(_jsx(Seo, { image: image }));
38
+ const element = screen.getByTestId('seo-twitter-image');
39
+ expect(element).toContainHTML('/image.png');
40
+ });
41
+ it('renders meta tag for og image', () => {
42
+ render(_jsx(Seo, { image: image }));
43
+ const element = screen.getByTestId('seo-og-image');
44
+ expect(element).toContainHTML('/image.png');
45
+ });
46
+ it('renders meta tag for nofollow', () => {
47
+ render(_jsx(Seo, { nofollow: nofollow }));
48
+ const element = screen.getByTestId('seo-nofollow');
49
+ expect(element).toContainHTML('nofollow');
50
+ });
51
+ it('renders meta tag for noindex', () => {
52
+ render(_jsx(Seo, { noindex: noindex }));
53
+ const element = screen.getByTestId('seo-noindex');
54
+ expect(element).toContainHTML('noindex');
55
+ });
56
+ });
@@ -0,0 +1,9 @@
1
+ export declare const siteMetadata: () => {
2
+ title: string;
3
+ image: string;
4
+ description: string;
5
+ twitterUsername: string;
6
+ siteUrl: string;
7
+ nofollow: boolean;
8
+ noindex: boolean;
9
+ };
@@ -0,0 +1,16 @@
1
+ export const siteMetadata = () => {
2
+ const data = {
3
+ site: {
4
+ siteMetadata: {
5
+ title: 'Hesburgh Component Library',
6
+ image: '/images/fakeimage.png',
7
+ description: 'Component library for the Hesburgh Libraries',
8
+ twitterUsername: 'hlibraries',
9
+ siteUrl: 'https://www.library.nd.edu',
10
+ nofollow: false,
11
+ noindex: false,
12
+ },
13
+ },
14
+ };
15
+ return data.site.siteMetadata;
16
+ };
@@ -0,0 +1,8 @@
1
+ import { SnackBar } from './';
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ declare const meta: Meta<typeof SnackBar>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof SnackBar>;
6
+ export declare const Default: Story;
7
+ export declare const ReplaceMessage: Story;
8
+ export declare const WipeMessages: Story;
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { SnackBar } from './';
3
+ import { BasicExample, ReplaceMessageExample, WipeMessagesExample, } from './examples';
4
+ const meta = {
5
+ title: 'Composites/SnackBar',
6
+ component: SnackBar,
7
+ };
8
+ export default meta;
9
+ export const Default = {
10
+ render: () => _jsx(BasicExample, {}),
11
+ args: {},
12
+ };
13
+ export const ReplaceMessage = {
14
+ render: () => _jsx(ReplaceMessageExample, {}),
15
+ args: {},
16
+ };
17
+ export const WipeMessages = {
18
+ render: () => _jsx(WipeMessagesExample, {}),
19
+ args: {},
20
+ };
@@ -0,0 +1,75 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { act, fireEvent, waitFor } from '@testing-library/react';
3
+ import { vi } from 'vitest';
4
+ import { render } from '../../../utils/test';
5
+ import { BasicExample, ReplaceMessageExample, WipeMessagesExample, } from './examples';
6
+ vi.useFakeTimers();
7
+ describe('SnackBar', () => {
8
+ it('supports adding messages', () => {
9
+ const { getByText } = render(_jsx(BasicExample, {}));
10
+ expect(() => getByText('Message 1')).toThrow();
11
+ const addButton = getByText('Add Message');
12
+ act(() => {
13
+ fireEvent.click(addButton);
14
+ });
15
+ expect(getByText('Message 1')).toBeInTheDocument();
16
+ act(() => {
17
+ fireEvent.click(addButton);
18
+ });
19
+ expect(getByText('Message 1')).toBeInTheDocument();
20
+ expect(getByText('Message 2')).toBeInTheDocument();
21
+ act(() => {
22
+ vi.runAllTimers();
23
+ });
24
+ waitFor(() => {
25
+ expect(() => getByText('Message 1')).toThrow();
26
+ expect(() => getByText('Message 2')).toThrow();
27
+ });
28
+ });
29
+ it('supports replacing messages', () => {
30
+ const { getByText } = render(_jsx(ReplaceMessageExample, {}));
31
+ expect(() => getByText('Message 1')).toThrow();
32
+ const addButton = getByText('Add Message');
33
+ act(() => {
34
+ fireEvent.click(addButton);
35
+ });
36
+ expect(getByText('Message 1')).toBeInTheDocument();
37
+ act(() => {
38
+ fireEvent.click(addButton);
39
+ });
40
+ expect(() => getByText('Message 1')).toThrow();
41
+ expect(getByText('Message 2')).toBeInTheDocument();
42
+ act(() => {
43
+ vi.runAllTimers();
44
+ });
45
+ waitFor(() => {
46
+ expect(() => getByText('Message 2')).toThrow();
47
+ });
48
+ });
49
+ it('supports wiping messages', () => {
50
+ const { getByText } = render(_jsx(WipeMessagesExample, {}));
51
+ expect(() => getByText('Message 1')).toThrow();
52
+ const addButton = getByText('Add Message');
53
+ act(() => {
54
+ fireEvent.click(addButton);
55
+ });
56
+ act(() => {
57
+ fireEvent.click(addButton);
58
+ });
59
+ expect(getByText('Message 1')).toBeInTheDocument();
60
+ expect(getByText('Message 2')).toBeInTheDocument();
61
+ const wipeButton = getByText('Wipe and Add');
62
+ act(() => {
63
+ fireEvent.click(wipeButton);
64
+ });
65
+ expect(() => getByText('Message 1')).toThrow();
66
+ expect(() => getByText('Message 2')).toThrow();
67
+ expect(getByText('Message 3')).toBeInTheDocument();
68
+ act(() => {
69
+ vi.runAllTimers();
70
+ });
71
+ waitFor(() => {
72
+ expect(() => getByText('Message 3')).toThrow();
73
+ });
74
+ });
75
+ });
@@ -0,0 +1,3 @@
1
+ export declare const BasicExample: () => import("react/jsx-runtime").JSX.Element;
2
+ export declare const ReplaceMessageExample: () => import("react/jsx-runtime").JSX.Element;
3
+ export declare const WipeMessagesExample: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,35 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { useSnackBar } from '../../providers/snackBar';
4
+ import { Row } from '../../elements/layout/Row';
5
+ import { Button } from '../../elements/Button';
6
+ import { SnackBar } from '.';
7
+ export const BasicExample = () => {
8
+ const { addMessage } = useSnackBar();
9
+ const [messageCount, setMessageCount] = useState(1);
10
+ return (_jsxs(_Fragment, { children: [_jsx(Button, Object.assign({ onClick: () => {
11
+ setMessageCount(messageCount + 1);
12
+ addMessage({ message: `Message ${messageCount}` });
13
+ } }, { children: "Add Message" })), _jsx(SnackBar, {})] }));
14
+ };
15
+ export const ReplaceMessageExample = () => {
16
+ const { addMessage } = useSnackBar();
17
+ const [messageCount, setMessageCount] = useState(1);
18
+ return (_jsxs(_Fragment, { children: [_jsx(Button, Object.assign({ onClick: () => {
19
+ setMessageCount(messageCount + 1);
20
+ addMessage({ message: `Message ${messageCount}`, id: 'same-id' });
21
+ } }, { children: "Add Message" })), _jsx(SnackBar, {})] }));
22
+ };
23
+ export const WipeMessagesExample = () => {
24
+ const { addMessage } = useSnackBar();
25
+ const [messageCount, setMessageCount] = useState(1);
26
+ return (_jsxs(Row, { children: [_jsx(Button, Object.assign({ onClick: () => {
27
+ setMessageCount((count) => count + 1);
28
+ addMessage({ message: `Message ${messageCount}` });
29
+ }, sx: { mr: 1 } }, { children: "Add Message" })), _jsx(Button, Object.assign({ onClick: () => {
30
+ setMessageCount((count) => count + 1);
31
+ addMessage({ message: `Message ${messageCount}` }, {
32
+ wipePrevious: true,
33
+ });
34
+ } }, { children: "Wipe and Add" })), _jsx(SnackBar, {})] }));
35
+ };
@@ -0,0 +1 @@
1
+ export declare const SnackBar: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,45 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { keyframes } from '@emotion/react';
3
+ import { COLOR } from '../../../theme/colors';
4
+ import { TYPOGRAPHY_TYPE, getTypographyStyles } from '../../../theme/typography';
5
+ import { BUTTON_TYPE, Button } from '../../elements/Button';
6
+ import { Box } from '../../elements/layout/Box';
7
+ import { Column } from '../../elements/layout/Column';
8
+ import { Row } from '../../elements/layout/Row';
9
+ import { useSnackBar } from '../../providers/snackBar';
10
+ import CloseIcon from '@mui/icons-material/Close';
11
+ import { Z_INDEX } from '../../../theme/custom';
12
+ const getTransformForMessageCount = (messageCount) => messageCount ? `translateY(-${messageCount * 4 + 1}rem)` : '0rem';
13
+ const getAnimation = (messageCount, previousMessageCount) => {
14
+ return keyframes `
15
+ from {
16
+ transform: ${getTransformForMessageCount(previousMessageCount)};
17
+ }
18
+ to {
19
+ transform: ${getTransformForMessageCount(messageCount)};
20
+ }
21
+ `;
22
+ };
23
+ export const SnackBar = () => {
24
+ const { messages, removeMessage, previousMessageCount } = useSnackBar();
25
+ const typographyStyles = getTypographyStyles(TYPOGRAPHY_TYPE.CONDENSED_TEXT_MEDIUM);
26
+ const animation = getAnimation(messages.length, previousMessageCount);
27
+ const animationStyle = `${animation} 100ms linear 1 forwards`;
28
+ return (_jsx(Column, Object.assign({ sx: {
29
+ position: 'fixed',
30
+ left: 0,
31
+ top: '100%',
32
+ width: '100vw',
33
+ display: 'flex',
34
+ alignItems: 'center',
35
+ pb: 3,
36
+ animation: animationStyle,
37
+ zIndex: Z_INDEX.DIALOG,
38
+ } }, { children: messages.map((message) => (_jsxs(Row, Object.assign({ sx: Object.assign({ width: ['90vw', '500px'], height: '56px', borderRadius: '4px', p: 4, mt: '0.5rem', border: '1px solid', bg: COLOR.PRIMARY, color: COLOR.WHITE, justifyContent: 'space-between', alignItems: 'center' }, typographyStyles) }, { children: [_jsx(Box, Object.assign({ sx: {
39
+ overflow: 'hidden',
40
+ whiteSpace: 'nowrap',
41
+ textOverflow: 'ellipsis',
42
+ }, "aria-live": "polite" }, { children: message.message })), _jsx(Box, { children: _jsx(Button, { "aria-label": "Dismiss Notice", type: BUTTON_TYPE.TEXT, primaryIcon: CloseIcon, onClick: () => {
43
+ removeMessage(message.id);
44
+ }, textColor: COLOR.WHITE }) })] }), message.id))) })));
45
+ };
@@ -0,0 +1,6 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import StructuredData from './index';
3
+ declare const meta: Meta<typeof StructuredData>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof StructuredData>;
6
+ export declare const Default: Story;
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import StructuredDataDisplay from './StructuredDataDisplay';
3
+ import StructuredData from './index';
4
+ const meta = {
5
+ title: 'Composites/StructuredData',
6
+ component: StructuredData,
7
+ tags: ['autodocs'],
8
+ };
9
+ export default meta;
10
+ export const Default = {
11
+ render: () => (_jsx(_Fragment, { children: _jsx(StructuredDataDisplay, {}) })),
12
+ };
@@ -0,0 +1,48 @@
1
+ import { getStructuredDataSchemas } from './';
2
+ describe('getStructuredDataSchemas', () => {
3
+ it('should generate structured data schemas with default data', () => {
4
+ const schemas = getStructuredDataSchemas({});
5
+ expect(schemas[0]).toContain('Hesburgh Component Library');
6
+ expect(schemas).toHaveLength(1);
7
+ console.log(schemas);
8
+ });
9
+ it('should generate structured data schemas with custom data', () => {
10
+ const customData = {
11
+ title: 'Custom Title',
12
+ description: 'Custom Description',
13
+ events: [
14
+ {
15
+ title: 'Archival Research Lab II: Inside the Archive',
16
+ startDate: '2021-10-13T14:00:00.000Z',
17
+ endDate: '2021-10-13T15:15:00.000Z',
18
+ slug: 'archival-research-lab-2-inside-the-archive-2021-10-13',
19
+ shortDescription: 'This two-session workshop provides an introduction to advanced archival research.',
20
+ representationalImage: {
21
+ url: 'https://strapi-prod-library-website-contentbucket52d4b12c-1whgwwl6746tz.s3.amazonaws.com/events_hl_workshop_1403f3079f.jpg?AWSAccessKeyId=AKIATLJDMPVTNRHRTTAL&Expires=1698764137&Signature=oDIw1iGhnDLsDcvvlSHOn5KSRrI%3D',
22
+ },
23
+ location: {
24
+ address: '103 Hesburgh Library, Rare Books & Special Collections',
25
+ },
26
+ locationText: {
27
+ name: 'Hesburgh Concourse',
28
+ },
29
+ },
30
+ ],
31
+ news: [
32
+ {
33
+ title: 'Preservation Week 2023: Tips from the Hesburgh Libraries Preservation Team',
34
+ author: 'Hesburgh Libraries Analog Preservation and Conservation Unit',
35
+ shortDescription: 'Hesburgh Libraries preservation experts offer some helpful tips on safely preserving your valued collections.',
36
+ image: {
37
+ url: 'https://strapi-prod-library-website-contentbucket52d4b12c-1whgwwl6746tz.s3.amazonaws.com/Preservation_Week_Rep_f85c55dd55.png?AWSAccessKeyId=AKIATLJDMPVTNRHRTTAL&Expires=1698764137&Signature=9jjAAAXWqJ7kBK4Tn5G7jvGK%2BfA%3D',
38
+ },
39
+ slug: 'preservation-week-2023',
40
+ publishedDate: '2023-04-30T04:00:00.000Z',
41
+ },
42
+ ],
43
+ };
44
+ const schemas = getStructuredDataSchemas(customData);
45
+ expect(schemas).toHaveLength(3);
46
+ expect(schemas[0]).toContain('Custom Title');
47
+ });
48
+ });
@@ -0,0 +1,2 @@
1
+ export declare const StructuredDataDisplay: () => import("react/jsx-runtime").JSX.Element;
2
+ export default StructuredDataDisplay;
@@ -0,0 +1,37 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { getStructuredDataSchemas } from '../index';
3
+ export const StructuredDataDisplay = () => {
4
+ const events = [
5
+ {
6
+ title: 'Archival Research Lab II: Inside the Archive',
7
+ startDate: '2021-10-13T14:00:00.000Z',
8
+ endDate: '2021-10-13T15:15:00.000Z',
9
+ slug: 'archival-research-lab-2-inside-the-archive-2021-10-13',
10
+ shortDescription: 'This two-session workshop provides an introduction to advanced archival research.',
11
+ representationalImage: {
12
+ url: 'https://strapi-prod-library-website-contentbucket52d4b12c-1whgwwl6746tz.s3.amazonaws.com/events_hl_workshop_1403f3079f.jpg?AWSAccessKeyId=AKIATLJDMPVTNRHRTTAL&Expires=1698764137&Signature=oDIw1iGhnDLsDcvvlSHOn5KSRrI%3D',
13
+ },
14
+ location: {
15
+ address: '103 Hesburgh Library, Rare Books & Special Collections',
16
+ },
17
+ locationText: {
18
+ name: 'Hesburgh Concourse',
19
+ },
20
+ },
21
+ ];
22
+ const news = [
23
+ {
24
+ title: 'Preservation Week 2023: Tips from the Hesburgh Libraries Preservation Team',
25
+ author: 'Hesburgh Libraries Analog Preservation and Conservation Unit',
26
+ shortDescription: 'Hesburgh Libraries preservation experts offer some helpful tips on safely preserving your valued collections.',
27
+ image: {
28
+ url: 'https://strapi-prod-library-website-contentbucket52d4b12c-1whgwwl6746tz.s3.amazonaws.com/Preservation_Week_Rep_f85c55dd55.png?AWSAccessKeyId=AKIATLJDMPVTNRHRTTAL&Expires=1698764137&Signature=9jjAAAXWqJ7kBK4Tn5G7jvGK%2BfA%3D',
29
+ },
30
+ slug: 'preservation-week-2023',
31
+ publishedDate: '2023-04-30T04:00:00.000Z',
32
+ },
33
+ ];
34
+ const schemas = getStructuredDataSchemas({ events: events, news: news });
35
+ return (_jsx(_Fragment, { children: schemas.map((schema, index) => (_jsxs("pre", { children: [_jsx("code", { children: schema }), _jsx("br", {})] }, index))) }));
36
+ };
37
+ export default StructuredDataDisplay;
@@ -0,0 +1,38 @@
1
+ /// <reference types="react" />
2
+ export type StructuredDataProps = {
3
+ title?: string;
4
+ description?: string;
5
+ siteUrl?: string;
6
+ nofollow?: string;
7
+ noindex?: string;
8
+ image?: string;
9
+ events?: {
10
+ title: string;
11
+ startDate: string;
12
+ endDate: string;
13
+ slug: string;
14
+ shortDescription: string;
15
+ representationalImage: {
16
+ url: string;
17
+ };
18
+ location: {
19
+ address: string;
20
+ };
21
+ locationText: {
22
+ name: string;
23
+ };
24
+ }[];
25
+ news?: {
26
+ title: string;
27
+ author: string;
28
+ shortDescription: string;
29
+ image: {
30
+ url: string;
31
+ };
32
+ slug: string;
33
+ publishedDate: string;
34
+ }[];
35
+ };
36
+ export declare const getStructuredDataSchemas: ({ title, description, nofollow, noindex, image, events, news, }: StructuredDataProps) => string[];
37
+ export declare const StructuredData: React.FC<StructuredDataProps>;
38
+ export default StructuredData;
@@ -0,0 +1,58 @@
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { siteMetadata } from './siteMetadata';
3
+ import { stringifyWebpageSchema } from './sdWebsite';
4
+ import { stringifyEventSchema } from './sdEvent';
5
+ import { stringifyNewsSchema } from './sdNews';
6
+ export const getStructuredDataSchemas = ({ title, description, nofollow, noindex, image, events, news, }) => {
7
+ const { title: defaultTitle, description: defaultDescription, image: defaultImage, siteUrl, nofollow: defaultNofollow, noindex: defaultNoindex, } = siteMetadata();
8
+ const metadata = {
9
+ title: title || defaultTitle,
10
+ description: description || defaultDescription,
11
+ nofollow: nofollow || defaultNofollow,
12
+ noindex: noindex || defaultNoindex,
13
+ image: image || defaultImage,
14
+ url: `${siteUrl}${location.pathname || ''}`,
15
+ lang: 'en',
16
+ events: events,
17
+ news: news,
18
+ };
19
+ const schemas = [];
20
+ if (location.pathname !== '') {
21
+ schemas.push(stringifyWebpageSchema({
22
+ name: metadata.title,
23
+ description: metadata.description,
24
+ url: metadata.url,
25
+ lang: metadata.lang,
26
+ }));
27
+ events === null || events === void 0 ? void 0 : events.map((event) => {
28
+ schemas.push(stringifyEventSchema({
29
+ title: event.title,
30
+ description: event.shortDescription,
31
+ image: event.representationalImage.url,
32
+ url: event.slug,
33
+ startDate: event.startDate,
34
+ endDate: event.endDate,
35
+ eventLocation: event.location.address,
36
+ eventLocationName: event.locationText.name,
37
+ siteUrl: siteUrl,
38
+ }));
39
+ });
40
+ news === null || news === void 0 ? void 0 : news.map((article) => {
41
+ schemas.push(stringifyNewsSchema({
42
+ title: article.title,
43
+ abstract: article.shortDescription,
44
+ author: article.author,
45
+ image: article.image.url,
46
+ url: article.slug,
47
+ publishedDate: article.publishedDate,
48
+ siteUrl: siteUrl,
49
+ }));
50
+ });
51
+ }
52
+ return schemas;
53
+ };
54
+ export const StructuredData = (props) => {
55
+ const schemas = getStructuredDataSchemas(props);
56
+ return (_jsx(_Fragment, { children: schemas.map((schema, index) => (_jsx("script", Object.assign({ type: "application/ld+json" }, { children: schema }), index))) }));
57
+ };
58
+ export default StructuredData;
@@ -0,0 +1,13 @@
1
+ interface SdEventProps {
2
+ title: string;
3
+ startDate?: string;
4
+ endDate?: string;
5
+ description: string;
6
+ eventLocation?: string;
7
+ eventLocationName?: string;
8
+ image?: string;
9
+ url?: string;
10
+ siteUrl?: string;
11
+ }
12
+ export declare const stringifyEventSchema: (props: SdEventProps) => string;
13
+ export default stringifyEventSchema;
@@ -0,0 +1,16 @@
1
+ import { makeEventSchema } from './makeEventSchema';
2
+ export const stringifyEventSchema = ({ title, description, startDate, endDate, eventLocation, eventLocationName, image, url, siteUrl, }) => {
3
+ const eventSchema = makeEventSchema({
4
+ title: title,
5
+ startDate: startDate,
6
+ endDate: endDate,
7
+ description: description,
8
+ image: image,
9
+ eventLocation: eventLocation,
10
+ eventLocationName: eventLocationName,
11
+ url: url,
12
+ siteUrl: siteUrl,
13
+ });
14
+ return JSON.stringify(eventSchema, null, 2);
15
+ };
16
+ export default stringifyEventSchema;
@@ -0,0 +1,15 @@
1
+ import { Event } from 'schema-dts';
2
+ type Params = {
3
+ title: string;
4
+ startDate?: string;
5
+ endDate?: string;
6
+ description?: string;
7
+ location?: string;
8
+ eventLocation?: string;
9
+ eventLocationName?: string;
10
+ image?: string;
11
+ url?: string;
12
+ siteUrl?: string;
13
+ };
14
+ export declare const makeEventSchema: (params: Params) => Event;
15
+ export {};
@@ -0,0 +1,16 @@
1
+ export const makeEventSchema = (params) => {
2
+ return {
3
+ '@type': 'Event',
4
+ name: params.title,
5
+ startDate: params.startDate,
6
+ endDate: params.endDate,
7
+ description: params.description,
8
+ image: params.image,
9
+ url: params.siteUrl + '/event/' + params.url,
10
+ location: {
11
+ '@type': 'Place',
12
+ name: params.eventLocationName,
13
+ address: params.eventLocation,
14
+ },
15
+ };
16
+ };
@@ -0,0 +1,11 @@
1
+ interface SdNewsProps {
2
+ title: string;
3
+ author: string;
4
+ abstract: string;
5
+ image?: string;
6
+ url?: string;
7
+ publishedDate?: string;
8
+ siteUrl?: string;
9
+ }
10
+ export declare const stringifyNewsSchema: (props: SdNewsProps) => string;
11
+ export default stringifyNewsSchema;
@@ -0,0 +1,14 @@
1
+ import { makeNewsSchema } from './makeNewsSchema';
2
+ export const stringifyNewsSchema = ({ title, author, abstract, image, url, publishedDate, siteUrl, }) => {
3
+ const newsSchema = makeNewsSchema({
4
+ title: title,
5
+ author: author,
6
+ abstract: abstract,
7
+ image: image,
8
+ url: url,
9
+ publishedDate: publishedDate,
10
+ siteUrl: siteUrl,
11
+ });
12
+ return JSON.stringify(newsSchema, null, 2);
13
+ };
14
+ export default stringifyNewsSchema;
@@ -0,0 +1,12 @@
1
+ import { NewsArticle } from 'schema-dts';
2
+ type Params = {
3
+ title: string;
4
+ author: string;
5
+ abstract?: string;
6
+ image?: string;
7
+ url?: string;
8
+ publishedDate?: string;
9
+ siteUrl?: string;
10
+ };
11
+ export declare const makeNewsSchema: (params: Params) => NewsArticle;
12
+ export {};