design-react-kit 3.3.1 → 4.0.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 (352) hide show
  1. package/README.EN.md +35 -17
  2. package/README.md +34 -18
  3. package/package.json +152 -120
  4. package/src/Accordion/Accordion.tsx +30 -0
  5. package/src/Accordion/AccordionBody.tsx +127 -0
  6. package/src/Accordion/AccordionHeader.tsx +42 -0
  7. package/src/Alert/Alert.tsx +39 -0
  8. package/src/Avatar/AvatarContainer.tsx +22 -0
  9. package/src/Avatar/AvatarExtraText.tsx +19 -0
  10. package/src/Avatar/AvatarGroupContainer.tsx +23 -0
  11. package/src/Avatar/AvatarIcon.tsx +57 -0
  12. package/src/Avatar/AvatarPresence.tsx +24 -0
  13. package/src/Avatar/AvatarStatus.tsx +24 -0
  14. package/src/Avatar/AvatarWrapper.tsx +24 -0
  15. package/src/Badge/Badge.tsx +40 -0
  16. package/src/BottomNav/BottomNav.tsx +20 -0
  17. package/src/BottomNav/BottomNavItem.tsx +75 -0
  18. package/src/Breadcrumb/Breadcrumb.tsx +40 -0
  19. package/src/Button/Button.tsx +55 -0
  20. package/src/Callout/Callout.tsx +35 -0
  21. package/src/Callout/CalloutText.tsx +29 -0
  22. package/src/Callout/CalloutTitle.tsx +24 -0
  23. package/src/Card/Card.tsx +49 -0
  24. package/src/Card/CardBody.tsx +21 -0
  25. package/src/Card/CardCategory.tsx +48 -0
  26. package/src/Card/CardFooterCTA.tsx +19 -0
  27. package/src/Card/CardReadMore.tsx +35 -0
  28. package/src/Card/CardSignature.tsx +19 -0
  29. package/src/Card/CardTag.tsx +19 -0
  30. package/src/Card/CardTagsHeader.tsx +28 -0
  31. package/src/Card/CardText.tsx +19 -0
  32. package/src/Card/CardTitle.tsx +17 -0
  33. package/src/Chips/Chip.tsx +37 -0
  34. package/src/Chips/ChipLabel.tsx +19 -0
  35. package/src/Collapse/Collapse.tsx +100 -0
  36. package/src/CookieBar/CookieBar.tsx +19 -0
  37. package/src/CookieBar/CookieBarButton.tsx +27 -0
  38. package/src/CookieBar/CookieBarButtons.tsx +19 -0
  39. package/src/Dimmer/Dimmer.tsx +51 -0
  40. package/src/Dimmer/DimmerButtons.tsx +35 -0
  41. package/src/FontLoader/FontLoader.tsx +32 -0
  42. package/src/Forward/Forward.tsx +40 -0
  43. package/src/Grid/GridItem.tsx +23 -0
  44. package/src/Grid/GridItemText.tsx +20 -0
  45. package/src/Grid/GridItemTextWrapper.tsx +21 -0
  46. package/src/Grid/GridList.tsx +20 -0
  47. package/src/Grid/GridRow.tsx +20 -0
  48. package/src/Grid/index.ts +11 -0
  49. package/src/{components/Header/Header.js → Header/Header.tsx} +19 -24
  50. package/src/Header/HeaderBrand.tsx +90 -0
  51. package/src/Header/HeaderContent.tsx +42 -0
  52. package/src/Header/HeaderContext.tsx +9 -0
  53. package/src/Header/HeaderLinkZone.tsx +19 -0
  54. package/src/Header/HeaderRightZone.tsx +26 -0
  55. package/src/Header/HeaderSearch.tsx +33 -0
  56. package/src/Header/HeaderSocialsZone.tsx +26 -0
  57. package/src/Header/HeaderToggler.tsx +46 -0
  58. package/src/{components/Header/Headers.js → Header/Headers.tsx} +17 -22
  59. package/src/Hero/Hero.tsx +34 -0
  60. package/src/Hero/HeroBackground.tsx +25 -0
  61. package/src/Hero/HeroBody.tsx +21 -0
  62. package/src/Hero/HeroButton.tsx +19 -0
  63. package/src/Hero/HeroCategory.tsx +15 -0
  64. package/src/Hero/HeroTitle.tsx +16 -0
  65. package/src/Hero/index.ts +13 -0
  66. package/src/Icon/EmptyIcon.tsx +7 -0
  67. package/src/Icon/Icon.tsx +116 -0
  68. package/src/Icon/assets/ItArrowDown.tsx +9 -0
  69. package/src/Icon/assets/ItArrowDownCircle.tsx +9 -0
  70. package/src/Icon/assets/ItArrowDownTriangle.tsx +9 -0
  71. package/src/Icon/assets/ItArrowLeft.tsx +9 -0
  72. package/src/Icon/assets/ItArrowLeftCircle.tsx +9 -0
  73. package/src/Icon/assets/ItArrowLeftTriangle.tsx +9 -0
  74. package/src/Icon/assets/ItArrowRight.tsx +9 -0
  75. package/src/Icon/assets/ItArrowRightCircle.tsx +9 -0
  76. package/src/Icon/assets/ItArrowRightTriangle.tsx +9 -0
  77. package/src/Icon/assets/ItArrowUp.tsx +9 -0
  78. package/src/Icon/assets/ItArrowUpCircle.tsx +9 -0
  79. package/src/Icon/assets/ItArrowUpTriangle.tsx +9 -0
  80. package/src/Icon/assets/ItBan.tsx +9 -0
  81. package/src/Icon/assets/ItBehance.tsx +9 -0
  82. package/src/Icon/assets/ItBookmark.tsx +9 -0
  83. package/src/Icon/assets/ItBox.tsx +12 -0
  84. package/src/Icon/assets/ItBurger.tsx +9 -0
  85. package/src/Icon/assets/ItCalendar.tsx +9 -0
  86. package/src/Icon/assets/ItCamera.tsx +9 -0
  87. package/src/Icon/assets/ItCard.tsx +9 -0
  88. package/src/Icon/assets/ItChartLine.tsx +12 -0
  89. package/src/Icon/assets/ItCheck.tsx +9 -0
  90. package/src/Icon/assets/ItCheckCircle.tsx +9 -0
  91. package/src/Icon/assets/ItChevronLeft.tsx +8 -0
  92. package/src/Icon/assets/ItChevronRight.tsx +8 -0
  93. package/src/Icon/assets/ItClip.tsx +9 -0
  94. package/src/Icon/assets/ItClock.tsx +9 -0
  95. package/src/Icon/assets/ItClose.tsx +9 -0
  96. package/src/Icon/assets/ItCloseBig.tsx +9 -0
  97. package/src/Icon/assets/ItCloseCircle.tsx +9 -0
  98. package/src/Icon/assets/ItCodeCircle.tsx +9 -0
  99. package/src/Icon/assets/ItCollapse.tsx +8 -0
  100. package/src/Icon/assets/ItComment.tsx +9 -0
  101. package/src/Icon/assets/ItCopy.tsx +9 -0
  102. package/src/Icon/assets/ItDelete.tsx +12 -0
  103. package/src/Icon/assets/ItDesignersItalia.tsx +9 -0
  104. package/src/Icon/assets/ItDownload.tsx +9 -0
  105. package/src/Icon/assets/ItError.tsx +9 -0
  106. package/src/Icon/assets/ItExchangeCircle.tsx +9 -0
  107. package/src/Icon/assets/ItExpand.tsx +8 -0
  108. package/src/Icon/assets/ItExternalLink.tsx +9 -0
  109. package/src/Icon/assets/ItFacebook.tsx +9 -0
  110. package/src/Icon/assets/ItFacebookSquare.tsx +9 -0
  111. package/src/Icon/assets/ItFile.tsx +9 -0
  112. package/src/Icon/assets/ItFiles.tsx +9 -0
  113. package/src/Icon/assets/ItFlag.tsx +9 -0
  114. package/src/Icon/assets/ItFlickr.tsx +10 -0
  115. package/src/Icon/assets/ItFlickrSquare.tsx +9 -0
  116. package/src/Icon/assets/ItFolder.tsx +9 -0
  117. package/src/Icon/assets/ItFullscreen.tsx +11 -0
  118. package/src/Icon/assets/ItFunnel.tsx +9 -0
  119. package/src/Icon/assets/ItGithub.tsx +9 -0
  120. package/src/Icon/assets/ItHearing.tsx +9 -0
  121. package/src/Icon/assets/ItHelp.tsx +9 -0
  122. package/src/Icon/assets/ItHelpCircle.tsx +9 -0
  123. package/src/Icon/assets/ItHorn.tsx +9 -0
  124. package/src/Icon/assets/ItInbox.tsx +12 -0
  125. package/src/Icon/assets/ItInfoCircle.tsx +9 -0
  126. package/src/Icon/assets/ItInstagram.tsx +9 -0
  127. package/src/Icon/assets/ItKey.tsx +9 -0
  128. package/src/Icon/assets/ItLessCircle.tsx +12 -0
  129. package/src/Icon/assets/ItLink.tsx +9 -0
  130. package/src/Icon/assets/ItLinkedin.tsx +9 -0
  131. package/src/Icon/assets/ItLinkedinSquare.tsx +9 -0
  132. package/src/Icon/assets/ItList.tsx +9 -0
  133. package/src/Icon/assets/ItLock.tsx +12 -0
  134. package/src/Icon/assets/ItLocked.tsx +9 -0
  135. package/src/Icon/assets/ItMail.tsx +9 -0
  136. package/src/Icon/assets/ItMapMarker.tsx +9 -0
  137. package/src/Icon/assets/ItMapMarkerCircle.tsx +12 -0
  138. package/src/Icon/assets/ItMapMarkerMinus.tsx +9 -0
  139. package/src/Icon/assets/ItMapMarkerPlus.tsx +12 -0
  140. package/src/Icon/assets/ItMaximize.tsx +11 -0
  141. package/src/Icon/assets/ItMaximizeAlt.tsx +11 -0
  142. package/src/Icon/assets/ItMedium.tsx +9 -0
  143. package/src/Icon/assets/ItMediumSquare.tsx +9 -0
  144. package/src/Icon/assets/ItMinimize.tsx +11 -0
  145. package/src/Icon/assets/ItMinus.tsx +9 -0
  146. package/src/Icon/assets/ItMinusCircle.tsx +9 -0
  147. package/src/Icon/assets/ItMoreActions.tsx +9 -0
  148. package/src/Icon/assets/ItMoreItems.tsx +9 -0
  149. package/src/Icon/assets/ItNote.tsx +9 -0
  150. package/src/Icon/assets/ItOpenSource.tsx +9 -0
  151. package/src/Icon/assets/ItPa.tsx +9 -0
  152. package/src/Icon/assets/ItPasswordInvisible.tsx +9 -0
  153. package/src/Icon/assets/ItPasswordVisible.tsx +9 -0
  154. package/src/Icon/assets/ItPencil.tsx +9 -0
  155. package/src/Icon/assets/ItPiattaforme.tsx +10 -0
  156. package/src/Icon/assets/ItPin.tsx +9 -0
  157. package/src/Icon/assets/ItPlug.tsx +9 -0
  158. package/src/Icon/assets/ItPlus.tsx +9 -0
  159. package/src/Icon/assets/ItPlusCircle.tsx +9 -0
  160. package/src/Icon/assets/ItPresentation.tsx +9 -0
  161. package/src/Icon/assets/ItPrint.tsx +9 -0
  162. package/src/Icon/assets/ItRefresh.tsx +9 -0
  163. package/src/Icon/assets/ItRestore.tsx +9 -0
  164. package/src/Icon/assets/ItRss.tsx +11 -0
  165. package/src/Icon/assets/ItRssSquare.tsx +9 -0
  166. package/src/Icon/assets/ItSearch.tsx +9 -0
  167. package/src/Icon/assets/ItSettings.tsx +9 -0
  168. package/src/Icon/assets/ItShare.tsx +9 -0
  169. package/src/Icon/assets/ItSoftware.tsx +10 -0
  170. package/src/Icon/assets/ItStarFull.tsx +9 -0
  171. package/src/Icon/assets/ItStarOutline.tsx +9 -0
  172. package/src/Icon/assets/ItTeamDigitale.tsx +8 -0
  173. package/src/Icon/assets/ItTelegram.tsx +11 -0
  174. package/src/Icon/assets/ItTelephone.tsx +9 -0
  175. package/src/Icon/assets/ItTool.tsx +9 -0
  176. package/src/Icon/assets/ItTwitter.tsx +9 -0
  177. package/src/Icon/assets/ItTwitterSquare.tsx +9 -0
  178. package/src/Icon/assets/ItUnlocked.tsx +9 -0
  179. package/src/Icon/assets/ItUpload.tsx +9 -0
  180. package/src/Icon/assets/ItUser.tsx +9 -0
  181. package/src/Icon/assets/ItVideo.tsx +9 -0
  182. package/src/Icon/assets/ItWarning.tsx +9 -0
  183. package/src/Icon/assets/ItWarningCircle.tsx +9 -0
  184. package/src/Icon/assets/ItWhatsapp.tsx +9 -0
  185. package/src/Icon/assets/ItWhatsappSquare.tsx +10 -0
  186. package/src/Icon/assets/ItWifi.tsx +12 -0
  187. package/src/Icon/assets/ItYoutube.tsx +9 -0
  188. package/src/Icon/assets/ItZoomIn.tsx +9 -0
  189. package/src/Icon/assets/ItZoomOut.tsx +9 -0
  190. package/src/Icon/assets/index.tsx +504 -0
  191. package/src/Input/Input.tsx +342 -0
  192. package/src/Input/InputContainer.tsx +34 -0
  193. package/src/Input/TextArea.tsx +184 -0
  194. package/src/Input/TimeInput.tsx +303 -0
  195. package/src/Input/utils.tsx +166 -0
  196. package/src/LinkList/LinkList.tsx +65 -0
  197. package/src/LinkList/LinkListItem.tsx +98 -0
  198. package/src/Megamenu/Megamenu.tsx +37 -0
  199. package/src/Megamenu/MegamenuFooter.tsx +20 -0
  200. package/src/Megamenu/MegamenuHighlightColumn.tsx +33 -0
  201. package/src/Megamenu/MegamenuItem.tsx +27 -0
  202. package/src/Modal/Modal.tsx +79 -0
  203. package/src/Modal/ModalBody.tsx +11 -0
  204. package/src/Modal/ModalFooter.tsx +11 -0
  205. package/src/Modal/ModalHeader.tsx +70 -0
  206. package/src/Nav/Nav.tsx +56 -0
  207. package/src/Notification/Notification.tsx +60 -0
  208. package/src/Notification/NotificationContent.tsx +135 -0
  209. package/src/Notification/NotificationManager.tsx +65 -0
  210. package/src/Notification/core.tsx +46 -0
  211. package/src/Notification/index.ts +9 -0
  212. package/src/Notification/types.ts +12 -0
  213. package/src/Notification/usePosition.tsx +11 -0
  214. package/src/Pager/Pager.tsx +48 -0
  215. package/src/PasswordInput/PasswordInput.tsx +43 -0
  216. package/src/Progress/Progress.tsx +94 -0
  217. package/src/Rating/Rating.tsx +130 -0
  218. package/src/ResponsiveImage/ResponsiveImage.tsx +25 -0
  219. package/src/Section/Section.tsx +86 -0
  220. package/src/Select/Select.tsx +97 -0
  221. package/src/Select/shared.tsx +45 -0
  222. package/src/Sidebar/Sidebar.tsx +46 -0
  223. package/src/Skiplink/Skiplink.tsx +20 -0
  224. package/src/Skiplink/SkiplinkItem.tsx +29 -0
  225. package/src/Spinner/Spinner.tsx +55 -0
  226. package/src/Stepper/StepperContainer.tsx +30 -0
  227. package/src/Stepper/StepperContent.tsx +51 -0
  228. package/src/Stepper/StepperDots.tsx +21 -0
  229. package/src/Stepper/StepperHeader.tsx +19 -0
  230. package/src/Stepper/StepperHeaderElement.tsx +77 -0
  231. package/src/Stepper/StepperNav.tsx +19 -0
  232. package/src/ThumbNav/ThumbNav.tsx +37 -0
  233. package/src/ThumbNav/ThumbNavItem.tsx +35 -0
  234. package/src/Timeline/TimelinePin.tsx +67 -0
  235. package/src/Timeline/TimelineWrapper.tsx +19 -0
  236. package/src/Toggle/Toggle.tsx +29 -0
  237. package/src/Toolbar/Toolbar.tsx +28 -0
  238. package/src/Toolbar/ToolbarDividerItem.tsx +5 -0
  239. package/src/Toolbar/ToolbarItem.tsx +95 -0
  240. package/src/assets.d.ts +4 -0
  241. package/src/index.tsx +350 -0
  242. package/src/utils.tsx +26 -0
  243. package/.editorconfig +0 -18
  244. package/.eslintrc +0 -65
  245. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -32
  246. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  247. package/.github/PULL_REQUEST_TEMPLATE.md +0 -24
  248. package/AUTHORS +0 -3
  249. package/CODE_OF_CONDUCT.EN.md +0 -77
  250. package/CODE_OF_CONDUCT.md +0 -69
  251. package/dist/design-react-kit.cjs.js +0 -3698
  252. package/dist/design-react-kit.cjs.js.map +0 -1
  253. package/dist/design-react-kit.d.ts +0 -1704
  254. package/dist/design-react-kit.es.js +0 -3188
  255. package/dist/design-react-kit.es.js.map +0 -1
  256. package/dist/design-react-kit.full.js +0 -17596
  257. package/dist/design-react-kit.full.js.map +0 -1
  258. package/dist/design-react-kit.full.min.js +0 -2
  259. package/dist/design-react-kit.full.min.js.map +0 -1
  260. package/dist/design-react-kit.js +0 -13394
  261. package/dist/design-react-kit.js.map +0 -1
  262. package/dist/design-react-kit.min.js +0 -2
  263. package/dist/design-react-kit.min.js.map +0 -1
  264. package/src/Storyshots.test.js +0 -9
  265. package/src/components/Accordion/Accordion.js +0 -22
  266. package/src/components/Accordion/AccordionBody.js +0 -118
  267. package/src/components/Accordion/AccordionHeader.js +0 -37
  268. package/src/components/Autocomplete/Autocomplete.js +0 -255
  269. package/src/components/Avatar/AvatarContainer.js +0 -24
  270. package/src/components/Avatar/AvatarExtraText.js +0 -22
  271. package/src/components/Avatar/AvatarGroupContainer.js +0 -23
  272. package/src/components/Avatar/AvatarIcon.js +0 -32
  273. package/src/components/Avatar/AvatarPresence.js +0 -25
  274. package/src/components/Avatar/AvatarStatus.js +0 -25
  275. package/src/components/Avatar/AvatarWrapper.js +0 -25
  276. package/src/components/Badge/Badge.js +0 -28
  277. package/src/components/BottomNav/BottomNav.js +0 -27
  278. package/src/components/BottomNav/BottomNavItem.js +0 -69
  279. package/src/components/Button/Button.js +0 -26
  280. package/src/components/Callout/Callout.js +0 -33
  281. package/src/components/Callout/CalloutText.js +0 -37
  282. package/src/components/Callout/CalloutTitle.js +0 -27
  283. package/src/components/Card/Card.js +0 -50
  284. package/src/components/Card/CardCategory.js +0 -43
  285. package/src/components/Card/CardFooterCTA.js +0 -17
  286. package/src/components/Card/CardReadMore.js +0 -45
  287. package/src/components/Card/CardSignature.js +0 -17
  288. package/src/components/Card/CardTag.js +0 -23
  289. package/src/components/Card/CardTagsHeader.js +0 -21
  290. package/src/components/Chips/Chip.js +0 -50
  291. package/src/components/Chips/ChipLabel.js +0 -25
  292. package/src/components/Collapse/Collapse.js +0 -66
  293. package/src/components/CookieBar/CookieBar.js +0 -22
  294. package/src/components/CookieBar/CookieBarButton.js +0 -25
  295. package/src/components/CookieBar/CookieBarButtons.js +0 -23
  296. package/src/components/Dimmer/Dimmer.js +0 -38
  297. package/src/components/Dimmer/DimmerButtons.js +0 -35
  298. package/src/components/FontLoader/FontLoader.js +0 -22
  299. package/src/components/FormGroup/FormGroup.js +0 -137
  300. package/src/components/Forward/Forward.js +0 -32
  301. package/src/components/Header/HeaderBrand.js +0 -86
  302. package/src/components/Header/HeaderContent.js +0 -49
  303. package/src/components/Header/HeaderContext.js +0 -14
  304. package/src/components/Header/HeaderLinkZone.js +0 -24
  305. package/src/components/Header/HeaderRightZone.js +0 -33
  306. package/src/components/Header/HeaderSearch.js +0 -36
  307. package/src/components/Header/HeaderSocialsZone.js +0 -30
  308. package/src/components/Header/HeaderToggler.js +0 -50
  309. package/src/components/Hero/Hero.js +0 -10
  310. package/src/components/Icon/Icon.js +0 -42
  311. package/src/components/Input/Input.js +0 -261
  312. package/src/components/Input/InputContainer.js +0 -39
  313. package/src/components/Input/utils.js +0 -126
  314. package/src/components/LinkList/LinkList.js +0 -65
  315. package/src/components/LinkList/LinkListItem.js +0 -88
  316. package/src/components/Nav/Nav.js +0 -37
  317. package/src/components/Notification/Notification.js +0 -78
  318. package/src/components/Offcanvas/Offcanvas.js +0 -101
  319. package/src/components/Pager/Pager.js +0 -32
  320. package/src/components/PagerList/PagerList.js +0 -28
  321. package/src/components/PasswordInput/PasswordInput.js +0 -41
  322. package/src/components/PasswordMeter/PasswordMeter.js +0 -80
  323. package/src/components/Progress/Progress.js +0 -88
  324. package/src/components/Rating/Rating.js +0 -130
  325. package/src/components/Section/Section.js +0 -49
  326. package/src/components/Separator/Separator.js +0 -34
  327. package/src/components/Sidebar/Sidebar.js +0 -53
  328. package/src/components/Skiplink/Skiplink.js +0 -25
  329. package/src/components/Skiplink/SkiplinkItem.js +0 -25
  330. package/src/components/Spinner/Spinner.js +0 -65
  331. package/src/components/Stepper/StepperContainer.js +0 -33
  332. package/src/components/Stepper/StepperContent.js +0 -54
  333. package/src/components/Stepper/StepperDots.js +0 -27
  334. package/src/components/Stepper/StepperHeader.js +0 -27
  335. package/src/components/Stepper/StepperHeaderElement.js +0 -45
  336. package/src/components/Stepper/StepperNav.js +0 -27
  337. package/src/components/Table/Table.js +0 -68
  338. package/src/components/Timeline/TimelinePin.js +0 -59
  339. package/src/components/Timeline/TimelineWrapper.js +0 -21
  340. package/src/components/Toggle/Toggle.js +0 -27
  341. package/src/components/utils.js +0 -1
  342. package/src/index.js +0 -144
  343. package/static/favicons/android-chrome-192x192.png +0 -0
  344. package/static/favicons/android-chrome-512x512.png +0 -0
  345. package/static/favicons/apple-touch-icon.png +0 -0
  346. package/static/favicons/browserconfig.xml +0 -9
  347. package/static/favicons/favicon-16x16.png +0 -0
  348. package/static/favicons/favicon-32x32.png +0 -0
  349. package/static/favicons/favicon.ico +0 -0
  350. package/static/favicons/manifest.webmanifest +0 -21
  351. package/static/favicons/mstile-150x150.png +0 -0
  352. package/static/favicons/safari-pinned-tab.svg +0 -23
