construct-hub 0.2.1 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. package/.jsii +2 -2
  2. package/lib/backend/transliterator/transliterator.bundle/Dockerfile +7 -3
  3. package/lib/backend/transliterator/transliterator.bundle/index.js +495 -238
  4. package/lib/construct-hub.js +1 -1
  5. package/lib/package-sources/code-artifact.js +1 -1
  6. package/lib/package-sources/npmjs.js +1 -1
  7. package/lib/spdx-license.js +1 -1
  8. package/package.json +9 -9
  9. package/website/asset-manifest.json +38 -34
  10. package/website/assets/aws-cdk.png +0 -0
  11. package/website/assets/kubernetes.png +0 -0
  12. package/website/assets/terraform.png +0 -0
  13. package/website/index.html +1 -1
  14. package/website/service-worker.js +1 -1
  15. package/website/service-worker.js.map +1 -1
  16. package/website/static/js/{0.ff9d42f8.chunk.js → 0.074504b3.chunk.js} +2 -2
  17. package/website/static/js/{0.ff9d42f8.chunk.js.map → 0.074504b3.chunk.js.map} +1 -1
  18. package/website/static/js/1.272635ed.chunk.js +2 -0
  19. package/website/static/js/{1.bd0a2241.chunk.js.map → 1.272635ed.chunk.js.map} +1 -1
  20. package/website/static/js/10.d664efc4.chunk.js +2 -0
  21. package/website/static/js/10.d664efc4.chunk.js.map +1 -0
  22. package/website/static/js/11.6f7f0c4b.chunk.js +2 -0
  23. package/website/static/js/{10.32615aa0.chunk.js.map → 11.6f7f0c4b.chunk.js.map} +1 -1
  24. package/website/static/js/12.c21a676e.chunk.js +2 -0
  25. package/website/static/js/12.c21a676e.chunk.js.map +1 -0
  26. package/website/static/js/{11.051d89fc.chunk.js → 13.8635b63a.chunk.js} +2 -2
  27. package/website/static/js/{11.051d89fc.chunk.js.map → 13.8635b63a.chunk.js.map} +1 -1
  28. package/website/static/js/{12.e96b82dd.chunk.js → 14.86414212.chunk.js} +3 -3
  29. package/website/static/js/{12.e96b82dd.chunk.js.LICENSE.txt → 14.86414212.chunk.js.LICENSE.txt} +0 -0
  30. package/website/static/js/{12.e96b82dd.chunk.js.map → 14.86414212.chunk.js.map} +1 -1
  31. package/website/static/js/{13.fb054c47.chunk.js → 15.78ca2283.chunk.js} +2 -2
  32. package/website/static/js/{13.fb054c47.chunk.js.map → 15.78ca2283.chunk.js.map} +1 -1
  33. package/website/static/js/4.53a8d553.chunk.js +3 -0
  34. package/website/static/js/{4.7cd92fab.chunk.js.LICENSE.txt → 4.53a8d553.chunk.js.LICENSE.txt} +0 -0
  35. package/website/static/js/4.53a8d553.chunk.js.map +1 -0
  36. package/website/static/js/5.5d827820.chunk.js +3 -0
  37. package/website/static/js/{5.0da0a8ef.chunk.js.LICENSE.txt → 5.5d827820.chunk.js.LICENSE.txt} +0 -0
  38. package/website/static/js/{5.0da0a8ef.chunk.js.map → 5.5d827820.chunk.js.map} +1 -1
  39. package/website/static/js/6.f37a117e.chunk.js +2 -0
  40. package/website/static/js/{6.c0e3f99c.chunk.js.map → 6.f37a117e.chunk.js.map} +1 -1
  41. package/website/static/js/{7.11632168.chunk.js → 7.a4739ebc.chunk.js} +2 -2
  42. package/website/static/js/{7.11632168.chunk.js.map → 7.a4739ebc.chunk.js.map} +1 -1
  43. package/website/static/js/{8.8af79a83.chunk.js → 8.b0c4d0d8.chunk.js} +2 -2
  44. package/website/static/js/{8.8af79a83.chunk.js.map → 8.b0c4d0d8.chunk.js.map} +1 -1
  45. package/website/static/js/9.dcbf33c2.chunk.js +2 -0
  46. package/website/static/js/9.dcbf33c2.chunk.js.map +1 -0
  47. package/website/static/js/main.e289a3fc.chunk.js +2 -0
  48. package/website/static/js/main.e289a3fc.chunk.js.map +1 -0
  49. package/website/static/js/runtime-main.fa5c7ad1.js +2 -0
  50. package/website/static/js/runtime-main.fa5c7ad1.js.map +1 -0
  51. package/website/static/js/1.bd0a2241.chunk.js +0 -2
  52. package/website/static/js/10.32615aa0.chunk.js +0 -2
  53. package/website/static/js/4.7cd92fab.chunk.js +0 -3
  54. package/website/static/js/4.7cd92fab.chunk.js.map +0 -1
  55. package/website/static/js/5.0da0a8ef.chunk.js +0 -3
  56. package/website/static/js/6.c0e3f99c.chunk.js +0 -2
  57. package/website/static/js/9.2b21526e.chunk.js +0 -2
  58. package/website/static/js/9.2b21526e.chunk.js.map +0 -1
  59. package/website/static/js/main.f1390607.chunk.js +0 -2
  60. package/website/static/js/main.f1390607.chunk.js.map +0 -1
  61. package/website/static/js/runtime-main.2f83ac68.js +0 -2
  62. package/website/static/js/runtime-main.2f83ac68.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ (this["webpackJsonpconstruct-hub-webapp"]=this["webpackJsonpconstruct-hub-webapp"]||[]).push([[10],{224:function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var a=n(0),r=n(233),c={home:{event:{name:"Home Load"}},faq:{event:{name:"Frequently Asked Questions Load"}},packageProfile:{event:{name:"Package Profile Load"}},search:{event:{name:"Search Load"}},siteTerms:{event:{name:"Site Terms Load"}},notFound:{page:{pageType:"errorPage"},event:{name:"404 Page Load"}}},i=n(109),o=n(1),s=function(e){var t=e.children,n=e.meta,s=e.pageName,l=Object(i.b)(c[s]);Object(a.useEffect)((function(){l()}),[l]);var u=n.suffix,d=void 0===u||u,b=n.title,m=n.description,f=d?"".concat(b," - Construct Hub"):b;return Object(o.jsxs)(o.Fragment,{children:[Object(o.jsxs)(r.a,{children:[!1,Object(o.jsx)("meta",{content:"width=device-width, initial-scale=1",name:"viewport"}),Object(o.jsx)("meta",{charSet:"utf-8"}),Object(o.jsx)("title",{children:f}),Object(o.jsx)("meta",{content:f,property:"og:title"}),Object(o.jsx)("meta",{content:f,name:"twitter:title"}),Object(o.jsx)("meta",{content:"summary",name:"twitter:card"}),Object(o.jsx)("meta",{content:m,name:"description"}),Object(o.jsx)("meta",{content:m,property:"og:description"}),Object(o.jsx)("meta",{content:m,name:"twitter:description"})]}),t]})}},240:function(e,t,n){"use strict";n.d(t,"a",(function(){return u}));var a=n(6),r=n(22),c=n(21),i=n(184),o=n(287),s=n(1),l=["sources"],u=Object(c.a)((function(e,t){var n=e.sources,c=Object(r.a)(e,l);return Object(s.jsxs)(i.a,{as:"picture",children:[null===n||void 0===n?void 0:n.map((function(e,t){return Object(s.jsx)("source",{media:e.media,srcSet:e.srcSet},t)})),Object(s.jsx)(o.a,Object(a.a)({ref:t},c))]})}));u.displayName="Picture"},286:function(e,t,n){"use strict";n.r(t),n.d(t,"NotFound",(function(){return d})),n.d(t,"default",(function(){return d}));var a=n(209),r=n(199),c=n(145),i=n(29),o=n(224),s=n(240),l=n(1),u={optimal:[{media:"(max-width:1024px)",srcSet:"/assets/404-hive@50.webp"},{media:"(min-width:1024px)",srcSet:"/assets/404-hive@100.webp"},{media:"(min-width:1024px)",srcSet:"/assets/404-hive@100.png"}],fallback:"/assets/404-hive@50.png"},d=function(){return Object(l.jsx)(o.a,{meta:{title:"Not Found",description:"Oops! The page you were looking for does not exist"},pageName:"notFound",children:Object(l.jsxs)(a.a,{h:"100%",position:"relative",w:"100%",children:[Object(l.jsx)(s.a,{alt:"",inset:0,position:"absolute",sources:u.optimal,src:u.fallback,zIndex:"hide"}),Object(l.jsxs)(r.a,{align:"center",direction:"column",justify:"center",children:[Object(l.jsx)(s.a,{alt:"404 Image",sources:[{srcSet:"/assets/robot.webp"}],src:"/assets/robot.png"}),Object(l.jsx)(c.a,{as:i.b,colorScheme:"blue",to:"/",children:"Take Me Home"})]})]})})}},287:function(e,t,n){"use strict";n.d(t,"a",(function(){return m}));var a=n(21),r=n(25),c=n(27),i=n(8),o=n(0),s=n(4),l=n(138);function u(){return u=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},u.apply(this,arguments)}function d(e,t){if(null==e)return{};var n,a,r={},c=Object.keys(e);for(a=0;a<c.length;a++)n=c[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}var b=o.forwardRef((function(e,t){var n=e.htmlWidth,a=e.htmlHeight,r=e.alt,c=d(e,["htmlWidth","htmlHeight","alt"]);return o.createElement("img",u({width:n,height:a,ref:t,alt:r},c))})),m=Object(a.a)((function(e,t){var n=e.fallbackSrc,a=e.fallback,i=e.src,m=e.align,f=e.fit,j=e.loading,p=e.ignoreFallback,g=e.crossOrigin,h=d(e,["fallbackSrc","fallback","src","align","fit","loading","ignoreFallback","crossOrigin"]),O=null!=j||p,v=function(e){var t=e.src,n=e.srcSet,a=e.onLoad,r=e.onError,c=e.crossOrigin,i=e.sizes,u=e.ignoreFallback,d=Object(o.useState)("pending"),b=Object(s.a)(d,2),m=b[0],f=b[1];Object(o.useEffect)((function(){f(t?"loading":"pending")}),[t]);var j=Object(o.useRef)(),p=Object(o.useCallback)((function(){if(t){g();var e=new Image;e.src=t,c&&(e.crossOrigin=c),n&&(e.srcset=n),i&&(e.sizes=i),e.onload=function(e){g(),f("loaded"),null==a||a(e)},e.onerror=function(e){g(),f("failed"),null==r||r(e)},j.current=e}}),[t,c,n,i,a,r]),g=function(){j.current&&(j.current.onload=null,j.current.onerror=null,j.current=null)};return Object(l.a)((function(){if(!u)return"loading"===m&&p(),function(){g()}}),[m,p,u]),u?"loaded":m}(u({},e,{ignoreFallback:O})),x=u({ref:t,objectFit:f,objectPosition:m},O?h:Object(c.g)(h,["onError","onLoad"]));return"loaded"!==v?a||o.createElement(r.a.img,u({as:b,className:"chakra-image__placeholder",src:n},x)):o.createElement(r.a.img,u({as:b,src:i,crossOrigin:g,loading:j,className:"chakra-image"},x))}));i.a&&(m.displayName="Image")}}]);
