From e07c5bedc49999d3f707ba5d349f80b11c2c764f Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 6 Feb 2024 00:05:26 -0500 Subject: [PATCH] update routes, add assets & demo code --- src/app/Resources/Resources.tsx | 654 ++++++++++++++++++ src/app/Support/Support.tsx | 49 -- src/app/routes.tsx | 12 +- .../FuseConnector_Icons_AzureServices.png | Bin 0 -> 2133 bytes src/assets/FuseConnector_Icons_REST.png | Bin 0 -> 13140 bytes src/assets/activemq-core_200x150.png | Bin 0 -> 2528 bytes src/assets/camel-avro_200x150.png | Bin 0 -> 3345 bytes src/assets/camel-dropbox_200x150.png | Bin 0 -> 2017 bytes src/assets/camel-infinispan_200x150.png | Bin 0 -> 2406 bytes src/assets/camel-saxon_200x150.png | Bin 0 -> 2610 bytes src/assets/camel-spark_200x150.png | Bin 0 -> 4030 bytes src/assets/camel-swagger-java_200x150.png | Bin 0 -> 3336 bytes src/assets/index.d.ts | 4 + src/assets/pf-logo-small.svg | 23 + stories/Support.stories.tsx | 2 +- 15 files changed, 688 insertions(+), 56 deletions(-) create mode 100644 src/app/Resources/Resources.tsx delete mode 100644 src/app/Support/Support.tsx create mode 100644 src/assets/FuseConnector_Icons_AzureServices.png create mode 100644 src/assets/FuseConnector_Icons_REST.png create mode 100644 src/assets/activemq-core_200x150.png create mode 100644 src/assets/camel-avro_200x150.png create mode 100644 src/assets/camel-dropbox_200x150.png create mode 100644 src/assets/camel-infinispan_200x150.png create mode 100644 src/assets/camel-saxon_200x150.png create mode 100644 src/assets/camel-spark_200x150.png create mode 100644 src/assets/camel-swagger-java_200x150.png create mode 100644 src/assets/index.d.ts create mode 100644 src/assets/pf-logo-small.svg diff --git a/src/app/Resources/Resources.tsx b/src/app/Resources/Resources.tsx new file mode 100644 index 00000000..db009693 --- /dev/null +++ b/src/app/Resources/Resources.tsx @@ -0,0 +1,654 @@ +import React from 'react'; +import { + Badge, + Button, + Card, + CardHeader, + CardBody, + CardTitle, + Divider, + Drawer, + DrawerActions, + DrawerPanelBody, + DrawerCloseButton, + DrawerContent, + DrawerContentBody, + DrawerHead, + DrawerPanelContent, + Dropdown, + DropdownItem, + DropdownList, + Flex, + FlexItem, + Gallery, + MenuToggle, + MenuToggleCheckbox, + PageSection, + PageSectionVariants, + Pagination, + Progress, + Select, + SelectList, + SelectOption, + TextContent, + Text, + Title, + Toolbar, + ToolbarFilter, + ToolbarItem, + ToolbarContent, + MenuToggleElement, +} from '@patternfly/react-core'; +import TrashIcon from '@patternfly/react-icons/dist/esm/icons/trash-icon'; +import pfIcon from '../../assets/pf-logo-small.svg'; +import activeMQIcon from '../../assets/activemq-core_200x150.png'; +import avroIcon from '../../assets/camel-avro_200x150.png'; +import dropBoxIcon from '../../assets/camel-dropbox_200x150.png'; +import infinispanIcon from '../../assets/camel-infinispan_200x150.png'; +import saxonIcon from '../../assets/camel-saxon_200x150.png'; +import sparkIcon from '../../assets/camel-spark_200x150.png'; +import swaggerIcon from '../../assets/camel-swagger-java_200x150.png'; +import azureIcon from '../../assets/FuseConnector_Icons_AzureServices.png'; +import restIcon from '../../assets/FuseConnector_Icons_REST.png'; +import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon'; +import { DashboardWrapper } from '@patternfly/react-core/src/demos/DashboardWrapper'; +import { data } from '@patternfly/react-core/src/demos/CardView/examples/CardViewData.jsx'; + +export const PrimaryDetailCardView: React.FunctionComponent = () => { + const [totalItemCount, setTotalItemCount] = React.useState(10); + const [cardData, setCardData] = React.useState(data); + const [isChecked, setIsChecked] = React.useState(false); + const [isDrawerExpanded, setIsDrawerExpanded] = React.useState(false); + const [selectedItems, setSelectedItems] = React.useState([]); + const [areAllSelected, setAreAllSelected] = React.useState(false); + const [splitButtonDropdownIsOpen, setSplitButtonDropdownIsOpen] = React.useState(false); + const [isLowerToolbarDropdownOpen, setIsLowerToolbarDropdownOpen] = React.useState(false); + const [isLowerToolbarKebabDropdownOpen, setIsLowerToolbarKebabDropdownOpen] = React.useState(false); + const [page, setPage] = React.useState(1); + const [perPage, setPerPage] = React.useState(10); + const [filters, setFilters] = React.useState>({ products: [] }); + const [state, setState] = React.useState({}); + const [activeCard, setActiveCard] = React.useState(-1); + + interface ProductType { + id: number; + name: string; + icon: string; + description: string; + } + + const onToolbarDropdownToggle = () => { + setIsLowerToolbarDropdownOpen(!isLowerToolbarDropdownOpen); + }; + + const onToolbarKebabDropdownToggle = () => { + setIsLowerToolbarKebabDropdownOpen(!isLowerToolbarKebabDropdownOpen); + }; + + const onToolbarKebabDropdownSelect = () => { + setIsLowerToolbarKebabDropdownOpen(!isLowerToolbarKebabDropdownOpen); + }; + + const onCardKebabDropdownToggle = ( + event: React.MouseEvent | React.MouseEvent, + key: string, + ) => { + setState({ + [key]: !state[key as keyof Object], + }); + }; + + const checkAllSelected = (selected: number, total: number) => { + if (selected && selected < total) { + return null; + } + return selected === total; + }; + + const onNameSelect = (event: any, selection = '') => { + const checked = event.target.checked; + const prevSelections = filters.products; + + setFilters({ + ...filters, + products: checked ? [...prevSelections, selection] : prevSelections.filter((value) => value !== selection), + }); + }; + + const onDelete = (type = '', _id = '') => { + if (type) { + setFilters(filters); + } else { + setFilters({ products: [] }); + } + }; + + const deleteItem = (item: ProductType) => { + const filter = (getter) => (val) => getter(val) !== item.id; + + setCardData(cardData.filter(filter(({ id }) => id))); + + setSelectedItems(selectedItems.filter(filter((id) => id))); + + setTotalItemCount(totalItemCount - 1); + setIsDrawerExpanded(false); + setActiveCard(-1); + }; + + const onSetPage = (_event: any, pageNumber: number) => { + setPage(pageNumber); + }; + + const onPerPageSelect = (_event: any, perPage: number) => { + setPerPage(perPage); + setPage(1); + }; + + const onSplitButtonToggle = () => { + setSplitButtonDropdownIsOpen(!splitButtonDropdownIsOpen); + }; + + const onSplitButtonSelect = () => { + setSplitButtonDropdownIsOpen(false); + setIsDrawerExpanded(false); + setActiveCard(-1); + }; + + const onCloseDrawerClick = () => { + setActiveCard(-1); + setIsDrawerExpanded(false); + }; + + const onChange = (event: React.FormEvent) => { + const name = event.currentTarget.name; + const productId = Number(name.charAt(name.length - 1)); + + if (selectedItems.includes(productId * 1)) { + setSelectedItems(selectedItems.filter((id) => productId * 1 !== id)); + + const checkAll = checkAllSelected(selectedItems.length - 1, totalItemCount); + setAreAllSelected(!!checkAll); + } else { + setSelectedItems([...selectedItems, productId * 1]); + const checkAll = checkAllSelected(selectedItems.length + 1, totalItemCount); + setAreAllSelected(!!checkAll); + } + }; + + const onCardClick = (productId) => { + if (productId === activeCard) { + setIsDrawerExpanded(!isDrawerExpanded); + setActiveCard(-1); + } else { + setActiveCard(productId); + setIsDrawerExpanded(true); + } + }; + + const selectPage = (e: { target: { checked: any } }) => { + const { checked } = e.target; + let collection: number[] = []; + + collection = getAllItems(); + + setSelectedItems(collection); + setIsChecked(checked); + setAreAllSelected(totalItemCount === perPage ? true : false); + + updateSelected(); + }; + + const selectAll = () => { + let collection: number[] = []; + for (let i = 0; i <= 9; i++) { + collection = [...collection, i]; + } + + setSelectedItems(collection); + setIsChecked(true); + setAreAllSelected(true); + + updateSelected(); + }; + + const selectNone = () => { + setSelectedItems([]); + setIsChecked(false); + setAreAllSelected(false); + setIsDrawerExpanded(false); + setActiveCard(-1); + + updateSelected(); + }; + + const updateSelected = () => { + const rows = cardData.map((post) => { + post.selected = selectedItems.includes(post.id); + return post; + }); + + setCardData(rows); + }; + + const getAllItems = () => { + const collection: number[] = []; + for (const items of cardData) { + collection.push(items.id); + } + + return collection; + }; + + const splitCheckboxSelectAll = (e: any) => { + let collection: number[] = []; + + if (e.target.checked) { + for (let i = 0; i <= 9; i++) { + collection = [...collection, i]; + } + } + + setSelectedItems(collection); + setIsChecked(isChecked); + setAreAllSelected(e.target.checked); + setIsDrawerExpanded(false); + setActiveCard(-1); + + updateSelected(); + }; + + const renderPagination = () => { + const defaultPerPageOptions = [ + { + title: '1', + value: 1, + }, + { + title: '5', + value: 5, + }, + { + title: '10', + value: 10, + }, + ]; + + return ( + + ); + }; + + const buildSelectDropdown = () => { + const numSelected = selectedItems.length; + const anySelected = numSelected > 0; + const splitButtonDropdownItems = ( + <> + + Select none (0 items) + + + Select page ({perPage} items) + + + Select all ({totalItemCount} items) + + + ); + + return ( + setSplitButtonDropdownIsOpen(isOpen)} + toggle={(toggleRef) => ( + + {numSelected !== 0 && `${numSelected} selected`} + , + ], + }} + > + )} + > + {splitButtonDropdownItems} + + ); + }; + + const buildFilterDropdown = () => { + const filterDropdownItems = ( + + + PatternFly + + + ActiveMQ + + + Apache Spark + + + Avro + + + Azure Services + + + Crypto + + + DropBox + + + JBoss Data Grid + + + REST + + + SWAGGER + + + ); + + return ( + onDelete(type as string, id as string)} + > + + + ); + }; + + const toolbarKebabDropdownItems = ( + <> + + Action + + ev.preventDefault()} + > + Link + + + Disabled Action + + + Disabled Link + + + + Separated Action + + ev.preventDefault()}> + Separated Link + + + ); + const toolbarItems = ( + + {buildSelectDropdown()} + {buildFilterDropdown()} + + + + + + + + setIsLowerToolbarKebabDropdownOpen(isOpen)} + toggle={(toggleRef) => ( + + + )} + > + {toolbarKebabDropdownItems} + + + + {renderPagination()} + + + ); + + const filtered = + filters.products.length > 0 + ? data.filter((card: { name: string }) => filters.products.length === 0 || filters.products.includes(card.name)) + : cardData.slice((page - 1) * perPage, perPage === 1 ? page * perPage : page * perPage - 1); + + const icons = { + pfIcon, + activeMQIcon, + sparkIcon, + avroIcon, + azureIcon, + saxonIcon, + dropBoxIcon, + infinispanIcon, + restIcon, + swaggerIcon, + }; + + const drawerContent = ( + + {filtered.map((product, key) => ( + + + setState({ [key]: isOpen })} + popperProps={{ position: 'right' }} + toggle={(toggleRef: React.Ref) => ( + { + onCardKebabDropdownToggle(e, key.toString()); + }} + isExpanded={!!state[key]} + > + + + )} + > + + { + deleteItem(product); + }} + > + + Delete + + + + + ), + }} + selectableActions={{ + isChecked: selectedItems.includes(product.id), + selectableActionId: `selectable-actions-item-${product.id}`, + selectableActionAriaLabelledby: `${'card-view-' + key}`, + name: `check-${product.id}`, + onChange, + }} + > + {`${product.name} + + + + + + + + + + Provided by Red Hat + + + + + + + {product.description} + + ))} + + ); + + const panelContent = ( + + + + node-{activeCard} + + + + + + + + +