@@ -0,0 +1,20 @@
1
+ import React, { FC, HTMLAttributes } from 'react';
2
+ import classname from 'classnames';
3
+
4
+ export interface GridListProps extends HTMLAttributes<HTMLSpanElement> {
5
+ /** Classi aggiuntive da usare per il componente LinkListItem */
6
+ className?: string;
7
+ }
8
+
9
+ export const GridList: FC<GridListProps> = ({
10
+ className,
11
+ children,
12
+ ...attributes
13
+ }) => {
14
+ const classes = classname('it-grid-list-wrapper', className);
15
+ return (
16
+ <div {...attributes} className={classes}>
17
+ {children}
18
+ </div>
19
+ );
20
+ };
@@ -0,0 +1,20 @@
1
+ import React, { FC, HTMLAttributes } from 'react';
2
+ import classname from 'classnames';
3
+
4
+ export interface GridRowProps extends HTMLAttributes<HTMLSpanElement> {
5
+ /** Classi aggiuntive da usare per il componente LinkListItem */
6
+ className?: string;
7
+ }
8
+
9
+ export const GridRow: FC<GridRowProps> = ({
10
+ className,
11
+ children,
12
+ ...attributes
13
+ }) => {
14
+ const classes = classname('grid-row', className);
15
+ return (
16
+ <div {...attributes} className={classes}>
17
+ {children}
18
+ </div>
19
+ );
20
+ };
@@ -0,0 +1,11 @@
1
+ export { GridItem } from './GridItem';
2
+ export { GridItemText } from './GridItemText';
3
+ export { GridItemTextWrapper } from './GridItemTextWrapper';
4
+ export { GridList } from './GridList';
5
+ export { GridRow } from './GridRow';
6
+
7
+ export type { GridItemProps } from './GridItem';
8
+ export type { GridItemTextProps } from './GridItemText';
9
+ export type { GridItemTextWrapperProps } from './GridItemTextWrapper';
10
+ export type { GridListProps } from './GridList';
11
+ export type { GridRowProps } from './GridRow';
@@ -1,29 +1,29 @@
1
- import React from 'react'
2
- import PropTypes from 'prop-types'
3
- import classNames from 'classnames'
1
+ import React, { FC, HTMLAttributes } from 'react';
2
+ import classNames from 'classnames';
4
3
 