2
+ //# sourceMappingURL=10.d664efc4.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["constants/pageInfo.ts","components/Page/Page.tsx","components/Picture/Picture.tsx","views/NotFound/NotFound.tsx","../../../src/image.tsx","../../../src/use-image.ts"],"names":["pageInfo","home","event","name","faq","packageProfile","search","siteTerms","notFound","page","pageType","Page","children","meta","pageName","trackPageView","usePageView","useEffect","suffix","title","description","formattedTitle","Helmet","process","content","charSet","property","Picture","forwardRef","ref","sources","props","as","map","source","idx","media","srcSet","displayName","bgSources","optimal","fallback","NotFound","h","position","w","alt","inset","src","zIndex","align","direction","justify","Link","colorScheme","to","NativeImage","width","height","Image","crossOrigin","shouldIgnore","loading","status","ignoreFallback","useState","setStatus","imageRef","useRef","load","useCallback","flush","img","onLoad","error","onError","sizes","useSafeLayoutEffect","useImage","shared","objectFit","objectPosition","rest","omit","className","fallbackSrc"],"mappings":"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","file":"static/js/10.d664efc4.chunk.js","sourcesContent":["export const pageInfo = {\n home: {\n event: {\n name: \"Home Load\",\n },\n },\n faq: {\n event: {\n name: \"Frequently Asked Questions Load\",\n },\n },\n packageProfile: {\n event: {\n name: \"Package Profile Load\",\n },\n },\n search: {\n event: {\n name: \"Search Load\",\n },\n },\n siteTerms: {\n event: {\n name: \"Site Terms Load\",\n },\n },\n notFound: {\n page: {\n pageType: \"errorPage\",\n },\n event: {\n name: \"404 Page Load\",\n },\n },\n} as const;\n","import { FunctionComponent, useEffect } from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { pageInfo } from \"../../constants/pageInfo\";\nimport { usePageView } from \"../../contexts/Analytics\";\n\nexport interface PageProps {\n pageName: keyof typeof pageInfo;\n meta: {\n suffix?: boolean;\n title: string;\n description: string;\n };\n}\n\nexport const Page: FunctionComponent<PageProps> = ({\n children,\n meta,\n pageName,\n}) => {\n const trackPageView = usePageView(pageInfo[pageName]);\n\n useEffect(() => {\n trackPageView();\n }, [trackPageView]);\n\n const { suffix = true, title, description } = meta;\n const formattedTitle = suffix ? `${title} - Construct Hub` : title;\n\n return (\n <>\n <Helmet>\n {process.env.NODE_ENV === \"development\" && (\n <meta\n content=\"default-src 'self' 'unsafe-inline' https://*.awsstatic.com https://amazonwebservices.d2.sc.omtrdc.net; connect-src 'self' https://*.shortbread.aws.dev ws://localhost:3000 https://*.awsstatic.com https://amazonwebservices.d2.sc.omtrdc.net; frame-src 'none'; img-src 'self' https://* http://*.omtrdc.net; object-src 'none'; style-src 'self' 'unsafe-inline';\"\n httpEquiv=\"Content-Security-Policy\"\n />\n )}\n\n <meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n <meta charSet=\"utf-8\" />\n\n <title>{formattedTitle}</title>\n <meta content={formattedTitle} property=\"og:title\" />\n <meta content={formattedTitle} name=\"twitter:title\" />\n <meta content=\"summary\" name=\"twitter:card\" />\n\n <meta content={description} name=\"description\" />\n <meta content={description} property=\"og:description\" />\n <meta content={description} name=\"twitter:description\" />\n </Helmet>\n {children}\n </>\n );\n};\n","import { Box, HTMLChakraProps, forwardRef, Image } from \"@chakra-ui/react\";\n\nexport interface PictureProps extends HTMLChakraProps<\"img\"> {\n alt: string;\n src: string;\n sources?: {\n media?: string;\n srcSet: string;\n }[];\n}\n\nexport const Picture = forwardRef<PictureProps, \"img\">(\n ({ sources, ...props }, ref) => (\n <Box as=\"picture\">\n {sources?.map((source, idx) => (\n <source key={idx} media={source.media} srcSet={source.srcSet} />\n ))}\n <Image ref={ref} {...props} />\n </Box>\n )\n);\n\nPicture.displayName = \"Picture\";\n","import { Button, Center, Flex } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Page } from \"../../components/Page\";\nimport { Picture } from \"../../components/Picture\";\n\nconst bgSources = {\n optimal: [\n { media: \"(max-width:1024px)\", srcSet: \"/assets/404-hive@50.webp\" },\n { media: \"(min-width:1024px)\", srcSet: \"/assets/404-hive@100.webp\" },\n { media: \"(min-width:1024px)\", srcSet: \"/assets/404-hive@100.png\" },\n ],\n fallback: \"/assets/404-hive@50.png\",\n};\n\nexport const NotFound: FunctionComponent = () => {\n return (\n <Page\n meta={{\n title: \"Not Found\",\n description: \"Oops! The page you were looking for does not exist\",\n }}\n pageName=\"notFound\"\n >\n <Center h=\"100%\" position=\"relative\" w=\"100%\">\n <Picture\n alt=\"\"\n inset={0}\n position=\"absolute\"\n sources={bgSources.optimal}\n src={bgSources.fallback}\n zIndex=\"hide\"\n />\n <Flex align=\"center\" direction=\"column\" justify=\"center\">\n <Picture\n alt=\"404 Image\"\n sources={[{ srcSet: \"/assets/robot.webp\" }]}\n src=\"/assets/robot.png\"\n />\n <Button as={Link} colorScheme=\"blue\" to=\"/\">\n Take Me Home\n </Button>\n </Flex>\n </Center>\n </Page>\n );\n};\n","import {\n chakra,\n PropsOf,\n SystemProps,\n forwardRef,\n HTMLChakraProps,\n} from \"@chakra-ui/system\"\nimport { omit, __DEV__ } from \"@chakra-ui/utils\"\nimport * as React from \"react\"\nimport { useImage, UseImageProps } from \"./use-image\"\n\ninterface NativeImageOptions {\n /**\n * The native HTML `width` attribute to the passed to the `img`\n */\n htmlWidth?: string | number\n /**\n * The native HTML `height` attribute to the passed to the `img`\n */\n htmlHeight?: string | number\n}\n\ninterface NativeImageProps extends PropsOf<\"img\">, NativeImageOptions {}\n\nconst NativeImage = React.forwardRef(\n (props: NativeImageProps, ref: React.Ref<any>) => {\n const { htmlWidth, htmlHeight, alt, ...rest } = props\n return (\n <img\n width={htmlWidth}\n height={htmlHeight}\n ref={ref}\n alt={alt}\n {...rest}\n />\n )\n },\n)\n\ninterface ImageOptions extends NativeImageOptions {\n /**\n * Fallback image `src` to show if image is loading or image fails.\n *\n * Note 🚨: We recommend you use a local image\n */\n fallbackSrc?: string\n /**\n * Fallback element to show if image is loading or image fails.\n * @type React.ReactElement\n */\n fallback?: React.ReactElement\n /**\n * Defines loading strategy\n */\n loading?: \"eager\" | \"lazy\"\n /**\n * How the image to fit within its bounds.\n * It maps to css `object-fit` property.\n * @type SystemProps[\"objectFit\"]\n */\n fit?: SystemProps[\"objectFit\"]\n /**\n * How to align the image within its bounds.\n * It maps to css `object-position` property.\n * @type SystemProps[\"objectPosition\"]\n */\n align?: SystemProps[\"objectPosition\"]\n /**\n * If `true`, opt out of the `fallbackSrc` logic and use as `img`\n */\n ignoreFallback?: boolean\n}\n\nexport interface ImageProps\n extends UseImageProps,\n Omit<HTMLChakraProps<\"img\">, keyof UseImageProps>,\n ImageOptions {}\n\n/**\n * React component that renders an image with support\n * for fallbacks\n *\n * @see Docs https://chakra-ui.com/image\n */\nexport const Image = forwardRef<ImageProps, \"img\">((props, ref) => {\n const {\n fallbackSrc,\n fallback,\n src,\n align,\n fit,\n loading,\n ignoreFallback,\n crossOrigin,\n ...rest\n } = props\n\n /**\n * Defer to native `img` tag if `loading` prop is passed\n * @see https://github.com/chakra-ui/chakra-ui/issues/1027\n */\n const shouldIgnore = loading != null || ignoreFallback\n\n const status = useImage({\n ...props,\n ignoreFallback: shouldIgnore,\n })\n\n const shared = {\n ref,\n objectFit: fit,\n objectPosition: align,\n ...(shouldIgnore ? rest : omit(rest, [\"onError\", \"onLoad\"])),\n }\n\n if (status !== \"loaded\") {\n /**\n * If user passed a custom fallback component,\n * let's render it here.\n */\n if (fallback) return fallback\n\n return (\n <chakra.img\n as={NativeImage}\n className=\"chakra-image__placeholder\"\n src={fallbackSrc}\n {...shared}\n />\n )\n }\n\n return (\n <chakra.img\n as={NativeImage}\n src={src}\n crossOrigin={crossOrigin}\n loading={loading}\n className=\"chakra-image\"\n {...shared}\n />\n )\n})\n\nexport interface ImgProps extends HTMLChakraProps<\"img\">, NativeImageOptions {}\n\n/**\n * Fallback component for most SSR users who want to use the native `img` with\n * support for chakra props\n */\nexport const Img = forwardRef<ImgProps, \"img\">((props, ref) => (\n <chakra.img ref={ref} as={NativeImage} className=\"chakra-image\" {...props} />\n))\n\nif (__DEV__) {\n Image.displayName = \"Image\"\n}\n","import { useSafeLayoutEffect } from \"@chakra-ui/hooks\"\nimport {\n ImgHTMLAttributes,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\"\n\nexport interface UseImageProps {\n /**\n * The image `src` attribute\n */\n src?: string\n /**\n * The image `srcset` attribute\n */\n srcSet?: string\n /**\n * The image `sizes` attribute\n */\n sizes?: string\n /**\n * A callback for when the image `src` has been loaded\n */\n onLoad?(event: React.SyntheticEvent<HTMLImageElement, Event>): void\n /**\n * A callback for when there was an error loading the image `src`\n */\n onError?(error: string | React.SyntheticEvent<HTMLImageElement, Event>): void\n /**\n * If `true`, opt out of the `fallbackSrc` logic and use as `img`\n */\n ignoreFallback?: boolean\n /**\n * The key used to set the crossOrigin on the HTMLImageElement into which the image will be loaded.\n * This tells the browser to request cross-origin access when trying to download the image data.\n */\n crossOrigin?: ImgHTMLAttributes<any>[\"crossOrigin\"]\n}\n\ntype Status = \"loading\" | \"failed\" | \"pending\" | \"loaded\"\n\ntype ImageEvent = React.SyntheticEvent<HTMLImageElement, Event>\n\n/**\n * React hook that loads an image in the browser,\n * and let's us know the `status` so we can show image\n * fallback if it is still `pending`\n *\n * @returns the status of the image loading progress\n *\n * @example\n *\n * ```jsx\n * function App(){\n * const status = useImage({ src: \"image.png\" })\n * return status === \"loaded\" ? <img src=\"image.png\" /> : <Placeholder />\n * }\n * ```\n */\nexport function useImage(props: UseImageProps) {\n const {\n src,\n srcSet,\n onLoad,\n onError,\n crossOrigin,\n sizes,\n ignoreFallback,\n } = props\n\n const [status, setStatus] = useState<Status>(\"pending\")\n\n useEffect(() => {\n setStatus(src ? \"loading\" : \"pending\")\n }, [src])\n\n const imageRef = useRef<HTMLImageElement | null>()\n\n const load = useCallback(() => {\n if (!src) return\n\n flush()\n\n const img = new Image()\n\n img.src = src\n\n if (crossOrigin) {\n img.crossOrigin = crossOrigin\n }\n\n if (srcSet) {\n img.srcset = srcSet\n }\n\n if (sizes) {\n img.sizes = sizes\n }\n\n img.onload = (event) => {\n flush()\n setStatus(\"loaded\")\n onLoad?.((event as unknown) as ImageEvent)\n }\n img.onerror = (error) => {\n flush()\n setStatus(\"failed\")\n onError?.(error as any)\n }\n\n imageRef.current = img\n }, [src, crossOrigin, srcSet, sizes, onLoad, onError])\n\n const flush = () => {\n if (imageRef.current) {\n imageRef.current.onload = null\n imageRef.current.onerror = null\n imageRef.current = null\n }\n }\n\n useSafeLayoutEffect(() => {\n /**\n * If user opts out of the fallback/placeholder\n * logic, let's bail out.\n */\n if (ignoreFallback) return undefined\n\n if (status === \"loading\") {\n load()\n }\n return () => {\n flush()\n }\n }, [status, load, ignoreFallback])\n\n /**\n * If user opts out of the fallback/placeholder\n * logic, let's just return 'loaded'\n */\n return ignoreFallback ? \"loaded\" : status\n}\n\nexport type UseImageReturn = ReturnType<typeof useImage>\n"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (this["webpackJsonpconstruct-hub-webapp"]=this["webpackJsonpconstruct-hub-webapp"]||[]).push([[11],{224:function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var r=n(0),o=n(233),a={home:{event:{name:"Home Load"}},faq:{event:{name:"Frequently Asked Questions Load"}},packageProfile:{event:{name:"Package Profile Load"}},search:{event:{name:"Search Load"}},siteTerms:{event:{name:"Site Terms Load"}},notFound:{page:{pageType:"errorPage"},event:{name:"404 Page Load"}}},c=n(109),i=n(1),s=function(e){var t=e.children,n=e.meta,s=e.pageName,l=Object(c.b)(a[s]);Object(r.useEffect)((function(){l()}),[l]);var d=n.suffix,u=void 0===d||d,h=n.title,b=n.description,p=u?"".concat(h," - Construct Hub"):h;return Object(i.jsxs)(i.Fragment,{children:[Object(i.jsxs)(o.a,{children:[!1,Object(i.jsx)("meta",{content:"width=device-width, initial-scale=1",name:"viewport"}),Object(i.jsx)("meta",{charSet:"utf-8"}),Object(i.jsx)("title",{children:p}),Object(i.jsx)("meta",{content:p,property:"og:title"}),Object(i.jsx)("meta",{content:p,name:"twitter:title"}),Object(i.jsx)("meta",{content:"summary",name:"twitter:card"}),Object(i.jsx)("meta",{content:b,name:"description"}),Object(i.jsx)("meta",{content:b,property:"og:description"}),Object(i.jsx)("meta",{content:b,name:"twitter:description"})]}),t]})}},585:function(e,t,n){"use strict";n.r(t),n.d(t,"FAQ",(function(){return ne})),n.d(t,"default",(function(){return ne}));var r=n(184),o=n(205),a=n(4),c=n(100),i=n(21),s=n(66),l=n(43),d=n(72),u=n(25),h=n(195),b=n(20),p=n(8),j=n(28),m=n(146),f=n(0),g=n(217),O=n(136),y=n(139),x=n(135),v=n(186),w=n(92),C=n(167);function k(){return k=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},k.apply(this,arguments)}function I(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}var D=Object(g.a)(),A=Object(a.a)(D,4),P=A[0],H=(A[1],A[2]),T=A[3];function K(e){var t=e.onChange,n=e.defaultIndex,r=e.index,o=e.allowMultiple,c=e.allowToggle,i=I(e,["onChange","defaultIndex","index","allowMultiple","allowToggle"]);!function(e){var t=e.index||e.defaultIndex,n=!Object(p.l)(t)&&!Object(p.b)(t)&&e.allowMultiple;Object(j.f)({condition:!!n,message:"If 'allowMultiple' is passed, then 'index' or 'defaultIndex' must be an array. You passed: "+typeof t+","})}(e),function(e){Object(j.f)({condition:!(!e.allowMultiple||!e.allowToggle),message:"If 'allowMultiple' is passed, 'allowToggle' will be ignored. Either remove 'allowToggle' or 'allowMultiple' depending on whether you want multiple accordions visible or not"})}(e);var s=H(),l=Object(f.useState)(-1),d=Object(a.a)(l,2),u=d[0],h=d[1];Object(O.a)((function(){h(-1)}));var b=Object(y.b)({value:r,defaultValue:function(){return o?null!=n?n:[]:null!=n?n:-1},onChange:t}),m=Object(a.a)(b,2),g=m[0],x=m[1];return{index:g,setIndex:x,htmlProps:i,getAccordionItemProps:function(e){var t=!1;null!==e&&(t=Object(p.b)(g)?g.includes(e):g===e);return{isOpen:t,onChange:function(t){if(null!==e)if(o&&Object(p.b)(g)){var n=t?Object(w.a)(g,e):Object(w.d)(g,e);x(n)}else t?x(e):c&&x(-1)}}},focusedIndex:u,setFocusedIndex:h,descendants:s}}var S=Object(m.a)({name:"AccordionContext",errorMessage:"useAccordionContext: `context` is undefined. Seems you forgot to wrap the accordion components in `<Accordion />`"}),q=Object(a.a)(S,2),M=q[0],E=q[1];function F(e){var t=e.isDisabled,n=e.isFocusable,r=e.id,o=I(e,["isDisabled","isFocusable","id"]),c=E(),i=c.getAccordionItemProps,s=c.setFocusedIndex,l=Object(f.useRef)(null),d=Object(x.c)(r,"accordion-button","accordion-panel"),u=Object(a.a)(d,2),h=u[0],p=u[1];!function(e){Object(j.f)({condition:!(!e.isFocusable||e.isDisabled),message:"Using only 'isFocusable', this prop is reserved for situations where you pass 'isDisabled' but you still want the element to receive focus (A11y). Either remove it or pass 'isDisabled' as well.\n "})}(e);var m=T({disabled:t&&!n}),g=m.register,O=m.index,y=m.descendants,w=i(-1===O?null:O),D=w.isOpen,A=w.onChange;!function(e){Object(j.f)({condition:e.isOpen&&!!e.isDisabled,message:"Cannot open a disabled accordion item"})}({isOpen:D,isDisabled:t});var P=Object(f.useCallback)((function(){null==A||A(!D),s(O)}),[O,s,D,A]),H=Object(f.useCallback)((function(e){var t={ArrowDown:function(){var e=y.nextEnabled(O);e&&Object(C.a)(e.node)},ArrowUp:function(){var e=y.prevEnabled(O);e&&Object(C.a)(e.node)},Home:function(){var e=y.firstEnabled();e&&Object(C.a)(e.node)},End:function(){var e=y.lastEnabled();e&&Object(C.a)(e.node)}}[Object(b.m)(e)];t&&(e.preventDefault(),t(e))}),[y,O]),K=Object(f.useCallback)((function(){s(O)}),[s,O]),S=Object(f.useCallback)((function(e,n){return void 0===e&&(e={}),void 0===n&&(n=null),k({},e,{type:"button",ref:Object(v.a)(g,l,n),id:h,disabled:!!t,"aria-expanded":!!D,"aria-controls":p,onClick:Object(j.b)(e.onClick,P),onFocus:Object(j.b)(e.onFocus,K),onKeyDown:Object(j.b)(e.onKeyDown,H)})}),[h,t,D,P,K,H,p,g]),q=Object(f.useCallback)((function(e,t){return void 0===e&&(e={}),void 0===t&&(t=null),k({},e,{ref:t,role:"region",id:p,"aria-labelledby":h,hidden:!D})}),[h,D,p]);return{isOpen:D,isDisabled:t,isFocusable:n,onOpen:function(){null==A||A(!0)},onClose:function(){null==A||A(!1)},getButtonProps:S,getPanelProps:q,htmlProps:o}}function W(){return W=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},W.apply(this,arguments)}function N(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}var _=Object(i.a)((function(e,t){var n=e.children,r=e.reduceMotion,o=N(e,["children","reduceMotion"]),a=Object(s.a)("Accordion",o),c=K(Object(l.b)(o)),i=c.htmlProps,h=c.descendants,p=N(c,["htmlProps","descendants"]),j=f.useMemo((function(){return W({},p,{reduceMotion:!!r})}),[p,r]);return f.createElement(P,{value:h},f.createElement(M,{value:j},f.createElement(d.b,{value:a},f.createElement(u.a.div,W({ref:t},i,{className:Object(b.d)("chakra-accordion",o.className)}),n))))}));p.a&&(_.displayName="Accordion");var z=Object(m.a)({name:"AccordionItemContext",errorMessage:"useAccordionItemContext: `context` is undefined. Seems you forgot to wrap the accordion item parts in `<AccordionItem />` "}),B=Object(a.a)(z,2),J=B[0],L=B[1],Y=Object(i.a)((function(e,t){var n=e.children,r=e.className,o=F(e),a=o.htmlProps,c=N(o,["htmlProps"]),i=W({},Object(d.d)().container,{overflowAnchor:"none"}),s=f.useMemo((function(){return c}),[c]);return f.createElement(J,{value:s},f.createElement(u.a.div,W({ref:t},a,{className:Object(b.d)("chakra-accordion__item",r),__css:i}),Object(j.e)(n,{isExpanded:!!c.isOpen,isDisabled:!!c.isDisabled})))}));p.a&&(Y.displayName="AccordionItem");var G=Object(i.a)((function(e,t){var n=(0,L().getButtonProps)(e,t),r=W({display:"flex",alignItems:"center",width:"100%",outline:0},Object(d.d)().button);return f.createElement(u.a.button,W({},n,{className:Object(b.d)("chakra-accordion__button",e.className),__css:r}))}));p.a&&(G.displayName="AccordionButton");var R=Object(i.a)((function(e,t){var n=E().reduceMotion,r=L(),o=r.getPanelProps,a=r.isOpen,c=o(e,t),i=Object(b.d)("chakra-accordion__panel",e.className),s=Object(d.d)();n||delete c.hidden;var l=f.createElement(u.a.div,W({},c,{__css:s.panel,className:i}));return n?l:f.createElement(h.a,{in:a},l)}));p.a&&(R.displayName="AccordionPanel");var Q=function(e){var t=L(),n=t.isOpen,r=t.isDisabled,o=E().reduceMotion,a=Object(b.d)("chakra-accordion__icon",e.className),i=W({opacity:r?.4:1,transform:n?"rotate(-180deg)":void 0,transition:o?void 0:"transform 0.2s",transformOrigin:"center"},Object(d.d)().icon);return f.createElement(c.a,W({viewBox:"0 0 24 24","aria-hidden":!0,className:a,__css:i},e),f.createElement("path",{fill:"currentColor",d:"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"}))};p.a&&(Q.displayName="AccordionIcon");var U=n(224),V=n(189),X=n(1),Z=function(e){var t=e.question,n=e.children;return Object(X.jsxs)(Y,{children:[Object(X.jsxs)(G,{children:[Object(X.jsx)(r.a,{flex:"1",py:2,textAlign:"left",children:Object(X.jsx)(o.a,{as:"h3",ml:8,size:"sm",children:t})}),Object(X.jsx)(Q,{})]}),Object(X.jsx)(R,{px:12,py:4,children:Object(X.jsx)(V.a,{color:"gray.800",fontSize:"md",sx:{p:{marginTop:"0",marginBottom:"4"}},children:n})})]})},$=n(55),ee=function(e){var t=e.href,n=e.children;return Object(X.jsx)($.a,{color:"inherit",hasWarning:!1,href:t,textDecoration:"underline",children:n})},te=function(e){var t=e.heading,n=e.children;return Object(X.jsxs)(Y,{children:[Object(X.jsxs)(G,{children:[Object(X.jsx)(r.a,{flex:"1",textAlign:"left",children:Object(X.jsx)(o.a,{as:"h2",ml:4,size:"lg",children:t})}),Object(X.jsx)(Q,{})]}),Object(X.jsx)(R,{p:0,children:Object(X.jsx)(_,{allowMultiple:!0,w:"100%",children:n})})]})},ne=function(){return Object(X.jsx)(U.a,{meta:{title:"FAQ",description:"Frequently Asked Questions"},pageName:"faq",children:Object(X.jsxs)(r.a,{bg:"white",color:"blue.800",h:"100%",w:"100%",children:[Object(X.jsx)(r.a,{bg:"gray.50",py:20,width:"100%",children:Object(X.jsx)(o.a,{as:"h1",mx:"auto",textAlign:"center",children:"Frequently Asked Questions"})}),Object(X.jsxs)(_,{allowMultiple:!0,defaultIndex:[0,1],children:[Object(X.jsxs)(te,{heading:"General",children:[Object(X.jsx)(Z,{question:"What is Construct Hub?",children:Object(X.jsx)("p",{children:"It is a central destination to discover and share cloud application design patterns and reference architectures defined for the AWS CDK, CDK for Kubernetes (CDK8s), CDK for Terraform (CDKtf) and any other construct-based tool."})}),Object(X.jsxs)(Z,{question:"Why should I use Construct Hub?",children:[Object(X.jsx)("p",{children:"Construct Hub is built to serve the community that uses the constructs programming model (CPM) and to allow them find publicly available constructs they can reuse. Before the Construct Hub, developers did not have an easy way to discover construct libraries created by the community since they were published across various package managers and without a central index."}),Object(X.jsx)("p",{children:"The Construct Hub is a central, trusted venue CDK developers can use to discover published constructs to help them build their applications. In the Dev Preview Construct Hub you can discover constructs in TypeScript and Python and read their documentation and improved API reference in the programming language that the package supports."})]}),Object(X.jsxs)(Z,{question:"How can I add my construct to the Construct Hub?",children:[Object(X.jsxs)("p",{children:["In order to add your construct to the Construct Hub, you will need to publish it to the"," ",Object(X.jsx)(ee,{href:"https://www.npmjs.com/",children:"npmjs.com"})," ","registry, use a permissive license (Apache, BSD, MIT), and annotate it with one of the supported keywords (aws-cdk, cdk8s or cdktf)."]}),Object(X.jsxs)("p",{children:["Additionally, since one of the main goals of the Construct Hub is to enable an ecosystem of constructs that can be consumed by all CDK languages, your library ",Object(X.jsx)("strong",{children:"must"})," be compiled with"," ",Object(X.jsx)(ee,{href:"https://aws.github.io/jsii/",children:"JSII"}),", which is a TypeScript-based, which is a TypeScript-based programming language for creating multi-language libraries. The Construct Hub leverages the type information produced by the JSII compiler in order to render the rich multi-language API reference displayed at the Construct Hub."]}),Object(X.jsx)("p",{children:"The Construct Hub monitors all updates to the npm Registry and will list any packages that meet the above requirements within 5-10 minutes. If your package does not appear in the Construct Hub, please file an issue on our GitHub repository."}),Object(X.jsxs)("p",{children:["There\u2019s some great community content about publishing construct libraries. Check out"," ",Object(X.jsx)(ee,{href:"https://dev.to/aws-builders/a-beginner-s-guide-to-create-aws-cdk-construct-library-with-projen-5eh4",children:'"A Beginner\'s Guide to Create AWS CDK Construct Library with projen"'})," ","by ",Object(X.jsx)(ee,{href:"https://hayao-k.dev/",children:"hayao-k"}),"."]}),Object(X.jsxs)("p",{children:["If you already have a library written in TypeScript and you are looking for information on how to migrate to JSII, see the"," ",Object(X.jsx)(ee,{href:"https://aws.github.io/jsii/user-guides/#library-author-guide",children:"JSII library author guide"}),"."]})]}),Object(X.jsx)(Z,{question:"What is a construct?",children:Object(X.jsxs)("p",{children:["The Constructs Programming Model (CPM) introduces the notion of"," ",Object(X.jsx)("strong",{children:"constructs"}),", which represent cloud building blocks that can be used to assemble complete applications of any complexity. AWS, enterprises, start-ups, and individual developers use CDK constructs to share proven architecture patterns as reusable code libraries, so that everyone can benefit from the collective wisdom of the community."]})}),Object(X.jsx)(Z,{question:"Who owns the constructs in the Construct Hub?",children:Object(X.jsx)("p",{children:"The constructs are owned by the publishers of the packages. Constructs are user generated content that are governed by their own license terms which is displayed in the search results and can be accessed directly through the hyperlinked package page."})}),Object(X.jsx)(Z,{question:"Is the content served in Construct Hub meant to be consumed programmatically?",children:Object(X.jsxs)("p",{children:["No. The content displayed in the site is user generated, with some display formatting. We do not advise that you consume constructs from the search results programmatically. Please note that Construct Hub is a search engine intended to surface third party content from a public endpoint and we provide these results for your convenience AS-IS in accordance with our"," ",Object(X.jsx)(ee,{href:"https://constructs.dev/terms",children:"Site Terms"}),"."]})}),Object(X.jsx)(Z,{question:"Which CDK types are available on the Construct Hub?",children:Object(X.jsx)("p",{children:"AWS CDK, CDK for Kubernetes (CDK8s) and CDK for Terraform (CDKtf)."})}),Object(X.jsx)(Z,{question:"What is AWS CDK?",children:Object(X.jsxs)("p",{children:["AWS CDK is an open-source software development framework for defining applications on AWS and reusable abstractions using familiar programming languages and rich object-oriented APIs. AWS CDK apps synthesize intostandard CloudFormation templates which can be deployed to create infrastructure on AWS. For more information, click"," ",Object(X.jsx)(ee,{href:"https://docs.aws.amazon.com/cdk/latest/guide/home.html",children:"here"}),"."]})}),Object(X.jsx)(Z,{question:"What is CDK8s?",children:Object(X.jsxs)("p",{children:["CDK8s is an open-source software development framework for defining Kubernetes applications and reusable abstractions using familiar programming languages and rich object-oriented APIs."," ",Object(X.jsx)("strong",{children:"cdk8s"})," apps synthesize into standard Kubernetes manifests which can be applied to any Kubernetes cluster. For more information, click"," ",Object(X.jsx)(ee,{href:"https://cdk8s.io/",children:"here"}),"."]})}),Object(X.jsx)(Z,{question:"What is CDKtf?",children:Object(X.jsxs)("p",{children:["The community preview of the"," ",Object(X.jsx)(ee,{href:"https://aws.amazon.com/cdk/",children:"Cloud Development Kit"}),"for Terraform allows you to define infrastructure using a familiar programming language such as TypeScript, Python, or Go, while leveraging the hundreds of providers and thousands of module definitions provided by Terraform and the Terraform ecosystem. For more information, click"," ",Object(X.jsx)(ee,{href:"https://learn.hashicorp.com/tutorials/terraform/cdktf",children:"here"}),"."]})}),Object(X.jsx)(Z,{question:"What programming languages are supported in Dev Preview?",children:Object(X.jsx)("p",{children:"The Construct Hub Dev Preview supports Python and TypeScript."})}),Object(X.jsx)(Z,{question:"Is the support for .NET, Java and Go in the roadmap?",children:Object(X.jsx)("p",{children:"Yes."})}),Object(X.jsx)(Z,{question:"Can I view the source code of a construct?",children:Object(X.jsx)("p",{children:"For each package you can click the repository link that the publisher provided with the package. Theoretically this link should redirect your to the package\u2019s repository. However, we noticed that sometimes the code in the repository can be more or less updated than the package\u2019s code. Please take that into account."})}),Object(X.jsx)(Z,{question:"How can I install a package?",children:Object(X.jsx)("p",{children:"Press \u201cInstall\u201d in the package page and you\u2019ll see the installation instructions."})}),Object(X.jsx)(Z,{question:"How can I report a package?",children:Object(X.jsxs)("p",{children:['You can report a package by clicking "Report a package" from the package page. For claims of copyright infringement, read here:'," ",Object(X.jsx)(ee,{href:"https://aws.amazon.com/terms/#notice-and-procedure-for-making-claims-of-copyright-infringement",children:"https://aws.amazon.com/terms/#notice-and-procedure-for-making-claims-of-copyright-infringement"}),"."]})}),Object(X.jsx)(Z,{question:"How can I open a bug or send a PR for a package?",children:Object(X.jsx)("p",{children:"The package is owned by the publisher. To report a bug or send a PR, you should go to the repository link the publisher provided and open a ticket there"})}),Object(X.jsx)(Z,{question:"Why isn\u2019t my package displayed in the Construct Hub?",children:Object(X.jsx)("p",{children:"The Construct Hub displays only publicly available constructs that are JSII compatible and that were published on a public npm registry with an open source license. The package should be published on npm registry with the one of the following Keywords: aws-cdk, cdk8s or cdktf."})}),Object(X.jsx)(Z,{question:"Can I update my package after it has been displayed?",children:Object(X.jsx)("p",{children:"Yes. You should publish a new valid version to the public npm registry. We will detect the new version and display it on the Construct Hub."})}),Object(X.jsx)(Z,{question:"How does the Construct Hub relates to the Construct Catalog?",children:Object(X.jsxs)("p",{children:["The Construct Catalog was built by the CDK community in collaboration with the AWS CDK team. The Construct Hub is the official version for the Construct Catalog."," ",Object(X.jsx)(ee,{href:"https://awscdk.io",children:"https://awscdk.io"})," now redirects to the Construct Hub."]})}),Object(X.jsx)(Z,{question:"How can I participate in the Construct Hub community?",children:Object(X.jsxs)("p",{children:["The Construct Hub is built as a public construct. Please join the"," ",Object(X.jsx)(ee,{href:"https://github.com/cdklabs/construct-hub-webapp",children:"Construct Hub GitHub community"}),". You are also welcome to join the #construct-hub-dev channel in the ",Object(X.jsx)(ee,{href:"https://cdk.dev/",children:"CDK community"})," Slack workspace."]})}),Object(X.jsx)(Z,{question:"Is there a community slack channel for the CDK community?",children:Object(X.jsxs)("p",{children:["Please join the CDK Slack channel (",Object(X.jsx)(ee,{href:"https://cdk.dev/",children:"https://cdk.dev/"}),"). This Slack channel is managed by the CDK community for the CDK community."]})})]}),Object(X.jsxs)(te,{heading:"Getting Started",children:[Object(X.jsx)(Z,{question:"Do I need a user for the Construct Hub?",children:Object(X.jsx)("p",{children:"No. The Construct Hub doesn\u2019t require any signup."})}),Object(X.jsx)(Z,{question:"How do I get started?",children:Object(X.jsx)("p",{children:"Use our home page to discover publicly available packages. You may run a search to find packages you\u2019re interested in and mention your preferred programming language. For each package you will find helpful information such as README and API reference for the supported programming languages. You will also find links and keywords that the publisher provided with the package and installation instructions."})})]})]})]})})}}}]);
2
+ //# sourceMappingURL=11.6f7f0c4b.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["constants/pageInfo.ts","components/Page/Page.tsx","../../../src/use-accordion.ts","../../../src/accordion.tsx","views/FAQ/FAQItem.tsx","views/FAQ/FAQLink.tsx","views/FAQ/FAQSection.tsx","views/FAQ/FAQ.tsx"],"names":["pageInfo","home","event","name","faq","packageProfile","search","siteTerms","notFound","page","pageType","Page","children","meta","pageName","trackPageView","usePageView","useEffect","suffix","title","description","formattedTitle","Helmet","process","content","charSet","property","createDescendantContext","useAccordion","props","index","allowToggle","condition","isUndefined","isArray","warn","message","allowMultipleWarning","allowMultipleAndAllowToggleWarning","descendants","useAccordionDescendants","useState","useUnmountEffect","setFocusedIndex","useControllableState","value","defaultValue","defaultIndex","onChange","setIndex","htmlProps","getAccordionItemProps","idx","isOpen","allowMultiple","nextState","addItem","removeItem","focusedIndex","createContext","errorMessage","useAccordionItem","id","useAccordionContext","buttonRef","useRef","useIds","focusableNotDisabledWarning","useAccordionDescendant","disabled","isDisabled","isFocusable","warnIfOpenAndDisabled","onClick","useCallback","onKeyDown","action","ArrowDown","next","focus","ArrowUp","prev","Home","first","End","last","normalizeEventKey","onFocus","getButtonProps","ref","type","mergeRefs","register","callAllHandlers","getPanelProps","role","hidden","buttonId","onOpen","onClose","Accordion","forwardRef","reduceMotion","styles","useMultiStyleConfig","omitThemingProps","ctx","context","className","cx","AccordionItem","containerStyles","useStyles","overflowAnchor","React","__css","runIfFn","isExpanded","AccordionButton","buttonProps","useAccordionItemContext","buttonStyles","display","alignItems","width","outline","AccordionPanel","panelProps","_className","child","in","AccordionIcon","iconStyles","opacity","transform","transition","undefined","transformOrigin","viewBox","fill","d","FAQItem","question","flex","py","textAlign","as","ml","size","px","color","fontSize","sx","p","marginTop","marginBottom","FAQLink","href","ExternalLink","hasWarning","textDecoration","FAQSection","heading","w","FAQ","bg","h","mx"],"mappings":"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","file":"static/js/10.32615aa0.chunk.js","sourcesContent":["export const pageInfo = {\n home: {\n event: {\n name: \"Home Load\",\n },\n },\n faq: {\n event: {\n name: \"Frequently Asked Questions Load\",\n },\n },\n packageProfile: {\n event: {\n name: \"Package Profile Load\",\n },\n },\n search: {\n event: {\n name: \"Search Load\",\n },\n },\n siteTerms: {\n event: {\n name: \"Site Terms Load\",\n },\n },\n notFound: {\n page: {\n pageType: \"errorPage\",\n },\n event: {\n name: \"404 Page Load\",\n },\n },\n} as const;\n","import { FunctionComponent, useEffect } from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { pageInfo } from \"../../constants/pageInfo\";\nimport { usePageView } from \"../../contexts/Analytics\";\n\nexport interface PageProps {\n pageName: keyof typeof pageInfo;\n meta: {\n suffix?: boolean;\n title: string;\n description: string;\n };\n}\n\nexport const Page: FunctionComponent<PageProps> = ({\n children,\n meta,\n pageName,\n}) => {\n const trackPageView = usePageView(pageInfo[pageName]);\n\n useEffect(() => {\n trackPageView();\n }, [trackPageView]);\n\n const { suffix = true, title, description } = meta;\n const formattedTitle = suffix ? `${title} - Construct Hub` : title;\n\n return (\n <>\n <Helmet>\n {process.env.NODE_ENV === \"development\" && (\n <meta\n content=\"default-src 'self' 'unsafe-inline' https://*.awsstatic.com https://amazonwebservices.d2.sc.omtrdc.net; connect-src 'self' https://*.shortbread.aws.dev ws://localhost:3000 https://*.awsstatic.com https://amazonwebservices.d2.sc.omtrdc.net; frame-src 'none'; img-src 'self' https://* http://*.omtrdc.net; object-src 'none'; style-src 'self' 'unsafe-inline';\"\n httpEquiv=\"Content-Security-Policy\"\n />\n )}\n\n <meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n <meta charSet=\"utf-8\" />\n\n <title>{formattedTitle}</title>\n <meta content={formattedTitle} property=\"og:title\" />\n <meta content={formattedTitle} name=\"twitter:title\" />\n <meta content=\"summary\" name=\"twitter:card\" />\n\n <meta content={description} name=\"description\" />\n <meta content={description} property=\"og:description\" />\n <meta content={description} name=\"twitter:description\" />\n </Helmet>\n {children}\n </>\n );\n};\n","import { createDescendantContext } from \"@chakra-ui/descendant\"\nimport {\n useControllableState,\n useIds,\n useUnmountEffect,\n} from \"@chakra-ui/hooks\"\nimport {\n createContext,\n EventKeyMap,\n mergeRefs,\n PropGetter,\n} from \"@chakra-ui/react-utils\"\nimport {\n addItem,\n callAllHandlers,\n focus,\n isArray,\n isUndefined,\n normalizeEventKey,\n removeItem,\n warn,\n} from \"@chakra-ui/utils\"\nimport React, { useCallback, useRef, useState } from \"react\"\n\n/* -------------------------------------------------------------------------------------------------\n * Create context to track descendants and their indices\n * -----------------------------------------------------------------------------------------------*/\n\nexport const [\n AccordionDescendantsProvider,\n useAccordionDescendantsContext,\n useAccordionDescendants,\n useAccordionDescendant,\n] = createDescendantContext<HTMLButtonElement>()\n\n/* -------------------------------------------------------------------------------------------------\n * useAccordion - The root react hook that manages all accordion items\n * -----------------------------------------------------------------------------------------------*/\n\nexport type ExpandedIndex = number | number[]\n\nexport interface UseAccordionProps {\n /**\n * If `true`, multiple accordion items can be expanded at once.\n */\n allowMultiple?: boolean\n /**\n * If `true`, any expanded accordion item can be collapsed again.\n */\n allowToggle?: boolean\n /**\n * The index(es) of the expanded accordion item\n */\n index?: ExpandedIndex\n /**\n * The initial index(es) of the expanded accordion item\n */\n defaultIndex?: ExpandedIndex\n /**\n * The callback invoked when accordion items are expanded or collapsed.\n */\n onChange?(expandedIndex: ExpandedIndex): void\n}\n\n/**\n * useAccordion hook provides all the state and focus management logic\n * for accordion items.\n */\nexport function useAccordion(props: UseAccordionProps) {\n const {\n onChange,\n defaultIndex,\n index: indexProp,\n allowMultiple,\n allowToggle,\n ...htmlProps\n } = props\n\n // validate the props and `warn` if used incorrectly\n allowMultipleWarning(props)\n allowMultipleAndAllowToggleWarning(props)\n\n /**\n * Think of this as the register to each accordion item.\n * We used to manage focus between accordion item buttons.\n *\n * Every accordion item, registers their button refs in this context\n */\n const descendants = useAccordionDescendants()\n\n /**\n * This state is used to track the index focused accordion\n * button when click on the button, tab on the button, or\n * use the down/up arrow to navigate.\n */\n const [focusedIndex, setFocusedIndex] = useState(-1)\n\n /**\n * Reset focused index when accordion unmounts\n * or descendants change\n */\n useUnmountEffect(() => {\n setFocusedIndex(-1)\n })\n\n /**\n * Hook that manages the controlled and un-controlled state\n * for the accordion.\n */\n const [index, setIndex] = useControllableState({\n value: indexProp,\n defaultValue() {\n if (allowMultiple) return defaultIndex ?? []\n return defaultIndex ?? -1\n },\n onChange,\n })\n\n /**\n * Gets the `isOpen` and `onChange` props for a child accordion item based on\n * the child's index.\n *\n * @param idx {number} The index of the child accordion item\n */\n const getAccordionItemProps = (idx: number | null) => {\n let isOpen = false\n if (idx !== null) {\n isOpen = isArray(index) ? index.includes(idx) : index === idx\n }\n\n const onChange = (isOpen: boolean) => {\n if (idx === null) return\n\n if (allowMultiple && isArray(index)) {\n const nextState = isOpen ? addItem(index, idx) : removeItem(index, idx)\n setIndex(nextState)\n } else if (isOpen) {\n setIndex(idx)\n } else if (allowToggle) {\n setIndex(-1)\n }\n }\n\n return { isOpen, onChange }\n }\n\n return {\n index,\n setIndex,\n htmlProps,\n getAccordionItemProps,\n focusedIndex,\n setFocusedIndex,\n descendants,\n }\n}\n\nexport type UseAccordionReturn = ReturnType<typeof useAccordion>\n\n/* -------------------------------------------------------------------------------------------------\n * Create context for the root accordion logic\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AccordionContext\n extends Omit<UseAccordionReturn, \"htmlProps\" | \"descendants\"> {\n reduceMotion: boolean\n}\n\nexport const [\n AccordionProvider,\n useAccordionContext,\n] = createContext<AccordionContext>({\n name: \"AccordionContext\",\n errorMessage:\n \"useAccordionContext: `context` is undefined. Seems you forgot to wrap the accordion components in `<Accordion />`\",\n})\n\n/* -------------------------------------------------------------------------------------------------\n * Hook for a single accordion item\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface UseAccordionItemProps {\n /**\n * If `true`, the accordion item will be disabled.\n */\n isDisabled?: boolean\n /**\n * If `true`, the accordion item will be focusable.\n */\n isFocusable?: boolean\n /**\n * A unique id for the accordion item.\n */\n id?: string\n}\n\n/**\n * useAccordionItem\n *\n * React hook that provides the open/close functionality\n * for an accordion item and its children\n */\nexport function useAccordionItem(props: UseAccordionItemProps) {\n const { isDisabled, isFocusable, id, ...htmlProps } = props\n const { getAccordionItemProps, setFocusedIndex } = useAccordionContext()\n\n const buttonRef = useRef<HTMLElement>(null)\n\n /**\n * Generate unique ids for all accordion item components (button and panel)\n */\n const [buttonId, panelId] = useIds(id, `accordion-button`, `accordion-panel`)\n\n focusableNotDisabledWarning(props)\n\n /**\n * Think of this as a way to register this accordion item\n * with its parent `useAccordion`\n */\n const { register, index, descendants } = useAccordionDescendant({\n disabled: isDisabled && !isFocusable,\n })\n\n const { isOpen, onChange } = getAccordionItemProps(\n index === -1 ? null : index,\n )\n\n warnIfOpenAndDisabled({ isOpen, isDisabled })\n\n const onOpen = () => {\n onChange?.(true)\n }\n\n const onClose = () => {\n onChange?.(false)\n }\n\n /**\n * Toggle the visibility of the accordion item\n */\n const onClick = useCallback(() => {\n onChange?.(!isOpen)\n setFocusedIndex(index)\n }, [index, setFocusedIndex, isOpen, onChange])\n\n /**\n * Manage keyboard navigation between accordion items.\n */\n const onKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n const eventKey = normalizeEventKey(event)\n\n const keyMap: EventKeyMap = {\n ArrowDown: () => {\n const next = descendants.nextEnabled(index)\n if (next) focus(next.node)\n },\n ArrowUp: () => {\n const prev = descendants.prevEnabled(index)\n if (prev) focus(prev.node)\n },\n Home: () => {\n const first = descendants.firstEnabled()\n if (first) focus(first.node)\n },\n End: () => {\n const last = descendants.lastEnabled()\n if (last) focus(last.node)\n },\n }\n\n const action = keyMap[eventKey]\n\n if (action) {\n event.preventDefault()\n action(event)\n }\n },\n [descendants, index],\n )\n\n /**\n * Since each accordion item's button still remains tabbable, let's\n * update the focusedIndex when it receives focus\n */\n const onFocus = useCallback(() => {\n setFocusedIndex(index)\n }, [setFocusedIndex, index])\n\n const getButtonProps: PropGetter<HTMLButtonElement> = useCallback(\n (props = {}, ref = null) => ({\n ...props,\n type: \"button\",\n ref: mergeRefs(register, buttonRef, ref),\n id: buttonId,\n disabled: !!isDisabled,\n \"aria-expanded\": !!isOpen,\n \"aria-controls\": panelId,\n onClick: callAllHandlers(props.onClick, onClick),\n onFocus: callAllHandlers(props.onFocus, onFocus),\n onKeyDown: callAllHandlers(props.onKeyDown, onKeyDown),\n }),\n [\n buttonId,\n isDisabled,\n isOpen,\n onClick,\n onFocus,\n onKeyDown,\n panelId,\n register,\n ],\n )\n\n const getPanelProps: PropGetter = useCallback(\n (props = {}, ref = null) => ({\n ...props,\n ref,\n role: \"region\",\n id: panelId,\n \"aria-labelledby\": buttonId,\n hidden: !isOpen,\n }),\n [buttonId, isOpen, panelId],\n )\n\n return {\n isOpen,\n isDisabled,\n isFocusable,\n onOpen,\n onClose,\n getButtonProps,\n getPanelProps,\n htmlProps,\n }\n}\n\nexport type UseAccordionItemReturn = ReturnType<typeof useAccordionItem>\n\n/* -------------------------------------------------------------------------------------------------\n * Validate accordion and accordion item props, and emit warnings.\n * -----------------------------------------------------------------------------------------------*/\n\nfunction allowMultipleWarning(props: UseAccordionProps) {\n const index = props.index || props.defaultIndex\n const condition =\n !isUndefined(index) && !isArray(index) && props.allowMultiple\n\n warn({\n condition: !!condition,\n message: `If 'allowMultiple' is passed, then 'index' or 'defaultIndex' must be an array. You passed: ${typeof index},`,\n })\n}\n\nfunction allowMultipleAndAllowToggleWarning(props: UseAccordionProps) {\n warn({\n condition: !!(props.allowMultiple && props.allowToggle),\n message: `If 'allowMultiple' is passed, 'allowToggle' will be ignored. Either remove 'allowToggle' or 'allowMultiple' depending on whether you want multiple accordions visible or not`,\n })\n}\n\nfunction focusableNotDisabledWarning(props: UseAccordionItemProps) {\n warn({\n condition: !!(props.isFocusable && !props.isDisabled),\n message: `Using only 'isFocusable', this prop is reserved for situations where you pass 'isDisabled' but you still want the element to receive focus (A11y). Either remove it or pass 'isDisabled' as well.\n `,\n })\n}\n\nfunction warnIfOpenAndDisabled(props: {\n isOpen: boolean\n isDisabled?: boolean\n}) {\n warn({\n condition: props.isOpen && !!props.isDisabled,\n message: \"Cannot open a disabled accordion item\",\n })\n}\n","import { Icon, IconProps } from \"@chakra-ui/icon\"\nimport {\n chakra,\n forwardRef,\n omitThemingProps,\n StylesProvider,\n SystemStyleObject,\n ThemingProps,\n useMultiStyleConfig,\n useStyles,\n HTMLChakraProps,\n} from \"@chakra-ui/system\"\nimport { Collapse } from \"@chakra-ui/transition\"\nimport { cx, Omit, runIfFn, __DEV__ } from \"@chakra-ui/utils\"\nimport { createContext, MaybeRenderProp } from \"@chakra-ui/react-utils\"\nimport * as React from \"react\"\nimport {\n AccordionProvider,\n useAccordion,\n useAccordionContext,\n useAccordionItem,\n UseAccordionItemProps,\n UseAccordionItemReturn,\n UseAccordionProps,\n AccordionDescendantsProvider,\n} from \"./use-accordion\"\n\n/* -------------------------------------------------------------------------------------------------\n * Accordion - The wrapper that provides context for all accordion items\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AccordionProps\n extends UseAccordionProps,\n Omit<HTMLChakraProps<\"div\">, keyof UseAccordionProps>,\n ThemingProps<\"Accordion\"> {\n /**\n * If `true`, height animation and transitions will be disabled.\n */\n reduceMotion?: boolean\n}\n\n/**\n * The wrapper that provides context and focus management\n * for all accordion items.\n *\n * It wraps all accordion items in a `div` for better grouping.\n * @see Docs https://chakra-ui.com/accordion\n */\nexport const Accordion = forwardRef<AccordionProps, \"div\">(\n ({ children, reduceMotion, ...props }, ref) => {\n const styles = useMultiStyleConfig(\"Accordion\", props)\n const ownProps = omitThemingProps(props)\n\n const { htmlProps, descendants, ...context } = useAccordion(ownProps)\n\n const ctx = React.useMemo(\n () => ({ ...context, reduceMotion: !!reduceMotion }),\n [context, reduceMotion],\n )\n\n return (\n <AccordionDescendantsProvider value={descendants}>\n <AccordionProvider value={ctx}>\n <StylesProvider value={styles}>\n <chakra.div\n ref={ref}\n {...htmlProps}\n className={cx(\"chakra-accordion\", props.className)}\n >\n {children}\n </chakra.div>\n </StylesProvider>\n </AccordionProvider>\n </AccordionDescendantsProvider>\n )\n },\n)\n\nif (__DEV__) {\n Accordion.displayName = \"Accordion\"\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Accordion Item\n * -----------------------------------------------------------------------------------------------*/\n\ntype AccordionItemContext = Omit<UseAccordionItemReturn, \"htmlProps\">\n\nconst [\n AccordionItemProvider,\n useAccordionItemContext,\n] = createContext<AccordionItemContext>({\n name: \"AccordionItemContext\",\n errorMessage:\n \"useAccordionItemContext: `context` is undefined. Seems you forgot to wrap the accordion item parts in `<AccordionItem />` \",\n})\n\nexport interface AccordionItemProps\n extends Omit<HTMLChakraProps<\"div\">, keyof UseAccordionItemProps>,\n UseAccordionItemProps {\n children?: MaybeRenderProp<{\n isExpanded: boolean\n isDisabled: boolean\n }>\n}\n\n/**\n * AccordionItem is a single accordion that provides the open-close\n * behavior when the accordion button is clicked.\n *\n * It also provides context for the accordion button and panel.\n */\nexport const AccordionItem = forwardRef<AccordionItemProps, \"div\">(\n (props, ref) => {\n const { children, className } = props\n const { htmlProps, ...context } = useAccordionItem(props)\n\n const styles = useStyles()\n const containerStyles: SystemStyleObject = {\n ...styles.container,\n overflowAnchor: \"none\",\n }\n\n const ctx = React.useMemo(() => context, [context])\n\n return (\n <AccordionItemProvider value={ctx}>\n <chakra.div\n ref={ref}\n {...htmlProps}\n className={cx(\"chakra-accordion__item\", className)}\n __css={containerStyles}\n >\n {runIfFn(children, {\n isExpanded: !!context.isOpen,\n isDisabled: !!context.isDisabled,\n })}\n </chakra.div>\n </AccordionItemProvider>\n )\n },\n)\n\nif (__DEV__) {\n AccordionItem.displayName = \"AccordionItem\"\n}\n\n/**\n * React hook to get the state and actions of an accordion item\n */\nexport function useAccordionItemState() {\n const { isOpen, isDisabled, onClose, onOpen } = useAccordionItemContext()\n return { isOpen, onClose, isDisabled, onOpen }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Accordion Item => Button\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AccordionButtonProps extends HTMLChakraProps<\"button\"> {}\n\n/**\n * AccordionButton is used expands and collapses an accordion item.\n * It must be a child of `AccordionItem`.\n *\n * Note 🚨: Each accordion button must be wrapped in an heading tag,\n * that is appropriate for the information architecture of the page.\n */\nexport const AccordionButton = forwardRef<AccordionButtonProps, \"button\">(\n (props, ref) => {\n const { getButtonProps } = useAccordionItemContext()\n const buttonProps = getButtonProps(props, ref)\n\n const styles = useStyles()\n const buttonStyles: SystemStyleObject = {\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n outline: 0,\n ...styles.button,\n }\n\n return (\n <chakra.button\n {...buttonProps}\n className={cx(\"chakra-accordion__button\", props.className)}\n __css={buttonStyles}\n />\n )\n },\n)\n\nif (__DEV__) {\n AccordionButton.displayName = \"AccordionButton\"\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Accordion Item => Panel\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AccordionPanelProps extends HTMLChakraProps<\"div\"> {}\n\n/**\n * Accordion panel that holds the content for each accordion.\n * It shows and hides based on the state login from the `AccordionItem`.\n *\n * It uses the `Collapse` component to animate its height.\n */\nexport const AccordionPanel = forwardRef<AccordionPanelProps, \"div\">(\n (props, ref) => {\n const { reduceMotion } = useAccordionContext()\n const { getPanelProps, isOpen } = useAccordionItemContext()\n\n // remove `hidden` prop, 'coz we're using height animation\n const panelProps = getPanelProps(props, ref)\n\n const _className = cx(\"chakra-accordion__panel\", props.className)\n const styles = useStyles()\n\n if (!reduceMotion) {\n delete panelProps.hidden\n }\n\n const child = (\n <chakra.div {...panelProps} __css={styles.panel} className={_className} />\n )\n\n if (!reduceMotion) {\n return <Collapse in={isOpen}>{child}</Collapse>\n }\n\n return child\n },\n)\n\nif (__DEV__) {\n AccordionPanel.displayName = \"AccordionPanel\"\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Accordion Item => Icon\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * AccordionIcon that gives a visual cue of the open/close state of the accordion item.\n * It rotates `180deg` based on the open/close state.\n */\nexport const AccordionIcon: React.FC<IconProps> = (props) => {\n const { isOpen, isDisabled } = useAccordionItemContext()\n const { reduceMotion } = useAccordionContext()\n\n const _className = cx(\"chakra-accordion__icon\", props.className)\n const styles = useStyles()\n\n const iconStyles: SystemStyleObject = {\n opacity: isDisabled ? 0.4 : 1,\n transform: isOpen ? \"rotate(-180deg)\" : undefined,\n transition: reduceMotion ? undefined : \"transform 0.2s\",\n transformOrigin: \"center\",\n ...styles.icon,\n }\n\n return (\n <Icon\n viewBox=\"0 0 24 24\"\n aria-hidden\n className={_className}\n __css={iconStyles}\n {...props}\n >\n <path\n fill=\"currentColor\"\n d=\"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z\"\n />\n </Icon>\n )\n}\n\nif (__DEV__) {\n AccordionIcon.displayName = \"AccordionIcon\"\n}\n","import {\n Heading,\n Text,\n AccordionIcon,\n AccordionButton,\n AccordionItem,\n AccordionPanel,\n Box,\n} from \"@chakra-ui/react\";\nimport type { FunctionComponent, ReactChild } from \"react\";\n\nexport interface FAQItemProps {\n question: ReactChild;\n}\n\nexport const FAQItem: FunctionComponent<FAQItemProps> = ({\n question,\n children,\n}) => (\n <AccordionItem>\n <AccordionButton>\n <Box flex=\"1\" py={2} textAlign=\"left\">\n <Heading as=\"h3\" ml={8} size=\"sm\">\n {question}\n </Heading>\n </Box>\n <AccordionIcon />\n </AccordionButton>\n <AccordionPanel px={12} py={4}>\n <Text\n color=\"gray.800\"\n fontSize=\"md\"\n sx={{ p: { marginTop: \"0\", marginBottom: \"4\" } }}\n >\n {children}\n </Text>\n </AccordionPanel>\n </AccordionItem>\n);\n","import { FunctionComponent } from \"react\";\nimport { ExternalLink } from \"../../components/ExternalLink\";\n\nexport interface FAQLinkProps {\n href: string;\n}\n\nexport const FAQLink: FunctionComponent<FAQLinkProps> = ({\n href,\n children,\n}) => (\n <ExternalLink\n color=\"inherit\"\n hasWarning={false}\n href={href}\n textDecoration=\"underline\"\n >\n {children}\n </ExternalLink>\n);\n","import {\n AccordionIcon,\n AccordionButton,\n AccordionItem,\n AccordionPanel,\n Heading,\n Box,\n Accordion,\n} from \"@chakra-ui/react\";\n\nimport type { FunctionComponent } from \"react\";\n\nexport interface FAQSectionProps {\n heading: string;\n}\n\nexport const FAQSection: FunctionComponent<FAQSectionProps> = ({\n heading,\n children,\n}) => (\n <AccordionItem>\n <AccordionButton>\n <Box flex=\"1\" textAlign=\"left\">\n <Heading as=\"h2\" ml={4} size=\"lg\">\n {heading}\n </Heading>\n </Box>\n <AccordionIcon />\n </AccordionButton>\n <AccordionPanel p={0}>\n <Accordion allowMultiple w=\"100%\">\n {children}\n </Accordion>\n </AccordionPanel>\n </AccordionItem>\n);\n","import { Box, Heading, Accordion } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Page } from \"../../components/Page\";\nimport { FAQItem } from \"./FAQItem\";\nimport { FAQLink } from \"./FAQLink\";\nimport { FAQSection } from \"./FAQSection\";\n\nexport const FAQ: FunctionComponent = () => (\n <Page\n meta={{\n title: \"FAQ\",\n description: \"Frequently Asked Questions\",\n }}\n pageName=\"faq\"\n >\n <Box bg=\"white\" color=\"blue.800\" h=\"100%\" w=\"100%\">\n <Box bg=\"gray.50\" py={20} width=\"100%\">\n <Heading as=\"h1\" mx=\"auto\" textAlign=\"center\">\n Frequently Asked Questions\n </Heading>\n </Box>\n <Accordion allowMultiple defaultIndex={[0, 1]}>\n <FAQSection heading=\"General\">\n <FAQItem question=\"What is Construct Hub?\">\n <p>\n It is a central destination to discover and share cloud\n application design patterns and reference architectures defined\n for the AWS CDK, CDK for Kubernetes (CDK8s), CDK for Terraform\n (CDKtf) and any other construct-based tool.\n </p>\n </FAQItem>\n <FAQItem question=\"Why should I use Construct Hub?\">\n <p>\n Construct Hub is built to serve the community that uses the\n constructs programming model (CPM) and to allow them find publicly\n available constructs they can reuse. Before the Construct Hub,\n developers did not have an easy way to discover construct\n libraries created by the community since they were published\n across various package managers and without a central index.\n </p>\n <p>\n The Construct Hub is a central, trusted venue CDK developers can\n use to discover published constructs to help them build their\n applications. In the Dev Preview Construct Hub you can discover\n constructs in TypeScript and Python and read their documentation\n and improved API reference in the programming language that the\n package supports.\n </p>\n </FAQItem>\n <FAQItem question=\"How can I add my construct to the Construct Hub?\">\n <p>\n In order to add your construct to the Construct Hub, you will need\n to publish it to the{\" \"}\n <FAQLink href=\"https://www.npmjs.com/\">npmjs.com</FAQLink>{\" \"}\n registry, use a permissive license (Apache, BSD, MIT), and\n annotate it with one of the supported keywords (aws-cdk, cdk8s or\n cdktf).\n </p>\n <p>\n Additionally, since one of the main goals of the Construct Hub is\n to enable an ecosystem of constructs that can be consumed by all\n CDK languages, your library <strong>must</strong> be compiled with{\" \"}\n <FAQLink href=\"https://aws.github.io/jsii/\">JSII</FAQLink>, which\n is a TypeScript-based, which is a TypeScript-based programming\n language for creating multi-language libraries. The Construct Hub\n leverages the type information produced by the JSII compiler in\n order to render the rich multi-language API reference displayed at\n the Construct Hub.\n </p>\n <p>\n The Construct Hub monitors all updates to the npm Registry and\n will list any packages that meet the above requirements within\n 5-10 minutes. If your package does not appear in the Construct\n Hub, please file an issue on our GitHub repository.\n </p>\n <p>\n There’s some great community content about publishing construct\n libraries. Check out{\" \"}\n <FAQLink href=\"https://dev.to/aws-builders/a-beginner-s-guide-to-create-aws-cdk-construct-library-with-projen-5eh4\">\n &quot;A Beginner&apos;s Guide to Create AWS CDK Construct\n Library with projen&quot;\n </FAQLink>{\" \"}\n by <FAQLink href=\"https://hayao-k.dev/\">hayao-k</FAQLink>.\n </p>\n <p>\n If you already have a library written in TypeScript and you are\n looking for information on how to migrate to JSII, see the{\" \"}\n <FAQLink href=\"https://aws.github.io/jsii/user-guides/#library-author-guide\">\n JSII library author guide\n </FAQLink>\n .\n </p>\n </FAQItem>\n <FAQItem question=\"What is a construct?\">\n <p>\n The Constructs Programming Model (CPM) introduces the notion of{\" \"}\n <strong>constructs</strong>, which represent cloud building blocks\n that can be used to assemble complete applications of any\n complexity. AWS, enterprises, start-ups, and individual developers\n use CDK constructs to share proven architecture patterns as\n reusable code libraries, so that everyone can benefit from the\n collective wisdom of the community.\n </p>\n </FAQItem>\n <FAQItem question=\"Who owns the constructs in the Construct Hub?\">\n <p>\n The constructs are owned by the publishers of the packages.\n Constructs are user generated content that are governed by their\n own license terms which is displayed in the search results and can\n be accessed directly through the hyperlinked package page.\n </p>\n </FAQItem>\n <FAQItem question=\"Is the content served in Construct Hub meant to be consumed programmatically?\">\n <p>\n No. The content displayed in the site is user generated, with some\n display formatting. We do not advise that you consume constructs\n from the search results programmatically. Please note that\n Construct Hub is a search engine intended to surface third party\n content from a public endpoint and we provide these results for\n your convenience AS-IS in accordance with our{\" \"}\n <FAQLink href=\"https://constructs.dev/terms\">Site Terms</FAQLink>.\n </p>\n </FAQItem>\n <FAQItem question=\"Which CDK types are available on the Construct Hub?\">\n <p>\n AWS CDK, CDK for Kubernetes (CDK8s) and CDK for Terraform (CDKtf).\n </p>\n </FAQItem>\n <FAQItem question=\"What is AWS CDK?\">\n <p>\n AWS CDK is an open-source software development framework for\n defining applications on AWS and reusable abstractions using\n familiar programming languages and rich object-oriented APIs. AWS\n CDK apps synthesize intostandard CloudFormation templates which\n can be deployed to create infrastructure on AWS. For more\n information, click{\" \"}\n <FAQLink href=\"https://docs.aws.amazon.com/cdk/latest/guide/home.html\">\n here\n </FAQLink>\n .\n </p>\n </FAQItem>\n <FAQItem question=\"What is CDK8s?\">\n <p>\n CDK8s is an open-source software development framework for\n defining Kubernetes applications and reusable abstractions using\n familiar programming languages and rich object-oriented APIs.{\" \"}\n <strong>cdk8s</strong> apps synthesize into standard Kubernetes\n manifests which can be applied to any Kubernetes cluster. For more\n information, click{\" \"}\n <FAQLink href=\"https://cdk8s.io/\">here</FAQLink>.\n </p>\n </FAQItem>\n <FAQItem question=\"What is CDKtf?\">\n <p>\n The community preview of the{\" \"}\n <FAQLink href=\"https://aws.amazon.com/cdk/\">\n Cloud Development Kit\n </FAQLink>\n for Terraform allows you to define infrastructure using a familiar\n programming language such as TypeScript, Python, or Go, while\n leveraging the hundreds of providers and thousands of module\n definitions provided by Terraform and the Terraform ecosystem. For\n more information, click{\" \"}\n <FAQLink href=\"https://learn.hashicorp.com/tutorials/terraform/cdktf\">\n here\n </FAQLink>\n .\n </p>\n </FAQItem>\n <FAQItem question=\"What programming languages are supported in Dev Preview?\">\n <p>The Construct Hub Dev Preview supports Python and TypeScript.</p>\n </FAQItem>\n <FAQItem question=\"Is the support for .NET, Java and Go in the roadmap?\">\n <p>Yes.</p>\n </FAQItem>\n <FAQItem question=\"Can I view the source code of a construct?\">\n <p>\n For each package you can click the repository link that the\n publisher provided with the package. Theoretically this link\n should redirect your to the package’s repository. However, we\n noticed that sometimes the code in the repository can be more or\n less updated than the package’s code. Please take that into\n account.\n </p>\n </FAQItem>\n <FAQItem question=\"How can I install a package?\">\n <p>\n Press “Install” in the package page and you’ll see the\n installation instructions.\n </p>\n </FAQItem>\n <FAQItem question=\"How can I report a package?\">\n <p>\n You can report a package by clicking &quot;Report a package&quot;\n from the package page. For claims of copyright infringement, read\n here:{\" \"}\n <FAQLink href=\"https://aws.amazon.com/terms/#notice-and-procedure-for-making-claims-of-copyright-infringement\">\n https://aws.amazon.com/terms/#notice-and-procedure-for-making-claims-of-copyright-infringement\n </FAQLink>\n .\n </p>\n </FAQItem>\n <FAQItem question=\"How can I open a bug or send a PR for a package?\">\n <p>\n The package is owned by the publisher. To report a bug or send a\n PR, you should go to the repository link the publisher provided\n and open a ticket there\n </p>\n </FAQItem>\n <FAQItem question=\"Why isn’t my package displayed in the Construct Hub?\">\n <p>\n The Construct Hub displays only publicly available constructs that\n are JSII compatible and that were published on a public npm\n registry with an open source license. The package should be\n published on npm registry with the one of the following Keywords:\n aws-cdk, cdk8s or cdktf.\n </p>\n </FAQItem>\n <FAQItem question=\"Can I update my package after it has been displayed?\">\n <p>\n Yes. You should publish a new valid version to the public npm\n registry. We will detect the new version and display it on the\n Construct Hub.\n </p>\n </FAQItem>\n <FAQItem question=\"How does the Construct Hub relates to the Construct Catalog?\">\n <p>\n The Construct Catalog was built by the CDK community in\n collaboration with the AWS CDK team. The Construct Hub is the\n official version for the Construct Catalog.{\" \"}\n <FAQLink href=\"https://awscdk.io\">https://awscdk.io</FAQLink> now\n redirects to the Construct Hub.\n </p>\n </FAQItem>\n <FAQItem question=\"How can I participate in the Construct Hub community?\">\n <p>\n The Construct Hub is built as a public construct. Please join the{\" \"}\n <FAQLink href=\"https://github.com/cdklabs/construct-hub-webapp\">\n Construct Hub GitHub community\n </FAQLink>\n . You are also welcome to join the #construct-hub-dev channel in\n the <FAQLink href=\"https://cdk.dev/\">CDK community</FAQLink> Slack\n workspace.\n </p>\n </FAQItem>\n <FAQItem question=\"Is there a community slack channel for the CDK community?\">\n <p>\n Please join the CDK Slack channel (\n <FAQLink href=\"https://cdk.dev/\">https://cdk.dev/</FAQLink>). This\n Slack channel is managed by the CDK community for the CDK\n community.\n </p>\n </FAQItem>\n </FAQSection>\n <FAQSection heading=\"Getting Started\">\n <FAQItem question=\"Do I need a user for the Construct Hub?\">\n <p>No. The Construct Hub doesn’t require any signup.</p>\n </FAQItem>\n <FAQItem question=\"How do I get started?\">\n <p>\n Use our home page to discover publicly available packages. You may\n run a search to find packages you’re interested in and mention\n your preferred programming language. For each package you will\n find helpful information such as README and API reference for the\n supported programming languages. You will also find links and\n keywords that the publisher provided with the package and\n installation instructions.\n </p>\n </FAQItem>\n </FAQSection>\n </Accordion>\n </Box>\n </Page>\n);\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["constants/pageInfo.ts","components/Page/Page.tsx","../../../src/use-accordion.ts","../../../src/accordion.tsx","views/FAQ/FAQItem.tsx","views/FAQ/FAQLink.tsx","views/FAQ/FAQSection.tsx","views/FAQ/FAQ.tsx"],"names":["pageInfo","home","event","name","faq","packageProfile","search","siteTerms","notFound","page","pageType","Page","children","meta","pageName","trackPageView","usePageView","useEffect","suffix","title","description","formattedTitle","Helmet","process","content","charSet","property","createDescendantContext","useAccordion","props","index","allowToggle","condition","isUndefined","isArray","warn","message","allowMultipleWarning","allowMultipleAndAllowToggleWarning","descendants","useAccordionDescendants","useState","useUnmountEffect","setFocusedIndex","useControllableState","value","defaultValue","defaultIndex","onChange","setIndex","htmlProps","getAccordionItemProps","idx","isOpen","allowMultiple","nextState","addItem","removeItem","focusedIndex","createContext","errorMessage","useAccordionItem","id","useAccordionContext","buttonRef","useRef","useIds","focusableNotDisabledWarning","useAccordionDescendant","disabled","isDisabled","isFocusable","warnIfOpenAndDisabled","onClick","useCallback","onKeyDown","action","ArrowDown","next","focus","ArrowUp","prev","Home","first","End","last","normalizeEventKey","onFocus","getButtonProps","ref","type","mergeRefs","register","callAllHandlers","getPanelProps","role","hidden","buttonId","onOpen","onClose","Accordion","forwardRef","reduceMotion","styles","useMultiStyleConfig","omitThemingProps","ctx","context","className","cx","AccordionItem","containerStyles","useStyles","overflowAnchor","React","__css","runIfFn","isExpanded","AccordionButton","buttonProps","useAccordionItemContext","buttonStyles","display","alignItems","width","outline","AccordionPanel","panelProps","_className","child","in","AccordionIcon","iconStyles","opacity","transform","transition","undefined","transformOrigin","viewBox","fill","d","FAQItem","question","flex","py","textAlign","as","ml","size","px","color","fontSize","sx","p","marginTop","marginBottom","FAQLink","href","ExternalLink","hasWarning","textDecoration","FAQSection","heading","w","FAQ","bg","h","mx"],"mappings":"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","file":"static/js/11.6f7f0c4b.chunk.js","sourcesContent":["export const pageInfo = {\n home: {\n event: {\n name: \"Home Load\",\n },\n },\n faq: {\n event: {\n name: \"Frequently Asked Questions Load\",\n },\n },\n packageProfile: {\n event: {\n name: \"Package Profile Load\",\n },\n },\n search: {\n event: {\n name: \"Search Load\",\n },\n },\n siteTerms: {\n event: {\n name: \"Site Terms Load\",\n },\n },\n notFound: {\n page: {\n pageType: \"errorPage\",\n },\n event: {\n name: \"404 Page Load\",\n },\n },\n} as const;\n","import { FunctionComponent, useEffect } from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { pageInfo } from \"../../constants/pageInfo\";\nimport { usePageView } from \"../../contexts/Analytics\";\n\nexport interface PageProps {\n pageName: keyof typeof pageInfo;\n meta: {\n suffix?: boolean;\n title: string;\n description: string;\n };\n}\n\nexport const Page: FunctionComponent<PageProps> = ({\n children,\n meta,\n pageName,\n}) => {\n const trackPageView = usePageView(pageInfo[pageName]);\n\n useEffect(() => {\n trackPageView();\n }, [trackPageView]);\n\n const { suffix = true, title, description } = meta;\n const formattedTitle = suffix ? `${title} - Construct Hub` : title;\n\n return (\n <>\n <Helmet>\n {process.env.NODE_ENV === \"development\" && (\n <meta\n content=\"default-src 'self' 'unsafe-inline' https://*.awsstatic.com https://amazonwebservices.d2.sc.omtrdc.net; connect-src 'self' https://*.shortbread.aws.dev ws://localhost:3000 https://*.awsstatic.com https://amazonwebservices.d2.sc.omtrdc.net; frame-src 'none'; img-src 'self' https://* http://*.omtrdc.net; object-src 'none'; style-src 'self' 'unsafe-inline';\"\n httpEquiv=\"Content-Security-Policy\"\n />\n )}\n\n <meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n <meta charSet=\"utf-8\" />\n\n <title>{formattedTitle}</title>\n <meta content={formattedTitle} property=\"og:title\" />\n <meta content={formattedTitle} name=\"twitter:title\" />\n <meta content=\"summary\" name=\"twitter:card\" />\n\n <meta content={description} name=\"description\" />\n <meta content={description} property=\"og:description\" />\n <meta content={description} name=\"twitter:description\" />\n </Helmet>\n {children}\n </>\n );\n};\n","import { createDescendantContext } from \"@chakra-ui/descendant\"\nimport {\n useControllableState,\n useIds,\n useUnmountEffect,\n} from \"@chakra-ui/hooks\"\nimport {\n createContext,\n EventKeyMap,\n mergeRefs,\n PropGetter,\n} from \"@chakra-ui/react-utils\"\nimport {\n addItem,\n callAllHandlers,\n focus,\n isArray,\n isUndefined,\n normalizeEventKey,\n removeItem,\n warn,\n} from \"@chakra-ui/utils\"\nimport React, { useCallback, useRef, useState } from \"react\"\n\n/* -------------------------------------------------------------------------------------------------\n * Create context to track descendants and their indices\n * -----------------------------------------------------------------------------------------------*/\n\nexport const [\n AccordionDescendantsProvider,\n useAccordionDescendantsContext,\n useAccordionDescendants,\n useAccordionDescendant,\n] = createDescendantContext<HTMLButtonElement>()\n\n/* -------------------------------------------------------------------------------------------------\n * useAccordion - The root react hook that manages all accordion items\n * -----------------------------------------------------------------------------------------------*/\n\nexport type ExpandedIndex = number | number[]\n\nexport interface UseAccordionProps {\n /**\n * If `true`, multiple accordion items can be expanded at once.\n */\n allowMultiple?: boolean\n /**\n * If `true`, any expanded accordion item can be collapsed again.\n */\n allowToggle?: boolean\n /**\n * The index(es) of the expanded accordion item\n */\n index?: ExpandedIndex\n /**\n * The initial index(es) of the expanded accordion item\n */\n defaultIndex?: ExpandedIndex\n /**\n * The callback invoked when accordion items are expanded or collapsed.\n */\n onChange?(expandedIndex: ExpandedIndex): void\n}\n\n/**\n * useAccordion hook provides all the state and focus management logic\n * for accordion items.\n */\nexport function useAccordion(props: UseAccordionProps) {\n const {\n onChange,\n defaultIndex,\n index: indexProp,\n allowMultiple,\n allowToggle,\n ...htmlProps\n } = props\n\n // validate the props and `warn` if used incorrectly\n allowMultipleWarning(props)\n allowMultipleAndAllowToggleWarning(props)\n\n /**\n * Think of this as the register to each accordion item.\n * We used to manage focus between accordion item buttons.\n *\n * Every accordion item, registers their button refs in this context\n */\n const descendants = useAccordionDescendants()\n\n /**\n * This state is used to track the index focused accordion\n * button when click on the button, tab on the button, or\n * use the down/up arrow to navigate.\n */\n const [focusedIndex, setFocusedIndex] = useState(-1)\n\n /**\n * Reset focused index when accordion unmounts\n * or descendants change\n */\n useUnmountEffect(() => {\n setFocusedIndex(-1)\n })\n\n /**\n * Hook that manages the controlled and un-controlled state\n * for the accordion.\n */\n const [index, setIndex] = useControllableState({\n value: indexProp,\n defaultValue() {\n if (allowMultiple) return defaultIndex ?? []\n return defaultIndex ?? -1\n },\n onChange,\n })\n\n /**\n * Gets the `isOpen` and `onChange` props for a child accordion item based on\n * the child's index.\n *\n * @param idx {number} The index of the child accordion item\n */\n const getAccordionItemProps = (idx: number | null) => {\n let isOpen = false\n if (idx !== null) {\n isOpen = isArray(index) ? index.includes(idx) : index === idx\n }\n\n const onChange = (isOpen: boolean) => {\n if (idx === null) return\n\n if (allowMultiple && isArray(index)) {\n const nextState = isOpen ? addItem(index, idx) : removeItem(index, idx)\n setIndex(nextState)\n } else if (isOpen) {\n setIndex(idx)\n } else if (allowToggle) {\n setIndex(-1)\n }\n }\n\n return { isOpen, onChange }\n }\n\n return {\n index,\n setIndex,\n htmlProps,\n getAccordionItemProps,\n focusedIndex,\n setFocusedIndex,\n descendants,\n }\n}\n\nexport type UseAccordionReturn = ReturnType<typeof useAccordion>\n\n/* -------------------------------------------------------------------------------------------------\n * Create context for the root accordion logic\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AccordionContext\n extends Omit<UseAccordionReturn, \"htmlProps\" | \"descendants\"> {\n reduceMotion: boolean\n}\n\nexport const [\n AccordionProvider,\n useAccordionContext,\n] = createContext<AccordionContext>({\n name: \"AccordionContext\",\n errorMessage:\n \"useAccordionContext: `context` is undefined. Seems you forgot to wrap the accordion components in `<Accordion />`\",\n})\n\n/* -------------------------------------------------------------------------------------------------\n * Hook for a single accordion item\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface UseAccordionItemProps {\n /**\n * If `true`, the accordion item will be disabled.\n */\n isDisabled?: boolean\n /**\n * If `true`, the accordion item will be focusable.\n */\n isFocusable?: boolean\n /**\n * A unique id for the accordion item.\n */\n id?: string\n}\n\n/**\n * useAccordionItem\n *\n * React hook that provides the open/close functionality\n * for an accordion item and its children\n */\nexport function useAccordionItem(props: UseAccordionItemProps) {\n const { isDisabled, isFocusable, id, ...htmlProps } = props\n const { getAccordionItemProps, setFocusedIndex } = useAccordionContext()\n\n const buttonRef = useRef<HTMLElement>(null)\n\n /**\n * Generate unique ids for all accordion item components (button and panel)\n */\n const [buttonId, panelId] = useIds(id, `accordion-button`, `accordion-panel`)\n\n focusableNotDisabledWarning(props)\n\n /**\n * Think of this as a way to register this accordion item\n * with its parent `useAccordion`\n */\n const { register, index, descendants } = useAccordionDescendant({\n disabled: isDisabled && !isFocusable,\n })\n\n const { isOpen, onChange } = getAccordionItemProps(\n index === -1 ? null : index,\n )\n\n warnIfOpenAndDisabled({ isOpen, isDisabled })\n\n const onOpen = () => {\n onChange?.(true)\n }\n\n const onClose = () => {\n onChange?.(false)\n }\n\n /**\n * Toggle the visibility of the accordion item\n */\n const onClick = useCallback(() => {\n onChange?.(!isOpen)\n setFocusedIndex(index)\n }, [index, setFocusedIndex, isOpen, onChange])\n\n /**\n * Manage keyboard navigation between accordion items.\n */\n const onKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n const eventKey = normalizeEventKey(event)\n\n const keyMap: EventKeyMap = {\n ArrowDown: () => {\n const next = descendants.nextEnabled(index)\n if (next) focus(next.node)\n },\n ArrowUp: () => {\n const prev = descendants.prevEnabled(index)\n if (prev) focus(prev.node)\n },\n Home: () => {\n const first = descendants.firstEnabled()\n if (first) focus(first.node)\n },\n End: () => {\n const last = descendants.lastEnabled()\n if (last) focus(last.node)\n },\n }\n\n const action = keyMap[eventKey]\n\n if (action) {\n event.preventDefault()\n action(event)\n }\n },\n [descendants, index],\n )\n\n /**\n * Since each accordion item's button still remains tabbable, let's\n * update the focusedIndex when it receives focus\n */\n const onFocus = useCallback(() => {\n setFocusedIndex(index)\n }, [setFocusedIndex, index])\n\n const getButtonProps: PropGetter<HTMLButtonElement> = useCallback(\n (props = {}, ref = null) => ({\n ...props,\n type: \"button\",\n ref: mergeRefs(register, buttonRef, ref),\n id: buttonId,\n disabled: !!isDisabled,\n \"aria-expanded\": !!isOpen,\n \"aria-controls\": panelId,\n onClick: callAllHandlers(props.onClick, onClick),\n onFocus: callAllHandlers(props.onFocus, onFocus),\n onKeyDown: callAllHandlers(props.onKeyDown, onKeyDown),\n }),\n [\n buttonId,\n isDisabled,\n isOpen,\n onClick,\n onFocus,\n onKeyDown,\n panelId,\n register,\n ],\n )\n\n const getPanelProps: PropGetter = useCallback(\n (props = {}, ref = null) => ({\n ...props,\n ref,\n role: \"region\",\n id: panelId,\n \"aria-labelledby\": buttonId,\n hidden: !isOpen,\n }),\n [buttonId, isOpen, panelId],\n )\n\n return {\n isOpen,\n isDisabled,\n isFocusable,\n onOpen,\n onClose,\n getButtonProps,\n getPanelProps,\n htmlProps,\n }\n}\n\nexport type UseAccordionItemReturn = ReturnType<typeof useAccordionItem>\n\n/* -------------------------------------------------------------------------------------------------\n * Validate accordion and accordion item props, and emit warnings.\n * -----------------------------------------------------------------------------------------------*/\n\nfunction allowMultipleWarning(props: UseAccordionProps) {\n const index = props.index || props.defaultIndex\n const condition =\n !isUndefined(index) && !isArray(index) && props.allowMultiple\n\n warn({\n condition: !!condition,\n message: `If 'allowMultiple' is passed, then 'index' or 'defaultIndex' must be an array. You passed: ${typeof index},`,\n })\n}\n\nfunction allowMultipleAndAllowToggleWarning(props: UseAccordionProps) {\n warn({\n condition: !!(props.allowMultiple && props.allowToggle),\n message: `If 'allowMultiple' is passed, 'allowToggle' will be ignored. Either remove 'allowToggle' or 'allowMultiple' depending on whether you want multiple accordions visible or not`,\n })\n}\n\nfunction focusableNotDisabledWarning(props: UseAccordionItemProps) {\n warn({\n condition: !!(props.isFocusable && !props.isDisabled),\n message: `Using only 'isFocusable', this prop is reserved for situations where you pass 'isDisabled' but you still want the element to receive focus (A11y). Either remove it or pass 'isDisabled' as well.\n `,\n })\n}\n\nfunction warnIfOpenAndDisabled(props: {\n isOpen: boolean\n isDisabled?: boolean\n}) {\n warn({\n condition: props.isOpen && !!props.isDisabled,\n message: \"Cannot open a disabled accordion item\",\n })\n}\n","import { Icon, IconProps } from \"@chakra-ui/icon\"\nimport {\n chakra,\n forwardRef,\n omitThemingProps,\n StylesProvider,\n SystemStyleObject,\n ThemingProps,\n useMultiStyleConfig,\n useStyles,\n HTMLChakraProps,\n} from \"@chakra-ui/system\"\nimport { Collapse } from \"@chakra-ui/transition\"\nimport { cx, Omit, runIfFn, __DEV__ } from \"@chakra-ui/utils\"\nimport { createContext, MaybeRenderProp } from \"@chakra-ui/react-utils\"\nimport * as React from \"react\"\nimport {\n AccordionProvider,\n useAccordion,\n useAccordionContext,\n useAccordionItem,\n UseAccordionItemProps,\n UseAccordionItemReturn,\n UseAccordionProps,\n AccordionDescendantsProvider,\n} from \"./use-accordion\"\n\n/* -------------------------------------------------------------------------------------------------\n * Accordion - The wrapper that provides context for all accordion items\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AccordionProps\n extends UseAccordionProps,\n Omit<HTMLChakraProps<\"div\">, keyof UseAccordionProps>,\n ThemingProps<\"Accordion\"> {\n /**\n * If `true`, height animation and transitions will be disabled.\n */\n reduceMotion?: boolean\n}\n\n/**\n * The wrapper that provides context and focus management\n * for all accordion items.\n *\n * It wraps all accordion items in a `div` for better grouping.\n * @see Docs https://chakra-ui.com/accordion\n */\nexport const Accordion = forwardRef<AccordionProps, \"div\">(\n ({ children, reduceMotion, ...props }, ref) => {\n const styles = useMultiStyleConfig(\"Accordion\", props)\n const ownProps = omitThemingProps(props)\n\n const { htmlProps, descendants, ...context } = useAccordion(ownProps)\n\n const ctx = React.useMemo(\n () => ({ ...context, reduceMotion: !!reduceMotion }),\n [context, reduceMotion],\n )\n\n return (\n <AccordionDescendantsProvider value={descendants}>\n <AccordionProvider value={ctx}>\n <StylesProvider value={styles}>\n <chakra.div\n ref={ref}\n {...htmlProps}\n className={cx(\"chakra-accordion\", props.className)}\n >\n {children}\n </chakra.div>\n </StylesProvider>\n </AccordionProvider>\n </AccordionDescendantsProvider>\n )\n },\n)\n\nif (__DEV__) {\n Accordion.displayName = \"Accordion\"\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Accordion Item\n * -----------------------------------------------------------------------------------------------*/\n\ntype AccordionItemContext = Omit<UseAccordionItemReturn, \"htmlProps\">\n\nconst [\n AccordionItemProvider,\n useAccordionItemContext,\n] = createContext<AccordionItemContext>({\n name: \"AccordionItemContext\",\n errorMessage:\n \"useAccordionItemContext: `context` is undefined. Seems you forgot to wrap the accordion item parts in `<AccordionItem />` \",\n})\n\nexport interface AccordionItemProps\n extends Omit<HTMLChakraProps<\"div\">, keyof UseAccordionItemProps>,\n UseAccordionItemProps {\n children?: MaybeRenderProp<{\n isExpanded: boolean\n isDisabled: boolean\n }>\n}\n\n/**\n * AccordionItem is a single accordion that provides the open-close\n * behavior when the accordion button is clicked.\n *\n * It also provides context for the accordion button and panel.\n */\nexport const AccordionItem = forwardRef<AccordionItemProps, \"div\">(\n (props, ref) => {\n const { children, className } = props\n const { htmlProps, ...context } = useAccordionItem(props)\n\n const styles = useStyles()\n const containerStyles: SystemStyleObject = {\n ...styles.container,\n overflowAnchor: \"none\",\n }\n\n const ctx = React.useMemo(() => context, [context])\n\n return (\n <AccordionItemProvider value={ctx}>\n <chakra.div\n ref={ref}\n {...htmlProps}\n className={cx(\"chakra-accordion__item\", className)}\n __css={containerStyles}\n >\n {runIfFn(children, {\n isExpanded: !!context.isOpen,\n isDisabled: !!context.isDisabled,\n })}\n </chakra.div>\n </AccordionItemProvider>\n )\n },\n)\n\nif (__DEV__) {\n AccordionItem.displayName = \"AccordionItem\"\n}\n\n/**\n * React hook to get the state and actions of an accordion item\n */\nexport function useAccordionItemState() {\n const { isOpen, isDisabled, onClose, onOpen } = useAccordionItemContext()\n return { isOpen, onClose, isDisabled, onOpen }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Accordion Item => Button\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AccordionButtonProps extends HTMLChakraProps<\"button\"> {}\n\n/**\n * AccordionButton is used expands and collapses an accordion item.\n * It must be a child of `AccordionItem`.\n *\n * Note 🚨: Each accordion button must be wrapped in an heading tag,\n * that is appropriate for the information architecture of the page.\n */\nexport const AccordionButton = forwardRef<AccordionButtonProps, \"button\">(\n (props, ref) => {\n const { getButtonProps } = useAccordionItemContext()\n const buttonProps = getButtonProps(props, ref)\n\n const styles = useStyles()\n const buttonStyles: SystemStyleObject = {\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n outline: 0,\n ...styles.button,\n }\n\n return (\n <chakra.button\n {...buttonProps}\n className={cx(\"chakra-accordion__button\", props.className)}\n __css={buttonStyles}\n />\n )\n },\n)\n\nif (__DEV__) {\n AccordionButton.displayName = \"AccordionButton\"\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Accordion Item => Panel\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AccordionPanelProps extends HTMLChakraProps<\"div\"> {}\n\n/**\n * Accordion panel that holds the content for each accordion.\n * It shows and hides based on the state login from the `AccordionItem`.\n *\n * It uses the `Collapse` component to animate its height.\n */\nexport const AccordionPanel = forwardRef<AccordionPanelProps, \"div\">(\n (props, ref) => {\n const { reduceMotion } = useAccordionContext()\n const { getPanelProps, isOpen } = useAccordionItemContext()\n\n // remove `hidden` prop, 'coz we're using height animation\n const panelProps = getPanelProps(props, ref)\n\n const _className = cx(\"chakra-accordion__panel\", props.className)\n const styles = useStyles()\n\n if (!reduceMotion) {\n delete panelProps.hidden\n }\n\n const child = (\n <chakra.div {...panelProps} __css={styles.panel} className={_className} />\n )\n\n if (!reduceMotion) {\n return <Collapse in={isOpen}>{child}</Collapse>\n }\n\n return child\n },\n)\n\nif (__DEV__) {\n AccordionPanel.displayName = \"AccordionPanel\"\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Accordion Item => Icon\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * AccordionIcon that gives a visual cue of the open/close state of the accordion item.\n * It rotates `180deg` based on the open/close state.\n */\nexport const AccordionIcon: React.FC<IconProps> = (props) => {\n const { isOpen, isDisabled } = useAccordionItemContext()\n const { reduceMotion } = useAccordionContext()\n\n const _className = cx(\"chakra-accordion__icon\", props.className)\n const styles = useStyles()\n\n const iconStyles: SystemStyleObject = {\n opacity: isDisabled ? 0.4 : 1,\n transform: isOpen ? \"rotate(-180deg)\" : undefined,\n transition: reduceMotion ? undefined : \"transform 0.2s\",\n transformOrigin: \"center\",\n ...styles.icon,\n }\n\n return (\n <Icon\n viewBox=\"0 0 24 24\"\n aria-hidden\n className={_className}\n __css={iconStyles}\n {...props}\n >\n <path\n fill=\"currentColor\"\n d=\"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z\"\n />\n </Icon>\n )\n}\n\nif (__DEV__) {\n AccordionIcon.displayName = \"AccordionIcon\"\n}\n","import {\n Heading,\n Text,\n AccordionIcon,\n AccordionButton,\n AccordionItem,\n AccordionPanel,\n Box,\n} from \"@chakra-ui/react\";\nimport type { FunctionComponent, ReactChild } from \"react\";\n\nexport interface FAQItemProps {\n question: ReactChild;\n}\n\nexport const FAQItem: FunctionComponent<FAQItemProps> = ({\n question,\n children,\n}) => (\n <AccordionItem>\n <AccordionButton>\n <Box flex=\"1\" py={2} textAlign=\"left\">\n <Heading as=\"h3\" ml={8} size=\"sm\">\n {question}\n </Heading>\n </Box>\n <AccordionIcon />\n </AccordionButton>\n <AccordionPanel px={12} py={4}>\n <Text\n color=\"gray.800\"\n fontSize=\"md\"\n sx={{ p: { marginTop: \"0\", marginBottom: \"4\" } }}\n >\n {children}\n </Text>\n </AccordionPanel>\n </AccordionItem>\n);\n","import { FunctionComponent } from \"react\";\nimport { ExternalLink } from \"../../components/ExternalLink\";\n\nexport interface FAQLinkProps {\n href: string;\n}\n\nexport const FAQLink: FunctionComponent<FAQLinkProps> = ({\n href,\n children,\n}) => (\n <ExternalLink\n color=\"inherit\"\n hasWarning={false}\n href={href}\n textDecoration=\"underline\"\n >\n {children}\n </ExternalLink>\n);\n","import {\n AccordionIcon,\n AccordionButton,\n AccordionItem,\n AccordionPanel,\n Heading,\n Box,\n Accordion,\n} from \"@chakra-ui/react\";\n\nimport type { FunctionComponent } from \"react\";\n\nexport interface FAQSectionProps {\n heading: string;\n}\n\nexport const FAQSection: FunctionComponent<FAQSectionProps> = ({\n heading,\n children,\n}) => (\n <AccordionItem>\n <AccordionButton>\n <Box flex=\"1\" textAlign=\"left\">\n <Heading as=\"h2\" ml={4} size=\"lg\">\n {heading}\n </Heading>\n </Box>\n <AccordionIcon />\n </AccordionButton>\n <AccordionPanel p={0}>\n <Accordion allowMultiple w=\"100%\">\n {children}\n </Accordion>\n </AccordionPanel>\n </AccordionItem>\n);\n","import { Box, Heading, Accordion } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Page } from \"../../components/Page\";\nimport { FAQItem } from \"./FAQItem\";\nimport { FAQLink } from \"./FAQLink\";\nimport { FAQSection } from \"./FAQSection\";\n\nexport const FAQ: FunctionComponent = () => (\n <Page\n meta={{\n title: \"FAQ\",\n description: \"Frequently Asked Questions\",\n }}\n pageName=\"faq\"\n >\n <Box bg=\"white\" color=\"blue.800\" h=\"100%\" w=\"100%\">\n <Box bg=\"gray.50\" py={20} width=\"100%\">\n <Heading as=\"h1\" mx=\"auto\" textAlign=\"center\">\n Frequently Asked Questions\n </Heading>\n </Box>\n <Accordion allowMultiple defaultIndex={[0, 1]}>\n <FAQSection heading=\"General\">\n <FAQItem question=\"What is Construct Hub?\">\n <p>\n It is a central destination to discover and share cloud\n application design patterns and reference architectures defined\n for the AWS CDK, CDK for Kubernetes (CDK8s), CDK for Terraform\n (CDKtf) and any other construct-based tool.\n </p>\n </FAQItem>\n <FAQItem question=\"Why should I use Construct Hub?\">\n <p>\n Construct Hub is built to serve the community that uses the\n constructs programming model (CPM) and to allow them find publicly\n available constructs they can reuse. Before the Construct Hub,\n developers did not have an easy way to discover construct\n libraries created by the community since they were published\n across various package managers and without a central index.\n </p>\n <p>\n The Construct Hub is a central, trusted venue CDK developers can\n use to discover published constructs to help them build their\n applications. In the Dev Preview Construct Hub you can discover\n constructs in TypeScript and Python and read their documentation\n and improved API reference in the programming language that the\n package supports.\n </p>\n </FAQItem>\n <FAQItem question=\"How can I add my construct to the Construct Hub?\">\n <p>\n In order to add your construct to the Construct Hub, you will need\n to publish it to the{\" \"}\n <FAQLink href=\"https://www.npmjs.com/\">npmjs.com</FAQLink>{\" \"}\n registry, use a permissive license (Apache, BSD, MIT), and\n annotate it with one of the supported keywords (aws-cdk, cdk8s or\n cdktf).\n </p>\n <p>\n Additionally, since one of the main goals of the Construct Hub is\n to enable an ecosystem of constructs that can be consumed by all\n CDK languages, your library <strong>must</strong> be compiled with{\" \"}\n <FAQLink href=\"https://aws.github.io/jsii/\">JSII</FAQLink>, which\n is a TypeScript-based, which is a TypeScript-based programming\n language for creating multi-language libraries. The Construct Hub\n leverages the type information produced by the JSII compiler in\n order to render the rich multi-language API reference displayed at\n the Construct Hub.\n </p>\n <p>\n The Construct Hub monitors all updates to the npm Registry and\n will list any packages that meet the above requirements within\n 5-10 minutes. If your package does not appear in the Construct\n Hub, please file an issue on our GitHub repository.\n </p>\n <p>\n There’s some great community content about publishing construct\n libraries. Check out{\" \"}\n <FAQLink href=\"https://dev.to/aws-builders/a-beginner-s-guide-to-create-aws-cdk-construct-library-with-projen-5eh4\">\n &quot;A Beginner&apos;s Guide to Create AWS CDK Construct\n Library with projen&quot;\n </FAQLink>{\" \"}\n by <FAQLink href=\"https://hayao-k.dev/\">hayao-k</FAQLink>.\n </p>\n <p>\n If you already have a library written in TypeScript and you are\n looking for information on how to migrate to JSII, see the{\" \"}\n <FAQLink href=\"https://aws.github.io/jsii/user-guides/#library-author-guide\">\n JSII library author guide\n </FAQLink>\n .\n </p>\n </FAQItem>\n <FAQItem question=\"What is a construct?\">\n <p>\n The Constructs Programming Model (CPM) introduces the notion of{\" \"}\n <strong>constructs</strong>, which represent cloud building blocks\n that can be used to assemble complete applications of any\n complexity. AWS, enterprises, start-ups, and individual developers\n use CDK constructs to share proven architecture patterns as\n reusable code libraries, so that everyone can benefit from the\n collective wisdom of the community.\n </p>\n </FAQItem>\n <FAQItem question=\"Who owns the constructs in the Construct Hub?\">\n <p>\n The constructs are owned by the publishers of the packages.\n Constructs are user generated content that are governed by their\n own license terms which is displayed in the search results and can\n be accessed directly through the hyperlinked package page.\n </p>\n </FAQItem>\n <FAQItem question=\"Is the content served in Construct Hub meant to be consumed programmatically?\">\n <p>\n No. The content displayed in the site is user generated, with some\n display formatting. We do not advise that you consume constructs\n from the search results programmatically. Please note that\n Construct Hub is a search engine intended to surface third party\n content from a public endpoint and we provide these results for\n your convenience AS-IS in accordance with our{\" \"}\n <FAQLink href=\"https://constructs.dev/terms\">Site Terms</FAQLink>.\n </p>\n </FAQItem>\n <FAQItem question=\"Which CDK types are available on the Construct Hub?\">\n <p>\n AWS CDK, CDK for Kubernetes (CDK8s) and CDK for Terraform (CDKtf).\n </p>\n </FAQItem>\n <FAQItem question=\"What is AWS CDK?\">\n <p>\n AWS CDK is an open-source software development framework for\n defining applications on AWS and reusable abstractions using\n familiar programming languages and rich object-oriented APIs. AWS\n CDK apps synthesize intostandard CloudFormation templates which\n can be deployed to create infrastructure on AWS. For more\n information, click{\" \"}\n <FAQLink href=\"https://docs.aws.amazon.com/cdk/latest/guide/home.html\">\n here\n </FAQLink>\n .\n </p>\n </FAQItem>\n <FAQItem question=\"What is CDK8s?\">\n <p>\n CDK8s is an open-source software development framework for\n defining Kubernetes applications and reusable abstractions using\n familiar programming languages and rich object-oriented APIs.{\" \"}\n <strong>cdk8s</strong> apps synthesize into standard Kubernetes\n manifests which can be applied to any Kubernetes cluster. For more\n information, click{\" \"}\n <FAQLink href=\"https://cdk8s.io/\">here</FAQLink>.\n </p>\n </FAQItem>\n <FAQItem question=\"What is CDKtf?\">\n <p>\n The community preview of the{\" \"}\n <FAQLink href=\"https://aws.amazon.com/cdk/\">\n Cloud Development Kit\n </FAQLink>\n for Terraform allows you to define infrastructure using a familiar\n programming language such as TypeScript, Python, or Go, while\n leveraging the hundreds of providers and thousands of module\n definitions provided by Terraform and the Terraform ecosystem. For\n more information, click{\" \"}\n <FAQLink href=\"https://learn.hashicorp.com/tutorials/terraform/cdktf\">\n here\n </FAQLink>\n .\n </p>\n </FAQItem>\n <FAQItem question=\"What programming languages are supported in Dev Preview?\">\n <p>The Construct Hub Dev Preview supports Python and TypeScript.</p>\n </FAQItem>\n <FAQItem question=\"Is the support for .NET, Java and Go in the roadmap?\">\n <p>Yes.</p>\n </FAQItem>\n <FAQItem question=\"Can I view the source code of a construct?\">\n <p>\n For each package you can click the repository link that the\n publisher provided with the package. Theoretically this link\n should redirect your to the package’s repository. However, we\n noticed that sometimes the code in the repository can be more or\n less updated than the package’s code. Please take that into\n account.\n </p>\n </FAQItem>\n <FAQItem question=\"How can I install a package?\">\n <p>\n Press “Install” in the package page and you’ll see the\n installation instructions.\n </p>\n </FAQItem>\n <FAQItem question=\"How can I report a package?\">\n <p>\n You can report a package by clicking &quot;Report a package&quot;\n from the package page. For claims of copyright infringement, read\n here:{\" \"}\n <FAQLink href=\"https://aws.amazon.com/terms/#notice-and-procedure-for-making-claims-of-copyright-infringement\">\n https://aws.amazon.com/terms/#notice-and-procedure-for-making-claims-of-copyright-infringement\n </FAQLink>\n .\n </p>\n </FAQItem>\n <FAQItem question=\"How can I open a bug or send a PR for a package?\">\n <p>\n The package is owned by the publisher. To report a bug or send a\n PR, you should go to the repository link the publisher provided\n and open a ticket there\n </p>\n </FAQItem>\n <FAQItem question=\"Why isn’t my package displayed in the Construct Hub?\">\n <p>\n The Construct Hub displays only publicly available constructs that\n are JSII compatible and that were published on a public npm\n registry with an open source license. The package should be\n published on npm registry with the one of the following Keywords:\n aws-cdk, cdk8s or cdktf.\n </p>\n </FAQItem>\n <FAQItem question=\"Can I update my package after it has been displayed?\">\n <p>\n Yes. You should publish a new valid version to the public npm\n registry. We will detect the new version and display it on the\n Construct Hub.\n </p>\n </FAQItem>\n <FAQItem question=\"How does the Construct Hub relates to the Construct Catalog?\">\n <p>\n The Construct Catalog was built by the CDK community in\n collaboration with the AWS CDK team. The Construct Hub is the\n official version for the Construct Catalog.{\" \"}\n <FAQLink href=\"https://awscdk.io\">https://awscdk.io</FAQLink> now\n redirects to the Construct Hub.\n </p>\n </FAQItem>\n <FAQItem question=\"How can I participate in the Construct Hub community?\">\n <p>\n The Construct Hub is built as a public construct. Please join the{\" \"}\n <FAQLink href=\"https://github.com/cdklabs/construct-hub-webapp\">\n Construct Hub GitHub community\n </FAQLink>\n . You are also welcome to join the #construct-hub-dev channel in\n the <FAQLink href=\"https://cdk.dev/\">CDK community</FAQLink> Slack\n workspace.\n </p>\n </FAQItem>\n <FAQItem question=\"Is there a community slack channel for the CDK community?\">\n <p>\n Please join the CDK Slack channel (\n <FAQLink href=\"https://cdk.dev/\">https://cdk.dev/</FAQLink>). This\n Slack channel is managed by the CDK community for the CDK\n community.\n </p>\n </FAQItem>\n </FAQSection>\n <FAQSection heading=\"Getting Started\">\n <FAQItem question=\"Do I need a user for the Construct Hub?\">\n <p>No. The Construct Hub doesn’t require any signup.</p>\n </FAQItem>\n <FAQItem question=\"How do I get started?\">\n <p>\n Use our home page to discover publicly available packages. You may\n run a search to find packages you’re interested in and mention\n your preferred programming language. For each package you will\n find helpful information such as README and API reference for the\n supported programming languages. You will also find links and\n keywords that the publisher provided with the package and\n installation instructions.\n </p>\n </FAQItem>\n </FAQSection>\n </Accordion>\n </Box>\n </Page>\n);\n"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (this["webpackJsonpconstruct-hub-webapp"]=this["webpackJsonpconstruct-hub-webapp"]||[]).push([[12],{224:function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(0),c=a(233),r={home:{event:{name:"Home Load"}},faq:{event:{name:"Frequently Asked Questions Load"}},packageProfile:{event:{name:"Package Profile Load"}},search:{event:{name:"Search Load"}},siteTerms:{event:{name:"Site Terms Load"}},notFound:{page:{pageType:"errorPage"},event:{name:"404 Page Load"}}},s=a(109),i=a(1),o=function(e){var t=e.children,a=e.meta,o=e.pageName,u=Object(s.b)(r[o]);Object(n.useEffect)((function(){u()}),[u]);var j=a.suffix,l=void 0===j||j,d=a.title,b=a.description,m=l?"".concat(d," - Construct Hub"):d;return Object(i.jsxs)(i.Fragment,{children:[Object(i.jsxs)(c.a,{children:[!1,Object(i.jsx)("meta",{content:"width=device-width, initial-scale=1",name:"viewport"}),Object(i.jsx)("meta",{charSet:"utf-8"}),Object(i.jsx)("title",{children:m}),Object(i.jsx)("meta",{content:m,property:"og:title"}),Object(i.jsx)("meta",{content:m,name:"twitter:title"}),Object(i.jsx)("meta",{content:"summary",name:"twitter:card"}),Object(i.jsx)("meta",{content:b,name:"description"}),Object(i.jsx)("meta",{content:b,property:"og:description"}),Object(i.jsx)("meta",{content:b,name:"twitter:description"})]}),t]})}},588:function(e,t,a){"use strict";a.r(t),a.d(t,"SearchRedesign",(function(){return f})),a.d(t,"default",(function(){return f}));var n=a(141),c=a(209),r=a(224),s=a(4),i=a(221),o=a(205),u=a(0),j=a(111),l=a(54),d=a(213),b=a(189),m=a(1),p=function(e){var t=e.name,a=e.options,n=e.value,c=e.onValueChange;return Object(m.jsxs)(i.a,{spacing:2,children:[Object(m.jsx)(o.a,{as:"h4",size:"sm",children:t}),a.map((function(e){var t,a=e.display,r=e.value;return Object(m.jsx)(d.a,{isChecked:r===n,onChange:(t=r,function(){c(t===n?void 0:t)}),children:Object(m.jsx)(b.a,{color:"gray.600",fontSize:"sm",isTruncated:!0,children:a})},r)}))]})},h=Object.entries(l.b).filter((function(e){var t=Object(s.a)(e,1)[0];return l.e.has(t)})).map((function(e){var t=Object(s.a)(e,2),a=t[0];return{display:t[1],value:a}})),O=function(){var e=Object(u.useState)(),t=Object(s.a)(e,2),a=t[0],n=t[1],c=Object(u.useState)(),r=Object(s.a)(c,2),l=r[0],d=r[1],b=Object(u.useState)(),O=Object(s.a)(b,2),f=O[0],v=O[1];return Object(m.jsx)(j.a,{borderRadius:"none",boxShadow:"none",p:4,children:Object(m.jsxs)(i.a,{color:"blue.800",spacing:6,children:[Object(m.jsx)(o.a,{as:"h3",size:"sm",children:"Filters"}),Object(m.jsx)(p,{name:"CDK Type",onValueChange:n,options:[{display:"AWS CDK",value:"awscdk"},{display:"CDK for Terraform",value:"cdktf"},{display:"CDK for Kubernetes",value:"cdk8s"}],value:a}),Object(m.jsx)(p,{name:"Programming Language",onValueChange:d,options:h,value:l}),Object(m.jsx)(p,{name:"Author",onValueChange:v,options:[{display:"Community",value:"community"},{display:"AWS",value:"aws"}],value:f})]})})},f=function(){return Object(m.jsx)(r.a,{meta:{title:"Search - Construct Hub",description:"This is a placeholder"},pageName:"search",children:Object(m.jsxs)(n.a,{gap:4,p:6,templateColumns:"1fr 3fr",templateRows:"1fr",children:[Object(m.jsx)(O,{}),Object(m.jsx)(c.a,{border:"1px solid",borderColor:"gray.400",children:"\ud83d\udea7 This section is under construction \ud83d\udea7"})]})})}}}]);
2
+ //# sourceMappingURL=12.c21a676e.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["constants/pageInfo.ts","components/Page/Page.tsx","views/SearchRedesign/Filter.tsx","views/SearchRedesign/FilterPanel.tsx","views/SearchRedesign/SearchRedesign.tsx"],"names":["pageInfo","home","event","name","faq","packageProfile","search","siteTerms","notFound","page","pageType","Page","children","meta","pageName","trackPageView","usePageView","useEffect","suffix","title","description","formattedTitle","Helmet","process","content","charSet","property","Filter","options","checkedValue","value","onValueChange","spacing","as","size","map","v","display","isChecked","onChange","undefined","color","fontSize","isTruncated","languageOptions","Object","entries","LANGUAGE_NAME_MAP","filter","key","TEMP_SUPPORTED_LANGUAGES","has","FilterPanel","useState","cdkType","setCdkType","language","setLanguage","author","setAuthor","Card","borderRadius","boxShadow","p","SearchRedesign","gap","templateColumns","templateRows","border","borderColor"],"mappings":"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","file":"static/js/12.c21a676e.chunk.js","sourcesContent":["export const pageInfo = {\n home: {\n event: {\n name: \"Home Load\",\n },\n },\n faq: {\n event: {\n name: \"Frequently Asked Questions Load\",\n },\n },\n packageProfile: {\n event: {\n name: \"Package Profile Load\",\n },\n },\n search: {\n event: {\n name: \"Search Load\",\n },\n },\n siteTerms: {\n event: {\n name: \"Site Terms Load\",\n },\n },\n notFound: {\n page: {\n pageType: \"errorPage\",\n },\n event: {\n name: \"404 Page Load\",\n },\n },\n} as const;\n","import { FunctionComponent, useEffect } from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { pageInfo } from \"../../constants/pageInfo\";\nimport { usePageView } from \"../../contexts/Analytics\";\n\nexport interface PageProps {\n pageName: keyof typeof pageInfo;\n meta: {\n suffix?: boolean;\n title: string;\n description: string;\n };\n}\n\nexport const Page: FunctionComponent<PageProps> = ({\n children,\n meta,\n pageName,\n}) => {\n const trackPageView = usePageView(pageInfo[pageName]);\n\n useEffect(() => {\n trackPageView();\n }, [trackPageView]);\n\n const { suffix = true, title, description } = meta;\n const formattedTitle = suffix ? `${title} - Construct Hub` : title;\n\n return (\n <>\n <Helmet>\n {process.env.NODE_ENV === \"development\" && (\n <meta\n content=\"default-src 'self' 'unsafe-inline' https://*.awsstatic.com https://amazonwebservices.d2.sc.omtrdc.net; connect-src 'self' https://*.shortbread.aws.dev ws://localhost:3000 https://*.awsstatic.com https://amazonwebservices.d2.sc.omtrdc.net; frame-src 'none'; img-src 'self' https://* http://*.omtrdc.net; object-src 'none'; style-src 'self' 'unsafe-inline';\"\n httpEquiv=\"Content-Security-Policy\"\n />\n )}\n\n <meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n <meta charSet=\"utf-8\" />\n\n <title>{formattedTitle}</title>\n <meta content={formattedTitle} property=\"og:title\" />\n <meta content={formattedTitle} name=\"twitter:title\" />\n <meta content=\"summary\" name=\"twitter:card\" />\n\n <meta content={description} name=\"description\" />\n <meta content={description} property=\"og:description\" />\n <meta content={description} name=\"twitter:description\" />\n </Helmet>\n {children}\n </>\n );\n};\n","import { Checkbox, Heading, Stack, Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\n\nexport interface FilterProps {\n name: string;\n options: {\n display: string;\n value: string;\n }[];\n value: string | undefined;\n onValueChange: (value: string | undefined) => void;\n}\n\nexport const Filter: FunctionComponent<FilterProps> = ({\n name,\n options,\n value: checkedValue,\n onValueChange,\n}) => {\n const getOnChange = (v: string) => () => {\n onValueChange(v === checkedValue ? undefined : v);\n };\n\n return (\n <Stack spacing={2}>\n <Heading as=\"h4\" size=\"sm\">\n {name}\n </Heading>\n {options.map(({ display, value }) => (\n <Checkbox\n isChecked={value === checkedValue}\n key={value}\n onChange={getOnChange(value)}\n >\n <Text color=\"gray.600\" fontSize=\"sm\" isTruncated>\n {display}\n </Text>\n </Checkbox>\n ))}\n </Stack>\n );\n};\n","import { Heading, Stack } from \"@chakra-ui/react\";\nimport { FunctionComponent, useState } from \"react\";\nimport { Card } from \"../../components/Card\";\nimport {\n Language,\n LANGUAGE_NAME_MAP,\n TEMP_SUPPORTED_LANGUAGES,\n} from \"../../constants/languages\";\nimport { Filter } from \"./Filter\";\n\nconst languageOptions = Object.entries(LANGUAGE_NAME_MAP)\n .filter(([key]) => TEMP_SUPPORTED_LANGUAGES.has(key as Language))\n .map(([key, value]) => ({\n display: value,\n value: key,\n }));\n\nexport interface FilterPanelProps {}\n\nexport const FilterPanel: FunctionComponent<FilterPanelProps> = () => {\n const [cdkType, setCdkType] = useState<string | undefined>();\n const [language, setLanguage] = useState<string | undefined>();\n const [author, setAuthor] = useState<string | undefined>();\n\n return (\n <Card borderRadius=\"none\" boxShadow=\"none\" p={4}>\n <Stack color=\"blue.800\" spacing={6}>\n <Heading as=\"h3\" size=\"sm\">\n Filters\n </Heading>\n <Filter\n name=\"CDK Type\"\n onValueChange={setCdkType}\n options={[\n {\n display: \"AWS CDK\",\n value: \"awscdk\",\n },\n {\n display: \"CDK for Terraform\",\n value: \"cdktf\",\n },\n {\n display: \"CDK for Kubernetes\",\n value: \"cdk8s\",\n },\n ]}\n value={cdkType}\n />\n <Filter\n name=\"Programming Language\"\n onValueChange={setLanguage}\n options={languageOptions}\n value={language}\n />\n <Filter\n name=\"Author\"\n onValueChange={setAuthor}\n options={[\n {\n display: \"Community\",\n value: \"community\",\n },\n {\n display: \"AWS\",\n value: \"aws\",\n },\n ]}\n value={author}\n />\n </Stack>\n </Card>\n );\n};\n","import { Center, Grid } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Page } from \"../../components/Page\";\nimport { FilterPanel } from \"./FilterPanel\";\n\nexport const SearchRedesign: FunctionComponent = () => {\n return (\n <Page\n meta={{\n title: \"Search - Construct Hub\",\n description: \"This is a placeholder\",\n }}\n pageName=\"search\"\n >\n <Grid gap={4} p={6} templateColumns=\"1fr 3fr\" templateRows=\"1fr\">\n {/* Filter Panel */}\n <FilterPanel />\n {/* Results, Info, and Controls */}\n\n <Center border=\"1px solid\" borderColor=\"gray.400\">\n {/* eslint-disable-next-line jsx-a11y/accessible-emoji */}\n 🚧 This section is under construction 🚧\n </Center>\n </Grid>\n </Page>\n );\n};\n"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (this["webpackJsonpconstruct-hub-webapp"]=this["webpackJsonpconstruct-hub-webapp"]||[]).push([[11],{228:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var s=n(0),i=n(239),a={home:{event:{name:"Home Load"}},faq:{event:{name:"Frequently Asked Questions Load"}},packageProfile:{event:{name:"Package Profile Load"}},search:{event:{name:"Search Load"}},siteTerms:{event:{name:"Site Terms Load"}},notFound:{page:{pageType:"errorPage"},event:{name:"404 Page Load"}}},c=n(109),r=n(1),o=function(e){var t=e.children,n=e.meta,o=e.pageName,h=Object(c.b)(a[o]);Object(s.useEffect)((function(){h()}),[h]);var u=n.suffix,l=void 0===u||u,d=n.title,b=n.description,m=l?"".concat(d," - Construct Hub"):d;return Object(r.jsxs)(r.Fragment,{children:[Object(r.jsxs)(i.a,{children:[!1,Object(r.jsx)("meta",{content:"width=device-width, initial-scale=1",name:"viewport"}),Object(r.jsx)("meta",{charSet:"utf-8"}),Object(r.jsx)("title",{children:m}),Object(r.jsx)("meta",{content:m,property:"og:title"}),Object(r.jsx)("meta",{content:m,name:"twitter:title"}),Object(r.jsx)("meta",{content:"summary",name:"twitter:card"}),Object(r.jsx)("meta",{content:b,name:"description"}),Object(r.jsx)("meta",{content:b,property:"og:description"}),Object(r.jsx)("meta",{content:b,name:"twitter:description"})]}),t]})}},587:function(e,t,n){"use strict";n.r(t),n.d(t,"SiteTerms",(function(){return u})),n.d(t,"default",(function(){return u}));var s=n(184),i=n(205),a=n(221),c=n(189),r=n(55),o=n(228),h=n(1),u=function(){return Object(h.jsx)(o.a,{meta:{title:"Site Terms",description:"View the Construct Hub Site Terms"},pageName:"siteTerms",children:Object(h.jsx)(s.a,{bg:"white",h:"100%",py:16,w:"100%",children:Object(h.jsxs)(s.a,{as:"article",color:"gray.800",fontSize:"lg",maxW:{base:"80%",md:"600px"},mx:"auto",textAlign:"justify",w:"100%",children:[Object(h.jsx)(i.a,{as:"h1",color:"blue.800",mb:8,mx:"auto",size:"lg",children:"AWS Site Terms for CDK Construct Hub"}),Object(h.jsxs)(a.a,{spacing:4,children:[Object(h.jsx)(c.a,{fontStyle:"italic",children:"Last Updated: July 2021"}),Object(h.jsxs)(c.a,{children:["Welcome to the AWS CDK Construct Hub site (the \u201cAWS Site\u201d or \u201cConstruct Hub\u201d). Except as specifically follows, the AWS CDK Construct Hub site shall be subject to the"," ",Object(h.jsx)(r.a,{hasWarning:!1,href:"https://aws.amazon.com/terms/",children:"Site Terms"})," ","(\u201cAWS Site Terms\u201d) and considered an AWS Site for purposes of applying the AWS Site Terms (together, the \u201cCDK Construct Hub Site Terms\u201d)."]}),Object(h.jsxs)(c.a,{children:["In place of the \u201cLicense and Site Access\u201d term of the AWS Site Terms, the Construct Hub is provided to you under this license:"," ",Object(h.jsx)(r.a,{hasWarning:!1,href:"https://github.com/cdklabs/construct-hub-webapp/blob/main/LICENSE",children:"https://github.com/cdklabs/construct-hub-webapp/blob/main/LICENSE"}),". Some AWS Content and Third-Party Content may be provided to you under a separate license, such as the Apache License, Version 2.0, or other open source license. In the event of a conflict between the CDK Construct Hub Site Terms and any separate license, the separate license will prevail with respect to the AWS Content or Third-Party Content that is the subject of such separate license. This AWS Site is a construct registry and search site. The links to the CDK constructs displayed may comprise third party user generated content which shall, in any case, be subject to the \u201cDisclaimer of Warranties and Limitation of Liability\u201d section of the AWS Site Terms. Accessing a construct via its hyperlink will send you to a non-affiliated third party website (\u2018Third-Party Website\u201d) and you shall be subject to the terms and conditions of that Third-Party Website upon entering it."]})]})]})})})}}}]);
2
- //# sourceMappingURL=11.051d89fc.chunk.js.map
1
+ (this["webpackJsonpconstruct-hub-webapp"]=this["webpackJsonpconstruct-hub-webapp"]||[]).push([[13],{224:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var s=n(0),i=n(233),a={home:{event:{name:"Home Load"}},faq:{event:{name:"Frequently Asked Questions Load"}},packageProfile:{event:{name:"Package Profile Load"}},search:{event:{name:"Search Load"}},siteTerms:{event:{name:"Site Terms Load"}},notFound:{page:{pageType:"errorPage"},event:{name:"404 Page Load"}}},c=n(109),r=n(1),o=function(e){var t=e.children,n=e.meta,o=e.pageName,h=Object(c.b)(a[o]);Object(s.useEffect)((function(){h()}),[h]);var u=n.suffix,l=void 0===u||u,d=n.title,b=n.description,m=l?"".concat(d," - Construct Hub"):d;return Object(r.jsxs)(r.Fragment,{children:[Object(r.jsxs)(i.a,{children:[!1,Object(r.jsx)("meta",{content:"width=device-width, initial-scale=1",name:"viewport"}),Object(r.jsx)("meta",{charSet:"utf-8"}),Object(r.jsx)("title",{children:m}),Object(r.jsx)("meta",{content:m,property:"og:title"}),Object(r.jsx)("meta",{content:m,name:"twitter:title"}),Object(r.jsx)("meta",{content:"summary",name:"twitter:card"}),Object(r.jsx)("meta",{content:b,name:"description"}),Object(r.jsx)("meta",{content:b,property:"og:description"}),Object(r.jsx)("meta",{content:b,name:"twitter:description"})]}),t]})}},589:function(e,t,n){"use strict";n.r(t),n.d(t,"SiteTerms",(function(){return u})),n.d(t,"default",(function(){return u}));var s=n(184),i=n(205),a=n(221),c=n(189),r=n(55),o=n(224),h=n(1),u=function(){return Object(h.jsx)(o.a,{meta:{title:"Site Terms",description:"View the Construct Hub Site Terms"},pageName:"siteTerms",children:Object(h.jsx)(s.a,{bg:"white",h:"100%",py:16,w:"100%",children:Object(h.jsxs)(s.a,{as:"article",color:"gray.800",fontSize:"lg",maxW:{base:"80%",md:"600px"},mx:"auto",textAlign:"justify",w:"100%",children:[Object(h.jsx)(i.a,{as:"h1",color:"blue.800",mb:8,mx:"auto",size:"lg",children:"AWS Site Terms for CDK Construct Hub"}),Object(h.jsxs)(a.a,{spacing:4,children:[Object(h.jsx)(c.a,{fontStyle:"italic",children:"Last Updated: July 2021"}),Object(h.jsxs)(c.a,{children:["Welcome to the AWS CDK Construct Hub site (the \u201cAWS Site\u201d or \u201cConstruct Hub\u201d). Except as specifically follows, the AWS CDK Construct Hub site shall be subject to the"," ",Object(h.jsx)(r.a,{hasWarning:!1,href:"https://aws.amazon.com/terms/",children:"Site Terms"})," ","(\u201cAWS Site Terms\u201d) and considered an AWS Site for purposes of applying the AWS Site Terms (together, the \u201cCDK Construct Hub Site Terms\u201d)."]}),Object(h.jsxs)(c.a,{children:["In place of the \u201cLicense and Site Access\u201d term of the AWS Site Terms, the Construct Hub is provided to you under this license:"," ",Object(h.jsx)(r.a,{hasWarning:!1,href:"https://github.com/cdklabs/construct-hub-webapp/blob/main/LICENSE",children:"https://github.com/cdklabs/construct-hub-webapp/blob/main/LICENSE"}),". Some AWS Content and Third-Party Content may be provided to you under a separate license, such as the Apache License, Version 2.0, or other open source license. In the event of a conflict between the CDK Construct Hub Site Terms and any separate license, the separate license will prevail with respect to the AWS Content or Third-Party Content that is the subject of such separate license. This AWS Site is a construct registry and search site. The links to the CDK constructs displayed may comprise third party user generated content which shall, in any case, be subject to the \u201cDisclaimer of Warranties and Limitation of Liability\u201d section of the AWS Site Terms. Accessing a construct via its hyperlink will send you to a non-affiliated third party website (\u2018Third-Party Website\u201d) and you shall be subject to the terms and conditions of that Third-Party Website upon entering it."]})]})]})})})}}}]);
2
+ //# sourceMappingURL=13.8635b63a.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["constants/pageInfo.ts","components/Page/Page.tsx","views/SiteTerms/SiteTerms.tsx"],"names":["pageInfo","home","event","name","faq","packageProfile","search","siteTerms","notFound","page","pageType","Page","children","meta","pageName","trackPageView","usePageView","useEffect","suffix","title","description","formattedTitle","Helmet","process","content","charSet","property","SiteTerms","bg","h","py","w","as","color","fontSize","maxW","base","md","mx","textAlign","mb","size","spacing","fontStyle","ExternalLink","hasWarning","href"],"mappings":"2LAAaA,EAAW,CACtBC,KAAM,CACJC,MAAO,CACLC,KAAM,cAGVC,IAAK,CACHF,MAAO,CACLC,KAAM,oCAGVE,eAAgB,CACdH,MAAO,CACLC,KAAM,yBAGVG,OAAQ,CACNJ,MAAO,CACLC,KAAM,gBAGVI,UAAW,CACTL,MAAO,CACLC,KAAM,oBAGVK,SAAU,CACRC,KAAM,CACJC,SAAU,aAEZR,MAAO,CACLC,KAAM,mB,gBCjBCQ,EAAqC,SAAC,GAI5C,IAHLC,EAGI,EAHJA,SACAC,EAEI,EAFJA,KACAC,EACI,EADJA,SAEMC,EAAgBC,YAAYhB,EAASc,IAE3CG,qBAAU,WACRF,MACC,CAACA,IAEJ,MAA8CF,EAAtCK,cAAR,SAAuBC,EAAuBN,EAAvBM,MAAOC,EAAgBP,EAAhBO,YACxBC,EAAiBH,EAAM,UAAMC,EAAN,oBAAgCA,EAE7D,OACE,qCACE,eAACG,EAAA,EAAD,YACGC,EAOD,sBAAMC,QAAQ,sCAAsCrB,KAAK,aACzD,sBAAMsB,QAAQ,UAEd,gCAAQJ,IACR,sBAAMG,QAASH,EAAgBK,SAAS,aACxC,sBAAMF,QAASH,EAAgBlB,KAAK,kBACpC,sBAAMqB,QAAQ,UAAUrB,KAAK,iBAE7B,sBAAMqB,QAASJ,EAAajB,KAAK,gBACjC,sBAAMqB,QAASJ,EAAaM,SAAS,mBACrC,sBAAMF,QAASJ,EAAajB,KAAK,2BAElCS,O,0LC7CMe,EAA+B,kBAC1C,cAAChB,EAAA,EAAD,CACEE,KAAM,CACJM,MAAO,aACPC,YAAa,qCAEfN,SAAS,YALX,SAOE,cAAC,IAAD,CAAKc,GAAG,QAAQC,EAAE,OAAOC,GAAI,GAAIC,EAAE,OAAnC,SACE,eAAC,IAAD,CACEC,GAAG,UACHC,MAAM,WACNC,SAAS,KACTC,KAAM,CAAEC,KAAM,MAAOC,GAAI,SACzBC,GAAG,OACHC,UAAU,UACVR,EAAE,OAPJ,UASE,cAAC,IAAD,CAASC,GAAG,KAAKC,MAAM,WAAWO,GAAI,EAAGF,GAAG,OAAOG,KAAK,KAAxD,kDAGA,eAAC,IAAD,CAAOC,QAAS,EAAhB,UACE,cAAC,IAAD,CAAMC,UAAU,SAAhB,qCACA,eAAC,IAAD,uMAG6C,IAC3C,cAACC,EAAA,EAAD,CACEC,YAAY,EACZC,KAAK,gCAFP,wBAKgB,IATlB,mKAcA,eAAC,IAAD,sJAEkE,IAChE,cAACF,EAAA,EAAD,CACEC,YAAY,EACZC,KAAK,oEAFP,+EAHF","file":"static/js/11.051d89fc.chunk.js","sourcesContent":["export const pageInfo = {\n home: {\n event: {\n name: \"Home Load\",\n },\n },\n faq: {\n event: {\n name: \"Frequently Asked Questions Load\",\n },\n },\n packageProfile: {\n event: {\n name: \"Package Profile Load\",\n },\n },\n search: {\n event: {\n name: \"Search Load\",\n },\n },\n siteTerms: {\n event: {\n name: \"Site Terms Load\",\n },\n },\n notFound: {\n page: {\n pageType: \"errorPage\",\n },\n event: {\n name: \"404 Page Load\",\n },\n },\n} as const;\n","import { FunctionComponent, useEffect } from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { pageInfo } from \"../../constants/pageInfo\";\nimport { usePageView } from \"../../contexts/Analytics\";\n\nexport interface PageProps {\n pageName: keyof typeof pageInfo;\n meta: {\n suffix?: boolean;\n title: string;\n description: string;\n };\n}\n\nexport const Page: FunctionComponent<PageProps> = ({\n children,\n meta,\n pageName,\n}) => {\n const trackPageView = usePageView(pageInfo[pageName]);\n\n useEffect(() => {\n trackPageView();\n }, [trackPageView]);\n\n const { suffix = true, title, description } = meta;\n const formattedTitle = suffix ? `${title} - Construct Hub` : title;\n\n return (\n <>\n <Helmet>\n {process.env.NODE_ENV === \"development\" && (\n <meta\n content=\"default-src 'self' 'unsafe-inline' https://*.awsstatic.com https://amazonwebservices.d2.sc.omtrdc.net; connect-src 'self' https://*.shortbread.aws.dev ws://localhost:3000 https://*.awsstatic.com https://amazonwebservices.d2.sc.omtrdc.net; frame-src 'none'; img-src 'self' https://* http://*.omtrdc.net; object-src 'none'; style-src 'self' 'unsafe-inline';\"\n httpEquiv=\"Content-Security-Policy\"\n />\n )}\n\n <meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n <meta charSet=\"utf-8\" />\n\n <title>{formattedTitle}</title>\n <meta content={formattedTitle} property=\"og:title\" />\n <meta content={formattedTitle} name=\"twitter:title\" />\n <meta content=\"summary\" name=\"twitter:card\" />\n\n <meta content={description} name=\"description\" />\n <meta content={description} property=\"og:description\" />\n <meta content={description} name=\"twitter:description\" />\n </Helmet>\n {children}\n </>\n );\n};\n","import { Box, Heading, Stack, Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { ExternalLink } from \"../../components/ExternalLink\";\nimport { Page } from \"../../components/Page\";\n\nexport const SiteTerms: FunctionComponent = () => (\n <Page\n meta={{\n title: \"Site Terms\",\n description: \"View the Construct Hub Site Terms\",\n }}\n pageName=\"siteTerms\"\n >\n <Box bg=\"white\" h=\"100%\" py={16} w=\"100%\">\n <Box\n as=\"article\"\n color=\"gray.800\"\n fontSize=\"lg\"\n maxW={{ base: \"80%\", md: \"600px\" }}\n mx=\"auto\"\n textAlign=\"justify\"\n w=\"100%\"\n >\n <Heading as=\"h1\" color=\"blue.800\" mb={8} mx=\"auto\" size=\"lg\">\n AWS Site Terms for CDK Construct Hub\n </Heading>\n <Stack spacing={4}>\n <Text fontStyle=\"italic\">Last Updated: July 2021</Text>\n <Text>\n Welcome to the AWS CDK Construct Hub site (the “AWS Site” or\n “Construct Hub”). Except as specifically follows, the AWS CDK\n Construct Hub site shall be subject to the{\" \"}\n <ExternalLink\n hasWarning={false}\n href=\"https://aws.amazon.com/terms/\"\n >\n Site Terms\n </ExternalLink>{\" \"}\n (“AWS Site Terms”) and considered an AWS Site for purposes of\n applying the AWS Site Terms (together, the “CDK Construct Hub Site\n Terms”).\n </Text>\n <Text>\n In place of the “License and Site Access” term of the AWS Site\n Terms, the Construct Hub is provided to you under this license:{\" \"}\n <ExternalLink\n hasWarning={false}\n href=\"https://github.com/cdklabs/construct-hub-webapp/blob/main/LICENSE\"\n >\n https://github.com/cdklabs/construct-hub-webapp/blob/main/LICENSE\n </ExternalLink>\n . Some AWS Content and Third-Party Content may be provided to you\n under a separate license, such as the Apache License, Version 2.0,\n or other open source license. In the event of a conflict between the\n CDK Construct Hub Site Terms and any separate license, the separate\n license will prevail with respect to the AWS Content or Third-Party\n Content that is the subject of such separate license. This AWS Site\n is a construct registry and search site. The links to the CDK\n constructs displayed may comprise third party user generated content\n which shall, in any case, be subject to the “Disclaimer of\n Warranties and Limitation of Liability” section of the AWS Site\n Terms. Accessing a construct via its hyperlink will send you to a\n non-affiliated third party website (‘Third-Party Website”) and you\n shall be subject to the terms and conditions of that Third-Party\n Website upon entering it.\n </Text>\n </Stack>\n </Box>\n </Box>\n </Page>\n);\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["constants/pageInfo.ts","components/Page/Page.tsx","views/SiteTerms/SiteTerms.tsx"],"names":["pageInfo","home","event","name","faq","packageProfile","search","siteTerms","notFound","page","pageType","Page","children","meta","pageName","trackPageView","usePageView","useEffect","suffix","title","description","formattedTitle","Helmet","process","content","charSet","property","SiteTerms","bg","h","py","w","as","color","fontSize","maxW","base","md","mx","textAlign","mb","size","spacing","fontStyle","ExternalLink","hasWarning","href"],"mappings":"2LAAaA,EAAW,CACtBC,KAAM,CACJC,MAAO,CACLC,KAAM,cAGVC,IAAK,CACHF,MAAO,CACLC,KAAM,oCAGVE,eAAgB,CACdH,MAAO,CACLC,KAAM,yBAGVG,OAAQ,CACNJ,MAAO,CACLC,KAAM,gBAGVI,UAAW,CACTL,MAAO,CACLC,KAAM,oBAGVK,SAAU,CACRC,KAAM,CACJC,SAAU,aAEZR,MAAO,CACLC,KAAM,mB,gBCjBCQ,EAAqC,SAAC,GAI5C,IAHLC,EAGI,EAHJA,SACAC,EAEI,EAFJA,KACAC,EACI,EADJA,SAEMC,EAAgBC,YAAYhB,EAASc,IAE3CG,qBAAU,WACRF,MACC,CAACA,IAEJ,MAA8CF,EAAtCK,cAAR,SAAuBC,EAAuBN,EAAvBM,MAAOC,EAAgBP,EAAhBO,YACxBC,EAAiBH,EAAM,UAAMC,EAAN,oBAAgCA,EAE7D,OACE,qCACE,eAACG,EAAA,EAAD,YACGC,EAOD,sBAAMC,QAAQ,sCAAsCrB,KAAK,aACzD,sBAAMsB,QAAQ,UAEd,gCAAQJ,IACR,sBAAMG,QAASH,EAAgBK,SAAS,aACxC,sBAAMF,QAASH,EAAgBlB,KAAK,kBACpC,sBAAMqB,QAAQ,UAAUrB,KAAK,iBAE7B,sBAAMqB,QAASJ,EAAajB,KAAK,gBACjC,sBAAMqB,QAASJ,EAAaM,SAAS,mBACrC,sBAAMF,QAASJ,EAAajB,KAAK,2BAElCS,O,0LC7CMe,EAA+B,kBAC1C,cAAChB,EAAA,EAAD,CACEE,KAAM,CACJM,MAAO,aACPC,YAAa,qCAEfN,SAAS,YALX,SAOE,cAAC,IAAD,CAAKc,GAAG,QAAQC,EAAE,OAAOC,GAAI,GAAIC,EAAE,OAAnC,SACE,eAAC,IAAD,CACEC,GAAG,UACHC,MAAM,WACNC,SAAS,KACTC,KAAM,CAAEC,KAAM,MAAOC,GAAI,SACzBC,GAAG,OACHC,UAAU,UACVR,EAAE,OAPJ,UASE,cAAC,IAAD,CAASC,GAAG,KAAKC,MAAM,WAAWO,GAAI,EAAGF,GAAG,OAAOG,KAAK,KAAxD,kDAGA,eAAC,IAAD,CAAOC,QAAS,EAAhB,UACE,cAAC,IAAD,CAAMC,UAAU,SAAhB,qCACA,eAAC,IAAD,uMAG6C,IAC3C,cAACC,EAAA,EAAD,CACEC,YAAY,EACZC,KAAK,gCAFP,wBAKgB,IATlB,mKAcA,eAAC,IAAD,sJAEkE,IAChE,cAACF,EAAA,EAAD,CACEC,YAAY,EACZC,KAAK,oEAFP,+EAHF","file":"static/js/13.8635b63a.chunk.js","sourcesContent":["export const pageInfo = {\n home: {\n event: {\n name: \"Home Load\",\n },\n },\n faq: {\n event: {\n name: \"Frequently Asked Questions Load\",\n },\n },\n packageProfile: {\n event: {\n name: \"Package Profile Load\",\n },\n },\n search: {\n event: {\n name: \"Search Load\",\n },\n },\n siteTerms: {\n event: {\n name: \"Site Terms Load\",\n },\n },\n notFound: {\n page: {\n pageType: \"errorPage\",\n },\n event: {\n name: \"404 Page Load\",\n },\n },\n} as const;\n","import { FunctionComponent, useEffect } from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { pageInfo } from \"../../constants/pageInfo\";\nimport { usePageView } from \"../../contexts/Analytics\";\n\nexport interface PageProps {\n pageName: keyof typeof pageInfo;\n meta: {\n suffix?: boolean;\n title: string;\n description: string;\n };\n}\n\nexport const Page: FunctionComponent<PageProps> = ({\n children,\n meta,\n pageName,\n}) => {\n const trackPageView = usePageView(pageInfo[pageName]);\n\n useEffect(() => {\n trackPageView();\n }, [trackPageView]);\n\n const { suffix = true, title, description } = meta;\n const formattedTitle = suffix ? `${title} - Construct Hub` : title;\n\n return (\n <>\n <Helmet>\n {process.env.NODE_ENV === \"development\" && (\n <meta\n content=\"default-src 'self' 'unsafe-inline' https://*.awsstatic.com https://amazonwebservices.d2.sc.omtrdc.net; connect-src 'self' https://*.shortbread.aws.dev ws://localhost:3000 https://*.awsstatic.com https://amazonwebservices.d2.sc.omtrdc.net; frame-src 'none'; img-src 'self' https://* http://*.omtrdc.net; object-src 'none'; style-src 'self' 'unsafe-inline';\"\n httpEquiv=\"Content-Security-Policy\"\n />\n )}\n\n <meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n <meta charSet=\"utf-8\" />\n\n <title>{formattedTitle}</title>\n <meta content={formattedTitle} property=\"og:title\" />\n <meta content={formattedTitle} name=\"twitter:title\" />\n <meta content=\"summary\" name=\"twitter:card\" />\n\n <meta content={description} name=\"description\" />\n <meta content={description} property=\"og:description\" />\n <meta content={description} name=\"twitter:description\" />\n </Helmet>\n {children}\n </>\n );\n};\n","import { Box, Heading, Stack, Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { ExternalLink } from \"../../components/ExternalLink\";\nimport { Page } from \"../../components/Page\";\n\nexport const SiteTerms: FunctionComponent = () => (\n <Page\n meta={{\n title: \"Site Terms\",\n description: \"View the Construct Hub Site Terms\",\n }}\n pageName=\"siteTerms\"\n >\n <Box bg=\"white\" h=\"100%\" py={16} w=\"100%\">\n <Box\n as=\"article\"\n color=\"gray.800\"\n fontSize=\"lg\"\n maxW={{ base: \"80%\", md: \"600px\" }}\n mx=\"auto\"\n textAlign=\"justify\"\n w=\"100%\"\n >\n <Heading as=\"h1\" color=\"blue.800\" mb={8} mx=\"auto\" size=\"lg\">\n AWS Site Terms for CDK Construct Hub\n </Heading>\n <Stack spacing={4}>\n <Text fontStyle=\"italic\">Last Updated: July 2021</Text>\n <Text>\n Welcome to the AWS CDK Construct Hub site (the “AWS Site” or\n “Construct Hub”). Except as specifically follows, the AWS CDK\n Construct Hub site shall be subject to the{\" \"}\n <ExternalLink\n hasWarning={false}\n href=\"https://aws.amazon.com/terms/\"\n >\n Site Terms\n </ExternalLink>{\" \"}\n (“AWS Site Terms”) and considered an AWS Site for purposes of\n applying the AWS Site Terms (together, the “CDK Construct Hub Site\n Terms”).\n </Text>\n <Text>\n In place of the “License and Site Access” term of the AWS Site\n Terms, the Construct Hub is provided to you under this license:{\" \"}\n <ExternalLink\n hasWarning={false}\n href=\"https://github.com/cdklabs/construct-hub-webapp/blob/main/LICENSE\"\n >\n https://github.com/cdklabs/construct-hub-webapp/blob/main/LICENSE\n </ExternalLink>\n . Some AWS Content and Third-Party Content may be provided to you\n under a separate license, such as the Apache License, Version 2.0,\n or other open source license. In the event of a conflict between the\n CDK Construct Hub Site Terms and any separate license, the separate\n license will prevail with respect to the AWS Content or Third-Party\n Content that is the subject of such separate license. This AWS Site\n is a construct registry and search site. The links to the CDK\n constructs displayed may comprise third party user generated content\n which shall, in any case, be subject to the “Disclaimer of\n Warranties and Limitation of Liability” section of the AWS Site\n Terms. Accessing a construct via its hyperlink will send you to a\n non-affiliated third party website (‘Third-Party Website”) and you\n shall be subject to the terms and conditions of that Third-Party\n Website upon entering it.\n </Text>\n </Stack>\n </Box>\n </Box>\n </Page>\n);\n"],"sourceRoot":""}