design-react-kit 5.0.3 → 5.0.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/utils.tsx","../../src/transitions.ts","../../src/Accordion/AccordionBody.tsx","../../src/Alert/Alert.tsx","../../src/Icon/assets/index.ts","../../src/Icon/EmptyIcon.tsx","../../src/Icon/Icon.tsx","../../src/Button/Button.tsx","../../src/BackToTop/BackToTop.tsx","../../src/Dropdown/Dropdown.tsx","../../src/Dropdown/DropdownMenu.tsx","../../src/Dropdown/DropdownToggle.tsx","../../src/FontLoader/FontLoader.tsx","../../src/GoBack/GoBack.tsx","../../src/Header/HeaderContext.tsx","../../src/Input/InputContainer.tsx","../../src/Input/utils.tsx","../../src/Input/Input.tsx","../../src/LinkList/LinkListItem.tsx","../../src/Megamenu/MegamenuFooter.tsx","../../src/NavScroll/debounce.ts","../../src/NavScroll/useNavScroll.ts","../../src/Notification/usePosition.tsx","../../src/Notification/NotificationContent.tsx","../../src/Notification/Notification.tsx","../../src/Notification/NotificationManager.tsx","../../src/Notification/core.tsx","../../src/Rating/Rating.tsx","../../src/Stepper/StepperContent.tsx","../../src/Stepper/StepperHeaderElement.tsx","../../src/Toolbar/Toolbar.tsx","../../src/Toolbar/ToolbarItem.tsx","../../src/Accordion/Accordion.tsx","../../src/Accordion/AccordionHeader.tsx","../../src/Accordion/AccordionItem.tsx","../../src/Avatar/AvatarContainer.tsx","../../src/Avatar/AvatarExtraText.tsx","../../src/Avatar/AvatarGroupContainer.tsx","../../src/Avatar/AvatarIcon.tsx","../../src/Avatar/AvatarPresence.tsx","../../src/Avatar/AvatarStatus.tsx","../../src/Avatar/AvatarWrapper.tsx","../../src/Badge/Badge.tsx","../../src/BottomNav/BottomNav.tsx","../../src/BottomNav/BottomNavItem.tsx","../../src/Breadcrumb/Breadcrumb.tsx","../../src/Callout/Callout.tsx","../../src/Callout/CalloutMoreFooter.tsx","../../src/Callout/CalloutText.tsx","../../src/Callout/CalloutTitle.tsx","../../src/Card/Card.tsx","../../src/Card/CardBody.tsx","../../src/Card/CardCategory.tsx","../../src/Card/CardFooterCTA.tsx","../../src/Card/CardReadMore.tsx","../../src/Card/CardSignature.tsx","../../src/Card/CardTag.tsx","../../src/Card/CardTagsHeader.tsx","../../src/Card/CardText.tsx","../../src/Card/CardTitle.tsx","../../src/Chips/Chip.tsx","../../src/Chips/ChipLabel.tsx","../../src/Collapse/Collapse.tsx","../../src/Dimmer/Dimmer.tsx","../../src/Dimmer/DimmerButtons.tsx","../../src/Forward/Forward.tsx","../../src/Grid/GridItem.tsx","../../src/Grid/GridItemText.tsx","../../src/Grid/GridItemTextWrapper.tsx","../../src/Grid/GridList.tsx","../../src/Grid/GridRow.tsx","../../src/Header/Header.tsx","../../src/Header/HeaderBrand.tsx","../../src/Header/HeaderContent.tsx","../../src/Header/HeaderLinkZone.tsx","../../src/Header/HeaderRightZone.tsx","../../src/Header/HeaderSearch.tsx","../../src/Header/HeaderSocialsZone.tsx","../../src/Header/HeaderToggler.tsx","../../src/Header/Headers.tsx","../../src/Hero/Hero.tsx","../../src/Hero/HeroBackground.tsx","../../src/Hero/HeroBody.tsx","../../src/Hero/HeroButton.tsx","../../src/Hero/HeroCategory.tsx","../../src/Hero/HeroTitle.tsx","../../src/LinkList/LinkList.tsx","../../src/Megamenu/MegamenuHighlightColumn.tsx","../../src/Megamenu/MegamenuItem.tsx","../../src/Modal/Modal.tsx","../../src/Modal/ModalBody.tsx","../../src/Modal/ModalFooter.tsx","../../src/Modal/ModalHeader.tsx","../../src/Nav/Nav.tsx","../../src/Pager/Pager.tsx","../../src/Progress/Progress.tsx","../../src/ResponsiveImage/ResponsiveImage.tsx","../../src/Section/Section.tsx","../../src/Select/Select.tsx","../../src/Sidebar/Sidebar.tsx","../../src/Skiplink/Skiplink.tsx","../../src/Skiplink/SkiplinkItem.tsx","../../src/Spinner/Spinner.tsx","../../src/Stepper/StepperContainer.tsx","../../src/Stepper/StepperDots.tsx","../../src/Stepper/StepperHeader.tsx","../../src/Stepper/StepperNav.tsx","../../src/Input/TextArea.tsx","../../src/ThumbNav/ThumbNav.tsx","../../src/ThumbNav/ThumbNavItem.tsx","../../src/Timeline/TimelineWrapper.tsx","../../src/Timeline/TimelinePin.tsx","../../src/Toggle/Toggle.tsx","../../src/Toolbar/ToolbarDividerItem.tsx","../../src/NavScroll/useSizeDetector.ts"],"sourcesContent":["export const noop = () => {};\n\nexport const logError = (message: string) => {\n if (typeof console !== 'undefined') {\n if (console.error) {\n console.error(message);\n } else {\n console.log(message);\n }\n }\n};\n\n// @internal Used for testing purposes only\nexport const flushMessageCache = () => {\n for (const key in messages) {\n delete messages[key];\n }\n};\n\nconst messages: Record<string, 1> = {};\nexport const notifyDeprecation = (message: string, options: { once: boolean } = { once: true }) => {\n if (!options.once) {\n logError(message);\n } else {\n if (!messages[message]) {\n logError(message);\n messages[message] = 1;\n }\n }\n};\n\nexport function mapToCssModules(className: string | null, cssModules?: Record<string, string>) {\n let finalClassNames = className == null ? '' : className;\n if (!cssModules) {\n return finalClassNames;\n }\n return finalClassNames\n .split(' ')\n .map((klass) => cssModules[klass] ?? klass)\n .join(' ');\n}\n\ntype UnknownObject = Record<string, unknown>;\n\nexport function pick<T extends UnknownObject>(obj: T, keys: keyof T | Array<keyof T>): Partial<T> {\n const keysArray = Array.isArray(keys) ? keys : [keys];\n const newObj: Partial<T> = {};\n for (const key of keysArray) {\n if (key in obj) {\n newObj[key] = obj[key];\n }\n }\n return newObj;\n}\n\nexport function omit<T extends UnknownObject>(obj: T, keys: keyof T | Array<keyof T>): Partial<T> {\n const keysLookup = new Set(Array.isArray(keys) ? keys : [keys]);\n\n const newObj: Partial<T> = {};\n for (const key in obj) {\n if (!keysLookup.has(key)) {\n newObj[key] = obj[key];\n }\n }\n return newObj;\n}\n","// Taken from Reactstrap utils.js which are tken from bootstrap sass\nexport const TransitionTimeouts = {\n // $transition-fade\n Fade: 150,\n // $transition-collapse\n Collapse: 350,\n // $modal-transition\n Modal: 300,\n // $carousel-transition\n Carousel: 600\n};\n\n// taken from Reactstrap utils.js\nexport const TransitionsKeys = [\n 'in',\n 'mountOnEnter',\n 'unmountOnExit',\n 'appear',\n 'enter',\n 'exit',\n 'timeout',\n 'onEnter',\n 'onEntering',\n 'onEntered',\n 'onExit',\n 'onExiting',\n 'onExited'\n];\n\nconst transitionStatus = {\n entering: 1,\n entered: 1,\n exiting: 1,\n exited: 1\n};\n\nexport type TransitionStates = keyof typeof transitionStatus;\n","import React, { ElementType, useCallback, useState } from 'react';\nimport classNames from 'classnames';\nimport { Transition } from 'react-transition-group';\n\nimport { pick, omit } from '../utils';\nimport { TransitionTimeouts, TransitionsKeys } from '../transitions';\nimport type { TransitionProps } from 'react-transition-group/Transition';\nimport type { TransitionStates } from '../transitions';\n\nexport type AccordionBodyProps = Partial<TransitionProps> & {\n tag?: ElementType;\n className?: string;\n listClassName?: string;\n active?: boolean;\n onToggle?: () => void;\n};\n\n// hardcode these entries to avoid leaks\nconst transitionStatusToClassHash: Record<TransitionStates, string> = {\n entering: 'collapsing',\n entered: 'collapse show',\n exiting: 'collapsing',\n exited: 'collapse'\n};\n\nfunction getTransitionClass(status: TransitionStates) {\n return transitionStatusToClassHash[status] || 'collapse';\n}\n\nfunction getHeight(node: HTMLElement) {\n return node.scrollHeight;\n}\n\nexport const AccordionBody = ({\n className,\n listClassName,\n tag = 'div',\n active = false,\n children,\n timeout = TransitionTimeouts.Collapse,\n ...attributes\n}: AccordionBodyProps) => {\n const [height, setHeight] = useState<null | number>(null);\n\n const onEntering = useCallback(\n (node: HTMLElement, isAppearing: boolean) => {\n setHeight(getHeight(node));\n attributes.onEntering?.(node, isAppearing);\n },\n [attributes.onEntering]\n );\n const onEntered = useCallback(\n (node: HTMLElement, isAppearing: boolean) => {\n setHeight(null);\n attributes.onEntered?.(node, isAppearing);\n },\n [attributes.onEntered]\n );\n const onExit = useCallback(\n (node: HTMLElement) => {\n setHeight(getHeight(node));\n attributes.onExit?.(node);\n },\n [attributes.onExit]\n );\n const onExiting = useCallback(\n (node: HTMLElement) => {\n // getting this variable triggers a reflow\n // @ts-expect-error\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _unused = node.offsetHeight;\n setHeight(0);\n attributes.onExiting?.(node);\n },\n [attributes.onExiting]\n );\n const onExited = useCallback(\n (node: HTMLElement) => {\n setHeight(null);\n attributes.onExited?.(node);\n },\n [attributes.onExited]\n );\n const Tag = tag;\n\n const transitionProps = pick(attributes, TransitionsKeys);\n const childProps = omit(attributes, TransitionsKeys);\n\n return (\n <Transition\n {...transitionProps}\n timeout={timeout}\n in={active}\n onEntering={onEntering}\n onEntered={onEntered}\n onExit={onExit}\n onExiting={onExiting}\n onExited={onExited}\n >\n {(status: TransitionStates) => {\n const transitionClass = getTransitionClass(status);\n const classes = classNames(className, transitionClass);\n const listClasses = classNames(listClassName, 'accordion-body');\n const style = height == null ? null : { height };\n\n return (\n <Tag className={classes} style={{ ...childProps.style, ...style }} {...childProps}>\n <div className={listClasses}>{children}</div>\n </Tag>\n );\n }}\n </Transition>\n );\n};\n// }\n","import React, { FC, HTMLAttributes, MouseEventHandler, ElementType, Ref } from 'react';\nimport { Alert as InnerAlert, FadeProps } from 'reactstrap';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\n\n// Copy over from reactstrap and add new ones\nexport interface AlertProps extends HTMLAttributes<HTMLElement> {\n closeClassName?: string;\n closeAriaLabel?: string;\n /** Oggetto contenente la nuova mappatura per le classi CSS. */\n cssModule?: CSSModule;\n /** Le varianti di colore definite in Bootstrap Italia */\n color?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | string;\n /** Quando abilitato mostra un'animazione di entrata ed uscita del componente Alert. Valore di default: true. */\n fade?: boolean;\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n transition?: FadeProps;\n /** Da utilizzare per impostare un riferimento all'elemento DOM */\n innerRef?: Ref<HTMLElement>;\n isOpen?: boolean;\n toggle?: MouseEventHandler<any>;\n testId?: string;\n}\n\nconst defaultProps = {\n color: 'success',\n isOpen: true,\n fade: true\n};\n\nexport const Alert: FC<AlertProps> = ({ testId, ...props }) => {\n return <InnerAlert data-testid={testId} {...props} />;\n};\n\nAlert.defaultProps = defaultProps;\n","const iconList: Record<string, boolean> = {\n 'it-android-square': true,\n 'it-android': true,\n 'it-apple-square': true,\n 'it-apple': true,\n 'it-arrow-down-circle': true,\n 'it-arrow-down-triangle': true,\n 'it-arrow-down': true,\n 'it-arrow-left-circle': true,\n 'it-arrow-left-triangle': true,\n 'it-arrow-left': true,\n 'it-arrow-right-circle': true,\n 'it-arrow-right-triangle': true,\n 'it-arrow-right': true,\n 'it-arrow-up-circle': true,\n 'it-arrow-up-triangle': true,\n 'it-arrow-up': true,\n 'it-ban': true,\n 'it-behance': true,\n 'it-bookmark': true,\n 'it-box': true,\n 'it-burger': true,\n 'it-calendar': true,\n 'it-camera': true,\n 'it-card': true,\n 'it-chart-line': true,\n 'it-check-circle': true,\n 'it-check': true,\n 'it-chevron-left': true,\n 'it-chevron-right': true,\n 'it-clip': true,\n 'it-clock': true,\n 'it-close-big': true,\n 'it-close-circle': true,\n 'it-close': true,\n 'it-code-circle': true,\n 'it-collapse': true,\n 'it-comment': true,\n 'it-copy': true,\n 'it-delete': true,\n 'it-designers-italia': true,\n 'it-download': true,\n 'it-error': true,\n 'it-exchange-circle': true,\n 'it-expand': true,\n 'it-external-link': true,\n 'it-facebook-square': true,\n 'it-facebook': true,\n 'it-figma-square': true,\n 'it-figma': true,\n 'it-file-audio': true,\n 'it-file-compressed': true,\n 'it-file-csv': true,\n 'it-file-json': true,\n 'it-file-odp': true,\n 'it-file-ods': true,\n 'it-file-odt': true,\n 'it-file-pdf-ext': true,\n 'it-file-pdf': true,\n 'it-file-ppt': true,\n 'it-file-sheet': true,\n 'it-file-slides': true,\n 'it-file-txt': true,\n 'it-file-video': true,\n 'it-file-xml': true,\n 'it-file': true,\n 'it-files': true,\n 'it-flag': true,\n 'it-flickr-square': true,\n 'it-flickr': true,\n 'it-folder': true,\n 'it-fullscreen': true,\n 'it-funnel': true,\n 'it-github': true,\n 'it-google': true,\n 'it-hearing': true,\n 'it-help-circle': true,\n 'it-help': true,\n 'it-horn': true,\n 'it-inbox': true,\n 'it-info-circle': true,\n 'it-instagram': true,\n 'it-key': true,\n 'it-less-circle': true,\n 'it-link': true,\n 'it-linkedin-square': true,\n 'it-linkedin': true,\n 'it-list': true,\n 'it-lock': true,\n 'it-locked': true,\n 'it-logout': true,\n 'it-mail-open': true,\n 'it-mail': true,\n 'it-map-marker-circle': true,\n 'it-map-marker-minus': true,\n 'it-map-marker-plus': true,\n 'it-map-marker': true,\n 'it-mastodon-square': true,\n 'it-mastodon': true,\n 'it-maximize-alt': true,\n 'it-maximize': true,\n 'it-medium-square': true,\n 'it-medium': true,\n 'it-minimize': true,\n 'it-minus-circle': true,\n 'it-minus': true,\n 'it-moodle-square': true,\n 'it-moodle': true,\n 'it-more-actions': true,\n 'it-more-items': true,\n 'it-note': true,\n 'it-open-source': true,\n 'it-pa': true,\n 'it-password-invisible': true,\n 'it-password-visible': true,\n 'it-pencil': true,\n 'it-piattaforme': true,\n 'it-pin': true,\n 'it-pinterest-square': true,\n 'it-pinterest': true,\n 'it-plug': true,\n 'it-plus-circle': true,\n 'it-plus': true,\n 'it-presentation': true,\n 'it-print': true,\n 'it-quora-square': true,\n 'it-quora': true,\n 'it-reddit-square': true,\n 'it-reddit': true,\n 'it-refresh': true,\n 'it-restore': true,\n 'it-rss-square': true,\n 'it-rss': true,\n 'it-search': true,\n 'it-settings': true,\n 'it-share': true,\n 'it-slack-square': true,\n 'it-slack': true,\n 'it-snapchat-square': true,\n 'it-snapchat': true,\n 'it-software': true,\n 'it-stackexchange-square': true,\n 'it-stackexchange': true,\n 'it-stackoverflow-square': true,\n 'it-stackoverflow': true,\n 'it-star-full': true,\n 'it-star-outline': true,\n 'it-team-digitale': true,\n 'it-telegram': true,\n 'it-telephone': true,\n 'it-tiktok-square': true,\n 'it-tiktok': true,\n 'it-tool': true,\n 'it-threads-square': true,\n 'it-threads': true,\n 'it-twitter-square': true,\n 'it-twitter': true,\n 'it-unlocked': true,\n 'it-upload': true,\n 'it-user': true,\n 'it-video': true,\n 'it-vimeo-square': true,\n 'it-vimeo': true,\n 'it-warning-circle': true,\n 'it-warning': true,\n 'it-whatsapp-square': true,\n 'it-whatsapp': true,\n 'it-wifi': true,\n 'it-youtube': true,\n 'it-zoom-in': true,\n 'it-zoom-out': true\n};\nexport type IconName = keyof typeof iconList;\n\nexport const loadIcon = (name: IconName) => {\n switch (name) {\n case 'it-android-square': {\n return import('./ItAndroidSquare');\n }\n case 'it-android': {\n return import('./ItAndroid');\n }\n case 'it-apple-square': {\n return import('./ItAppleSquare');\n }\n case 'it-apple': {\n return import('./ItApple');\n }\n case 'it-arrow-down-circle': {\n return import('./ItArrowDownCircle');\n }\n case 'it-arrow-down-triangle': {\n return import('./ItArrowDownTriangle');\n }\n case 'it-arrow-down': {\n return import('./ItArrowDown');\n }\n case 'it-arrow-left-circle': {\n return import('./ItArrowLeftCircle');\n }\n case 'it-arrow-left-triangle': {\n return import('./ItArrowLeftTriangle');\n }\n case 'it-arrow-left': {\n return import('./ItArrowLeft');\n }\n case 'it-arrow-right-circle': {\n return import('./ItArrowRightCircle');\n }\n case 'it-arrow-right-triangle': {\n return import('./ItArrowRightTriangle');\n }\n case 'it-arrow-right': {\n return import('./ItArrowRight');\n }\n case 'it-arrow-up-circle': {\n return import('./ItArrowUpCircle');\n }\n case 'it-arrow-up-triangle': {\n return import('./ItArrowUpTriangle');\n }\n case 'it-arrow-up': {\n return import('./ItArrowUp');\n }\n case 'it-ban': {\n return import('./ItBan');\n }\n case 'it-behance': {\n return import('./ItBehance');\n }\n case 'it-bookmark': {\n return import('./ItBookmark');\n }\n case 'it-box': {\n return import('./ItBox');\n }\n case 'it-burger': {\n return import('./ItBurger');\n }\n case 'it-calendar': {\n return import('./ItCalendar');\n }\n case 'it-camera': {\n return import('./ItCamera');\n }\n case 'it-card': {\n return import('./ItCard');\n }\n case 'it-chart-line': {\n return import('./ItChartLine');\n }\n case 'it-check-circle': {\n return import('./ItCheckCircle');\n }\n case 'it-check': {\n return import('./ItCheck');\n }\n case 'it-chevron-left': {\n return import('./ItChevronLeft');\n }\n case 'it-chevron-right': {\n return import('./ItChevronRight');\n }\n case 'it-clip': {\n return import('./ItClip');\n }\n case 'it-clock': {\n return import('./ItClock');\n }\n case 'it-close-big': {\n return import('./ItCloseBig');\n }\n case 'it-close-circle': {\n return import('./ItCloseCircle');\n }\n case 'it-close': {\n return import('./ItClose');\n }\n case 'it-code-circle': {\n return import('./ItCodeCircle');\n }\n case 'it-collapse': {\n return import('./ItCollapse');\n }\n case 'it-comment': {\n return import('./ItComment');\n }\n case 'it-copy': {\n return import('./ItCopy');\n }\n case 'it-delete': {\n return import('./ItDelete');\n }\n case 'it-designers-italia': {\n return import('./ItDesignersItalia');\n }\n case 'it-download': {\n return import('./ItDownload');\n }\n case 'it-error': {\n return import('./ItError');\n }\n case 'it-exchange-circle': {\n return import('./ItExchangeCircle');\n }\n case 'it-expand': {\n return import('./ItExpand');\n }\n case 'it-external-link': {\n return import('./ItExternalLink');\n }\n case 'it-facebook-square': {\n return import('./ItFacebookSquare');\n }\n case 'it-facebook': {\n return import('./ItFacebook');\n }\n case 'it-figma-square': {\n return import('./ItFigmaSquare');\n }\n case 'it-figma': {\n return import('./ItFigma');\n }\n case 'it-file-audio': {\n return import('./ItFileAudio');\n }\n case 'it-file-compressed': {\n return import('./ItFileCompressed');\n }\n case 'it-file-csv': {\n return import('./ItFileCsv');\n }\n case 'it-file-json': {\n return import('./ItFileJson');\n }\n case 'it-file-odp': {\n return import('./ItFileOdp');\n }\n case 'it-file-ods': {\n return import('./ItFileOds');\n }\n case 'it-file-odt': {\n return import('./ItFileOdt');\n }\n case 'it-file-pdf-ext': {\n return import('./ItFilePdfExt');\n }\n case 'it-file-pdf': {\n return import('./ItFilePdf');\n }\n case 'it-file-ppt': {\n return import('./ItFilePpt');\n }\n case 'it-file-sheet': {\n return import('./ItFileSheet');\n }\n case 'it-file-slides': {\n return import('./ItFileSlides');\n }\n case 'it-file-txt': {\n return import('./ItFileTxt');\n }\n case 'it-file-video': {\n return import('./ItFileVideo');\n }\n case 'it-file-xml': {\n return import('./ItFileXml');\n }\n case 'it-file': {\n return import('./ItFile');\n }\n case 'it-files': {\n return import('./ItFiles');\n }\n case 'it-flag': {\n return import('./ItFlag');\n }\n case 'it-flickr-square': {\n return import('./ItFlickrSquare');\n }\n case 'it-flickr': {\n return import('./ItFlickr');\n }\n case 'it-folder': {\n return import('./ItFolder');\n }\n case 'it-fullscreen': {\n return import('./ItFullscreen');\n }\n case 'it-funnel': {\n return import('./ItFunnel');\n }\n case 'it-github': {\n return import('./ItGithub');\n }\n case 'it-google': {\n return import('./ItGoogle');\n }\n case 'it-hearing': {\n return import('./ItHearing');\n }\n case 'it-help-circle': {\n return import('./ItHelpCircle');\n }\n case 'it-help': {\n return import('./ItHelp');\n }\n case 'it-horn': {\n return import('./ItHorn');\n }\n case 'it-inbox': {\n return import('./ItInbox');\n }\n case 'it-info-circle': {\n return import('./ItInfoCircle');\n }\n case 'it-instagram': {\n return import('./ItInstagram');\n }\n case 'it-key': {\n return import('./ItKey');\n }\n case 'it-less-circle': {\n return import('./ItLessCircle');\n }\n case 'it-link': {\n return import('./ItLink');\n }\n case 'it-linkedin-square': {\n return import('./ItLinkedinSquare');\n }\n case 'it-linkedin': {\n return import('./ItLinkedin');\n }\n case 'it-list': {\n return import('./ItList');\n }\n case 'it-lock': {\n return import('./ItLock');\n }\n case 'it-locked': {\n return import('./ItLocked');\n }\n case 'it-logout': {\n return import('./ItLogout');\n }\n case 'it-mail-open': {\n return import('./ItMailOpen');\n }\n case 'it-mail': {\n return import('./ItMail');\n }\n case 'it-map-marker-circle': {\n return import('./ItMapMarkerCircle');\n }\n case 'it-map-marker-minus': {\n return import('./ItMapMarkerMinus');\n }\n case 'it-map-marker-plus': {\n return import('./ItMapMarkerPlus');\n }\n case 'it-map-marker': {\n return import('./ItMapMarker');\n }\n case 'it-mastodon-square': {\n return import('./ItMastodonSquare');\n }\n case 'it-mastodon': {\n return import('./ItMastodon');\n }\n case 'it-maximize-alt': {\n return import('./ItMaximizeAlt');\n }\n case 'it-maximize': {\n return import('./ItMaximize');\n }\n case 'it-medium-square': {\n return import('./ItMediumSquare');\n }\n case 'it-medium': {\n return import('./ItMedium');\n }\n case 'it-minimize': {\n return import('./ItMinimize');\n }\n case 'it-minus-circle': {\n return import('./ItMinusCircle');\n }\n case 'it-minus': {\n return import('./ItMinus');\n }\n case 'it-moodle-square': {\n return import('./ItMoodleSquare');\n }\n case 'it-moodle': {\n return import('./ItMoodle');\n }\n case 'it-more-actions': {\n return import('./ItMoreActions');\n }\n case 'it-more-items': {\n return import('./ItMoreItems');\n }\n case 'it-note': {\n return import('./ItNote');\n }\n case 'it-open-source': {\n return import('./ItOpenSource');\n }\n case 'it-pa': {\n return import('./ItPa');\n }\n case 'it-password-invisible': {\n return import('./ItPasswordInvisible');\n }\n case 'it-password-visible': {\n return import('./ItPasswordVisible');\n }\n case 'it-pencil': {\n return import('./ItPencil');\n }\n case 'it-piattaforme': {\n return import('./ItPiattaforme');\n }\n case 'it-pin': {\n return import('./ItPin');\n }\n case 'it-pinterest-square': {\n return import('./ItPinterestSquare');\n }\n case 'it-pinterest': {\n return import('./ItPinterest');\n }\n case 'it-plug': {\n return import('./ItPlug');\n }\n case 'it-plus-circle': {\n return import('./ItPlusCircle');\n }\n case 'it-plus': {\n return import('./ItPlus');\n }\n case 'it-presentation': {\n return import('./ItPresentation');\n }\n case 'it-print': {\n return import('./ItPrint');\n }\n case 'it-quora-square': {\n return import('./ItQuoraSquare');\n }\n case 'it-quora': {\n return import('./ItQuora');\n }\n case 'it-reddit-square': {\n return import('./ItRedditSquare');\n }\n case 'it-reddit': {\n return import('./ItReddit');\n }\n case 'it-refresh': {\n return import('./ItRefresh');\n }\n case 'it-restore': {\n return import('./ItRestore');\n }\n case 'it-rss-square': {\n return import('./ItRssSquare');\n }\n case 'it-rss': {\n return import('./ItRss');\n }\n case 'it-search': {\n return import('./ItSearch');\n }\n case 'it-settings': {\n return import('./ItSettings');\n }\n case 'it-share': {\n return import('./ItShare');\n }\n case 'it-slack-square': {\n return import('./ItSlackSquare');\n }\n case 'it-slack': {\n return import('./ItSlack');\n }\n case 'it-snapchat-square': {\n return import('./ItSnapchatSquare');\n }\n case 'it-snapchat': {\n return import('./ItSnapchat');\n }\n case 'it-software': {\n return import('./ItSoftware');\n }\n case 'it-stackexchange-square': {\n return import('./ItStackexchangeSquare');\n }\n case 'it-stackexchange': {\n return import('./ItStackexchange');\n }\n case 'it-stackoverflow-square': {\n return import('./ItStackoverflowSquare');\n }\n case 'it-stackoverflow': {\n return import('./ItStackoverflow');\n }\n case 'it-star-full': {\n return import('./ItStarFull');\n }\n case 'it-star-outline': {\n return import('./ItStarOutline');\n }\n case 'it-team-digitale': {\n return import('./ItTeamDigitale');\n }\n case 'it-telegram': {\n return import('./ItTelegram');\n }\n case 'it-telephone': {\n return import('./ItTelephone');\n }\n case 'it-tiktok-square': {\n return import('./ItTiktokSquare');\n }\n case 'it-tiktok': {\n return import('./ItTiktok');\n }\n case 'it-tool': {\n return import('./ItTool');\n }\n case 'it-threads-square': {\n return import('./ItThreadsSquare');\n }\n case 'it-threads': {\n return import('./ItThreads');\n }\n case 'it-twitter-square': {\n return import('./ItTwitterSquare');\n }\n case 'it-twitter': {\n return import('./ItTwitter');\n }\n case 'it-unlocked': {\n return import('./ItUnlocked');\n }\n case 'it-upload': {\n return import('./ItUpload');\n }\n case 'it-user': {\n return import('./ItUser');\n }\n case 'it-video': {\n return import('./ItVideo');\n }\n case 'it-vimeo-square': {\n return import('./ItVimeoSquare');\n }\n case 'it-vimeo': {\n return import('./ItVimeo');\n }\n case 'it-warning-circle': {\n return import('./ItWarningCircle');\n }\n case 'it-warning': {\n return import('./ItWarning');\n }\n case 'it-whatsapp-square': {\n return import('./ItWhatsappSquare');\n }\n case 'it-whatsapp': {\n return import('./ItWhatsapp');\n }\n case 'it-wifi': {\n return import('./ItWifi');\n }\n case 'it-youtube': {\n return import('./ItYoutube');\n }\n case 'it-zoom-in': {\n return import('./ItZoomIn');\n }\n case 'it-zoom-out': {\n return import('./ItZoomOut');\n }\n default:\n throw Error(`It should not land here. Requested icon: \"${name}\"`);\n }\n};\n\nexport function isBundledIcon(name: string): name is IconName {\n return name in iconList;\n}\n\nexport const allIcons = Object.keys(iconList);\n","import React, { FC, SVGProps } from 'react';\ninterface SVGRProps {\n title?: string;\n titleId?: string;\n}\nexport const EmptyIcon: FC<SVGProps<SVGSVGElement> & SVGRProps> = ({ title, titleId, ...props }) => (\n <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' {...props}>\n {title ? <title id={titleId}>{title}</title> : null}\n <path fill='none' d='M0 0h24v24H0z' />\n </svg>\n);\n","import React, { FC, ImgHTMLAttributes, SVGProps, useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport { isBundledIcon, loadIcon, allIcons, IconName } from './assets';\nimport { EmptyIcon } from './EmptyIcon';\nexport type { IconName } from './assets';\n\nexport const iconsList = allIcons;\n\nlet iconsCache: Record<IconName, FC<SVGProps<SVGSVGElement>>> = {};\n\n/**\n * Preload a list of icons in cache\n * @param icons - the list of icons to preload\n * @returns true if the icons have been preloaded\n */\nexport function preloadIcons(icons: IconName[]) {\n return Promise.all(icons.map((icon) => loadIcon(icon))).then((preloadedIcons) => {\n preloadedIcons.forEach(({ component }, i) => {\n iconsCache[icons[i]] = (() => component) as unknown as FC<SVGProps<SVGSVGElement>>;\n });\n return true;\n });\n}\n\n/**\n * Removes icons from cache\n * @param icon? - the icon to remove, or nothing to clear the whole cache\n * @returns an object containing the removed icons\n */\nexport const clearIconCache = (iconName?: IconName) => {\n let deletedItems;\n if (iconName) {\n deletedItems = { [iconName]: iconsCache[iconName] };\n delete iconsCache[iconName];\n } else {\n deletedItems = { ...iconsCache };\n iconsCache = {};\n }\n return deletedItems;\n};\n\nexport interface IconProps extends SVGProps<SVGSVGElement> {\n /** Classi aggiuntive da usare per il componente Badge */\n className?: string;\n /** Le varianti di colore definite in Bootstrap Italia */\n color?: 'success' | 'warning' | 'danger' | 'note' | 'important' | string;\n /** Le dimensioni dell'icona. In ordine dalla più grande alla più piccola: \"xl\", \"lg\", '' (stringa vuota), \"sm\", \"xs\". */\n size?: 'xl' | 'lg' | '' | 'sm' | 'xs';\n /**\n * Il nome dell'icona da mostrare. Per una lista completa vedi:\n * <a href=\"https://italia.github.io/design-react-kit/?path=/story/componenti-icon--lista-icone\" target=\"_blank\">Lista icone</a>\n * In caso di un'immagine esterna l'URL da utilizzare.\n **/\n icon: string;\n /** Il titolo da dare all'icona. Quando si utilizza un'immagine esterna viene utilizzato come attributo \"alt\". */\n title?: string;\n /** Quando abilitato riduce la dimensione dell'icona all'interno del contenitore. */\n padding?: boolean;\n /** Funzione chiamata al caricamento dell'icona */\n onIconLoad?: () => void;\n /** Id da utilizzare in caso di testing */\n testId?: string;\n}\n\ninterface SVGRProps {\n title?: string;\n titleId?: string;\n}\n\nexport const Icon: FC<IconProps> = ({\n color = '',\n size = '',\n icon = '',\n title = 'icon',\n className,\n padding = false,\n onIconLoad,\n testId,\n ...attributes\n}) => {\n const [IconComponent, setCurrentIcon] = useState<FC<SVGProps<SVGSVGElement> & SVGRProps>>(iconsCache[icon]);\n const classes = classNames('icon', className, {\n [`icon-${color}`]: color,\n [`icon-${size}`]: size,\n 'icon-padded': padding\n });\n\n useEffect(() => {\n if (isBundledIcon(icon) && !iconsCache[icon]) {\n loadIcon(icon).then(({ component }) => {\n iconsCache[icon] = (() => component) as unknown as FC<SVGProps<SVGSVGElement> & SVGRProps>;\n setCurrentIcon(iconsCache[icon]);\n onIconLoad?.();\n });\n } else {\n if (IconComponent !== iconsCache[icon]) {\n setCurrentIcon(iconsCache[icon]);\n }\n onIconLoad?.();\n }\n }, [IconComponent, icon, onIconLoad]);\n\n if (!isBundledIcon(icon)) {\n // assume it's an image and let the browser do its job\n return (\n <img\n src={icon}\n className={classes}\n alt={title}\n data-testid={testId}\n {...(attributes as ImgHTMLAttributes<HTMLImageElement>)}\n />\n );\n }\n\n if (!IconComponent) {\n return <EmptyIcon className={classes} role='img' {...attributes} data-testid={testId} />;\n }\n\n return <IconComponent className={classes} role='img' title={title} data-testid={testId} {...attributes} />;\n};\n","import React, { FC, ButtonHTMLAttributes, ElementType, Ref } from 'react';\nimport classNames from 'classnames';\n\nimport { Button as ButtonBase } from 'reactstrap';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\n\n// reactstrap wrapper\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Quando abilitato, estende il componente Button fino a prendere tutta la larghezza disponibile */\n block?: boolean;\n /** Utilizzarlo disabilitare il colore di sfondo, ed applicarlo invece al bordo. */\n outline?: boolean;\n /** Utilizzarlo in caso di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Button */\n className?: string;\n /** Oggetto contenente la nuova mappatura per le classi CSS. */\n cssModule?: CSSModule;\n innerRef?: Ref<HTMLButtonElement>;\n /** Da utilizzare si usa una icona nel contenuto del Button */\n icon?: boolean;\n /** Da utilizzare per le varianti di dimensione del componente Button */\n size?: 'lg' | 'sm' | 'xs';\n /** Da utilizzare per i bottoni di chiusura all'interno di altri componenti (i.e. Chips, Modali, etc...) */\n close?: boolean;\n active?: boolean;\n href?: string;\n testId?: string;\n}\n\nexport const Button: FC<ButtonProps> = ({\n tag = 'button',\n icon = false,\n color = '',\n className,\n testId,\n ...attributes\n}) => {\n const classes = classNames(className, {\n 'btn-icon': icon\n });\n\n const ariaAttributes = {\n ...(attributes.disabled && { 'aria-disabled': true })\n };\n\n const baseProps = { color, tag };\n\n return <ButtonBase className={classes} data-testid={testId} {...baseProps} {...attributes} {...ariaAttributes} />;\n};\n","import React, { useLayoutEffect, useState } from 'react';\nimport { Icon } from '../Icon/Icon';\nimport classNames from 'classnames';\nimport { Button } from '../Button/Button';\n\nexport interface BackToTopProps {\n /**\n * Optional classnames to pass to <a> element\n */\n className?: string;\n /**\n * Render the dark variant of the back to top button\n */\n dark?: boolean;\n /**\n * Render the small variant of the back to top button\n */\n small?: boolean;\n /**\n * Add a shadow to the button\n */\n shadow?: boolean;\n /**\n * Configure after how many scrolled pixels the button is shown\n */\n showOffset?: number;\n}\n\nconst backToTop = () => {\n window.scrollTo({ top: 0, behavior: 'smooth' });\n};\n\nexport const BackToTop = ({\n className,\n dark = false,\n small = false,\n shadow = false,\n showOffset = 200\n}: BackToTopProps) => {\n const [showBtn, setShowBtn] = useState(false);\n\n useLayoutEffect(() => {\n window.addEventListener('scroll', () => {\n if (window.scrollY > showOffset) {\n setShowBtn(true);\n } else {\n setShowBtn(false);\n }\n });\n }, [showOffset]);\n\n return (\n <Button\n aria-hidden='true'\n tabIndex={-1}\n className={classNames(\n className,\n 'back-to-top',\n small && 'back-to-top-small',\n showBtn && 'back-to-top-show',\n dark && 'dark',\n shadow && 'shadow'\n )}\n id='back-to-top-btn'\n onClick={backToTop}\n style={{ padding: 0 }}\n color={!dark ? 'primary' : ''}\n >\n <Icon color={dark ? 'secondary' : 'white'} icon='it-arrow-up' style={{ top: 0 }} />\n </Button>\n );\n};\n","import React, { ElementType, FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface DropdownProps extends HTMLAttributes<HTMLElement> {\n tag?: ElementType;\n inNavbar?: boolean;\n textCenter?: boolean;\n /** Classi aggiuntive da usare per il componente Button */\n className?: string;\n testId?: string;\n}\n\nexport const Dropdown: FC<DropdownProps> = ({\n className,\n testId,\n tag,\n children,\n inNavbar,\n textCenter,\n ...attributes\n}) => {\n const classes = classNames(className, {\n dropdown: true,\n 'text-center': textCenter,\n 'nav-item': inNavbar\n });\n\n const Tag = tag !== undefined ? tag : 'div';\n\n return (\n <Tag className={classes} data-testid={testId} {...attributes}>\n {children}\n </Tag>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface DropdownMenuProps extends HTMLAttributes<HTMLElement> {\n /** Classi aggiuntive da usare per il componente Button */\n className?: string;\n testId?: string;\n}\n\nexport const DropdownMenu: FC<DropdownMenuProps> = ({ className, testId, children, ...attributes }) => {\n const classes = classNames(className, {\n 'dropdown-menu': true\n });\n\n return (\n <div className={classes} data-testid={testId} {...attributes}>\n {children}\n </div>\n );\n};\n","import React, { ElementType, FC, HTMLAttributes, useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { Dropdown } from 'bootstrap-italia';\nimport { Icon } from '../Icon/Icon';\nimport { Button } from '../Button/Button';\n\nexport interface DropdownToggleProps extends HTMLAttributes<HTMLElement> {\n caret?: boolean;\n tag?: ElementType;\n color?: string;\n inNavbar?: boolean;\n /** Classi aggiuntive da usare per il componente Button */\n className?: string;\n testId?: string;\n}\n\nexport const DropdownToggle: FC<DropdownToggleProps> = ({\n className,\n testId,\n children,\n caret,\n tag = 'button',\n inNavbar,\n color,\n ...attributes\n}) => {\n const toggleRef = useRef<HTMLAnchorElement & HTMLButtonElement>(null);\n\n const Tag = tag === 'a' || inNavbar ? 'a' : Button;\n\n useEffect(() => {\n if (toggleRef.current) {\n new Dropdown(toggleRef.current as HTMLAnchorElement & HTMLButtonElement);\n }\n });\n const classes = classNames(className, {\n 'btn-dropdown': Tag === 'a' && !inNavbar,\n 'dropdown-toggle': true,\n 'nav-link': inNavbar\n });\n const iconClasses = classNames({\n 'icon-expand': true,\n 'icon-sm': !inNavbar,\n 'icon-xs': inNavbar,\n 'ms-1': inNavbar,\n 'icon-light': Tag.valueOf() !== 'a' ? true : false\n });\n return (\n <Tag\n role={Tag.valueOf() === 'a' ? 'button' : undefined}\n color={color}\n ref={toggleRef}\n className={classes}\n data-bs-toggle='dropdown'\n aria-haspopup='true'\n data-testid={testId}\n {...attributes}\n >\n {children}\n {caret === true ? <Icon icon='it-expand' className={iconClasses} /> : null}\n </Tag>\n );\n};\n","import { useEffect } from 'react';\n\nexport interface FontLoaderProps {\n /**\n * Una lista di font aggiuntivi da caricare.\n * I font di default Titillium Web, Lora and Roboto Mono vengono aggiunti a questa lista e caricati sempre.\n * */\n fonts?: string[];\n}\n\nconst defaultFonts = [\n 'Titillium Web:300,400,600,700:latin-ext',\n 'Lora:400,700:latin-ext',\n 'Roboto Mono:400,700:latin-ext'\n];\n\nexport function useFontLoader({ fonts }: FontLoaderProps) {\n useEffect(() => {\n if (typeof window !== 'undefined') {\n const WebFont = require('webfontloader');\n WebFont.load({\n custom: {\n families: [...defaultFonts, ...(fonts || [])]\n }\n });\n }\n }, [fonts]);\n}\n\nexport const FontLoader = (props: FontLoaderProps) => {\n useFontLoader(props);\n\n return null;\n};\n","import classNames from 'classnames';\nimport React, { ReactChild } from 'react';\nimport { Button } from '../Button/Button';\nimport { Icon } from '../Icon/Icon';\n\nexport interface GoBackProps {\n /**\n * Optional classnames to pass to the element\n */\n className?: string;\n /**\n * Render the link variant of the go back button\n */\n link?: boolean;\n /**\n * Render the up variant of the go back button\n */\n up?: boolean;\n children?: ReactChild;\n}\n\nconst goBack = () => {\n window.history.back();\n};\n\nexport const GoBack = ({ className, link = false, up = false, children }: GoBackProps) => {\n const Tag = link ? 'a' : Button;\n\n return (\n <Tag className={classNames(className, 'go-back')} color='primary' onClick={goBack}>\n <Icon\n className={children ? 'me-2' : ''}\n color={link ? 'primary' : 'white'}\n icon={up ? 'it-arrow-up' : 'it-arrow-left'}\n />\n {children}\n </Tag>\n );\n};\n","import { createContext, useContext } from 'react';\n\nexport const SLIM = 'slim';\nexport const CENTER = 'center';\nexport const NAVBAR = 'navbar';\n\nexport const HeaderContext = createContext<{\n type?: typeof SLIM | typeof CENTER | typeof NAVBAR;\n}>({});\n\nexport const useHeaderContext = () => {\n const { type } = useContext(HeaderContext);\n return type;\n};\n","import React, { FC, HTMLAttributes, ReactNode } from 'react';\n\nexport interface InputContainerProps extends HTMLAttributes<HTMLElement> {\n wrapperClass: string;\n activeClass: string;\n extraLabelClass: string;\n validationTextClass: string;\n label: string | ReactNode | undefined;\n validationText: string | undefined;\n id: string | undefined;\n infoId: string | undefined;\n infoText: string | undefined;\n testId?: string;\n}\n\nexport const InputContainer: FC<InputContainerProps> = ({\n id,\n infoId,\n infoText,\n testId,\n activeClass,\n extraLabelClass,\n label,\n validationTextClass,\n validationText,\n wrapperClass,\n children\n}) => {\n return (\n <div className={wrapperClass} data-testid={testId}>\n <label htmlFor={id} className={activeClass + ' ' + extraLabelClass}>\n {label}\n </label>\n {children}\n {infoText && (\n <small id={infoId} className='form-text'>\n {infoText}\n </small>\n )}\n <div className={validationTextClass}>{validationText}</div>\n </div>\n );\n};\n","import classNames from 'classnames';\nimport { useState, useCallback } from 'react';\nimport type { CSSModule } from 'reactstrap/types/lib/utils';\nimport { mapToCssModules } from '../utils';\nimport type { InputProps } from './Input';\n\ntype ValidationProps = Pick<InputProps, 'valid'>;\ntype TypeProps = Pick<InputProps, 'plaintext' | 'type'> & {\n staticInput?: boolean;\n};\ntype FormControlProps = Pick<InputProps, 'addon' | 'normalized'> & TypeProps;\n\nfunction getFormControlClassInternal({ plaintext, staticInput, type = 'text', addon, normalized }: FormControlProps) {\n const formControlClass = 'form-control';\n if (plaintext || staticInput || normalized) {\n return `${formControlClass}-plaintext`;\n }\n if (type === 'file') {\n return `${formControlClass}-file`;\n }\n if (['radio', 'checkbox'].indexOf(type) > -1) {\n if (addon) {\n return null;\n }\n }\n return formControlClass;\n}\n\nexport function getFormControlClass(props: FormControlProps, cssModule?: CSSModule) {\n return mapToCssModules(getFormControlClassInternal(props), cssModule);\n}\n\nexport function getValidationTextControlClass({ valid }: ValidationProps, cssModule?: CSSModule) {\n return mapToCssModules(\n classNames({\n 'form-text': true,\n 'form-feedback just-validate-error-label': valid == false\n }),\n cssModule\n );\n}\n\nexport function getTag({ tag, plaintext, staticInput, type = 'text' }: Pick<InputProps, 'tag'> & TypeProps) {\n if (tag) {\n return tag;\n }\n if (['radio', 'checkbox'].indexOf(type) > -1) {\n return 'input';\n }\n if (plaintext || staticInput) {\n return 'p';\n }\n return 'input';\n}\n\ntype InputClassesParams = ValidationProps &\n Pick<InputProps, 'bsSize' | 'placeholder' | 'value' | 'label' | 'validationText' | 'normalized'> & {\n isFocused: boolean;\n inputPassword?: boolean;\n formControlClass?: string;\n validationTextControlClass?: string;\n originalWrapperClass: InputProps['wrapperClassName'];\n };\n\nexport function getClasses(\n className: string | undefined,\n type: string,\n {\n isFocused,\n valid,\n bsSize,\n placeholder,\n value,\n label,\n validationText,\n normalized,\n inputPassword,\n formControlClass,\n validationTextControlClass,\n originalWrapperClass\n }: InputClassesParams,\n cssModule?: CSSModule\n) {\n const hasPlainCondition = placeholder || label || validationText;\n const baseCondition = hasPlainCondition && !normalized && !inputPassword;\n const passwordOnlyCondition = inputPassword && !hasPlainCondition && !normalized;\n const normalizedOnlyCondition = normalized && !hasPlainCondition && !inputPassword;\n\n const classes = mapToCssModules(\n classNames(\n className,\n {\n 'is-invalid': valid == false,\n 'just-validate-success-field': valid,\n [`form-control-${bsSize}`]: bsSize\n },\n formControlClass\n ),\n cssModule\n );\n const wrapperClass = mapToCssModules(classNames(className, originalWrapperClass, 'form-group'), cssModule);\n const validationTextClass = mapToCssModules(\n classNames(\n {\n 'valid-feedback': valid,\n 'invalid-feedback form-feedback just-validate-error-label': valid == false\n },\n validationTextControlClass\n ),\n cssModule\n );\n\n const inputClasses = mapToCssModules(\n classNames(\n classes,\n !baseCondition && {\n // we can model here only if stylings\n 'form-control-plaintext': normalizedOnlyCondition,\n 'form-control': passwordOnlyCondition,\n 'input-password': passwordOnlyCondition,\n 'focus--mouse': passwordOnlyCondition || normalizedOnlyCondition\n }\n ),\n cssModule\n );\n\n const activeClass = mapToCssModules(\n classNames({\n active: isFocused || placeholder || value || ['date', 'time'].includes(type)\n }),\n cssModule\n );\n\n const extraLabelClass = mapToCssModules(\n classNames({\n 'input-number-label': ['number', 'currency', 'adaptive', 'percentage'].includes(type)\n })\n );\n\n return {\n wrapperClass,\n inputClasses,\n activeClass,\n extraLabelClass,\n validationTextClass\n };\n}\n\nexport function useFocus<T extends HTMLInputElement | HTMLTextAreaElement>({\n onFocus,\n onBlur\n}: {\n onFocus: React.FocusEventHandler<T> | undefined;\n onBlur: React.FocusEventHandler<T> | undefined;\n}) {\n const [isFocused, setFocus] = useState(false);\n\n const toggleFocusLabel = useCallback(\n (e: React.FocusEvent<T>) => {\n setFocus(true);\n onFocus?.(e);\n },\n [onFocus]\n );\n\n const toggleBlurLabel = useCallback(\n (e: React.FocusEvent<T>) => {\n if (e.target.value === '') {\n setFocus(!isFocused);\n }\n onBlur?.(e);\n },\n [isFocused, onBlur]\n );\n\n return { toggleFocusLabel, toggleBlurLabel, isFocused };\n}\n","import React, {\n InputHTMLAttributes,\n ElementType,\n Ref,\n ReactNode,\n useCallback,\n useState,\n useRef,\n useEffect\n} from 'react';\nimport isNumber from 'is-number';\n\nimport { InputContainer } from './InputContainer';\nimport { Icon } from '../Icon/Icon';\nimport { getTag, getFormControlClass, getClasses, getValidationTextControlClass, useFocus } from './utils';\nimport type { CSSModule } from 'reactstrap/types/lib/utils';\nimport { notifyDeprecation } from '../utils';\nimport classNames from 'classnames';\n\n// taken from reactstrap types\ntype InputType =\n | 'text'\n | 'email'\n | 'select'\n | 'file'\n | 'radio'\n | 'checkbox'\n | 'textarea'\n | 'button'\n | 'reset'\n | 'submit'\n | 'date'\n | 'datetime-local'\n | 'hidden'\n | 'image'\n | 'month'\n | 'number'\n | 'range'\n | 'search'\n | 'tel'\n | 'url'\n | 'week'\n | 'password'\n | 'datetime'\n | 'time'\n | 'color'\n | 'adaptive'\n | 'currency'\n | 'percentage';\n\nexport interface InputProps extends InputHTMLAttributes<HTMLInputElement> {\n /** Il tipo specifico di input da utilizzare. Il valore di default è `text`. */\n type?: InputType;\n /** Dimensione personalizzate del campo di Input secondo le classi Bootstrap/Bootstrap Italia. */\n bsSize?: 'lg' | 'sm';\n size?: number;\n /** Etichetta del campo Input. */\n label?: string | ReactNode;\n /** Etichetta del pulsante incremento. */\n incrementLabel?: string | ReactNode;\n /** Etichetta del pulsante decremento. */\n decrementLabel?: string | ReactNode;\n /** Testo di esempio da utilizzare per il campo. */\n placeholder?: string;\n /** Testo di validazione per l'elemento del moduleo form. */\n validationText?: string;\n /** Testo di aiuto per l'elemento del moduleo form. Richiede che il componente `Input` abbia la prop `id` impostata. */\n infoText?: string;\n /** Il valore nel campo Input. */\n value?: string | number;\n /** Da utilizzare per impedire la modifica del valore contenuto. */\n readOnly?: boolean;\n /** Associato all'attributo readOnly mostra il campo con lo stile classico, mantenendo lo stato di sola lettura. */\n normalized?: boolean;\n /** Utilizzare per mostrare il successo nella validazione del valore nel campo Input */\n valid?: boolean;\n innerRef?: Ref<HTMLInputElement>;\n /** Utilizzare per mostrare testo statico non modificabile. */\n plaintext?: boolean;\n /** Utilizzare per mostrare un elemento addon a fianco (prima o dopo) il campo input all'interno del componente */\n addon?: boolean;\n /** Utilizzare per mostrare un elemento un simbolo attivando la proprietà addon nel campo input all'interno del componente */\n addonText?: string;\n /** Oggetto contenente la nuova mappatura per le classi CSS. */\n cssModule?: CSSModule;\n /** Classi aggiuntive da usare per il wrapper del componente Input */\n wrapperClassName?: string;\n /**\n * Classi aggiuntive da usare per il wrapper del componente Input.\n * @deprecated. Usare `wrapperClassName`.\n * */\n wrapperClass?: string;\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Input */\n className?: string;\n /**\n * Usare \"plaintext\".\n * @deprecated\n */\n static?: boolean;\n /** Quando attivo rimuove il componente contenitore dell'Input. Utile per un controllo maggiore dello styling */\n noWrapper?: boolean;\n testId?: string;\n}\n\nexport const Input = ({\n id,\n className,\n cssModule,\n type = 'text',\n tag,\n addon,\n addonText,\n static: staticInput,\n plaintext,\n innerRef,\n label,\n incrementLabel,\n decrementLabel,\n validationText,\n infoText,\n placeholder,\n normalized,\n value,\n wrapperClass: originalWrapperClassOld,\n wrapperClassName: originalWrapperClass,\n size,\n testId,\n noWrapper = false,\n ...attributes\n}: InputProps) => {\n const [isHidden, setHidden] = useState(true);\n const [hasIcon, toggleIcon] = useState(true);\n\n const { toggleFocusLabel, toggleBlurLabel, isFocused } = useFocus<HTMLInputElement>({\n onFocus: attributes.onFocus,\n onBlur: attributes.onBlur\n });\n\n const toggleShow = useCallback(() => {\n setHidden(!isHidden);\n toggleIcon(!hasIcon);\n }, [hasIcon, isHidden]);\n\n const divResizeRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const [width, setWidth] = useState('100');\n\n useEffect(() => {\n if (divResizeRef.current != null && divResizeRef.current.classList.contains('input-number-adaptive')) {\n if (!value) {\n setWidth(`calc(70px)`);\n } else {\n setWidth(`calc(70px + ${`${value}`.length}ch)`);\n }\n }\n }, [value]);\n\n let { bsSize, valid, ...rest } = attributes;\n\n const Tag = getTag({ tag, plaintext, staticInput, type });\n addon = addonText != null ? true : addon;\n const formControlClass = getFormControlClass(\n {\n plaintext,\n staticInput,\n type,\n addon,\n normalized\n },\n cssModule\n );\n const validationTextControlClass = getValidationTextControlClass({ valid }, cssModule);\n\n const extraAttributes: {\n type?: InputType;\n size?: number;\n ['aria-describedby']?: string;\n } = {};\n if (size && !isNumber(size)) {\n notifyDeprecation('Please use the prop \"bsSize\" instead of the \"size\" to bootstrap\\'s input sizing.');\n bsSize = size as unknown as InputProps['bsSize'];\n } else {\n extraAttributes.size = size;\n }\n\n if (Tag === 'input' || typeof tag !== 'string') {\n extraAttributes.type = type;\n }\n\n // associate the input field with the help text\n const infoId = id ? `${id}Description` : undefined;\n if (id) {\n extraAttributes['aria-describedby'] = infoId;\n }\n\n if (\n attributes.children &&\n !(plaintext || staticInput || type === 'select' || typeof Tag !== 'string' || Tag === 'select')\n ) {\n notifyDeprecation(\n `Input with a type of \"${type}\" cannot have children. Please use \"value\"/\"defaultValue\" instead.`\n );\n delete attributes.children;\n }\n\n const inputPassword = extraAttributes.type === 'password';\n\n const indeterminateCheckboxInput = type === 'checkbox' && className?.includes('semi-checked');\n\n // Styling\n const { activeClass, extraLabelClass, validationTextClass, inputClasses, wrapperClass } = getClasses(\n className,\n type,\n {\n valid,\n bsSize,\n placeholder,\n value,\n label,\n validationText,\n normalized: Boolean(normalized),\n inputPassword,\n formControlClass,\n validationTextControlClass,\n isFocused: isFocused,\n originalWrapperClass: originalWrapperClass || originalWrapperClassOld\n },\n cssModule\n );\n\n // set of attributes always shared by the Input components\n const sharedAttributes = {\n id,\n onFocus: toggleFocusLabel,\n onBlur: toggleBlurLabel,\n value: value,\n ref: innerRef\n };\n\n // set of attributes always shared by the wrapper component\n const containerProps = {\n id,\n infoId,\n infoText,\n activeClass,\n extraLabelClass,\n label,\n validationTextClass,\n validationText,\n wrapperClass\n };\n\n if (noWrapper) {\n return (\n <Tag\n {...rest}\n {...extraAttributes}\n className={inputClasses}\n {...sharedAttributes}\n placeholder={placeholder}\n data-testid={testId}\n />\n );\n }\n\n const clickIncrDecr = (mode: number) => {\n var step = parseFloat(inputRef.current?.step ? inputRef.current.step : '1');\n const min = parseFloat(inputRef.current?.min ? inputRef.current.min : 'Nan');\n const max = parseFloat(inputRef.current?.max ? inputRef.current.max : 'Nan');\n step = isNaN(step) ? 1 : step;\n const newValue = parseFloat(inputRef.current?.value ? inputRef.current.value : '0') + mode * step;\n if (!isNaN(max) && newValue > max) {\n return;\n }\n if (!isNaN(min) && newValue < min) {\n return;\n }\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value')?.set;\n nativeInputValueSetter?.call(inputRef.current, `${newValue}`);\n var ev2 = new Event('input', { bubbles: true });\n inputRef.current?.dispatchEvent(ev2);\n };\n\n if (['currency', 'percentage', 'adaptive', 'number'].includes(type)) {\n return (\n <InputContainer {...containerProps}>\n <div\n className={classNames({\n 'input-group': true,\n 'input-number': true,\n disabled: rest.disabled,\n 'input-number-percentage': type == 'percentage',\n 'input-number-currency': type == 'currency',\n 'input-number-adaptive': type == 'adaptive'\n })}\n style={{ width }}\n ref={divResizeRef}\n >\n {['currency', 'percentage'].includes(type) && (\n <span className='input-group-text fw-semibold'>{addonText}</span>\n )}\n <Tag\n {...rest}\n {...extraAttributes}\n {...sharedAttributes}\n className={inputClasses}\n data-testid={testId}\n type='number'\n ref={inputRef}\n />\n <span className='input-group-text align-buttons flex-column'>\n <button className='input-number-add' onClick={() => clickIncrDecr(1)} type='button'>\n <span className='visually-hidden'>{incrementLabel || ''}</span>\n </button>\n <button className='input-number-sub' onClick={() => clickIncrDecr(-1)} type='button'>\n <span className='visually-hidden'>{decrementLabel || ''}</span>\n </button>\n </span>\n </div>\n </InputContainer>\n );\n }\n\n if (placeholder) {\n return (\n <InputContainer {...containerProps}>\n <Tag\n {...rest}\n {...extraAttributes}\n {...sharedAttributes}\n className={inputClasses}\n placeholder={placeholder}\n data-testid={testId}\n />\n </InputContainer>\n );\n }\n\n if (indeterminateCheckboxInput) {\n return (\n <InputContainer {...containerProps}>\n <Tag\n {...rest}\n {...extraAttributes}\n {...sharedAttributes}\n className={inputClasses}\n data-testid={testId}\n indeterminate={'true'}\n />\n </InputContainer>\n );\n }\n\n if (inputPassword) {\n return (\n <InputContainer {...containerProps}>\n <Tag\n {...rest}\n {...extraAttributes}\n {...sharedAttributes}\n type={isHidden ? 'password' : 'text'}\n className={inputClasses}\n placeholder={placeholder}\n data-testid={testId}\n />\n <span className='password-icon' aria-hidden='true'>\n <Icon\n size='sm'\n icon={`it-password-${hasIcon ? 'visible' : 'invisible'}`}\n className='password-icon-visible'\n onClick={toggleShow}\n />\n </span>\n </InputContainer>\n );\n }\n if (normalized) {\n return (\n <InputContainer {...containerProps}>\n <Tag\n {...rest}\n {...extraAttributes}\n {...sharedAttributes}\n className={inputClasses}\n data-testid={testId}\n readOnly\n />\n </InputContainer>\n );\n }\n if (label || validationText) {\n return (\n <InputContainer {...containerProps}>\n <Tag {...rest} {...extraAttributes} {...sharedAttributes} className={inputClasses} data-testid={testId} />\n </InputContainer>\n );\n }\n\n return <Tag {...rest} {...extraAttributes} className={inputClasses} {...sharedAttributes} data-testid={testId} />;\n};\n","import React, { FC, AnchorHTMLAttributes, ElementType, MouseEvent, MouseEventHandler } from 'react';\nimport classNames from 'classnames';\n\nexport interface LinkListItemProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Indica se l'elemento è attivo o no */\n active?: boolean;\n /** Indica se l'elemento è disabilitato o no */\n disabled?: boolean;\n /** Indica se l'elemento ha dimensioni larghe o no */\n large?: boolean;\n /** Indica se l'elemento è bold o no */\n bold?: boolean;\n /** Indica se l'elemento è un titolo. */\n header?: boolean;\n /** Indica se l'elemento è un divisore */\n divider?: boolean;\n /** Indica se l'elemento è in un dropdown */\n inDropdown?: boolean;\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente LinkListItem */\n className?: string;\n /** Classi aggiuntive da usare per l'elemento contenitore dell'item */\n wrapperClassName?: string;\n /** Indica il link a cui l'elemento deve puntare. */\n href?: string;\n /** Indica il link route a cui l'elemento deve puntare. */\n to?: string;\n testId?: string;\n}\n\nconst handleDisabledOnClick = (e: MouseEvent<HTMLAnchorElement>) => {\n e.preventDefault();\n};\n\nexport const LinkListItem: FC<LinkListItemProps> & {\n TitleIconWrapper: typeof LinkListTitleIconWrapper;\n} = ({\n className,\n active,\n disabled,\n header,\n divider,\n bold,\n large,\n href,\n tag = 'a',\n wrapperClassName,\n testId,\n children,\n inDropdown,\n ...attributes\n}) => {\n let Tag = tag;\n const classes = classNames(\n className,\n {\n active,\n disabled,\n header,\n divider,\n large: large,\n medium: bold,\n 'dropdown-item': inDropdown\n },\n 'list-item'\n );\n\n // Prevent click event when disabled.\n const handlers: { onClick?: MouseEventHandler<HTMLAnchorElement> } = {};\n if (disabled) {\n handlers.onClick = handleDisabledOnClick;\n }\n\n if (header) {\n Tag = 'h3';\n } else if (divider) {\n Tag = 'span';\n }\n\n if (inDropdown) {\n attributes['role'] = 'menuitem';\n attributes['tabIndex'] = 0;\n }\n\n if (header && href) {\n return (\n <li className={wrapperClassName} data-testid={testId}>\n <Tag>\n <a href={href || '#'} {...attributes} className={classes} {...handlers}>\n {children}\n </a>\n </Tag>\n </li>\n );\n }\n\n return (\n <li className={wrapperClassName} data-testid={testId}>\n <Tag\n role={attributes.onClick ? 'button' : undefined}\n {...attributes}\n className={classes}\n href={href}\n {...handlers}\n >\n {children}\n </Tag>\n </li>\n );\n};\n\nconst LinkListTitleIconWrapper: FC<LinkListItemProps> = ({ children }) => {\n return <span className='list-item-title-icon-wrapper'>{children}</span>;\n};\n\nLinkListItem.TitleIconWrapper = LinkListTitleIconWrapper;\n","import React, { FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface MegamenuFooterProps extends HTMLAttributes<HTMLDivElement> {\n /** Classi aggiuntive da usare per il componente Megamenu Footer */\n className?: string;\n vertical?: boolean;\n}\n\nexport const MegamenuFooter: FC<MegamenuFooterProps> & {\n Item: typeof Item;\n} = ({ className, children, vertical, ...attributes }) => {\n const classes = classNames(className, `it-footer-link-wrapper${vertical ? '-vertical' : ''}`);\n return (\n <div className={classes} {...attributes}>\n {children}\n </div>\n );\n};\n\nconst Item: FC<HTMLAnchorElement> = ({ href, children }) => {\n return (\n <a href={href || '#'} className='it-footer-link'>\n {children}\n </a>\n );\n};\n\nMegamenuFooter.Item = Item;\n","/*\n * This work derives from the React Use Navscroll library\n * Released under the MIT license by Marco Liberati\n * Code: https://github.com/dej611/react-use-navscroll\n */\n\nexport const debounce = (callback: Function, wait: number) => {\n let timeoutId: NodeJS.Timeout;\n return (...args: unknown[]) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n callback.apply(null, args);\n }, wait);\n };\n};\n","/*\n * This work derives from the React Use Navscroll library\n * Released under the MIT license by Marco Liberati\n * Code: https://github.com/dej611/react-use-navscroll\n */\n\nimport { createRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { debounce } from './debounce';\nimport type { TrackedElement, useNavScrollArgs, useNavScrollResult } from './types';\nimport { useSizeDetector } from './useSizeDetector';\n\nconst hasWindow = typeof window !== 'undefined';\nconst REGISTER_DELAY = 50;\n\nfunction resolveHierarchyIds(id: string, lookup: Record<string, string | undefined>) {\n const newActiveIds = [id];\n let lastId: string | undefined = newActiveIds[0];\n while (lastId != null && lookup[lastId] != null) {\n newActiveIds.push(lookup[lastId] as string);\n lastId = lookup[lastId];\n }\n // return a list from parent to current child\n return newActiveIds.reverse();\n}\n/**\n * This is the main hook: use it in a react function component to track\n * the state of the passed ids. The function accepts an initial configuration\n * of type `useNavScrollArgs` to customize the behaviour.\n */\nexport function useNavScroll(args: useNavScrollArgs = {}): useNavScrollResult {\n const { onChange, root, offset = 50, isHorizontal = false } = args;\n const els = useRef<TrackedElement[]>([]);\n const [counter, setCounter] = useState(0);\n const [forceRecompute, setForceRecompute] = useState(false);\n const [activeId, updateActiveId] = useState<string | null>(null);\n\n const { targetSize, useViewport } = useSizeDetector({\n root,\n isHorizontal,\n onChange,\n activeId,\n setForceRecompute,\n updateActiveId,\n hasWindow\n });\n\n const observerMargin = Math.floor((targetSize * offset) / 100) || 1;\n const observerOptions = useMemo(() => {\n const topMargin = observerMargin % 2 === 1 ? observerMargin - 1 : observerMargin;\n const bottomMargin = targetSize - observerMargin;\n return {\n root: useViewport ? null : root,\n rootMargin: isHorizontal\n ? `0px ${-topMargin}px 0px ${-bottomMargin}px`\n : `${-topMargin}px 0px ${-bottomMargin}px 0px`\n };\n }, [root, targetSize, observerMargin, isHorizontal, useViewport]);\n\n const elsLookup = useMemo(() => {\n const lookup: Record<string, string | undefined> = {};\n for (const { id, parent } of els.current) {\n lookup[id] = parent;\n }\n return lookup;\n }, []);\n const activeIds = useMemo(() => (activeId ? resolveHierarchyIds(activeId, elsLookup) : []), [activeId, elsLookup]);\n\n const activeLookups = useMemo(() => new Set(activeIds), [activeIds]);\n useEffect(() => {\n if (!hasWindow) {\n return;\n }\n const handleIntersection: IntersectionObserverCallback = (entries) => {\n let intersectionId = null;\n let topMin = Infinity;\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (topMin > entry.boundingClientRect.top) {\n topMin = entry.boundingClientRect.top;\n intersectionId = entry.target.id;\n }\n }\n });\n if (intersectionId != null) {\n updateActiveId(intersectionId);\n if (onChange) {\n const diffIds = {\n added: intersectionId,\n removed: activeId\n };\n onChange(diffIds);\n }\n }\n };\n\n const observer = new IntersectionObserver(handleIntersection, observerOptions);\n\n els.current.forEach(({ ref }) => {\n if (ref && ref.current) {\n observer.observe(ref.current);\n }\n });\n\n if (forceRecompute) {\n handleIntersection(observer.takeRecords(), observer);\n setForceRecompute(false);\n }\n return () => {\n observer.disconnect();\n };\n }, [\n activeIds,\n updateActiveId,\n els,\n elsLookup,\n onChange,\n activeLookups,\n activeId,\n observerOptions,\n isHorizontal,\n root,\n forceRecompute\n ]);\n\n const refresh = useCallback(\n debounce(() => {\n setCounter(counter + 1);\n }, REGISTER_DELAY),\n [counter]\n );\n\n const register = useCallback(\n (id, options = {}) => {\n if (!hasWindow) {\n return { id, ref: null };\n }\n const alreadyRegistered = id in elsLookup;\n const entry = alreadyRegistered ? els.current.find(({ id: existingId }) => existingId === id) : options;\n const ref = (entry && entry.ref) || createRef();\n\n if (!alreadyRegistered) {\n els.current = [...els.current, { id, ref, parent: options.parent }];\n refresh();\n }\n return { id, ref };\n },\n [elsLookup, refresh]\n );\n\n const unregister = useCallback((idToUnregister: string) => {\n els.current = els.current.filter(({ id }) => id !== idToUnregister);\n }, []);\n\n const isActive = useCallback((id: string) => activeLookups.has(id), [activeLookups]);\n\n const getActiveRef = useCallback(() => {\n const entry = els.current.find(({ id }) => id === activeId);\n return entry ? entry.ref : null;\n }, [activeId]);\n\n return {\n register,\n unregister,\n activeIds,\n isActive,\n getActiveRef\n };\n}\n","import { createContext, useContext } from 'react';\nimport { NotificationCommonProps } from './types';\n\nexport const PositionContext = createContext<NotificationCommonProps['fix']>(undefined);\n\nexport function usePosition() {\n const context = useContext(PositionContext);\n return context;\n}\n","import React, { CSSProperties, ReactChild } from 'react';\nimport { Button } from '../Button/Button';\nimport classNames from 'classnames';\nimport { Icon } from '../Icon/Icon';\nimport { usePosition } from './usePosition';\nimport { NotificationCommonProps } from './types';\n\nexport interface NotificationToastProps {\n /** Indica quale icona affiancare al titolo. */\n icon?: string;\n /** Lo stato corrente della notifica (modifica il colore delle icone e bordo) */\n state?: 'success' | 'error' | 'info' | 'warning';\n /** Il titolo della notifica */\n title?: string;\n}\n\ntype NotificationElementProps = {\n closeToast?: () => void;\n toastProps?: any;\n title: string;\n body?: ReactChild;\n options: NotificationOptions;\n};\n\nexport const getBorderStyleFix = (fix: NotificationCommonProps['fix']) => {\n const borderReset = ['top', 'bottom', 'right', 'left']\n .filter((curPosition) => (fix === 'left' ? curPosition !== 'right' : curPosition !== 'left'))\n .map(\n (borderPosition) =>\n `border${borderPosition[0].toUpperCase() + borderPosition.substring(1)}` as\n | 'borderTop'\n | 'borderBottom'\n | 'borderLeft'\n | 'borderRight'\n );\n\n const customStyle: CSSProperties = {};\n for (const borderPos of borderReset) {\n customStyle[borderPos] = 'none';\n }\n return customStyle;\n};\n\nexport type NotificationOptions = NotificationCommonProps &\n Pick<NotificationToastProps, 'icon' | 'state'> & {\n /* Quando abilitato mostra un pulsante per la chiusura del toast prima della chiusura naturale. Default: `false`. */\n dismissable?: boolean;\n /* Una funzione invocata all'apertura della notifica */\n onOpen?: <T = NotificationElementProps>(props: T) => void;\n /* Una funziona invocata alla chiusura nella notifica */\n onClose?: <T = NotificationElementProps>(props: T) => void;\n };\n\nfunction pickIcon(state: NotificationToastProps['state']) {\n switch (state) {\n case 'error':\n return 'it-close-circle';\n case 'info':\n return 'it-info-circle';\n case 'warning':\n return 'it-error';\n case 'success':\n return 'it-check-circle';\n default:\n return undefined;\n }\n}\n\nfunction NotificationElement({ closeToast, toastProps, title, body, options }: NotificationElementProps) {\n const globalFix = usePosition();\n const { icon: userIcon, state, fix: localFix, dismissable } = options;\n const fixPosition = localFix == null && globalFix ? globalFix : localFix || globalFix;\n const { autoClose, style } = toastProps;\n const content = typeof body === 'string' ? <p>{body}</p> : body;\n const icon = userIcon || pickIcon(state);\n\n const borderFixes = getBorderStyleFix(fixPosition);\n\n const wrapperClass = classNames('notification', state, {\n [`${fixPosition}-fix`]: fixPosition,\n 'with-icon': icon,\n dismissable: dismissable || !autoClose\n });\n\n // Need to override some toast styling here\n const customStyle: CSSProperties = {\n ...style,\n ...borderFixes,\n // force a display as the notification class has a \"display: none\" set\n display: 'block'\n };\n\n return (\n <div className={wrapperClass} style={customStyle}>\n <h5>\n {title}\n {icon ? <Icon icon={icon} /> : null}\n </h5>\n {content}\n {(!autoClose || dismissable) && (\n <Button className='notification-close' onClick={closeToast}>\n <Icon icon='it-close' />\n <span className='visually-hidden'>Chiudi notifica: {title}</span>\n </Button>\n )}\n </div>\n );\n}\n\n/**\n * Internal use only. Exported for documentation purposes.\n * @internal\n */\nexport const createNotification = (\n title: string,\n body: ReactChild | undefined,\n options: NotificationOptions,\n closeToast?: () => void,\n toastProps?: any\n) => (\n <NotificationElement title={title} body={body} options={options} closeToast={closeToast} toastProps={toastProps} />\n);\n","import React, { CSSProperties, FC, useEffect } from 'react';\nimport { ToastProps, useToast, cssTransition } from 'react-toastify';\nimport { NotificationToastProps } from './NotificationContent';\nimport { NotificationCommonProps } from './types';\n\nexport type NotificationProps = Omit<ToastProps, 'transition'> & NotificationCommonProps & NotificationToastProps;\n\nconst dummyTransition = cssTransition({ enter: '', exit: '' });\n\nexport const Notification: FC<NotificationProps> = (props) => {\n const { toastRef, eventHandlers } = useToast({\n ...props,\n transition: dummyTransition\n });\n const { children, autoClose, onClick, role, toastId, deleteToast, closeToast, isIn } = props;\n\n const customStyle: CSSProperties = {\n display: isIn ? 'block' : 'none'\n };\n\n useEffect(() => {\n if (!isIn) deleteToast();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isIn]);\n\n useEffect(() => {\n let timer: NodeJS.Timeout | number;\n if (autoClose) {\n timer = setTimeout(() => closeToast(), autoClose);\n }\n return () => {\n if (timer != null) {\n clearTimeout(Number(timer));\n }\n };\n }, [autoClose, closeToast]);\n return (\n <div\n id={toastId as string}\n onClick={onClick}\n {...eventHandlers}\n style={customStyle}\n ref={toastRef}\n {...(isIn && { role: role })}\n >\n {children}\n </div>\n );\n};\n","import React, { CSSProperties } from 'react';\nimport { cssTransition, useToastContainer } from 'react-toastify';\nimport { Notification } from './Notification';\nimport { getBorderStyleFix } from './NotificationContent';\nimport { NotificationCommonProps } from './types';\nimport { PositionContext } from './usePosition';\n\nconst KitTransition = cssTransition({\n enter: `d-block`,\n exit: `d-none`,\n appendPosition: false\n});\n\nexport interface NotificationManagerProps extends NotificationCommonProps {\n /* Stili inline da applicare al container */\n style?: CSSProperties;\n}\n\nexport const NotificationManager = (props: NotificationManagerProps) => {\n const customStyle: CSSProperties = {\n ...props.style,\n ...getBorderStyleFix(props.fix)\n };\n\n const hookProps = {\n autoClose: props.duration ?? 6000,\n closeOnClick: props.closeOnClick ?? true,\n hideProgressBar: true,\n transition: KitTransition,\n rtl: false,\n pauseOnHover: true,\n pauseOnFocusLoss: true,\n newestOnTop: false, // TODO: sort this out\n draggable: false,\n role: 'alert',\n style: customStyle,\n enableMultiContainer: props.containerId != null // enable multi container when an explicit id is passed\n };\n\n const { getToastToRender, containerRef, isToastActive } = useToastContainer(hookProps);\n\n const { containerId, style, fix } = props;\n\n return (\n <PositionContext.Provider value={fix}>\n <div ref={containerRef} id={containerId as string} style={style}>\n {getToastToRender((_, toastList) => {\n return toastList.map(({ content, props: toastProps }) => {\n return (\n <Notification\n {...toastProps}\n isIn={isToastActive(toastProps.toastId)}\n key={`notification-${toastProps.key}`}\n >\n {content}\n </Notification>\n );\n });\n })}\n </div>\n </PositionContext.Provider>\n );\n};\n","import { ReactChild } from 'react';\nimport { toast } from 'react-toastify';\nimport { createNotification } from './NotificationContent';\nimport type { NotificationOptions } from './NotificationContent';\nimport { NotificationId } from './types';\n\nexport function notify(title: string, options?: NotificationOptions): NotificationId;\n\nexport function notify(title: string, body: ReactChild, options?: NotificationOptions): NotificationId;\n\nexport function notify(\n title: string,\n bodyOrOptions?: ReactChild | NotificationOptions,\n options?: NotificationOptions\n): NotificationId {\n let body: ReactChild | undefined = isReactChild(bodyOrOptions) ? bodyOrOptions : undefined;\n const safeOptions = isReactChild(bodyOrOptions) ? { ...options } : bodyOrOptions || {};\n const NotificationContent = createNotification(title, body, safeOptions);\n const internalOptions = {\n ...safeOptions,\n autoClose: safeOptions.duration\n };\n return toast(NotificationContent, internalOptions) as NotificationId;\n}\n\nfunction isReactChild(el: ReactChild | NotificationOptions | undefined): el is ReactChild {\n return el != null && (typeof el === 'string' || typeof el === 'number' || 'type' in el);\n}\n\nnotify.dismiss = (id?: NotificationId) => toast.dismiss(id);\n","import React, { Fragment, FC, ReactNode } from 'react';\nimport classNames from 'classnames';\n\nimport { FormGroup, Label } from 'reactstrap';\nimport { Input } from '../Input/Input';\nimport type { InputProps } from '../Input/Input';\nimport { Icon } from '../Icon/Icon';\nimport { noop } from '../utils';\n\ntype UnusedProps =\n | 'bsSize'\n | 'size'\n | 'static'\n | 'plaintext'\n | 'normalized'\n | 'addon'\n | 'placeholder'\n | 'label'\n | 'value'\n | 'type';\nexport interface RatingProps extends Omit<InputProps, UnusedProps> {\n /** La lista di 5 id, per ciascun elemento intero del Rating. La lista deve essere ordinata dal rating 1 al rating 5. */\n inputs: string[];\n /** Il campo \"label\" è impostato di default su \"Valuta ${n} stelle su 5\", ma può essere personalizzato con questa funzione che riceve il numero input come argomento `function (n: number) => string`. */\n labelTemplate?: (value: 1 | 2 | 3 | 4 | 5) => string;\n /** Da utilizzare in caso legenda principale del Rating. Passare una componente React da mostrare come legenda (all'interno del tag `<legend>`). È possibile mostrare la leggenda solo ai dispositivi screen reader */\n legend?: ReactNode | { content: ReactNode; srOnly: boolean };\n /** Parametro name da dare all'input */\n name: string;\n /** Classi aggiuntive da usare per il componente wrapper del Rating */\n wrapperClassName?: string;\n /** Classi aggiuntive da usare per ciascun elemento all'interno del componente Rating */\n className?: string;\n /** Callback chiamata ad ogni cambio di valore di rating. Il nuovo valore ed il name verranno passati: `function (n, name) => void` */\n onChangeRating?: (value: 1 | 2 | 3 | 4 | 5 | number, name: string) => void;\n /** Rende il componente read-only */\n readOnly?: boolean;\n /** Il valore corrente del componente: deve essere compreso tra 1 e 5 */\n value?: 1 | 2 | 3 | 4 | 5 | number;\n testId?: string;\n}\n\nexport const isCustomLegendObject = (\n legend: ReactNode | { content: ReactNode; srOnly: boolean }\n): legend is { content: ReactNode; srOnly: boolean } => {\n return legend != null && typeof legend === 'object' && 'content' in legend;\n};\n\nexport const Rating: FC<RatingProps> = ({\n className,\n inputs,\n legend,\n name,\n readOnly,\n value,\n wrapperClassName,\n testId,\n labelTemplate = (value: 1 | 2 | 3 | 4 | 5) => `Valuta ${value} stelle su 5`,\n onChangeRating = noop,\n ...attributes\n}) => {\n // Input data\n // On the DOM we have to go from 5 to 1\n const safeInputs = (inputs || []).reverse();\n\n // Fields\n const labelFn = labelTemplate;\n\n const onChange = readOnly ? noop : onChangeRating;\n\n const wrapperClasses = classNames(wrapperClassName, {\n 'rating rating-read-only': readOnly,\n 'rating rating-label': legend\n });\n\n const fieldClasses = classNames(className);\n const extraFieldAttrs = readOnly ? { 'aria-hidden': true } : {};\n\n // Legend\n const isLegendString = typeof legend === 'string';\n\n let legendClass: string = '';\n let legendText: ReactNode = legend as string;\n\n if (isCustomLegendObject(legend)) {\n legendClass = classNames({\n 'visually-hidden': legend.srOnly\n });\n legendText = legend.content;\n }\n\n const legendContent =\n isCustomLegendObject(legend) || isLegendString ? <legend className={legendClass}>{legendText}</legend> : legend;\n\n return (\n <FormGroup\n cssModule={{ 'form-group': 'rating' }}\n tag='fieldset'\n className={wrapperClasses}\n data-testid={testId}\n {...attributes}\n >\n {legend && legendContent}\n {safeInputs.map((id, i) => {\n const currentValue = (5 - i) as 1 | 2 | 3 | 4 | 5;\n\n return (\n <Fragment key={id}>\n <Input\n type='radio'\n id={id}\n name={name}\n value={String(currentValue)}\n cssModule={{ 'form-control': '' }}\n className={fieldClasses}\n onChange={() => onChange(currentValue, name)}\n checked={value === currentValue}\n disabled={readOnly}\n {...extraFieldAttrs}\n />\n <Label className='full' for={id}>\n <Icon icon='it-star-full' size='sm' />\n <span className='visually-hidden'>{labelFn(currentValue)}</span>\n </Label>\n </Fragment>\n );\n })}\n </FormGroup>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface StepperContentProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Badge */\n className?: string;\n /** Abilita il tema scuro per il componente StepperContent */\n dark?: boolean;\n testId?: string;\n}\n\nconst contentStyleLight = {\n height: '400px',\n border: '2px dashed #eee',\n background: '#fafafa',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n color: '#333'\n};\n\nconst contentStyleDark = {\n height: '400px',\n border: '2px dashed #eee',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n color: '#EEE',\n borderColor: '#aaa',\n background: '#17324d',\n opacity: 0.5\n};\n\nexport const StepperContent: FC<StepperContentProps> = ({ tag = 'div', className, dark, ...attributes }) => {\n const Tag = tag;\n const classes = classNames('steppers-content', className);\n return (\n <Tag\n {...attributes}\n className={classes}\n style={(dark && contentStyleDark) || contentStyleLight}\n aria-live='polite'\n />\n );\n};\n","import React, { FC, HTMLAttributes, ElementType, ReactNode } from 'react';\nimport classNames from 'classnames';\nimport { Icon } from '../Icon/Icon';\n\nconst variants = {\n confirmed: 'confirmed',\n active: 'active',\n done: 'done',\n mobile: 'steppers-index',\n // @deprecated\n 'steppers-index': 'steppers-index'\n} as const;\n\nexport interface StepperHeaderElementProps extends HTMLAttributes<HTMLLIElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente StepperHeader */\n className?: string;\n /**\n * Il tipo di step:\n * * confirmed (confermato),\n * * active (attivo - su mobile viene mostrato solo questo)\n * * done (completato)\n * * mobile (visibile solo su mobile, usato per mostrare lo stato attuale di progresso)\n * * steppers-index (deprecato) usare mobile\n * */\n variant?: keyof typeof variants;\n /** Icona da mostrare alla destra dell'etichetta dello step */\n appendIcon?: string;\n /** Icona da mostrare alla sinistra dell'etichetta dello step */\n prependIcon?: string;\n /** Utilizzare questo attributo per elementi aggiuntivi da mostrare su dispositivi mobile per lo step attivo */\n stepperNumber?: ReactNode;\n /** Nasconde il bordo inferiore azzurro per lo step */\n noLine?: boolean;\n /** @deprecated Usare `appendIcon` */\n icon?: string;\n /** @deprecated Usare `prependIcon` */\n iconName?: string;\n testId?: string;\n}\n\nexport const StepperHeaderElement: FC<StepperHeaderElementProps> = ({\n tag = 'li',\n variant,\n appendIcon,\n prependIcon,\n icon,\n iconName,\n noLine,\n stepperNumber,\n testId,\n children,\n className,\n ...attributes\n}) => {\n const Tag = tag;\n const wrapperClasses = classNames(variant ? variants[variant] : '', className, {\n 'no-line': noLine\n });\n const iconClass = classNames('icon', 'steppers-success');\n const spanClass = classNames('steppers-number');\n\n const iconToAppend = appendIcon || icon;\n const iconToPrepend = prependIcon || iconName;\n return (\n <Tag {...attributes} className={wrapperClasses} data-testid={testId}>\n {iconToPrepend && <Icon icon={iconToPrepend} />}\n {stepperNumber && <span className={spanClass}>{stepperNumber}</span>}\n {children}\n {iconToAppend && <Icon icon={iconToAppend} className={iconClass} />}\n </Tag>\n );\n};\n","import React, { ElementType, FC, HTMLAttributes, createContext } from 'react';\nimport classnames from 'classnames';\n\nexport const SizeContext = createContext<ToolbarProps['size']>(undefined);\n\nexport interface ToolbarProps extends HTMLAttributes<HTMLElement> {\n tag?: ElementType;\n size?: 'large' | 'medium' | 'small';\n testId?: string;\n vertical?: boolean;\n}\n\nexport const Toolbar: FC<ToolbarProps> = ({ tag = 'nav', size, testId, children, vertical, ...attributes }) => {\n const Tag = tag;\n const classes = classnames('toolbar', {\n [`toolbar-${size}`]: size && size !== 'large',\n 'toolbar-vertical': vertical\n });\n return (\n <SizeContext.Provider value={size || 'large'}>\n <Tag className={classes} {...attributes} data-testid={testId}>\n <ul>{children}</ul>\n </Tag>\n </SizeContext.Provider>\n );\n};\n","import React, { ElementType, FC, HTMLAttributes, MouseEvent, useContext } from 'react';\nimport classNames from 'classnames';\nimport { Icon } from '../Icon/Icon';\nimport { SizeContext, ToolbarProps } from './Toolbar';\nimport { Dropdown, DropdownProps, DropdownToggle } from 'reactstrap';\n\nexport interface ToolbarItemBadge {\n value?: number;\n label: string;\n srText: string;\n}\n\nexport interface ToolbarItemProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati. Il valore di default è il tag anchor. */\n tag?: ElementType;\n /** Indica l'elemento attivo nella Toolbar */\n active?: boolean;\n /** Mostra l'elemento come disabilitato nella Toolbar */\n disabled?: boolean;\n /** L'URL a cui far puntare il tag anchor. */\n url?: string;\n /**\n * L'etichetta da mostrare sotto l'icona. In caso di dimensioni più piccole verrà\n * automaticamente sintegrata in uno span per gli screen reader.\n */\n label?: string;\n /** Il nome dell'icona da utilizzare */\n iconName: string;\n testId?: string;\n /**\n * Un testo completo da mostrare per Toolbar di grandezza media e piccola con badge (ad esempio: \"ci sono 42 nuovi documenti da esaminare\")\n * @deprecated\n */\n srText?: string;\n /**\n * Il badge da mostrare sull'icona del ToolbarItem.\n * Un badge è composto da:\n *\n * * una label per screen reader da affiancare alla label corrente (ad esempio: \"da leggere\")\n * * un testo completo da mostrare per Toolbar di grandezza media e piccola (ad esempio: \"ci sono 42 nuovi documenti da esaminare\")\n * * un eventuale valore numerico (omesso in caso di un badge di alert)\n **/\n badge?: number | ToolbarItemBadge;\n /**\n * Indica che il ToolbarItem contiene un menu dropdown.\n * Quando questo attributo è attivo il contenuto del componente ToolbarItem verrà mostrato all'interno del dropdown.\n */\n dropdown?: boolean;\n /**\n * Quando l'opzione dropdown è attiva questo attributo controlla se\n * l'elemento è di tipo \"altro\" contenente altre icone/opzioni o no.\n */\n showMore?: boolean;\n /**\n * Quando il componente è in modalità dropdown permette di controllarne\n * lo stato di visibilità. Il valore di default è false.\n */\n isDropdownOpen?: boolean;\n /**\n * Da utilizzare quando l'attributo \"dropdown\" è attivo.\n * Gli attributi qui passati verranno inoltrati al componente Dropdown interno.\n */\n dropdownProps?: Omit<DropdownProps, 'toggle' | 'isOpen'>;\n /**\n * Funzione chiamata al click dell'element ToolbarItem\n */\n onClick?: (event: MouseEvent<HTMLAnchorElement>) => void;\n}\n\nconst disabledMessage = ' elemento disabilitato';\n\nfunction ToolbarItemLabel({\n label,\n size,\n disabled,\n badge\n}: {\n label: ToolbarItemProps['label'];\n size: ToolbarProps['size'];\n disabled: ToolbarItemProps['disabled'];\n badge?: ToolbarItemBadge;\n}) {\n const showSrText = size && size !== 'large';\n if (disabled) {\n if (!label || showSrText) {\n return <span className='visually-hidden'>{disabledMessage}</span>;\n }\n return (\n <>\n <span className='toolbar-label'>{label}</span>\n <span className='visually-hidden'>{disabledMessage}</span>\n </>\n );\n }\n if (!label) {\n return null;\n }\n\n return showSrText ? (\n <span className='visually-hidden'>{label}</span>\n ) : (\n <span className='toolbar-label'>\n {label}\n {badge?.label ? <span className='visually-hidden'>{badge.label}</span> : null}\n </span>\n );\n}\n\nexport const ToolbarItem: FC<ToolbarItemProps> = ({\n active = false,\n badge,\n url,\n iconName,\n label,\n tag = 'a',\n disabled,\n testId,\n srText,\n dropdown,\n dropdownProps,\n children,\n showMore,\n onClick,\n isDropdownOpen,\n ...attributes\n}) => {\n const Tag = tag;\n const size = useContext(SizeContext);\n const activeClass = classNames({ active, disabled });\n\n const ariaAttributes = {\n ...(disabled && { 'aria-disabled': true })\n };\n const badgeObject = typeof badge === 'number' ? { value: badge, label: srText || '', srText: srText || '' } : badge;\n\n const toolbarItemContent = (\n <>\n {badgeObject ? (\n <div className='badge-wrapper'>\n <span className='toolbar-badge'>{size !== 'large' ? null : badgeObject.value}</span>\n {size !== 'large' && <span className='visually-hidden'>{badgeObject.srText}</span>}\n </div>\n ) : null}\n <Icon icon={iconName} size={size === 'small' ? 'sm' : ''} />\n <ToolbarItemLabel label={label} size={size} disabled={disabled} badge={badgeObject} />\n </>\n );\n\n if (dropdown) {\n return (\n <li>\n <Dropdown {...dropdownProps} toggle={onClick} isOpen={isDropdownOpen}>\n <DropdownToggle\n disabled={disabled}\n caret\n className={classNames('btn-dropdown', { 'toolbar-more': showMore })}\n color=''\n >\n {toolbarItemContent}\n </DropdownToggle>\n {children}\n </Dropdown>\n </li>\n );\n }\n\n return (\n <li>\n <Tag\n href={url || '#'}\n className={activeClass}\n data-testid={testId}\n {...attributes}\n {...ariaAttributes}\n onClick={onClick}\n >\n {toolbarItemContent}\n </Tag>\n </li>\n );\n};\n","import React, { ElementType, FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface AccordionProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Badge */\n className?: string;\n /** Utilizzare questo attributo per ottenere header con sfondo di colore primario quando questi è attivo o all’hover. */\n background?: 'active' | 'hover';\n /** Utilizzare questo attributo per mostrare, mediante un'icona a sinistra, lo stato di apertura */\n iconLeft?: boolean;\n testId?: string;\n}\n\nexport const Accordion: FC<AccordionProps> = ({\n tag = 'div',\n className,\n background,\n iconLeft = false,\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const classes = classNames('accordion', className, {\n 'accordion-background-active': background === 'active',\n 'accordion-background-hover': background === 'hover',\n 'accordion-left-icon': iconLeft\n });\n\n return <Tag {...attributes} className={classes} data-testid={testId} />;\n};\n","import classNames from 'classnames';\nimport React, { ElementType, FC, HTMLAttributes, ReactNode } from 'react';\n\nexport interface AccordionHeaderProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente AccordionHeader */\n className?: string;\n /** Utilizzare questo attributo per indicare se l'elemento è attivo o no */\n active?: boolean;\n /** Questa funzione verrà chiamata quando avviene un click sul componente AccordionHeader */\n onToggle?: () => void;\n /** Contenuto aggiuntivo all'interno del bottone dell'AccordionHeader */\n append?: ReactNode;\n testId?: string;\n}\n\nexport const AccordionHeader: FC<AccordionHeaderProps> = ({\n className,\n tag = 'button',\n active = false,\n append,\n onToggle,\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const toggleClasses = classNames(className, 'accordion-button', {\n collapsed: !active\n });\n return (\n <div className='accordion-header' data-testid={testId}>\n <Tag\n data-bs-toggle='collapse'\n aria-expanded={active ? 'true' : 'false'}\n className={toggleClasses}\n onClick={onToggle}\n {...attributes}\n {...(tag === 'button' && { type: 'button' })}\n ></Tag>\n {append}\n </div>\n );\n};\n","import classNames from 'classnames';\nimport React, { ElementType, FC, HTMLAttributes } from 'react';\n\nexport interface AccordionItemProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente */\n className?: string;\n}\n\nexport const AccordionItem: FC<AccordionItemProps> = ({ tag = 'div', className, ...attributes }) => {\n const Tag = tag;\n const classes = classNames('accordion-item', className);\n\n return <Tag {...attributes} className={classes} />;\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface AvatarContainerProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente AvatarContainer */\n className?: string;\n testId?: string;\n}\n\nexport const AvatarContainer: FC<AvatarContainerProps> = ({ className, tag = 'div', testId, ...attributes }) => {\n const Tag = tag;\n const wrapperClasses = classNames(\n 'd-flex align-items-center justify-content-around flex-wrap flex-sm-nowrap',\n className\n );\n return <Tag {...attributes} className={wrapperClasses} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface AvatarExtraTextProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente AvatarExtraText */\n className?: string;\n testId?: string;\n}\n\nexport const AvatarExtraText: FC<AvatarExtraTextProps> = ({ className, tag = 'div', testId, ...attributes }) => {\n const Tag = tag;\n const wrapperClass = classNames('extra-text', className);\n return <Tag className={wrapperClass} {...attributes} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface AvatarGroupContainerProps extends HTMLAttributes<HTMLUListElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente interno AvatarGroupContainer */\n className?: string;\n /** Classi aggiuntive da usare per il componente più esterno di AvatarGroupContainer */\n wrapperClassName?: string;\n testId?: string;\n}\n\nexport const AvatarGroupContainer: FC<AvatarGroupContainerProps> = ({\n className,\n tag = 'ul',\n wrapperClassName,\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const wrapperClasses = classNames('avatar-group-stacked', wrapperClassName);\n return <Tag {...attributes} className={wrapperClasses} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType, Ref } from 'react';\nimport classNames from 'classnames';\n\nexport interface AvatarIconProps extends HTMLAttributes<HTMLElement> {\n /**\n * Utilizzarlo in caso di utilizzo di componenti personalizzati, come ad esempio\n * un link gestito da handler onClick.\n * */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente AvatarIcon */\n className?: string;\n /** Le varianti di colore definite in Bootstrap Italia */\n color?: 'primary' | 'secondary' | 'green' | 'orange' | 'red' | string;\n /** Le dimensioni dell'icona definite in Bootstrap Italia */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';\n /**\n * Quando definito rende l'icona un link cliccabile. Nota: se definito ignora la prop Tag.\n * */\n href?: string;\n /** Da utilizzare per impostare un riferimento all'elemento DOM */\n innerRef?: Ref<HTMLElement | HTMLAnchorElement>;\n testId?: string;\n}\n\nexport const AvatarIcon: FC<AvatarIconProps> = ({\n className,\n tag = 'div',\n size = 'md',\n href,\n color,\n innerRef,\n testId,\n children,\n ...attributes\n}) => {\n const Tag = tag;\n const typeClass = classNames('avatar', {\n [`size-${size}`]: size,\n [`avatar-${color}`]: color\n });\n if (href) {\n return (\n <a\n href={href}\n {...attributes}\n className={typeClass}\n ref={innerRef as Ref<HTMLAnchorElement>}\n data-testid={testId}\n >\n {children}\n </a>\n );\n }\n\n return (\n <Tag {...attributes} className={typeClass} data-testid={testId}>\n {children}\n </Tag>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface AvatarPresenceProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente AvatarPresence */\n className?: string;\n /** Utilizzare questo attributo per indicare il tipo di presenza dell'utente. */\n presence: 'active' | 'busy' | 'hidden' | string;\n testId?: string;\n}\n\nexport const AvatarPresence: FC<AvatarPresenceProps> = ({\n className,\n tag = 'div',\n presence,\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const typeClass = classNames('avatar-presence', {\n presence\n });\n return <Tag {...attributes} className={typeClass} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface AvatarStatusProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente AvatarStatus */\n className?: string;\n /** Utilizzare questo attributo per indicare il tipo di stato dell'utente. */\n status: 'approved' | 'declined' | 'notify' | string;\n testId?: string;\n}\n\nexport const AvatarStatus: FC<AvatarStatusProps> = ({ className, tag = 'div', status, testId, ...attributes }) => {\n const Tag = tag;\n const typeClass = classNames('avatar-status', {\n status\n });\n return <Tag {...attributes} className={typeClass} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface AvatarWrapperProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente AvatarStatus */\n className?: string;\n /** Utilizzare questo attributo qualora si volesse utilizzare un componente AvatarExtraText all'interno dell'Avatar. */\n extra?: 'text' | string;\n testId?: string;\n}\n\nexport const AvatarWrapper: FC<AvatarWrapperProps> = ({ className, tag = 'div', extra, testId, ...attributes }) => {\n const Tag = tag;\n const wrapperClass = classNames('avatar-wrapper', className, {\n [`avatar-extra-${extra}`]: extra\n });\n return <Tag {...attributes} className={wrapperClass} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType, Ref, ReactChild, AnchorHTMLAttributes } from 'react';\nimport { Badge as BadgeReact } from 'reactstrap';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\n\nexport type BadgeProps = {\n /** Le varianti di colore definite in Bootstrap Italia */\n color?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | string;\n /** Quando attivo rende i Badge arrotondati */\n pill?: boolean;\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Badge */\n className?: string;\n /** Oggetto contenente la nuova mappatura per le classi CSS. */\n cssModule?: CSSModule;\n /** Da utilizzare per impostare un riferimento all'elemento DOM */\n innerRef?: Ref<HTMLElement>;\n /** Il contenuto del badge */\n children: ReactChild;\n testId?: string;\n} & (HTMLAttributes<HTMLElement> | AnchorHTMLAttributes<HTMLAnchorElement>);\n\nexport const Badge: FC<BadgeProps> = ({\n color = 'secondary',\n pill = false,\n tag = 'span',\n children,\n testId,\n ...attributes\n}) => {\n return (\n <BadgeReact color={color} pill={pill} tag={tag} {...attributes} data-testid={testId}>\n {children}\n </BadgeReact>\n );\n};\n","import React, { ElementType, FC, HTMLAttributes } from 'react';\n\nexport interface BottomNavProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente BottomNav */\n className?: string;\n testId?: string;\n}\n\nexport const BottomNav: FC<BottomNavProps> = ({ tag = 'nav', testId, ...attributes }) => {\n const Tag = tag;\n return (\n <Tag className='bottom-nav' data-testid={testId}>\n <ul {...attributes} />\n </Tag>\n );\n};\n","import React, { ElementType, FC, HTMLAttributes, MouseEvent } from 'react';\nimport classNames from 'classnames';\nimport { Icon } from '../Icon/Icon';\n\nexport interface BottomNavItemProps extends HTMLAttributes<HTMLLIElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente BottomNavItem */\n className?: string;\n /** Quando abilitato mostra l'elemento come attivo */\n active?: boolean;\n /** Indica l'URL a cui puntare (utilizzare o questo o onClick) */\n url?: string;\n /** Indica il link route a cui l'elemento deve puntare. */\n to?: string;\n /** Etichetta da associare all'elemento */\n label?: string;\n /** Testo esplicativo per dispositivi screen reader. */\n srText?: string;\n /** Icona da utilizzare per l'elemento */\n iconName?: string;\n /** Quando abilitato indica una sezione che richiede attenzione o presenta nuovi contenuti */\n alert?: boolean;\n /** Visualizza dei badge con indicazioni numeriche in alto a destra dell'icona */\n badge?: number;\n /** Da utilizzare al posto di url quando la gestione del click è in JS */\n onLinkClick?: (event: MouseEvent<HTMLAnchorElement>) => void;\n /**\n * Indica l'URL a cui far puntare il componente BottomNavItem.\n * @deprecated. Usare `url` o `onLinkClick`\n * */\n link?: string;\n testId?: string;\n}\n\nexport const BottomNavItem: FC<BottomNavItemProps> = ({\n active = false,\n badge,\n alert = false,\n url,\n to,\n srText,\n iconName = 'it-comment',\n label,\n tag = 'a',\n onLinkClick,\n link,\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const activeClass = classNames({ active });\n const badgeWrapper = Boolean(badge) && (\n <div className='badge-wrapper'>\n <span className='bottom-nav-badge'>{badge}</span>\n </div>\n );\n const alertWrapper = Boolean(alert) && (\n <div className='badge-wrapper'>\n <span className='bottom-nav-alert' />\n </div>\n );\n return (\n <li {...attributes} data-testid={testId}>\n <Tag href={url || link || '#'} className={activeClass} to={to} onClick={onLinkClick}>\n {badgeWrapper}\n {alertWrapper}\n <Icon icon={iconName} />\n <span className='bottom-nav-label'>\n {label}\n {srText ? <span className='visually-hidden'>{srText}</span> : null}\n </span>\n </Tag>\n </li>\n );\n};\n","import React, { ElementType, FC, HTMLAttributes } from 'react';\nimport { Breadcrumb as BreadcrumbBase } from 'reactstrap';\nimport classNames from 'classnames';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\n\nexport interface BreadcrumbProps extends HTMLAttributes<HTMLDivElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati per la l'elemento lista interno */\n listTag?: ElementType;\n /** Classi aggiuntive da usare per il componente Nav */\n className?: string;\n /** Classi aggiuntive da usare per il componente di lista interno */\n listClassName?: string;\n /** Oggetto contenente la nuova mappatura per le classi CSS. */\n cssModule?: CSSModule;\n /** Indica se si vuole la versione con fondo scuro */\n dark?: boolean;\n /** Etichetta significativa per descrivere il tipo di navigazione */\n 'aria-label'?: string;\n testId?: string;\n}\n\nexport const Breadcrumb: FC<BreadcrumbProps> = ({\n className,\n listClassName,\n dark,\n 'aria-label': label,\n testId,\n ...attributes\n}) => {\n const classes = classNames(className, 'breadcrumb-container');\n const listClasses = classNames(listClassName, { dark }, dark && 'px-3');\n const ariaLabel = label ?? 'Percorso di navigazione';\n return (\n <BreadcrumbBase\n className={classes}\n listClassName={listClasses}\n aria-label={ariaLabel}\n data-testid={testId}\n {...attributes}\n />\n );\n};\n","import React, { FC, ElementType, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface CalloutProps extends HTMLAttributes<HTMLElement> {\n /** Classi aggiuntive per il componente */\n className?: string;\n /** Permette di dichiarare il colore del bordo e del titolo */\n color?: 'success' | 'warning' | 'danger' | 'note' | 'important' | string;\n /** Permette personalizzare il tag utilizzato per il Callout (diverso da \"div\"). Accetta sia tag HTML che componenti React. */\n tag?: ElementType;\n /** Abilita il Callout di tipo Highlight */\n highlight?: boolean;\n /** Abilita il Callout di tipo Approfondimento */\n detailed?: boolean;\n testId?: string;\n}\n\nexport const Callout: FC<CalloutProps> = ({\n children,\n color = '',\n highlight = false,\n className,\n detailed,\n tag = 'div',\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const classes = classNames(className, color, 'callout', {\n 'callout-highlight': highlight,\n 'callout-more': detailed\n });\n return (\n <Tag className={classes} {...attributes} data-testid={testId}>\n {!highlight && !detailed ? <div className='callout-inner'>{children}</div> : children}\n </Tag>\n );\n};\n","import classNames from 'classnames';\nimport React, { ElementType, FC, useState } from 'react';\nimport { Button } from '../Button/Button';\nimport { Icon } from '../Icon/Icon';\n\nexport interface CalloutMoreFooterProps {\n id?: string;\n /** Utilizzarlo in caso si utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente */\n className?: string;\n fileUrl?: string;\n}\n\nexport const CalloutMoreFooter: FC<CalloutMoreFooterProps> = ({\n id = 'cm-footer',\n tag = 'div',\n className,\n fileUrl,\n children,\n ...attributes\n}) => {\n const Tag = tag;\n const classes = classNames('collapse-div', className);\n\n const [isOpen, setOpen] = useState(false);\n\n return (\n <Tag {...attributes} className={classes}>\n <div className='collapse-header' id={`${id}-heading`}>\n <Button\n color='primary'\n className='callout-more-toggle'\n onClick={() => setOpen(!isOpen)}\n aria-controls={`${id}-collapse`}\n aria-expanded={isOpen}\n style={{ fontFamily: 'var(--bs-font-sans-serif)', fontSize: '1rem' }}\n >\n Leggi tutto <span></span>\n </Button>\n {fileUrl && (\n <a\n className='callout-more-download'\n href={fileUrl}\n style={{\n fontFamily: 'var(--bs-font-sans-serif)',\n fontSize: '1rem'\n }}\n >\n <Icon icon='it-download' />\n <span className='visually-hidden'>PDF</span>Download\n </a>\n )}\n </div>\n <div\n className={`collapse ${isOpen ? 'show' : ''}`}\n role='tabpanel'\n id={`${id}-collapse`}\n aria-labelledby={`${id}-heading`}\n >\n <div className='collapse-body'>{children}</div>\n </div>\n </Tag>\n );\n};\n","import React, { FC, ElementType, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface CalloutTextProps extends HTMLAttributes<HTMLElement> {\n /** Aumenta la dimensione del testo nel paragrafo contenuto */\n bigText?: boolean;\n /** Classi aggiuntive per il componente */\n className?: string;\n /** Permette personalizzare il tag utilizzato per il contenitore del titolo (diverso da \"div\"). Accetta sia tag HTML che componenti React. */\n tag?: ElementType;\n testId?: string;\n}\n\nexport const CalloutText: FC<CalloutTextProps> = ({\n bigText = false,\n children,\n className,\n tag = 'p',\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const classes = classNames(className, {\n 'callout-big-text': bigText\n });\n return (\n <Tag className={classes} {...attributes} data-testid={testId}>\n {children}\n </Tag>\n );\n};\n","import React, { FC, ElementType, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface CalloutTitleProps extends HTMLAttributes<HTMLElement> {\n /** Classi aggiuntive per il componente */\n className?: string;\n /** Permette personalizzare il tag utilizzato per il contenitore del titolo (diverso da \"div\"). Accetta sia tag HTML che componenti React. */\n tag?: ElementType;\n testId?: string;\n}\n\nexport const CalloutTitle: FC<CalloutTitleProps> = ({ children, className, tag = 'div', testId, ...attributes }) => {\n const Tag = tag;\n const classes = classNames(className, 'callout-title');\n return (\n <Tag className={classes} {...attributes} data-testid={testId}>\n {children}\n </Tag>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType, Ref } from 'react';\nimport classNames from 'classnames';\nimport { Card as CardBase } from 'reactstrap';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\n\nexport interface CardProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Utilizzarlo quando si passa `a` a `tag` per ottenere una special card cliccabile */\n href?: string;\n /** Classi aggiuntive da usare per il componente Card */\n className?: string;\n /** Da utilizzare per impostare un riferimento all'elemento DOM */\n innerRef?: Ref<HTMLElement>;\n /** Oggetto contenente la nuova mappatura per le classi CSS. */\n cssModule?: CSSModule;\n /** Abilita la versione teaser della Card */\n teaser?: boolean;\n /** Quando attivo distanzia la Card nella versione mobile */\n spacing?: boolean;\n /** Quando attivo rimuove il componente contenitore della carta. Utile per card multiple nello stesso contenitore */\n noWrapper?: boolean;\n /** Classi aggiuntive per l'elemento contenitore */\n wrapperClassName?: string;\n testId?: string;\n}\n\nexport const Card: FC<CardProps> = ({\n tag = 'div',\n href = undefined,\n teaser,\n spacing,\n noWrapper = false,\n wrapperClassName,\n testId,\n ...attributes\n}) => {\n const wrapperClasses = classNames('card-wrapper', wrapperClassName, {\n 'card-space': spacing,\n 'card-teaser-wrapper': teaser\n });\n const cardClasses = classNames(attributes.className, {\n 'card-teaser': teaser\n });\n\n if (noWrapper) {\n return (\n <CardBase\n {...attributes}\n className={cardClasses}\n tag={tag}\n href={tag === 'a' ? href : undefined}\n data-testid={testId}\n />\n );\n }\n\n return (\n <div className={wrapperClasses} data-testid={testId}>\n <CardBase {...attributes} className={cardClasses} tag={tag} href={tag === 'a' ? href : undefined} />\n </div>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType, Ref } from 'react';\nimport { CardBody as InnerCardBody } from 'reactstrap';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\n// Note: this is a wrapper class around a reactstrap component.\n// TODO: remove this class and restore the direct import when\n// https://github.com/storybookjs/storybook/issues/10536 gets resolved\n\nexport interface CardBodyProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Card */\n className?: string;\n /** Da utilizzare per impostare un riferimento all'elemento DOM */\n innerRef?: Ref<HTMLElement>;\n /** Oggetto contenente la nuova mappatura per le classi CSS. */\n cssModule?: CSSModule;\n testId?: string;\n}\n\nexport const CardBody: FC<CardBodyProps> = ({ tag = 'div', testId, ...props }) => (\n <InnerCardBody {...props} tag={tag} data-testid={testId} />\n);\n","import React, { FC, HTMLAttributes, MouseEvent } from 'react';\nimport classNames from 'classnames';\n\nimport { Icon } from '../Icon/Icon';\n\nexport interface CardCategoryProps extends HTMLAttributes<HTMLElement> {\n /** Mostra un'icona nella Card. Passare il nome dell'icona per utilizzarlo. */\n iconName?: string;\n /** Mostra la data nella Card. Passare una data già formattata come stringa. */\n date?: string;\n /** Se usato come link, passare l'URL target. */\n href?: string;\n /** Da utilizzare al posto di url quando la gestione del click è in JS */\n onClick?: (event: MouseEvent<HTMLAnchorElement>) => void;\n testId?: string;\n}\n\nexport const CardCategory: FC<CardCategoryProps> = ({ iconName, date, href, onClick, testId, children, ...rest }) => {\n const classes = classNames({\n 'category-top': date || ' ',\n 'categoryicon-top': iconName\n });\n // Simple category link\n const categoryLink = !iconName && (\n <a href={href} className='category' onClick={onClick}>\n {children}\n </a>\n );\n const categoryDate = date && <span className='data'>{date}</span>;\n // Category with icon\n const categoryText = iconName && <span className='text'>{children}</span>;\n const categoryIcon = iconName && <Icon icon={iconName} />;\n\n return (\n <div className={classes} {...rest} data-testid={testId}>\n {categoryLink}\n {categoryIcon}\n {categoryText}\n {categoryDate}\n </div>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface CardFooterCTAProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente CardFooterCTA*/\n className?: string;\n testId?: string;\n}\n\nexport const CardFooterCTA: FC<CardFooterCTAProps> = ({ className, tag = 'div', testId, ...attributes }) => {\n const Tag = tag;\n const classes = classNames(className, 'it-card-footer');\n return <Tag className={classes} {...attributes} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nimport { Icon } from '../Icon/Icon';\n\nexport interface CardReadMoreProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente CardReadMore*/\n className?: string;\n /** Il contenuto in testo da mostrare */\n text: string;\n /** Passare l'URL target. */\n href?: string;\n /** Mostra un'icona nella Card per l'azione \"Leggi di più\". Passare il nome dell'icona per utilizzarlo. */\n iconName?: string;\n testId?: string;\n}\n\nexport const CardReadMore: FC<CardReadMoreProps> = ({\n className,\n text,\n iconName = 'it-arrow-right',\n tag = 'a',\n href,\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const classes = classNames(className, 'read-more');\n return (\n <Tag className={classes} href={href} {...attributes} data-testid={testId}>\n <span className='text'>{text}</span>\n {iconName && <Icon icon={iconName} />}\n </Tag>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface CardSignatureProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente CardSignature*/\n className?: string;\n testId?: string;\n}\n\nexport const CardSignature: FC<CardSignatureProps> = ({ className, tag = 'span', testId, ...attributes }) => {\n const Tag = tag;\n const classes = classNames(className, 'card-signature');\n return <Tag className={classes} {...attributes} data-testid={testId} />;\n};\n","import React, { AnchorHTMLAttributes, FC, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface CardTagProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente CardTag*/\n className?: string;\n testId?: string;\n}\n\nexport const CardTag: FC<CardTagProps> = ({ className, tag = 'a', testId, ...attributes }) => {\n const Tag = tag;\n const classes = classNames(className, 'card-tag');\n return <Tag className={classes} {...attributes} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface CardTagsHeaderProps extends HTMLAttributes<HTMLElement> {\n /** Mostra la data nella Card. Passare una data già formattata come stringa. */\n date?: string;\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente CardTagsHeader */\n className?: string;\n testId?: string;\n}\n\nexport const CardTagsHeader: FC<CardTagsHeaderProps> = ({\n date,\n children,\n className,\n tag = 'div',\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const classes = classNames('head-tags', className);\n return (\n <Tag className={classes} {...attributes} data-testid={testId}>\n {children}\n {date && <span className='data'>{date}</span>}\n </Tag>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport { CardText as InnerCardText } from 'reactstrap';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\n// Note: this is a wrapper class around a reactstrap component.\n// TODO: remove this class and restore the direct import when\n// https://github.com/storybookjs/storybook/issues/10536 gets resolved\n\nexport interface CardTextProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente CardText */\n className?: string;\n /** Oggetto contenente la nuova mappatura per le classi CSS. */\n cssModule?: CSSModule;\n testId?: string;\n}\n\nexport const CardText: FC<CardTextProps> = (props) => {\n return <InnerCardText {...props} data-testid={props.testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport { CardTitle as InnerCardTitle } from 'reactstrap';\n\n// Note: this is a wrapper class around a reactstrap component.\n// TODO: remove this class and restore the direct import when\n// https://github.com/storybookjs/storybook/issues/10536 gets resolved\n\nexport interface CardTitleProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente CardTitle */\n className?: string;\n testId?: string;\n}\n\nexport const CardTitle: FC<CardTitleProps> = (props) => {\n return <InnerCardTitle {...props} data-testid={props.testId} />;\n};\n","import React, { HTMLAttributes, FC, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface ChipProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Chip */\n className?: string;\n /** Impostarlo su `true` per centrare la label all'interno */\n simple?: boolean;\n /** Impostarlo su `true` per una versione più grande del componente Chip. */\n large?: boolean;\n /** Impostarlo su `true` per renderizzare il componente Chip come disabilitato */\n disabled?: boolean;\n /** Le varianti di colore definite in Bootstrap Italia */\n color?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | string;\n testId?: string;\n}\n\nexport const Chip: FC<ChipProps> = ({\n className,\n color = '',\n tag = 'div',\n simple = false,\n large = false,\n disabled = false,\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const classes = classNames('chip', className, {\n 'chip-simple': simple,\n 'chip-lg': large,\n 'chip-disabled': disabled,\n [`chip-${color}`]: color\n });\n\n return <Tag className={classes} {...attributes} data-testid={testId} />;\n};\n","import React, { ElementType, FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface ChipLabelProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente ChipLabel */\n className?: string;\n testId?: string;\n}\n\nexport const ChipLabel: FC<ChipLabelProps> = ({ className, tag = 'span', testId, ...attributes }) => {\n const Tag = tag;\n const classes = classNames(className, 'chip-label');\n return <Tag {...attributes} className={classes} data-testid={testId} />;\n};\n","import React, { ElementType, FC, HTMLAttributes, Ref } from 'react';\nimport classNames from 'classnames';\n\nimport { Collapse as CollapseBase } from 'reactstrap';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\n\n// Copy over from reactstrap and add new ones\nexport interface CollapseProps extends HTMLAttributes<HTMLElement> {\n /** Indica se il menu HeaderNav sia aperto o meno. Usato unicamente nel caso della HeaderNav, ovvero con navbar e header entrambi true */\n isOpen?: boolean;\n /** Oggetto contenente la nuova mappatura per le classi CSS. */\n cssModule?: CSSModule;\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Indica se il componente Collapse è usato all'interno di un componente navbar */\n navbar?: boolean;\n /** Indica se il componente Collapse ha al suo interno un Megamenu */\n megamenu?: boolean;\n /** Indica se il componente Collapse è usato all'interno di un componente Header */\n header?: boolean;\n delay?: {\n show: number;\n hide: number;\n };\n /** Funzione chiamata all'apertura del componente Collapse */\n onOpened?: () => void;\n /** Funzione chiamata alla chiusura del componente Collapse */\n onClosed?: () => void;\n /** Funzione chiamata durante la trasizione di apertura del componente Collapse */\n onEntering?: () => void;\n /** Funzione chiamata al termine della trasizione di apertura del componente Collapse */\n onEntered?: () => void;\n onExit?: () => void;\n /** Funzione chiamata durante la trasizione di chiusura del componente Collapse */\n onExiting?: () => void;\n /** Funzione chiamata al termine della trasizione di chiusura del componente Collapse */\n onExited?: () => void;\n /** Funzione chiamata su click di overlay dell'HeaderNav aperto. Usato unicamente nel caso della HeaderNav, ovvero con navbar e header entrambi true */\n onOverlayClick?: () => void;\n /** Da utilizzare per impostare un riferimento all'elemento DOM */\n innerRef?: Ref<HTMLElement>;\n testId?: string;\n}\n\nexport const Collapse: FC<CollapseProps> = ({\n header = false,\n className,\n navbar,\n megamenu,\n children,\n isOpen = false,\n onOverlayClick,\n cssModule,\n testId,\n ...attributes\n}) => {\n const newCssModule = {\n 'navbar-collapse': 'navbar-collapsable',\n ...cssModule\n };\n if (megamenu || navbar || header) {\n const classes = classNames(className, 'navbar-collapse', {\n expanded: isOpen\n });\n const style = { display: isOpen ? 'block' : 'none' };\n return (\n <CollapseBase\n className={classes}\n cssModule={newCssModule}\n navbar={navbar}\n style={style}\n data-testid={testId}\n {...attributes}\n >\n <div className='overlay' style={style} onClick={onOverlayClick}></div>\n <div className='close-div visually-hidden'>\n <button className='btn close-menu' type='button'>\n <span className='it-close'></span>close\n </button>\n </div>\n {megamenu ? <div className='menu-wrapper'>{children}</div> : <>{children}</>}\n </CollapseBase>\n );\n }\n const classes = classNames(className, {\n 'link-list-wrapper': header\n });\n\n return (\n <CollapseBase\n className={classes}\n cssModule={newCssModule}\n {...attributes}\n navbar={navbar}\n isOpen={isOpen}\n data-testid={testId}\n >\n {children}\n </CollapseBase>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nimport { Icon } from '../Icon/Icon';\n\nexport interface DimmerProps extends HTMLAttributes<HTMLElement> {\n /** Il nome dell'icona da mostrare. Per una lista completa vedi: @TODO-URL */\n icon?: string;\n /** Le varianti di colore definite in Bootstrap Italia */\n color?: 'success' | 'warning' | 'danger' | 'note' | 'important' | string;\n /** Classi aggiuntive da usare per il componente Dimmer */\n className?: string;\n /**\n * Classi aggiuntive da usare per il componente contenitore del Dimmer\n * Per replicare il comportamento precedente, in cui `className` veniva applicato anche al wrapper,\n * passare `true`.\n * */\n wrapperClassName?: string | true;\n testId?: string;\n}\n\nexport const Dimmer: FC<DimmerProps> = ({ icon, color, className, wrapperClassName, testId, ...attributes }) => {\n const { children, ...rest } = attributes;\n const classes = classNames('dimmer', wrapperClassName === true ? className : wrapperClassName, {\n [`dimmer-${color}`]: color\n });\n const innerClasses = classNames('dimmer-inner', className);\n const dimmerIcon = icon && (\n <div className='dimmer-icon'>\n <Icon icon={icon} />\n </div>\n );\n\n return (\n <div className={classes} {...rest} style={{ display: 'flex' }} data-testid={testId}>\n <div className={innerClasses} {...rest}>\n {dimmerIcon}\n {children}\n </div>\n </div>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface DimmerButtonsProps extends HTMLAttributes<HTMLElement> {\n /** Le varianti di colore definite in Bootstrap Italia per il componente Dimmer */\n color?: 'primary' | string;\n /** Classi aggiuntive da usare per il componente Dimmer */\n className?: string;\n /** Da utilizzare in presenza di un singolo bottone: quando abilitato ne centra il contenuto. */\n single?: boolean;\n /** Da utilizzare con `false` per abilitare il precedente comportamento senza sfondo scuro.\n * @deprecated\n */\n dark?: boolean;\n testId?: string;\n}\n\nexport const DimmerButtons: FC<DimmerButtonsProps> = ({\n color,\n className,\n single = false,\n dark = true,\n testId,\n ...attributes\n}) => {\n const { children, ...rest } = attributes;\n const classes = classNames('dimmer-buttons', className, {\n 'bg-dark': dark,\n 'single-button': single\n });\n\n return (\n <div className={classes} {...rest} data-testid={testId}>\n {children}\n </div>\n );\n};\n","import React, { FC, AnchorHTMLAttributes, MutableRefObject } from 'react';\nimport classNames from 'classnames';\n\nexport interface ForwardProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Classi aggiuntive da usare per il componente Forward */\n className?: string;\n /** Riferimento al nodo a cui scorrere quando premuto */\n scrollToRef: MutableRefObject<Element | null>;\n testId?: string;\n}\n\nexport const Forward: FC<ForwardProps> = ({ className, scrollToRef, children, testId, ...attributes }) => {\n const classes = classNames(className, 'forward');\n return (\n <a\n className={classes}\n onClick={() =>\n scrollToRef.current?.scrollIntoView({\n behavior: 'smooth',\n block: 'start'\n })\n }\n data-testid={testId}\n {...attributes}\n >\n {children}\n </a>\n );\n};\n","import React, { ElementType, FC, HTMLAttributes } from 'react';\nimport classname from 'classnames';\n\nexport interface GridItemProps extends HTMLAttributes<HTMLSpanElement> {\n /** Classi aggiuntive da usare per il componente LinkListItem */\n className?: string;\n /** Indica il tag da utilizzare per il titolo */\n tag?: ElementType;\n testId?: string;\n}\n\nexport const GridItem: FC<GridItemProps> = ({ tag: Tag = 'div', className, children, testId, ...attributes }) => {\n const classes = classname('it-grid-item-wrapper', className);\n return (\n <Tag {...attributes} className={classes} data-testid={testId}>\n {children}\n </Tag>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classname from 'classnames';\n\nexport interface GridItemTextProps extends HTMLAttributes<HTMLSpanElement> {\n /** Classi aggiuntive da usare per l'elemento */\n className?: string;\n testId?: string;\n}\n\nexport const GridItemText: FC<GridItemTextProps> = ({ className, children, testId, ...attributes }) => {\n const classes = classname('it-griditem-text', className);\n return (\n <span {...attributes} className={classes} data-testid={testId}>\n {children}\n </span>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classname from 'classnames';\n\nexport interface GridItemTextWrapperProps extends HTMLAttributes<HTMLSpanElement> {\n /** Classi aggiuntive da usare per l'elemento */\n className?: string;\n testId?: string;\n}\n\nexport const GridItemTextWrapper: FC<GridItemTextWrapperProps> = ({ className, children, testId, ...attributes }) => {\n const classes = classname('it-griditem-text-wrapper', className);\n return (\n <span {...attributes} className={classes} data-testid={testId}>\n {children}\n </span>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classname from 'classnames';\n\nexport interface GridListProps extends HTMLAttributes<HTMLSpanElement> {\n /** Classi aggiuntive da usare per il componente LinkListItem */\n className?: string;\n testId?: string;\n}\n\nexport const GridList: FC<GridListProps> = ({ className, children, testId, ...attributes }) => {\n const classes = classname('it-grid-list-wrapper', className);\n return (\n <div {...attributes} className={classes} data-testid={testId}>\n {children}\n </div>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classname from 'classnames';\n\nexport interface GridRowProps extends HTMLAttributes<HTMLSpanElement> {\n /** Classi aggiuntive da usare per il componente LinkListItem */\n className?: string;\n testId?: string;\n}\n\nexport const GridRow: FC<GridRowProps> = ({ className, children, testId, ...attributes }) => {\n const classes = classname('grid-row', className);\n return (\n <div {...attributes} className={classes} data-testid={testId}>\n {children}\n </div>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nimport { HeaderContext, CENTER, NAVBAR } from './HeaderContext';\n\nexport interface HeaderProps extends HTMLAttributes<HTMLElement> {\n /** Classi aggiuntive da usare per il componente Header */\n className?: string;\n /** Tipo di componente Header: può essere solamente uno di questi tre tipi */\n type: 'slim' | 'center' | 'navbar';\n /** Riduce la grandezza del componente Header. Funziona solamente con Header \"center\". */\n small?: boolean;\n /** Imposta il tema per il componente Header. Per gli Header di tipo \"slim\" o \"center\"\n * il valore di default è \"dark\". Per l'Header di tipo \"nav\" il tema di default è \"light\"\n * in mobile, mentre \"dark\" in versione desktop.\n */\n theme?: 'light' | 'dark' | '';\n testId?: string;\n}\n\nexport const Header: FC<HeaderProps> = ({ className, small = false, theme = '', type, testId, ...attributes }) => {\n // use context here as theme\n const classes = classNames(className, {\n [`it-header-${type}-wrapper`]: type,\n 'it-small-header': type === CENTER && small,\n [`theme-${theme}`]: type !== NAVBAR && theme,\n 'theme-dark-mobile': type === NAVBAR && theme === 'dark',\n 'theme-light-desk': type === NAVBAR && theme === 'light'\n });\n return (\n <HeaderContext.Provider value={{ type }}>\n <div className={classes} {...attributes} data-testid={testId} />\n </HeaderContext.Provider>\n );\n};\n","import React, { AnchorHTMLAttributes, ElementType, ReactChild } from 'react';\nimport classNames from 'classnames';\nimport { NavbarBrand } from 'reactstrap';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\nimport { CENTER, useHeaderContext } from './HeaderContext';\nimport { Icon } from '../Icon/Icon';\n\nexport interface HeaderBrandProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente HeaderBrand */\n className?: string;\n /** Oggetto contenente la nuova mappatura per le classi CSS. */\n cssModule?: CSSModule;\n /** Da usare con il componente Header Nav in versione \"responsive\" */\n responsive?: boolean;\n /** Da utilizzare per specificare URL risorsa esterna. */\n href?: string;\n /** Icona da utilizzare nel componente. Utilizzata unicamente quando l'Header è di tipo Center. */\n iconName?: string;\n /** Alt text da utilizzare nell'icona. Utilizzata unicamente quando l'Header è di tipo Center. */\n iconAlt?: string;\n /** Elementi React da renderizzare al proprio interno. */\n children: ReactChild | ReactChild[];\n testId?: string;\n}\n\nexport const HeaderBrand = ({\n className,\n href,\n iconName,\n iconAlt,\n children,\n tag = 'a',\n responsive = false,\n testId,\n ...attributes\n}: HeaderBrandProps) => {\n const type = useHeaderContext();\n const defaultAttributes = { tag };\n if (type !== CENTER) {\n const classes = classNames('d-lg-block', className, {\n 'd-none': !responsive\n });\n return (\n <NavbarBrand className={classes} href={href} data-testid={testId} {...attributes} {...defaultAttributes}>\n {children}\n </NavbarBrand>\n );\n }\n return (\n <div className='it-brand-wrapper' data-testid={testId}>\n <a href={href}>\n {iconName && <Icon icon={iconName} title={iconAlt} />}\n <div className='it-brand-text'>\n {React.Children.map(children, (child, i) => {\n if (typeof child !== 'object' || child == null || !('props' in child)) {\n return child;\n }\n // convention here: first item is the main title, while others subtext\n const className = classNames(\n child.props.className,\n { 'd-none d-md-block': i } // subtext is anything but first element\n );\n\n const props = {\n className\n };\n\n return React.cloneElement(child, props);\n })}\n </div>\n </a>\n </div>\n );\n};\n","import React, { HTMLAttributes } from 'react';\nimport classNames from 'classnames';\nimport { Col, Container, Navbar, Row } from 'reactstrap';\n\nimport { SLIM, CENTER, NAVBAR, useHeaderContext } from './HeaderContext';\n\nexport interface HeaderContentProps extends HTMLAttributes<HTMLElement> {\n /** Classi aggiuntive da usare per il componente HeaderContent */\n className?: string;\n /** Da utilizzare per indicare che all'interno dell'Header verrà utilizzato un Megamenu */\n megamenu?: boolean;\n /** Parametro per il controllo responsive del componente secondo Bootstrap Italia. */\n expand?: boolean | 'sm' | 'md' | 'lg' | 'xl';\n testId?: string;\n}\n\nexport const HeaderContent = ({ className, megamenu, testId, ...attributes }: HeaderContentProps) => {\n const type = useHeaderContext();\n const classes = classNames(className, {\n 'it-header-slim-wrapper-content': type === SLIM,\n 'it-header-center-content-wrapper': type === CENTER,\n navbar: type === NAVBAR,\n 'has-megamenu': megamenu\n });\n\n const Content =\n type === NAVBAR ? (\n <Navbar className={classes} {...attributes} data-testid={testId} />\n ) : (\n <div className={classes} {...attributes} data-testid={testId} />\n );\n return (\n <Container>\n <Row>\n <Col>{Content}</Col>\n </Row>\n </Container>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface HeaderLinkZoneProps extends HTMLAttributes<HTMLElement> {\n /** Classi addizionali per il componente HeaderLinkZone, applicata all'element \"nav\" annidato */\n className?: string;\n testId?: string;\n}\n\nexport const HeaderLinkZone: FC<HeaderLinkZoneProps> = ({ className, testId, ...attributes }) => {\n const classes = classNames(className);\n return (\n <div className='nav-mobile' data-testid={testId}>\n <nav className={classes} {...attributes} />\n </div>\n );\n};\n","import React, { HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nimport { SLIM, useHeaderContext } from './HeaderContext';\n\nexport interface HeaderRightZoneProps extends HTMLAttributes<HTMLElement> {\n /** Classi addizionali per il componente HeaderLinkZone, applicata all'element \"nav\" annidato */\n className?: string;\n testId?: string;\n}\n\nexport const HeaderRightZone = ({ className, testId, ...attributes }: HeaderRightZoneProps) => {\n const type = useHeaderContext();\n const classes = classNames(className, {\n // BI >= 1.3.6\n 'it-header-slim-right-zone': type === SLIM,\n // BI < 1.3.6\n 'header-slim-right-zone': type === SLIM,\n 'it-right-zone': type !== SLIM\n });\n return <div className={classes} {...attributes} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nimport { Icon } from '../Icon/Icon';\n\nexport interface HeaderSearchProps extends HTMLAttributes<HTMLElement> {\n /** Classi aggiuntive da usare per il componente HeaderSearch */\n className?: string;\n /** Etichetta di testo da applicare all'elemento. In caso di stringa vuota non verrà mostrato alcun testo */\n label: string;\n /** Nome dell'icona da utilizzare */\n iconName: string;\n /** Indirizzo di indirizzamento al click dell'icona */\n href?: string;\n testId?: string;\n}\n\nexport const HeaderSearch: FC<HeaderSearchProps> = ({\n className,\n label,\n href,\n iconName = 'it-search',\n testId,\n ...attributes\n}) => {\n const classes = classNames('it-search-wrapper', className);\n return (\n <div className={classes} {...attributes} data-testid={testId}>\n {label && <span className='d-none d-md-block'>{label}</span>}\n <a className='search-link rounded-icon' aria-label={label} href={href}>\n <Icon icon={iconName} />\n </a>\n </div>\n );\n};\n","import React, { FC, HTMLAttributes, ReactChild } from 'react';\nimport classNames from 'classnames';\n\nexport interface HeaderSocialsZoneProps extends HTMLAttributes<HTMLElement> {\n /** Classi addizionali per il componente HeaderSocialsZone, verrà applicato all'elemento wrapper più esterno. */\n className?: string;\n /** Etichetta utilizzata per presentare i social presenti. In caso di stringa vuota non verrà mostrata alcuna etichetta */\n label?: string;\n /** Utilizzato per elencare i social da mostrare */\n children?: ReactChild;\n testId?: string;\n}\n\nexport const HeaderSocialsZone: FC<HeaderSocialsZoneProps> = ({\n className,\n children,\n label,\n testId,\n ...attributes\n}) => {\n const classes = classNames('it-socials d-none d-md-flex', className);\n return (\n <div className={classes} {...attributes} data-testid={testId}>\n {label && <span>{label}</span>}\n {children}\n </div>\n );\n};\n","import React, { ElementType, ButtonHTMLAttributes, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { NavbarToggler } from 'reactstrap';\n\nimport { SLIM, NAVBAR, useHeaderContext } from './HeaderContext';\n\nexport interface HeaderTogglerProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Tipo di elemento DOM da utilizzare: di default \"a\" per Header Slim, \"button\" per altri tipi di Header.\n * Se fornito questo sovrascriverà il valore di default.\n */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente HeaderToggler */\n className?: string;\n /** Indica l'attributo \"type\" sull'elemento DOM. Di default '' per Header Slim, \"button\" per altri tipi di Header.\n * Se fornito questo sovrascriverà il valore di default.\n */\n type?: 'button' | 'submit' | 'reset';\n testId?: string;\n}\n\nconst BUTTON = 'button';\n\nexport const HeaderToggler = ({ className, tag, type, testId, ...attributes }: HeaderTogglerProps) => {\n const HeaderType = useHeaderContext();\n const defaultTag = HeaderType === SLIM ? 'a' : BUTTON;\n const defaultType = HeaderType === SLIM ? undefined : BUTTON;\n const classes = classNames(\n {\n 'it-opener d-lg-none': HeaderType === SLIM,\n 'custom-navbar-toggler': HeaderType === NAVBAR\n },\n className\n );\n useEffect(() => {\n document.querySelectorAll('.container-fluid').forEach((element) => {\n element.classList.remove('container-fluid');\n });\n });\n return (\n <NavbarToggler\n className={classes}\n {...attributes}\n tag={tag || defaultTag}\n type={type || defaultType}\n href='#'\n data-testid={testId}\n />\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\nimport { Sticky, StickyProvider } from 'react-stickup';\n\nexport interface HeadersProps extends HTMLAttributes<HTMLElement> {\n /** Aggiunge un ombra per enfatizzare il componente rispetto alla pagina in cui è contenuto */\n shadow?: boolean;\n /** Aggiunge il comportamento \"sticky\" ai componenti Header contenuti */\n sticky?: boolean;\n /** Classi addizionali per il componente Headers */\n className?: string;\n testId?: string;\n}\n\nexport const Headers: FC<HeadersProps> = ({ className, shadow = false, sticky = false, testId, ...attributes }) => {\n const classes = classNames(\n 'it-header-wrapper',\n {\n 'it-shadow': shadow,\n 'it-header-sticky': sticky\n },\n className\n );\n if (!sticky) {\n return <div className={classes} {...attributes} data-testid={testId}></div>;\n }\n return (\n <StickyProvider>\n <Sticky style={{ position: 'sticky', zIndex: 2 }} data-testid={testId}>\n <div className={classes} {...attributes}></div>\n </Sticky>\n </StickyProvider>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classname from 'classnames';\n\nexport interface HeroProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Indica se il componente Hero deve ridurre l'altezza */\n small?: boolean;\n /** Indica al componente Hero di centrare i contenuti testuali orizzontalmente */\n centered?: boolean;\n /** Da utilizzare per creare un testi in overlay su immagini, al fine di migliorare la leggibilità di testo */\n overlay?: 'dark' | 'primary' | 'filter';\n /** Aggiunge margine negativo in fondo al componente Hero per creare una sovrapposizione con il contenuto seguente. */\n overlap?: boolean;\n testId?: string;\n}\n\nexport const Hero: FC<HeroProps> = ({\n tag: Tag = 'div',\n small,\n centered,\n overlay,\n overlap,\n className,\n testId,\n ...attributes\n}) => {\n const classes = classname('it-hero-wrapper', className, {\n 'it-overlay': overlay,\n ['it-' + overlay]: overlay,\n 'it-hero-small-size': small,\n 'it-text-centered': centered,\n 'it-bottom-overlapping-content': overlap\n });\n return <Tag className={classes} {...attributes} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes } from 'react';\n\nexport interface HeroBackgroundProps extends HTMLAttributes<HTMLImageElement> {\n /** Un testo alternativo per descrivere l'immagine mostrata */\n alt: string;\n /** L'URI dell'immagine da mostrare */\n src: string;\n /** Il titolo dell'immagine */\n title?: string;\n testId?: string;\n}\n\nexport const HeroBackground: FC<HeroBackgroundProps> = ({ alt, testId, ...attributes }) => {\n return (\n <div className='img-responsive-wrapper' data-testid={testId}>\n <div className='img-responsive'>\n <div className='img-wrapper'>\n <img {...attributes} alt={alt} />\n </div>\n </div>\n </div>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classname from 'classnames';\nimport { Col, Container, Row } from 'reactstrap';\n\nexport interface HeroBodyProps extends HTMLAttributes<HTMLElement> {\n /** Eventuali classi aggiuntive */\n className?: string;\n testId?: string;\n}\n\nexport const HeroBody: FC<HeroBodyProps> = ({ children, className, testId }) => {\n const classes = classname('it-hero-text-wrapper', 'bg-dark', className);\n return (\n <Container>\n <Row>\n <Col>\n <div className={classes} data-testid={testId}>\n {children}\n </div>\n </Col>\n </Row>\n </Container>\n );\n};\n","import React, { FC } from 'react';\nimport classname from 'classnames';\nimport { Button, ButtonProps } from '../Button/Button';\n\nexport interface HeroButtonProps extends ButtonProps {\n wrapperClassName?: string;\n testId?: string;\n}\n\nexport const HeroButton: FC<HeroButtonProps> = ({ wrapperClassName, testId, ...attributes }) => {\n const classes = classname('it-btn-container', wrapperClassName);\n return (\n <div className={classes} data-testid={testId}>\n <Button size='sm' {...attributes} />\n </div>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classname from 'classnames';\n\nexport interface HeroCategoryProps extends HTMLAttributes<HTMLSpanElement> {\n /** Eventuali classi aggiuntive per la categoria */\n className?: string;\n testId?: string;\n}\n\nexport const HeroCategory: FC<HeroCategoryProps> = ({ className, testId, ...attributes }) => {\n const classes = classname('it-category', className);\n return <span {...attributes} className={classes} data-testid={testId} />;\n};\n","import React, { ElementType, FC, HTMLAttributes } from 'react';\nimport classname from 'classnames';\n\nexport interface HeroTitleProps extends HTMLAttributes<HTMLSpanElement> {\n /** Indica il tag da utilizzare per il titolo */\n tag?: ElementType;\n testId?: string;\n}\n\nexport const HeroTitle: FC<HeroTitleProps> = ({ tag: Tag = 'h1', className, testId, ...attributes }) => {\n const classes = classname(className);\n return <Tag {...attributes} className={classes} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType, ReactNode } from 'react';\nimport classNames from 'classnames';\n\nexport interface LinkListProps extends HTMLAttributes<HTMLUListElement> {\n /** Da utilizzare in caso di titolo principale della lista. Passare una componente React da mostrare come titolo */\n header?: ReactNode;\n /** Classi aggiuntive da usare per il componente lista del LinkList */\n className?: string;\n /** Classi aggiuntive da usare per il componente wrapper del LinkList */\n wrapperClassName?: string;\n /**\n * Utilizzarlo in caso di utilizzo di componenti personalizzati per il wrapper della lista.\n * Nota: viene ignorato quando usato in lista annidate.\n * */\n tag?: ElementType;\n /** Quando abilitato gestisce una lista in cui ciascun elemento è composto da più componenti/elementi. */\n multiline?: boolean;\n /** Da utilizzare per una lista annidata */\n sublist?: boolean;\n /** Da utilizzare per una lista di avatar */\n avatar?: boolean;\n /** Quando attivo rimuove il componente contenitore della ListList. Utile per alcuni tipi di liste annidate. */\n noWrapper?: boolean;\n testId?: string;\n}\n\nexport const LinkList: FC<LinkListProps> = ({\n className,\n wrapperClassName,\n tag = 'div',\n multiline,\n header,\n sublist,\n avatar,\n noWrapper,\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const wrapperClasses = classNames('link-list-wrapper', wrapperClassName, {\n multiline: multiline\n });\n const classes = classNames(className, {\n 'link-list': !sublist,\n 'link-sublist': sublist,\n 'avatar-group': avatar\n });\n\n if (noWrapper) {\n return <ul {...attributes} className={classes} data-testid={testId} />;\n }\n\n if (sublist) {\n return (\n <>\n {header}\n <ul {...attributes} className={classes} />\n </>\n );\n }\n return (\n <Tag className={wrapperClasses} data-testid={testId}>\n {header}\n <ul {...attributes} className={classes} />\n </Tag>\n );\n};\n","import React, { FC } from 'react';\nimport { Col, ColProps, Row } from 'reactstrap';\nimport classNames from 'classnames';\n\nexport interface MegamenuHCProps extends ColProps {\n /** Quanto abilitato gestisce il contenuto della colonna come una sezione che può contentere immagini, testo, ect. */\n description?: boolean;\n /** Classi aggiuntive da usare per il componente Megamenu Highlight Column */\n className?: string;\n}\nexport const MegamenuHighlightColumn: FC<MegamenuHCProps> = ({ description, className, children, ...attributes }) => {\n const classes = classNames(className, 'it-vertical', {\n 'it-description': description\n });\n return (\n <Col {...attributes}>\n <Row className='max-height-col'>\n <Col className={classes}>\n {description ? <div className='description-content'>{children}</div> : <>{children}</>}\n </Col>\n </Row>\n </Col>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport { Dropdown } from '../Dropdown/Dropdown';\nimport { DropdownMenu } from '../Dropdown/DropdownMenu';\nimport { DropdownToggle } from '../Dropdown/DropdownToggle';\nimport classNames from 'classnames';\n\nexport interface MegamenuItemProps extends HTMLAttributes<HTMLUListElement> {\n /** Etichetta del megamenu visibile all'interno della barra di navigazione */\n itemName: string;\n /** Classi aggiuntive da usare per il componente Dropdown */\n className?: string;\n}\n\nexport const MegamenuItem: FC<MegamenuItemProps> = ({ itemName, className, children, ...attributes }) => {\n const classes = classNames(className, 'megamenu');\n const toggleClasses = classNames('px-lg-2', 'px-xl-3');\n\n return (\n <Dropdown tag='li' className={classes} {...attributes} inNavbar>\n <DropdownToggle caret className={toggleClasses} inNavbar>\n <span>{itemName}</span>\n </DropdownToggle>\n <DropdownMenu>\n <div className='megamenu pb-5 pt-3 py-lg-0'>{children}</div>\n </DropdownMenu>\n </Dropdown>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport { FadeProps, Modal as InnerModal } from 'reactstrap';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\nimport classnames from 'classnames';\n\nexport interface ModalProps extends HTMLAttributes<HTMLElement> {\n [key: string]: any;\n /** Indica lo stato del modale. Valore di default: undefined. */\n isOpen?: boolean;\n autoFocus?: boolean;\n size?: string;\n /** Funzione da chiamare quando l'utente clicca sul backdrop. Valore di default: undefined. */\n toggle?: React.KeyboardEventHandler<any> | React.MouseEventHandler<any>;\n keyboard?: boolean;\n backdrop?: boolean | 'static';\n /**\n * Abilitare quando si vuole che solo il contenuto della modale sia scrollabile.\n * Valore di default: undefined.\n * */\n scrollable?: boolean;\n onEnter?: () => void;\n onExit?: () => void;\n onOpened?: () => void;\n onClosed?: () => void;\n cssModule?: CSSModule;\n wrapClassName?: string;\n modalClassName?: string;\n backdropClassName?: string;\n contentClassName?: string;\n zIndex?: number | string;\n fade?: boolean;\n backdropTransition?: FadeProps;\n modalTransition?: FadeProps;\n centered?: boolean;\n external?: React.ReactNode;\n labelledBy?: string;\n unmountOnClose?: boolean;\n returnFocusAfterClose?: boolean;\n container?: string | HTMLElement | React.RefObject<HTMLElement>;\n innerRef?: React.Ref<HTMLElement>;\n /** Abilitare quando si utilizza una icona nell'intestazione, al fine di formattare correttamente il modale. Valore di default: undefined. */\n withIcon?: boolean;\n /** Abilitare quando si utilizza una LinkList nell'intestazione, al fine di formattare correttamente il modale. Valore di default: undefined. */\n withLinkList?: boolean;\n /** Abilitare quando si vuole mostrare un breve messaggio di conferma. Valore di default: undefined. */\n popConfirm?: boolean;\n /** Abilitare quando si vuole mostrare un modale allineato a sinistra. Valore di default: undefined. */\n align?: 'left' | 'right';\n}\n\nexport const Modal: FC<ModalProps> = ({\n withIcon,\n withLinkList,\n popConfirm,\n modalClassName,\n align,\n scrollable,\n className,\n ...props\n}) => {\n const isAligned = align != null && ['left', 'right'].includes(align);\n const modalDialogClassnames = classnames(modalClassName, {\n 'alert-modal': withIcon,\n 'it-dialog-link-list': withLinkList,\n 'popconfirm-modal': popConfirm,\n 'it-dialog-scrollable': scrollable && isAligned\n });\n const modalClassnames = classnames(className, {\n 'modal-dialog-left': align === 'left',\n 'modal-dialog-right': align === 'right'\n });\n return (\n <InnerModal\n {...props}\n scrollable={!isAligned && scrollable}\n className={modalClassnames}\n modalClassName={modalDialogClassnames}\n />\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport { ModalBody as InnerModalBody } from 'reactstrap';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\n\nexport interface ModalBodyProps extends HTMLAttributes<HTMLElement> {\n tag?: React.ElementType;\n cssModule?: CSSModule;\n}\n\nexport const ModalBody: FC<ModalBodyProps> = (props) => <InnerModalBody {...props} />;\n","import React, { FC, HTMLAttributes } from 'react';\nimport { ModalFooter as InnerModalFooter } from 'reactstrap';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\n\nexport interface ModalFooterProps extends HTMLAttributes<HTMLElement> {\n tag?: React.ElementType;\n cssModule?: CSSModule;\n}\n\nexport const ModalFooter: FC<ModalFooterProps> = (props) => <InnerModalFooter {...props} />;\n","import React, { FC, HTMLAttributes } from 'react';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\nimport classNames from 'classnames';\nimport { Icon } from '../Icon/Icon';\nimport { mapToCssModules } from '../utils';\n\nexport interface ModalHeaderProps extends HTMLAttributes<HTMLElement> {\n [key: string]: any;\n cssModule?: CSSModule;\n /** Componente che conterrà il nodo titolo. Valore di default: h5 */\n tag?: React.ElementType;\n /** Componente che contenitore per l'header. Valore di default: div. */\n wrapTag?: React.ElementType;\n /** Funzione da passare al tasto di chiusura nell'intestazione. Quando questa funzione non è presente il tasto di chiusura non viene mostrato. Valore di default: undefined */\n toggle?: React.MouseEventHandler<any>;\n /** Indica il nome dell'icona da utilizzare nel titolo. */\n icon?: string;\n /** Classi da aggiungere al nodo contenitore. */\n className?: string;\n /** Utilizzato per personalizzare il messaggio peer screen reader per il bottone di chiusura del modale. Valore di default: 'Close' */\n closeAriaLabel?: string;\n}\n\nexport const ModalHeader: FC<ModalHeaderProps> = ({\n icon,\n className,\n children,\n Util,\n toggle,\n tag: Tag = 'h5',\n wrapTag: WrapTag = 'div',\n closeAriaLabel = 'Close',\n close,\n cssModule,\n ...props\n}) => {\n const classes = mapToCssModules(classNames(className, 'modal-header'), cssModule);\n\n let CloseButton;\n\n if (!close && toggle) {\n CloseButton = (\n <button\n type='button'\n onClick={toggle}\n className={mapToCssModules('btn-close', cssModule)}\n aria-label={closeAriaLabel}\n ></button>\n );\n }\n\n return (\n <WrapTag {...props} className={classes}>\n {icon != null ? <Icon icon={icon} /> : null}\n <Tag className={mapToCssModules('modal-title', cssModule)}>{children}</Tag>\n {close || CloseButton}\n </WrapTag>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport { Nav as NavBase } from 'reactstrap';\nimport classNames from 'classnames';\n\nexport interface NavProps extends HTMLAttributes<HTMLUListElement> {\n /**\n * Renderizza i componenti NavItem al suo interno come tab.\n */\n tabs?: boolean;\n /**\n * Renderizza i componenti NavItem al suo interno come pills.\n */\n pills?: boolean;\n /**\n * Renderizza i componenti NavItem al suo interno come card.\n */\n card?: boolean;\n /**\n * Se utilizzata all'interno di una navbar, impostarlo su `true`. In caso di Header Nav, impostarlo a `true`.\n */\n navbar?: boolean;\n /** Se abilitato tutti i NavItem all'interno avranno la stessa larghezza */\n justified?: boolean;\n /** Se abilitato i NavItem all'intero occuperanno tutto lo spazio disponibile */\n fill?: boolean;\n /** Da utilizzare per rendere il componente Nav verticale. Viene abilitato automaticamente in versione mobile. Valori possibili sono `true`, `false` o `\"xs\"` */\n vertical?: boolean | 'xs';\n /** Da utilizzare per cambiare l'allineamento all'interno della Nav. Valori possibili sono `\"center\"` o `\"end\"` per posizionare il contenuto a centro o sulla destra. */\n horizontal?: 'center' | 'end';\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Nav */\n className?: string;\n /** Adds ability to incorporate secondary nav items */\n secondary?: boolean;\n}\n\nexport const Nav: FC<NavProps> = ({ className, tag = 'ul', vertical = false, secondary, ...attributes }) => {\n const classes = classNames(className, {\n 'navbar-secondary': secondary\n });\n return <NavBase className={classes} tag={tag} vertical={vertical} {...attributes} />;\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface PagerProps extends HTMLAttributes<HTMLElement> {\n /** Etichetta di descrizione del contenuto del componente Pager */\n 'aria-label': string;\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati per la l'elemento lista interno */\n listTag?: ElementType;\n /** Classi aggiuntive da usare per il componente Pager */\n className?: string;\n /** Classi aggiuntive da usare per il componente di lista interno Pager */\n listClassName?: string;\n /** Utilizzare questo attributo per indicare il numero totale di pagine */\n total?: { ariaLabel: string; label: string };\n testId?: string;\n}\n\nexport const Pager: FC<PagerProps> = ({\n className,\n tag = 'nav',\n listTag: ListTag = 'ul',\n listClassName,\n children,\n total,\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const classes = classNames(className, 'pagination-wrapper', {\n 'pagination-total': total\n });\n const listClasses = classNames(listClassName, 'pagination');\n const { ariaLabel, label } = total || {};\n const totalAriaLabel = ariaLabel ? <span className='visually-hidden'>{ariaLabel}</span> : null;\n return (\n <Tag className={classes} {...attributes} data-testid={testId}>\n <ListTag className={listClasses}>{children}</ListTag>\n {total ? (\n <p>\n {totalAriaLabel}\n {label}\n </p>\n ) : null}\n </Tag>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\nimport isNumber from 'is-number';\nimport { logError } from '../utils';\n\nexport interface ProgressProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /**\n * Classi aggiuntive da usare per il componente contenitore del Progress\n * Per replicare il comportamento precedente, in cui `className` veniva applicato anche al wrapper,\n * passare `true`.\n * */\n wrapperClassName?: string | true;\n /** Classi aggiuntive da usare per il componente interno del Progress */\n className?: string;\n /** Valore corrente (numerico) */\n value?: number | string;\n /** Etichetta con testo per indicare il progresso corrente da mostrare ai dispositivi screen reader */\n label?: string;\n /** Quando non è possibile stabilire una percentuale di progressione utilizzare una Progress Bar di tipo indeterminato */\n indeterminate?: boolean;\n /** Le varianti di colore definite in Bootstrap Italia */\n color?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | string;\n testId?: string;\n}\n\nexport const Progress: FC<ProgressProps> = ({\n wrapperClassName,\n className,\n tag = 'div',\n value,\n label,\n indeterminate = false,\n color,\n testId,\n role = 'progressbar',\n ...attributes\n}) => {\n const Tag = tag;\n if (!isNumber(value) && !indeterminate) {\n logError(`The passed \"value\" is not a valid number. You passed \"${value}\"`);\n }\n const numericValue = Number(value);\n const wrapperClasses = classNames('progress-bar-wrapper');\n const secondaryWrapperClasses = classNames(wrapperClassName === true ? className : wrapperClassName, 'progress', {\n 'progress-indeterminate': indeterminate,\n 'progress-color': color\n });\n const classes = classNames(className, 'progress-bar', {\n [`bg-${color}`]: color\n });\n\n if (label && numericValue) {\n return (\n <Tag className={wrapperClasses} data-testid={testId}>\n <div className='progress-bar-label'>\n <span className='visually-hidden'>{label}</span>\n {numericValue + '%'}\n </div>\n <Tag className={secondaryWrapperClasses}>\n <div\n {...attributes}\n className={classes}\n role='progressbar'\n style={{ width: numericValue + '%' }}\n aria-valuenow={numericValue}\n aria-valuemin={0}\n aria-valuemax={100}\n />\n </Tag>\n </Tag>\n );\n }\n\n return (\n <Tag className={secondaryWrapperClasses} data-testid={testId}>\n <div className='progress-bar-label'>\n <span className='visually-hidden'>{label}</span>\n </div>\n <div\n {...attributes}\n className={classes}\n role='progressbar'\n style={{ width: numericValue + '%' }}\n aria-valuenow={numericValue}\n aria-valuemin={0}\n aria-valuemax={100}\n />\n </Tag>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\n\nexport interface ResponsiveImageProps extends HTMLAttributes<HTMLImageElement> {\n /** Un testo alternativo per descrivere l'immagine mostrata */\n alt: string;\n /** L'URI dell'immagine da mostrare */\n src: string;\n /** Il titolo dell'immagine */\n title?: string;\n testId?: string;\n}\n\nexport const ResponsiveImage: FC<ResponsiveImageProps> = ({ alt, testId, ...attributes }) => {\n return (\n <div className='img-responsive-wrapper' data-testid={testId}>\n <div className='img-responsive'>\n <div className='img-wrapper'>\n <img {...attributes} alt={alt} />\n </div>\n </div>\n </div>\n );\n};\n","import React, { FC, HTMLAttributes, ReactChild } from 'react';\nimport classNames from 'classnames';\nimport { notifyDeprecation } from '../utils';\n\nexport interface SectionProps extends HTMLAttributes<HTMLElement> {\n /**\n * Classi aggiuntive da usare per il contenitore più esterno\n * Per replicare il comportamento precedente, in cui `className` veniva applicato anche al wrapper,\n * passare `true`.\n * */\n wrapperClassName?: string | true;\n /** Classi aggiuntive da usare per il contenitore più interno */\n className?: string;\n /**\n * Colore utilizzato per lo sfondo del componente Section.\n * In caso di `primary` o `neutral` si consiglia di applicare la classe `.white-color` al contenuto per garantire la leggibilità dei testi.\n * */\n color?: 'primary' | 'neutral' | 'muted' | string;\n /**\n * Indicare l'URL dell'immagine da utilizzare come sfondo della sezione.\n */\n image?: string;\n /** Il contenuto della sezione */\n children?: ReactChild | ReactChild[];\n /** Quando abilitato applica lo sfondo di tipo \"neutral\" al componente.\n * @deprecated. Utilizzare `color=\"neutral\"`\n */\n neutral?: boolean;\n /** Quando abilitato applica lo sfondo di tipo \"muted\" al componente.\n * @deprecated. Utilizzare `color=\"muted\"`\n */\n muted?: boolean;\n testId?: string;\n}\n\nexport const Section: FC<SectionProps> = ({\n color,\n image,\n testId,\n wrapperClassName,\n className,\n children,\n neutral,\n muted,\n ...rest\n}) => {\n const classes = classNames('section', wrapperClassName === true ? className : wrapperClassName, {\n [`section-${color}`]: color,\n 'section-image': image\n });\n\n if (neutral || muted) {\n notifyDeprecation(\n `Please use the prop \"color\" instead of the \"${neutral ? 'neutral' : 'muted'}\" for the Section component.`\n );\n }\n\n // have them separated from the classes above or these will conflict with the color prop\n // concatenate them at the end. Worst case a duplicate class will appear\n const deprecatedClasses = classNames({\n 'section-neutral': neutral,\n 'section-muted': muted\n });\n\n const innerClasses = classNames('section-content', className);\n\n const styleClass = {\n backgroundImageClass: image ? { backgroundImage: `url(${image})` } : {}\n };\n\n const finalWrapperClassName = classNames(classes, deprecatedClasses);\n\n return (\n <div className={finalWrapperClassName} style={styleClass.backgroundImageClass} data-testid={testId} {...rest}>\n <div className={innerClasses}>{children}</div>\n </div>\n );\n};\n","import React, { ChangeEvent, ReactElement, SelectHTMLAttributes } from 'react';\n\nexport interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, 'onChange'> {\n /**\n * Se `true` determina la disabilitazione del campo\n */\n disabled?: boolean;\n /**\n * L'etichetta del campo\n */\n label: string;\n /**\n * La lista di opzioni da visualizzare nella tendina del Select\n */\n children: ReactElement<'option'> | ReactElement<'option'>[];\n /**\n * Gestisce il cambio del valore selezionato\n * @param selectedValue\n * @returns\n */\n onChange: (selectedValue: string) => void;\n}\n\nexport const Select = ({ id, disabled = false, label, children, onChange, ...rest }: SelectProps) => {\n const handleChange = (e: ChangeEvent<HTMLSelectElement>) => {\n onChange(e.target.value);\n };\n\n const inputProps = {\n ...rest,\n disabled: disabled,\n onChange: handleChange\n };\n\n return (\n <div className='select-wrapper'>\n {id ? (\n <>\n <label htmlFor={id}>{label}</label>\n <select id={id} {...inputProps}>\n {children}\n </select>\n </>\n ) : (\n <label>\n {label}\n <select {...inputProps}>{children}</select>\n </label>\n )}\n </div>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface SidebarProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Sidebar */\n className?: string;\n /** Indica se il componente Sideebar corrente è di tipo annidato o no */\n secondary?: boolean;\n /** Quando attivo aggiunge una linea separatrice a sinistra */\n left?: boolean;\n /** Quando attivo aggiunge una linea separatrice a destra */\n right?: boolean;\n /** Quando attivo cambia il tema del componente Sidebar rendendola scura */\n dark?: boolean;\n testId?: string;\n}\n\nexport const Sidebar: FC<SidebarProps> = ({\n className,\n testId,\n tag = 'div',\n secondary = false,\n left = false,\n right = false,\n dark = false,\n ...attributes\n}) => {\n const Tag = tag;\n const wrapperClasses = classNames('sidebar-wrapper', className, {\n 'it-line-left-side': left,\n 'it-line-right-side': right,\n 'theme-dark': dark\n });\n\n const wrapperClassesLinkList = classNames('sidebar-linklist-wrapper', {\n 'linklist-secondary': secondary\n });\n if (secondary) {\n return <Tag {...attributes} className={wrapperClassesLinkList} data-testid={testId} />;\n }\n return (\n <Tag className={wrapperClasses} data-testid={testId}>\n <Tag {...attributes} className={wrapperClassesLinkList} />\n </Tag>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface SkiplinkProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Skiplink */\n className?: string;\n testId?: string;\n}\n\nexport const Skiplink: FC<SkiplinkProps> = ({ className, tag = 'div', testId, ...attributes }) => {\n const Tag = tag;\n const classes = classNames(className, 'skiplinks');\n\n return <Tag className={classes} {...attributes} data-testid={testId} />;\n};\n","import React, { FC, ElementType, AnchorHTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface SkiplinkItemProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Skiplink */\n className?: string;\n /** Abilitare questo attributo per renderizzare lo SkipLinkItem al focus */\n focusable?: boolean;\n testId?: string;\n}\n\nexport const SkiplinkItem: FC<SkiplinkItemProps> = ({\n className,\n tag = 'a',\n focusable = true,\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const classes = classNames(className, {\n 'visually-hidden-focusable': focusable\n });\n\n // Add an extra href for focusable if the user passes an onClick rather than href prop\n const extraHref = attributes.onClick ? { href: '#' } : {};\n\n return <Tag className={classes} {...attributes} {...extraHref} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface SpinnerProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Spinner */\n className?: string;\n /** Utilizzato per indicare lo stato attivo di caricamento (animato) */\n active?: boolean;\n /** Utilizzato per ottenere la versione ridotta del componente Spinner */\n small?: boolean;\n /** Utilizzato per ottenere una animazione alternativa in fase di caricamento */\n double?: boolean;\n /** Etichetta con testo da mostrare ai dispositivi screen reader */\n label?: string;\n testId?: string;\n}\n\nexport const Spinner: FC<SpinnerProps> = ({\n className,\n tag = 'span',\n active = false,\n small = false,\n double = false,\n label = 'Caricamento',\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const wrapperClasses = classNames('progress-spinner', {\n 'progress-spinner-active': active,\n 'size-sm': small,\n 'progress-spinner-double': double\n });\n\n const classes = classNames(className, 'visually-hidden');\n if (double) {\n return (\n <Tag className={wrapperClasses} data-testid={testId}>\n <div className='progress-spinner-inner' />\n <div className='progress-spinner-inner' />\n <Tag {...attributes} className={classes}>\n {label}\n </Tag>\n </Tag>\n );\n }\n\n return (\n <Tag className={wrapperClasses} data-testid={testId}>\n <Tag {...attributes} className={classes}>\n {label}\n </Tag>\n </Tag>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface StepperContainerProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Badge */\n className?: string;\n /** Abilita il tema scuro per il componente Stepper */\n dark?: boolean;\n /** Abilita la navigazione per mobile */\n mobile?: boolean;\n testId?: string;\n}\n\nexport const StepperContainer: FC<StepperContainerProps> = ({\n tag = 'div',\n mobile,\n dark,\n testId,\n className,\n ...attributes\n}) => {\n const Tag = tag;\n const wrapperClass = classNames('steppers', className, { 'bg-dark': dark }, { 'mobile-examples': mobile });\n return <Tag {...attributes} className={wrapperClass} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface StepperDotsProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Badge */\n className?: string;\n /** Abilita il tema scuro per il componente StepperDots */\n dark?: boolean;\n testId?: string;\n}\n\nexport const StepperDots: FC<StepperDotsProps> = ({ tag = 'ul', className, testId, ...attributes }) => {\n const Tag = tag;\n const wrapperClass = classNames('steppers-dots', className);\n return <Tag {...attributes} className={wrapperClass} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface StepperHeaderProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente StepperHeader */\n className?: string;\n testId?: string;\n}\n\nexport const StepperHeader: FC<StepperHeaderProps> = ({ tag = 'div', testId, className, children, ...attributes }) => {\n const Tag = tag;\n const wrapperClass = classNames('steppers-header', className);\n // @ts-ignore not recognize children's props\n const isMobile = children?.props?.variant === 'mobile';\n\n return (\n <Tag {...attributes} className={wrapperClass} data-testid={testId}>\n {isMobile ? <span>{children}</span> : <ul>{children}</ul>}\n </Tag>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface StepperNavProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Badge */\n className?: string;\n testId?: string;\n}\n\nexport const StepperNav: FC<StepperNavProps> = ({ tag = 'nav', testId, className, ...attributes }) => {\n const Tag = tag;\n const wrapperClass = classNames('steppers-nav', className);\n return <Tag {...attributes} className={wrapperClass} data-testid={testId} />;\n};\n","import React, { Ref, ReactNode, TextareaHTMLAttributes } from 'react';\n\nimport { InputContainer } from './InputContainer';\nimport { getClasses, getValidationTextControlClass, useFocus } from './utils';\nimport type { CSSModule } from 'reactstrap/types/lib/utils';\n\nexport interface TextAreaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n /** Etichetta del campo TextArea. */\n label?: string | ReactNode;\n /** Testo di esempio da utilizzare per il campo. */\n placeholder?: string;\n /** Testo di validazione per l'elemento del moduleo */\n validationText?: string;\n /** Testo di aiuto per l'elemento del moduleo form. Richiede che il componente `TextArea` abbia la prop `id` impostata. */\n infoText?: string;\n /** Il valore nel campo TextArea. */\n value?: string | number;\n /** Da utilizzare per impedire la modifica del valore contenuto. */\n readOnly?: boolean;\n /** Associato all'attributo readOnly mostra il campo con lo stile classico, mantenento lo stato di sola lettura. */\n normalized?: boolean;\n /** Utilizzare per mostrare il successo nella validazione del valore nel campo TextArea */\n valid?: boolean;\n innerRef?: Ref<HTMLTextAreaElement>;\n /** Oggetto contenente la nuova mappatura per le classi CSS. */\n cssModule?: CSSModule;\n /** Classi aggiuntive da usare per il wrapper del componente TextArea */\n wrapperClassName?: string;\n /** Classi aggiuntive da usare per il componente TextArea */\n className?: string;\n testId?: string;\n}\n\nexport const TextArea = ({\n id,\n className,\n cssModule,\n innerRef,\n label,\n validationText,\n infoText,\n placeholder,\n normalized,\n value,\n wrapperClassName: originalWrapperClass,\n valid,\n testId,\n ...attributes\n}: TextAreaProps) => {\n const { toggleFocusLabel, toggleBlurLabel, isFocused } = useFocus<HTMLTextAreaElement>({\n onFocus: attributes.onFocus,\n onBlur: attributes.onBlur\n });\n\n const validationTextControlClass = getValidationTextControlClass({ valid }, cssModule);\n\n const extraAttributes: { ['aria-describedby']?: string } = {};\n\n // associate the input field with the help text\n const infoId = id ? `${id}Description` : undefined;\n if (id) {\n extraAttributes['aria-describedby'] = infoId;\n }\n\n // Styling\n const { activeClass, extraLabelClass, validationTextClass, inputClasses, wrapperClass } = getClasses(\n className,\n 'textarea',\n {\n valid,\n placeholder,\n value,\n label,\n validationText,\n normalized: Boolean(normalized),\n validationTextControlClass,\n isFocused,\n originalWrapperClass\n },\n cssModule\n );\n\n // set of attributes always shared by the Input components\n const sharedAttributes = {\n id,\n onFocus: toggleFocusLabel,\n onBlur: toggleBlurLabel,\n value,\n ref: innerRef\n };\n\n // set of attributes always shared by the wrapper component\n const containerProps = {\n id,\n infoId,\n infoText,\n activeClass,\n extraLabelClass,\n label,\n validationTextClass,\n validationText,\n wrapperClass\n };\n\n if (placeholder) {\n return (\n <InputContainer {...containerProps}>\n <textarea\n {...attributes}\n {...extraAttributes}\n {...sharedAttributes}\n className={inputClasses}\n placeholder={placeholder}\n data-testid={testId}\n />\n </InputContainer>\n );\n }\n\n if (normalized) {\n return (\n <InputContainer {...containerProps}>\n <textarea\n {...attributes}\n {...extraAttributes}\n {...sharedAttributes}\n className={inputClasses}\n readOnly\n data-testid={testId}\n />\n </InputContainer>\n );\n }\n if (label || validationText) {\n return (\n <InputContainer {...containerProps}>\n <textarea\n {...attributes}\n {...extraAttributes}\n {...sharedAttributes}\n className={inputClasses}\n data-testid={testId}\n />\n </InputContainer>\n );\n }\n\n return (\n <textarea\n {...attributes}\n {...extraAttributes}\n className={inputClasses}\n {...sharedAttributes}\n ref={innerRef}\n data-testid={testId}\n />\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface ThumbNavProps extends HTMLAttributes<HTMLUListElement> {\n fixedWidth?: boolean;\n isSmall?: boolean;\n isVertical?: boolean;\n noZoomOnHover?: boolean;\n overlayOnHover?: 'black' | 'primary';\n position?: 'top' | 'right' | 'bottom' | 'left';\n rowItems?: 2 | 3 | 4 | 5;\n testId?: string;\n}\n\nexport const ThumbNav: FC<ThumbNavProps> = ({\n isSmall = false,\n fixedWidth = false,\n isVertical = false,\n noZoomOnHover = false,\n rowItems,\n overlayOnHover,\n position,\n testId,\n ...attributes\n}) => {\n const classes = classNames('thumb-nav', {\n 'thumb-nav-fixed': fixedWidth,\n 'thumb-nav-small': isSmall,\n 'thumb-nav-vertical': isVertical || position === 'left' || position === 'right',\n 'thumb-nav-nozoom': noZoomOnHover,\n [`thumb-nav-${overlayOnHover}`]: overlayOnHover,\n [`thumb-nav-${position}`]: position,\n 'thumb-nav-auto': rowItems != null,\n [`thumb-nav-auto-${rowItems}`]: rowItems != null\n });\n\n return <ul className={classes} {...attributes} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface ThumbNavItemProps extends HTMLAttributes<HTMLLIElement> {\n active?: boolean;\n targetUrl?: string;\n imageUrl: string;\n actionDescription?: string;\n testId?: string;\n}\n\nexport const ThumbNavItem: FC<ThumbNavItemProps> = ({\n active = false,\n targetUrl,\n imageUrl,\n actionDescription,\n testId,\n ...attributes\n}) => {\n const classes = classNames({ active: active }, 'ratio', 'ratio-3x2');\n\n return (\n <li {...attributes} data-testid={testId}>\n <img src={'https://picsum.photos/240/160?image=1056'} className='thumb-nav-resizer' aria-hidden='true' alt='' />\n <a href={targetUrl} className={classes}>\n <img src={imageUrl} alt={actionDescription} />\n </a>\n </li>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classnames from 'classnames';\n\nexport interface TimelineProps extends HTMLAttributes<HTMLElement> {\n /** Classi aggiuntive da usare per il componente TimelineProps */\n className?: string;\n testId?: string;\n}\n\nexport const Timeline: FC<TimelineProps> = (props) => {\n const { className, testId, ...attributes } = props;\n const { children, ...rest } = attributes;\n const timelineWrapper = classnames(className, 'it-timeline-wrapper');\n\n return (\n <div className={timelineWrapper} {...rest} data-testid={testId}>\n {children}\n </div>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nimport { Icon } from '../Icon/Icon';\n\nexport interface TimelinePinProps extends HTMLAttributes<HTMLElement> {\n /** Classi aggiuntive da usare per il componente TimelinePin */\n className?: string;\n /** Mostra un'icona all'interno del TimelinePin. Passare il nome dell'icona per utilizzarlo. */\n iconName?: string;\n /**\n * Mostra un'icona all'interno del TimelinePin. Passare il nome dell'icona per utilizzarlo.\n * @deprecated. Utilizzare `iconName`.\n * */\n icon?: string;\n /** Etichetta da associare all'elemento */\n label: string;\n /** Quando abilitato indica che l'evento TimelinePin è collocato nel presente (azzurro) */\n now?: boolean;\n /** Da utilizzare per mostrare un'etichetta per l'evento nel presente */\n nowText?: string;\n /** Quando abilitato indica che l'evento TimelinePin è collocato nel passato (blu scuro) */\n past?: boolean;\n testId?: string;\n}\n\nexport const TimelinePin: FC<TimelinePinProps> = ({\n iconName = 'it-code-circle',\n icon = 'it-code-circle',\n label = ' ',\n past,\n now,\n nowText,\n testId,\n className,\n ...attributes\n}) => {\n const { children, ...rest } = attributes;\n const classes = classNames('timeline-element', className);\n const innerClasses = classNames('it-pin-wrapper', className, {\n 'it-evidence': past,\n 'it-now': now\n });\n const pinIcon = (\n <div className='pin-icon'>\n <Icon icon={iconName || icon} />\n </div>\n );\n const pinLabel = (\n <div className='pin-text'>\n <span>{label}</span>\n </div>\n );\n\n const pinTextNow = now && <span className='it-now-label d-none d-lg-flex'>{nowText}</span>;\n\n return (\n <div className={classes} data-testid={testId}>\n {pinTextNow}\n <div className={innerClasses} {...rest}>\n {pinIcon}\n {pinLabel}\n </div>\n {children}\n </div>\n );\n};\n","import React, { ElementType, FC, ReactNode } from 'react';\n\nimport { Label, Input } from 'reactstrap';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\nimport { InputProps } from '../Input/Input';\n\nexport interface ToggleProps extends InputProps {\n /** Label da mostrare per il componente */\n label: string | ReactNode;\n /** Dimensioni ammissibili per il componente */\n bsSize?: 'lg' | 'sm';\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Da utilizzare per impostare un riferimento all'elemento DOM */\n innerRef?: React.Ref<HTMLInputElement>;\n /** Oggetto contenente la nuova mappatura per le classi CSS. */\n cssModule?: CSSModule;\n testId?: string;\n}\n\nexport const Toggle: FC<ToggleProps> = ({ label, testId, ...rest }) => {\n return (\n <div className='toggles' data-testid={testId}>\n <Label check>\n {label}\n <Input {...rest} type='checkbox' />\n <span className='lever' />\n </Label>\n </div>\n );\n};\n","import React from 'react';\n\nexport const ToolbarDividerItem = () => <li className='toolbar-divider' aria-hidden={true} />;\n","/*\n * This work derives from the React Use Navscroll library\n * Released under the MIT license by Marco Liberati\n * Code: https://github.com/dej611/react-use-navscroll\n */\n\n/* eslint-disable no-restricted-globals */\nimport { useCallback, useEffect, useState } from 'react';\nimport { debounce } from './debounce';\nimport { useNavScrollArgs } from './types';\n\nconst DEFAULT_DELAY = 150;\n\nexport type useSizeDetectorArgs = Omit<useNavScrollArgs, 'offset'> & {\n activeId: string | null;\n hasWindow: boolean;\n setForceRecompute: (force: boolean) => void;\n updateActiveId: (id: string | null) => void;\n};\n\nexport const useSizeDetector = ({\n root,\n isHorizontal,\n activeId,\n onChange,\n setForceRecompute,\n updateActiveId,\n hasWindow\n}: useSizeDetectorArgs) => {\n const [targetSize, setTargetSize] = useState<number>(1);\n\n const useViewport =\n root == null ||\n (hasWindow && (isHorizontal ? window.innerWidth < root.clientWidth : window.innerHeight < root.clientHeight));\n\n const scrollEnd = useCallback(\n debounce(() => {\n setForceRecompute(true);\n }, DEFAULT_DELAY),\n [setForceRecompute]\n );\n\n useEffect(() => {\n if (!hasWindow) {\n return;\n }\n let observer: IntersectionObserver | null = null;\n\n const resizeWindowHandler = () => {\n setTimeout(() => {\n setTargetSize(isHorizontal ? window.innerWidth : window.innerHeight);\n }, DEFAULT_DELAY);\n };\n\n const resizeElementHandler: IntersectionObserverCallback = (entries) => {\n const [entry] = entries;\n if (!useViewport) {\n setTargetSize(isHorizontal ? entry.boundingClientRect.width : entry.boundingClientRect.height);\n }\n\n if (entry.intersectionRatio === 0) {\n if (activeId != null) {\n updateActiveId(null);\n if (onChange) {\n onChange({\n added: null,\n removed: activeId\n });\n }\n }\n }\n };\n\n addEventListener('scroll', scrollEnd);\n if (useViewport) {\n setTargetSize(isHorizontal ? window.innerWidth : window.innerHeight);\n addEventListener('resize', resizeWindowHandler);\n }\n if (root) {\n observer = new IntersectionObserver(resizeElementHandler);\n observer.observe(root);\n }\n return () => {\n if (observer) {\n observer.disconnect();\n }\n removeEventListener('resize', resizeWindowHandler);\n removeEventListener('scroll', scrollEnd);\n };\n }, [root, isHorizontal, activeId, onChange, useViewport, scrollEnd, hasWindow, updateActiveId]);\n return { targetSize, useViewport };\n};\n"],"names":["noop","logError","message","console","error","log","messages","notifyDeprecation","options","once","mapToCssModules","className","cssModules","finalClassNames","split","map","klass","join","TransitionsKeys","transitionStatusToClassHash","entering","entered","exiting","exited","getHeight","node","scrollHeight","Alert","testId","props","React","InnerAlert","defaultProps","color","isOpen","fade","iconList","it-android-square","it-android","it-apple-square","it-apple","it-arrow-down-circle","it-arrow-down-triangle","it-arrow-down","it-arrow-left-circle","it-arrow-left-triangle","it-arrow-left","it-arrow-right-circle","it-arrow-right-triangle","it-arrow-right","it-arrow-up-circle","it-arrow-up-triangle","it-arrow-up","it-ban","it-behance","it-bookmark","it-box","it-burger","it-calendar","it-camera","it-card","it-chart-line","it-check-circle","it-check","it-chevron-left","it-chevron-right","it-clip","it-clock","it-close-big","it-close-circle","it-close","it-code-circle","it-collapse","it-comment","it-copy","it-delete","it-designers-italia","it-download","it-error","it-exchange-circle","it-expand","it-external-link","it-facebook-square","it-facebook","it-figma-square","it-figma","it-file-audio","it-file-compressed","it-file-csv","it-file-json","it-file-odp","it-file-ods","it-file-odt","it-file-pdf-ext","it-file-pdf","it-file-ppt","it-file-sheet","it-file-slides","it-file-txt","it-file-video","it-file-xml","it-file","it-files","it-flag","it-flickr-square","it-flickr","it-folder","it-fullscreen","it-funnel","it-github","it-google","it-hearing","it-help-circle","it-help","it-horn","it-inbox","it-info-circle","it-instagram","it-key","it-less-circle","it-link","it-linkedin-square","it-linkedin","it-list","it-lock","it-locked","it-logout","it-mail-open","it-mail","it-map-marker-circle","it-map-marker-minus","it-map-marker-plus","it-map-marker","it-mastodon-square","it-mastodon","it-maximize-alt","it-maximize","it-medium-square","it-medium","it-minimize","it-minus-circle","it-minus","it-moodle-square","it-moodle","it-more-actions","it-more-items","it-note","it-open-source","it-pa","it-password-invisible","it-password-visible","it-pencil","it-piattaforme","it-pin","it-pinterest-square","it-pinterest","it-plug","it-plus-circle","it-plus","it-presentation","it-print","it-quora-square","it-quora","it-reddit-square","it-reddit","it-refresh","it-restore","it-rss-square","it-rss","it-search","it-settings","it-share","it-slack-square","it-slack","it-snapchat-square","it-snapchat","it-software","it-stackexchange-square","it-stackexchange","it-stackoverflow-square","it-stackoverflow","it-star-full","it-star-outline","it-team-digitale","it-telegram","it-telephone","it-tiktok-square","it-tiktok","it-tool","it-threads-square","it-threads","it-twitter-square","it-twitter","it-unlocked","it-upload","it-user","it-video","it-vimeo-square","it-vimeo","it-warning-circle","it-warning","it-whatsapp-square","it-whatsapp","it-wifi","it-youtube","it-zoom-in","it-zoom-out","loadIcon","name","Error","isBundledIcon","EmptyIcon","title","titleId","xmlns","viewBox","id","fill","d","iconsList","Object","keys","iconsCache","Icon","size","icon","padding","onIconLoad","attributes","IconComponent","setCurrentIcon","useState","classes","classNames","[object Object]","icon-padded","useEffect","then","component","role","src","alt","Button","tag","btn-icon","ariaAttributes","disabled","aria-disabled","ButtonBase","backToTop","window","scrollTo","top","behavior","Dropdown","children","inNavbar","textCenter","dropdown","text-center","nav-item","undefined","DropdownMenu","dropdown-menu","DropdownToggle","caret","toggleRef","useRef","Tag","current","btn-dropdown","dropdown-toggle","nav-link","iconClasses","icon-expand","icon-sm","icon-xs","ms-1","icon-light","valueOf","ref","defaultFonts","useFontLoader","fonts","require","load","custom","families","goBack","history","back","SLIM","HeaderContext","createContext","useHeaderContext","type","useContext","InputContainer","infoId","infoText","activeClass","extraLabelClass","label","validationTextClass","validationText","wrapperClass","htmlFor","getValidationTextControlClass","valid","cssModule","form-text","form-feedback just-validate-error-label","getClasses","isFocused","bsSize","placeholder","value","normalized","inputPassword","formControlClass","validationTextControlClass","originalWrapperClass","hasPlainCondition","baseCondition","passwordOnlyCondition","normalizedOnlyCondition","is-invalid","just-validate-success-field","valid-feedback","invalid-feedback form-feedback just-validate-error-label","inputClasses","form-control-plaintext","form-control","input-password","focus--mouse","active","includes","input-number-label","useFocus","onFocus","onBlur","setFocus","toggleFocusLabel","useCallback","e","toggleBlurLabel","target","Input","addon","addonText","static","staticInput","plaintext","innerRef","incrementLabel","decrementLabel","originalWrapperClassOld","wrapperClassName","noWrapper","isHidden","setHidden","hasIcon","toggleIcon","toggleShow","divResizeRef","inputRef","width","setWidth","classList","contains","length","rest","indexOf","getTag","getFormControlClassInternal","getFormControlClass","extraAttributes","isNumber","indeterminateCheckboxInput","Boolean","sharedAttributes","containerProps","clickIncrDecr","mode","step","parseFloat","_inputRef$current","min","_inputRef$current2","max","_inputRef$current3","isNaN","newValue","_inputRef$current4","nativeInputValueSetter","_Object$getOwnPropert","getOwnPropertyDescriptor","HTMLInputElement","prototype","set","call","ev2","Event","bubbles","_inputRef$current5","dispatchEvent","input-group","input-number","input-number-percentage","input-number-currency","input-number-adaptive","style","onClick","indeterminate","readOnly","handleDisabledOnClick","preventDefault","LinkListItem","header","divider","bold","large","href","inDropdown","medium","dropdown-item","handlers","TitleIconWrapper","LinkListTitleIconWrapper","MegamenuFooter","vertical","Item","debounce","callback","wait","timeoutId","args","clearTimeout","setTimeout","apply","hasWindow","PositionContext","getBorderStyleFix","fix","borderReset","filter","curPosition","borderPosition","toUpperCase","substring","customStyle","borderPos","NotificationElement","closeToast","toastProps","body","globalFix","userIcon","state","localFix","dismissable","fixPosition","autoClose","content","pickIcon","borderFixes","with-icon","display","createNotification","dummyTransition","cssTransition","enter","exit","Notification","toastRef","eventHandlers","useToast","transition","toastId","deleteToast","isIn","timer","Number","KitTransition","appendPosition","notify","bodyOrOptions","isReactChild","safeOptions","NotificationContent","internalOptions","duration","toast","el","dismiss","isCustomLegendObject","legend","contentStyleLight","height","border","background","justifyContent","alignItems","contentStyleDark","borderColor","opacity","variants","confirmed","done","mobile","steppers-index","SizeContext","ToolbarItemLabel","badge","showSrText","Accordion","iconLeft","accordion-background-active","accordion-background-hover","accordion-left-icon","AccordionBody","listClassName","timeout","setHeight","onEntering","isAppearing","_attributes$onEnterin","onEntered","_attributes$onEntered","onExit","_attributes$onExit","onExiting","_attributes$onExiting","onExited","_attributes$onExited","transitionProps","obj","keysArray","Array","isArray","newObj","key","pick","childProps","keysLookup","Set","has","omit","Transition","in","status","transitionClass","getTransitionClass","listClasses","AccordionHeader","append","onToggle","toggleClasses","collapsed","AccordionItem","AvatarContainer","wrapperClasses","AvatarExtraText","AvatarGroupContainer","AvatarIcon","typeClass","AvatarPresence","presence","AvatarStatus","AvatarWrapper","extra","BackToTop","dark","small","shadow","showOffset","showBtn","setShowBtn","useLayoutEffect","addEventListener","scrollY","tabIndex","Badge","pill","BadgeReact","BottomNav","BottomNavItem","alert","url","to","srText","iconName","onLinkClick","link","badgeWrapper","alertWrapper","Breadcrumb","aria-label","BreadcrumbBase","Callout","highlight","detailed","callout-highlight","callout-more","CalloutMoreFooter","fileUrl","setOpen","fontFamily","fontSize","CalloutText","bigText","callout-big-text","CalloutTitle","Card","teaser","spacing","card-space","card-teaser-wrapper","cardClasses","card-teaser","CardBase","CardBody","InnerCardBody","CardCategory","date","category-top","categoryicon-top","categoryLink","categoryDate","categoryText","categoryIcon","CardFooterCTA","CardReadMore","text","CardSignature","CardTag","CardTagsHeader","InnerCardText","InnerCardTitle","Chip","simple","chip-simple","chip-lg","chip-disabled","ChipLabel","Collapse","navbar","megamenu","onOverlayClick","newCssModule","navbar-collapse","expanded","CollapseBase","link-list-wrapper","Dimmer","innerClasses","dimmerIcon","DimmerButtons","single","bg-dark","single-button","Forward","scrollToRef","_scrollToRef$current","scrollIntoView","block","GoBack","up","GridItem","classname","GridItemText","GridItemTextWrapper","GridList","GridRow","Header","theme","it-small-header","theme-dark-mobile","theme-light-desk","Provider","HeaderBrand","iconAlt","responsive","defaultAttributes","d-none","NavbarBrand","Children","child","i","d-none d-md-block","cloneElement","HeaderContent","it-header-slim-wrapper-content","it-header-center-content-wrapper","has-megamenu","Content","Navbar","Container","Row","Col","HeaderLinkZone","HeaderRightZone","it-header-slim-right-zone","header-slim-right-zone","it-right-zone","HeaderSearch","HeaderSocialsZone","HeaderToggler","HeaderType","defaultTag","defaultType","it-opener d-lg-none","custom-navbar-toggler","document","querySelectorAll","forEach","element","remove","NavbarToggler","Headers","sticky","it-shadow","it-header-sticky","StickyProvider","Sticky","position","zIndex","Hero","centered","overlay","overlap","it-overlay","it-hero-small-size","it-text-centered","it-bottom-overlapping-content","HeroBackground","HeroBody","HeroButton","HeroCategory","HeroTitle","LinkList","multiline","sublist","avatar","link-list","link-sublist","avatar-group","MegamenuHighlightColumn","description","it-description","MegamenuItem","itemName","Modal","withIcon","withLinkList","popConfirm","modalClassName","align","scrollable","isAligned","modalDialogClassnames","classnames","alert-modal","it-dialog-link-list","popconfirm-modal","it-dialog-scrollable","modalClassnames","modal-dialog-left","modal-dialog-right","InnerModal","InnerModalBody","InnerModalFooter","ModalHeader","toggle","wrapTag","WrapTag","closeAriaLabel","close","CloseButton","Nav","secondary","navbar-secondary","NavBase","hookProps","closeOnClick","hideProgressBar","rtl","pauseOnHover","pauseOnFocusLoss","newestOnTop","draggable","enableMultiContainer","containerId","getToastToRender","containerRef","isToastActive","useToastContainer","_","toastList","Pager","listTag","ListTag","total","pagination-total","ariaLabel","totalAriaLabel","Progress","numericValue","secondaryWrapperClasses","progress-indeterminate","progress-color","Rating","inputs","labelTemplate","onChangeRating","safeInputs","reverse","labelFn","onChange","rating rating-read-only","rating rating-label","fieldClasses","extraFieldAttrs","aria-hidden","isLegendString","legendClass","legendText","visually-hidden","srOnly","legendContent","FormGroup","form-group","currentValue","Fragment","String","checked","Label","for","ResponsiveImage","Section","image","neutral","muted","section-image","deprecatedClasses","section-neutral","section-muted","styleClass","backgroundImageClass","backgroundImage","finalWrapperClassName","Select","inputProps","Sidebar","left","right","it-line-left-side","it-line-right-side","theme-dark","wrapperClassesLinkList","linklist-secondary","Skiplink","SkiplinkItem","focusable","visually-hidden-focusable","Spinner","double","progress-spinner-active","size-sm","progress-spinner-double","StepperContainer","mobile-examples","StepperContent","StepperDots","StepperHeader","isMobile","_children$props","variant","StepperHeaderElement","appendIcon","prependIcon","noLine","stepperNumber","no-line","iconClass","spanClass","iconToAppend","iconToPrepend","StepperNav","TextArea","ThumbNav","isSmall","fixedWidth","isVertical","noZoomOnHover","rowItems","overlayOnHover","thumb-nav-fixed","thumb-nav-small","thumb-nav-vertical","thumb-nav-nozoom","thumb-nav-auto","ThumbNavItem","targetUrl","imageUrl","actionDescription","timelineWrapper","TimelinePin","past","now","nowText","it-evidence","it-now","pinIcon","pinLabel","Toggle","check","Toolbar","toolbar-vertical","ToolbarDividerItem","ToolbarItem","dropdownProps","showMore","isDropdownOpen","badgeObject","toolbarItemContent","toolbar-more","deletedItems","icons","Promise","all","preloadedIcons","root","offset","isHorizontal","els","counter","setCounter","forceRecompute","setForceRecompute","activeId","updateActiveId","targetSize","useViewport","useSizeDetector","setTargetSize","innerWidth","clientWidth","innerHeight","clientHeight","scrollEnd","observer","resizeWindowHandler","IntersectionObserver","entries","entry","boundingClientRect","intersectionRatio","added","removed","observe","disconnect","removeEventListener","observerMargin","Math","floor","observerOptions","useMemo","topMargin","bottomMargin","rootMargin","elsLookup","lookup","parent","activeIds","newActiveIds","lastId","push","resolveHierarchyIds","activeLookups","handleIntersection","intersectionId","topMin","Infinity","isIntersecting","takeRecords","refresh","register","alreadyRegistered","find","existingId","createRef","unregister","idToUnregister","isActive","getActiveRef"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/utils.tsx","../../src/transitions.ts","../../src/Accordion/AccordionBody.tsx","../../src/Alert/Alert.tsx","../../src/Icon/assets/index.ts","../../src/Icon/EmptyIcon.tsx","../../src/Icon/Icon.tsx","../../src/Button/Button.tsx","../../src/BackToTop/BackToTop.tsx","../../src/Dropdown/Dropdown.tsx","../../src/Dropdown/DropdownMenu.tsx","../../src/Dropdown/DropdownToggle.tsx","../../src/FontLoader/FontLoader.tsx","../../src/GoBack/GoBack.tsx","../../src/Header/HeaderContext.tsx","../../src/Input/InputContainer.tsx","../../src/Input/utils.tsx","../../src/Input/Input.tsx","../../src/LinkList/LinkListItem.tsx","../../src/Megamenu/MegamenuFooter.tsx","../../src/NavScroll/useSizeDetector.ts","../../src/NavScroll/debounce.ts","../../src/NavScroll/useNavScroll.ts","../../src/Notification/usePosition.tsx","../../src/Notification/NotificationContent.tsx","../../src/Notification/Notification.tsx","../../src/Notification/NotificationManager.tsx","../../src/Notification/core.tsx","../../src/Rating/Rating.tsx","../../src/Stepper/StepperContent.tsx","../../src/Stepper/StepperHeaderElement.tsx","../../src/Toolbar/Toolbar.tsx","../../src/Toolbar/ToolbarItem.tsx","../../src/Accordion/Accordion.tsx","../../src/Accordion/AccordionHeader.tsx","../../src/Accordion/AccordionItem.tsx","../../src/Avatar/AvatarContainer.tsx","../../src/Avatar/AvatarExtraText.tsx","../../src/Avatar/AvatarGroupContainer.tsx","../../src/Avatar/AvatarIcon.tsx","../../src/Avatar/AvatarPresence.tsx","../../src/Avatar/AvatarStatus.tsx","../../src/Avatar/AvatarWrapper.tsx","../../src/Badge/Badge.tsx","../../src/BottomNav/BottomNav.tsx","../../src/BottomNav/BottomNavItem.tsx","../../src/Breadcrumb/Breadcrumb.tsx","../../src/Callout/Callout.tsx","../../src/Callout/CalloutMoreFooter.tsx","../../src/Callout/CalloutText.tsx","../../src/Callout/CalloutTitle.tsx","../../src/Card/Card.tsx","../../src/Card/CardBody.tsx","../../src/Card/CardCategory.tsx","../../src/Card/CardFooterCTA.tsx","../../src/Card/CardReadMore.tsx","../../src/Card/CardSignature.tsx","../../src/Card/CardTag.tsx","../../src/Card/CardTagsHeader.tsx","../../src/Card/CardText.tsx","../../src/Card/CardTitle.tsx","../../src/Chips/Chip.tsx","../../src/Chips/ChipLabel.tsx","../../src/Collapse/Collapse.tsx","../../src/Dimmer/Dimmer.tsx","../../src/Dimmer/DimmerButtons.tsx","../../src/Forward/Forward.tsx","../../src/Grid/GridItem.tsx","../../src/Grid/GridItemText.tsx","../../src/Grid/GridItemTextWrapper.tsx","../../src/Grid/GridList.tsx","../../src/Grid/GridRow.tsx","../../src/Header/Header.tsx","../../src/Header/HeaderBrand.tsx","../../src/Header/HeaderContent.tsx","../../src/Header/HeaderLinkZone.tsx","../../src/Header/HeaderRightZone.tsx","../../src/Header/HeaderSearch.tsx","../../src/Header/HeaderSocialsZone.tsx","../../src/Header/HeaderToggler.tsx","../../src/Header/Headers.tsx","../../src/Hero/Hero.tsx","../../src/Hero/HeroBackground.tsx","../../src/Hero/HeroBody.tsx","../../src/Hero/HeroButton.tsx","../../src/Hero/HeroCategory.tsx","../../src/Hero/HeroTitle.tsx","../../src/LinkList/LinkList.tsx","../../src/Megamenu/MegamenuHighlightColumn.tsx","../../src/Megamenu/MegamenuItem.tsx","../../src/Modal/Modal.tsx","../../src/Modal/ModalBody.tsx","../../src/Modal/ModalFooter.tsx","../../src/Modal/ModalHeader.tsx","../../src/Nav/Nav.tsx","../../src/Pager/Pager.tsx","../../src/Progress/Progress.tsx","../../src/ResponsiveImage/ResponsiveImage.tsx","../../src/Section/Section.tsx","../../src/Select/Select.tsx","../../src/Sidebar/Sidebar.tsx","../../src/Skiplink/Skiplink.tsx","../../src/Skiplink/SkiplinkItem.tsx","../../src/Spinner/Spinner.tsx","../../src/Stepper/StepperContainer.tsx","../../src/Stepper/StepperDots.tsx","../../src/Stepper/StepperHeader.tsx","../../src/Stepper/StepperNav.tsx","../../src/Input/TextArea.tsx","../../src/ThumbNav/ThumbNav.tsx","../../src/ThumbNav/ThumbNavItem.tsx","../../src/Timeline/TimelineWrapper.tsx","../../src/Timeline/TimelinePin.tsx","../../src/Toggle/Toggle.tsx","../../src/Toolbar/ToolbarDividerItem.tsx"],"sourcesContent":["export const noop = () => {};\n\nexport const logError = (message: string) => {\n if (typeof console !== 'undefined') {\n if (console.error) {\n console.error(message);\n } else {\n console.log(message);\n }\n }\n};\n\n// @internal Used for testing purposes only\nexport const flushMessageCache = () => {\n for (const key in messages) {\n delete messages[key];\n }\n};\n\nconst messages: Record<string, 1> = {};\nexport const notifyDeprecation = (message: string, options: { once: boolean } = { once: true }) => {\n if (!options.once) {\n logError(message);\n } else {\n if (!messages[message]) {\n logError(message);\n messages[message] = 1;\n }\n }\n};\n\nexport function mapToCssModules(className: string | null, cssModules?: Record<string, string>) {\n let finalClassNames = className == null ? '' : className;\n if (!cssModules) {\n return finalClassNames;\n }\n return finalClassNames\n .split(' ')\n .map((klass) => cssModules[klass] ?? klass)\n .join(' ');\n}\n\ntype UnknownObject = Record<string, unknown>;\n\nexport function pick<T extends UnknownObject>(obj: T, keys: keyof T | Array<keyof T>): Partial<T> {\n const keysArray = Array.isArray(keys) ? keys : [keys];\n const newObj: Partial<T> = {};\n for (const key of keysArray) {\n if (key in obj) {\n newObj[key] = obj[key];\n }\n }\n return newObj;\n}\n\nexport function omit<T extends UnknownObject>(obj: T, keys: keyof T | Array<keyof T>): Partial<T> {\n const keysLookup = new Set(Array.isArray(keys) ? keys : [keys]);\n\n const newObj: Partial<T> = {};\n for (const key in obj) {\n if (!keysLookup.has(key)) {\n newObj[key] = obj[key];\n }\n }\n return newObj;\n}\n","// Taken from Reactstrap utils.js which are tken from bootstrap sass\nexport const TransitionTimeouts = {\n // $transition-fade\n Fade: 150,\n // $transition-collapse\n Collapse: 350,\n // $modal-transition\n Modal: 300,\n // $carousel-transition\n Carousel: 600\n};\n\n// taken from Reactstrap utils.js\nexport const TransitionsKeys = [\n 'in',\n 'mountOnEnter',\n 'unmountOnExit',\n 'appear',\n 'enter',\n 'exit',\n 'timeout',\n 'onEnter',\n 'onEntering',\n 'onEntered',\n 'onExit',\n 'onExiting',\n 'onExited'\n];\n\nconst transitionStatus = {\n entering: 1,\n entered: 1,\n exiting: 1,\n exited: 1\n};\n\nexport type TransitionStates = keyof typeof transitionStatus;\n","import React, { ElementType, useCallback, useState } from 'react';\nimport classNames from 'classnames';\nimport { Transition } from 'react-transition-group';\n\nimport { pick, omit } from '../utils';\nimport { TransitionTimeouts, TransitionsKeys } from '../transitions';\nimport type { TransitionProps } from 'react-transition-group/Transition';\nimport type { TransitionStates } from '../transitions';\n\nexport type AccordionBodyProps = Partial<TransitionProps> & {\n tag?: ElementType;\n className?: string;\n listClassName?: string;\n active?: boolean;\n onToggle?: () => void;\n};\n\n// hardcode these entries to avoid leaks\nconst transitionStatusToClassHash: Record<TransitionStates, string> = {\n entering: 'collapsing',\n entered: 'collapse show',\n exiting: 'collapsing',\n exited: 'collapse'\n};\n\nfunction getTransitionClass(status: TransitionStates) {\n return transitionStatusToClassHash[status] || 'collapse';\n}\n\nfunction getHeight(node: HTMLElement) {\n return node.scrollHeight;\n}\n\nexport const AccordionBody = ({\n className,\n listClassName,\n tag = 'div',\n active = false,\n children,\n timeout = TransitionTimeouts.Collapse,\n ...attributes\n}: AccordionBodyProps) => {\n const [height, setHeight] = useState<null | number>(null);\n\n const onEntering = useCallback(\n (node: HTMLElement, isAppearing: boolean) => {\n setHeight(getHeight(node));\n attributes.onEntering?.(node, isAppearing);\n },\n [attributes.onEntering]\n );\n const onEntered = useCallback(\n (node: HTMLElement, isAppearing: boolean) => {\n setHeight(null);\n attributes.onEntered?.(node, isAppearing);\n },\n [attributes.onEntered]\n );\n const onExit = useCallback(\n (node: HTMLElement) => {\n setHeight(getHeight(node));\n attributes.onExit?.(node);\n },\n [attributes.onExit]\n );\n const onExiting = useCallback(\n (node: HTMLElement) => {\n // getting this variable triggers a reflow\n // @ts-expect-error\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _unused = node.offsetHeight;\n setHeight(0);\n attributes.onExiting?.(node);\n },\n [attributes.onExiting]\n );\n const onExited = useCallback(\n (node: HTMLElement) => {\n setHeight(null);\n attributes.onExited?.(node);\n },\n [attributes.onExited]\n );\n const Tag = tag;\n\n const transitionProps = pick(attributes, TransitionsKeys);\n const childProps = omit(attributes, TransitionsKeys);\n\n return (\n <Transition\n {...transitionProps}\n timeout={timeout}\n in={active}\n onEntering={onEntering}\n onEntered={onEntered}\n onExit={onExit}\n onExiting={onExiting}\n onExited={onExited}\n >\n {(status: TransitionStates) => {\n const transitionClass = getTransitionClass(status);\n const classes = classNames(className, transitionClass);\n const listClasses = classNames(listClassName, 'accordion-body');\n const style = height == null ? null : { height };\n\n return (\n <Tag className={classes} style={{ ...childProps.style, ...style }} {...childProps}>\n <div className={listClasses}>{children}</div>\n </Tag>\n );\n }}\n </Transition>\n );\n};\n// }\n","import React, { FC, HTMLAttributes, MouseEventHandler, ElementType, Ref } from 'react';\nimport { Alert as InnerAlert, FadeProps } from 'reactstrap';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\n\n// Copy over from reactstrap and add new ones\nexport interface AlertProps extends HTMLAttributes<HTMLElement> {\n closeClassName?: string;\n closeAriaLabel?: string;\n /** Oggetto contenente la nuova mappatura per le classi CSS. */\n cssModule?: CSSModule;\n /** Le varianti di colore definite in Bootstrap Italia */\n color?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | string;\n /** Quando abilitato mostra un'animazione di entrata ed uscita del componente Alert. Valore di default: true. */\n fade?: boolean;\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n transition?: FadeProps;\n /** Da utilizzare per impostare un riferimento all'elemento DOM */\n innerRef?: Ref<HTMLElement>;\n isOpen?: boolean;\n toggle?: MouseEventHandler<any>;\n testId?: string;\n}\n\nconst defaultProps = {\n color: 'success',\n isOpen: true,\n fade: true\n};\n\nexport const Alert: FC<AlertProps> = ({ testId, ...props }) => {\n return <InnerAlert data-testid={testId} {...props} />;\n};\n\nAlert.defaultProps = defaultProps;\n","const iconList: Record<string, boolean> = {\n 'it-android-square': true,\n 'it-android': true,\n 'it-apple-square': true,\n 'it-apple': true,\n 'it-arrow-down-circle': true,\n 'it-arrow-down-triangle': true,\n 'it-arrow-down': true,\n 'it-arrow-left-circle': true,\n 'it-arrow-left-triangle': true,\n 'it-arrow-left': true,\n 'it-arrow-right-circle': true,\n 'it-arrow-right-triangle': true,\n 'it-arrow-right': true,\n 'it-arrow-up-circle': true,\n 'it-arrow-up-triangle': true,\n 'it-arrow-up': true,\n 'it-ban': true,\n 'it-behance': true,\n 'it-bookmark': true,\n 'it-box': true,\n 'it-burger': true,\n 'it-calendar': true,\n 'it-camera': true,\n 'it-card': true,\n 'it-chart-line': true,\n 'it-check-circle': true,\n 'it-check': true,\n 'it-chevron-left': true,\n 'it-chevron-right': true,\n 'it-clip': true,\n 'it-clock': true,\n 'it-close-big': true,\n 'it-close-circle': true,\n 'it-close': true,\n 'it-code-circle': true,\n 'it-collapse': true,\n 'it-comment': true,\n 'it-copy': true,\n 'it-delete': true,\n 'it-designers-italia': true,\n 'it-download': true,\n 'it-error': true,\n 'it-exchange-circle': true,\n 'it-expand': true,\n 'it-external-link': true,\n 'it-facebook-square': true,\n 'it-facebook': true,\n 'it-figma-square': true,\n 'it-figma': true,\n 'it-file-audio': true,\n 'it-file-compressed': true,\n 'it-file-csv': true,\n 'it-file-json': true,\n 'it-file-odp': true,\n 'it-file-ods': true,\n 'it-file-odt': true,\n 'it-file-pdf-ext': true,\n 'it-file-pdf': true,\n 'it-file-ppt': true,\n 'it-file-sheet': true,\n 'it-file-slides': true,\n 'it-file-txt': true,\n 'it-file-video': true,\n 'it-file-xml': true,\n 'it-file': true,\n 'it-files': true,\n 'it-flag': true,\n 'it-flickr-square': true,\n 'it-flickr': true,\n 'it-folder': true,\n 'it-fullscreen': true,\n 'it-funnel': true,\n 'it-github': true,\n 'it-google': true,\n 'it-hearing': true,\n 'it-help-circle': true,\n 'it-help': true,\n 'it-horn': true,\n 'it-inbox': true,\n 'it-info-circle': true,\n 'it-instagram': true,\n 'it-key': true,\n 'it-less-circle': true,\n 'it-link': true,\n 'it-linkedin-square': true,\n 'it-linkedin': true,\n 'it-list': true,\n 'it-lock': true,\n 'it-locked': true,\n 'it-logout': true,\n 'it-mail-open': true,\n 'it-mail': true,\n 'it-map-marker-circle': true,\n 'it-map-marker-minus': true,\n 'it-map-marker-plus': true,\n 'it-map-marker': true,\n 'it-mastodon-square': true,\n 'it-mastodon': true,\n 'it-maximize-alt': true,\n 'it-maximize': true,\n 'it-medium-square': true,\n 'it-medium': true,\n 'it-minimize': true,\n 'it-minus-circle': true,\n 'it-minus': true,\n 'it-moodle-square': true,\n 'it-moodle': true,\n 'it-more-actions': true,\n 'it-more-items': true,\n 'it-note': true,\n 'it-open-source': true,\n 'it-pa': true,\n 'it-password-invisible': true,\n 'it-password-visible': true,\n 'it-pencil': true,\n 'it-piattaforme': true,\n 'it-pin': true,\n 'it-pinterest-square': true,\n 'it-pinterest': true,\n 'it-plug': true,\n 'it-plus-circle': true,\n 'it-plus': true,\n 'it-presentation': true,\n 'it-print': true,\n 'it-quora-square': true,\n 'it-quora': true,\n 'it-reddit-square': true,\n 'it-reddit': true,\n 'it-refresh': true,\n 'it-restore': true,\n 'it-rss-square': true,\n 'it-rss': true,\n 'it-search': true,\n 'it-settings': true,\n 'it-share': true,\n 'it-slack-square': true,\n 'it-slack': true,\n 'it-snapchat-square': true,\n 'it-snapchat': true,\n 'it-software': true,\n 'it-stackexchange-square': true,\n 'it-stackexchange': true,\n 'it-stackoverflow-square': true,\n 'it-stackoverflow': true,\n 'it-star-full': true,\n 'it-star-outline': true,\n 'it-team-digitale': true,\n 'it-telegram': true,\n 'it-telephone': true,\n 'it-tiktok-square': true,\n 'it-tiktok': true,\n 'it-tool': true,\n 'it-threads-square': true,\n 'it-threads': true,\n 'it-twitter-square': true,\n 'it-twitter': true,\n 'it-unlocked': true,\n 'it-upload': true,\n 'it-user': true,\n 'it-video': true,\n 'it-vimeo-square': true,\n 'it-vimeo': true,\n 'it-warning-circle': true,\n 'it-warning': true,\n 'it-whatsapp-square': true,\n 'it-whatsapp': true,\n 'it-wifi': true,\n 'it-youtube': true,\n 'it-zoom-in': true,\n 'it-zoom-out': true\n};\nexport type IconName = keyof typeof iconList;\n\nexport const loadIcon = (name: IconName) => {\n switch (name) {\n case 'it-android-square': {\n return import('./ItAndroidSquare');\n }\n case 'it-android': {\n return import('./ItAndroid');\n }\n case 'it-apple-square': {\n return import('./ItAppleSquare');\n }\n case 'it-apple': {\n return import('./ItApple');\n }\n case 'it-arrow-down-circle': {\n return import('./ItArrowDownCircle');\n }\n case 'it-arrow-down-triangle': {\n return import('./ItArrowDownTriangle');\n }\n case 'it-arrow-down': {\n return import('./ItArrowDown');\n }\n case 'it-arrow-left-circle': {\n return import('./ItArrowLeftCircle');\n }\n case 'it-arrow-left-triangle': {\n return import('./ItArrowLeftTriangle');\n }\n case 'it-arrow-left': {\n return import('./ItArrowLeft');\n }\n case 'it-arrow-right-circle': {\n return import('./ItArrowRightCircle');\n }\n case 'it-arrow-right-triangle': {\n return import('./ItArrowRightTriangle');\n }\n case 'it-arrow-right': {\n return import('./ItArrowRight');\n }\n case 'it-arrow-up-circle': {\n return import('./ItArrowUpCircle');\n }\n case 'it-arrow-up-triangle': {\n return import('./ItArrowUpTriangle');\n }\n case 'it-arrow-up': {\n return import('./ItArrowUp');\n }\n case 'it-ban': {\n return import('./ItBan');\n }\n case 'it-behance': {\n return import('./ItBehance');\n }\n case 'it-bookmark': {\n return import('./ItBookmark');\n }\n case 'it-box': {\n return import('./ItBox');\n }\n case 'it-burger': {\n return import('./ItBurger');\n }\n case 'it-calendar': {\n return import('./ItCalendar');\n }\n case 'it-camera': {\n return import('./ItCamera');\n }\n case 'it-card': {\n return import('./ItCard');\n }\n case 'it-chart-line': {\n return import('./ItChartLine');\n }\n case 'it-check-circle': {\n return import('./ItCheckCircle');\n }\n case 'it-check': {\n return import('./ItCheck');\n }\n case 'it-chevron-left': {\n return import('./ItChevronLeft');\n }\n case 'it-chevron-right': {\n return import('./ItChevronRight');\n }\n case 'it-clip': {\n return import('./ItClip');\n }\n case 'it-clock': {\n return import('./ItClock');\n }\n case 'it-close-big': {\n return import('./ItCloseBig');\n }\n case 'it-close-circle': {\n return import('./ItCloseCircle');\n }\n case 'it-close': {\n return import('./ItClose');\n }\n case 'it-code-circle': {\n return import('./ItCodeCircle');\n }\n case 'it-collapse': {\n return import('./ItCollapse');\n }\n case 'it-comment': {\n return import('./ItComment');\n }\n case 'it-copy': {\n return import('./ItCopy');\n }\n case 'it-delete': {\n return import('./ItDelete');\n }\n case 'it-designers-italia': {\n return import('./ItDesignersItalia');\n }\n case 'it-download': {\n return import('./ItDownload');\n }\n case 'it-error': {\n return import('./ItError');\n }\n case 'it-exchange-circle': {\n return import('./ItExchangeCircle');\n }\n case 'it-expand': {\n return import('./ItExpand');\n }\n case 'it-external-link': {\n return import('./ItExternalLink');\n }\n case 'it-facebook-square': {\n return import('./ItFacebookSquare');\n }\n case 'it-facebook': {\n return import('./ItFacebook');\n }\n case 'it-figma-square': {\n return import('./ItFigmaSquare');\n }\n case 'it-figma': {\n return import('./ItFigma');\n }\n case 'it-file-audio': {\n return import('./ItFileAudio');\n }\n case 'it-file-compressed': {\n return import('./ItFileCompressed');\n }\n case 'it-file-csv': {\n return import('./ItFileCsv');\n }\n case 'it-file-json': {\n return import('./ItFileJson');\n }\n case 'it-file-odp': {\n return import('./ItFileOdp');\n }\n case 'it-file-ods': {\n return import('./ItFileOds');\n }\n case 'it-file-odt': {\n return import('./ItFileOdt');\n }\n case 'it-file-pdf-ext': {\n return import('./ItFilePdfExt');\n }\n case 'it-file-pdf': {\n return import('./ItFilePdf');\n }\n case 'it-file-ppt': {\n return import('./ItFilePpt');\n }\n case 'it-file-sheet': {\n return import('./ItFileSheet');\n }\n case 'it-file-slides': {\n return import('./ItFileSlides');\n }\n case 'it-file-txt': {\n return import('./ItFileTxt');\n }\n case 'it-file-video': {\n return import('./ItFileVideo');\n }\n case 'it-file-xml': {\n return import('./ItFileXml');\n }\n case 'it-file': {\n return import('./ItFile');\n }\n case 'it-files': {\n return import('./ItFiles');\n }\n case 'it-flag': {\n return import('./ItFlag');\n }\n case 'it-flickr-square': {\n return import('./ItFlickrSquare');\n }\n case 'it-flickr': {\n return import('./ItFlickr');\n }\n case 'it-folder': {\n return import('./ItFolder');\n }\n case 'it-fullscreen': {\n return import('./ItFullscreen');\n }\n case 'it-funnel': {\n return import('./ItFunnel');\n }\n case 'it-github': {\n return import('./ItGithub');\n }\n case 'it-google': {\n return import('./ItGoogle');\n }\n case 'it-hearing': {\n return import('./ItHearing');\n }\n case 'it-help-circle': {\n return import('./ItHelpCircle');\n }\n case 'it-help': {\n return import('./ItHelp');\n }\n case 'it-horn': {\n return import('./ItHorn');\n }\n case 'it-inbox': {\n return import('./ItInbox');\n }\n case 'it-info-circle': {\n return import('./ItInfoCircle');\n }\n case 'it-instagram': {\n return import('./ItInstagram');\n }\n case 'it-key': {\n return import('./ItKey');\n }\n case 'it-less-circle': {\n return import('./ItLessCircle');\n }\n case 'it-link': {\n return import('./ItLink');\n }\n case 'it-linkedin-square': {\n return import('./ItLinkedinSquare');\n }\n case 'it-linkedin': {\n return import('./ItLinkedin');\n }\n case 'it-list': {\n return import('./ItList');\n }\n case 'it-lock': {\n return import('./ItLock');\n }\n case 'it-locked': {\n return import('./ItLocked');\n }\n case 'it-logout': {\n return import('./ItLogout');\n }\n case 'it-mail-open': {\n return import('./ItMailOpen');\n }\n case 'it-mail': {\n return import('./ItMail');\n }\n case 'it-map-marker-circle': {\n return import('./ItMapMarkerCircle');\n }\n case 'it-map-marker-minus': {\n return import('./ItMapMarkerMinus');\n }\n case 'it-map-marker-plus': {\n return import('./ItMapMarkerPlus');\n }\n case 'it-map-marker': {\n return import('./ItMapMarker');\n }\n case 'it-mastodon-square': {\n return import('./ItMastodonSquare');\n }\n case 'it-mastodon': {\n return import('./ItMastodon');\n }\n case 'it-maximize-alt': {\n return import('./ItMaximizeAlt');\n }\n case 'it-maximize': {\n return import('./ItMaximize');\n }\n case 'it-medium-square': {\n return import('./ItMediumSquare');\n }\n case 'it-medium': {\n return import('./ItMedium');\n }\n case 'it-minimize': {\n return import('./ItMinimize');\n }\n case 'it-minus-circle': {\n return import('./ItMinusCircle');\n }\n case 'it-minus': {\n return import('./ItMinus');\n }\n case 'it-moodle-square': {\n return import('./ItMoodleSquare');\n }\n case 'it-moodle': {\n return import('./ItMoodle');\n }\n case 'it-more-actions': {\n return import('./ItMoreActions');\n }\n case 'it-more-items': {\n return import('./ItMoreItems');\n }\n case 'it-note': {\n return import('./ItNote');\n }\n case 'it-open-source': {\n return import('./ItOpenSource');\n }\n case 'it-pa': {\n return import('./ItPa');\n }\n case 'it-password-invisible': {\n return import('./ItPasswordInvisible');\n }\n case 'it-password-visible': {\n return import('./ItPasswordVisible');\n }\n case 'it-pencil': {\n return import('./ItPencil');\n }\n case 'it-piattaforme': {\n return import('./ItPiattaforme');\n }\n case 'it-pin': {\n return import('./ItPin');\n }\n case 'it-pinterest-square': {\n return import('./ItPinterestSquare');\n }\n case 'it-pinterest': {\n return import('./ItPinterest');\n }\n case 'it-plug': {\n return import('./ItPlug');\n }\n case 'it-plus-circle': {\n return import('./ItPlusCircle');\n }\n case 'it-plus': {\n return import('./ItPlus');\n }\n case 'it-presentation': {\n return import('./ItPresentation');\n }\n case 'it-print': {\n return import('./ItPrint');\n }\n case 'it-quora-square': {\n return import('./ItQuoraSquare');\n }\n case 'it-quora': {\n return import('./ItQuora');\n }\n case 'it-reddit-square': {\n return import('./ItRedditSquare');\n }\n case 'it-reddit': {\n return import('./ItReddit');\n }\n case 'it-refresh': {\n return import('./ItRefresh');\n }\n case 'it-restore': {\n return import('./ItRestore');\n }\n case 'it-rss-square': {\n return import('./ItRssSquare');\n }\n case 'it-rss': {\n return import('./ItRss');\n }\n case 'it-search': {\n return import('./ItSearch');\n }\n case 'it-settings': {\n return import('./ItSettings');\n }\n case 'it-share': {\n return import('./ItShare');\n }\n case 'it-slack-square': {\n return import('./ItSlackSquare');\n }\n case 'it-slack': {\n return import('./ItSlack');\n }\n case 'it-snapchat-square': {\n return import('./ItSnapchatSquare');\n }\n case 'it-snapchat': {\n return import('./ItSnapchat');\n }\n case 'it-software': {\n return import('./ItSoftware');\n }\n case 'it-stackexchange-square': {\n return import('./ItStackexchangeSquare');\n }\n case 'it-stackexchange': {\n return import('./ItStackexchange');\n }\n case 'it-stackoverflow-square': {\n return import('./ItStackoverflowSquare');\n }\n case 'it-stackoverflow': {\n return import('./ItStackoverflow');\n }\n case 'it-star-full': {\n return import('./ItStarFull');\n }\n case 'it-star-outline': {\n return import('./ItStarOutline');\n }\n case 'it-team-digitale': {\n return import('./ItTeamDigitale');\n }\n case 'it-telegram': {\n return import('./ItTelegram');\n }\n case 'it-telephone': {\n return import('./ItTelephone');\n }\n case 'it-tiktok-square': {\n return import('./ItTiktokSquare');\n }\n case 'it-tiktok': {\n return import('./ItTiktok');\n }\n case 'it-tool': {\n return import('./ItTool');\n }\n case 'it-threads-square': {\n return import('./ItThreadsSquare');\n }\n case 'it-threads': {\n return import('./ItThreads');\n }\n case 'it-twitter-square': {\n return import('./ItTwitterSquare');\n }\n case 'it-twitter': {\n return import('./ItTwitter');\n }\n case 'it-unlocked': {\n return import('./ItUnlocked');\n }\n case 'it-upload': {\n return import('./ItUpload');\n }\n case 'it-user': {\n return import('./ItUser');\n }\n case 'it-video': {\n return import('./ItVideo');\n }\n case 'it-vimeo-square': {\n return import('./ItVimeoSquare');\n }\n case 'it-vimeo': {\n return import('./ItVimeo');\n }\n case 'it-warning-circle': {\n return import('./ItWarningCircle');\n }\n case 'it-warning': {\n return import('./ItWarning');\n }\n case 'it-whatsapp-square': {\n return import('./ItWhatsappSquare');\n }\n case 'it-whatsapp': {\n return import('./ItWhatsapp');\n }\n case 'it-wifi': {\n return import('./ItWifi');\n }\n case 'it-youtube': {\n return import('./ItYoutube');\n }\n case 'it-zoom-in': {\n return import('./ItZoomIn');\n }\n case 'it-zoom-out': {\n return import('./ItZoomOut');\n }\n default:\n throw Error(`It should not land here. Requested icon: \"${name}\"`);\n }\n};\n\nexport function isBundledIcon(name: string): name is IconName {\n return name in iconList;\n}\n\nexport const allIcons = Object.keys(iconList);\n","import React, { FC, SVGProps } from 'react';\ninterface SVGRProps {\n title?: string;\n titleId?: string;\n}\nexport const EmptyIcon: FC<SVGProps<SVGSVGElement> & SVGRProps> = ({ title, titleId, ...props }) => (\n <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' {...props}>\n {title ? <title id={titleId}>{title}</title> : null}\n <path fill='none' d='M0 0h24v24H0z' />\n </svg>\n);\n","import React, { FC, ImgHTMLAttributes, SVGProps, useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport { isBundledIcon, loadIcon, allIcons, IconName } from './assets';\nimport { EmptyIcon } from './EmptyIcon';\nexport type { IconName } from './assets';\n\nexport const iconsList = allIcons;\n\nlet iconsCache: Record<IconName, FC<SVGProps<SVGSVGElement>>> = {};\n\n/**\n * Preload a list of icons in cache\n * @param icons - the list of icons to preload\n * @returns true if the icons have been preloaded\n */\nexport function preloadIcons(icons: IconName[]) {\n return Promise.all(icons.map((icon) => loadIcon(icon))).then((preloadedIcons) => {\n preloadedIcons.forEach(({ component }, i) => {\n iconsCache[icons[i]] = (() => component) as unknown as FC<SVGProps<SVGSVGElement>>;\n });\n return true;\n });\n}\n\n/**\n * Removes icons from cache\n * @param icon? - the icon to remove, or nothing to clear the whole cache\n * @returns an object containing the removed icons\n */\nexport const clearIconCache = (iconName?: IconName) => {\n let deletedItems;\n if (iconName) {\n deletedItems = { [iconName]: iconsCache[iconName] };\n delete iconsCache[iconName];\n } else {\n deletedItems = { ...iconsCache };\n iconsCache = {};\n }\n return deletedItems;\n};\n\nexport interface IconProps extends SVGProps<SVGSVGElement> {\n /** Classi aggiuntive da usare per il componente Badge */\n className?: string;\n /** Le varianti di colore definite in Bootstrap Italia */\n color?: 'success' | 'warning' | 'danger' | 'note' | 'important' | string;\n /** Le dimensioni dell'icona. In ordine dalla più grande alla più piccola: \"xl\", \"lg\", '' (stringa vuota), \"sm\", \"xs\". */\n size?: 'xl' | 'lg' | '' | 'sm' | 'xs';\n /**\n * Il nome dell'icona da mostrare. Per una lista completa vedi:\n * <a href=\"https://italia.github.io/design-react-kit/?path=/story/componenti-icon--lista-icone\" target=\"_blank\">Lista icone</a>\n * In caso di un'immagine esterna l'URL da utilizzare.\n **/\n icon: string;\n /** Il titolo da dare all'icona. Quando si utilizza un'immagine esterna viene utilizzato come attributo \"alt\". */\n title?: string;\n /** Quando abilitato riduce la dimensione dell'icona all'interno del contenitore. */\n padding?: boolean;\n /** Funzione chiamata al caricamento dell'icona */\n onIconLoad?: () => void;\n /** Id da utilizzare in caso di testing */\n testId?: string;\n}\n\ninterface SVGRProps {\n title?: string;\n titleId?: string;\n}\n\nexport const Icon: FC<IconProps> = ({\n color = '',\n size = '',\n icon = '',\n title = 'icon',\n className,\n padding = false,\n onIconLoad,\n testId,\n ...attributes\n}) => {\n const [IconComponent, setCurrentIcon] = useState<FC<SVGProps<SVGSVGElement> & SVGRProps>>(iconsCache[icon]);\n const classes = classNames('icon', className, {\n [`icon-${color}`]: color,\n [`icon-${size}`]: size,\n 'icon-padded': padding\n });\n\n useEffect(() => {\n if (isBundledIcon(icon) && !iconsCache[icon]) {\n loadIcon(icon).then(({ component }) => {\n iconsCache[icon] = (() => component) as unknown as FC<SVGProps<SVGSVGElement> & SVGRProps>;\n setCurrentIcon(iconsCache[icon]);\n onIconLoad?.();\n });\n } else {\n if (IconComponent !== iconsCache[icon]) {\n setCurrentIcon(iconsCache[icon]);\n }\n onIconLoad?.();\n }\n }, [IconComponent, icon, onIconLoad]);\n\n if (!isBundledIcon(icon)) {\n // assume it's an image and let the browser do its job\n return (\n <img\n src={icon}\n className={classes}\n alt={title}\n data-testid={testId}\n {...(attributes as ImgHTMLAttributes<HTMLImageElement>)}\n />\n );\n }\n\n if (!IconComponent) {\n return <EmptyIcon className={classes} role='img' {...attributes} data-testid={testId} />;\n }\n\n return <IconComponent className={classes} role='img' title={title} data-testid={testId} {...attributes} />;\n};\n","import React, { FC, ButtonHTMLAttributes, ElementType, Ref } from 'react';\nimport classNames from 'classnames';\n\nimport { Button as ButtonBase } from 'reactstrap';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\n\n// reactstrap wrapper\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Quando abilitato, estende il componente Button fino a prendere tutta la larghezza disponibile */\n block?: boolean;\n /** Utilizzarlo disabilitare il colore di sfondo, ed applicarlo invece al bordo. */\n outline?: boolean;\n /** Utilizzarlo in caso di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Button */\n className?: string;\n /** Oggetto contenente la nuova mappatura per le classi CSS. */\n cssModule?: CSSModule;\n innerRef?: Ref<HTMLButtonElement>;\n /** Da utilizzare si usa una icona nel contenuto del Button */\n icon?: boolean;\n /** Da utilizzare per le varianti di dimensione del componente Button */\n size?: 'lg' | 'sm' | 'xs';\n /** Da utilizzare per i bottoni di chiusura all'interno di altri componenti (i.e. Chips, Modali, etc...) */\n close?: boolean;\n active?: boolean;\n href?: string;\n testId?: string;\n}\n\nexport const Button: FC<ButtonProps> = ({\n tag = 'button',\n icon = false,\n color = '',\n className,\n testId,\n ...attributes\n}) => {\n const classes = classNames(className, {\n 'btn-icon': icon\n });\n\n const ariaAttributes = {\n ...(attributes.disabled && { 'aria-disabled': true })\n };\n\n const baseProps = { color, tag };\n\n return <ButtonBase className={classes} data-testid={testId} {...baseProps} {...attributes} {...ariaAttributes} />;\n};\n","import React, { useLayoutEffect, useState } from 'react';\nimport { Icon } from '../Icon/Icon';\nimport classNames from 'classnames';\nimport { Button } from '../Button/Button';\n\nexport interface BackToTopProps {\n /**\n * Optional classnames to pass to <a> element\n */\n className?: string;\n /**\n * Render the dark variant of the back to top button\n */\n dark?: boolean;\n /**\n * Render the small variant of the back to top button\n */\n small?: boolean;\n /**\n * Add a shadow to the button\n */\n shadow?: boolean;\n /**\n * Configure after how many scrolled pixels the button is shown\n */\n showOffset?: number;\n}\n\nconst backToTop = () => {\n window.scrollTo({ top: 0, behavior: 'smooth' });\n};\n\nexport const BackToTop = ({\n className,\n dark = false,\n small = false,\n shadow = false,\n showOffset = 200\n}: BackToTopProps) => {\n const [showBtn, setShowBtn] = useState(false);\n\n useLayoutEffect(() => {\n window.addEventListener('scroll', () => {\n if (window.scrollY > showOffset) {\n setShowBtn(true);\n } else {\n setShowBtn(false);\n }\n });\n }, [showOffset]);\n\n return (\n <Button\n aria-hidden='true'\n tabIndex={-1}\n className={classNames(\n className,\n 'back-to-top',\n small && 'back-to-top-small',\n showBtn && 'back-to-top-show',\n dark && 'dark',\n shadow && 'shadow'\n )}\n id='back-to-top-btn'\n onClick={backToTop}\n style={{ padding: 0 }}\n color={!dark ? 'primary' : ''}\n >\n <Icon color={dark ? 'secondary' : 'white'} icon='it-arrow-up' style={{ top: 0 }} />\n </Button>\n );\n};\n","import React, { ElementType, FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface DropdownProps extends HTMLAttributes<HTMLElement> {\n tag?: ElementType;\n inNavbar?: boolean;\n textCenter?: boolean;\n /** Classi aggiuntive da usare per il componente Button */\n className?: string;\n testId?: string;\n}\n\nexport const Dropdown: FC<DropdownProps> = ({\n className,\n testId,\n tag,\n children,\n inNavbar,\n textCenter,\n ...attributes\n}) => {\n const classes = classNames(className, {\n dropdown: true,\n 'text-center': textCenter,\n 'nav-item': inNavbar\n });\n\n const Tag = tag !== undefined ? tag : 'div';\n\n return (\n <Tag className={classes} data-testid={testId} {...attributes}>\n {children}\n </Tag>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface DropdownMenuProps extends HTMLAttributes<HTMLElement> {\n /** Classi aggiuntive da usare per il componente Button */\n className?: string;\n testId?: string;\n}\n\nexport const DropdownMenu: FC<DropdownMenuProps> = ({ className, testId, children, ...attributes }) => {\n const classes = classNames(className, {\n 'dropdown-menu': true\n });\n\n return (\n <div className={classes} data-testid={testId} {...attributes}>\n {children}\n </div>\n );\n};\n","import React, { ElementType, FC, HTMLAttributes, useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { Dropdown } from 'bootstrap-italia';\nimport { Icon } from '../Icon/Icon';\nimport { Button } from '../Button/Button';\n\nexport interface DropdownToggleProps extends HTMLAttributes<HTMLElement> {\n caret?: boolean;\n tag?: ElementType;\n color?: string;\n inNavbar?: boolean;\n /** Classi aggiuntive da usare per il componente Button */\n className?: string;\n testId?: string;\n}\n\nexport const DropdownToggle: FC<DropdownToggleProps> = ({\n className,\n testId,\n children,\n caret,\n tag = 'button',\n inNavbar,\n color,\n ...attributes\n}) => {\n const toggleRef = useRef<HTMLAnchorElement & HTMLButtonElement>(null);\n\n const Tag = tag === 'a' || inNavbar ? 'a' : Button;\n\n useEffect(() => {\n if (toggleRef.current) {\n new Dropdown(toggleRef.current as HTMLAnchorElement & HTMLButtonElement);\n }\n });\n const classes = classNames(className, {\n 'btn-dropdown': Tag === 'a' && !inNavbar,\n 'dropdown-toggle': true,\n 'nav-link': inNavbar\n });\n const iconClasses = classNames({\n 'icon-expand': true,\n 'icon-sm': !inNavbar,\n 'icon-xs': inNavbar,\n 'ms-1': inNavbar,\n 'icon-light': Tag.valueOf() !== 'a' ? true : false\n });\n return (\n <Tag\n role={Tag.valueOf() === 'a' ? 'button' : undefined}\n color={color}\n ref={toggleRef}\n className={classes}\n data-bs-toggle='dropdown'\n aria-haspopup='true'\n data-testid={testId}\n {...attributes}\n >\n {children}\n {caret === true ? <Icon icon='it-expand' className={iconClasses} /> : null}\n </Tag>\n );\n};\n","import { useEffect } from 'react';\n\nexport interface FontLoaderProps {\n /**\n * Una lista di font aggiuntivi da caricare.\n * I font di default Titillium Web, Lora and Roboto Mono vengono aggiunti a questa lista e caricati sempre.\n * */\n fonts?: string[];\n}\n\nconst defaultFonts = [\n 'Titillium Web:300,400,600,700:latin-ext',\n 'Lora:400,700:latin-ext',\n 'Roboto Mono:400,700:latin-ext'\n];\n\nexport function useFontLoader({ fonts }: FontLoaderProps) {\n useEffect(() => {\n if (typeof window !== 'undefined') {\n const WebFont = require('webfontloader');\n WebFont.load({\n custom: {\n families: [...defaultFonts, ...(fonts || [])]\n }\n });\n }\n }, [fonts]);\n}\n\nexport const FontLoader = (props: FontLoaderProps) => {\n useFontLoader(props);\n\n return null;\n};\n","import classNames from 'classnames';\nimport React, { ReactChild } from 'react';\nimport { Button } from '../Button/Button';\nimport { Icon } from '../Icon/Icon';\n\nexport interface GoBackProps {\n /**\n * Optional classnames to pass to the element\n */\n className?: string;\n /**\n * Render the link variant of the go back button\n */\n link?: boolean;\n /**\n * Render the up variant of the go back button\n */\n up?: boolean;\n children?: ReactChild;\n}\n\nconst goBack = () => {\n window.history.back();\n};\n\nexport const GoBack = ({ className, link = false, up = false, children }: GoBackProps) => {\n const Tag = link ? 'a' : Button;\n\n return (\n <Tag className={classNames(className, 'go-back')} color='primary' onClick={goBack}>\n <Icon\n className={children ? 'me-2' : ''}\n color={link ? 'primary' : 'white'}\n icon={up ? 'it-arrow-up' : 'it-arrow-left'}\n />\n {children}\n </Tag>\n );\n};\n","import { createContext, useContext } from 'react';\n\nexport const SLIM = 'slim';\nexport const CENTER = 'center';\nexport const NAVBAR = 'navbar';\n\nexport const HeaderContext = createContext<{\n type?: typeof SLIM | typeof CENTER | typeof NAVBAR;\n}>({});\n\nexport const useHeaderContext = () => {\n const { type } = useContext(HeaderContext);\n return type;\n};\n","import React, { FC, HTMLAttributes, ReactNode } from 'react';\n\nexport interface InputContainerProps extends HTMLAttributes<HTMLElement> {\n wrapperClass: string;\n activeClass: string;\n extraLabelClass: string;\n validationTextClass: string;\n label: string | ReactNode | undefined;\n validationText: string | undefined;\n id: string | undefined;\n infoId: string | undefined;\n infoText: string | undefined;\n testId?: string;\n}\n\nexport const InputContainer: FC<InputContainerProps> = ({\n id,\n infoId,\n infoText,\n testId,\n activeClass,\n extraLabelClass,\n label,\n validationTextClass,\n validationText,\n wrapperClass,\n children\n}) => {\n return (\n <div className={wrapperClass} data-testid={testId}>\n <label htmlFor={id} className={activeClass + ' ' + extraLabelClass}>\n {label}\n </label>\n {children}\n {infoText && (\n <small id={infoId} className='form-text'>\n {infoText}\n </small>\n )}\n <div className={validationTextClass}>{validationText}</div>\n </div>\n );\n};\n","import classNames from 'classnames';\nimport { useState, useCallback } from 'react';\nimport type { CSSModule } from 'reactstrap/types/lib/utils';\nimport { mapToCssModules } from '../utils';\nimport type { InputProps } from './Input';\n\ntype ValidationProps = Pick<InputProps, 'valid'>;\ntype TypeProps = Pick<InputProps, 'plaintext' | 'type'> & {\n staticInput?: boolean;\n};\ntype FormControlProps = Pick<InputProps, 'addon' | 'normalized'> & TypeProps;\n\nfunction getFormControlClassInternal({ plaintext, staticInput, type = 'text', addon, normalized }: FormControlProps) {\n const formControlClass = 'form-control';\n if (plaintext || staticInput || normalized) {\n return `${formControlClass}-plaintext`;\n }\n if (type === 'file') {\n return `${formControlClass}-file`;\n }\n if (['radio', 'checkbox'].indexOf(type) > -1) {\n if (addon) {\n return null;\n }\n }\n return formControlClass;\n}\n\nexport function getFormControlClass(props: FormControlProps, cssModule?: CSSModule) {\n return mapToCssModules(getFormControlClassInternal(props), cssModule);\n}\n\nexport function getValidationTextControlClass({ valid }: ValidationProps, cssModule?: CSSModule) {\n return mapToCssModules(\n classNames({\n 'form-text': true,\n 'form-feedback just-validate-error-label': valid == false\n }),\n cssModule\n );\n}\n\nexport function getTag({ tag, plaintext, staticInput, type = 'text' }: Pick<InputProps, 'tag'> & TypeProps) {\n if (tag) {\n return tag;\n }\n if (['radio', 'checkbox'].indexOf(type) > -1) {\n return 'input';\n }\n if (plaintext || staticInput) {\n return 'p';\n }\n return 'input';\n}\n\ntype InputClassesParams = ValidationProps &\n Pick<InputProps, 'bsSize' | 'placeholder' | 'value' | 'label' | 'validationText' | 'normalized'> & {\n isFocused: boolean;\n inputPassword?: boolean;\n formControlClass?: string;\n validationTextControlClass?: string;\n originalWrapperClass: InputProps['wrapperClassName'];\n };\n\nexport function getClasses(\n className: string | undefined,\n type: string,\n {\n isFocused,\n valid,\n bsSize,\n placeholder,\n value,\n label,\n validationText,\n normalized,\n inputPassword,\n formControlClass,\n validationTextControlClass,\n originalWrapperClass\n }: InputClassesParams,\n cssModule?: CSSModule\n) {\n const hasPlainCondition = placeholder || label || validationText;\n const baseCondition = hasPlainCondition && !normalized && !inputPassword;\n const passwordOnlyCondition = inputPassword && !hasPlainCondition && !normalized;\n const normalizedOnlyCondition = normalized && !hasPlainCondition && !inputPassword;\n\n const classes = mapToCssModules(\n classNames(\n className,\n {\n 'is-invalid': valid == false,\n 'just-validate-success-field': valid,\n [`form-control-${bsSize}`]: bsSize\n },\n formControlClass\n ),\n cssModule\n );\n const wrapperClass = mapToCssModules(classNames(className, originalWrapperClass, 'form-group'), cssModule);\n const validationTextClass = mapToCssModules(\n classNames(\n {\n 'valid-feedback': valid,\n 'invalid-feedback form-feedback just-validate-error-label': valid == false\n },\n validationTextControlClass\n ),\n cssModule\n );\n\n const inputClasses = mapToCssModules(\n classNames(\n classes,\n !baseCondition && {\n // we can model here only if stylings\n 'form-control-plaintext': normalizedOnlyCondition,\n 'form-control': passwordOnlyCondition,\n 'input-password': passwordOnlyCondition,\n 'focus--mouse': passwordOnlyCondition || normalizedOnlyCondition\n }\n ),\n cssModule\n );\n\n const activeClass = mapToCssModules(\n classNames({\n active: isFocused || placeholder || value || ['date', 'time'].includes(type)\n }),\n cssModule\n );\n\n const extraLabelClass = mapToCssModules(\n classNames({\n 'input-number-label': ['number', 'currency', 'adaptive', 'percentage'].includes(type)\n })\n );\n\n return {\n wrapperClass,\n inputClasses,\n activeClass,\n extraLabelClass,\n validationTextClass\n };\n}\n\nexport function useFocus<T extends HTMLInputElement | HTMLTextAreaElement>({\n onFocus,\n onBlur\n}: {\n onFocus: React.FocusEventHandler<T> | undefined;\n onBlur: React.FocusEventHandler<T> | undefined;\n}) {\n const [isFocused, setFocus] = useState(false);\n\n const toggleFocusLabel = useCallback(\n (e: React.FocusEvent<T>) => {\n setFocus(true);\n onFocus?.(e);\n },\n [onFocus]\n );\n\n const toggleBlurLabel = useCallback(\n (e: React.FocusEvent<T>) => {\n if (e.target.value === '') {\n setFocus(!isFocused);\n }\n onBlur?.(e);\n },\n [isFocused, onBlur]\n );\n\n return { toggleFocusLabel, toggleBlurLabel, isFocused };\n}\n","import React, {\n InputHTMLAttributes,\n ElementType,\n Ref,\n ReactNode,\n useCallback,\n useState,\n useRef,\n useEffect\n} from 'react';\nimport isNumber from 'is-number';\n\nimport { InputContainer } from './InputContainer';\nimport { Icon } from '../Icon/Icon';\nimport { getTag, getFormControlClass, getClasses, getValidationTextControlClass, useFocus } from './utils';\nimport type { CSSModule } from 'reactstrap/types/lib/utils';\nimport { notifyDeprecation } from '../utils';\nimport classNames from 'classnames';\n\n// taken from reactstrap types\ntype InputType =\n | 'text'\n | 'email'\n | 'select'\n | 'file'\n | 'radio'\n | 'checkbox'\n | 'textarea'\n | 'button'\n | 'reset'\n | 'submit'\n | 'date'\n | 'datetime-local'\n | 'hidden'\n | 'image'\n | 'month'\n | 'number'\n | 'range'\n | 'search'\n | 'tel'\n | 'url'\n | 'week'\n | 'password'\n | 'datetime'\n | 'time'\n | 'color'\n | 'adaptive'\n | 'currency'\n | 'percentage';\n\nexport interface InputProps extends InputHTMLAttributes<HTMLInputElement> {\n /** Il tipo specifico di input da utilizzare. Il valore di default è `text`. */\n type?: InputType;\n /** Dimensione personalizzate del campo di Input secondo le classi Bootstrap/Bootstrap Italia. */\n bsSize?: 'lg' | 'sm';\n size?: number;\n /** Etichetta del campo Input. */\n label?: string | ReactNode;\n /** Etichetta del pulsante incremento. */\n incrementLabel?: string | ReactNode;\n /** Etichetta del pulsante decremento. */\n decrementLabel?: string | ReactNode;\n /** Testo di esempio da utilizzare per il campo. */\n placeholder?: string;\n /** Testo di validazione per l'elemento del moduleo form. */\n validationText?: string;\n /** Testo di aiuto per l'elemento del moduleo form. Richiede che il componente `Input` abbia la prop `id` impostata. */\n infoText?: string;\n /** Il valore nel campo Input. */\n value?: string | number;\n /** Da utilizzare per impedire la modifica del valore contenuto. */\n readOnly?: boolean;\n /** Associato all'attributo readOnly mostra il campo con lo stile classico, mantenendo lo stato di sola lettura. */\n normalized?: boolean;\n /** Utilizzare per mostrare il successo nella validazione del valore nel campo Input */\n valid?: boolean;\n innerRef?: Ref<HTMLInputElement>;\n /** Utilizzare per mostrare testo statico non modificabile. */\n plaintext?: boolean;\n /** Utilizzare per mostrare un elemento addon a fianco (prima o dopo) il campo input all'interno del componente */\n addon?: boolean;\n /** Utilizzare per mostrare un elemento un simbolo attivando la proprietà addon nel campo input all'interno del componente */\n addonText?: string;\n /** Oggetto contenente la nuova mappatura per le classi CSS. */\n cssModule?: CSSModule;\n /** Classi aggiuntive da usare per il wrapper del componente Input */\n wrapperClassName?: string;\n /**\n * Classi aggiuntive da usare per il wrapper del componente Input.\n * @deprecated. Usare `wrapperClassName`.\n * */\n wrapperClass?: string;\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Input */\n className?: string;\n /**\n * Usare \"plaintext\".\n * @deprecated\n */\n static?: boolean;\n /** Quando attivo rimuove il componente contenitore dell'Input. Utile per un controllo maggiore dello styling */\n noWrapper?: boolean;\n testId?: string;\n}\n\nexport const Input = ({\n id,\n className,\n cssModule,\n type = 'text',\n tag,\n addon,\n addonText,\n static: staticInput,\n plaintext,\n innerRef,\n label,\n incrementLabel,\n decrementLabel,\n validationText,\n infoText,\n placeholder,\n normalized,\n value,\n wrapperClass: originalWrapperClassOld,\n wrapperClassName: originalWrapperClass,\n size,\n testId,\n noWrapper = false,\n ...attributes\n}: InputProps) => {\n const [isHidden, setHidden] = useState(true);\n const [hasIcon, toggleIcon] = useState(true);\n\n const { toggleFocusLabel, toggleBlurLabel, isFocused } = useFocus<HTMLInputElement>({\n onFocus: attributes.onFocus,\n onBlur: attributes.onBlur\n });\n\n const toggleShow = useCallback(() => {\n setHidden(!isHidden);\n toggleIcon(!hasIcon);\n }, [hasIcon, isHidden]);\n\n const divResizeRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const [width, setWidth] = useState('100');\n\n useEffect(() => {\n if (divResizeRef.current != null && divResizeRef.current.classList.contains('input-number-adaptive')) {\n if (!value) {\n setWidth(`calc(70px)`);\n } else {\n setWidth(`calc(70px + ${`${value}`.length}ch)`);\n }\n }\n }, [value]);\n\n let { bsSize, valid, ...rest } = attributes;\n\n const Tag = getTag({ tag, plaintext, staticInput, type });\n addon = addonText != null ? true : addon;\n const formControlClass = getFormControlClass(\n {\n plaintext,\n staticInput,\n type,\n addon,\n normalized\n },\n cssModule\n );\n const validationTextControlClass = getValidationTextControlClass({ valid }, cssModule);\n\n const extraAttributes: {\n type?: InputType;\n size?: number;\n ['aria-describedby']?: string;\n } = {};\n if (size && !isNumber(size)) {\n notifyDeprecation('Please use the prop \"bsSize\" instead of the \"size\" to bootstrap\\'s input sizing.');\n bsSize = size as unknown as InputProps['bsSize'];\n } else {\n extraAttributes.size = size;\n }\n\n if (Tag === 'input' || typeof tag !== 'string') {\n extraAttributes.type = type;\n }\n\n // associate the input field with the help text\n const infoId = id ? `${id}Description` : undefined;\n if (id) {\n extraAttributes['aria-describedby'] = infoId;\n }\n\n if (\n attributes.children &&\n !(plaintext || staticInput || type === 'select' || typeof Tag !== 'string' || Tag === 'select')\n ) {\n notifyDeprecation(\n `Input with a type of \"${type}\" cannot have children. Please use \"value\"/\"defaultValue\" instead.`\n );\n delete attributes.children;\n }\n\n const inputPassword = extraAttributes.type === 'password';\n\n const indeterminateCheckboxInput = type === 'checkbox' && className?.includes('semi-checked');\n\n // Styling\n const { activeClass, extraLabelClass, validationTextClass, inputClasses, wrapperClass } = getClasses(\n className,\n type,\n {\n valid,\n bsSize,\n placeholder,\n value,\n label,\n validationText,\n normalized: Boolean(normalized),\n inputPassword,\n formControlClass,\n validationTextControlClass,\n isFocused: isFocused,\n originalWrapperClass: originalWrapperClass || originalWrapperClassOld\n },\n cssModule\n );\n\n // set of attributes always shared by the Input components\n const sharedAttributes = {\n id,\n onFocus: toggleFocusLabel,\n onBlur: toggleBlurLabel,\n value: value,\n ref: innerRef\n };\n\n // set of attributes always shared by the wrapper component\n const containerProps = {\n id,\n infoId,\n infoText,\n activeClass,\n extraLabelClass,\n label,\n validationTextClass,\n validationText,\n wrapperClass\n };\n\n if (noWrapper) {\n return (\n <Tag\n {...rest}\n {...extraAttributes}\n className={inputClasses}\n {...sharedAttributes}\n placeholder={placeholder}\n data-testid={testId}\n />\n );\n }\n\n const clickIncrDecr = (mode: number) => {\n var step = parseFloat(inputRef.current?.step ? inputRef.current.step : '1');\n const min = parseFloat(inputRef.current?.min ? inputRef.current.min : 'Nan');\n const max = parseFloat(inputRef.current?.max ? inputRef.current.max : 'Nan');\n step = isNaN(step) ? 1 : step;\n const newValue = parseFloat(inputRef.current?.value ? inputRef.current.value : '0') + mode * step;\n if (!isNaN(max) && newValue > max) {\n return;\n }\n if (!isNaN(min) && newValue < min) {\n return;\n }\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value')?.set;\n nativeInputValueSetter?.call(inputRef.current, `${newValue}`);\n var ev2 = new Event('input', { bubbles: true });\n inputRef.current?.dispatchEvent(ev2);\n };\n\n if (['currency', 'percentage', 'adaptive', 'number'].includes(type)) {\n return (\n <InputContainer {...containerProps}>\n <div\n className={classNames({\n 'input-group': true,\n 'input-number': true,\n disabled: rest.disabled,\n 'input-number-percentage': type == 'percentage',\n 'input-number-currency': type == 'currency',\n 'input-number-adaptive': type == 'adaptive'\n })}\n style={{ width }}\n ref={divResizeRef}\n >\n {['currency', 'percentage'].includes(type) && (\n <span className='input-group-text fw-semibold'>{addonText}</span>\n )}\n <Tag\n {...rest}\n {...extraAttributes}\n {...sharedAttributes}\n className={inputClasses}\n data-testid={testId}\n type='number'\n ref={inputRef}\n />\n <span className='input-group-text align-buttons flex-column'>\n <button className='input-number-add' onClick={() => clickIncrDecr(1)} type='button'>\n <span className='visually-hidden'>{incrementLabel || ''}</span>\n </button>\n <button className='input-number-sub' onClick={() => clickIncrDecr(-1)} type='button'>\n <span className='visually-hidden'>{decrementLabel || ''}</span>\n </button>\n </span>\n </div>\n </InputContainer>\n );\n }\n\n if (placeholder) {\n return (\n <InputContainer {...containerProps}>\n <Tag\n {...rest}\n {...extraAttributes}\n {...sharedAttributes}\n className={inputClasses}\n placeholder={placeholder}\n data-testid={testId}\n />\n </InputContainer>\n );\n }\n\n if (indeterminateCheckboxInput) {\n return (\n <InputContainer {...containerProps}>\n <Tag\n {...rest}\n {...extraAttributes}\n {...sharedAttributes}\n className={inputClasses}\n data-testid={testId}\n indeterminate={'true'}\n />\n </InputContainer>\n );\n }\n\n if (inputPassword) {\n return (\n <InputContainer {...containerProps}>\n <Tag\n {...rest}\n {...extraAttributes}\n {...sharedAttributes}\n type={isHidden ? 'password' : 'text'}\n className={inputClasses}\n placeholder={placeholder}\n data-testid={testId}\n />\n <span className='password-icon' aria-hidden='true'>\n <Icon\n size='sm'\n icon={`it-password-${hasIcon ? 'visible' : 'invisible'}`}\n className='password-icon-visible'\n onClick={toggleShow}\n />\n </span>\n </InputContainer>\n );\n }\n if (normalized) {\n return (\n <InputContainer {...containerProps}>\n <Tag\n {...rest}\n {...extraAttributes}\n {...sharedAttributes}\n className={inputClasses}\n data-testid={testId}\n readOnly\n />\n </InputContainer>\n );\n }\n if (label || validationText) {\n return (\n <InputContainer {...containerProps}>\n <Tag {...rest} {...extraAttributes} {...sharedAttributes} className={inputClasses} data-testid={testId} />\n </InputContainer>\n );\n }\n\n return <Tag {...rest} {...extraAttributes} className={inputClasses} {...sharedAttributes} data-testid={testId} />;\n};\n","import React, { FC, AnchorHTMLAttributes, ElementType, MouseEvent, MouseEventHandler } from 'react';\nimport classNames from 'classnames';\n\nexport interface LinkListItemProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Indica se l'elemento è attivo o no */\n active?: boolean;\n /** Indica se l'elemento è disabilitato o no */\n disabled?: boolean;\n /** Indica se l'elemento ha dimensioni larghe o no */\n large?: boolean;\n /** Indica se l'elemento è bold o no */\n bold?: boolean;\n /** Indica se l'elemento è un titolo. */\n header?: boolean;\n /** Indica se l'elemento è un divisore */\n divider?: boolean;\n /** Indica se l'elemento è in un dropdown */\n inDropdown?: boolean;\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente LinkListItem */\n className?: string;\n /** Classi aggiuntive da usare per l'elemento contenitore dell'item */\n wrapperClassName?: string;\n /** Indica il link a cui l'elemento deve puntare. */\n href?: string;\n /** Indica il link route a cui l'elemento deve puntare. */\n to?: string;\n testId?: string;\n}\n\nconst handleDisabledOnClick = (e: MouseEvent<HTMLAnchorElement>) => {\n e.preventDefault();\n};\n\nexport const LinkListItem: FC<LinkListItemProps> & {\n TitleIconWrapper: typeof LinkListTitleIconWrapper;\n} = ({\n className,\n active,\n disabled,\n header,\n divider,\n bold,\n large,\n href,\n tag = 'a',\n wrapperClassName,\n testId,\n children,\n inDropdown,\n ...attributes\n}) => {\n let Tag = tag;\n const classes = classNames(\n className,\n {\n active,\n disabled,\n header,\n divider,\n large: large,\n medium: bold,\n 'dropdown-item': inDropdown\n },\n 'list-item'\n );\n\n // Prevent click event when disabled.\n const handlers: { onClick?: MouseEventHandler<HTMLAnchorElement> } = {};\n if (disabled) {\n handlers.onClick = handleDisabledOnClick;\n }\n\n if (header) {\n Tag = 'h3';\n } else if (divider) {\n Tag = 'span';\n }\n\n if (inDropdown) {\n attributes['role'] = 'menuitem';\n attributes['tabIndex'] = 0;\n }\n\n if (header && href) {\n return (\n <li className={wrapperClassName} data-testid={testId}>\n <Tag>\n <a href={href || '#'} {...attributes} className={classes} {...handlers}>\n {children}\n </a>\n </Tag>\n </li>\n );\n }\n\n return (\n <li className={wrapperClassName} data-testid={testId}>\n <Tag\n role={attributes.onClick ? 'button' : undefined}\n {...attributes}\n className={classes}\n href={href}\n {...handlers}\n >\n {children}\n </Tag>\n </li>\n );\n};\n\nconst LinkListTitleIconWrapper: FC<LinkListItemProps> = ({ children }) => {\n return <span className='list-item-title-icon-wrapper'>{children}</span>;\n};\n\nLinkListItem.TitleIconWrapper = LinkListTitleIconWrapper;\n","import React, { FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface MegamenuFooterProps extends HTMLAttributes<HTMLDivElement> {\n /** Classi aggiuntive da usare per il componente Megamenu Footer */\n className?: string;\n vertical?: boolean;\n}\n\nexport const MegamenuFooter: FC<MegamenuFooterProps> & {\n Item: typeof Item;\n} = ({ className, children, vertical, ...attributes }) => {\n const classes = classNames(className, `it-footer-link-wrapper${vertical ? '-vertical' : ''}`);\n return (\n <div className={classes} {...attributes}>\n {children}\n </div>\n );\n};\n\nconst Item: FC<HTMLAnchorElement> = ({ href, children }) => {\n return (\n <a href={href || '#'} className='it-footer-link'>\n {children}\n </a>\n );\n};\n\nMegamenuFooter.Item = Item;\n","/*\n * This work derives from the React Use Navscroll library\n * Released under the MIT license by Marco Liberati\n * Code: https://github.com/dej611/react-use-navscroll\n */\n\n/* eslint-disable no-restricted-globals */\nimport { useCallback, useEffect, useState } from 'react';\nimport { debounce } from './debounce';\nimport { useNavScrollArgs } from './types';\n\nconst DEFAULT_DELAY = 150;\n\nexport type useSizeDetectorArgs = Omit<useNavScrollArgs, 'offset'> & {\n activeId: string | null;\n hasWindow: boolean;\n setForceRecompute: (force: boolean) => void;\n updateActiveId: (id: string | null) => void;\n};\n\nexport const useSizeDetector = ({\n root,\n isHorizontal,\n activeId,\n onChange,\n setForceRecompute,\n updateActiveId,\n hasWindow\n}: useSizeDetectorArgs) => {\n const [targetSize, setTargetSize] = useState<number>(1);\n\n const useViewport =\n root == null ||\n (hasWindow && (isHorizontal ? window.innerWidth < root.clientWidth : window.innerHeight < root.clientHeight));\n\n const scrollEnd = useCallback(\n debounce(() => {\n setForceRecompute(true);\n }, DEFAULT_DELAY),\n [setForceRecompute]\n );\n\n useEffect(() => {\n if (!hasWindow) {\n return;\n }\n let observer: IntersectionObserver | null = null;\n\n const resizeWindowHandler = () => {\n setTimeout(() => {\n setTargetSize(isHorizontal ? window.innerWidth : window.innerHeight);\n }, DEFAULT_DELAY);\n };\n\n const resizeElementHandler: IntersectionObserverCallback = (entries) => {\n const [entry] = entries;\n if (!useViewport) {\n setTargetSize(isHorizontal ? entry.boundingClientRect.width : entry.boundingClientRect.height);\n }\n\n if (entry.intersectionRatio === 0) {\n if (activeId != null) {\n updateActiveId(null);\n if (onChange) {\n onChange({\n added: null,\n removed: activeId\n });\n }\n }\n }\n };\n\n addEventListener('scroll', scrollEnd);\n if (useViewport) {\n setTargetSize(isHorizontal ? window.innerWidth : window.innerHeight);\n addEventListener('resize', resizeWindowHandler);\n }\n if (root) {\n observer = new IntersectionObserver(resizeElementHandler);\n observer.observe(root);\n }\n return () => {\n if (observer) {\n observer.disconnect();\n }\n removeEventListener('resize', resizeWindowHandler);\n removeEventListener('scroll', scrollEnd);\n };\n }, [root, isHorizontal, activeId, onChange, useViewport, scrollEnd, hasWindow, updateActiveId]);\n return { targetSize, useViewport };\n};\n","/*\n * This work derives from the React Use Navscroll library\n * Released under the MIT license by Marco Liberati\n * Code: https://github.com/dej611/react-use-navscroll\n */\n\nexport const debounce = (callback: Function, wait: number) => {\n let timeoutId: NodeJS.Timeout;\n return (...args: unknown[]) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n callback.apply(null, args);\n }, wait);\n };\n};\n","/*\n * This work derives from the React Use Navscroll library\n * Released under the MIT license by Marco Liberati\n * Code: https://github.com/dej611/react-use-navscroll\n */\n\nimport { createRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { debounce } from './debounce';\nimport type { TrackedElement, useNavScrollArgs, useNavScrollResult } from './types';\nimport { useSizeDetector } from './useSizeDetector';\n\nconst hasWindow = typeof window !== 'undefined';\nconst REGISTER_DELAY = 50;\n\nfunction resolveHierarchyIds(id: string, lookup: Record<string, string | undefined>) {\n const newActiveIds = [id];\n let lastId: string | undefined = newActiveIds[0];\n while (lastId != null && lookup[lastId] != null) {\n newActiveIds.push(lookup[lastId] as string);\n lastId = lookup[lastId];\n }\n // return a list from parent to current child\n return newActiveIds.reverse();\n}\n/**\n * This is the main hook: use it in a react function component to track\n * the state of the passed ids. The function accepts an initial configuration\n * of type `useNavScrollArgs` to customize the behaviour.\n */\nexport function useNavScroll(args: useNavScrollArgs = {}): useNavScrollResult {\n const { onChange, root, offset = 50, isHorizontal = false } = args;\n const els = useRef<TrackedElement[]>([]);\n const [counter, setCounter] = useState(0);\n const [forceRecompute, setForceRecompute] = useState(false);\n const [activeId, updateActiveId] = useState<string | null>(null);\n\n const { targetSize, useViewport } = useSizeDetector({\n root,\n isHorizontal,\n onChange,\n activeId,\n setForceRecompute,\n updateActiveId,\n hasWindow\n });\n\n const observerMargin = Math.floor((targetSize * offset) / 100) || 1;\n const observerOptions = useMemo(() => {\n const topMargin = observerMargin % 2 === 1 ? observerMargin - 1 : observerMargin;\n const bottomMargin = targetSize - observerMargin;\n return {\n root: useViewport ? null : root,\n rootMargin: isHorizontal\n ? `0px ${-topMargin}px 0px ${-bottomMargin}px`\n : `${-topMargin}px 0px ${-bottomMargin}px 0px`\n };\n }, [root, targetSize, observerMargin, isHorizontal, useViewport]);\n\n const elsLookup = useMemo(() => {\n const lookup: Record<string, string | undefined> = {};\n for (const { id, parent } of els.current) {\n lookup[id] = parent;\n }\n return lookup;\n }, []);\n const activeIds = useMemo(() => (activeId ? resolveHierarchyIds(activeId, elsLookup) : []), [activeId, elsLookup]);\n\n const activeLookups = useMemo(() => new Set(activeIds), [activeIds]);\n useEffect(() => {\n if (!hasWindow) {\n return;\n }\n const handleIntersection: IntersectionObserverCallback = (entries) => {\n let intersectionId = null;\n let topMin = Infinity;\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (topMin > entry.boundingClientRect.top) {\n topMin = entry.boundingClientRect.top;\n intersectionId = entry.target.id;\n }\n }\n });\n if (intersectionId != null) {\n updateActiveId(intersectionId);\n if (onChange) {\n const diffIds = {\n added: intersectionId,\n removed: activeId\n };\n onChange(diffIds);\n }\n }\n };\n\n const observer = new IntersectionObserver(handleIntersection, observerOptions);\n\n els.current.forEach(({ ref }) => {\n if (ref && ref.current) {\n observer.observe(ref.current);\n }\n });\n\n if (forceRecompute) {\n handleIntersection(observer.takeRecords(), observer);\n setForceRecompute(false);\n }\n return () => {\n observer.disconnect();\n };\n }, [\n activeIds,\n updateActiveId,\n els,\n elsLookup,\n onChange,\n activeLookups,\n activeId,\n observerOptions,\n isHorizontal,\n root,\n forceRecompute\n ]);\n\n const refresh = useCallback(() => {\n debounce(() => {\n setCounter(counter + 1);\n }, REGISTER_DELAY);\n }, [counter]);\n\n const register = useCallback(\n (id, options = {}) => {\n if (!hasWindow) {\n return { id, ref: null };\n }\n const alreadyRegistered = id in elsLookup;\n const entry = alreadyRegistered ? els.current.find(({ id: existingId }) => existingId === id) : options;\n const ref = (entry && entry.ref) || createRef();\n\n if (!alreadyRegistered) {\n els.current = [...els.current, { id, ref, parent: options.parent }];\n refresh();\n }\n return { id, ref };\n },\n [elsLookup, refresh]\n );\n\n const unregister = useCallback((idToUnregister: string) => {\n els.current = els.current.filter(({ id }) => id !== idToUnregister);\n }, []);\n\n const isActive = useCallback((id: string) => activeLookups.has(id), [activeLookups]);\n\n const getActiveRef = useCallback(() => {\n const entry = els.current.find(({ id }) => id === activeId);\n return entry ? entry.ref : null;\n }, [activeId]);\n\n return {\n register,\n unregister,\n activeIds,\n isActive,\n getActiveRef\n };\n}\n","import { createContext, useContext } from 'react';\nimport { NotificationCommonProps } from './types';\n\nexport const PositionContext = createContext<NotificationCommonProps['fix']>(undefined);\n\nexport function usePosition() {\n const context = useContext(PositionContext);\n return context;\n}\n","import React, { CSSProperties, ReactChild } from 'react';\nimport { Button } from '../Button/Button';\nimport classNames from 'classnames';\nimport { Icon } from '../Icon/Icon';\nimport { usePosition } from './usePosition';\nimport { NotificationCommonProps } from './types';\n\nexport interface NotificationToastProps {\n /** Indica quale icona affiancare al titolo. */\n icon?: string;\n /** Lo stato corrente della notifica (modifica il colore delle icone e bordo) */\n state?: 'success' | 'error' | 'info' | 'warning';\n /** Il titolo della notifica */\n title?: string;\n}\n\ntype NotificationElementProps = {\n closeToast?: () => void;\n toastProps?: any;\n title: string;\n body?: ReactChild;\n options: NotificationOptions;\n};\n\nexport const getBorderStyleFix = (fix: NotificationCommonProps['fix']) => {\n const borderReset = ['top', 'bottom', 'right', 'left']\n .filter((curPosition) => (fix === 'left' ? curPosition !== 'right' : curPosition !== 'left'))\n .map(\n (borderPosition) =>\n `border${borderPosition[0].toUpperCase() + borderPosition.substring(1)}` as\n | 'borderTop'\n | 'borderBottom'\n | 'borderLeft'\n | 'borderRight'\n );\n\n const customStyle: CSSProperties = {};\n for (const borderPos of borderReset) {\n customStyle[borderPos] = 'none';\n }\n return customStyle;\n};\n\nexport type NotificationOptions = NotificationCommonProps &\n Pick<NotificationToastProps, 'icon' | 'state'> & {\n /* Quando abilitato mostra un pulsante per la chiusura del toast prima della chiusura naturale. Default: `false`. */\n dismissable?: boolean;\n /* Una funzione invocata all'apertura della notifica */\n onOpen?: <T = NotificationElementProps>(props: T) => void;\n /* Una funziona invocata alla chiusura nella notifica */\n onClose?: <T = NotificationElementProps>(props: T) => void;\n };\n\nfunction pickIcon(state: NotificationToastProps['state']) {\n switch (state) {\n case 'error':\n return 'it-close-circle';\n case 'info':\n return 'it-info-circle';\n case 'warning':\n return 'it-error';\n case 'success':\n return 'it-check-circle';\n default:\n return undefined;\n }\n}\n\nfunction NotificationElement({ closeToast, toastProps, title, body, options }: NotificationElementProps) {\n const globalFix = usePosition();\n const { icon: userIcon, state, fix: localFix, dismissable } = options;\n const fixPosition = localFix == null && globalFix ? globalFix : localFix || globalFix;\n const { autoClose, style } = toastProps;\n const content = typeof body === 'string' ? <p>{body}</p> : body;\n const icon = userIcon || pickIcon(state);\n\n const borderFixes = getBorderStyleFix(fixPosition);\n\n const wrapperClass = classNames('notification', state, {\n [`${fixPosition}-fix`]: fixPosition,\n 'with-icon': icon,\n dismissable: dismissable || !autoClose\n });\n\n // Need to override some toast styling here\n const customStyle: CSSProperties = {\n ...style,\n ...borderFixes,\n // force a display as the notification class has a \"display: none\" set\n display: 'block'\n };\n\n return (\n <div className={wrapperClass} style={customStyle}>\n <h5>\n {title}\n {icon ? <Icon icon={icon} /> : null}\n </h5>\n {content}\n {(!autoClose || dismissable) && (\n <Button className='notification-close' onClick={closeToast}>\n <Icon icon='it-close' />\n <span className='visually-hidden'>Chiudi notifica: {title}</span>\n </Button>\n )}\n </div>\n );\n}\n\n/**\n * Internal use only. Exported for documentation purposes.\n * @internal\n */\nexport const createNotification = (\n title: string,\n body: ReactChild | undefined,\n options: NotificationOptions,\n closeToast?: () => void,\n toastProps?: any\n) => (\n <NotificationElement title={title} body={body} options={options} closeToast={closeToast} toastProps={toastProps} />\n);\n","import React, { CSSProperties, FC, useEffect } from 'react';\nimport { ToastProps, useToast, cssTransition } from 'react-toastify';\nimport { NotificationToastProps } from './NotificationContent';\nimport { NotificationCommonProps } from './types';\n\nexport type NotificationProps = Omit<ToastProps, 'transition'> & NotificationCommonProps & NotificationToastProps;\n\nconst dummyTransition = cssTransition({ enter: '', exit: '' });\n\nexport const Notification: FC<NotificationProps> = (props) => {\n const { toastRef, eventHandlers } = useToast({\n ...props,\n transition: dummyTransition\n });\n const { children, autoClose, onClick, role, toastId, deleteToast, closeToast, isIn } = props;\n\n const customStyle: CSSProperties = {\n display: isIn ? 'block' : 'none'\n };\n\n useEffect(() => {\n if (!isIn) deleteToast();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isIn]);\n\n useEffect(() => {\n let timer: NodeJS.Timeout | number;\n if (autoClose) {\n timer = setTimeout(() => closeToast(), autoClose);\n }\n return () => {\n if (timer != null) {\n clearTimeout(Number(timer));\n }\n };\n }, [autoClose, closeToast]);\n return (\n <div\n id={toastId as string}\n onClick={onClick}\n {...eventHandlers}\n style={customStyle}\n ref={toastRef}\n {...(isIn && { role: role })}\n >\n {children}\n </div>\n );\n};\n","import React, { CSSProperties } from 'react';\nimport { cssTransition, useToastContainer } from 'react-toastify';\nimport { Notification } from './Notification';\nimport { getBorderStyleFix } from './NotificationContent';\nimport { NotificationCommonProps } from './types';\nimport { PositionContext } from './usePosition';\n\nconst KitTransition = cssTransition({\n enter: `d-block`,\n exit: `d-none`,\n appendPosition: false\n});\n\nexport interface NotificationManagerProps extends NotificationCommonProps {\n /* Stili inline da applicare al container */\n style?: CSSProperties;\n}\n\nexport const NotificationManager = (props: NotificationManagerProps) => {\n const customStyle: CSSProperties = {\n ...props.style,\n ...getBorderStyleFix(props.fix)\n };\n\n const hookProps = {\n autoClose: props.duration ?? 6000,\n closeOnClick: props.closeOnClick ?? true,\n hideProgressBar: true,\n transition: KitTransition,\n rtl: false,\n pauseOnHover: true,\n pauseOnFocusLoss: true,\n newestOnTop: false, // TODO: sort this out\n draggable: false,\n role: 'alert',\n style: customStyle,\n enableMultiContainer: props.containerId != null // enable multi container when an explicit id is passed\n };\n\n const { getToastToRender, containerRef, isToastActive } = useToastContainer(hookProps);\n\n const { containerId, style, fix } = props;\n\n return (\n <PositionContext.Provider value={fix}>\n <div ref={containerRef} id={containerId as string} style={style}>\n {getToastToRender((_, toastList) => {\n return toastList.map(({ content, props: toastProps }) => {\n return (\n <Notification\n {...toastProps}\n isIn={isToastActive(toastProps.toastId)}\n key={`notification-${toastProps.key}`}\n >\n {content}\n </Notification>\n );\n });\n })}\n </div>\n </PositionContext.Provider>\n );\n};\n","import { ReactChild } from 'react';\nimport { toast } from 'react-toastify';\nimport { createNotification } from './NotificationContent';\nimport type { NotificationOptions } from './NotificationContent';\nimport { NotificationId } from './types';\n\nexport function notify(title: string, options?: NotificationOptions): NotificationId;\n\nexport function notify(title: string, body: ReactChild, options?: NotificationOptions): NotificationId;\n\nexport function notify(\n title: string,\n bodyOrOptions?: ReactChild | NotificationOptions,\n options?: NotificationOptions\n): NotificationId {\n let body: ReactChild | undefined = isReactChild(bodyOrOptions) ? bodyOrOptions : undefined;\n const safeOptions = isReactChild(bodyOrOptions) ? { ...options } : bodyOrOptions || {};\n const NotificationContent = createNotification(title, body, safeOptions);\n const internalOptions = {\n ...safeOptions,\n autoClose: safeOptions.duration\n };\n return toast(NotificationContent, internalOptions) as NotificationId;\n}\n\nfunction isReactChild(el: ReactChild | NotificationOptions | undefined): el is ReactChild {\n return el != null && (typeof el === 'string' || typeof el === 'number' || 'type' in el);\n}\n\nnotify.dismiss = (id?: NotificationId) => toast.dismiss(id);\n","import React, { Fragment, FC, ReactNode } from 'react';\nimport classNames from 'classnames';\n\nimport { FormGroup, Label } from 'reactstrap';\nimport { Input } from '../Input/Input';\nimport type { InputProps } from '../Input/Input';\nimport { Icon } from '../Icon/Icon';\nimport { noop } from '../utils';\n\ntype UnusedProps =\n | 'bsSize'\n | 'size'\n | 'static'\n | 'plaintext'\n | 'normalized'\n | 'addon'\n | 'placeholder'\n | 'label'\n | 'value'\n | 'type';\nexport interface RatingProps extends Omit<InputProps, UnusedProps> {\n /** La lista di 5 id, per ciascun elemento intero del Rating. La lista deve essere ordinata dal rating 1 al rating 5. */\n inputs: string[];\n /** Il campo \"label\" è impostato di default su \"Valuta ${n} stelle su 5\", ma può essere personalizzato con questa funzione che riceve il numero input come argomento `function (n: number) => string`. */\n labelTemplate?: (value: 1 | 2 | 3 | 4 | 5) => string;\n /** Da utilizzare in caso legenda principale del Rating. Passare una componente React da mostrare come legenda (all'interno del tag `<legend>`). È possibile mostrare la leggenda solo ai dispositivi screen reader */\n legend?: ReactNode | { content: ReactNode; srOnly: boolean };\n /** Parametro name da dare all'input */\n name: string;\n /** Classi aggiuntive da usare per il componente wrapper del Rating */\n wrapperClassName?: string;\n /** Classi aggiuntive da usare per ciascun elemento all'interno del componente Rating */\n className?: string;\n /** Callback chiamata ad ogni cambio di valore di rating. Il nuovo valore ed il name verranno passati: `function (n, name) => void` */\n onChangeRating?: (value: 1 | 2 | 3 | 4 | 5 | number, name: string) => void;\n /** Rende il componente read-only */\n readOnly?: boolean;\n /** Il valore corrente del componente: deve essere compreso tra 1 e 5 */\n value?: 1 | 2 | 3 | 4 | 5 | number;\n testId?: string;\n}\n\nexport const isCustomLegendObject = (\n legend: ReactNode | { content: ReactNode; srOnly: boolean }\n): legend is { content: ReactNode; srOnly: boolean } => {\n return legend != null && typeof legend === 'object' && 'content' in legend;\n};\n\nexport const Rating: FC<RatingProps> = ({\n className,\n inputs,\n legend,\n name,\n readOnly,\n value,\n wrapperClassName,\n testId,\n labelTemplate = (value: 1 | 2 | 3 | 4 | 5) => `Valuta ${value} stelle su 5`,\n onChangeRating = noop,\n ...attributes\n}) => {\n // Input data\n // On the DOM we have to go from 5 to 1\n const safeInputs = (inputs || []).reverse();\n\n // Fields\n const labelFn = labelTemplate;\n\n const onChange = readOnly ? noop : onChangeRating;\n\n const wrapperClasses = classNames(wrapperClassName, {\n 'rating rating-read-only': readOnly,\n 'rating rating-label': legend\n });\n\n const fieldClasses = classNames(className);\n const extraFieldAttrs = readOnly ? { 'aria-hidden': true } : {};\n\n // Legend\n const isLegendString = typeof legend === 'string';\n\n let legendClass: string = '';\n let legendText: ReactNode = legend as string;\n\n if (isCustomLegendObject(legend)) {\n legendClass = classNames({\n 'visually-hidden': legend.srOnly\n });\n legendText = legend.content;\n }\n\n const legendContent =\n isCustomLegendObject(legend) || isLegendString ? <legend className={legendClass}>{legendText}</legend> : legend;\n\n return (\n <FormGroup\n cssModule={{ 'form-group': 'rating' }}\n tag='fieldset'\n className={wrapperClasses}\n data-testid={testId}\n {...attributes}\n >\n {legend && legendContent}\n {safeInputs.map((id, i) => {\n const currentValue = (5 - i) as 1 | 2 | 3 | 4 | 5;\n\n return (\n <Fragment key={id}>\n <Input\n type='radio'\n id={id}\n name={name}\n value={String(currentValue)}\n cssModule={{ 'form-control': '' }}\n className={fieldClasses}\n onChange={() => onChange(currentValue, name)}\n checked={value === currentValue}\n disabled={readOnly}\n {...extraFieldAttrs}\n />\n <Label className='full' for={id}>\n <Icon icon='it-star-full' size='sm' />\n <span className='visually-hidden'>{labelFn(currentValue)}</span>\n </Label>\n </Fragment>\n );\n })}\n </FormGroup>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface StepperContentProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Badge */\n className?: string;\n /** Abilita il tema scuro per il componente StepperContent */\n dark?: boolean;\n testId?: string;\n}\n\nconst contentStyleLight = {\n height: '400px',\n border: '2px dashed #eee',\n background: '#fafafa',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n color: '#333'\n};\n\nconst contentStyleDark = {\n height: '400px',\n border: '2px dashed #eee',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n color: '#EEE',\n borderColor: '#aaa',\n background: '#17324d',\n opacity: 0.5\n};\n\nexport const StepperContent: FC<StepperContentProps> = ({ tag = 'div', className, dark, ...attributes }) => {\n const Tag = tag;\n const classes = classNames('steppers-content', className);\n return (\n <Tag\n {...attributes}\n className={classes}\n style={(dark && contentStyleDark) || contentStyleLight}\n aria-live='polite'\n />\n );\n};\n","import React, { FC, HTMLAttributes, ElementType, ReactNode } from 'react';\nimport classNames from 'classnames';\nimport { Icon } from '../Icon/Icon';\n\nconst variants = {\n confirmed: 'confirmed',\n active: 'active',\n done: 'done',\n mobile: 'steppers-index',\n // @deprecated\n 'steppers-index': 'steppers-index'\n} as const;\n\nexport interface StepperHeaderElementProps extends HTMLAttributes<HTMLLIElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente StepperHeader */\n className?: string;\n /**\n * Il tipo di step:\n * * confirmed (confermato),\n * * active (attivo - su mobile viene mostrato solo questo)\n * * done (completato)\n * * mobile (visibile solo su mobile, usato per mostrare lo stato attuale di progresso)\n * * steppers-index (deprecato) usare mobile\n * */\n variant?: keyof typeof variants;\n /** Icona da mostrare alla destra dell'etichetta dello step */\n appendIcon?: string;\n /** Icona da mostrare alla sinistra dell'etichetta dello step */\n prependIcon?: string;\n /** Utilizzare questo attributo per elementi aggiuntivi da mostrare su dispositivi mobile per lo step attivo */\n stepperNumber?: ReactNode;\n /** Nasconde il bordo inferiore azzurro per lo step */\n noLine?: boolean;\n /** @deprecated Usare `appendIcon` */\n icon?: string;\n /** @deprecated Usare `prependIcon` */\n iconName?: string;\n testId?: string;\n}\n\nexport const StepperHeaderElement: FC<StepperHeaderElementProps> = ({\n tag = 'li',\n variant,\n appendIcon,\n prependIcon,\n icon,\n iconName,\n noLine,\n stepperNumber,\n testId,\n children,\n className,\n ...attributes\n}) => {\n const Tag = tag;\n const wrapperClasses = classNames(variant ? variants[variant] : '', className, {\n 'no-line': noLine\n });\n const iconClass = classNames('icon', 'steppers-success');\n const spanClass = classNames('steppers-number');\n\n const iconToAppend = appendIcon || icon;\n const iconToPrepend = prependIcon || iconName;\n return (\n <Tag {...attributes} className={wrapperClasses} data-testid={testId}>\n {iconToPrepend && <Icon icon={iconToPrepend} />}\n {stepperNumber && <span className={spanClass}>{stepperNumber}</span>}\n {children}\n {iconToAppend && <Icon icon={iconToAppend} className={iconClass} />}\n </Tag>\n );\n};\n","import React, { ElementType, FC, HTMLAttributes, createContext } from 'react';\nimport classnames from 'classnames';\n\nexport const SizeContext = createContext<ToolbarProps['size']>(undefined);\n\nexport interface ToolbarProps extends HTMLAttributes<HTMLElement> {\n tag?: ElementType;\n size?: 'large' | 'medium' | 'small';\n testId?: string;\n vertical?: boolean;\n}\n\nexport const Toolbar: FC<ToolbarProps> = ({ tag = 'nav', size, testId, children, vertical, ...attributes }) => {\n const Tag = tag;\n const classes = classnames('toolbar', {\n [`toolbar-${size}`]: size && size !== 'large',\n 'toolbar-vertical': vertical\n });\n return (\n <SizeContext.Provider value={size || 'large'}>\n <Tag className={classes} {...attributes} data-testid={testId}>\n <ul>{children}</ul>\n </Tag>\n </SizeContext.Provider>\n );\n};\n","import React, { ElementType, FC, HTMLAttributes, MouseEvent, useContext } from 'react';\nimport classNames from 'classnames';\nimport { Icon } from '../Icon/Icon';\nimport { SizeContext, ToolbarProps } from './Toolbar';\nimport { Dropdown, DropdownProps, DropdownToggle } from 'reactstrap';\n\nexport interface ToolbarItemBadge {\n value?: number;\n label: string;\n srText: string;\n}\n\nexport interface ToolbarItemProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati. Il valore di default è il tag anchor. */\n tag?: ElementType;\n /** Indica l'elemento attivo nella Toolbar */\n active?: boolean;\n /** Mostra l'elemento come disabilitato nella Toolbar */\n disabled?: boolean;\n /** L'URL a cui far puntare il tag anchor. */\n url?: string;\n /**\n * L'etichetta da mostrare sotto l'icona. In caso di dimensioni più piccole verrà\n * automaticamente sintegrata in uno span per gli screen reader.\n */\n label?: string;\n /** Il nome dell'icona da utilizzare */\n iconName: string;\n testId?: string;\n /**\n * Un testo completo da mostrare per Toolbar di grandezza media e piccola con badge (ad esempio: \"ci sono 42 nuovi documenti da esaminare\")\n * @deprecated\n */\n srText?: string;\n /**\n * Il badge da mostrare sull'icona del ToolbarItem.\n * Un badge è composto da:\n *\n * * una label per screen reader da affiancare alla label corrente (ad esempio: \"da leggere\")\n * * un testo completo da mostrare per Toolbar di grandezza media e piccola (ad esempio: \"ci sono 42 nuovi documenti da esaminare\")\n * * un eventuale valore numerico (omesso in caso di un badge di alert)\n **/\n badge?: number | ToolbarItemBadge;\n /**\n * Indica che il ToolbarItem contiene un menu dropdown.\n * Quando questo attributo è attivo il contenuto del componente ToolbarItem verrà mostrato all'interno del dropdown.\n */\n dropdown?: boolean;\n /**\n * Quando l'opzione dropdown è attiva questo attributo controlla se\n * l'elemento è di tipo \"altro\" contenente altre icone/opzioni o no.\n */\n showMore?: boolean;\n /**\n * Quando il componente è in modalità dropdown permette di controllarne\n * lo stato di visibilità. Il valore di default è false.\n */\n isDropdownOpen?: boolean;\n /**\n * Da utilizzare quando l'attributo \"dropdown\" è attivo.\n * Gli attributi qui passati verranno inoltrati al componente Dropdown interno.\n */\n dropdownProps?: Omit<DropdownProps, 'toggle' | 'isOpen'>;\n /**\n * Funzione chiamata al click dell'element ToolbarItem\n */\n onClick?: (event: MouseEvent<HTMLAnchorElement>) => void;\n}\n\nconst disabledMessage = ' elemento disabilitato';\n\nfunction ToolbarItemLabel({\n label,\n size,\n disabled,\n badge\n}: {\n label: ToolbarItemProps['label'];\n size: ToolbarProps['size'];\n disabled: ToolbarItemProps['disabled'];\n badge?: ToolbarItemBadge;\n}) {\n const showSrText = size && size !== 'large';\n if (disabled) {\n if (!label || showSrText) {\n return <span className='visually-hidden'>{disabledMessage}</span>;\n }\n return (\n <>\n <span className='toolbar-label'>{label}</span>\n <span className='visually-hidden'>{disabledMessage}</span>\n </>\n );\n }\n if (!label) {\n return null;\n }\n\n return showSrText ? (\n <span className='visually-hidden'>{label}</span>\n ) : (\n <span className='toolbar-label'>\n {label}\n {badge?.label ? <span className='visually-hidden'>{badge.label}</span> : null}\n </span>\n );\n}\n\nexport const ToolbarItem: FC<ToolbarItemProps> = ({\n active = false,\n badge,\n url,\n iconName,\n label,\n tag = 'a',\n disabled,\n testId,\n srText,\n dropdown,\n dropdownProps,\n children,\n showMore,\n onClick,\n isDropdownOpen,\n ...attributes\n}) => {\n const Tag = tag;\n const size = useContext(SizeContext);\n const activeClass = classNames({ active, disabled });\n\n const ariaAttributes = {\n ...(disabled && { 'aria-disabled': true })\n };\n const badgeObject = typeof badge === 'number' ? { value: badge, label: srText || '', srText: srText || '' } : badge;\n\n const toolbarItemContent = (\n <>\n {badgeObject ? (\n <div className='badge-wrapper'>\n <span className='toolbar-badge'>{size !== 'large' ? null : badgeObject.value}</span>\n {size !== 'large' && <span className='visually-hidden'>{badgeObject.srText}</span>}\n </div>\n ) : null}\n <Icon icon={iconName} size={size === 'small' ? 'sm' : ''} />\n <ToolbarItemLabel label={label} size={size} disabled={disabled} badge={badgeObject} />\n </>\n );\n\n if (dropdown) {\n return (\n <li>\n <Dropdown {...dropdownProps} toggle={onClick} isOpen={isDropdownOpen}>\n <DropdownToggle\n disabled={disabled}\n caret\n className={classNames('btn-dropdown', { 'toolbar-more': showMore })}\n color=''\n >\n {toolbarItemContent}\n </DropdownToggle>\n {children}\n </Dropdown>\n </li>\n );\n }\n\n return (\n <li>\n <Tag\n href={url || '#'}\n className={activeClass}\n data-testid={testId}\n {...attributes}\n {...ariaAttributes}\n onClick={onClick}\n >\n {toolbarItemContent}\n </Tag>\n </li>\n );\n};\n","import React, { ElementType, FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface AccordionProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Badge */\n className?: string;\n /** Utilizzare questo attributo per ottenere header con sfondo di colore primario quando questi è attivo o all’hover. */\n background?: 'active' | 'hover';\n /** Utilizzare questo attributo per mostrare, mediante un'icona a sinistra, lo stato di apertura */\n iconLeft?: boolean;\n testId?: string;\n}\n\nexport const Accordion: FC<AccordionProps> = ({\n tag = 'div',\n className,\n background,\n iconLeft = false,\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const classes = classNames('accordion', className, {\n 'accordion-background-active': background === 'active',\n 'accordion-background-hover': background === 'hover',\n 'accordion-left-icon': iconLeft\n });\n\n return <Tag {...attributes} className={classes} data-testid={testId} />;\n};\n","import classNames from 'classnames';\nimport React, { ElementType, FC, HTMLAttributes, ReactNode } from 'react';\n\nexport interface AccordionHeaderProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente AccordionHeader */\n className?: string;\n /** Utilizzare questo attributo per indicare se l'elemento è attivo o no */\n active?: boolean;\n /** Questa funzione verrà chiamata quando avviene un click sul componente AccordionHeader */\n onToggle?: () => void;\n /** Contenuto aggiuntivo all'interno del bottone dell'AccordionHeader */\n append?: ReactNode;\n testId?: string;\n}\n\nexport const AccordionHeader: FC<AccordionHeaderProps> = ({\n className,\n tag = 'button',\n active = false,\n append,\n onToggle,\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const toggleClasses = classNames(className, 'accordion-button', {\n collapsed: !active\n });\n return (\n <div className='accordion-header' data-testid={testId}>\n <Tag\n data-bs-toggle='collapse'\n aria-expanded={active ? 'true' : 'false'}\n className={toggleClasses}\n onClick={onToggle}\n {...attributes}\n {...(tag === 'button' && { type: 'button' })}\n ></Tag>\n {append}\n </div>\n );\n};\n","import classNames from 'classnames';\nimport React, { ElementType, FC, HTMLAttributes } from 'react';\n\nexport interface AccordionItemProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente */\n className?: string;\n}\n\nexport const AccordionItem: FC<AccordionItemProps> = ({ tag = 'div', className, ...attributes }) => {\n const Tag = tag;\n const classes = classNames('accordion-item', className);\n\n return <Tag {...attributes} className={classes} />;\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface AvatarContainerProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente AvatarContainer */\n className?: string;\n testId?: string;\n}\n\nexport const AvatarContainer: FC<AvatarContainerProps> = ({ className, tag = 'div', testId, ...attributes }) => {\n const Tag = tag;\n const wrapperClasses = classNames(\n 'd-flex align-items-center justify-content-around flex-wrap flex-sm-nowrap',\n className\n );\n return <Tag {...attributes} className={wrapperClasses} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface AvatarExtraTextProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente AvatarExtraText */\n className?: string;\n testId?: string;\n}\n\nexport const AvatarExtraText: FC<AvatarExtraTextProps> = ({ className, tag = 'div', testId, ...attributes }) => {\n const Tag = tag;\n const wrapperClass = classNames('extra-text', className);\n return <Tag className={wrapperClass} {...attributes} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface AvatarGroupContainerProps extends HTMLAttributes<HTMLUListElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente interno AvatarGroupContainer */\n className?: string;\n /** Classi aggiuntive da usare per il componente più esterno di AvatarGroupContainer */\n wrapperClassName?: string;\n testId?: string;\n}\n\nexport const AvatarGroupContainer: FC<AvatarGroupContainerProps> = ({\n className,\n tag = 'ul',\n wrapperClassName,\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const wrapperClasses = classNames('avatar-group-stacked', wrapperClassName);\n return <Tag {...attributes} className={wrapperClasses} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType, Ref } from 'react';\nimport classNames from 'classnames';\n\nexport interface AvatarIconProps extends HTMLAttributes<HTMLElement> {\n /**\n * Utilizzarlo in caso di utilizzo di componenti personalizzati, come ad esempio\n * un link gestito da handler onClick.\n * */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente AvatarIcon */\n className?: string;\n /** Le varianti di colore definite in Bootstrap Italia */\n color?: 'primary' | 'secondary' | 'green' | 'orange' | 'red' | string;\n /** Le dimensioni dell'icona definite in Bootstrap Italia */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';\n /**\n * Quando definito rende l'icona un link cliccabile. Nota: se definito ignora la prop Tag.\n * */\n href?: string;\n /** Da utilizzare per impostare un riferimento all'elemento DOM */\n innerRef?: Ref<HTMLElement | HTMLAnchorElement>;\n testId?: string;\n}\n\nexport const AvatarIcon: FC<AvatarIconProps> = ({\n className,\n tag = 'div',\n size = 'md',\n href,\n color,\n innerRef,\n testId,\n children,\n ...attributes\n}) => {\n const Tag = tag;\n const typeClass = classNames('avatar', {\n [`size-${size}`]: size,\n [`avatar-${color}`]: color\n });\n if (href) {\n return (\n <a\n href={href}\n {...attributes}\n className={typeClass}\n ref={innerRef as Ref<HTMLAnchorElement>}\n data-testid={testId}\n >\n {children}\n </a>\n );\n }\n\n return (\n <Tag {...attributes} className={typeClass} data-testid={testId}>\n {children}\n </Tag>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface AvatarPresenceProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente AvatarPresence */\n className?: string;\n /** Utilizzare questo attributo per indicare il tipo di presenza dell'utente. */\n presence: 'active' | 'busy' | 'hidden' | string;\n testId?: string;\n}\n\nexport const AvatarPresence: FC<AvatarPresenceProps> = ({\n className,\n tag = 'div',\n presence,\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const typeClass = classNames('avatar-presence', {\n presence\n });\n return <Tag {...attributes} className={typeClass} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface AvatarStatusProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente AvatarStatus */\n className?: string;\n /** Utilizzare questo attributo per indicare il tipo di stato dell'utente. */\n status: 'approved' | 'declined' | 'notify' | string;\n testId?: string;\n}\n\nexport const AvatarStatus: FC<AvatarStatusProps> = ({ className, tag = 'div', status, testId, ...attributes }) => {\n const Tag = tag;\n const typeClass = classNames('avatar-status', {\n status\n });\n return <Tag {...attributes} className={typeClass} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface AvatarWrapperProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente AvatarStatus */\n className?: string;\n /** Utilizzare questo attributo qualora si volesse utilizzare un componente AvatarExtraText all'interno dell'Avatar. */\n extra?: 'text' | string;\n testId?: string;\n}\n\nexport const AvatarWrapper: FC<AvatarWrapperProps> = ({ className, tag = 'div', extra, testId, ...attributes }) => {\n const Tag = tag;\n const wrapperClass = classNames('avatar-wrapper', className, {\n [`avatar-extra-${extra}`]: extra\n });\n return <Tag {...attributes} className={wrapperClass} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType, Ref, ReactChild, AnchorHTMLAttributes } from 'react';\nimport { Badge as BadgeReact } from 'reactstrap';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\n\nexport type BadgeProps = {\n /** Le varianti di colore definite in Bootstrap Italia */\n color?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | string;\n /** Quando attivo rende i Badge arrotondati */\n pill?: boolean;\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Badge */\n className?: string;\n /** Oggetto contenente la nuova mappatura per le classi CSS. */\n cssModule?: CSSModule;\n /** Da utilizzare per impostare un riferimento all'elemento DOM */\n innerRef?: Ref<HTMLElement>;\n /** Il contenuto del badge */\n children: ReactChild;\n testId?: string;\n} & (HTMLAttributes<HTMLElement> | AnchorHTMLAttributes<HTMLAnchorElement>);\n\nexport const Badge: FC<BadgeProps> = ({\n color = 'secondary',\n pill = false,\n tag = 'span',\n children,\n testId,\n ...attributes\n}) => {\n return (\n <BadgeReact color={color} pill={pill} tag={tag} {...attributes} data-testid={testId}>\n {children}\n </BadgeReact>\n );\n};\n","import React, { ElementType, FC, HTMLAttributes } from 'react';\n\nexport interface BottomNavProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente BottomNav */\n className?: string;\n testId?: string;\n}\n\nexport const BottomNav: FC<BottomNavProps> = ({ tag = 'nav', testId, ...attributes }) => {\n const Tag = tag;\n return (\n <Tag className='bottom-nav' data-testid={testId}>\n <ul {...attributes} />\n </Tag>\n );\n};\n","import React, { ElementType, FC, HTMLAttributes, MouseEvent } from 'react';\nimport classNames from 'classnames';\nimport { Icon } from '../Icon/Icon';\n\nexport interface BottomNavItemProps extends HTMLAttributes<HTMLLIElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente BottomNavItem */\n className?: string;\n /** Quando abilitato mostra l'elemento come attivo */\n active?: boolean;\n /** Indica l'URL a cui puntare (utilizzare o questo o onClick) */\n url?: string;\n /** Indica il link route a cui l'elemento deve puntare. */\n to?: string;\n /** Etichetta da associare all'elemento */\n label?: string;\n /** Testo esplicativo per dispositivi screen reader. */\n srText?: string;\n /** Icona da utilizzare per l'elemento */\n iconName?: string;\n /** Quando abilitato indica una sezione che richiede attenzione o presenta nuovi contenuti */\n alert?: boolean;\n /** Visualizza dei badge con indicazioni numeriche in alto a destra dell'icona */\n badge?: number;\n /** Da utilizzare al posto di url quando la gestione del click è in JS */\n onLinkClick?: (event: MouseEvent<HTMLAnchorElement>) => void;\n /**\n * Indica l'URL a cui far puntare il componente BottomNavItem.\n * @deprecated. Usare `url` o `onLinkClick`\n * */\n link?: string;\n testId?: string;\n}\n\nexport const BottomNavItem: FC<BottomNavItemProps> = ({\n active = false,\n badge,\n alert = false,\n url,\n to,\n srText,\n iconName = 'it-comment',\n label,\n tag = 'a',\n onLinkClick,\n link,\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const activeClass = classNames({ active });\n const badgeWrapper = Boolean(badge) && (\n <div className='badge-wrapper'>\n <span className='bottom-nav-badge'>{badge}</span>\n </div>\n );\n const alertWrapper = Boolean(alert) && (\n <div className='badge-wrapper'>\n <span className='bottom-nav-alert' />\n </div>\n );\n return (\n <li {...attributes} data-testid={testId}>\n <Tag href={url || link || '#'} className={activeClass} to={to} onClick={onLinkClick}>\n {badgeWrapper}\n {alertWrapper}\n <Icon icon={iconName} />\n <span className='bottom-nav-label'>\n {label}\n {srText ? <span className='visually-hidden'>{srText}</span> : null}\n </span>\n </Tag>\n </li>\n );\n};\n","import React, { ElementType, FC, HTMLAttributes } from 'react';\nimport { Breadcrumb as BreadcrumbBase } from 'reactstrap';\nimport classNames from 'classnames';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\n\nexport interface BreadcrumbProps extends HTMLAttributes<HTMLDivElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati per la l'elemento lista interno */\n listTag?: ElementType;\n /** Classi aggiuntive da usare per il componente Nav */\n className?: string;\n /** Classi aggiuntive da usare per il componente di lista interno */\n listClassName?: string;\n /** Oggetto contenente la nuova mappatura per le classi CSS. */\n cssModule?: CSSModule;\n /** Indica se si vuole la versione con fondo scuro */\n dark?: boolean;\n /** Etichetta significativa per descrivere il tipo di navigazione */\n 'aria-label'?: string;\n testId?: string;\n}\n\nexport const Breadcrumb: FC<BreadcrumbProps> = ({\n className,\n listClassName,\n dark,\n 'aria-label': label,\n testId,\n ...attributes\n}) => {\n const classes = classNames(className, 'breadcrumb-container');\n const listClasses = classNames(listClassName, { dark }, dark && 'px-3');\n const ariaLabel = label ?? 'Percorso di navigazione';\n return (\n <BreadcrumbBase\n className={classes}\n listClassName={listClasses}\n aria-label={ariaLabel}\n data-testid={testId}\n {...attributes}\n />\n );\n};\n","import React, { FC, ElementType, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface CalloutProps extends HTMLAttributes<HTMLElement> {\n /** Classi aggiuntive per il componente */\n className?: string;\n /** Permette di dichiarare il colore del bordo e del titolo */\n color?: 'success' | 'warning' | 'danger' | 'note' | 'important' | string;\n /** Permette personalizzare il tag utilizzato per il Callout (diverso da \"div\"). Accetta sia tag HTML che componenti React. */\n tag?: ElementType;\n /** Abilita il Callout di tipo Highlight */\n highlight?: boolean;\n /** Abilita il Callout di tipo Approfondimento */\n detailed?: boolean;\n testId?: string;\n}\n\nexport const Callout: FC<CalloutProps> = ({\n children,\n color = '',\n highlight = false,\n className,\n detailed,\n tag = 'div',\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const classes = classNames(className, color, 'callout', {\n 'callout-highlight': highlight,\n 'callout-more': detailed\n });\n return (\n <Tag className={classes} {...attributes} data-testid={testId}>\n {!highlight && !detailed ? <div className='callout-inner'>{children}</div> : children}\n </Tag>\n );\n};\n","import classNames from 'classnames';\nimport React, { ElementType, FC, useState } from 'react';\nimport { Button } from '../Button/Button';\nimport { Icon } from '../Icon/Icon';\n\nexport interface CalloutMoreFooterProps {\n id?: string;\n /** Utilizzarlo in caso si utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente */\n className?: string;\n fileUrl?: string;\n}\n\nexport const CalloutMoreFooter: FC<CalloutMoreFooterProps> = ({\n id = 'cm-footer',\n tag = 'div',\n className,\n fileUrl,\n children,\n ...attributes\n}) => {\n const Tag = tag;\n const classes = classNames('collapse-div', className);\n\n const [isOpen, setOpen] = useState(false);\n\n return (\n <Tag {...attributes} className={classes}>\n <div className='collapse-header' id={`${id}-heading`}>\n <Button\n color='primary'\n className='callout-more-toggle'\n onClick={() => setOpen(!isOpen)}\n aria-controls={`${id}-collapse`}\n aria-expanded={isOpen}\n style={{ fontFamily: 'var(--bs-font-sans-serif)', fontSize: '1rem' }}\n >\n Leggi tutto <span></span>\n </Button>\n {fileUrl && (\n <a\n className='callout-more-download'\n href={fileUrl}\n style={{\n fontFamily: 'var(--bs-font-sans-serif)',\n fontSize: '1rem'\n }}\n >\n <Icon icon='it-download' />\n <span className='visually-hidden'>PDF</span>Download\n </a>\n )}\n </div>\n <div\n className={`collapse ${isOpen ? 'show' : ''}`}\n role='tabpanel'\n id={`${id}-collapse`}\n aria-labelledby={`${id}-heading`}\n >\n <div className='collapse-body'>{children}</div>\n </div>\n </Tag>\n );\n};\n","import React, { FC, ElementType, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface CalloutTextProps extends HTMLAttributes<HTMLElement> {\n /** Aumenta la dimensione del testo nel paragrafo contenuto */\n bigText?: boolean;\n /** Classi aggiuntive per il componente */\n className?: string;\n /** Permette personalizzare il tag utilizzato per il contenitore del titolo (diverso da \"div\"). Accetta sia tag HTML che componenti React. */\n tag?: ElementType;\n testId?: string;\n}\n\nexport const CalloutText: FC<CalloutTextProps> = ({\n bigText = false,\n children,\n className,\n tag = 'p',\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const classes = classNames(className, {\n 'callout-big-text': bigText\n });\n return (\n <Tag className={classes} {...attributes} data-testid={testId}>\n {children}\n </Tag>\n );\n};\n","import React, { FC, ElementType, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface CalloutTitleProps extends HTMLAttributes<HTMLElement> {\n /** Classi aggiuntive per il componente */\n className?: string;\n /** Permette personalizzare il tag utilizzato per il contenitore del titolo (diverso da \"div\"). Accetta sia tag HTML che componenti React. */\n tag?: ElementType;\n testId?: string;\n}\n\nexport const CalloutTitle: FC<CalloutTitleProps> = ({ children, className, tag = 'div', testId, ...attributes }) => {\n const Tag = tag;\n const classes = classNames(className, 'callout-title');\n return (\n <Tag className={classes} {...attributes} data-testid={testId}>\n {children}\n </Tag>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType, Ref } from 'react';\nimport classNames from 'classnames';\nimport { Card as CardBase } from 'reactstrap';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\n\nexport interface CardProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Utilizzarlo quando si passa `a` a `tag` per ottenere una special card cliccabile */\n href?: string;\n /** Classi aggiuntive da usare per il componente Card */\n className?: string;\n /** Da utilizzare per impostare un riferimento all'elemento DOM */\n innerRef?: Ref<HTMLElement>;\n /** Oggetto contenente la nuova mappatura per le classi CSS. */\n cssModule?: CSSModule;\n /** Abilita la versione teaser della Card */\n teaser?: boolean;\n /** Quando attivo distanzia la Card nella versione mobile */\n spacing?: boolean;\n /** Quando attivo rimuove il componente contenitore della carta. Utile per card multiple nello stesso contenitore */\n noWrapper?: boolean;\n /** Classi aggiuntive per l'elemento contenitore */\n wrapperClassName?: string;\n testId?: string;\n}\n\nexport const Card: FC<CardProps> = ({\n tag = 'div',\n href = undefined,\n teaser,\n spacing,\n noWrapper = false,\n wrapperClassName,\n testId,\n ...attributes\n}) => {\n const wrapperClasses = classNames('card-wrapper', wrapperClassName, {\n 'card-space': spacing,\n 'card-teaser-wrapper': teaser\n });\n const cardClasses = classNames(attributes.className, {\n 'card-teaser': teaser\n });\n\n if (noWrapper) {\n return (\n <CardBase\n {...attributes}\n className={cardClasses}\n tag={tag}\n href={tag === 'a' ? href : undefined}\n data-testid={testId}\n />\n );\n }\n\n return (\n <div className={wrapperClasses} data-testid={testId}>\n <CardBase {...attributes} className={cardClasses} tag={tag} href={tag === 'a' ? href : undefined} />\n </div>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType, Ref } from 'react';\nimport { CardBody as InnerCardBody } from 'reactstrap';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\n// Note: this is a wrapper class around a reactstrap component.\n// TODO: remove this class and restore the direct import when\n// https://github.com/storybookjs/storybook/issues/10536 gets resolved\n\nexport interface CardBodyProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Card */\n className?: string;\n /** Da utilizzare per impostare un riferimento all'elemento DOM */\n innerRef?: Ref<HTMLElement>;\n /** Oggetto contenente la nuova mappatura per le classi CSS. */\n cssModule?: CSSModule;\n testId?: string;\n}\n\nexport const CardBody: FC<CardBodyProps> = ({ tag = 'div', testId, ...props }) => (\n <InnerCardBody {...props} tag={tag} data-testid={testId} />\n);\n","import React, { FC, HTMLAttributes, MouseEvent } from 'react';\nimport classNames from 'classnames';\n\nimport { Icon } from '../Icon/Icon';\n\nexport interface CardCategoryProps extends HTMLAttributes<HTMLElement> {\n /** Mostra un'icona nella Card. Passare il nome dell'icona per utilizzarlo. */\n iconName?: string;\n /** Mostra la data nella Card. Passare una data già formattata come stringa. */\n date?: string;\n /** Se usato come link, passare l'URL target. */\n href?: string;\n /** Da utilizzare al posto di url quando la gestione del click è in JS */\n onClick?: (event: MouseEvent<HTMLAnchorElement>) => void;\n testId?: string;\n}\n\nexport const CardCategory: FC<CardCategoryProps> = ({ iconName, date, href, onClick, testId, children, ...rest }) => {\n const classes = classNames({\n 'category-top': date || ' ',\n 'categoryicon-top': iconName\n });\n // Simple category link\n const categoryLink = !iconName && (\n <a href={href} className='category' onClick={onClick}>\n {children}\n </a>\n );\n const categoryDate = date && <span className='data'>{date}</span>;\n // Category with icon\n const categoryText = iconName && <span className='text'>{children}</span>;\n const categoryIcon = iconName && <Icon icon={iconName} />;\n\n return (\n <div className={classes} {...rest} data-testid={testId}>\n {categoryLink}\n {categoryIcon}\n {categoryText}\n {categoryDate}\n </div>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface CardFooterCTAProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente CardFooterCTA*/\n className?: string;\n testId?: string;\n}\n\nexport const CardFooterCTA: FC<CardFooterCTAProps> = ({ className, tag = 'div', testId, ...attributes }) => {\n const Tag = tag;\n const classes = classNames(className, 'it-card-footer');\n return <Tag className={classes} {...attributes} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nimport { Icon } from '../Icon/Icon';\n\nexport interface CardReadMoreProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente CardReadMore*/\n className?: string;\n /** Il contenuto in testo da mostrare */\n text: string;\n /** Passare l'URL target. */\n href?: string;\n /** Mostra un'icona nella Card per l'azione \"Leggi di più\". Passare il nome dell'icona per utilizzarlo. */\n iconName?: string;\n testId?: string;\n}\n\nexport const CardReadMore: FC<CardReadMoreProps> = ({\n className,\n text,\n iconName = 'it-arrow-right',\n tag = 'a',\n href,\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const classes = classNames(className, 'read-more');\n return (\n <Tag className={classes} href={href} {...attributes} data-testid={testId}>\n <span className='text'>{text}</span>\n {iconName && <Icon icon={iconName} />}\n </Tag>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface CardSignatureProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente CardSignature*/\n className?: string;\n testId?: string;\n}\n\nexport const CardSignature: FC<CardSignatureProps> = ({ className, tag = 'span', testId, ...attributes }) => {\n const Tag = tag;\n const classes = classNames(className, 'card-signature');\n return <Tag className={classes} {...attributes} data-testid={testId} />;\n};\n","import React, { AnchorHTMLAttributes, FC, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface CardTagProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente CardTag*/\n className?: string;\n testId?: string;\n}\n\nexport const CardTag: FC<CardTagProps> = ({ className, tag = 'a', testId, ...attributes }) => {\n const Tag = tag;\n const classes = classNames(className, 'card-tag');\n return <Tag className={classes} {...attributes} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface CardTagsHeaderProps extends HTMLAttributes<HTMLElement> {\n /** Mostra la data nella Card. Passare una data già formattata come stringa. */\n date?: string;\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente CardTagsHeader */\n className?: string;\n testId?: string;\n}\n\nexport const CardTagsHeader: FC<CardTagsHeaderProps> = ({\n date,\n children,\n className,\n tag = 'div',\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const classes = classNames('head-tags', className);\n return (\n <Tag className={classes} {...attributes} data-testid={testId}>\n {children}\n {date && <span className='data'>{date}</span>}\n </Tag>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport { CardText as InnerCardText } from 'reactstrap';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\n// Note: this is a wrapper class around a reactstrap component.\n// TODO: remove this class and restore the direct import when\n// https://github.com/storybookjs/storybook/issues/10536 gets resolved\n\nexport interface CardTextProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente CardText */\n className?: string;\n /** Oggetto contenente la nuova mappatura per le classi CSS. */\n cssModule?: CSSModule;\n testId?: string;\n}\n\nexport const CardText: FC<CardTextProps> = (props) => {\n return <InnerCardText {...props} data-testid={props.testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport { CardTitle as InnerCardTitle } from 'reactstrap';\n\n// Note: this is a wrapper class around a reactstrap component.\n// TODO: remove this class and restore the direct import when\n// https://github.com/storybookjs/storybook/issues/10536 gets resolved\n\nexport interface CardTitleProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente CardTitle */\n className?: string;\n testId?: string;\n}\n\nexport const CardTitle: FC<CardTitleProps> = (props) => {\n return <InnerCardTitle {...props} data-testid={props.testId} />;\n};\n","import React, { HTMLAttributes, FC, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface ChipProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Chip */\n className?: string;\n /** Impostarlo su `true` per centrare la label all'interno */\n simple?: boolean;\n /** Impostarlo su `true` per una versione più grande del componente Chip. */\n large?: boolean;\n /** Impostarlo su `true` per renderizzare il componente Chip come disabilitato */\n disabled?: boolean;\n /** Le varianti di colore definite in Bootstrap Italia */\n color?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | string;\n testId?: string;\n}\n\nexport const Chip: FC<ChipProps> = ({\n className,\n color = '',\n tag = 'div',\n simple = false,\n large = false,\n disabled = false,\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const classes = classNames('chip', className, {\n 'chip-simple': simple,\n 'chip-lg': large,\n 'chip-disabled': disabled,\n [`chip-${color}`]: color\n });\n\n return <Tag className={classes} {...attributes} data-testid={testId} />;\n};\n","import React, { ElementType, FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface ChipLabelProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente ChipLabel */\n className?: string;\n testId?: string;\n}\n\nexport const ChipLabel: FC<ChipLabelProps> = ({ className, tag = 'span', testId, ...attributes }) => {\n const Tag = tag;\n const classes = classNames(className, 'chip-label');\n return <Tag {...attributes} className={classes} data-testid={testId} />;\n};\n","import React, { ElementType, FC, HTMLAttributes, Ref } from 'react';\nimport classNames from 'classnames';\n\nimport { Collapse as CollapseBase } from 'reactstrap';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\n\n// Copy over from reactstrap and add new ones\nexport interface CollapseProps extends HTMLAttributes<HTMLElement> {\n /** Indica se il menu HeaderNav sia aperto o meno. Usato unicamente nel caso della HeaderNav, ovvero con navbar e header entrambi true */\n isOpen?: boolean;\n /** Oggetto contenente la nuova mappatura per le classi CSS. */\n cssModule?: CSSModule;\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Indica se il componente Collapse è usato all'interno di un componente navbar */\n navbar?: boolean;\n /** Indica se il componente Collapse ha al suo interno un Megamenu */\n megamenu?: boolean;\n /** Indica se il componente Collapse è usato all'interno di un componente Header */\n header?: boolean;\n delay?: {\n show: number;\n hide: number;\n };\n /** Funzione chiamata all'apertura del componente Collapse */\n onOpened?: () => void;\n /** Funzione chiamata alla chiusura del componente Collapse */\n onClosed?: () => void;\n /** Funzione chiamata durante la trasizione di apertura del componente Collapse */\n onEntering?: () => void;\n /** Funzione chiamata al termine della trasizione di apertura del componente Collapse */\n onEntered?: () => void;\n onExit?: () => void;\n /** Funzione chiamata durante la trasizione di chiusura del componente Collapse */\n onExiting?: () => void;\n /** Funzione chiamata al termine della trasizione di chiusura del componente Collapse */\n onExited?: () => void;\n /** Funzione chiamata su click di overlay dell'HeaderNav aperto. Usato unicamente nel caso della HeaderNav, ovvero con navbar e header entrambi true */\n onOverlayClick?: () => void;\n /** Da utilizzare per impostare un riferimento all'elemento DOM */\n innerRef?: Ref<HTMLElement>;\n testId?: string;\n}\n\nexport const Collapse: FC<CollapseProps> = ({\n header = false,\n className,\n navbar,\n megamenu,\n children,\n isOpen = false,\n onOverlayClick,\n cssModule,\n testId,\n ...attributes\n}) => {\n const newCssModule = {\n 'navbar-collapse': 'navbar-collapsable',\n ...cssModule\n };\n if (megamenu || navbar || header) {\n const classes = classNames(className, 'navbar-collapse', {\n expanded: isOpen\n });\n const style = { display: isOpen ? 'block' : 'none' };\n return (\n <CollapseBase\n className={classes}\n cssModule={newCssModule}\n navbar={navbar}\n style={style}\n data-testid={testId}\n {...attributes}\n >\n <div className='overlay' style={style} onClick={onOverlayClick}></div>\n <div className='close-div visually-hidden'>\n <button className='btn close-menu' type='button'>\n <span className='it-close'></span>close\n </button>\n </div>\n {megamenu ? <div className='menu-wrapper'>{children}</div> : <>{children}</>}\n </CollapseBase>\n );\n }\n const classes = classNames(className, {\n 'link-list-wrapper': header\n });\n\n return (\n <CollapseBase\n className={classes}\n cssModule={newCssModule}\n {...attributes}\n navbar={navbar}\n isOpen={isOpen}\n data-testid={testId}\n >\n {children}\n </CollapseBase>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nimport { Icon } from '../Icon/Icon';\n\nexport interface DimmerProps extends HTMLAttributes<HTMLElement> {\n /** Il nome dell'icona da mostrare. Per una lista completa vedi: @TODO-URL */\n icon?: string;\n /** Le varianti di colore definite in Bootstrap Italia */\n color?: 'success' | 'warning' | 'danger' | 'note' | 'important' | string;\n /** Classi aggiuntive da usare per il componente Dimmer */\n className?: string;\n /**\n * Classi aggiuntive da usare per il componente contenitore del Dimmer\n * Per replicare il comportamento precedente, in cui `className` veniva applicato anche al wrapper,\n * passare `true`.\n * */\n wrapperClassName?: string | true;\n testId?: string;\n}\n\nexport const Dimmer: FC<DimmerProps> = ({ icon, color, className, wrapperClassName, testId, ...attributes }) => {\n const { children, ...rest } = attributes;\n const classes = classNames('dimmer', wrapperClassName === true ? className : wrapperClassName, {\n [`dimmer-${color}`]: color\n });\n const innerClasses = classNames('dimmer-inner', className);\n const dimmerIcon = icon && (\n <div className='dimmer-icon'>\n <Icon icon={icon} />\n </div>\n );\n\n return (\n <div className={classes} {...rest} style={{ display: 'flex' }} data-testid={testId}>\n <div className={innerClasses} {...rest}>\n {dimmerIcon}\n {children}\n </div>\n </div>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface DimmerButtonsProps extends HTMLAttributes<HTMLElement> {\n /** Le varianti di colore definite in Bootstrap Italia per il componente Dimmer */\n color?: 'primary' | string;\n /** Classi aggiuntive da usare per il componente Dimmer */\n className?: string;\n /** Da utilizzare in presenza di un singolo bottone: quando abilitato ne centra il contenuto. */\n single?: boolean;\n /** Da utilizzare con `false` per abilitare il precedente comportamento senza sfondo scuro.\n * @deprecated\n */\n dark?: boolean;\n testId?: string;\n}\n\nexport const DimmerButtons: FC<DimmerButtonsProps> = ({\n color,\n className,\n single = false,\n dark = true,\n testId,\n ...attributes\n}) => {\n const { children, ...rest } = attributes;\n const classes = classNames('dimmer-buttons', className, {\n 'bg-dark': dark,\n 'single-button': single\n });\n\n return (\n <div className={classes} {...rest} data-testid={testId}>\n {children}\n </div>\n );\n};\n","import React, { FC, AnchorHTMLAttributes, MutableRefObject } from 'react';\nimport classNames from 'classnames';\n\nexport interface ForwardProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Classi aggiuntive da usare per il componente Forward */\n className?: string;\n /** Riferimento al nodo a cui scorrere quando premuto */\n scrollToRef: MutableRefObject<Element | null>;\n testId?: string;\n}\n\nexport const Forward: FC<ForwardProps> = ({ className, scrollToRef, children, testId, ...attributes }) => {\n const classes = classNames(className, 'forward');\n return (\n <a\n className={classes}\n onClick={() =>\n scrollToRef.current?.scrollIntoView({\n behavior: 'smooth',\n block: 'start'\n })\n }\n data-testid={testId}\n {...attributes}\n >\n {children}\n </a>\n );\n};\n","import React, { ElementType, FC, HTMLAttributes } from 'react';\nimport classname from 'classnames';\n\nexport interface GridItemProps extends HTMLAttributes<HTMLSpanElement> {\n /** Classi aggiuntive da usare per il componente LinkListItem */\n className?: string;\n /** Indica il tag da utilizzare per il titolo */\n tag?: ElementType;\n testId?: string;\n}\n\nexport const GridItem: FC<GridItemProps> = ({ tag: Tag = 'div', className, children, testId, ...attributes }) => {\n const classes = classname('it-grid-item-wrapper', className);\n return (\n <Tag {...attributes} className={classes} data-testid={testId}>\n {children}\n </Tag>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classname from 'classnames';\n\nexport interface GridItemTextProps extends HTMLAttributes<HTMLSpanElement> {\n /** Classi aggiuntive da usare per l'elemento */\n className?: string;\n testId?: string;\n}\n\nexport const GridItemText: FC<GridItemTextProps> = ({ className, children, testId, ...attributes }) => {\n const classes = classname('it-griditem-text', className);\n return (\n <span {...attributes} className={classes} data-testid={testId}>\n {children}\n </span>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classname from 'classnames';\n\nexport interface GridItemTextWrapperProps extends HTMLAttributes<HTMLSpanElement> {\n /** Classi aggiuntive da usare per l'elemento */\n className?: string;\n testId?: string;\n}\n\nexport const GridItemTextWrapper: FC<GridItemTextWrapperProps> = ({ className, children, testId, ...attributes }) => {\n const classes = classname('it-griditem-text-wrapper', className);\n return (\n <span {...attributes} className={classes} data-testid={testId}>\n {children}\n </span>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classname from 'classnames';\n\nexport interface GridListProps extends HTMLAttributes<HTMLSpanElement> {\n /** Classi aggiuntive da usare per il componente LinkListItem */\n className?: string;\n testId?: string;\n}\n\nexport const GridList: FC<GridListProps> = ({ className, children, testId, ...attributes }) => {\n const classes = classname('it-grid-list-wrapper', className);\n return (\n <div {...attributes} className={classes} data-testid={testId}>\n {children}\n </div>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classname from 'classnames';\n\nexport interface GridRowProps extends HTMLAttributes<HTMLSpanElement> {\n /** Classi aggiuntive da usare per il componente LinkListItem */\n className?: string;\n testId?: string;\n}\n\nexport const GridRow: FC<GridRowProps> = ({ className, children, testId, ...attributes }) => {\n const classes = classname('grid-row', className);\n return (\n <div {...attributes} className={classes} data-testid={testId}>\n {children}\n </div>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nimport { HeaderContext, CENTER, NAVBAR } from './HeaderContext';\n\nexport interface HeaderProps extends HTMLAttributes<HTMLElement> {\n /** Classi aggiuntive da usare per il componente Header */\n className?: string;\n /** Tipo di componente Header: può essere solamente uno di questi tre tipi */\n type: 'slim' | 'center' | 'navbar';\n /** Riduce la grandezza del componente Header. Funziona solamente con Header \"center\". */\n small?: boolean;\n /** Imposta il tema per il componente Header. Per gli Header di tipo \"slim\" o \"center\"\n * il valore di default è \"dark\". Per l'Header di tipo \"nav\" il tema di default è \"light\"\n * in mobile, mentre \"dark\" in versione desktop.\n */\n theme?: 'light' | 'dark' | '';\n testId?: string;\n}\n\nexport const Header: FC<HeaderProps> = ({ className, small = false, theme = '', type, testId, ...attributes }) => {\n // use context here as theme\n const classes = classNames(className, {\n [`it-header-${type}-wrapper`]: type,\n 'it-small-header': type === CENTER && small,\n [`theme-${theme}`]: type !== NAVBAR && theme,\n 'theme-dark-mobile': type === NAVBAR && theme === 'dark',\n 'theme-light-desk': type === NAVBAR && theme === 'light'\n });\n return (\n <HeaderContext.Provider value={{ type }}>\n <div className={classes} {...attributes} data-testid={testId} />\n </HeaderContext.Provider>\n );\n};\n","import React, { AnchorHTMLAttributes, ElementType, ReactChild } from 'react';\nimport classNames from 'classnames';\nimport { NavbarBrand } from 'reactstrap';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\nimport { CENTER, useHeaderContext } from './HeaderContext';\nimport { Icon } from '../Icon/Icon';\n\nexport interface HeaderBrandProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente HeaderBrand */\n className?: string;\n /** Oggetto contenente la nuova mappatura per le classi CSS. */\n cssModule?: CSSModule;\n /** Da usare con il componente Header Nav in versione \"responsive\" */\n responsive?: boolean;\n /** Da utilizzare per specificare URL risorsa esterna. */\n href?: string;\n /** Icona da utilizzare nel componente. Utilizzata unicamente quando l'Header è di tipo Center. */\n iconName?: string;\n /** Alt text da utilizzare nell'icona. Utilizzata unicamente quando l'Header è di tipo Center. */\n iconAlt?: string;\n /** Elementi React da renderizzare al proprio interno. */\n children: ReactChild | ReactChild[];\n testId?: string;\n}\n\nexport const HeaderBrand = ({\n className,\n href,\n iconName,\n iconAlt,\n children,\n tag = 'a',\n responsive = false,\n testId,\n ...attributes\n}: HeaderBrandProps) => {\n const type = useHeaderContext();\n const defaultAttributes = { tag };\n if (type !== CENTER) {\n const classes = classNames('d-lg-block', className, {\n 'd-none': !responsive\n });\n return (\n <NavbarBrand className={classes} href={href} data-testid={testId} {...attributes} {...defaultAttributes}>\n {children}\n </NavbarBrand>\n );\n }\n return (\n <div className='it-brand-wrapper' data-testid={testId}>\n <a href={href}>\n {iconName && <Icon icon={iconName} title={iconAlt} />}\n <div className='it-brand-text'>\n {React.Children.map(children, (child, i) => {\n if (typeof child !== 'object' || child == null || !('props' in child)) {\n return child;\n }\n // convention here: first item is the main title, while others subtext\n const className = classNames(\n child.props.className,\n { 'd-none d-md-block': i } // subtext is anything but first element\n );\n\n const props = {\n className\n };\n\n return React.cloneElement(child, props);\n })}\n </div>\n </a>\n </div>\n );\n};\n","import React, { HTMLAttributes } from 'react';\nimport classNames from 'classnames';\nimport { Col, Container, Navbar, Row } from 'reactstrap';\n\nimport { SLIM, CENTER, NAVBAR, useHeaderContext } from './HeaderContext';\n\nexport interface HeaderContentProps extends HTMLAttributes<HTMLElement> {\n /** Classi aggiuntive da usare per il componente HeaderContent */\n className?: string;\n /** Da utilizzare per indicare che all'interno dell'Header verrà utilizzato un Megamenu */\n megamenu?: boolean;\n /** Parametro per il controllo responsive del componente secondo Bootstrap Italia. */\n expand?: boolean | 'sm' | 'md' | 'lg' | 'xl';\n testId?: string;\n}\n\nexport const HeaderContent = ({ className, megamenu, testId, ...attributes }: HeaderContentProps) => {\n const type = useHeaderContext();\n const classes = classNames(className, {\n 'it-header-slim-wrapper-content': type === SLIM,\n 'it-header-center-content-wrapper': type === CENTER,\n navbar: type === NAVBAR,\n 'has-megamenu': megamenu\n });\n\n const Content =\n type === NAVBAR ? (\n <Navbar className={classes} {...attributes} data-testid={testId} />\n ) : (\n <div className={classes} {...attributes} data-testid={testId} />\n );\n return (\n <Container>\n <Row>\n <Col>{Content}</Col>\n </Row>\n </Container>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface HeaderLinkZoneProps extends HTMLAttributes<HTMLElement> {\n /** Classi addizionali per il componente HeaderLinkZone, applicata all'element \"nav\" annidato */\n className?: string;\n testId?: string;\n}\n\nexport const HeaderLinkZone: FC<HeaderLinkZoneProps> = ({ className, testId, ...attributes }) => {\n const classes = classNames(className);\n return (\n <div className='nav-mobile' data-testid={testId}>\n <nav className={classes} {...attributes} />\n </div>\n );\n};\n","import React, { HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nimport { SLIM, useHeaderContext } from './HeaderContext';\n\nexport interface HeaderRightZoneProps extends HTMLAttributes<HTMLElement> {\n /** Classi addizionali per il componente HeaderLinkZone, applicata all'element \"nav\" annidato */\n className?: string;\n testId?: string;\n}\n\nexport const HeaderRightZone = ({ className, testId, ...attributes }: HeaderRightZoneProps) => {\n const type = useHeaderContext();\n const classes = classNames(className, {\n // BI >= 1.3.6\n 'it-header-slim-right-zone': type === SLIM,\n // BI < 1.3.6\n 'header-slim-right-zone': type === SLIM,\n 'it-right-zone': type !== SLIM\n });\n return <div className={classes} {...attributes} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nimport { Icon } from '../Icon/Icon';\n\nexport interface HeaderSearchProps extends HTMLAttributes<HTMLElement> {\n /** Classi aggiuntive da usare per il componente HeaderSearch */\n className?: string;\n /** Etichetta di testo da applicare all'elemento. In caso di stringa vuota non verrà mostrato alcun testo */\n label: string;\n /** Nome dell'icona da utilizzare */\n iconName: string;\n /** Indirizzo di indirizzamento al click dell'icona */\n href?: string;\n testId?: string;\n}\n\nexport const HeaderSearch: FC<HeaderSearchProps> = ({\n className,\n label,\n href,\n iconName = 'it-search',\n testId,\n ...attributes\n}) => {\n const classes = classNames('it-search-wrapper', className);\n return (\n <div className={classes} {...attributes} data-testid={testId}>\n {label && <span className='d-none d-md-block'>{label}</span>}\n <a className='search-link rounded-icon' aria-label={label} href={href}>\n <Icon icon={iconName} />\n </a>\n </div>\n );\n};\n","import React, { FC, HTMLAttributes, ReactChild } from 'react';\nimport classNames from 'classnames';\n\nexport interface HeaderSocialsZoneProps extends HTMLAttributes<HTMLElement> {\n /** Classi addizionali per il componente HeaderSocialsZone, verrà applicato all'elemento wrapper più esterno. */\n className?: string;\n /** Etichetta utilizzata per presentare i social presenti. In caso di stringa vuota non verrà mostrata alcuna etichetta */\n label?: string;\n /** Utilizzato per elencare i social da mostrare */\n children?: ReactChild;\n testId?: string;\n}\n\nexport const HeaderSocialsZone: FC<HeaderSocialsZoneProps> = ({\n className,\n children,\n label,\n testId,\n ...attributes\n}) => {\n const classes = classNames('it-socials d-none d-md-flex', className);\n return (\n <div className={classes} {...attributes} data-testid={testId}>\n {label && <span>{label}</span>}\n {children}\n </div>\n );\n};\n","import React, { ElementType, ButtonHTMLAttributes, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { NavbarToggler } from 'reactstrap';\n\nimport { SLIM, NAVBAR, useHeaderContext } from './HeaderContext';\n\nexport interface HeaderTogglerProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Tipo di elemento DOM da utilizzare: di default \"a\" per Header Slim, \"button\" per altri tipi di Header.\n * Se fornito questo sovrascriverà il valore di default.\n */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente HeaderToggler */\n className?: string;\n /** Indica l'attributo \"type\" sull'elemento DOM. Di default '' per Header Slim, \"button\" per altri tipi di Header.\n * Se fornito questo sovrascriverà il valore di default.\n */\n type?: 'button' | 'submit' | 'reset';\n testId?: string;\n}\n\nconst BUTTON = 'button';\n\nexport const HeaderToggler = ({ className, tag, type, testId, ...attributes }: HeaderTogglerProps) => {\n const HeaderType = useHeaderContext();\n const defaultTag = HeaderType === SLIM ? 'a' : BUTTON;\n const defaultType = HeaderType === SLIM ? undefined : BUTTON;\n const classes = classNames(\n {\n 'it-opener d-lg-none': HeaderType === SLIM,\n 'custom-navbar-toggler': HeaderType === NAVBAR\n },\n className\n );\n useEffect(() => {\n document.querySelectorAll('.container-fluid').forEach((element) => {\n element.classList.remove('container-fluid');\n });\n });\n return (\n <NavbarToggler\n className={classes}\n {...attributes}\n tag={tag || defaultTag}\n type={type || defaultType}\n href='#'\n data-testid={testId}\n />\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\nimport { Sticky, StickyProvider } from 'react-stickup';\n\nexport interface HeadersProps extends HTMLAttributes<HTMLElement> {\n /** Aggiunge un ombra per enfatizzare il componente rispetto alla pagina in cui è contenuto */\n shadow?: boolean;\n /** Aggiunge il comportamento \"sticky\" ai componenti Header contenuti */\n sticky?: boolean;\n /** Classi addizionali per il componente Headers */\n className?: string;\n testId?: string;\n}\n\nexport const Headers: FC<HeadersProps> = ({ className, shadow = false, sticky = false, testId, ...attributes }) => {\n const classes = classNames(\n 'it-header-wrapper',\n {\n 'it-shadow': shadow,\n 'it-header-sticky': sticky\n },\n className\n );\n if (!sticky) {\n return <div className={classes} {...attributes} data-testid={testId}></div>;\n }\n return (\n <StickyProvider>\n <Sticky style={{ position: 'sticky', zIndex: 2 }} data-testid={testId}>\n <div className={classes} {...attributes}></div>\n </Sticky>\n </StickyProvider>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classname from 'classnames';\n\nexport interface HeroProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Indica se il componente Hero deve ridurre l'altezza */\n small?: boolean;\n /** Indica al componente Hero di centrare i contenuti testuali orizzontalmente */\n centered?: boolean;\n /** Da utilizzare per creare un testi in overlay su immagini, al fine di migliorare la leggibilità di testo */\n overlay?: 'dark' | 'primary' | 'filter';\n /** Aggiunge margine negativo in fondo al componente Hero per creare una sovrapposizione con il contenuto seguente. */\n overlap?: boolean;\n testId?: string;\n}\n\nexport const Hero: FC<HeroProps> = ({\n tag: Tag = 'div',\n small,\n centered,\n overlay,\n overlap,\n className,\n testId,\n ...attributes\n}) => {\n const classes = classname('it-hero-wrapper', className, {\n 'it-overlay': overlay,\n ['it-' + overlay]: overlay,\n 'it-hero-small-size': small,\n 'it-text-centered': centered,\n 'it-bottom-overlapping-content': overlap\n });\n return <Tag className={classes} {...attributes} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes } from 'react';\n\nexport interface HeroBackgroundProps extends HTMLAttributes<HTMLImageElement> {\n /** Un testo alternativo per descrivere l'immagine mostrata */\n alt: string;\n /** L'URI dell'immagine da mostrare */\n src: string;\n /** Il titolo dell'immagine */\n title?: string;\n testId?: string;\n}\n\nexport const HeroBackground: FC<HeroBackgroundProps> = ({ alt, testId, ...attributes }) => {\n return (\n <div className='img-responsive-wrapper' data-testid={testId}>\n <div className='img-responsive'>\n <div className='img-wrapper'>\n <img {...attributes} alt={alt} />\n </div>\n </div>\n </div>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classname from 'classnames';\nimport { Col, Container, Row } from 'reactstrap';\n\nexport interface HeroBodyProps extends HTMLAttributes<HTMLElement> {\n /** Eventuali classi aggiuntive */\n className?: string;\n testId?: string;\n}\n\nexport const HeroBody: FC<HeroBodyProps> = ({ children, className, testId }) => {\n const classes = classname('it-hero-text-wrapper', 'bg-dark', className);\n return (\n <Container>\n <Row>\n <Col>\n <div className={classes} data-testid={testId}>\n {children}\n </div>\n </Col>\n </Row>\n </Container>\n );\n};\n","import React, { FC } from 'react';\nimport classname from 'classnames';\nimport { Button, ButtonProps } from '../Button/Button';\n\nexport interface HeroButtonProps extends ButtonProps {\n wrapperClassName?: string;\n testId?: string;\n}\n\nexport const HeroButton: FC<HeroButtonProps> = ({ wrapperClassName, testId, ...attributes }) => {\n const classes = classname('it-btn-container', wrapperClassName);\n return (\n <div className={classes} data-testid={testId}>\n <Button size='sm' {...attributes} />\n </div>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classname from 'classnames';\n\nexport interface HeroCategoryProps extends HTMLAttributes<HTMLSpanElement> {\n /** Eventuali classi aggiuntive per la categoria */\n className?: string;\n testId?: string;\n}\n\nexport const HeroCategory: FC<HeroCategoryProps> = ({ className, testId, ...attributes }) => {\n const classes = classname('it-category', className);\n return <span {...attributes} className={classes} data-testid={testId} />;\n};\n","import React, { ElementType, FC, HTMLAttributes } from 'react';\nimport classname from 'classnames';\n\nexport interface HeroTitleProps extends HTMLAttributes<HTMLSpanElement> {\n /** Indica il tag da utilizzare per il titolo */\n tag?: ElementType;\n testId?: string;\n}\n\nexport const HeroTitle: FC<HeroTitleProps> = ({ tag: Tag = 'h1', className, testId, ...attributes }) => {\n const classes = classname(className);\n return <Tag {...attributes} className={classes} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType, ReactNode } from 'react';\nimport classNames from 'classnames';\n\nexport interface LinkListProps extends HTMLAttributes<HTMLUListElement> {\n /** Da utilizzare in caso di titolo principale della lista. Passare una componente React da mostrare come titolo */\n header?: ReactNode;\n /** Classi aggiuntive da usare per il componente lista del LinkList */\n className?: string;\n /** Classi aggiuntive da usare per il componente wrapper del LinkList */\n wrapperClassName?: string;\n /**\n * Utilizzarlo in caso di utilizzo di componenti personalizzati per il wrapper della lista.\n * Nota: viene ignorato quando usato in lista annidate.\n * */\n tag?: ElementType;\n /** Quando abilitato gestisce una lista in cui ciascun elemento è composto da più componenti/elementi. */\n multiline?: boolean;\n /** Da utilizzare per una lista annidata */\n sublist?: boolean;\n /** Da utilizzare per una lista di avatar */\n avatar?: boolean;\n /** Quando attivo rimuove il componente contenitore della ListList. Utile per alcuni tipi di liste annidate. */\n noWrapper?: boolean;\n testId?: string;\n}\n\nexport const LinkList: FC<LinkListProps> = ({\n className,\n wrapperClassName,\n tag = 'div',\n multiline,\n header,\n sublist,\n avatar,\n noWrapper,\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const wrapperClasses = classNames('link-list-wrapper', wrapperClassName, {\n multiline: multiline\n });\n const classes = classNames(className, {\n 'link-list': !sublist,\n 'link-sublist': sublist,\n 'avatar-group': avatar\n });\n\n if (noWrapper) {\n return <ul {...attributes} className={classes} data-testid={testId} />;\n }\n\n if (sublist) {\n return (\n <>\n {header}\n <ul {...attributes} className={classes} />\n </>\n );\n }\n return (\n <Tag className={wrapperClasses} data-testid={testId}>\n {header}\n <ul {...attributes} className={classes} />\n </Tag>\n );\n};\n","import React, { FC } from 'react';\nimport { Col, ColProps, Row } from 'reactstrap';\nimport classNames from 'classnames';\n\nexport interface MegamenuHCProps extends ColProps {\n /** Quanto abilitato gestisce il contenuto della colonna come una sezione che può contentere immagini, testo, ect. */\n description?: boolean;\n /** Classi aggiuntive da usare per il componente Megamenu Highlight Column */\n className?: string;\n}\nexport const MegamenuHighlightColumn: FC<MegamenuHCProps> = ({ description, className, children, ...attributes }) => {\n const classes = classNames(className, 'it-vertical', {\n 'it-description': description\n });\n return (\n <Col {...attributes}>\n <Row className='max-height-col'>\n <Col className={classes}>\n {description ? <div className='description-content'>{children}</div> : <>{children}</>}\n </Col>\n </Row>\n </Col>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport { Dropdown } from '../Dropdown/Dropdown';\nimport { DropdownMenu } from '../Dropdown/DropdownMenu';\nimport { DropdownToggle } from '../Dropdown/DropdownToggle';\nimport classNames from 'classnames';\n\nexport interface MegamenuItemProps extends HTMLAttributes<HTMLUListElement> {\n /** Etichetta del megamenu visibile all'interno della barra di navigazione */\n itemName: string;\n /** Classi aggiuntive da usare per il componente Dropdown */\n className?: string;\n}\n\nexport const MegamenuItem: FC<MegamenuItemProps> = ({ itemName, className, children, ...attributes }) => {\n const classes = classNames(className, 'megamenu');\n const toggleClasses = classNames('px-lg-2', 'px-xl-3');\n\n return (\n <Dropdown tag='li' className={classes} {...attributes} inNavbar>\n <DropdownToggle caret className={toggleClasses} inNavbar>\n <span>{itemName}</span>\n </DropdownToggle>\n <DropdownMenu>\n <div className='megamenu pb-5 pt-3 py-lg-0'>{children}</div>\n </DropdownMenu>\n </Dropdown>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport { FadeProps, Modal as InnerModal } from 'reactstrap';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\nimport classnames from 'classnames';\n\nexport interface ModalProps extends HTMLAttributes<HTMLElement> {\n [key: string]: any;\n /** Indica lo stato del modale. Valore di default: undefined. */\n isOpen?: boolean;\n autoFocus?: boolean;\n size?: string;\n /** Funzione da chiamare quando l'utente clicca sul backdrop. Valore di default: undefined. */\n toggle?: React.KeyboardEventHandler<any> | React.MouseEventHandler<any>;\n keyboard?: boolean;\n backdrop?: boolean | 'static';\n /**\n * Abilitare quando si vuole che solo il contenuto della modale sia scrollabile.\n * Valore di default: undefined.\n * */\n scrollable?: boolean;\n onEnter?: () => void;\n onExit?: () => void;\n onOpened?: () => void;\n onClosed?: () => void;\n cssModule?: CSSModule;\n wrapClassName?: string;\n modalClassName?: string;\n backdropClassName?: string;\n contentClassName?: string;\n zIndex?: number | string;\n fade?: boolean;\n backdropTransition?: FadeProps;\n modalTransition?: FadeProps;\n centered?: boolean;\n external?: React.ReactNode;\n labelledBy?: string;\n unmountOnClose?: boolean;\n returnFocusAfterClose?: boolean;\n container?: string | HTMLElement | React.RefObject<HTMLElement>;\n innerRef?: React.Ref<HTMLElement>;\n /** Abilitare quando si utilizza una icona nell'intestazione, al fine di formattare correttamente il modale. Valore di default: undefined. */\n withIcon?: boolean;\n /** Abilitare quando si utilizza una LinkList nell'intestazione, al fine di formattare correttamente il modale. Valore di default: undefined. */\n withLinkList?: boolean;\n /** Abilitare quando si vuole mostrare un breve messaggio di conferma. Valore di default: undefined. */\n popConfirm?: boolean;\n /** Abilitare quando si vuole mostrare un modale allineato a sinistra. Valore di default: undefined. */\n align?: 'left' | 'right';\n}\n\nexport const Modal: FC<ModalProps> = ({\n withIcon,\n withLinkList,\n popConfirm,\n modalClassName,\n align,\n scrollable,\n className,\n ...props\n}) => {\n const isAligned = align != null && ['left', 'right'].includes(align);\n const modalDialogClassnames = classnames(modalClassName, {\n 'alert-modal': withIcon,\n 'it-dialog-link-list': withLinkList,\n 'popconfirm-modal': popConfirm,\n 'it-dialog-scrollable': scrollable && isAligned\n });\n const modalClassnames = classnames(className, {\n 'modal-dialog-left': align === 'left',\n 'modal-dialog-right': align === 'right'\n });\n return (\n <InnerModal\n {...props}\n scrollable={!isAligned && scrollable}\n className={modalClassnames}\n modalClassName={modalDialogClassnames}\n />\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport { ModalBody as InnerModalBody } from 'reactstrap';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\n\nexport interface ModalBodyProps extends HTMLAttributes<HTMLElement> {\n tag?: React.ElementType;\n cssModule?: CSSModule;\n}\n\nexport const ModalBody: FC<ModalBodyProps> = (props) => <InnerModalBody {...props} />;\n","import React, { FC, HTMLAttributes } from 'react';\nimport { ModalFooter as InnerModalFooter } from 'reactstrap';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\n\nexport interface ModalFooterProps extends HTMLAttributes<HTMLElement> {\n tag?: React.ElementType;\n cssModule?: CSSModule;\n}\n\nexport const ModalFooter: FC<ModalFooterProps> = (props) => <InnerModalFooter {...props} />;\n","import React, { FC, HTMLAttributes } from 'react';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\nimport classNames from 'classnames';\nimport { Icon } from '../Icon/Icon';\nimport { mapToCssModules } from '../utils';\n\nexport interface ModalHeaderProps extends HTMLAttributes<HTMLElement> {\n [key: string]: any;\n cssModule?: CSSModule;\n /** Componente che conterrà il nodo titolo. Valore di default: h5 */\n tag?: React.ElementType;\n /** Componente che contenitore per l'header. Valore di default: div. */\n wrapTag?: React.ElementType;\n /** Funzione da passare al tasto di chiusura nell'intestazione. Quando questa funzione non è presente il tasto di chiusura non viene mostrato. Valore di default: undefined */\n toggle?: React.MouseEventHandler<any>;\n /** Indica il nome dell'icona da utilizzare nel titolo. */\n icon?: string;\n /** Classi da aggiungere al nodo contenitore. */\n className?: string;\n /** Utilizzato per personalizzare il messaggio peer screen reader per il bottone di chiusura del modale. Valore di default: 'Close' */\n closeAriaLabel?: string;\n}\n\nexport const ModalHeader: FC<ModalHeaderProps> = ({\n icon,\n className,\n children,\n Util,\n toggle,\n tag: Tag = 'h5',\n wrapTag: WrapTag = 'div',\n closeAriaLabel = 'Close',\n close,\n cssModule,\n ...props\n}) => {\n const classes = mapToCssModules(classNames(className, 'modal-header'), cssModule);\n\n let CloseButton;\n\n if (!close && toggle) {\n CloseButton = (\n <button\n type='button'\n onClick={toggle}\n className={mapToCssModules('btn-close', cssModule)}\n aria-label={closeAriaLabel}\n ></button>\n );\n }\n\n return (\n <WrapTag {...props} className={classes}>\n {icon != null ? <Icon icon={icon} /> : null}\n <Tag className={mapToCssModules('modal-title', cssModule)}>{children}</Tag>\n {close || CloseButton}\n </WrapTag>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport { Nav as NavBase } from 'reactstrap';\nimport classNames from 'classnames';\n\nexport interface NavProps extends HTMLAttributes<HTMLUListElement> {\n /**\n * Renderizza i componenti NavItem al suo interno come tab.\n */\n tabs?: boolean;\n /**\n * Renderizza i componenti NavItem al suo interno come pills.\n */\n pills?: boolean;\n /**\n * Renderizza i componenti NavItem al suo interno come card.\n */\n card?: boolean;\n /**\n * Se utilizzata all'interno di una navbar, impostarlo su `true`. In caso di Header Nav, impostarlo a `true`.\n */\n navbar?: boolean;\n /** Se abilitato tutti i NavItem all'interno avranno la stessa larghezza */\n justified?: boolean;\n /** Se abilitato i NavItem all'intero occuperanno tutto lo spazio disponibile */\n fill?: boolean;\n /** Da utilizzare per rendere il componente Nav verticale. Viene abilitato automaticamente in versione mobile. Valori possibili sono `true`, `false` o `\"xs\"` */\n vertical?: boolean | 'xs';\n /** Da utilizzare per cambiare l'allineamento all'interno della Nav. Valori possibili sono `\"center\"` o `\"end\"` per posizionare il contenuto a centro o sulla destra. */\n horizontal?: 'center' | 'end';\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Nav */\n className?: string;\n /** Adds ability to incorporate secondary nav items */\n secondary?: boolean;\n}\n\nexport const Nav: FC<NavProps> = ({ className, tag = 'ul', vertical = false, secondary, ...attributes }) => {\n const classes = classNames(className, {\n 'navbar-secondary': secondary\n });\n return <NavBase className={classes} tag={tag} vertical={vertical} {...attributes} />;\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface PagerProps extends HTMLAttributes<HTMLElement> {\n /** Etichetta di descrizione del contenuto del componente Pager */\n 'aria-label': string;\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati per la l'elemento lista interno */\n listTag?: ElementType;\n /** Classi aggiuntive da usare per il componente Pager */\n className?: string;\n /** Classi aggiuntive da usare per il componente di lista interno Pager */\n listClassName?: string;\n /** Utilizzare questo attributo per indicare il numero totale di pagine */\n total?: { ariaLabel: string; label: string };\n testId?: string;\n}\n\nexport const Pager: FC<PagerProps> = ({\n className,\n tag = 'nav',\n listTag: ListTag = 'ul',\n listClassName,\n children,\n total,\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const classes = classNames(className, 'pagination-wrapper', {\n 'pagination-total': total\n });\n const listClasses = classNames(listClassName, 'pagination');\n const { ariaLabel, label } = total || {};\n const totalAriaLabel = ariaLabel ? <span className='visually-hidden'>{ariaLabel}</span> : null;\n return (\n <Tag className={classes} {...attributes} data-testid={testId}>\n <ListTag className={listClasses}>{children}</ListTag>\n {total ? (\n <p>\n {totalAriaLabel}\n {label}\n </p>\n ) : null}\n </Tag>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\nimport isNumber from 'is-number';\nimport { logError } from '../utils';\n\nexport interface ProgressProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /**\n * Classi aggiuntive da usare per il componente contenitore del Progress\n * Per replicare il comportamento precedente, in cui `className` veniva applicato anche al wrapper,\n * passare `true`.\n * */\n wrapperClassName?: string | true;\n /** Classi aggiuntive da usare per il componente interno del Progress */\n className?: string;\n /** Valore corrente (numerico) */\n value?: number | string;\n /** Etichetta con testo per indicare il progresso corrente da mostrare ai dispositivi screen reader */\n label?: string;\n /** Quando non è possibile stabilire una percentuale di progressione utilizzare una Progress Bar di tipo indeterminato */\n indeterminate?: boolean;\n /** Le varianti di colore definite in Bootstrap Italia */\n color?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | string;\n testId?: string;\n}\n\nexport const Progress: FC<ProgressProps> = ({\n wrapperClassName,\n className,\n tag = 'div',\n value,\n label,\n indeterminate = false,\n color,\n testId,\n role = 'progressbar',\n ...attributes\n}) => {\n const Tag = tag;\n if (!isNumber(value) && !indeterminate) {\n logError(`The passed \"value\" is not a valid number. You passed \"${value}\"`);\n }\n const numericValue = Number(value);\n const wrapperClasses = classNames('progress-bar-wrapper');\n const secondaryWrapperClasses = classNames(wrapperClassName === true ? className : wrapperClassName, 'progress', {\n 'progress-indeterminate': indeterminate,\n 'progress-color': color\n });\n const classes = classNames(className, 'progress-bar', {\n [`bg-${color}`]: color\n });\n\n if (label && numericValue) {\n return (\n <Tag className={wrapperClasses} data-testid={testId}>\n <div className='progress-bar-label'>\n <span className='visually-hidden'>{label}</span>\n {numericValue + '%'}\n </div>\n <Tag className={secondaryWrapperClasses}>\n <div\n {...attributes}\n className={classes}\n role='progressbar'\n style={{ width: numericValue + '%' }}\n aria-valuenow={numericValue}\n aria-valuemin={0}\n aria-valuemax={100}\n />\n </Tag>\n </Tag>\n );\n }\n\n return (\n <Tag className={secondaryWrapperClasses} data-testid={testId}>\n <div className='progress-bar-label'>\n <span className='visually-hidden'>{label}</span>\n </div>\n <div\n {...attributes}\n className={classes}\n role='progressbar'\n style={{ width: numericValue + '%' }}\n aria-valuenow={numericValue}\n aria-valuemin={0}\n aria-valuemax={100}\n />\n </Tag>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\n\nexport interface ResponsiveImageProps extends HTMLAttributes<HTMLImageElement> {\n /** Un testo alternativo per descrivere l'immagine mostrata */\n alt: string;\n /** L'URI dell'immagine da mostrare */\n src: string;\n /** Il titolo dell'immagine */\n title?: string;\n testId?: string;\n}\n\nexport const ResponsiveImage: FC<ResponsiveImageProps> = ({ alt, testId, ...attributes }) => {\n return (\n <div className='img-responsive-wrapper' data-testid={testId}>\n <div className='img-responsive'>\n <div className='img-wrapper'>\n <img {...attributes} alt={alt} />\n </div>\n </div>\n </div>\n );\n};\n","import React, { FC, HTMLAttributes, ReactChild } from 'react';\nimport classNames from 'classnames';\nimport { notifyDeprecation } from '../utils';\n\nexport interface SectionProps extends HTMLAttributes<HTMLElement> {\n /**\n * Classi aggiuntive da usare per il contenitore più esterno\n * Per replicare il comportamento precedente, in cui `className` veniva applicato anche al wrapper,\n * passare `true`.\n * */\n wrapperClassName?: string | true;\n /** Classi aggiuntive da usare per il contenitore più interno */\n className?: string;\n /**\n * Colore utilizzato per lo sfondo del componente Section.\n * In caso di `primary` o `neutral` si consiglia di applicare la classe `.white-color` al contenuto per garantire la leggibilità dei testi.\n * */\n color?: 'primary' | 'neutral' | 'muted' | string;\n /**\n * Indicare l'URL dell'immagine da utilizzare come sfondo della sezione.\n */\n image?: string;\n /** Il contenuto della sezione */\n children?: ReactChild | ReactChild[];\n /** Quando abilitato applica lo sfondo di tipo \"neutral\" al componente.\n * @deprecated. Utilizzare `color=\"neutral\"`\n */\n neutral?: boolean;\n /** Quando abilitato applica lo sfondo di tipo \"muted\" al componente.\n * @deprecated. Utilizzare `color=\"muted\"`\n */\n muted?: boolean;\n testId?: string;\n}\n\nexport const Section: FC<SectionProps> = ({\n color,\n image,\n testId,\n wrapperClassName,\n className,\n children,\n neutral,\n muted,\n ...rest\n}) => {\n const classes = classNames('section', wrapperClassName === true ? className : wrapperClassName, {\n [`section-${color}`]: color,\n 'section-image': image\n });\n\n if (neutral || muted) {\n notifyDeprecation(\n `Please use the prop \"color\" instead of the \"${neutral ? 'neutral' : 'muted'}\" for the Section component.`\n );\n }\n\n // have them separated from the classes above or these will conflict with the color prop\n // concatenate them at the end. Worst case a duplicate class will appear\n const deprecatedClasses = classNames({\n 'section-neutral': neutral,\n 'section-muted': muted\n });\n\n const innerClasses = classNames('section-content', className);\n\n const styleClass = {\n backgroundImageClass: image ? { backgroundImage: `url(${image})` } : {}\n };\n\n const finalWrapperClassName = classNames(classes, deprecatedClasses);\n\n return (\n <div className={finalWrapperClassName} style={styleClass.backgroundImageClass} data-testid={testId} {...rest}>\n <div className={innerClasses}>{children}</div>\n </div>\n );\n};\n","import React, { ChangeEvent, ReactElement, SelectHTMLAttributes } from 'react';\n\nexport interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, 'onChange'> {\n /**\n * Se `true` determina la disabilitazione del campo\n */\n disabled?: boolean;\n /**\n * L'etichetta del campo\n */\n label: string;\n /**\n * La lista di opzioni da visualizzare nella tendina del Select\n */\n children: ReactElement<'option'> | ReactElement<'option'>[];\n /**\n * Gestisce il cambio del valore selezionato\n * @param selectedValue\n * @returns\n */\n onChange: (selectedValue: string) => void;\n}\n\nexport const Select = ({ id, disabled = false, label, children, onChange, ...rest }: SelectProps) => {\n const handleChange = (e: ChangeEvent<HTMLSelectElement>) => {\n onChange(e.target.value);\n };\n\n const inputProps = {\n ...rest,\n disabled: disabled,\n onChange: handleChange\n };\n\n return (\n <div className='select-wrapper'>\n {id ? (\n <>\n <label htmlFor={id}>{label}</label>\n <select id={id} {...inputProps}>\n {children}\n </select>\n </>\n ) : (\n <label>\n {label}\n <select {...inputProps}>{children}</select>\n </label>\n )}\n </div>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface SidebarProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Sidebar */\n className?: string;\n /** Indica se il componente Sideebar corrente è di tipo annidato o no */\n secondary?: boolean;\n /** Quando attivo aggiunge una linea separatrice a sinistra */\n left?: boolean;\n /** Quando attivo aggiunge una linea separatrice a destra */\n right?: boolean;\n /** Quando attivo cambia il tema del componente Sidebar rendendola scura */\n dark?: boolean;\n testId?: string;\n}\n\nexport const Sidebar: FC<SidebarProps> = ({\n className,\n testId,\n tag = 'div',\n secondary = false,\n left = false,\n right = false,\n dark = false,\n ...attributes\n}) => {\n const Tag = tag;\n const wrapperClasses = classNames('sidebar-wrapper', className, {\n 'it-line-left-side': left,\n 'it-line-right-side': right,\n 'theme-dark': dark\n });\n\n const wrapperClassesLinkList = classNames('sidebar-linklist-wrapper', {\n 'linklist-secondary': secondary\n });\n if (secondary) {\n return <Tag {...attributes} className={wrapperClassesLinkList} data-testid={testId} />;\n }\n return (\n <Tag className={wrapperClasses} data-testid={testId}>\n <Tag {...attributes} className={wrapperClassesLinkList} />\n </Tag>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface SkiplinkProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Skiplink */\n className?: string;\n testId?: string;\n}\n\nexport const Skiplink: FC<SkiplinkProps> = ({ className, tag = 'div', testId, ...attributes }) => {\n const Tag = tag;\n const classes = classNames(className, 'skiplinks');\n\n return <Tag className={classes} {...attributes} data-testid={testId} />;\n};\n","import React, { FC, ElementType, AnchorHTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface SkiplinkItemProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Skiplink */\n className?: string;\n /** Abilitare questo attributo per renderizzare lo SkipLinkItem al focus */\n focusable?: boolean;\n testId?: string;\n}\n\nexport const SkiplinkItem: FC<SkiplinkItemProps> = ({\n className,\n tag = 'a',\n focusable = true,\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const classes = classNames(className, {\n 'visually-hidden-focusable': focusable\n });\n\n // Add an extra href for focusable if the user passes an onClick rather than href prop\n const extraHref = attributes.onClick ? { href: '#' } : {};\n\n return <Tag className={classes} {...attributes} {...extraHref} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface SpinnerProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Spinner */\n className?: string;\n /** Utilizzato per indicare lo stato attivo di caricamento (animato) */\n active?: boolean;\n /** Utilizzato per ottenere la versione ridotta del componente Spinner */\n small?: boolean;\n /** Utilizzato per ottenere una animazione alternativa in fase di caricamento */\n double?: boolean;\n /** Etichetta con testo da mostrare ai dispositivi screen reader */\n label?: string;\n testId?: string;\n}\n\nexport const Spinner: FC<SpinnerProps> = ({\n className,\n tag = 'span',\n active = false,\n small = false,\n double = false,\n label = 'Caricamento',\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n const wrapperClasses = classNames('progress-spinner', {\n 'progress-spinner-active': active,\n 'size-sm': small,\n 'progress-spinner-double': double\n });\n\n const classes = classNames(className, 'visually-hidden');\n if (double) {\n return (\n <Tag className={wrapperClasses} data-testid={testId}>\n <div className='progress-spinner-inner' />\n <div className='progress-spinner-inner' />\n <Tag {...attributes} className={classes}>\n {label}\n </Tag>\n </Tag>\n );\n }\n\n return (\n <Tag className={wrapperClasses} data-testid={testId}>\n <Tag {...attributes} className={classes}>\n {label}\n </Tag>\n </Tag>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface StepperContainerProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Badge */\n className?: string;\n /** Abilita il tema scuro per il componente Stepper */\n dark?: boolean;\n /** Abilita la navigazione per mobile */\n mobile?: boolean;\n testId?: string;\n}\n\nexport const StepperContainer: FC<StepperContainerProps> = ({\n tag = 'div',\n mobile,\n dark,\n testId,\n className,\n ...attributes\n}) => {\n const Tag = tag;\n const wrapperClass = classNames('steppers', className, { 'bg-dark': dark }, { 'mobile-examples': mobile });\n return <Tag {...attributes} className={wrapperClass} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface StepperDotsProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Badge */\n className?: string;\n /** Abilita il tema scuro per il componente StepperDots */\n dark?: boolean;\n testId?: string;\n}\n\nexport const StepperDots: FC<StepperDotsProps> = ({ tag = 'ul', className, testId, ...attributes }) => {\n const Tag = tag;\n const wrapperClass = classNames('steppers-dots', className);\n return <Tag {...attributes} className={wrapperClass} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface StepperHeaderProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente StepperHeader */\n className?: string;\n testId?: string;\n}\n\nexport const StepperHeader: FC<StepperHeaderProps> = ({ tag = 'div', testId, className, children, ...attributes }) => {\n const Tag = tag;\n const wrapperClass = classNames('steppers-header', className);\n // @ts-ignore not recognize children's props\n const isMobile = children?.props?.variant === 'mobile';\n\n return (\n <Tag {...attributes} className={wrapperClass} data-testid={testId}>\n {isMobile ? <span>{children}</span> : <ul>{children}</ul>}\n </Tag>\n );\n};\n","import React, { FC, HTMLAttributes, ElementType } from 'react';\nimport classNames from 'classnames';\n\nexport interface StepperNavProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente Badge */\n className?: string;\n testId?: string;\n}\n\nexport const StepperNav: FC<StepperNavProps> = ({ tag = 'nav', testId, className, ...attributes }) => {\n const Tag = tag;\n const wrapperClass = classNames('steppers-nav', className);\n return <Tag {...attributes} className={wrapperClass} data-testid={testId} />;\n};\n","import React, { Ref, ReactNode, TextareaHTMLAttributes } from 'react';\n\nimport { InputContainer } from './InputContainer';\nimport { getClasses, getValidationTextControlClass, useFocus } from './utils';\nimport type { CSSModule } from 'reactstrap/types/lib/utils';\n\nexport interface TextAreaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n /** Etichetta del campo TextArea. */\n label?: string | ReactNode;\n /** Testo di esempio da utilizzare per il campo. */\n placeholder?: string;\n /** Testo di validazione per l'elemento del moduleo */\n validationText?: string;\n /** Testo di aiuto per l'elemento del moduleo form. Richiede che il componente `TextArea` abbia la prop `id` impostata. */\n infoText?: string;\n /** Il valore nel campo TextArea. */\n value?: string | number;\n /** Da utilizzare per impedire la modifica del valore contenuto. */\n readOnly?: boolean;\n /** Associato all'attributo readOnly mostra il campo con lo stile classico, mantenento lo stato di sola lettura. */\n normalized?: boolean;\n /** Utilizzare per mostrare il successo nella validazione del valore nel campo TextArea */\n valid?: boolean;\n innerRef?: Ref<HTMLTextAreaElement>;\n /** Oggetto contenente la nuova mappatura per le classi CSS. */\n cssModule?: CSSModule;\n /** Classi aggiuntive da usare per il wrapper del componente TextArea */\n wrapperClassName?: string;\n /** Classi aggiuntive da usare per il componente TextArea */\n className?: string;\n testId?: string;\n}\n\nexport const TextArea = ({\n id,\n className,\n cssModule,\n innerRef,\n label,\n validationText,\n infoText,\n placeholder,\n normalized,\n value,\n wrapperClassName: originalWrapperClass,\n valid,\n testId,\n ...attributes\n}: TextAreaProps) => {\n const { toggleFocusLabel, toggleBlurLabel, isFocused } = useFocus<HTMLTextAreaElement>({\n onFocus: attributes.onFocus,\n onBlur: attributes.onBlur\n });\n\n const validationTextControlClass = getValidationTextControlClass({ valid }, cssModule);\n\n const extraAttributes: { ['aria-describedby']?: string } = {};\n\n // associate the input field with the help text\n const infoId = id ? `${id}Description` : undefined;\n if (id) {\n extraAttributes['aria-describedby'] = infoId;\n }\n\n // Styling\n const { activeClass, extraLabelClass, validationTextClass, inputClasses, wrapperClass } = getClasses(\n className,\n 'textarea',\n {\n valid,\n placeholder,\n value,\n label,\n validationText,\n normalized: Boolean(normalized),\n validationTextControlClass,\n isFocused,\n originalWrapperClass\n },\n cssModule\n );\n\n // set of attributes always shared by the Input components\n const sharedAttributes = {\n id,\n onFocus: toggleFocusLabel,\n onBlur: toggleBlurLabel,\n value,\n ref: innerRef\n };\n\n // set of attributes always shared by the wrapper component\n const containerProps = {\n id,\n infoId,\n infoText,\n activeClass,\n extraLabelClass,\n label,\n validationTextClass,\n validationText,\n wrapperClass\n };\n\n if (placeholder) {\n return (\n <InputContainer {...containerProps}>\n <textarea\n {...attributes}\n {...extraAttributes}\n {...sharedAttributes}\n className={inputClasses}\n placeholder={placeholder}\n data-testid={testId}\n />\n </InputContainer>\n );\n }\n\n if (normalized) {\n return (\n <InputContainer {...containerProps}>\n <textarea\n {...attributes}\n {...extraAttributes}\n {...sharedAttributes}\n className={inputClasses}\n readOnly\n data-testid={testId}\n />\n </InputContainer>\n );\n }\n if (label || validationText) {\n return (\n <InputContainer {...containerProps}>\n <textarea\n {...attributes}\n {...extraAttributes}\n {...sharedAttributes}\n className={inputClasses}\n data-testid={testId}\n />\n </InputContainer>\n );\n }\n\n return (\n <textarea\n {...attributes}\n {...extraAttributes}\n className={inputClasses}\n {...sharedAttributes}\n ref={innerRef}\n data-testid={testId}\n />\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface ThumbNavProps extends HTMLAttributes<HTMLUListElement> {\n fixedWidth?: boolean;\n isSmall?: boolean;\n isVertical?: boolean;\n noZoomOnHover?: boolean;\n overlayOnHover?: 'black' | 'primary';\n position?: 'top' | 'right' | 'bottom' | 'left';\n rowItems?: 2 | 3 | 4 | 5;\n testId?: string;\n}\n\nexport const ThumbNav: FC<ThumbNavProps> = ({\n isSmall = false,\n fixedWidth = false,\n isVertical = false,\n noZoomOnHover = false,\n rowItems,\n overlayOnHover,\n position,\n testId,\n ...attributes\n}) => {\n const classes = classNames('thumb-nav', {\n 'thumb-nav-fixed': fixedWidth,\n 'thumb-nav-small': isSmall,\n 'thumb-nav-vertical': isVertical || position === 'left' || position === 'right',\n 'thumb-nav-nozoom': noZoomOnHover,\n [`thumb-nav-${overlayOnHover}`]: overlayOnHover,\n [`thumb-nav-${position}`]: position,\n 'thumb-nav-auto': rowItems != null,\n [`thumb-nav-auto-${rowItems}`]: rowItems != null\n });\n\n return <ul className={classes} {...attributes} data-testid={testId} />;\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nexport interface ThumbNavItemProps extends HTMLAttributes<HTMLLIElement> {\n active?: boolean;\n targetUrl?: string;\n imageUrl: string;\n actionDescription?: string;\n testId?: string;\n}\n\nexport const ThumbNavItem: FC<ThumbNavItemProps> = ({\n active = false,\n targetUrl,\n imageUrl,\n actionDescription,\n testId,\n ...attributes\n}) => {\n const classes = classNames({ active: active }, 'ratio', 'ratio-3x2');\n\n return (\n <li {...attributes} data-testid={testId}>\n <img src={'https://picsum.photos/240/160?image=1056'} className='thumb-nav-resizer' aria-hidden='true' alt='' />\n <a href={targetUrl} className={classes}>\n <img src={imageUrl} alt={actionDescription} />\n </a>\n </li>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classnames from 'classnames';\n\nexport interface TimelineProps extends HTMLAttributes<HTMLElement> {\n /** Classi aggiuntive da usare per il componente TimelineProps */\n className?: string;\n testId?: string;\n}\n\nexport const Timeline: FC<TimelineProps> = (props) => {\n const { className, testId, ...attributes } = props;\n const { children, ...rest } = attributes;\n const timelineWrapper = classnames(className, 'it-timeline-wrapper');\n\n return (\n <div className={timelineWrapper} {...rest} data-testid={testId}>\n {children}\n </div>\n );\n};\n","import React, { FC, HTMLAttributes } from 'react';\nimport classNames from 'classnames';\n\nimport { Icon } from '../Icon/Icon';\n\nexport interface TimelinePinProps extends HTMLAttributes<HTMLElement> {\n /** Classi aggiuntive da usare per il componente TimelinePin */\n className?: string;\n /** Mostra un'icona all'interno del TimelinePin. Passare il nome dell'icona per utilizzarlo. */\n iconName?: string;\n /**\n * Mostra un'icona all'interno del TimelinePin. Passare il nome dell'icona per utilizzarlo.\n * @deprecated. Utilizzare `iconName`.\n * */\n icon?: string;\n /** Etichetta da associare all'elemento */\n label: string;\n /** Quando abilitato indica che l'evento TimelinePin è collocato nel presente (azzurro) */\n now?: boolean;\n /** Da utilizzare per mostrare un'etichetta per l'evento nel presente */\n nowText?: string;\n /** Quando abilitato indica che l'evento TimelinePin è collocato nel passato (blu scuro) */\n past?: boolean;\n testId?: string;\n}\n\nexport const TimelinePin: FC<TimelinePinProps> = ({\n iconName = 'it-code-circle',\n icon = 'it-code-circle',\n label = ' ',\n past,\n now,\n nowText,\n testId,\n className,\n ...attributes\n}) => {\n const { children, ...rest } = attributes;\n const classes = classNames('timeline-element', className);\n const innerClasses = classNames('it-pin-wrapper', className, {\n 'it-evidence': past,\n 'it-now': now\n });\n const pinIcon = (\n <div className='pin-icon'>\n <Icon icon={iconName || icon} />\n </div>\n );\n const pinLabel = (\n <div className='pin-text'>\n <span>{label}</span>\n </div>\n );\n\n const pinTextNow = now && <span className='it-now-label d-none d-lg-flex'>{nowText}</span>;\n\n return (\n <div className={classes} data-testid={testId}>\n {pinTextNow}\n <div className={innerClasses} {...rest}>\n {pinIcon}\n {pinLabel}\n </div>\n {children}\n </div>\n );\n};\n","import React, { ElementType, FC, ReactNode } from 'react';\n\nimport { Label, Input } from 'reactstrap';\nimport { CSSModule } from 'reactstrap/types/lib/utils';\nimport { InputProps } from '../Input/Input';\n\nexport interface ToggleProps extends InputProps {\n /** Label da mostrare per il componente */\n label: string | ReactNode;\n /** Dimensioni ammissibili per il componente */\n bsSize?: 'lg' | 'sm';\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Da utilizzare per impostare un riferimento all'elemento DOM */\n innerRef?: React.Ref<HTMLInputElement>;\n /** Oggetto contenente la nuova mappatura per le classi CSS. */\n cssModule?: CSSModule;\n testId?: string;\n}\n\nexport const Toggle: FC<ToggleProps> = ({ label, testId, ...rest }) => {\n return (\n <div className='toggles' data-testid={testId}>\n <Label check>\n {label}\n <Input {...rest} type='checkbox' />\n <span className='lever' />\n </Label>\n </div>\n );\n};\n","import React from 'react';\n\nexport const ToolbarDividerItem = () => <li className='toolbar-divider' aria-hidden={true} />;\n"],"names":["noop","logError","message","console","error","log","messages","notifyDeprecation","options","once","mapToCssModules","className","cssModules","finalClassNames","split","map","klass","join","TransitionsKeys","transitionStatusToClassHash","entering","entered","exiting","exited","getHeight","node","scrollHeight","Alert","testId","props","React","InnerAlert","defaultProps","color","isOpen","fade","iconList","it-android-square","it-android","it-apple-square","it-apple","it-arrow-down-circle","it-arrow-down-triangle","it-arrow-down","it-arrow-left-circle","it-arrow-left-triangle","it-arrow-left","it-arrow-right-circle","it-arrow-right-triangle","it-arrow-right","it-arrow-up-circle","it-arrow-up-triangle","it-arrow-up","it-ban","it-behance","it-bookmark","it-box","it-burger","it-calendar","it-camera","it-card","it-chart-line","it-check-circle","it-check","it-chevron-left","it-chevron-right","it-clip","it-clock","it-close-big","it-close-circle","it-close","it-code-circle","it-collapse","it-comment","it-copy","it-delete","it-designers-italia","it-download","it-error","it-exchange-circle","it-expand","it-external-link","it-facebook-square","it-facebook","it-figma-square","it-figma","it-file-audio","it-file-compressed","it-file-csv","it-file-json","it-file-odp","it-file-ods","it-file-odt","it-file-pdf-ext","it-file-pdf","it-file-ppt","it-file-sheet","it-file-slides","it-file-txt","it-file-video","it-file-xml","it-file","it-files","it-flag","it-flickr-square","it-flickr","it-folder","it-fullscreen","it-funnel","it-github","it-google","it-hearing","it-help-circle","it-help","it-horn","it-inbox","it-info-circle","it-instagram","it-key","it-less-circle","it-link","it-linkedin-square","it-linkedin","it-list","it-lock","it-locked","it-logout","it-mail-open","it-mail","it-map-marker-circle","it-map-marker-minus","it-map-marker-plus","it-map-marker","it-mastodon-square","it-mastodon","it-maximize-alt","it-maximize","it-medium-square","it-medium","it-minimize","it-minus-circle","it-minus","it-moodle-square","it-moodle","it-more-actions","it-more-items","it-note","it-open-source","it-pa","it-password-invisible","it-password-visible","it-pencil","it-piattaforme","it-pin","it-pinterest-square","it-pinterest","it-plug","it-plus-circle","it-plus","it-presentation","it-print","it-quora-square","it-quora","it-reddit-square","it-reddit","it-refresh","it-restore","it-rss-square","it-rss","it-search","it-settings","it-share","it-slack-square","it-slack","it-snapchat-square","it-snapchat","it-software","it-stackexchange-square","it-stackexchange","it-stackoverflow-square","it-stackoverflow","it-star-full","it-star-outline","it-team-digitale","it-telegram","it-telephone","it-tiktok-square","it-tiktok","it-tool","it-threads-square","it-threads","it-twitter-square","it-twitter","it-unlocked","it-upload","it-user","it-video","it-vimeo-square","it-vimeo","it-warning-circle","it-warning","it-whatsapp-square","it-whatsapp","it-wifi","it-youtube","it-zoom-in","it-zoom-out","loadIcon","name","Error","isBundledIcon","EmptyIcon","title","titleId","xmlns","viewBox","id","fill","d","iconsList","Object","keys","iconsCache","Icon","size","icon","padding","onIconLoad","attributes","IconComponent","setCurrentIcon","useState","classes","classNames","[object Object]","icon-padded","useEffect","then","component","role","src","alt","Button","tag","btn-icon","ariaAttributes","disabled","aria-disabled","ButtonBase","backToTop","window","scrollTo","top","behavior","Dropdown","children","inNavbar","textCenter","dropdown","text-center","nav-item","undefined","DropdownMenu","dropdown-menu","DropdownToggle","caret","toggleRef","useRef","Tag","current","btn-dropdown","dropdown-toggle","nav-link","iconClasses","icon-expand","icon-sm","icon-xs","ms-1","icon-light","valueOf","ref","defaultFonts","useFontLoader","fonts","require","load","custom","families","goBack","history","back","SLIM","HeaderContext","createContext","useHeaderContext","type","useContext","InputContainer","infoId","infoText","activeClass","extraLabelClass","label","validationTextClass","validationText","wrapperClass","htmlFor","getValidationTextControlClass","valid","cssModule","form-text","form-feedback just-validate-error-label","getClasses","isFocused","bsSize","placeholder","value","normalized","inputPassword","formControlClass","validationTextControlClass","originalWrapperClass","hasPlainCondition","baseCondition","passwordOnlyCondition","normalizedOnlyCondition","is-invalid","just-validate-success-field","valid-feedback","invalid-feedback form-feedback just-validate-error-label","inputClasses","form-control-plaintext","form-control","input-password","focus--mouse","active","includes","input-number-label","useFocus","onFocus","onBlur","setFocus","toggleFocusLabel","useCallback","e","toggleBlurLabel","target","Input","addon","addonText","static","staticInput","plaintext","innerRef","incrementLabel","decrementLabel","originalWrapperClassOld","wrapperClassName","noWrapper","isHidden","setHidden","hasIcon","toggleIcon","toggleShow","divResizeRef","inputRef","width","setWidth","classList","contains","length","rest","indexOf","getTag","getFormControlClassInternal","getFormControlClass","extraAttributes","isNumber","indeterminateCheckboxInput","Boolean","sharedAttributes","containerProps","clickIncrDecr","mode","step","parseFloat","_inputRef$current","min","_inputRef$current2","max","_inputRef$current3","isNaN","newValue","_inputRef$current4","nativeInputValueSetter","_Object$getOwnPropert","getOwnPropertyDescriptor","HTMLInputElement","prototype","set","call","ev2","Event","bubbles","_inputRef$current5","dispatchEvent","input-group","input-number","input-number-percentage","input-number-currency","input-number-adaptive","style","onClick","indeterminate","readOnly","handleDisabledOnClick","preventDefault","LinkListItem","header","divider","bold","large","href","inDropdown","medium","dropdown-item","handlers","TitleIconWrapper","LinkListTitleIconWrapper","MegamenuFooter","vertical","Item","useSizeDetector","root","isHorizontal","activeId","onChange","setForceRecompute","updateActiveId","hasWindow","targetSize","setTargetSize","useViewport","innerWidth","clientWidth","innerHeight","clientHeight","scrollEnd","debounce","callback","wait","timeoutId","args","clearTimeout","setTimeout","apply","observer","resizeWindowHandler","addEventListener","IntersectionObserver","entries","entry","boundingClientRect","height","intersectionRatio","added","removed","observe","disconnect","removeEventListener","PositionContext","getBorderStyleFix","fix","borderReset","filter","curPosition","borderPosition","toUpperCase","substring","customStyle","borderPos","NotificationElement","closeToast","toastProps","body","globalFix","userIcon","state","localFix","dismissable","fixPosition","autoClose","content","pickIcon","borderFixes","with-icon","display","createNotification","dummyTransition","cssTransition","enter","exit","Notification","toastRef","eventHandlers","useToast","transition","toastId","deleteToast","isIn","timer","Number","KitTransition","appendPosition","notify","bodyOrOptions","isReactChild","safeOptions","NotificationContent","internalOptions","duration","toast","el","dismiss","isCustomLegendObject","legend","contentStyleLight","border","background","justifyContent","alignItems","contentStyleDark","borderColor","opacity","variants","confirmed","done","mobile","steppers-index","SizeContext","ToolbarItemLabel","badge","showSrText","Accordion","iconLeft","accordion-background-active","accordion-background-hover","accordion-left-icon","AccordionBody","listClassName","timeout","setHeight","onEntering","isAppearing","_attributes$onEnterin","onEntered","_attributes$onEntered","onExit","_attributes$onExit","onExiting","_attributes$onExiting","onExited","_attributes$onExited","transitionProps","obj","keysArray","Array","isArray","newObj","key","pick","childProps","keysLookup","Set","has","omit","Transition","in","status","transitionClass","getTransitionClass","listClasses","AccordionHeader","append","onToggle","toggleClasses","collapsed","AccordionItem","AvatarContainer","wrapperClasses","AvatarExtraText","AvatarGroupContainer","AvatarIcon","typeClass","AvatarPresence","presence","AvatarStatus","AvatarWrapper","extra","BackToTop","dark","small","shadow","showOffset","showBtn","setShowBtn","useLayoutEffect","scrollY","tabIndex","Badge","pill","BadgeReact","BottomNav","BottomNavItem","alert","url","to","srText","iconName","onLinkClick","link","badgeWrapper","alertWrapper","Breadcrumb","aria-label","BreadcrumbBase","Callout","highlight","detailed","callout-highlight","callout-more","CalloutMoreFooter","fileUrl","setOpen","fontFamily","fontSize","CalloutText","bigText","callout-big-text","CalloutTitle","Card","teaser","spacing","card-space","card-teaser-wrapper","cardClasses","card-teaser","CardBase","CardBody","InnerCardBody","CardCategory","date","category-top","categoryicon-top","categoryLink","categoryDate","categoryText","categoryIcon","CardFooterCTA","CardReadMore","text","CardSignature","CardTag","CardTagsHeader","InnerCardText","InnerCardTitle","Chip","simple","chip-simple","chip-lg","chip-disabled","ChipLabel","Collapse","navbar","megamenu","onOverlayClick","newCssModule","navbar-collapse","expanded","CollapseBase","link-list-wrapper","Dimmer","innerClasses","dimmerIcon","DimmerButtons","single","bg-dark","single-button","Forward","scrollToRef","_scrollToRef$current","scrollIntoView","block","GoBack","up","GridItem","classname","GridItemText","GridItemTextWrapper","GridList","GridRow","Header","theme","it-small-header","theme-dark-mobile","theme-light-desk","Provider","HeaderBrand","iconAlt","responsive","defaultAttributes","d-none","NavbarBrand","Children","child","i","d-none d-md-block","cloneElement","HeaderContent","it-header-slim-wrapper-content","it-header-center-content-wrapper","has-megamenu","Content","Navbar","Container","Row","Col","HeaderLinkZone","HeaderRightZone","it-header-slim-right-zone","header-slim-right-zone","it-right-zone","HeaderSearch","HeaderSocialsZone","HeaderToggler","HeaderType","defaultTag","defaultType","it-opener d-lg-none","custom-navbar-toggler","document","querySelectorAll","forEach","element","remove","NavbarToggler","Headers","sticky","it-shadow","it-header-sticky","StickyProvider","Sticky","position","zIndex","Hero","centered","overlay","overlap","it-overlay","it-hero-small-size","it-text-centered","it-bottom-overlapping-content","HeroBackground","HeroBody","HeroButton","HeroCategory","HeroTitle","LinkList","multiline","sublist","avatar","link-list","link-sublist","avatar-group","MegamenuHighlightColumn","description","it-description","MegamenuItem","itemName","Modal","withIcon","withLinkList","popConfirm","modalClassName","align","scrollable","isAligned","modalDialogClassnames","classnames","alert-modal","it-dialog-link-list","popconfirm-modal","it-dialog-scrollable","modalClassnames","modal-dialog-left","modal-dialog-right","InnerModal","InnerModalBody","InnerModalFooter","ModalHeader","toggle","wrapTag","WrapTag","closeAriaLabel","close","CloseButton","Nav","secondary","navbar-secondary","NavBase","hookProps","closeOnClick","hideProgressBar","rtl","pauseOnHover","pauseOnFocusLoss","newestOnTop","draggable","enableMultiContainer","containerId","getToastToRender","containerRef","isToastActive","useToastContainer","_","toastList","Pager","listTag","ListTag","total","pagination-total","ariaLabel","totalAriaLabel","Progress","numericValue","secondaryWrapperClasses","progress-indeterminate","progress-color","Rating","inputs","labelTemplate","onChangeRating","safeInputs","reverse","labelFn","rating rating-read-only","rating rating-label","fieldClasses","extraFieldAttrs","aria-hidden","isLegendString","legendClass","legendText","visually-hidden","srOnly","legendContent","FormGroup","form-group","currentValue","Fragment","String","checked","Label","for","ResponsiveImage","Section","image","neutral","muted","section-image","deprecatedClasses","section-neutral","section-muted","styleClass","backgroundImageClass","backgroundImage","finalWrapperClassName","Select","inputProps","Sidebar","left","right","it-line-left-side","it-line-right-side","theme-dark","wrapperClassesLinkList","linklist-secondary","Skiplink","SkiplinkItem","focusable","visually-hidden-focusable","Spinner","double","progress-spinner-active","size-sm","progress-spinner-double","StepperContainer","mobile-examples","StepperContent","StepperDots","StepperHeader","isMobile","_children$props","variant","StepperHeaderElement","appendIcon","prependIcon","noLine","stepperNumber","no-line","iconClass","spanClass","iconToAppend","iconToPrepend","StepperNav","TextArea","ThumbNav","isSmall","fixedWidth","isVertical","noZoomOnHover","rowItems","overlayOnHover","thumb-nav-fixed","thumb-nav-small","thumb-nav-vertical","thumb-nav-nozoom","thumb-nav-auto","ThumbNavItem","targetUrl","imageUrl","actionDescription","timelineWrapper","TimelinePin","past","now","nowText","it-evidence","it-now","pinIcon","pinLabel","Toggle","check","Toolbar","toolbar-vertical","ToolbarDividerItem","ToolbarItem","dropdownProps","showMore","isDropdownOpen","badgeObject","toolbarItemContent","toolbar-more","deletedItems","icons","Promise","all","preloadedIcons","offset","els","counter","setCounter","forceRecompute","observerMargin","Math","floor","observerOptions","useMemo","topMargin","bottomMargin","rootMargin","elsLookup","lookup","parent","activeIds","newActiveIds","lastId","push","resolveHierarchyIds","activeLookups","handleIntersection","intersectionId","topMin","Infinity","isIntersecting","takeRecords","refresh","register","alreadyRegistered","find","existingId","createRef","unregister","idToUnregister","isActive","getActiveRef"],"mappings":"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"}