5
- import HeaderContext, { CENTER, NAVBAR } from './HeaderContext'
4
+ import { HeaderContext, CENTER, NAVBAR } from './HeaderContext';
6
5
 
7
- const propTypes = {
8
- /** Classi addizionali per il componente Header */
9
- className: PropTypes.string,
10
- // cannot use variables above here or storybook writes the full import stacktrace
6
+ export interface HeaderProps extends HTMLAttributes<HTMLElement> {
7
+ /** Classi aggiuntive da usare per il componente Header */
8
+ className?: string;
11
9
  /** Tipo di componente Header: può essere solamente uno di questi tre tipi */
12
- type: PropTypes.oneOf(['slim', 'center', 'navbar']).isRequired,
10
+ type: 'slim' | 'center' | 'navbar';
13
11
  /** Riduce la grandezza del componente Header. Funziona solamente con Header "center". */
14
- small: PropTypes.bool,
12
+ small?: boolean;
15
13
  /** Imposta il tema per il componente Header. Per gli Header di tipo "slim" o "center"
16
14
  * il valore di default è "dark". Per l'Header di tipo "nav" il tema di default è "light"
17
15
  * in mobile, mentre "dark" in versione desktop.
18
16
  */
19
- theme: PropTypes.oneOf(['', 'light', 'dark'])
17
+ theme?: 'light' | 'dark' | '';
20
18
  }
21
19
 
22
- const defaultProps = {
23
- small: false
24
- }
25
-
26
- const Header = ({ className, small, theme, type, ...attributes }) => {
20
+ export const Header: FC<HeaderProps> = ({
21
+ className,
22
+ small = false,
23
+ theme = '',
24
+ type,
25
+ ...attributes
26
+ }) => {
27
27
  // use context here as theme
28
28
  const classes = classNames(className, {
29
29
  [`it-header-${type}-wrapper`]: type,
@@ -31,15 +31,10 @@ const Header = ({ className, small, theme, type, ...attributes }) => {
31
31
  [`theme-${theme}`]: type !== NAVBAR && theme,
32
32
  'theme-dark-mobile': type === NAVBAR && theme === 'dark',
33
33
  'theme-light-desk': type === NAVBAR && theme === 'light'
34
- })
34
+ });
35
35
  return (
36
36
  <HeaderContext.Provider value={{ type }}>
37
37
  <div className={classes} {...attributes} />
38
38
  </HeaderContext.Provider>
39
- )
40
- }
41
-
42
- Header.propTypes = propTypes
43
- Header.defaultProps = defaultProps
44
-
45
- export default Header
39
+ );
40
+ };
@@ -0,0 +1,90 @@
1
+ import React, {
2
+ AnchorHTMLAttributes,
3
+ ElementType,
4
+ ReactChild,
5
+ PureComponent
6
+ } from 'react';
7
+ import classNames from 'classnames';
8
+ import { CSSModule, NavbarBrand } from 'reactstrap';
9
+ import { HeaderContext, CENTER } from './HeaderContext';
10
+ import { Icon } from '../Icon/Icon';
11
+
12
+ export interface HeaderBrandProps
13
+ extends AnchorHTMLAttributes<HTMLAnchorElement> {
14
+ /** Utilizzarlo in caso di utilizzo di componenti personalizzati */
15
+ tag?: ElementType;
16
+ /** Classi aggiuntive da usare per il componente HeaderBrand */
17
+ className?: string;
18
+ /** Oggetto contenente la nuova mappatura per le classi CSS. */
19
+ cssModule?: CSSModule;
20
+ /** Da usare con il componente Header Nav in versione "responsive" */
21
+ responsive?: boolean;
22
+ /** Da utilizzare per specificare URL risorsa esterna. */
23
+ href?: string;
24
+ /** Icona da utilizzare nel componente. Utilizzata unicamente quando l'Header è di tipo Center. */
25
+ iconName?: string;
26
+ /** Elementi React da renderizzare al proprio interno. */
27
+ children: ReactChild | ReactChild[];
28
+ }
29
+
30
+ export class HeaderBrand extends PureComponent<HeaderBrandProps> {
31
+ static contextType = HeaderContext;
32
+
33
+ render() {
34
+ const {
35
+ className,
36
+ href,
37
+ iconName,
38
+ children,
39
+ tag = 'a',
40
+ responsive = false,
41
+ ...attributes
42
+ } = this.props;
43
+ const { type } = this.context;
44
+ const defaultAttributes = { tag };
45
+ if (type !== CENTER) {
46
+ const classes = classNames('d-lg-block', className, {
47
+ 'd-none': !responsive
48
+ });
49
+ return (
50
+ <NavbarBrand
51
+ className={classes}
52
+ href={href}
53
+ {...attributes}
54
+ {...defaultAttributes}
55
+ >
56
+ {children}
57
+ </NavbarBrand>
58
+ );
59
+ }
60
+ return (
61
+ <div className='it-brand-wrapper'>
62
+ <a href={href}>
63
+ {iconName && <Icon icon={iconName} />}
64
+ <div className='it-brand-text'>
65
+ {React.Children.map(children, (child, i) => {
66
+ if (
67
+ typeof child !== 'object' ||
68
+ child == null ||
69
+ !('props' in child)
70
+ ) {
71
+ return child;
72
+ }
73
+ // convention here: first item is the main title, while others subtext
74
+ const className = classNames(
75
+ child.props.className,
76
+ { 'd-none d-md-block': i } // subtext is anything but first element
77
+ );
78
+
79
+ const props = {
80
+ className
81
+ };
82
+
83
+ return React.cloneElement(child, props);
84
+ })}
85
+ </div>
86
+ </a>
87
+ </div>
88
+ );
89
+ }
90
+ }
@@ -0,0 +1,42 @@
1
+ import React, { HTMLAttributes, PureComponent } from 'react';
2
+ import classNames from 'classnames';
3
+ import { Navbar } from 'reactstrap';
4
+
5
+ import { HeaderContext, SLIM, CENTER, NAVBAR } from './HeaderContext';
6
+
7
+ export interface HeaderContentProps extends HTMLAttributes<HTMLElement> {
8
+ /** Classi aggiuntive da usare per il componente HeaderContent */
9
+ className?: string;
10
+ /** Da utilizzare per indicare che all'interno dell'Header verrà utilizzato un Megamenu */
11
+ megamenu?: boolean;
12
+ /** Parametro per il controllo responsive del componente secondo Bootstrap Italia. */
13
+ expand?: boolean | 'sm' | 'md' | 'lg' | 'xl';
14
+ }
15
+
16
+ export class HeaderContent extends PureComponent<HeaderContentProps> {
17
+ static contextType = HeaderContext;
18
+ render() {
19
+ const { className, megamenu, ...attributes } = this.props;
20
+ const { type } = this.context;
21
+ const classes = classNames(className, {
22
+ 'it-header-slim-wrapper-content': type === SLIM,
23
+ 'it-header-center-content-wrapper': type === CENTER,
24
+ navbar: type === NAVBAR,
25
+ 'has-megamenu': megamenu
26
+ });
27
+
28
+ const Content =
29
+ type === NAVBAR ? (
30
+ <Navbar className={classes} {...attributes} />
31
+ ) : (
32
+ <div className={classes} {...attributes} />
33
+ );
34
+ return (
35
+ <div className='container'>
36
+ <div className='row'>
37
+ <div className='col-12'>{Content}</div>
38
+ </div>
39
+ </div>
40
+ );
41
+ }
42
+ }
@@ -0,0 +1,9 @@
1
+ import React, { Context } from 'react';
2
+
3
+ export const SLIM = 'slim';
4
+ export const CENTER = 'center';
5
+ export const NAVBAR = 'navbar';
6
+
7
+ export const HeaderContext: Context<{
8
+ type?: typeof SLIM | typeof CENTER | typeof NAVBAR;
9
+ }> = React.createContext({});
@@ -0,0 +1,19 @@
1
+ import React, { FC, HTMLAttributes } from 'react';
2
+ import classNames from 'classnames';
3
+
4
+ export interface HeaderLinkZoneProps extends HTMLAttributes<HTMLElement> {
5
+ /** Classi addizionali per il componente HeaderLinkZone, applicata all'element "nav" annidato */
6
+ className?: string;
7
+ }
8
+
9
+ export const HeaderLinkZone: FC<HeaderLinkZoneProps> = ({
10
+ className,
11
+ ...attributes
12
+ }) => {
13
+ const classes = classNames(className);
14
+ return (
15
+ <div className='nav-mobile'>
16
+ <nav className={classes} {...attributes} />
17
+ </div>
18
+ );
19
+ };
@@ -0,0 +1,26 @@
1
+ import React, { PureComponent, HTMLAttributes } from 'react';
2
+ import classNames from 'classnames';
3
+
4
+ import { HeaderContext, SLIM } from './HeaderContext';
5
+
6
+ export interface HeaderRightZoneProps extends HTMLAttributes<HTMLElement> {
7
+ /** Classi addizionali per il componente HeaderLinkZone, applicata all'element "nav" annidato */
8
+ className?: string;
9
+ }
10
+
11
+ export class HeaderRightZone extends PureComponent<HeaderRightZoneProps> {
12
+ static contextType = HeaderContext;
13
+
14
+ render() {
15
+ const { className, ...attributes } = this.props;
16
+ const { type } = this.context;
17
+ const classes = classNames(className, {
18
+ // BI >= 1.3.6
19
+ 'it-header-slim-right-zone': type === SLIM,
20
+ // BI < 1.3.6
21
+ 'header-slim-right-zone': type === SLIM,
22
+ 'it-right-zone': type !== SLIM
23
+ });
24
+ return <div className={classes} {...attributes} />;
25
+ }
26
+ }
@@ -0,0 +1,33 @@
1
+ import React, { FC, HTMLAttributes } from 'react';
2
+ import classNames from 'classnames';
3
+
4
+ import { Icon } from '../Icon/Icon';
5
+
6
+ export interface HeaderSearchProps extends HTMLAttributes<HTMLElement> {
7
+ /** Classi aggiuntive da usare per il componente HeaderSearch */
8
+ className?: string;
9
+ /** Etichetta di testo da applicare all'elemento. In caso di stringa vuota non verrà mostrato alcun testo */
10
+ label: string;
11
+ /** Nome dell'icona da utilizzare */
12
+ iconName: string;
13
+ /** Indirizzo di indirizzamento al click dell'icona */
14
+ href?: string;
15
+ }
16
+
17
+ export const HeaderSearch: FC<HeaderSearchProps> = ({
18
+ className,
19
+ label,
20
+ href,
21
+ iconName = 'it-search',
22
+ ...attributes
23
+ }) => {
24
+ const classes = classNames('it-search-wrapper', className);
25
+ return (
26
+ <div className={classes} {...attributes}>
27
+ {label && <span className='d-none d-md-block'>{label}</span>}
28
+ <a className='search-link rounded-icon' aria-label={label} href={href}>
29
+ <Icon icon={iconName} />
30
+ </a>
31
+ </div>
32
+ );
33
+ };
@@ -0,0 +1,26 @@
1
+ import React, { FC, HTMLAttributes, ReactChild } from 'react';
2
+ import classNames from 'classnames';
3
+
4
+ export interface HeaderSocialsZoneProps extends HTMLAttributes<HTMLElement> {
5
+ /** Classi addizionali per il componente HeaderSocialsZone, verrà applicato all'elemento wrapper più esterno. */
6
+ className?: string;
7
+ /** Etichetta utilizzata per presentare i social presenti. In caso di stringa vuota non verrà mostrata alcuna etichetta */
8
+ label?: string;
9
+ /** Utilizzato per elencare i social da mostrare */
10
+ children?: ReactChild;
11
+ }
12
+
13
+ export const HeaderSocialsZone: FC<HeaderSocialsZoneProps> = ({
14
+ className,
15
+ children,
16
+ label,
17
+ ...attributes
18
+ }) => {
19
+ const classes = classNames('it-socials d-none d-md-flex', className);
20
+ return (
21
+ <div className={classes} {...attributes}>
22
+ {label && <span>{label}</span>}
23
+ {children}
24
+ </div>
25
+ );
26
+ };
@@ -0,0 +1,46 @@
1
+ import React, { PureComponent, ElementType, ButtonHTMLAttributes } from 'react';
2
+ import classNames from 'classnames';
3
+ import { NavbarToggler } from 'reactstrap';
4
+
5
+ import { HeaderContext, SLIM, NAVBAR } from './HeaderContext';
6
+
7
+ export interface HeaderTogglerProps
8
+ extends ButtonHTMLAttributes<HTMLButtonElement> {
9
+ /** Tipo di elemento DOM da utilizzare: di default "a" per Header Slim, "button" per altri tipi di Header.
10
+ * Se fornito questo sovrascriverà il valore di default.
11
+ */
12
+ tag?: ElementType;
13
+ /** Classi aggiuntive da usare per il componente HeaderToggler */
14
+ className?: string;
15
+ /** Indica l'attributo "type" sull'elemento DOM. Di default '' per Header Slim, "button" per altri tipi di Header.
16
+ * Se fornito questo sovrascriverà il valore di default.
17
+ */
18
+ type?: 'button' | 'submit' | 'reset';
19
+ }
20
+
21
+ export class HeaderToggler extends PureComponent<HeaderTogglerProps> {
22
+ static contextType = HeaderContext;
23
+ render() {
24
+ const { className, tag, type, ...attributes } = this.props;
25
+ const { type: HeaderType } = this.context;
26
+ const BUTTON = 'button';
27
+ const defaultTag = HeaderType === SLIM ? 'a' : BUTTON;
28
+ const defaultType = HeaderType === SLIM ? undefined : BUTTON;
29
+ const classes = classNames(
30
+ {
31
+ 'it-opener d-lg-none': HeaderType === SLIM,
32
+ 'custom-navbar-toggler': HeaderType === NAVBAR
33
+ },
34
+ className
35
+ );
36
+ return (
37
+ <NavbarToggler
38
+ className={classes}
39
+ {...attributes}
40
+ tag={tag || defaultTag}
41
+ type={type || defaultType}
42
+ href='#'
43
+ />
44
+ );
45
+ }
46
+ }
@@ -1,23 +1,22 @@
1
- import React from 'react'
2
- import PropTypes from 'prop-types'
3
- import classNames from 'classnames'
4
- import { Sticky, StickyProvider } from 'react-stickup'
1
+ import React, { FC, HTMLAttributes } from 'react';
2
+ import classNames from 'classnames';
3
+ import { Sticky, StickyProvider } from 'react-stickup';
5
4
 