+ The content of the drawer really is up to you. It could have form fields, definition lists, text lists, + labels, charts, progress bars, etc. Spacing recommendation is 24px margins. You can put tabs in here, and + can also make the drawer scrollable. +

+
+ + + + + + +
+
+
+ ); + + return ( + + + + Projects + This is a demo that showcases Patternfly Cards. + + + + + {toolbarItems} + + + + + + + {drawerContent} + + + + + + + + ); +}; diff --git a/src/app/Support/Support.tsx b/src/app/Support/Support.tsx deleted file mode 100644 index a966d53e..00000000 --- a/src/app/Support/Support.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import * as React from 'react'; -import { CubesIcon } from '@patternfly/react-icons'; -import { - Button, - EmptyState, - EmptyStateActions, - EmptyStateBody, - EmptyStateFooter, - EmptyStateVariant, - PageSection, - Text, - TextContent, - TextVariants, -} from '@patternfly/react-core'; - -export interface ISupportProps { - sampleProp?: string; -} - -// eslint-disable-next-line prefer-const -let Support: React.FunctionComponent = () => ( - - - - - - This represents an the empty state pattern in Patternfly 4. Hopefully it's simple enough to use but - flexible enough to meet a variety of needs. - - - This text has overridden a css component variable to demonstrate how to apply customizations using - PatternFly's global variable API. - - - - - - - - - - - - - - -); - -export { Support }; diff --git a/src/app/routes.tsx b/src/app/routes.tsx index 4acb14ef..0a3c54b4 100644 --- a/src/app/routes.tsx +++ b/src/app/routes.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { Route, RouteComponentProps, Switch, useLocation } from 'react-router-dom'; import { Dashboard } from '@app/Dashboard/Dashboard'; -import { Support } from '@app/Support/Support'; +import { PrimaryDetailCardView as Resources } from '@app/Resources/Resources'; import { GeneralSettings } from '@app/Settings/General/GeneralSettings'; import { ProfileSettings } from '@app/Settings/Profile/ProfileSettings'; import { NotFound } from '@app/NotFound/NotFound'; @@ -35,11 +35,11 @@ const routes: AppRouteConfig[] = [ title: 'PatternFly Seed | Main Dashboard', }, { - component: Support, + component: Resources, exact: true, - label: 'Support', - path: '/support', - title: 'PatternFly Seed | Support Page', + label: 'Resources', + path: '/resources', + title: 'PatternFly Seed | Resources Page', }, { label: 'Settings', @@ -99,7 +99,7 @@ const PageNotFound = ({ title }: { title: string }) => { const flattenedRoutes: IAppRoute[] = routes.reduce( (flattened, route) => [...flattened, ...(route.routes ? route.routes : [route])], - [] as IAppRoute[] + [] as IAppRoute[], ); const AppRoutes = (): React.ReactElement => ( diff --git a/src/assets/FuseConnector_Icons_AzureServices.png b/src/assets/FuseConnector_Icons_AzureServices.png new file mode 100644 index 0000000000000000000000000000000000000000..2b901285bf3626ae63e9b3623141418ce84c0f61 GIT binary patch literal 2133 zcmZvedo8oDo^P77BUWOs(p~@n zBye_U*B$TNQ66~D4xJO_T6RqIik;V001%V?OS^!ALg-GY7>@A_cMClq9_3FW0w_W# zo(RWX@((1s68#A=VO>NE01%nLp;7M99~O!%Lq}|(iJ7E=%!bNAYpaUV3t6K-MEdW% zu<3t7-52qP+`0n#$L@#&nJx!4E*6&9=N=4TejsPR0w0w-bcTHee=NIm>}*}S-|Y=` z?bVDvVaOgrd{zhfJJ+D=*ir7XE&%R8K>*M$tN(+4#-bgIA%n% z<1RP&EHPX3r2;+gV>E`sJYH_Krom_HhCG|E9%IhGlUM?I;^sxx8X8xd0@fNrorb^B zTcY%pU0FW8L$yw&))GRAZ~!a>fbrnB24JCp;Sx~@2tWZp@zYUl50tq4DRY5{*zdQ# zz}%5I0$?(nl9Z5gtQfT{#OY^18YenE{oXcr#Tv!RA`%&V}0+$+y2 zsT^r43ms4a3&FBPEtRQ!@$$h?E!QRp*_#UUe zYx~h`WoQiN@v)Ye^l%9jE4NgC_B8yZ$?5uKD_;|31Y_cR&lG~-B;bQA0755+}X<1$2AzW z?G#ZnU40Kp=}#DO^NcZZj#=_^XY<~a{(;gf6abY5DPt+%$P*5Pc!pb*uCP|~2Yh5>a zXozR@8f0vfuda2z5(!UnKRM3y_?S8s*)SP2T(r_~Enu;?w@}qL)S0+d=rnAf16}FNvcx{A)2agnKL~hN`ho-rB}EvVpPn_pwVK2u2^&dqIMLUg@2P);G$WwS%DvdZ8#x> zQEh&&={oPcSb;8Ior#EK@8y-aCklG4t%|X9@ek!HF3MT>eR>pDATk+TaxtyMM+c?D zi}{Vv^>lHp$EZ}jb0XSenmT-Hfh*P(T<$#F&)R-Op_LbP7z0qk*)=$u1+{hHKS16RWJsx5zL;uMV<qW4P@Ea}Q{l+%8C3r``N+!K*B_@Xz@;|)}JoAdB$D6cJ6oPB46ldbppR>oRAb86HiY^&z(usa(p zU=fO-4k{>JQaWUMbmLMKp(AO@3RkyenSkh9ZB{-D>3DkG88>ub+gON)EnPRF5Hi!C zA-!MN5vJRp@;X*sa5YJu$Tml`s(Nj517~M(9+u&$Xv|cR!EET1h|%&?W}dttE%f|o z_x?10yREP1AtKw2e*EQjae0oL_WNTCmFM2_pG^)jbL^^kN2Z6o*`JSy$RExO8Q4RC z8(;#LqROlU?RvcAEz2kYzyotnyBg8a({-Lu}UFo5}&uiPym2>T#A*2gW+Hb00;jy zfBP@^B_-1y9) mU4IwSulTRT{1a@~9>ART(mKuPIArHb0N^l==o)K3%6|YeGqsKY literal 0 HcmV?d00001 diff --git a/src/assets/FuseConnector_Icons_REST.png b/src/assets/FuseConnector_Icons_REST.png new file mode 100644 index 0000000000000000000000000000000000000000..c37c95b5f5b034e89ec73efa49c9e381ba4ade12 GIT binary patch literal 13140 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 literal 0 HcmV?d00001 diff --git a/src/assets/activemq-core_200x150.png b/src/assets/activemq-core_200x150.png new file mode 100644 index 0000000000000000000000000000000000000000..b022627b75eaffd3640e77ffc5768e6bb772a9ae GIT binary patch literal 2528 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 literal 0 HcmV?d00001 diff --git a/src/assets/camel-avro_200x150.png b/src/assets/camel-avro_200x150.png new file mode 100644 index 0000000000000000000000000000000000000000..4114648d355b8b839f1187ff041732b3b60b759b GIT binary patch literal 3345 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 literal 0 HcmV?d00001 diff --git a/src/assets/camel-saxon_200x150.png b/src/assets/camel-saxon_200x150.png new file mode 100644 index 0000000000000000000000000000000000000000..6b3110f7652b569bb8285db806c21a906d8ed5e3 GIT binary patch literal 2610 zcmbVOdpJ~U7oQ@eluM|n#vn?}>|tiixYU>-Dss)WGG@jY%nW1PJCP{#xutM~PP)iP z6vw4<2?zJ^k_RXYc*K@7n9P)^DwMt@qh+)>iwaB)3Y! zU@$2QbFwWoHbYOEgb4I5T#eI$hAli(C!QV0lNU_k(qTjz$Ab>HU{M%!TRMdn>fb^) zguz6-nD$OQC(A2r23}(1D#E(Mtq4VG#bOw`cgqXfxi-0p}MhHiY zCCbu|ME7EvhjHn4VOI9kFdr(OhS+NiHw+;_23T|+1s=lkWd{&Kj1XV#5}>(Ij6}e{ zs_=Y_5Z_2SSz5zM94;M>(b3hWq5uGn#p(ch7%Udp14p9(G!g~fSZzR$fWZ>bIQaJq z0eR!nJPEdBv+us3l@Y>=$MYi~k-@>iI>EX+94-S1;PH5&4K!LC($EeFW%DQ@+Ux+; z6$@l~0F}%1<1smGxX>cSgA>RzLO@Kvg~0N&wESV19q>I-P|A=Y6h9=OgF>=c!nnR_ z2k>m^|D*9!?Ew2wKRVKu9>59YQlb6uR9yi>x%;&vp(4bFaG1-4HihC#=1>D!bT-d| zY=nTm=+Kxn0tQV+<4G7m7lQ_{`T(Gh($_U5qA^6A84AFmu`4!yh9&Enl8Gj0eG|YG z002`xB49=~Gcm#9P4PGsS|785wO|MEC~PWy#V-@``yGq>C6++q(kVO+*Pg@iU8w+T zFAk3r;KlKSlkBi?O-l-u$rcKB2{-6lykt6;8APXB7+o`$G^&DMFiELaQdV8p~a8(p|hc$;X=*faGNj! zHP!>`L-wZNm(THOHv(hQnV|{R)G+YlWMgY5m`VcQ_Jh}{ckVp|ALoKYZCQDLg8AMz z?^J_=k6@M^ct0MjO9e|p!M^IA{y{JSf4A;2$bb0Z<2=||3O>mPuegDu9i6=cuB_8w z5f^+nI5;{Ep2LElmiT{U#yjX!aXIJ-k`!6cBB#+Q&2UdfYqSkxspg?A6v+K}3A=)ZTBv z?jK!4;f&@ORM*xYNe!|tst?=ZNGeH_LuVd;mHn5Li(~c#;#l&CGxEZj3t^p8zw;Sg%<}q;qJtW*)8$9iCqhgVkLYZVefK5*x2KD7f`Utz1_St3CwF>H zEqEN_+>2=Gt@P^R*NNi<<{C1xA}Li@>qpv;SD$>bnB00c*P+|lP%+jlBe}+ma8^o3*YlWX0cO zQ$AalCoJuoWK*ff?&f2rP|wMRobYKg6D!{1Wg zwtClaSar0y#DT#M~=qQ|vQXy1_A3ZBzU1G@_Sorz?5cC&q*KXB4E$}?)3<#zD>iRvFuBH6 zMGaSacoTweIuF9ty@wy{-5okoG!=?tZFVLmM|7RIc4zrPV9VuJ(wn}<<&;&jt3$7k zsdC2*(kDWfPu*PRir(rN3|iuE9ZD_S|K;vcm$8cZ#+;Y2Lz?ha(qSdrwX)}Y=04c% zv@5F3I)S}^qTnU-{nmcl+d}@#Ao@_ zYj@wBaW&_N_u2Y5_>L^=#ZO>_%PUgbKBO+FX^r|GJmA>5cA4_3BunK_oc_Qg6>a?50aU}VIxRlhtgzaOF_dSB$+Vf&srmuF0;HwypaEKIG)MJDc1 F{{SKMaqa*B literal 0 HcmV?d00001 diff --git a/src/assets/camel-spark_200x150.png b/src/assets/camel-spark_200x150.png new file mode 100644 index 0000000000000000000000000000000000000000..44ba194573aa0673cdf837d92bc100323030af08 GIT binary patch literal 4030 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 + + + Group 12 + Created with Sketch. + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/stories/Support.stories.tsx b/stories/Support.stories.tsx index bef4ae66..2c41bb7b 100644 --- a/stories/Support.stories.tsx +++ b/stories/Support.stories.tsx @@ -1,5 +1,5 @@ import React, { ComponentProps } from 'react'; -import { Support } from '@app/Support/Support'; +import { Support } from '@app/Resources/Resources'; import { Story } from '@storybook/react'; //👇 This default export determines where your story goes in the story list