6
- const propTypes = {
5
+ export interface HeadersProps extends HTMLAttributes<HTMLElement> {
7
6
  /** Aggiunge un ombra per enfatizzare il componente rispetto alla pagina in cui è contenuto */
8
- shadow: PropTypes.bool,
7
+ shadow?: boolean;
9
8
  /** Aggiunge il comportamento "sticky" ai componenti Header contenuti */
10
- sticky: PropTypes.bool,
9
+ sticky?: boolean;
11
10
  /** Classi addizionali per il componente Headers */
12
- className: PropTypes.string
11
+ className?: string;
13
12
  }
14
13
 
15
- const defaultProps = {
16
- shadow: false,
17
- sticky: false
18
- }
19
-
20
- const Headers = ({ className, shadow, sticky, ...attributes }) => {
14
+ export const Headers: FC<HeadersProps> = ({
15
+ className,
16
+ shadow = false,
17
+ sticky = false,
18
+ ...attributes
19
+ }) => {
21
20
  const classes = classNames(
22
21
  'it-header-wrapper',
23
22
  {
@@ -25,9 +24,9 @@ const Headers = ({ className, shadow, sticky, ...attributes }) => {
25
24
  'it-header-sticky': sticky
26
25
  },
27
26
  className
28
- )
27
+ );
29
28
  if (!sticky) {
30
- return <div className={classes} {...attributes}></div>
29
+ return <div className={classes} {...attributes}></div>;
31
30
  }
32
31
  return (
33
32
  <StickyProvider>
@@ -35,9 +34,5 @@ const Headers = ({ className, shadow, sticky, ...attributes }) => {
35
34
  <div className={classes} {...attributes}></div>
36
35
  </Sticky>
37
36
  </StickyProvider>
38
- )
39
- }
40
-
41
- Headers.propTypes = propTypes
42
- Headers.defaultProps = defaultProps
43
- export default Headers
37
+ );
38
+ };
@@ -0,0 +1,34 @@
1
+ import React, { FC, HTMLAttributes, ElementType } from 'react';
2
+ import classname from 'classnames';
3
+
4
+ export interface HeroProps extends HTMLAttributes<HTMLElement> {
5
+ /** Utilizzarlo in caso di utilizzo di componenti personalizzati */
6
+ tag?: ElementType;
7
+ /** Indica se il componente Hero deve ridurre l'altezza */
8
+ small?: boolean;
9
+ /** Indica al componente Hero di centrare i contenuti testuali orizzontalmente */
10
+ centered?: boolean;
11
+ /** Da utilizzare per creare un testi in overlay su immagini, al fine di migliorare la leggibilità di testo */
12
+ overlay?: 'dark' | 'primary' | 'filter';
13
+ /** Aggiunge margine negativo in fondo al componente Hero per creare una sovrapposizione con il contenuto seguente. */
14
+ overlap?: boolean;
15
+ }
16
+
17
+ export const Hero: FC<HeroProps> = ({
18
+ tag: Tag = 'div',
19
+ small,
20
+ centered,
21
+ overlay,
22
+ overlap,
23
+ className,
24
+ ...attributes
25
+ }) => {
26
+ const classes = classname('it-hero-wrapper', className, {
27
+ 'it-overlay': overlay,
28
+ ['it-' + overlay]: overlay,
29
+ 'it-hero-small-size': small,
30
+ 'it-text-centered': centered,
31
+ 'it-bottom-overlapping-content': overlap
32
+ });
33
+ return <Tag className={classes} {...attributes} />;
34
+ };
@@ -0,0 +1,25 @@
1
+ import React, { FC, HTMLAttributes } from 'react';
2
+
3
+ export interface HeroBackgroundProps extends HTMLAttributes<HTMLImageElement> {
4
+ /** Un testo alternativo per descrivere l'immagine mostrata */
5
+ alt: string;
6
+ /** L'URI dell'immagine da mostrare */
7
+ src: string;
8
+ /** Il titolo dell'immagine */
9
+ title?: string;
10
+ }
11
+
12
+ export const HeroBackground: FC<HeroBackgroundProps> = ({
13
+ alt,
14
+ ...attributes
15
+ }) => {
16
+ return (
17
+ <div className='img-responsive-wrapper'>
18
+ <div className='img-responsive'>
19
+ <div className='img-wrapper'>
20
+ <img {...attributes} alt={alt} />
21
+ </div>
22
+ </div>
23
+ </div>
24
+ );
25
+ };
@@ -0,0 +1,21 @@
1
+ import React, { FC, HTMLAttributes } from 'react';
2
+ import classname from 'classnames';
3
+ import { Col, Container, Row } from 'reactstrap';
4
+
5
+ export interface HeroBodyProps extends HTMLAttributes<HTMLElement> {
6
+ /** Eventuali classi aggiuntive */
7
+ className?: string;
8
+ }
9
+
10
+ export const HeroBody: FC<HeroBodyProps> = ({ children, className }) => {
11
+ const classes = classname('it-hero-text-wrapper', 'bg-dark', className);
12
+ return (
13
+ <Container>
14
+ <Row>
15
+ <Col>
16
+ <div className={classes}>{children}</div>
17
+ </Col>
18
+ </Row>
19
+ </Container>
20
+ );
21
+ };
@@ -0,0 +1,19 @@
1
+ import React, { FC } from 'react';
2
+ import classname from 'classnames';
3
+ import { Button, ButtonProps } from '../Button/Button';
4
+
5
+ export interface HeroButtonProps extends ButtonProps {
6
+ wrapperClassName?: string;
7
+ }
8
+
9
+ export const HeroButton: FC<HeroButtonProps> = ({
10
+ wrapperClassName,
11
+ ...attributes
12
+ }) => {
13
+ const classes = classname('it-btn-container', wrapperClassName);
14
+ return (
15
+ <div className={classes}>
16
+ <Button size='sm' {...attributes} />
17
+ </div>
18
+ );
19
+ };
@@ -0,0 +1,15 @@
1
+ import React, { FC, HTMLAttributes } from 'react';
2
+ import classname from 'classnames';
3
+
4
+ export interface HeroCategoryProps extends HTMLAttributes<HTMLSpanElement> {
5
+ /** Eventuali classi aggiuntive per la categoria */
6
+ className?: string;
7
+ }
8
+
9
+ export const HeroCategory: FC<HeroCategoryProps> = ({
10
+ className,
11
+ ...attributes
12
+ }) => {
13
+ const classes = classname('it-category', className);
14
+ return <span {...attributes} className={classes} />;
15
+ };
@@ -0,0 +1,16 @@
1
+ import React, { ElementType, FC, HTMLAttributes } from 'react';
2
+ import classname from 'classnames';
3
+
4
+ export interface HeroTitleProps extends HTMLAttributes<HTMLSpanElement> {
5
+ /** Indica il tag da utilizzare per il titolo */
6
+ tag?: ElementType;
7
+ }
8
+
9
+ export const HeroTitle: FC<HeroTitleProps> = ({
10
+ tag: Tag = 'h1',
11
+ className,
12
+ ...attributes
13
+ }) => {
14
+ const classes = classname(className);
15
+ return <Tag {...attributes} className={classes} />;
16
+ };
@@ -0,0 +1,13 @@
1
+ export { Hero } from './Hero';
2
+ export { HeroBackground } from './HeroBackground';
3
+ export { HeroBody } from './HeroBody';
4
+ export { HeroButton } from './HeroButton';
5
+ export { HeroCategory } from './HeroCategory';
6
+ export { HeroTitle } from './HeroTitle';
7
+
8
+ export type { HeroProps } from './Hero';
9
+ export type { HeroBackgroundProps } from './HeroBackground';
10
+ export type { HeroBodyProps } from './HeroBody';
11
+ export type { HeroButtonProps } from './HeroButton';
12
+ export type { HeroCategoryProps } from './HeroCategory';
13
+ export type { HeroTitleProps } from './HeroTitle';
@@ -0,0 +1,7 @@
1
+ import React, { FC, SVGProps } from 'react';
2
+
3
+ export const EmptyIcon: FC<SVGProps<SVGSVGElement>> = (props) => (
4
+ <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' {...props}>
5
+ <path fill='none' d='M0 0h24v24H0z' />
6
+ </svg>
7
+ );