{"version":3,"sources":["utils/index.ts","assets/red/down3.png","assets/red/6.png","assets/red/nft-dapper.png","assets/red/error.png","utils/jsonServer.ts","utils/storage.ts","authProvider.ts","configuration/actions.ts","themeReducer.ts","emailReducer.ts","layout/AppBar.tsx","layout/utils.ts","layout/SubMenu.tsx","layout/Logo.tsx","layout/Menu.tsx","layout/themes.ts","layout/redTheme.ts","layout/Layout.tsx","layout/Login.tsx","dashboard/Welcome.tsx","dashboard/Dashboard.tsx","dashboard/index.ts","configuration/Configuration.tsx","segments/data.ts","visitors/SegmentsField.tsx","visitors/SegmentInput.tsx","visitors/FullNameField.tsx","visitors/CustomerLinkField.tsx","visitors/ColoredNumberField.tsx","visitors/AvatarField.tsx","visitors/MobileGrid.tsx","visitors/VisitorListAside.tsx","visitors/VisitorList.tsx","visitors/VisitorCreate.tsx","orders/NbItemsField.tsx","visitors/CustomerReferenceField.tsx","visitors/AddressField.tsx","orders/MobileGrid.tsx","orders/OrderList.tsx","orders/Basket.tsx","orders/Totals.tsx","orders/OrderEdit.tsx","orders/index.ts","reviews/BulkAcceptButton.tsx","reviews/BulkRejectButton.tsx","reviews/ReviewListMobile.tsx","products/ProductReferenceField.tsx","reviews/StarRatingField.tsx","reviews/rowStyle.tsx","reviews/ReviewListDesktop.tsx","reviews/ReviewFilter.tsx","reviews/AcceptButton.tsx","reviews/RejectButton.tsx","reviews/ReviewEditToolbar.tsx","reviews/ReviewEdit.tsx","reviews/ReviewList.tsx","reviews/index.ts","visitors/Aside.tsx","visitors/SegmentsInput.tsx","visitors/VisitorEdit.tsx","visitors/index.ts","segments/LinkToRelatedCustomers.tsx","segments/Segments.tsx","routes.tsx","i18n/en.ts","inbox/MobileGrid.tsx","components/empty.tsx","components/pagination.tsx","components/BulkActionButtons.tsx","inbox/InboxList.tsx","components/show.tsx","inbox/InboxShow.tsx","inbox/Toolbar.tsx","inbox/InboxCreate.tsx","inbox/index.ts","junk/MobileGrid.tsx","junk/junkList.tsx","junk/junkShow.tsx","junk/index.ts","sent/MobileGrid.tsx","sent/sentList.tsx","sent/sentShow.tsx","sent/index.ts","trash/MobileGrid.tsx","trash/trashList.tsx","trash/trashShow.tsx","trash/index.ts","projects/MobileGrid.tsx","components/dropDown.tsx","projects/projectList.tsx","projects/projectShow.tsx","projects/index.ts","asset/MobileGrid.tsx","asset/assetList.tsx","asset/assetShow.tsx","asset/assetCreate.tsx","asset/index.ts","settings/email.tsx","settings/wallet.tsx","settings/settingsShow.tsx","settings/index.ts","nft/utils.ts","nft/modal.tsx","nft/page.tsx","nft/content.tsx","nft/nftList.tsx","nft/nftShow.tsx","nft/index.ts","fakeServer/index.ts","dataProvider/index.ts","components/GetEmail.tsx","App.tsx","assets/red/back.png","assets/red/up.png","assets/red/logo.png","assets/red/login-bg.jpg","assets/red/login-logo.png","assets/red/sub-title.png","assets/red/compose.png","assets/red/compose-hover.png","assets/red/inbox.png","assets/red/inbox-hover.png","assets/red/junk.png","assets/red/junk-hover.png","assets/red/sent.png","assets/red/sent-hover.png","assets/red/subscription.png","assets/red/subscription-hover.png","assets/red/assets.png","assets/red/assets-hover.png","assets/red/trash.png","assets/red/trash-hover.png","assets/red/nft.png","assets/red/nft-hover.png","assets/red/settings.png","assets/red/settings-hover.png","assets/red/search.png","assets/red/prev.png","assets/red/prev-hover.png","assets/red/circles.png","dashboard/welcome_illustration.svg","assets/red/empty.png","assets/red/ava.png","assets/red/photo.png","assets/red/image.png","assets/red/ok.png","assets/red/1.png","assets/red/2.png","assets/red/3.png","assets/red/4.png","assets/red/5.png","assets/red/7.png","assets/red/8.png","assets/red/nft-email.png","assets/red/nft-date.png","assets/red/d.png","assets/red/dbg.jpg","assets/test/test2.png","index.tsx"],"names":["baseUrl","devBaseUrl","emailHost","IdParamNams","productJsonSever","jsonServerProvider","fetch","resource","name","params","includes","Error","args","id","data","module","exports","apiUrl","httpClient","fetchUtils","fetchJson","getList","pagination","page","perPage","sort","field","order","query","flattenObject","filter","_sort","_order","_start","_end","url","stringify","then","headers","json","code","msg","success","has","total","parseInt","get","split","pop","getOne","getMany","ids","getManyReference","target","update","method","body","JSON","updateMany","Promise","all","map","responses","create","delete","deleteMany","Storage","getAll","storages","i","localStorage","length","key","_get","value","set","setItem","remove","removeItem","setWidthTime","time","Date","getTime","getItem","parse","authProvider","login","username","resolve","reject","logout","checkError","checkAuth","getPermissions","getIdentity","email","identity","fullName","substr","avatar","changeEmail","type","payload","themeReducer","previousState","action","emailReducer","useStyles","makeStyles","root","minHeight","padding","marginBottom","marginLeft","background","borderRadius","display","alignItems","justifyContent","right","title","flex","textOverflow","whiteSpace","overflow","fontSize","color","marginRight","width","height","back","backgroundSize","cursor","user","search","lineHeight","backgroundColor","boxSizing","border","outline","spacer","ConfigurationMenu","forwardRef","props","ref","translate","useTranslate","MenuItemLink","to","primaryText","leftIcon","onClick","sidebarIsOpen","CustomUserMenu","UserMenu","className","classes","Search","defaultValue","pathname","React","setValue","displayedFilters","status","q","sPrams","Object","keys","reduce","s","encodeURIComponent","placeholder","onChange","e","Button","component","Link","CustomAppBar","useSelector","state","router","location","searchQValue","oFilter","decodeURIComponent","error","needSearch","backToPrev","window","history","test","Typography","variant","theme","icon","backgroundImage","up","transition","transformOrigin","menuItemDown","transform","paddingLeft","sidebarIsClosed","SubMenu","handleToggle","isOpen","children","dense","admin","ui","sidebarOpen","header","MenuItem","button","ListItemIcon","clsx","Tooltip","placement","Collapse","in","timeout","unmountOnExit","List","disablePadding","logo","Logo","CustomerLogoField","p","Menus","smart_count","exact","position","overflowY","left","top","bottom","menus","marginTop","useMenuListStyles","MenuList","parentName","useState","opened","setOpened","_name","onToggleOpen","MenuWrapper","darkTheme","palette","primary","main","secondary","overrides","MuiAppBar","colorSecondary","MuiButtonBase","content","opacity","disableRipple","lightTheme","light","dark","contrastText","default","shape","RaMenuItemLink","borderLeft","active","MuiPaper","elevation1","boxShadow","backgroundClip","MuiButton","contained","MuiLinearProgress","colorPrimary","barColorPrimary","MuiFilledInput","MuiSnackbarContent","RaPaginationBottonHover","borderColor","menuItemHovers","composeHover","inboxHover","junkHover","sentHover","subscriptionHover","assetsHover","trashHover","nftHover","settingsHover","redTheme","MuiContainer","loginBg","loginLogo","subTitle","RaLayout","appFrame","margin","RaSidebar","paper","MuiMenuItem","minWidth","MuiListItemIcon","compose","inbox","junk","sent","subscription","assets","trash","nft","settings","RaUserMenu","userButton","RaList","bulkActionsDisplayed","RaBulkActionsToolbar","toolbar","fontWeight","topToolbar","MuiCard","MuiTabs","indicator","MuiTableRow","RaDatagrid","table","rowEven","MuiTable","MuiTableCell","head","paddingCheckbox","MuiTablePagination","MuiTableSortLabel","down3","RaPaginationActions","actions","textAlign","prev","prevHover","textIndent","fontFamily","currentPageButton","hellip","circles","RaFormInput","input","flexDirection","MuiFormControl","paddingRight","fill","stroke","useSidebarStyles","drawerPaper","CustomSidebar","Sidebar","Layout","appBar","AppBar","sidebar","menu","Menu","backgroundRepeat","card","description","Form","withTypes","Login","loading","setLoading","dispatch","useNotify","useDispatch","useLocation","setIsAuthenticated","redirect","useRedirect","handleConnect","a","sIdentity","res","replace","catch","console","log","Container","maxWidth","onSubmit","auth","render","handleSubmit","Card","disabled","fullWidth","CircularProgress","size","thickness","Notification","LoginWithTheme","ThemeProvider","createTheme","spacing","media","publishArticleImage","breakpoints","down","flexWrap","Welcome","Box","gutterBottom","styles","flexColumn","leftCol","rightCol","singleCol","Dashboard","style","label","Configuration","locale","useLocale","setLocale","useSetLocale","Title","CardContent","changeTheme","chip","SegmentsField","record","groups","segmentId","segment","segments","find","Chip","defaultProps","addLabel","source","SegmentInput","SelectInput","choices","FullNameField","first_name","last_name","memo","CustomerLinkField","ColoredNumberField","NumberField","AvatarField","Avatar","src","cardTitleContent","cardContent","typography","body1","MobileGrid","basePath","CardHeader","EditButton","DateField","nb_commands","options","currency","withStyles","Aside","FilterLiveSearch","FilterList","FilterListItem","last_seen_gte","endOfYesterday","toISOString","last_seen_lte","undefined","startOfWeek","subWeeks","startOfMonth","subMonths","nb_commands_gte","nb_commands_lte","has_newsletter","VisitorFilter","Filter","SearchInput","alwaysOn","DateInput","NullableBooleanInput","hiddenOnSmallScreens","VisitorList","isXsmall","useMediaQuery","isSmall","filters","aside","VisitorListAside","Datagrid","optimized","rowClick","showTime","BooleanField","cellClassName","headerClassName","address","zipcode","city","comment","password","confirm_password","validatePasswords","errors","requiredValidate","required","SectionTitle","Separator","pt","VisitorCreate","SimpleForm","validate","TextInput","autoFocus","formClassName","validation","multiline","helperText","PasswordInput","basket","NbItemsField","FunctionField","CustomerReferenceField","ReferenceField","reference","AddressField","stateAbbr","useListStyles","cardContentRow","OrderFilter","ReferenceInput","AutocompleteInput","optionText","choice","useDatagridStyles","tabs","TabbedDatagrid","listContext","useListContext","filterValues","setFilters","isXSmall","ordered","setOrdered","delivered","setDelivered","cancelled","setCancelled","totals","useGetList","useGetTotals","useEffect","handleChange","useCallback","event","selectedIds","Tabs","centered","indicatorColor","Tab","Divider","ListContextProvider","link","OrderList","filterDefaultValues","rightAlignedCell","Basket","useQueryWithStore","item","product_id","productId","resources","products","r","next","loaded","Table","TableHead","TableRow","TableCell","TableBody","price","toLocaleString","quantity","container","boldCell","Totals","total_ex_taxes","delivery_fees","tax_rate","taxes","classnames","OrderTitle","CustomerDetails","RouterLink","textDecoration","href","CustomerAddress","useEditStyles","Spacer","m","OrderForm","FormWithRedirect","formProps","Grid","xs","sm","md","Labeled","mt","BooleanInput","row","undoable","invalid","saving","list","edit","Edit","OrderIcon","noSelection","BulkAcceptButton","notify","refresh","useRefresh","unselectAll","useUnselectAll","useUpdateMany","CRUD_UPDATE_MANY","onSuccess","onFailure","approve","BulkRejectButton","inline","ReviewListMobile","Number","linkToRecord","ListItem","ListItemAvatar","ListItemText","secondaryTypographyProps","noWrap","hasBulkActions","ProductReferenceField","large","small","StarRatingField","Array","rating","_","rowStyle","selectedRow","useTheme","selected","borderLeftColor","green","borderLeftWidth","borderLeftStyle","orange","red","headerRow","headerCell","rowCell","ReviewListDesktop","useFilterStyles","ReviewFilter","AcceptButton","redirectTo","useUpdate","RejectButton","ReviewEditToolbar","handleSubmitWithRedirect","SaveButton","submitOnEnter","DeleteButton","paddingTop","form","inlineField","ReviewEdit","onCancel","controllerProps","useEditController","IconButton","EditContextProvider","save","version","rowsMax","ReviewsBulkActionButtons","flexGrow","transitions","duration","enteringScreen","listWithDrawer","zIndex","ReviewList","useHistory","handleClose","push","path","match","isMatch","bulkActionButtons","Drawer","open","anchor","onClose","ReviewIcon","useAsideStyles","useEventStyles","stepper","EventList","customer_id","orders","orderIds","reviews","reviewIds","events","mixOrdersAndReviews","mb","mr","Stepper","orientation","Step","expanded","completed","StepLabel","StepIconComponent","Component","review","date","weekday","year","month","day","hour","minute","StepContent","eventsFromOrders","eventsFromReviews","concat","e1","e2","Order","useReviewStyles","clamp","Review","SegmentsInput","addField","rest","SelectArrayInput","VisitorTitle","VisitorForm","lg","ml","VisitorIcon","LinkToRelatedCustomers","visitors","Segments","customEnglishMessages","englishMessages","pos","configuration","language","dashboard","monthly_revenue","month_history","new_orders","pending_reviews","all_reviews","new_customers","all_customers","pending_orders","items","welcome","subtitle","ra_button","demo_button","sales","catalog","customers","more","nfts","fields","commands","first_seen","last_seen","total_spent","last_visited","today","this_week","last_week","this_month","last_month","earlier","has_ordered","group","fieldGroups","stats","change_password","password_mismatch","amount","delivery","sum","unit_price","date_gte","date_lte","nb_items","total_gte","returned","section","customer","shipping_address","invoices","command_id","category_id","height_gte","height_lte","image","stock_lte","stock","thumbnail","width_gte","width_lte","details","categories","no_stock","low_stock","average_stock","enough_stock","best_sellers","average_sellers","low_sellers","never_sold","relative_to_poster","detail","accept","notification","saved_success","created_success","deleted_success","submit_success","submit_failed","moved_success","copyed_success","forwarded_success","approved_success","approved_error","rejected_success","rejected_error","compulsive","collector","ordered_once","regular","returns","reviewer","empty","Empty","propClass","PostPagination","Pagination","rowsPerPageOptions","labelRowsPerPage","limit","btn","hide","drops","BulkDeleteButton","showMore","toggleMore","useResourceContext","useDeleteMany","CRUD_DELETE_MANY","message","moreClick","ev","classList","contains","document","addEventListener","removeEventListener","BulkActionButtons","chunk","ava","project_avatar","project_name","project_amount","total_amm","tab","tableLayout","setPrimary","other","setOther","setSubscription","CustomerProjectField","project","CustomerAmountField","unit","TestList","emailname","confirm","exporter","paddingBottom","borderBottom","info","users","Show","useShowController","subject","from","dangerouslySetInnerHTML","__html","InboxShow","grey","desktopToolbar","mobileToolbar","flexShrink","defaultToolbar","textTransform","valueOrDefault","Toolbar","alwaysEnableSaveButton","pristine","validating","mutationMode","role","Children","count","isValidElement","onSave","withWidth","initialWidth","nolabel","richTextOptions","modules","delay","maxStack","userOnly","InboxCreate","initedValues","setInitedValues","richText","useRef","onSaveInputValue","cached","currentTarget","dm_email_path","dm_from","dm_content","DOMPurify","sanitize","ALLOWED_TAGS","initialValues","NumberInput","InboxList","InboxIcon","show","setJunk","locales","JunkList","JunkShow","JunkIcon","setSent","SentList","SentShow","SentIcon","setTrash","TrashList","TrashShow","TrashIcon","userSelect","DropDown","asset","setAsset","assetText","setAssetText","showDrop","setShowDrop","onSelectDrop","dropClick","closest","setProject","CustomerTotalField","coinname","projectname","useActionsStyles","dropOptions","actionClasses","ProjectList","contentdiv","bold","ProjectShow","SenderField","canister","projecttitle","align","startdate","enddate","ProjectIcon","asset_avatar","CustomerAvatarField","CustomerPriceField","CustomerAssetField","AssetList","AssetShow","AssetCreate","AssetIcon","ok","avaChunk","photo","submit","Email","requestEmail","uploadRef","files","setFiles","useDropzone","onDrop","acceptedFiles","file","assign","preview","URL","createObjectURL","getRootProps","getInputProps","setEmail","avaError","emailError","setEmailError","hasError","setTimeout","reload","current","click","onInput","Wallet","l1","l2","l3","l4","l5","l6","l7","l8","aPath","currentTab","setCurrentTab","replaceState","tags","priceTypes","modal","Modal","visible","setVisible","desc","verticalAlign","dmail","dapper","Page","tag","setTag","onSelectTag","slice","filterTags","setFilterTags","moreTag","setMoreTag","priceSelect","setPriceSelect","placeholderList","setPlaceholderList","onWant","btnText","modalVisible","setModalVisible","isEmail","stopPropagation","index","values","dbg","thumb","visibility","Content","NftList","works","test2","introduction","Sell","creator","dollar","Auction","eth","setEth","pic","factory","dataProviderPromise","getDataProvider","Proxy","defaultDataProvider","dataProvider","convertLegacyDataProvider","toString","useMock","fakeServerFactory","process","REACT_APP_DATA_PROVIDER","provider","GetEmail","i18nProvider","polyglotI18nProvider","messages","compontents","projects","App","Admin","dataProviderFactory","customReducers","customRoutes","loginPage","layout","disableTelemetry","Resource","ReactDOM","getElementById"],"mappings":"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","file":"static/js/main.ea4b28bf.chunk.js","sourcesContent":["// import jsonServerProvider from 'ra-data-json-server';\nimport jsonServerProvider from './jsonServer';\n\nexport const baseUrl = 'https://ic.dmail.ai/api/v2'\nexport const devBaseUrl = 'http://localhost:4000'\n\nexport const emailHost = '@ic.dmail.ai'\n\n// /node_modules/ra-data-json-server/src/index.ts. \nconst IdParamNams = ['getOne', 'update', 'delete']\nconst productJsonSever = jsonServerProvider(baseUrl)\n// name: getList/getOne...\nexport const fetch = (resource: string, name: string, params: any) => {\n if (IdParamNams.includes(name) && !['string', 'number'].includes(typeof params)) {\n throw new Error('The fetch params must be string or number');\n }\n\n const args = IdParamNams.includes(name) ? { id: params } : { data: params }\n return productJsonSever[name](`${resource}/${name}`, args)\n}","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAcCAYAAAAjmez3AAAAAXNSR0IArs4c6QAAA7lJREFUWEfN132IFGUcB/Dvd3wj+qMMIghK0X8iK7BL5ExTupk5zVIR9uXEDolSU1IRKQ4lOk6OwD9KKEMlRK5knz1BS2VpnxXCyMQoxAsxCKSENER8wTC1m1/MzF7snfPM3u7O6c1/w/P2/cwz83t2CQCybOFE9N8qAXzevwd4Gp73EntL18L70XVJ2tkOYl051T8AlzKAZJzdAN4cEvcsnpo1jZ2d3mhiSNrdBsqmIZkuDUD+APBEROATVLp5tEAk7W4BpSsqTxni7gDkbUPgY1R67v3GSNrtAKXbkOOvELJk3sOYMO4UgEmRHQVHmNev3i+MpJ3VID4zrm95CwJIgEkteBTWv30AHjNg9jOvU/caI1lnBQR7zOtyOVXxy/8hASY7fzKk/2cAEw0Dd1Lp1fcKI1lnEQRfmdeTNVSlYKcGQQLMspYp6Ld+AfBA9M7IR8yXNo40RtpcB54UYxDvUJU+GWi/CxJg2lqeg2f9CGC8AfMB86XOkcJIqqUZlnU8BtFBVfqwsj0SEmAyLTMA62TMu/kuVXFb0hhpa50Gz/O/1ehsxGbm9F3VywgJC4A9Gxa/i8GsoiruSgojmZenAmN+AvCQoeB0Ma/fj2qLhYQFoHUOxDtmDEu0M6d7GsVIyn4SFv0jILrQCLqZ15tN61SFhBh7IYSHYzCLmdNf14uRVOsjsLwzxtIPbKfSG+LmHxYkwKTd10CJC9tKpWOqTHSM8mHsv05TDD12UJXWVntIw4aEGKcNxD7jpILZzOvvqy060C7+B51xTgN4xjBmD5V+Yzjz1QQJq5ndDnBvTAF4lqron0NVL8k4PnqWoWMPlW6vOkm5Q82QEOOuBGSnYZEr8NjE3uK5uBCSdgugzDdUpwPM66XDRfj96oKEGGc9gI8jFyMuA5zOXPF8VLtk3IOALDYEPUSlF9WCaAgSYLL2JgijD0XBBdy+8zQPfnu1MpRk7BzAjCFogUq/UiuiYUiIcd6DYNDPhYogv8GTFwb+MkvW3QWRtwxBj1Jpux5EIpDyznRBuMUQog/ejZmwHtwIcKuhz3Eq/WK9iMQg5Z3phqDDEOZPAI8bvqeTzOmZjSAShYQFwP4U4JoaQvXh+tgZLBRu1TDG8DwanWHI+CrfQUVv+RXe39PZ+8PNJCLUXX7jFpes/TmEcSfyOYwZ38R9R64kgUj81RpcZt29gESdzL/jttfEA0cvJ4UYUUi5APRAsLwi8Hl4Y5vYW7iUJGLEIWXM6xA2A3IR46zd/OKbC0kj/Pn+A4puPJb1iWa3AAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIQAAACECAYAAABRRIOnAAAAAXNSR0IArs4c6QAAG25JREFUeF7tnYeTFOUWxS85w4LkJErOGAgKCJIzLCCmUqv8M61SS+pZikiSHGUDsIDAkmFZdl/9br8D93XNAob3prunp2pqdoeeZra/85177rn3+7pbZ2fnBTOrs/JRXgGz1m6dnZ2PzKxPeTXKK2BmjwHEUzPrXl6O8gqYWQeAuGlmQ8vLUV4BM7tVAqLEQbwCJSBKPPzXFSgBUQKiBESJga6vQMkQJTpKhigxUDJEiYFXvAJlyHjFC1Urh5WAqJWRfsW/swSELlRHR4c9ffrUunXrZt27d/dnDT5KQDDoAOHu3bt2584dB8TAgQNt0KBB1rNnz1rDRAkIRvz+/ft24cIFa2hosPb2dhs7dqy9+eabNnToUOvRo0ctgaIEBKHi6tWrtn//fjt06JCDY+LEibZ48WKbMWOGM0UNPUpAPHnyxM6dO2ffffed/fTTT3bjxg0bNWqUrVy50latWmXjx4+vJT1R24Do7Ox03fDbb7/Z999/b/v27bPLly9bnz59bMmSJbZ792579913rW/fvrVCErUNCNjh0qVLHioAw5EjR6yxsdEePXpkU6ZMsfr6etu8ebNrihrRErULCNjh1q1bdv78eTt27JidPHnSzpw5YxcvXvSwMXjwYPvggw9s165dtmjRItcSZCAFf9QuIB4+fOhsIBA0NzdbU1OT/f777x42SEWnTZtmGzdutO3bt3vWUQNpaG0CgtTy2rVrdurUKQfFH3/8YTdv3vRsA4Yg/bx9+7annWQbn3zyibNFDWQctQcIQkVra6tnFrADYIAtHjx44KECMMASgAPdADOgIxCY6IqCs0TtAYKBhxXQDIQIwABI2tranCX4N0wqwgbvDRs2zN555x376KOPbPXq1f57gbVEbQECXUCokICEKXjABGQcaUAAHlJQjCo8CUAxd+5cf6+gj9oBBCxw7949DxVkFVeuXHGbmhDQq1cvZwPCBwyBjiBk4FryOTIOXMsdO3Y8S0MLyhK1AwgGHBAcPXrUzp496+AADMx2Xh8/fuzsgYYAFOgJGALQwCCvvfaam1VffvmlLVy4sKhmVW0AgllO1nD69Gl3JdEHvNe/f3/r16+fW9NoiZaWlmeAIJxgUBFmePbu3dtef/1127lzpz/HjRtXRLOqNgCBPkBAAgbYAXAQJihzCxCEBxiEcMGxWNqwBmCAJXiQdmJlf/31156ODhgwoGhSoviAUL0CIQkgGHTCB/UJAQI9QAgRIAgZ9EcABj4fQTFmzBi3tD/++GNnjII10hQfEMxyXEjAgKBUEwyAYIajIboCBGDQAxDxhFFmz55tX3zxha1Zs8aGDBlSJJYoNiAYUMThiRMn7Pjx4y4aoX/0AIDgyc8cR8hAQ2BKwRAwBu/DAACGsIPO4IGD+eGHH9rnn39u8+bNK1IaWmxAwA4Ur6hikj2QNTC4sIIAQQZBkwyAkHWNjgAQ8igABUASS3COyZMnu3uJizlhwoSihI7iAoK4zwCTZpJdYDox8Eo1AQVPAMGxAAAGgSEECAaef+czcjMBBUAj3CAsP/30U3v//ffdqyiAN1FMQEhIUqvAhJINzUwnuyBM8GSgeQ+gwB4ACNs6AoLjOY7BBjiAgdABY5B6whCITCqjBWikKSYgGDBSR9gh0j8DK2dSPzPQAILPwBCEmAgIHa/QIi0BgADAnDlz3JegzkEGkvPiV/EAoXoFQlKhgvcYUGa7QgDMwM9iiFcBhFJQDCuO57x1dXW2fPlyr3PgUeS8kaZ4gCCtJL0EEPgKDB4swMwFAAKBFuPwykC/CBD6rNiEcKHQwWffeOMNDxswRc4FZrEAgeCjR5JQQVaBuUQ4iKzAoEosChSVAEHWwUOhJfZUck6FDgCHwKTOgcBcsWKFW+I5fRQHEAwS9QeFiuvXr7vwi+wgV1HL9cQWXQEiZhkCBO9xPOcGDAIO7fqbNm1yB5NGmpw25RYHEAwOhhKOZPQc0uzAzP27gOAcAFBhg1cJTABB5pFTB7MYgEDc4UhSr6BPkr4G3hPdpxfvvgwQeBEysQSoyBAKB4SNmIbSTUUjzVdffeXZB6ltzh75BwT0zeAxiGgHNAQ0Ls9BXoNMI45/GSDwIjinMhGJyji4UWAiSBU6aKTBwdy2bZv7FDkzq/IPCGYpNQhqFZS20REMehSDEpIMqApWMeOIPgRgqASIdFVT5+SzhCsELK/q1P7ss8+8UztnJfJ8A0KOJH4DgMCRBCCAAbpm0CuBAWAwwNGpZJbLqVTIiAzRFSA4F9kN1rdYRQ4megIHM0cCM9+AYHbiSFK8wmFklvLAgOKZHkSxg0JGGhCqZcAQhABlKDouHTIUDpRxAAjAQY3krbfe8jR0/fr1bl7l5JFvQGBCwQw8STNhh6gdYvwWGFTSFkMwe5V2cg6FDGZ8TDsrNcLEsKGiF2EDgLCCfN26dUbomDlzZl5K5PkFBBedmgPswGs6K1Afg2ZmbHbRzJeVzTFyKgkXgAK24TMxbY3n0HkFilj44lyELHolWBsKMKhz5KC7Kp+A0OorPAdSTUrbaqmPYrESTWsAVfXklYf6IQg9gCINCBlSaVBElpClzbn4eeTIkbZ06VLPOiiV07KX8Uc+AQEbMIsBBGlmpXpFOs3U79IPzGD1Q6BFAACiVFsLKWQoW1GGAiAiKBSC+HdYQpY2LAEj0HeJgwkoaKrJeDU0f4AgVjNweA6VqF12dCUBqNksnQE78J6W8dF7CTtQFGNAOZf6JsQQgCemr3I+9Z5CB6AFqDiYCxYscEt77dq1Nnz48Cx7E/kCBIOBC4kbSc0Cd5IZqSaWtAmlwRIrxMFTlRNqhw1IOQEEjMN5Y++lMpYoTLuifo7hOwEIQgc/jx492h1MVpGTfdCom9FHvgDBBaa0DTuQbjIDGVhmsQYt5vxiBL0yWICKZ4z3aBDMLZiBTEP9lMxuKpcKLfF8aZaIYIMlYBjOwytAnT59ugtM9ppgrWhGHcz8AIIBZNDQDbTGyZGM4lBGVJx9yjZUoaT2oColuoHzsJMMrAAw+F3d1QCC2QwoZHSpnS4dktKhgzAEgHnyM14EApOlgLxmlCXyAQgGk8EDCLCDeiRlQMX+yDQVixU0QKzaAgCcj8GC2rU/BO/JcdSaTkChLm1eBQwVzCqFI75DZCDVOWikgSVopkFsZrD4lQ9AaHMwLdTFkGJAGCyBQgZTzAKk+hl0gCAW4GeYQuEjZgcAgicA4iEfQkwkgKTb8SqFJ84B2AAar7TXwQ5oCTq1qY5mzJvIPiBivYIOasIGABGdx0qkFuYyO3kyMwEPjEA4AAiyl2PVk8GU/SxAaKFvbLUTOJSypsOVjo1d2ip8yVaHGbZs2eLtduiKjO01kW1AMGhaioc9raITA0MMFn13pQ8AApoAUDBDmbFarxmtawFCs1mVSxgkhgQYIwJEgFAoiV3dSmkjMDk/5tT8+fNtz549vhQQ8ypDAjPbgGBAoHnSTCqaDDCDr0U2XEiOYaCZ+Qw8AOAJG0jlwygcl+6FiAUwpYqcgyfn1PGVaiIKEerm5lx8rxha5IKqGiqWAAS07dOpnbE0NNuA4EJiJaMd8AjkOcTZJyAAHAADEAgVWsofgaDZXqmszbn5HJ8XIMQI0fWs5EWINaRneFVIg8XUbyFtAnAoeLEjDdVQ0lCBp8r+RLYBQdwHDDCE2EEijAFnxillhBW44AyswoIAEIEQ3crYdS2GiICIn08DodLvHB9FqFJW3uP86AmefHbEiBG2bNkyBwUd2zTWZCB0ZBcQXEDtMqvV2MRjDZzAABAiI8RZLSZI64B4jCzpNCC0SUjajEobUspq0kykUKLwxnfRYmH+LzqpEJXY2dQ6+DkDSwGzB4goJGEHhCThgEFX7yJgkI+g0KAik8wpGVJxlsfBjAMt51LpKedm0HROHVuJziMg9O9iDwFS+1jxPqDg3Dxgibfffts2bNjg7XaEDkBRRabIHiC02Obw4cPGk9qCYq9cRoDBz8xiFZtE/ypuxYsaresoFKM24Fx/BRARBF2FkbjyS6FDtRJWegEGWII9tembqKKeyB4g0AQww969e+3gwYPuSspKjjFfsz1mDvr3tI2s32PZOjKE0ta/A4hKoURgke7Rii/AoO8CI9BIQ5c2ApPdaapoa2cLEFwkqpm//vqrffvtt/bLL794N5Ta6rlQ0SnUhU6HhTR1d6Xc03WOvwqIShQf2YKfo2kWvw9ZCBkHZhUbrZOGVnEpYPYAQcpHafvHH3/0O9zws/oluXiAgqdy/qgZ0kCIjJAGxT/JEJU0hmoouttfDG/6Lvw9dGiz7yW+BLY2ywCr6F5mCxBcKDQE3c+ssaCyyc1N+Jn31DcZd4GJZW/1OMRw8qK8/p9kiLROiUBQGqzvwrFshDp16lRnBPbSJmxQ/CL9rGJ9I3uAUKUQpU/TChVOgKF9okgzAQ0XNRpBKjalXcUXscTfBYRS1sgQCg+Ix6gVBAa+p27ytnz5Mps7d55XPil0qe+iiuZUNgGhC8LMQj+QaSAwuXMeJhWNLNqHWqmdmmTSayhi9TNe6FcJGRKjlUJCZIQYqgCB9IIyIPkeeA+s+cR7oIMK7UCfRK9evS0jN+vJHiA0o+NM11J/OqwPHDjgjIHYRIACjLhDjIARm2Uq2c0vA4TK39HPiNlLBITCgzY4jUBQIY7tAvAcyCTYQ4LfY3dX/I5lyPjPFNOFjYaQBoRD8B5gC1gCj0LAIFVVGNGGYrzGNDU9oysZUyqXE64iIOIApcODUlYxQwQ0IYAFO6SS7733nm89hFZAJ0jnJGwCq7CXBcsLk22PqgSKbDFErFwyINC/Uk3NJm0hiJ1NGIExYhjRjjEChtZpxIucrmLKqawEiPTgSDfE5hq+k6xrhQcGnXWdmE00wyAeMaG0cy4AQg/dvXvH2tufeCl/4MBB/qy0DPH/pCuyBQhlGVjVhAN5/gguNuBQlVPHkY4iOgGGshHeg0mYYQJFFJ9p70IaQy12pL0qkvH/KPRo5sfwoOwhClf6HRh4MgcYgY3IJk2a5N9foKbAlbT8X/DKKt4KDuXYseNcXFaxtS57gOCCU+Wkq5pUk9+5mFww6BfGkL7g37i4uJlkIfHem9IWAEC9Cun9KRWOxEwAQX2VaQ0RGUHZQwQC/wdrLliDgUaAFShYwRSxMRcAnDlz2kPelSuXPUSQdUyfPsOBU+W2uuwBglmppfm03DPYDACFIC4Ys49dY2OMZaZq9zmAAVvQUMMs1K72AoWczri7jBhHIQNgwDJxwGPmEN9n1jPobBTCcj2xAk0wEQh8BoDDZphuFy6cs169etrkyVNt/vwFrjO4YWwVXUouQzYBwcVjcFT+hi0AABcMJ4+8ndmYLgIxaAhMNAXaQmkqA6E1HAKENkBXG166Y0r7UIoZYuagbIPB47sQHmAFnEbu4pemfM4NOGGwb775xkFh1mGzZ8/xzy1evMQmTXrDBg4cUO29JLIJCC64QgeNtRS7aK5lxhE6cPQYCFZE0cmc3pCDwdcaDuoh0DPL/hBxgAZwIe50R53Y1aQ2PFxRicW0f6HvQW8k2QPhAX8h7TJqVRhO688//2w//PCDHTjwq38PPIh16zZ4X+WsWYkfUaXMIv552QUE35KZhQkFKGiy1b00YQdqAICCfJ7fmflpYDC4+BUAgoIZ4UR7UKFD1LzCK6xEmOAzdE2psynazdIJs2bNchDQ6cTPMFdkK4Ak4cj33r//F9u372c7fvyE6yM0w8aNm2zLlq2efQwf/lq1mUF/ZrYBwSBxYbVLjNZzMpOYUYCBJwMCW6AtlNZFt5PMg88SQtAXhCKxhdJELb9TIw6/6wHQYCI0DDqB/gXCxPjxE6x//+cil+/78OEju379ml28+LudOHHcDh485M+zZ8/YvXv3bdiwOlu1arXt2rXbli5dbqNHj7KePXv8n7LKl/432QaEzBtEHrTLTEdoMpgSc4hNsg+BgqIRqV+csYQfzsH+lSqYcR7CCmygTqzYkymgwDycn5BADyQ6QZZzpHjCA/oFRiIVPnXqpIMQPdPQ0OiFuX79+jqg9uz5yNauXWcTJ75ezWaYSujIPiCkJ/AldGccBpaZTCynPkDsBggoe5iCV94jRdV+DMxeQhDnAQxQOVY4bAEDkc1E1kBXEIoQibABYMB6Bnix97Gjg3ttJHfjAbR8R9gAzZJsLdDiLNe7dy83qurrt1t9PYt0ZlazEaYrqsgHIJQWoicYSDmTMqAYIMIFfgV5PAMp5gAoUfXLu2AAOY8qqZxXK8o5H+ktngIzetGihTZlylQ/v1gBgLW1PX62c92ZM2cdEMltoi+59gF8Dx4kq78nTpxgq1Z9aLt37/KsYvDgumr2TuYfEPInoGQGj5mt/SGUNWj5PvGewVMo4TWdjSiMwBakgcpEABnsglhENFJ7gHGiS9rRQWcXG5Sdd5MJIIgN0CuEjjt3WB/CLZ26u07gXFu3bvFGmLFjx2cRDNn1IbqCL7OSLIABABTReJIjyWyUCQVrKCMhK4E10t1IOJLURWALMhCZYOgEGljSrfF37tx1Jjl58oSLxvPnz3q4uXHj5n9Wjj90vfD4cbL+YsiQOvcb6KzeuHGDu5e4kxl95CdkxKxBu8gg3jCdEIUqWKnCySvgwGuALdAWhAGyEtgiVlHRFlrfAXOgSwg1UX/AHKS9J06cdF8EZmhubnAgPHyY7E/Z1vbEn1pZPmBAfxeOy5evsE2bNnoIyvi9ufIHCOkJNAACjpgNRWutQyxPM7hiDkAAQyAKefIzYKm0yYjAJyF669ZNO3fuvPsIR49y/8+znlrev3/P2tsTo8uMRlrWmQKIpFI7duwYF6Tr129wA2v48BFZSjHzm2Wkv7n8CekJKJyUEQAACBlUsp05XqV02AIwwBgAAxGq2z3H/4fPogMIJwAPc+zUqdPW1NRoN2/ecBeT/wv6F5MAymSFeYcNGjTQ5syZ63tUrly50s2oKlYxXzVC5ZMh5E/ADBSxSB8JHWqSiT0MKlcLLAIGxhaAIIwkptYQn73KQghLye2hDzszJB1aN+zBg/t+TKJTuLMf7W/JjV7RDerj4LyrV6/x1voZM2Ya4aOKK7KKDwj+QgQgQpAZLMMKNtCC27hAJt3exmDW1Q11WsdxHD16jPXp09f1ACIR0XjkyGH3FEgh79whPLRb9+7dfKZzLOfg/0hWjrM10YNnQpKsgq2DaLGvckn7VcGQvyyj0l9GqCDlg9IJHQhMdWTHTUe1bZB2l6GplQyCEEJsT1Zf9/B0Eo1ABoEBhn5AE/DQLvvJmpBkt/3E8n7gnU/Y1oQfGGH79m3eTDtu3PisuZEvAkh+Q0bMOlTyhuLxAaBtBiu9GZlYQgt5dQzAYKYzy5ubm5wVeMWBhHG0CUjSYMNO+zBDAoak04p9qbjhW6dnFeiG+vodNm3a9Cy6kcUGBH+dqqK4jipc8T4DGRthtGYi7h9hxk3Vkjv7okPQCg0NF+327Va/cIQG0lBmPg0tavNPMgp2ruFuOnc91cRzWLLkfb8twpIliz29zdkj/wwhgUmoiA01cf/ruIgndjslDbMJoFpbb9mlS80OiGSBcVJ/0KYfySIa0stuPsZ8RpuTPnrE7vfsCjPLduyot61bt9rIkSPyICLTeC0GIAQKzCXCBk816SapYXITV5lW8iqg/SRDaHNAXL4MIBrs8uUWn/EAiQqlei04Vt3VCTuwMekDv6iklVQw6+t32YwZubqLTgRFcQChrAM3UbUOSttJZvD8ts5qy0/AkYDk6dMn3nvZ0nLZS9WXLj3f/JxMIu52J3EKYHgCDLIIyuI7duz0Yhg9Ejl9FAsQDIJuBK+sQ4aVrGylpBEYlLApp+M+YkQ1NyeblMAIcR/tpMLZ5kBI9rFs95Ayd+5c27JlmxtQo0aN9tQ0p4/iAUIFMPQETKH7fyttTIRhIjYT27q7AQhSxxs3/vDUtbGx6dn9u2KmgpDEfAJ0yV1zevk9MLCm161b7z/nwI0sfpaR/gsJE/Quxts+IwJVCdUgJ23yhAwB4vozQGhHfGUpsIV2u0VEcj7K4vQ4bN263ebMmed2dQ7cyNoDhPQE5XEqk7iYlM2fW86JsQRTEErEEJhS1CqS2khyM3iJUYULQgUilFCxaNFi27lzlxeucuRG1iYgpCcAA/4E2kC3PVK3NakiAw4gyBgwtTCkmpqan203oELZkyftHi5gBkA0deoUBwOhgiV4GWqU/TvypXgaIl4Nre3QHXi0cboaaBKzqZe7kYmoTO6qg6jkdy3Oec4OrBnt5p1YrKegc5oVWznXDcVNOytNDbIC3Qqahhq0BQOshTrqoAIA164lgGDNZdKBnewWh3ZI9r42b/+nYMVN1Shg5eBOe3+GMYrNEDKssKVxINET/92xze2Tko1CE+s6AQR+BNVNQKDdcwEGDTUsyqWKiQk1YkSmb6j2Z4CgY4sPCP7SuOaTzAPzCt3Qt2+yzSGagMwBdxNAqCU/EZDJ3tmEBXoc1qxZ67vYs5wwA0vv/sqg166ojH85ZhKeRJJ1JPcJRzAmpeyeLhjp4qa/AlAQWnRXPY6DDRYuXGR79nzsoaKKWwf+0yCoLQ2hv1bCkY7tY8cwrFp8XUXiTfS09vY2781sarrkqScZB6kqD3omKFyxFpNmWURlQR+1ETIiKChxnzx5ys6ePefNL9jPPXpQ4GKLn1ueYaA3WlrY6Y7ld/189RaaYft2ehym5qnh5c/itrYAwdVBKBISAEVjY4M3tsiBTACRbPVDZtLe3uHbDyxbttw9B7KLAriRpYZIexNkFLiRLL9j2R3NMK2tt719jnCh1jnWUMyf/5bf5ISGWUJFAYVkbWqI+FeTNQAK3Eu8CUIEBa3EpWy0a9davIuKFjgKV5s3b7HJk6dk/UbufzY8VDq+9kKGrgIuJJkGWuLIkd98AY56KWmJY+0G5WwKVwsWVHWH+n9ioF/1HLULCPkTV69qI7B/2eHDh1xMEhZYj7lt21ZbsWKld2XnvIpZAuJVrwCZBGsw9u79we/PgTlFsyydT3RPswq8QLWKl12W2mYIrk6y2KfZ94E6fPiIL98bMWKUr8lk/6caEJKlqIxXAPFI7yV7PZBdYFcPGzbcu5/YQqCKtzt62Wz+X/x7yRDyJlpbb3rqSQYyYMBA3w6g0iLg/8UoZOicJSAYDPU70AnV2cmNWXq6bii451CmnS+aiYBCm45wXI1kFelLUjJEhug6C1+lBEQWRiFD36EERIYGIwtfpQREFkYhQ9+hBESGBiMLX6UERBZGIUPfoQREhgYjC1+lBEQWRiFD36EERIYGIwtfxQHBnULYK6d8lFegA0A8Ym+t8lqUV4CbJwOIC2ZWV16O8gqYWeu/AYpcjCsT0/uIAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/media/nft-dapper.71564c12.png\";","module.exports = \"data:image/png;base64,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\"","import { stringify } from 'query-string';\nimport { fetchUtils, DataProvider } from 'ra-core';\n\n/**\n * Maps react-admin queries to a json-server powered REST API\n * @from https://github.com/marmelab/react-admin/tree/master/packages/ra-data-json-server\n * @see https://github.com/typicode/json-server\n *\n * @example\n *\n * getList => GET http://my.api.url/posts?_sort=title&_order=ASC&_start=0&_end=24\n * getOne => GET http://my.api.url/posts/123\n * getManyReference => GET http://my.api.url/posts?author_id=345\n * getMany => GET http://my.api.url/posts?id=123&id=456&id=789\n * create => POST http://my.api.url/posts/123\n * update => PUT http://my.api.url/posts/123\n * updateMany => PUT http://my.api.url/posts/123, PUT http://my.api.url/posts/456, PUT http://my.api.url/posts/789\n * delete => DELETE http://my.api.url/posts/123\n *\n * @example\n *\n * import * as React from \"react\";\n * import { Admin, Resource } from 'react-admin';\n * import jsonServerProvider from 'ra-data-json-server';\n *\n * import { PostList } from './posts';\n *\n * const App = () => (\n * \n * \n * \n * );\n *\n * export default App;\n */\nexport default (apiUrl, httpClient = fetchUtils.fetchJson): DataProvider => ({\n getList: (resource, params) => {\n const { page, perPage } = params.pagination;\n const { field, order } = params.sort;\n const query = {\n ...fetchUtils.flattenObject(params.filter),\n _sort: field,\n _order: order,\n _start: (page - 1) * perPage,\n _end: page * perPage,\n };\n const url = `${apiUrl}/${resource}?${stringify(query)}`;\n\n return httpClient(url).then(({ headers, json: { data, code, msg, success } }) => {\n if (!headers.has('x-total-count')) {\n throw new Error(\n 'The X-Total-Count header is missing in the HTTP Response. The jsonServer Data Provider expects responses for lists of resources to contain this header with the total number of results to build the pagination. If you are using CORS, did you declare X-Total-Count in the Access-Control-Expose-Headers header?'\n );\n }\n return {\n code,\n msg,\n success,\n data,\n total: parseInt(\n (headers as any).get('x-total-count').split('/').pop(),\n 10\n ),\n };\n });\n },\n\n getOne: (resource, params) =>\n httpClient(`${apiUrl}/${resource}/${params.id}`).then(({ json }) => ({\n // see getList, json: { data, code, msg, success }\n ...json,\n })),\n\n getMany: (resource, params) => {\n const query = {\n id: params.ids,\n };\n const url = `${apiUrl}/${resource}?${stringify(query)}`;\n return httpClient(url).then(({ json }) => ({ ...json }));\n },\n\n getManyReference: (resource, params) => {\n const { page, perPage } = params.pagination;\n const { field, order } = params.sort;\n const query = {\n ...fetchUtils.flattenObject(params.filter),\n [params.target]: params.id,\n _sort: field,\n _order: order,\n _start: (page - 1) * perPage,\n _end: page * perPage,\n };\n const url = `${apiUrl}/${resource}?${stringify(query)}`;\n\n return httpClient(url).then(({ headers, json }) => {\n if (!headers.has('x-total-count')) {\n throw new Error(\n 'The X-Total-Count header is missing in the HTTP Response. The jsonServer Data Provider expects responses for lists of resources to contain this header with the total number of results to build the pagination. If you are using CORS, did you declare X-Total-Count in the Access-Control-Expose-Headers header?'\n );\n }\n return {\n ...json,\n total: parseInt(\n (headers as any).get('x-total-count').split('/').pop(),\n 10\n ),\n };\n });\n },\n\n update: (resource, params) =>\n httpClient(`${apiUrl}/${resource}/${params.id}`, {\n method: 'PUT',\n body: JSON.stringify(params.data),\n }).then(({ json }) => ({ ...json })),\n\n // json-server doesn't handle filters on UPDATE route, so we fallback to calling UPDATE n times instead\n updateMany: (resource, params) =>\n Promise.all(\n params.ids.map(id =>\n httpClient(`${apiUrl}/${resource}/${id}`, {\n method: 'PUT',\n body: JSON.stringify(params.data),\n })\n )\n ).then(responses => ({ data: responses.map(({ json: { data } }) => data.id) })),\n\n create: (resource, params) =>\n httpClient(`${apiUrl}/${resource}`, {\n method: 'POST',\n body: JSON.stringify(params.data),\n }).then(({ json }) => ({\n data: { ...params.data, ...json, id: json.id || 0 },\n })),\n\n delete: (resource, params) =>\n httpClient(`${apiUrl}/${resource}/${params.id}`, {\n method: 'DELETE',\n }).then(({ json }) => ({ data: json })),\n\n // json-server doesn't handle filters on DELETE route, so we fallback to calling DELETE n times instead\n deleteMany: (resource, params) =>\n Promise.all(\n params.ids.map(id =>\n httpClient(`${apiUrl}/${resource}/${id}`, {\n method: 'DELETE',\n })\n )\n ).then(responses => ({ data: responses.map(({ json: { data } }) => data.id) })),\n});\n","\n// @TODO: \bneed to remove, just use requestEmail\nexport const Identity_Key = 'identity_key';\nexport const Email_Name = 'email_name';\nexport const Username = 'username';\nexport const Create_Mail_Cached = 'create_mail_cached';\n\nexport const Storage = {\n getAll() {\n const storages = {}\n for (var i = 0; i < localStorage.length; i++) {\n var key = localStorage.key(i) as string;\n storages[key] = Storage.get(key)\n }\n return storages\n },\n get(name: string) {\n const data = Storage._get(name)\n return data ? data.value : null\n },\n set(name: string, value: any) {\n localStorage.setItem(name, JSON.stringify({\n value: value || \"\"\n }))\n },\n remove(name: string) {\n localStorage.removeItem(name);\n },\n setWidthTime(name: string, value: any) {\n const time = new Date().getTime()\n localStorage.setItem(name, JSON.stringify({\n time,\n value\n }))\n },\n _get(name: string) {\n const data = localStorage.getItem(name)\n if (data) {\n return JSON.parse(data)\n } else {\n return null\n }\n },\n}","import { AuthProvider, useRedirect } from 'react-admin';\nimport { Storage, Email_Name, Username, Identity_Key } from './utils/storage'\n\nconst authProvider: AuthProvider = {\n login: ({ username }) => {\n // localStorage.setItem('username', username);\n // accept all username/password combinations\n return Storage.get(Username) ? Promise.resolve() : Promise.reject();\n },\n logout: () => {\n Storage.remove(Username);\n return Promise.resolve();\n },\n checkError: () => Promise.resolve(),\n checkAuth: () =>\n // if no Identity in Storage, then to login page\n Storage.get(Identity_Key) || process.env.NODE_ENV === 'development' ? Promise.resolve() : Promise.reject(),\n getPermissions: () => Promise.reject('Unknown method'),\n getIdentity: () => {\n const email = Storage.get(Username);\n const identity = Storage.get(Identity_Key);\n\n return Promise.resolve({\n id: 'user',\n fullName: email || `${identity.substr(0, 11)}...`,\n avatar:\n 'data:image/png;base64,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'\n })\n },\n};\n\nexport default authProvider;\n","import { ThemeName } from '../types';\n\nexport const CHANGE_THEME = 'CHANGE_THEME';\nexport const changeTheme = (theme: ThemeName) => ({\n type: CHANGE_THEME,\n payload: theme,\n});\n\n\nexport const CHANGE_EMAIL = 'CHANGE_EMAIL';\nexport const changeEmail = (email: string) => ({\n type: CHANGE_EMAIL,\n payload: email,\n});","import { Reducer } from 'redux';\nimport { CHANGE_THEME, changeTheme } from './configuration/actions';\nimport { ThemeName } from './types';\n\ntype State = ThemeName;\ntype Action =\n | ReturnType\n | { type: 'OTHER_ACTION'; payload?: any };\n\nconst themeReducer: Reducer = (\n previousState = 'red',\n action\n) => {\n if (action.type === CHANGE_THEME) {\n return action.payload;\n }\n return previousState;\n};\n\nexport default themeReducer;\n","import { Reducer } from 'redux';\nimport { CHANGE_EMAIL, changeEmail } from './configuration/actions';\n\ntype State = string;\ntype Action =\n | ReturnType\n | { type: 'OTHER_ACTION'; payload?: any };\n\nconst emailReducer: Reducer = (\n previousState = '',\n action\n) => {\n if (action.type === CHANGE_EMAIL) {\n return action.payload;\n }\n return previousState;\n};\n\nexport default emailReducer;\n","import * as React from 'react';\nimport { forwardRef } from 'react';\nimport { AppBar, UserMenu, MenuItemLink, useTranslate } from 'react-admin';\nimport Typography from '@material-ui/core/Typography';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useSelector } from 'react-redux';\nimport { AppState } from '../types';\n\nimport Button from '@material-ui/core/Button';\nimport { Link } from 'react-router-dom';\nimport { sidebarWidth } from './utils';\nimport back from '../assets/red/back.png';\n\nconst useStyles = makeStyles({\n root: {\n minHeight: '42px',\n padding: '24px 27px',\n marginBottom: '30px',\n marginLeft: `${sidebarWidth}px`,\n background: '#fff',\n borderRadius: '24px',\n\n \"@media screen and (max-width: 1440px)\": {\n marginBottom: '20px',\n },\n\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n right: {\n display: 'flex',\n alignItems: 'center',\n },\n title: {\n flex: 1,\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n fontSize: '30px',\n color: '#083353',\n display: 'flex',\n alignItems: 'center',\n\n '& span': {\n display: 'flex',\n alignItems: 'center',\n },\n\n '& i': {\n marginRight: '15px',\n width: '21px',\n height: '37px',\n background: `url(${back}) no-repeat`,\n backgroundSize: '100%',\n cursor: 'pointer',\n },\n },\n\n user: {\n\n },\n search: {\n width: '352px',\n height: '42px',\n lineHeight: '30px',\n padding: '0 26px 0 32px',\n marginRight: '32px',\n backgroundColor: '#F7F6F4',\n borderRadius: '31px',\n boxSizing: 'border-box',\n\n display: 'flex',\n alignItems: 'center',\n\n '& input': {\n fontSize: '16px',\n border: 'none',\n background: 'none',\n lineHeight: '20px',\n flex: 1,\n outline: 'none',\n\n '&::-webkit-input-placeholder': {\n color: '#B3B3B3',\n }\n },\n\n '& .searchSubmit': {\n width: '20px',\n height: '20px',\n marginLeft: '20px',\n backgroundSize: '100%',\n }\n },\n spacer: {\n flex: 1,\n },\n});\n\nconst ConfigurationMenu = forwardRef((props, ref) => {\n const translate = useTranslate();\n return (\n }\n onClick={props.onClick}\n sidebarIsOpen\n />\n );\n});\n\nconst CustomUserMenu = (props: any) => (\n \n \n \n);\n\ninterface SearchProps {\n defaultValue: string;\n pathname: string;\n classes: any;\n}\nconst Search = ({ defaultValue, pathname, classes, ...props }: SearchProps) => {\n const [value, setValue] = React.useState(defaultValue || '');\n const onChange = (e) => {\n setValue(e.target.value)\n }\n\n const params = {\n displayedFilters: {},\n filter: {\n status: 'primary',\n q: value,\n },\n order: 'DESC',\n page: '1',\n perPage: '25',\n sort: 'date',\n }\n const sPrams = Object.keys(params).reduce((s: string, key: string) => {\n const value = typeof params[key] === 'object' ? JSON.stringify(params[key]) : params[key]\n return `${s}&${key}=${encodeURIComponent(value)}`\n }, '')\n\n return (\n
\n \n \n
\n )\n}\n\nconst CustomAppBar = (props: any) => {\n const classes = useStyles();\n const pathname = useSelector((state: AppState) => {\n const location = state?.router?.location;\n return location.pathname || ''\n });\n const searchQValue = useSelector((state: AppState) => {\n const location = state?.router?.location;\n const query: any = 'query' in location ? location['query'] : {};\n const filter: string = 'filter' in query ? query.filter : '';\n try {\n const oFilter = JSON.parse(decodeURIComponent(filter));\n\n let q = '';\n if (typeof oFilter === 'object' && 'q' in oFilter) {\n q = typeof oFilter.q === 'string' ? oFilter.q : '';\n }\n return q;\n } catch (error) {\n return ''\n }\n });\n\n const needSearch = ['/mails', '/junks', '/sents', '/projects', '/assets', '/trashs'].includes(pathname);\n const isFirstLevel = pathname.includes('/mails/create') || !/^\\/[^\\/]+\\/[^\\/]+/.test(pathname);\n const backToPrev = () => {\n window.history.back();\n }\n // console.log(pathname, pathname === '/nft/create')\n let title = isFirstLevel ? null : ();\n if (pathname === '/nfts/create') {\n title = (NFT Market)\n }\n if (pathname.includes('/settings/show')) {\n title = Settings;\n }\n\n return (\n // }>\n
\n {title}\n
\n {needSearch ? : null}\n \n
\n
\n );\n};\n\nexport default CustomAppBar;\n","export const sidebarWidth = 215","import * as React from 'react';\nimport { FC, Fragment, ReactElement } from 'react';\nimport { useSelector } from 'react-redux';\nimport {\n List,\n MenuItem,\n ListItemIcon,\n Typography,\n Collapse,\n Tooltip,\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport ExpandMore from '@material-ui/icons/ExpandMore';\nimport { useTranslate, ReduxState } from 'react-admin';\nimport clsx from 'clsx';\nimport up from '../assets/red/up.png';\n\nconst useStyles = makeStyles(theme => ({\n icon: {\n width: '20px',\n height: '10px',\n backgroundImage: `url(${up})`,\n backgroundSize: '100%',\n marginRight: '12px',\n transition: 'transform 0.3s ease-in-out 0s',\n transformOrigin: 'center center',\n },\n menuItemDown: {\n transform: 'rotate(180deg)',\n },\n sidebarIsOpen: {\n '& a': {\n paddingLeft: '47px',\n transition: 'padding-left 195ms cubic-bezier(0.4, 0, 0.6, 1) 0ms',\n },\n },\n sidebarIsClosed: {\n '& a': {\n transition: 'padding-left 195ms cubic-bezier(0.4, 0, 0.6, 1) 0ms',\n },\n },\n}));\n\ninterface Props {\n dense: boolean;\n handleToggle: () => void;\n icon: ReactElement;\n isOpen: boolean;\n name: string;\n className: string;\n}\n\nconst SubMenu: FC = ({\n handleToggle,\n isOpen,\n name,\n icon,\n children,\n dense,\n className,\n}) => {\n const translate = useTranslate();\n const classes = useStyles();\n const sidebarIsOpen = useSelector(\n state => state.admin.ui.sidebarOpen\n );\n\n const header = (\n \n \n \n {translate(name)}\n \n \n );\n\n return (\n \n {sidebarIsOpen || isOpen ? (\n header\n ) : (\n \n {header}\n \n )}\n \n \n {children}\n \n \n \n );\n};\n\nexport default SubMenu;\n","import * as React from 'react';\nimport { SVGProps } from 'react';\nimport { useTheme } from '@material-ui/core/styles';\nimport { FC, Fragment, useCallback, useEffect, useState } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useSelector } from 'react-redux';\nimport {\n TextField,\n FieldProps,\n} from 'react-admin';\nimport src from '*.bmp';\nimport LOGO from '../assets/red/logo.png'\nimport { AppState } from '../types';\nimport clsx from 'clsx';\n\nconst useStyles = makeStyles({\n logo: {\n display: 'block',\n width: '126px',\n height: '48px',\n marginLeft: '10px',\n backgroundSize: 'cover',\n },\n});\n\ninterface logoProps {\n classes?: any;\n}\nconst Logo = (props: logoProps) => {\n // const theme = useTheme();\n // const theme = useSelector((state: AppState) => state.theme);\n const classes = useStyles();\n const CustomerLogoField: FC = p => (\n
\n );\n return (\n \n );\n};\n\nexport default Logo;\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport LabelIcon from '@material-ui/icons/Label';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport { makeStyles } from '@material-ui/core/styles';\nimport clsx from 'clsx';\nimport {\n useTranslate,\n DashboardMenuItem,\n MenuItemLink,\n MenuProps,\n useRedirect,\n} from 'react-admin';\n\nimport SubMenu from './SubMenu';\n\nimport CreateIcon from '@material-ui/icons/Create';\n\nimport { AppState } from '../types';\nimport Logo from './Logo';\nimport { sidebarWidth } from './utils';\n\ninterface MenuItemProp {\n name: string;\n leftIcon: any;\n to: string;\n smart_count?: number;\n exact?: boolean;\n children?: MenuItemProp[];\n}\n\nconst Menus: MenuItemProp[] = [\n {\n name: 'pos.menu.compose',\n to: '/mails/create',\n smart_count: 0,\n leftIcon: ,\n },\n {\n name: 'pos.menu.inbox',\n to: '/mails',\n smart_count: 0,\n exact: true,\n leftIcon: ,\n },\n {\n name: 'pos.menu.junk',\n to: '/junks',\n smart_count: 0,\n leftIcon: ,\n },\n {\n name: 'pos.menu.sent',\n to: '/sents',\n smart_count: 0,\n leftIcon: ,\n },\n {\n name: 'pos.menu.subscription',\n to: '/projects',\n smart_count: 0,\n leftIcon: ,\n },\n {\n name: 'pos.menu.assets',\n to: '/assets',\n smart_count: 0,\n leftIcon: ,\n },\n {\n name: 'pos.menu.nfts',\n to: '/nfts',\n smart_count: 0,\n leftIcon: ,\n },\n {\n name: 'pos.menu.more',\n leftIcon: ,\n to: '',\n children: [\n {\n name: 'pos.menu.trash',\n to: '/trashs',\n smart_count: 2,\n leftIcon: ,\n },\n {\n name: 'pos.menu.settings',\n to: '/settings/show',\n smart_count: 2,\n leftIcon: ,\n },\n ]\n },\n]\n\n\nconst useStyles = makeStyles(theme => ({\n root: {\n width: `${sidebarWidth}px`,\n padding: '35px 0 35px 32px',\n boxSizing: 'border-box',\n borderRadius: '0px 26px 26px 0px',\n position: 'fixed',\n overflowY: 'auto',\n left: 0,\n top: 0,\n bottom: 0,\n },\n menus: {\n marginTop: '25px',\n },\n}));\n\nconst useMenuListStyles = makeStyles(theme => ({\n root: {\n\n },\n}));\n\ninterface MenuListProps {\n menus: MenuItemProp[];\n dense: boolean;\n parentName?: string;\n}\nconst MenuList = ({ menus, dense, parentName = '' }: MenuListProps) => {\n const translate = useTranslate()\n const classes = useMenuListStyles();\n\n const [opened, setOpened] = useState(['pos.menu.more'])\n const onToggleOpen = (name: string) => {\n if (opened.includes(name)) {\n setOpened([...opened].filter((_name: string) => name !== _name))\n } else {\n setOpened([...opened, name])\n }\n }\n\n return (\n <>\n {menus.map(({ name, to, exact, smart_count, leftIcon, children }: MenuItemProp) => (\n children ?\n onToggleOpen(name)}\n isOpen={opened.includes(name)}\n name={name}\n icon={leftIcon}\n dense={dense}\n className={clsx(classes.root, 'sidebarMenuItem')}\n key={`${parentName}${name}`}\n >\n \n \n :\n \n ))\n }\n \n )\n}\n\nconst MenuWrapper = ({ dense = false }: MenuProps) => {\n useSelector((state: AppState) => state.theme); // force rerender on theme change\n const classes = useStyles();\n // const theme = useSelector((state: AppState) => state.theme);\n\n // const redirect = useRedirect();\n // const onCreate = () => {\n // redirect('create', '../');\n // };\n\n return (\n
\n \n
\n \n
\n
\n );\n};\n\nexport default MenuWrapper;\n","export const darkTheme = {\n palette: {\n primary: {\n main: '#90caf9',\n },\n secondary: {\n main: '#FBBA72',\n },\n type: 'dark' as 'dark', // Switching the dark mode on is a single property value change.\n },\n overrides: {\n MuiAppBar: {\n colorSecondary: {\n color: '#ffffffb3',\n backgroundColor: '#616161e6',\n },\n },\n MuiButtonBase: {\n root: {\n '&:hover:active::after': {\n // recreate a static ripple color\n // use the currentColor to make it work both for outlined and contained buttons\n // but to dim the background without dimming the text,\n // put another element on top with a limited opacity\n content: '\"\"',\n display: 'block',\n width: '100%',\n height: '100%',\n position: 'absolute',\n top: 0,\n right: 0,\n backgroundColor: 'currentColor',\n opacity: 0.3,\n borderRadius: 'inherit',\n },\n },\n },\n },\n props: {\n MuiButtonBase: {\n // disable ripple for perf reasons\n disableRipple: true,\n },\n },\n};\n\nexport const lightTheme = {\n palette: {\n primary: {\n main: '#4f3cc9',\n },\n secondary: {\n light: '#5f5fc4',\n main: '#283593',\n dark: '#001064',\n contrastText: '#fff',\n },\n background: {\n default: '#fcfcfe',\n },\n type: 'light' as 'light',\n },\n shape: {\n borderRadius: 10,\n },\n overrides: {\n RaMenuItemLink: {\n root: {\n borderLeft: '3px solid #fff',\n },\n active: {\n borderLeft: '3px solid #4f3cc9',\n },\n },\n MuiPaper: {\n elevation1: {\n boxShadow: 'none',\n },\n root: {\n border: '1px solid #e0e0e3',\n backgroundClip: 'padding-box',\n },\n },\n MuiButton: {\n contained: {\n backgroundColor: '#fff',\n color: '#4f3cc9',\n boxShadow: 'none',\n },\n },\n MuiButtonBase: {\n root: {\n '&:hover:active::after': {\n // recreate a static ripple color\n // use the currentColor to make it work both for outlined and contained buttons\n // but to dim the background without dimming the text,\n // put another element on top with a limited opacity\n content: '\"\"',\n display: 'block',\n width: '100%',\n height: '100%',\n position: 'absolute',\n top: 0,\n right: 0,\n backgroundColor: 'currentColor',\n opacity: 0.3,\n borderRadius: 'inherit',\n },\n },\n },\n MuiAppBar: {\n colorSecondary: {\n color: '#808080',\n backgroundColor: '#fff',\n },\n },\n MuiLinearProgress: {\n colorPrimary: {\n backgroundColor: '#f5f5f5',\n },\n barColorPrimary: {\n backgroundColor: '#d7d7d7',\n },\n },\n MuiFilledInput: {\n root: {\n backgroundColor: 'rgba(0, 0, 0, 0.04)',\n '&$disabled': {\n backgroundColor: 'rgba(0, 0, 0, 0.04)',\n },\n },\n },\n MuiSnackbarContent: {\n root: {\n border: 'none',\n },\n },\n },\n props: {\n MuiButtonBase: {\n // disable ripple for perf reasons\n disableRipple: true,\n },\n },\n};\n","import { format } from 'date-fns';\nimport logo from '../assets/red/logo.png';\nimport loginBg from '../assets/red/login-bg.jpg';\nimport loginLogo from '../assets/red/login-logo.png';\nimport subTitle from '../assets/red/sub-title.png';\n\nimport compose from '../assets/red/compose.png';\nimport composeHover from '../assets/red/compose-hover.png';\n\nimport inbox from '../assets/red/inbox.png';\nimport inboxHover from '../assets/red/inbox-hover.png';\n\nimport junk from '../assets/red/junk.png';\nimport junkHover from '../assets/red/junk-hover.png';\n\nimport sent from '../assets/red/sent.png';\nimport sentHover from '../assets/red/sent-hover.png';\n\nimport subscription from '../assets/red/subscription.png';\nimport subscriptionHover from '../assets/red/subscription-hover.png';\n\nimport assets from '../assets/red/assets.png';\nimport assetsHover from '../assets/red/assets-hover.png';\n\nimport trash from '../assets/red/trash.png';\nimport trashHover from '../assets/red/trash-hover.png';\n\nimport nft from '../assets/red/nft.png';\nimport nftHover from '../assets/red/nft-hover.png';\n\nimport settings from '../assets/red/settings.png';\nimport settingsHover from '../assets/red/settings-hover.png';\n\nimport search from '../assets/red/search.png';\nimport prev from '../assets/red/prev.png';\nimport prevHover from '../assets/red/prev-hover.png';\nimport circles from '../assets/red/circles.png';\nimport down2 from '../assets/red/down2.png';\nimport down3 from '../assets/red/down3.png';\n\nconst RaPaginationBottonHover = {\n borderColor: '#FF7669',\n backgroundColor: '#FF7669',\n color: '#fff',\n}\n\nconst menuItemHovers = {\n '& .menu-item-compose': {\n backgroundImage: `url(${composeHover})`,\n },\n '& .menu-item-inbox': {\n backgroundImage: `url(${inboxHover})`,\n },\n '& .menu-item-junk': {\n backgroundImage: `url(${junkHover})`,\n },\n '& .menu-item-sent': {\n backgroundImage: `url(${sentHover})`,\n },\n '& .menu-item-subscription': {\n backgroundImage: `url(${subscriptionHover})`,\n },\n '& .menu-item-assets': {\n backgroundImage: `url(${assetsHover})`,\n },\n '& .menu-item-trash': {\n backgroundImage: `url(${trashHover})`,\n },\n '& .menu-item-nfts': {\n backgroundImage: `url(${nftHover})`,\n },\n '& .menu-item-settings': {\n backgroundImage: `url(${settingsHover})`,\n },\n}\n\n// // @media screen\n// declare module \"@material-ui/core/styles/createBreakpoints\" {\n// interface BreakpointOverrides {\n// // xs: false; \n// // sm: false;\n// // md: false;\n// // lg: false;\n// // xl: false;\n// loginHMax: true; \n// }\n// }\n\nexport const redTheme = {\n overrides: {\n // // @media screen\n // breakpoints: {\n // values: {\n // // xs: 0,\n // // sm: 600,\n // // md: 960,\n // // lg: 1280,\n // // xl: 1920,\n // loginHMax: 800,\n // },\n // },\n MuiContainer: {\n root: {\n '&.login-wrapper': {\n width: '100%',\n height: '100vh',\n background: `url(${loginBg}) center no-repeat`,\n backgroundSize: 'cover',\n },\n '& .login-card': {\n boxShadow: '0 2px 3px 1px rgba(255, 93, 80, .4)'\n },\n '& .login-btn': {\n backgroundColor: '#FF5D50',\n color: '#fff',\n },\n '& .login-logo': {\n backgroundImage: `url(${loginLogo})`,\n },\n '& .login-description': {\n width: '446px',\n height: '20px',\n backgroundImage: `url(${subTitle})`,\n }\n }\n },\n RaLayout: {\n content: {\n padding: '0px!important',\n },\n appFrame: {\n margin: '0px!important',\n },\n root: {\n padding: '30px',\n boxSizing: 'border-box',\n backgroundColor: '#F7F6F4',\n\n \"@media screen and (max-width: 1440px)\": {\n padding: '20px',\n },\n\n '&:fist-child': {\n display: 'none',\n },\n '&:nth-child(2)': {\n margin: 0,\n }\n },\n },\n\n RaSidebar: {\n paper: {\n '& .menu-bg': {\n background: 'linear-gradient(0deg, #FA4B49, #FA7B5E)',\n },\n '& .logo': {\n backgroundImage: `url(${logo})`,\n },\n },\n },\n\n // if RaMenuItemLink exist, then MuiMenuItem must have !!! hehe!\n MuiMenuItem: {\n root: {\n '&.sidebarMenuItem': {\n // for SubMenu\n height: '42px',\n marginBottom: '10px',\n borderRadius: '31px 0px 0px 31px',\n color: '#fff',\n fontSize: '18px',\n }\n },\n },\n\n RaMenuItemLink: {\n icon: {\n width: '32px',\n minWidth: 'auto',\n },\n\n root: {\n '&.sidebarMenuItem': {\n color: '#fff',\n position: 'relative',\n\n '&:hover': {\n background: '#F7F6F4',\n color: '#FF7D61',\n ...menuItemHovers,\n },\n '&:hover::before': {\n content: '\"\"',\n background: '#F7F6F4',\n position: 'absolute',\n top: '-20px',\n right: '0',\n },\n }\n },\n active: {\n '&.sidebarMenuItem': {\n background: '#F7F6F4',\n color: '#FF7D61',\n ...menuItemHovers,\n\n '&::before': {\n content: '\"\"',\n background: '#F7F6F4',\n position: 'absolute',\n top: '-20px',\n right: '0',\n },\n }\n },\n },\n\n MuiListItemIcon: {\n root: {\n minWidth: 'auto',\n\n '&.menu-item-icon': {\n backgroundSize: '100%',\n },\n\n '&.menu-item-compose': {\n width: '24px',\n height: '17px',\n backgroundImage: `url(${compose})`,\n },\n '& .menu-item-inbox': {\n width: '24px',\n height: '18px',\n backgroundImage: `url(${inbox})`,\n },\n '& .menu-item-junk': {\n width: '22px',\n height: '18px',\n backgroundImage: `url(${junk})`,\n },\n '& .menu-item-sent': {\n width: '19px',\n height: '19px',\n backgroundImage: `url(${sent})`,\n },\n '& .menu-item-subscription': {\n width: '18px',\n height: '16px',\n backgroundImage: `url(${subscription})`,\n },\n '& .menu-item-assets': {\n width: '18px',\n height: '20px',\n backgroundImage: `url(${assets})`,\n },\n '& .menu-item-trash': {\n width: '20px',\n height: '21px',\n backgroundImage: `url(${trash})`,\n },\n '& .menu-item-nfts': {\n width: '20px',\n height: '20px',\n backgroundImage: `url(${nft})`,\n },\n '& .menu-item-settings': {\n width: '20px',\n height: '20px',\n backgroundImage: `url(${settings})`,\n },\n },\n },\n\n RaUserMenu: {\n root: {\n },\n userButton: {\n fontSize: '18px',\n },\n avatar: {\n width: '42px',\n height: '42px',\n borderRadius: '5px',\n marginRight: '8px',\n },\n },\n\n MuiButton: {\n root: {\n '&.searchSubmit': {\n minWidth: 'auto',\n backgroundImage: `url(${search})`,\n padding: '0',\n }\n }\n },\n\n RaList: {\n bulkActionsDisplayed: {\n marginTop: '0',\n transition: 'none',\n },\n },\n\n RaBulkActionsToolbar: {\n toolbar: {\n position: 'relative',\n top: '10px',\n backgroundColor: 'transparent',\n height: 'auto!important',\n minHeight: 'auto!important',\n overflow: 'visible!important',\n color: '#FF7669',\n transition: 'none',\n justifyContent: 'end',\n padding: 0,\n marginBottom: '30px',\n },\n title: {\n color: '#FF7669',\n fontSize: '16px',\n\n '& button': {\n display: 'none',\n },\n\n '& h6': {\n fontWeight: 600,\n },\n },\n topToolbar: {\n marginLeft: '16px',\n padding: '0!important',\n minHeight: 'auto',\n\n // '& button': {\n // height: '28px',\n // lineHeight: '28px',\n // padding: '0 10px',\n // borderRadius: '5px',\n // backgroundColor: '#FA6755',\n // color: '#fff',\n // transition: 'transform 0.3s ease',\n\n // '&:hover': {\n // transform: 'scale(1.1)',\n // backgroundColor: '#FA6755',\n // },\n // },\n // '& svg': {\n // display: 'none',\n // },\n // '& span': {\n // padding: 0,\n // },\n },\n },\n\n // MuiCard: {\n\n // },\n\n MuiCard: {\n root: {\n boxShadow: 'none',\n borderRadius: '24px',\n padding: '20px 34px 34px',\n },\n },\n\n MuiTabs: {\n indicator: {\n height: '4px',\n background: '#FF7D61',\n }\n },\n\n MuiTableRow: {\n root: {\n borderRadius: '10px',\n\n '&.MuiTableRow-hover:hover': {\n backgroundColor: '#FFD8D3',\n }\n }\n },\n\n RaDatagrid: {\n table: {\n '& td:first-child': {\n borderRadius: '10px 0 0 10px',\n },\n\n '& td:last-child': {\n borderRadius: '0 10px 10px 0',\n }\n },\n\n rowEven: {\n backgroundColor: '#FFF6F6',\n },\n },\n\n MuiTable: {\n root: {\n }\n },\n\n MuiTableCell: {\n root: {\n height: '45px',\n lineHeight: '45px',\n padding: '0 16px 0 14px',\n border: 'none!important',\n fontSize: '16px',\n color: '#083353',\n\n '&:first-child': {\n padding: '0 6px 0 28px',\n },\n\n '&:last-child': {\n padding: '0 28px 0 14px',\n },\n\n '& span': {\n fontSize: '18px',\n color: '#48687F',\n },\n\n '& .select-all svg, & .select-item svg': {\n width: '24px',\n height: '24px',\n color: '#E6E7EA',\n },\n\n '& .Mui-checked svg': {\n color: '#FA6755',\n\n }\n },\n\n head: {\n '& span': {\n color: '#083353',\n },\n\n '& .Mui-checked svg': {\n color: '#FA6755',\n\n }\n },\n\n paddingCheckbox: {\n width: '54px',\n padding: '0 8px',\n },\n\n },\n\n MuiTablePagination: {\n root: {\n '& .MuiTypography-root': {\n display: 'none',\n }\n }\n },\n\n MuiTableSortLabel: {\n root: {\n '& .MuiTableSortLabel-iconDirectionDesc, & .MuiTableSortLabel-iconDirectionAsc': {\n width: '21px',\n height: '11px',\n marginLeft: '12px',\n background: `url(${down3})`,\n backgroundSize: '100%',\n\n '& path': {\n display: 'none',\n }\n },\n '& .MuiTableSortLabel-iconDirectionAsc': {\n transform: 'rotate(180deg)',\n }\n },\n },\n\n RaPaginationActions: {\n actions: {\n marginTop: '52px',\n width: '100%',\n textAlign: 'center',\n\n '& .previous-page, & .next-page': {\n width: '77px',\n height: '36px',\n overflow: 'hidden',\n marginRight: '9px',\n background: `url(${prev}) no-repeat`,\n backgroundSize: '100%',\n\n '&:hover': {\n backgroundImage: `url(${prevHover})`,\n },\n\n '& svg': {\n display: 'none',\n },\n\n '& .MuiButton-label': {\n textIndent: '-999px',\n },\n },\n '& .next-page': {\n margin: '0 0 0 9px',\n transform: 'rotate(180deg)',\n },\n },\n\n button: {\n minWidth: 'auto',\n width: '36px',\n height: '36px',\n padding: '0',\n lineHeight: '36px',\n marginRight: '7px',\n borderRadius: '50%',\n border: '2px solid #E6E7EA',\n boxSizing: 'border-box',\n fontSize: '18px',\n fontFamily: 'PingFang SC',\n fontWeight: '600',\n color: '#999999',\n\n '&:hover': {\n ...RaPaginationBottonHover,\n },\n },\n\n currentPageButton: {\n ...RaPaginationBottonHover,\n },\n\n hellip: {\n width: '18px',\n height: '5px',\n padding: '0',\n margin: '0 10px 0 3px',\n background: `url(${circles}) no-repeat`,\n backgroundSize: '100%',\n display: 'inline-block',\n overflow: 'hidden',\n\n '&:after': {\n display: 'none',\n },\n },\n },\n\n // form\n RaFormInput: {\n input: {\n '& .MuiOutlinedInput-root': {\n backgroundColor: '#F7F6F4',\n height: '48px',\n lineHeight: '48px',\n borderRadius: '0',\n },\n\n '& fieldset': {\n border: 'none',\n },\n\n '&.custom-input': {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n margin: '0 0 24px',\n position: 'relative',\n\n '& .MuiInputLabel-outlined': {\n width: '90px',\n marginRight: '10px',\n position: 'static',\n transform: 'none!important',\n fontWeight: 600,\n fontSize: '18px',\n color: '#666',\n\n '&.Mui-error': {\n color: '#f44336',\n },\n },\n\n '& .MuiOutlinedInput-root': {\n flex: 1,\n\n '&.Mui-error': {\n boxShadow: '0 0 3px 1px rgb(250, 101, 84, .9)',\n },\n },\n\n '& .MuiFormHelperText-contained': {\n top: '100%',\n left: 100,\n position: 'absolute',\n margin: 0,\n lineHeight: '20px',\n },\n\n '& .MuiSelect-iconOutlined': {\n width: '15px',\n height: '8px',\n right: 12,\n top: 20,\n background: `url(${down3})`,\n backgroundSize: '100%',\n\n '& path': {\n display: 'none',\n }\n },\n\n '& .MuiSelect-select': {\n padding: '0 14px',\n }\n }\n },\n },\n\n MuiFormControl: {\n root: {\n '&.ra-rich-text-input': {\n margin: '0 0 24px',\n paddingLeft: '100px',\n position: 'relative',\n boxSizing: 'border-box',\n\n '& .ql-toolbar.ql-snow': {\n margin: '10px 0 15px',\n },\n\n '& .MuiFormLabel-root': {\n width: '90px',\n marginRight: '10px',\n position: 'absolute',\n top: '52px',\n transform: 'none!important',\n fontWeight: 600,\n fontSize: '18px',\n color: '#666',\n },\n\n '& .ql-container': {\n border: 'none',\n },\n\n '& .ql-formats': {\n paddingRight: '12px',\n position: 'relative',\n\n '&:after': {\n content: '',\n position: 'absolute',\n width: 1.5,\n height: 15,\n top: 5,\n right: 0,\n backgroundColor: '#ccc',\n },\n\n '&:last-child:after': {\n display: 'none',\n },\n },\n\n '& .ql-icon-picker': {\n paddingLeft: '4px',\n },\n\n '& .ql-toolbar.ql-snow .ql-picker-label': {\n color: '#6E6E6E',\n\n '&:hover': {\n color: '#FA6554',\n },\n },\n\n '& .ql-toolbar.ql-snow .ql-picker-label.ql-active, & .ql-toolbar.ql-snow .ql-picker-item:hover, & .ql-toolbar.ql-snow .ql-picker-item.ql-selected, & .ql-snow.ql-toolbar button:hover': {\n color: '#FA6554',\n },\n\n '& .ql-toolbar.ql-snow button.ql-active .ql-fill, & .ql-toolbar.ql-snow button:hover .ql-fill': {\n fill: '#FA6554',\n },\n\n '& .ql-toolbar.ql-snow .ql-stroke, ': {\n stroke: '#6E6E6E',\n },\n\n '& .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke, & .ql-toolbar.ql-snow .ql-picker-label:hover .ql-stroke, & .ql-toolbar.ql-snow button.ql-active .ql-stroke, & .ql-toolbar.ql-snow button:hover .ql-stroke, & .ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke, & .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke, & .ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke, & .ql-snow.ql-toolbar button:hover .ql-fill, & .ql-snow.ql-toolbar button.ql-active .ql-fill': {\n stroke: '#FA6554',\n },\n\n '& .ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label': {\n border: 'none',\n },\n\n '& .ql-editor': {\n backgroundColor: '#F7F6F4!important',\n minHeight: '190px',\n padding: '20px 25px 25px',\n boxSizing: 'border-box',\n\n '& p': {\n marginBottom: '12px',\n lineHeight: '24px',\n },\n\n '&::before, &::after': {\n display: 'none',\n },\n }\n },\n },\n },\n\n },\n props: {\n // MuiButtonBase: {\n // // disable ripple for perf reasons\n // disableRipple: true,\n // },\n },\n};\n\n","import * as React from 'react';\nimport { useSelector } from 'react-redux';\nimport { Layout, LayoutProps, Sidebar } from 'react-admin';\nimport AppBar from './AppBar';\nimport Menu from './Menu';\nimport { darkTheme, lightTheme } from './themes';\nimport { redTheme } from './redTheme';\nimport { AppState } from '../types';\nimport { ControlPointSharp } from '@material-ui/icons';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { sidebarWidth } from './utils';\n\nconst useSidebarStyles = makeStyles({\n // This paper is stupid! We do no need it!\n drawerPaper: {\n width: sidebarWidth,\n },\n});\n\n// Why must have sidebar, the menu is enough !!!!\nconst CustomSidebar = (props: any) => {\n const classes = useSidebarStyles();\n return (\n \n )\n};\n\nexport default (props: LayoutProps) => {\n const theme = useSelector((state: AppState) =>\n state.theme === 'red' ? redTheme : (state.theme === 'dark' ? darkTheme : lightTheme)\n );\n return (\n \n );\n};\n","import * as React from 'react';\nimport { useState, useCallback, useEffect, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { Field, withTypes } from 'react-final-form';\nimport { useLocation } from 'react-router-dom';\nimport clsx from 'clsx';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { changeEmail } from '../configuration/actions';\nimport Logo from './Logo';\nimport { Storage, Email_Name, Username, Identity_Key } from '../utils/storage'\nimport { fetch, emailHost } from '../utils'\n\nimport {\n Container,\n Button,\n Card,\n CardActions,\n CircularProgress,\n TextField,\n} from '@material-ui/core';\nimport { createTheme, makeStyles } from '@material-ui/core/styles';\nimport { ThemeProvider } from '@material-ui/styles';\nimport LockIcon from '@material-ui/icons/Lock';\nimport { Notification, useTranslate, useLogin, useNotify, useRedirect } from 'react-admin';\n\nimport { redTheme } from './redTheme';\nimport { authClient } from '../service';\nimport { Identity } from \"@dfinity/agent\";\n\n\nconst useStyles = makeStyles(theme => ({\n logo: {\n width: '178px',\n height: '68px',\n position: 'fixed',\n left: '50%',\n transform: 'translateX(-50%)',\n top: '13%',\n backgroundSize: '100%',\n backgroundRepeat: 'no-repeat',\n },\n card: {\n width: '484px',\n height: '280px',\n padding: '66px 52px',\n position: 'fixed',\n left: '50%',\n transform: 'translateX(-50%)',\n top: '28.7%',\n backgroundColor: '#fff',\n borderRadius: '2px',\n boxSizing: 'border-box',\n textAlign: 'center',\n\n '& .login-btn': {\n height: '52px',\n marginTop: '46px',\n borderRadius: '5px',\n transition: 'transform .3s ease',\n\n '&:hover': {\n transform: 'scale(1.05)',\n }\n },\n\n '& .login-text': {\n fontSize: '30px',\n color: '#4B3A3A',\n fontWeight: 500,\n },\n\n \"@media screen and (max-height: 800px)\": {\n top: '38%',\n },\n\n \"@media screen and (max-width: 1600px)\": {\n width: '400px',\n height: '210px',\n padding: '42px 48px 48px',\n\n '& .login-btn': {\n height: '42px',\n marginTop: '42px',\n },\n\n '& .login-text': {\n fontSize: '24px',\n },\n },\n },\n description: {\n position: 'fixed',\n left: '50%',\n transform: 'translateX(-50%)',\n top: '22.6%',\n backgroundSize: '100%',\n\n \"@media screen and (max-height: 800px)\": {\n top: '28%',\n }\n },\n}));\n\nconst renderInput = ({\n meta: { touched, error } = { touched: false, error: undefined },\n input: { ...inputProps },\n ...props\n}) => (\n \n);\n\ninterface FormValues {\n username?: string;\n password?: string;\n}\n\nconst { Form } = withTypes();\n\ntype AuthorizeProps = {\n setIsAuthenticated: (x: boolean) => void;\n};\n\n\nconst Login = () => {\n const [loading, setLoading] = useState(false);\n const translate = useTranslate();\n const classes = useStyles();\n const notify = useNotify();\n const dispatch = useDispatch();\n // const login = useLogin();\n const location = useLocation<{ nextPathname: string } | null>();\n const [isAuthenticated, setIsAuthenticated] = useState(false);\n\n const handleSubmit = (auth: FormValues) => {\n setLoading(true);\n };\n\n const redirect = useRedirect();\n\n const getEmail = (identity: string) => {\n fetch('users', 'getOne', identity).then((res) => {\n const { data, success } = res\n if (success && data) {\n dispatch(changeEmail(data))\n Storage.set(Email_Name, data);\n Storage.set(Username, data.replace(emailHost, ''));\n }\n }).catch((error) => {\n console.log('error', error);\n })\n }\n\n const handleConnect = async () => {\n //setLoading(true);\n // await authClient.create();\n // await authClient.login();\n // const identity = await authClient.getIdentity();\n // if (identity) {\n const sIdentity = 'yhv98-nx5do-xc555-d9oii-ygl09-2pele-h73h7-e90hh-hnwx4-c5k5d-yye'\n getEmail(sIdentity);\n setIsAuthenticated(true);\n // @TODO: need to put the identity in to the cookie soon\n Storage.set(Identity_Key, sIdentity);\n //setLoading(false)\n redirect('./mails');\n // } else {\n // console.error(\"could not get identity\");\n // }\n }\n\n const validate = (values: FormValues) => {\n const errors: FormValues = {};\n if (!values.username) {\n errors.username = translate('ra.validation.required');\n }\n if (!values.password) {\n errors.password = translate('ra.validation.required');\n }\n return errors;\n };\n\n return (\n \n (\n
\n
\n
\n \n WELCOME!\n { handleConnect() }}\n color=\"primary\"\n disabled={loading}\n className=\"login-btn\"\n fullWidth\n >\n {loading && (\n \n )}\n {translate('pos.login')}\n \n \n \n \n )}\n />\n \n );\n};\n\nLogin.propTypes = {\n authProvider: PropTypes.func,\n previousRoute: PropTypes.string,\n};\n\n// We need to put the ThemeProvider decoration in another component\n// Because otherwise the useStyles() hook used in Login won't get\n// the right theme\n\nconst LoginWithTheme = (props: any) => (\n < ThemeProvider theme={createTheme(redTheme)} >\n \n \n);\n\nexport default LoginWithTheme;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport { Box, Card, CardActions, Button, Typography } from '@material-ui/core';\nimport HomeIcon from '@material-ui/icons/Home';\nimport CodeIcon from '@material-ui/icons/Code';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslate } from 'react-admin';\n\nimport publishArticleImage from './welcome_illustration.svg';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n background:\n theme.palette.type === 'dark'\n ? '#535353'\n : `linear-gradient(to right, #8975fb 0%, #746be7 35%), linear-gradient(to bottom, #8975fb 0%, #6f4ceb 50%), #6f4ceb`,\n\n color: '#fff',\n padding: 20,\n marginTop: theme.spacing(2),\n marginBottom: '1em',\n },\n media: {\n background: `url(${publishArticleImage}) top right / cover`,\n marginLeft: 'auto',\n },\n actions: {\n [theme.breakpoints.down('md')]: {\n padding: 0,\n flexWrap: 'wrap',\n '& a': {\n marginTop: '1em',\n marginLeft: '0!important',\n marginRight: '1em',\n },\n },\n },\n}));\n\nconst Welcome: FC = () => {\n const translate = useTranslate();\n const classes = useStyles();\n return (\n \n \n \n \n {translate('pos.dashboard.welcome.title')}\n \n \n \n \n );\n};\n\nexport default Welcome;\n","import React, {\n useState,\n useEffect,\n useCallback,\n FC,\n CSSProperties,\n} from 'react';\nimport { useVersion, useDataProvider, useRedirect } from 'react-admin';\nimport { useMediaQuery, Theme } from '@material-ui/core';\nimport { subDays } from 'date-fns';\n\nimport Welcome from './Welcome';\nimport MonthlyRevenue from './MonthlyRevenue';\nimport NbNewOrders from './NbNewOrders';\nimport PendingOrders from './PendingOrders';\nimport PendingReviews from './PendingReviews';\nimport NewCustomers from './NewCustomers';\nimport OrderChart from './OrderChart';\n\nimport { Customer, Order, Review } from '../types';\n\ninterface OrderStats {\n revenue: number;\n nbNewOrders: number;\n pendingOrders: Order[];\n}\n\ninterface CustomerData {\n [key: string]: Customer;\n}\n\ninterface State {\n nbNewOrders?: number;\n nbPendingReviews?: number;\n pendingOrders?: Order[];\n pendingOrdersCustomers?: CustomerData;\n pendingReviews?: Review[];\n pendingReviewsCustomers?: CustomerData;\n recentOrders?: Order[];\n revenue?: string;\n}\n\nconst styles = {\n flex: { display: 'flex' },\n flexColumn: { display: 'flex', flexDirection: 'column' },\n leftCol: { flex: 1, marginRight: '0.5em' },\n rightCol: { flex: 1, marginLeft: '0.5em' },\n singleCol: { marginTop: '1em', marginBottom: '1em' },\n};\n\nconst Spacer = () => ;\nconst VerticalSpacer = () => ;\n\nconst Dashboard: FC = () => {\n const redirect = useRedirect();\n redirect('./mails');\n\n\n return (\n
\n
\n \n
\n
\n );\n};\n\nexport default Dashboard;\n","import DashboardComponent from './Dashboard';\n\nexport const Dashboard = DashboardComponent;\n","import * as React from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport Button from '@material-ui/core/Button';\nimport { useTranslate, useLocale, useSetLocale, Title } from 'react-admin';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { changeTheme } from './actions';\nimport { AppState } from '../types';\n\nconst useStyles = makeStyles({\n label: { width: '10em', display: 'inline-block' },\n button: { margin: '1em' },\n});\n\nconst Configuration = () => {\n const translate = useTranslate();\n const locale = useLocale();\n const setLocale = useSetLocale();\n const classes = useStyles();\n const theme = useSelector((state: AppState) => state.theme);\n const dispatch = useDispatch();\n return (\n \n \n <CardContent>\n <div className={classes.label}>\n {translate('pos.theme.name')}\n </div>\n <Button\n variant=\"contained\"\n className={classes.button}\n color={theme === 'red' ? 'primary' : 'default'}\n onClick={() => dispatch(changeTheme('red'))}\n >\n {translate('pos.theme.red')}\n </Button>\n {/* <Button\n variant=\"contained\"\n className={classes.button}\n color={theme === 'light' ? 'primary' : 'default'}\n onClick={() => dispatch(changeTheme('light'))}\n >\n {translate('pos.theme.light')}\n </Button>\n <Button\n variant=\"contained\"\n className={classes.button}\n color={theme === 'dark' ? 'primary' : 'default'}\n onClick={() => dispatch(changeTheme('dark'))}\n >\n {translate('pos.theme.dark')}\n </Button> */}\n </CardContent>\n <CardContent>\n <div className={classes.label}>{translate('pos.language')}</div>\n <Button\n variant=\"contained\"\n className={classes.button}\n color={locale === 'en' ? 'primary' : 'default'}\n onClick={() => setLocale('en')}\n >\n en\n </Button>\n <Button\n variant=\"contained\"\n className={classes.button}\n color={locale === 'fr' ? 'primary' : 'default'}\n onClick={() => setLocale('fr')}\n >\n fr\n </Button>\n </CardContent>\n </Card>\n );\n};\n\nexport default Configuration;\n","export default [\n { id: 'compulsive', name: 'resources.segments.data.compulsive' },\n { id: 'collector', name: 'resources.segments.data.collector' },\n { id: 'ordered_once', name: 'resources.segments.data.ordered_once' },\n { id: 'regular', name: 'resources.segments.data.regular' },\n { id: 'returns', name: 'resources.segments.data.returns' },\n { id: 'reviewer', name: 'resources.segments.data.reviewer' },\n];\n","import * as React from 'react';\nimport { FC } from 'react';\nimport Chip from '@material-ui/core/Chip';\nimport { useTranslate, FieldProps } from 'react-admin';\nimport segments from '../segments/data';\nimport { Customer } from '../types';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles({\n main: {\n display: 'flex',\n flexWrap: 'wrap',\n marginTop: -8,\n marginBottom: -8,\n },\n chip: { margin: 4 },\n});\n\nconst SegmentsField: FC<FieldProps<Customer>> = ({ record }) => {\n const translate = useTranslate();\n const classes = useStyles();\n\n return record ? (\n <span className={classes.main}>\n {record.groups &&\n record.groups.map(segmentId => {\n const segment = segments.find(s => s.id === segmentId);\n\n return segment ? (\n <Chip\n size=\"small\"\n key={segment.id}\n className={classes.chip}\n label={translate(segment.name)}\n />\n ) : null;\n })}\n </span>\n ) : null;\n};\n\nSegmentsField.defaultProps = {\n addLabel: true,\n source: 'groups',\n};\n\nexport default SegmentsField;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport { useTranslate, SelectInput, InputProps } from 'react-admin';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport segments from '../segments/data';\n\nconst useStyles = makeStyles({\n input: { width: 150 },\n});\n\ninterface Props extends Omit<InputProps, 'source'> {\n source?: string;\n}\n\nconst SegmentInput: FC<Props> = props => {\n const translate = useTranslate();\n const classes = useStyles();\n return (\n <SelectInput\n {...props}\n choices={segments.map(segment => ({\n id: segment.id,\n name: translate(segment.name),\n }))}\n className={classes.input}\n />\n );\n};\n\nSegmentInput.defaultProps = {\n source: 'groups',\n};\n\nexport default SegmentInput;\n","import * as React from 'react';\nimport { FC, memo } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport { FieldProps } from 'react-admin';\nimport AvatarField from './AvatarField';\nimport { Customer } from '../types';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n display: 'flex',\n flexWrap: 'nowrap',\n alignItems: 'center',\n },\n avatar: {\n marginRight: theme.spacing(1),\n marginTop: -theme.spacing(0.5),\n marginBottom: -theme.spacing(0.5),\n },\n}));\n\ninterface Props extends FieldProps<Customer> {\n size?: string;\n}\n\nconst FullNameField: FC<Props> = ({ record, size }) => {\n const classes = useStyles();\n return record ? (\n <div className={classes.root}>\n {/* <AvatarField\n className={classes.avatar}\n record={record}\n size={size}\n /> */}\n {record.first_name} {record.last_name}\n </div>\n ) : null;\n};\n\nFullNameField.defaultProps = {\n source: 'last_name',\n label: 'resources.customers.fields.name',\n};\n\nexport default memo<Props>(FullNameField);\n","import * as React from 'react';\nimport { FC } from 'react';\nimport { Link, FieldProps } from 'react-admin';\n\nimport FullNameField from './FullNameField';\nimport { Customer } from '../types';\n\nconst CustomerLinkField: FC<FieldProps<Customer>> = props =>\n props.record ? (\n <Link to={`/customers/${props.record.id}`}>\n <FullNameField {...props} />\n </Link>\n ) : null;\n\nCustomerLinkField.defaultProps = {\n source: 'customer_id',\n addLabel: true,\n};\n\nexport default CustomerLinkField;\n","import * as React from 'react';\nimport { NumberField, NumberFieldProps } from 'react-admin';\n\nconst ColoredNumberField = (props: NumberFieldProps) =>\n props.record && props.source ? (\n props.record[props.source] > 500 ? (\n <span style={{ color: 'red' }}>\n <NumberField {...props} />\n </span>\n ) : (\n <NumberField {...props} />\n )\n ) : null;\n\nColoredNumberField.defaultProps = NumberField.defaultProps;\n\nexport default ColoredNumberField;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport Avatar from '@material-ui/core/Avatar';\nimport { FieldProps } from 'react-admin';\nimport { Customer } from '../types';\n\ninterface Props extends FieldProps<Customer> {\n className?: string;\n size?: string;\n}\n\nconst AvatarField: FC<Props> = ({ record, size = '25', className }) =>\n record ? (\n <Avatar\n src={`${record.avatar}?size=${size}x${size}`}\n style={{ width: parseInt(size, 10), height: parseInt(size, 10) }}\n className={className}\n />\n ) : null;\n\nexport default AvatarField;\n","// in src/comments.js\nimport * as React from 'react';\nimport { FC } from 'react';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n DateField,\n EditButton,\n useTranslate,\n NumberField,\n Identifier,\n} from 'react-admin';\n\nimport AvatarField from './AvatarField';\nimport ColoredNumberField from './ColoredNumberField';\nimport SegmentsField from './SegmentsField';\nimport { Customer } from '../types';\n\nconst useStyles = makeStyles(theme => ({\n root: { margin: '1em' },\n card: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n margin: '0.5rem 0',\n },\n cardTitleContent: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n cardContent: {\n ...theme.typography.body1,\n display: 'flex',\n flexDirection: 'column',\n },\n}));\n\ninterface Props {\n ids?: Identifier[];\n data?: { [key: string]: Customer };\n basePath?: string;\n}\n\nconst MobileGrid: FC<Props> = ({ ids, data, basePath }) => {\n const translate = useTranslate();\n const classes = useStyles();\n\n if (!ids || !data) {\n return null;\n }\n\n return (\n <div className={classes.root}>\n {ids.map(id => (\n <Card key={id} className={classes.card}>\n <CardHeader\n title={\n <div className={classes.cardTitleContent}>\n <h2>{`${data[id].first_name} ${data[id].last_name}`}</h2>\n <EditButton\n resource=\"visitors\"\n basePath={basePath}\n record={data[id]}\n />\n </div>\n }\n avatar={<AvatarField record={data[id]} size=\"45\" />}\n />\n <CardContent className={classes.cardContent}>\n <div>\n {translate(\n 'resources.customers.fields.last_seen_gte'\n )}\n  \n <DateField record={data[id]} source=\"last_seen\" />\n </div>\n <div>\n {translate(\n 'resources.commands.name',\n data[id].nb_commands || 1\n )}\n  : \n <NumberField\n record={data[id]}\n source=\"nb_commands\"\n label=\"resources.customers.fields.commands\"\n />\n </div>\n <div>\n {translate(\n 'resources.customers.fields.total_spent'\n )}\n   :{' '}\n <ColoredNumberField\n record={data[id]}\n source=\"total_spent\"\n options={{ style: 'currency', currency: 'USD' }}\n />\n </div>\n </CardContent>\n {data[id].groups && data[id].groups.length > 0 && (\n <CardContent className={classes.cardContent}>\n <SegmentsField record={data[id]} />\n </CardContent>\n )}\n </Card>\n ))}\n </div>\n );\n};\n\nMobileGrid.defaultProps = {\n data: {},\n ids: [],\n};\n\nexport default MobileGrid;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport { Card as MuiCard, CardContent } from '@material-ui/core';\nimport { withStyles } from '@material-ui/core/styles';\nimport AccessTimeIcon from '@material-ui/icons/AccessTime';\nimport MonetizationOnIcon from '@material-ui/icons/MonetizationOnOutlined';\nimport MailIcon from '@material-ui/icons/MailOutline';\nimport LocalOfferIcon from '@material-ui/icons/LocalOfferOutlined';\nimport { FilterList, FilterListItem, FilterLiveSearch } from 'react-admin';\nimport {\n endOfYesterday,\n startOfWeek,\n subWeeks,\n startOfMonth,\n subMonths,\n} from 'date-fns';\n\nimport segments from '../segments/data';\n\nconst Card = withStyles(theme => ({\n root: {\n [theme.breakpoints.up('sm')]: {\n order: -1,\n width: '15em',\n marginRight: '1em',\n },\n [theme.breakpoints.down('sm')]: {\n display: 'none',\n },\n },\n}))(MuiCard);\n\nconst Aside: FC = () => (\n <Card>\n <CardContent>\n <FilterLiveSearch />\n\n <FilterList\n label=\"resources.customers.filters.last_visited\"\n icon={<AccessTimeIcon />}\n >\n <FilterListItem\n label=\"resources.customers.filters.today\"\n value={{\n last_seen_gte: endOfYesterday().toISOString(),\n last_seen_lte: undefined,\n }}\n />\n <FilterListItem\n label=\"resources.customers.filters.this_week\"\n value={{\n last_seen_gte: startOfWeek(new Date()).toISOString(),\n last_seen_lte: undefined,\n }}\n />\n <FilterListItem\n label=\"resources.customers.filters.last_week\"\n value={{\n last_seen_gte: subWeeks(\n startOfWeek(new Date()),\n 1\n ).toISOString(),\n last_seen_lte: startOfWeek(new Date()).toISOString(),\n }}\n />\n <FilterListItem\n label=\"resources.customers.filters.this_month\"\n value={{\n last_seen_gte: startOfMonth(new Date()).toISOString(),\n last_seen_lte: undefined,\n }}\n />\n <FilterListItem\n label=\"resources.customers.filters.last_month\"\n value={{\n last_seen_gte: subMonths(\n startOfMonth(new Date()),\n 1\n ).toISOString(),\n last_seen_lte: startOfMonth(new Date()).toISOString(),\n }}\n />\n <FilterListItem\n label=\"resources.customers.filters.earlier\"\n value={{\n last_seen_gte: undefined,\n last_seen_lte: subMonths(\n startOfMonth(new Date()),\n 1\n ).toISOString(),\n }}\n />\n </FilterList>\n\n <FilterList\n label=\"resources.customers.filters.has_ordered\"\n icon={<MonetizationOnIcon />}\n >\n <FilterListItem\n label=\"ra.boolean.true\"\n value={{\n nb_commands_gte: 1,\n nb_commands_lte: undefined,\n }}\n />\n <FilterListItem\n label=\"ra.boolean.false\"\n value={{\n nb_commands_gte: undefined,\n nb_commands_lte: 0,\n }}\n />\n </FilterList>\n\n <FilterList\n label=\"resources.customers.filters.has_newsletter\"\n icon={<MailIcon />}\n >\n <FilterListItem\n label=\"ra.boolean.true\"\n value={{ has_newsletter: true }}\n />\n <FilterListItem\n label=\"ra.boolean.false\"\n value={{ has_newsletter: false }}\n />\n </FilterList>\n\n <FilterList\n label=\"resources.customers.filters.group\"\n icon={<LocalOfferIcon />}\n >\n {segments.map(segment => (\n <FilterListItem\n label={segment.name}\n key={segment.id}\n value={{ groups: segment.id }}\n />\n ))}\n </FilterList>\n </CardContent>\n </Card>\n);\n\nexport default Aside;\n","import * as React from 'react';\nimport {\n BooleanField,\n Datagrid,\n DateField,\n DateInput,\n Filter,\n FilterProps,\n List,\n ListProps,\n NullableBooleanInput,\n NumberField,\n SearchInput,\n} from 'react-admin';\nimport { useMediaQuery, Theme } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport SegmentsField from './SegmentsField';\nimport SegmentInput from './SegmentInput';\nimport CustomerLinkField from './CustomerLinkField';\nimport ColoredNumberField from './ColoredNumberField';\nimport MobileGrid from './MobileGrid';\nimport VisitorListAside from './VisitorListAside';\nimport { ReactElement } from 'react';\n\nconst VisitorFilter = (props: Omit<FilterProps, 'children'>) => (\n <Filter {...props}>\n <SearchInput source=\"q\" alwaysOn />\n <DateInput source=\"last_seen_gte\" />\n <NullableBooleanInput source=\"has_ordered\" />\n <NullableBooleanInput source=\"has_newsletter\" defaultValue />\n <SegmentInput />\n </Filter>\n);\n\nconst useStyles = makeStyles(theme => ({\n nb_commands: { color: 'purple' },\n hiddenOnSmallScreens: {\n display: 'table-cell',\n [theme.breakpoints.down('md')]: {\n display: 'none',\n },\n },\n}));\n\nconst VisitorList = (props: ListProps): ReactElement => {\n const classes = useStyles();\n const isXsmall = useMediaQuery<Theme>(theme =>\n theme.breakpoints.down('xs')\n );\n const isSmall = useMediaQuery<Theme>(theme => theme.breakpoints.down('sm'));\n return (\n <List\n {...props}\n filters={isSmall ? <VisitorFilter /> : undefined}\n sort={{ field: 'last_seen', order: 'DESC' }}\n perPage={25}\n aside={<VisitorListAside />}\n >\n {isXsmall ? (\n <MobileGrid />\n ) : (\n <Datagrid optimized rowClick=\"edit\">\n <CustomerLinkField />\n <DateField source=\"last_seen\" />\n <NumberField\n source=\"nb_commands\"\n label=\"resources.customers.fields.commands\"\n className={classes.nb_commands}\n />\n <ColoredNumberField\n source=\"total_spent\"\n options={{ style: 'currency', currency: 'USD' }}\n />\n <DateField source=\"latest_purchase\" showTime />\n <BooleanField source=\"has_newsletter\" label=\"News.\" />\n <SegmentsField\n cellClassName={classes.hiddenOnSmallScreens}\n headerClassName={classes.hiddenOnSmallScreens}\n />\n </Datagrid>\n )}\n </List>\n );\n};\n\nexport default VisitorList;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport {\n Create,\n CreateProps,\n DateInput,\n SimpleForm,\n TextInput,\n useTranslate,\n PasswordInput,\n required,\n email,\n} from 'react-admin';\nimport { AnyObject } from 'react-final-form';\nimport { Typography, Box } from '@material-ui/core';\nimport { makeStyles, Theme } from '@material-ui/core/styles';\nimport { Styles } from '@material-ui/styles/withStyles';\n\nexport const styles: Styles<Theme, any> = {\n first_name: { display: 'inline-block' },\n last_name: { display: 'inline-block', marginLeft: 32 },\n email: { width: 544 },\n address: { maxWidth: 544 },\n zipcode: { display: 'inline-block' },\n city: { display: 'inline-block', marginLeft: 32 },\n comment: {\n maxWidth: '20em',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n password: { display: 'inline-block' },\n confirm_password: { display: 'inline-block', marginLeft: 32 },\n};\n\nconst useStyles = makeStyles(styles);\n\nexport const validatePasswords = ({\n password,\n confirm_password,\n}: AnyObject) => {\n const errors = {} as any;\n\n if (password && confirm_password && password !== confirm_password) {\n errors.confirm_password = [\n 'resources.customers.errors.password_mismatch',\n ];\n }\n\n return errors;\n};\n\nconst VisitorCreate: FC<CreateProps> = props => {\n const classes = useStyles(props);\n\n return (\n <Create {...props}>\n <SimpleForm validate={validatePasswords}>\n <SectionTitle label=\"resources.customers.fieldGroups.identity\" />\n <TextInput\n autoFocus\n source=\"first_name\"\n formClassName={classes.first_name}\n validate={requiredValidate}\n />\n <TextInput\n source=\"last_name\"\n formClassName={classes.last_name}\n validate={requiredValidate}\n />\n <TextInput\n type=\"email\"\n source=\"email\"\n validation={{ email: true }}\n fullWidth\n formClassName={classes.email}\n validate={[required(), email()]}\n />\n <DateInput source=\"birthday\" />\n <Separator />\n <SectionTitle label=\"resources.customers.fieldGroups.address\" />\n <TextInput\n source=\"address\"\n formClassName={classes.address}\n multiline\n fullWidth\n helperText={false}\n />\n <TextInput\n source=\"zipcode\"\n formClassName={classes.zipcode}\n helperText={false}\n />\n <TextInput\n source=\"city\"\n formClassName={classes.city}\n helperText={false}\n />\n <Separator />\n <SectionTitle label=\"resources.customers.fieldGroups.password\" />\n <PasswordInput\n source=\"password\"\n formClassName={classes.password}\n />\n <PasswordInput\n source=\"confirm_password\"\n formClassName={classes.confirm_password}\n />\n </SimpleForm>\n </Create>\n );\n};\n\nconst requiredValidate = [required()];\n\nconst SectionTitle = ({ label }: { label: string }) => {\n const translate = useTranslate();\n\n return (\n <Typography variant=\"h6\" gutterBottom>\n {translate(label)}\n </Typography>\n );\n};\n\nconst Separator = () => <Box pt=\"1em\" />;\n\nexport default VisitorCreate;\n","import * as React from 'react';\nimport { FunctionField, FieldProps } from 'react-admin';\nimport { Order } from '../types';\n\nconst render = (record?: Order) => record && record.basket.length;\n\nconst NbItemsField = ({ record }: FieldProps<Order>) => (\n <FunctionField<Order> record={record} render={render} />\n);\n\nNbItemsField.defaultProps = {\n label: 'resources.commands.fields.nb_items',\n textAlign: 'right',\n};\n\nexport default NbItemsField;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport { ReferenceField, ReferenceFieldProps } from 'react-admin';\n\nimport FullNameField from './FullNameField';\n\nconst CustomerReferenceField: FC<\n Omit<ReferenceFieldProps, 'reference' | 'children' | 'source'> & {\n source?: string;\n }\n> = props => (\n <ReferenceField label=\"title\" source=\"customer_id\" reference=\"customers\" {...props}>\n <FullNameField />\n </ReferenceField>\n);\n\nCustomerReferenceField.defaultProps = {\n source: 'customer_id',\n addLabel: true,\n};\n\nexport default CustomerReferenceField;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport { FieldProps } from 'react-admin';\nimport { Customer } from '../types';\n\nconst AddressField: FC<FieldProps<Customer>> = ({ record }) =>\n record ? (\n <span>\n {record.address}, {record.city}, {record.stateAbbr} {record.zipcode}\n </span>\n ) : null;\n\nexport default AddressField;\n","// in src/comments.js\nimport * as React from 'react';\nimport { FC } from 'react';\nimport { Card, CardHeader, CardContent } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n DateField,\n EditButton,\n NumberField,\n TextField,\n BooleanField,\n useTranslate,\n RecordMap,\n Identifier,\n Record,\n} from 'react-admin';\n\nimport CustomerReferenceField from '../visitors/CustomerReferenceField';\n\nconst useListStyles = makeStyles(theme => ({\n card: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n margin: '0.5rem 0',\n },\n cardTitleContent: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n cardContent: theme.typography.body1,\n cardContentRow: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n margin: '0.5rem 0',\n },\n}));\n\ninterface MobileGridProps {\n ids?: Identifier[];\n data?: RecordMap<Record>;\n basePath?: string;\n}\n\nconst MobileGrid: FC<MobileGridProps> = ({ ids, data, basePath }) => {\n const translate = useTranslate();\n const classes = useListStyles();\n\n if (!ids || !data || !basePath) {\n return null;\n }\n\n return (\n <div style={{ margin: '1em' }}>\n {ids.map(id => (\n <Card key={id} className={classes.card}>\n <CardHeader\n title={\n <div className={classes.cardTitleContent}>\n <span>\n {translate('resources.commands.name', 1)}\n : \n <TextField\n record={data[id]}\n source=\"reference\"\n />\n </span>\n <EditButton\n resource=\"commands\"\n basePath={basePath}\n record={data[id]}\n />\n </div>\n }\n />\n <CardContent className={classes.cardContent}>\n <span className={classes.cardContentRow}>\n {translate('resources.customers.name', 1)}: \n <CustomerReferenceField\n record={data[id]}\n basePath={basePath}\n />\n </span>\n <span className={classes.cardContentRow}>\n {translate('resources.reviews.fields.date')}: \n <DateField\n record={data[id]}\n source=\"date\"\n showTime\n />\n </span>\n <span className={classes.cardContentRow}>\n {translate(\n 'resources.commands.fields.basket.total'\n )}\n : \n <NumberField\n record={data[id]}\n source=\"total\"\n options={{ style: 'currency', currency: 'USD' }}\n />\n </span>\n <span className={classes.cardContentRow}>\n {translate('resources.commands.fields.status')}\n : \n <TextField source=\"status\" record={data[id]} />\n </span>\n <span className={classes.cardContentRow}>\n {translate('resources.commands.fields.returned')}\n : \n <BooleanField record={data[id]} source=\"returned\" />\n </span>\n </CardContent>\n </Card>\n ))}\n </div>\n );\n};\n\nMobileGrid.defaultProps = {\n data: {},\n ids: [],\n};\n\nexport default MobileGrid;\n","import * as React from 'react';\nimport { FC, Fragment, useCallback, useEffect, useState } from 'react';\nimport {\n AutocompleteInput,\n BooleanField,\n Datagrid,\n DatagridProps,\n DateField,\n DateInput,\n Filter,\n FilterProps,\n Identifier,\n List,\n ListContextProvider,\n ListProps,\n NullableBooleanInput,\n NumberField,\n ReferenceInput,\n ReferenceField,\n SearchInput,\n TextField,\n TextInput,\n useGetList,\n useListContext,\n} from 'react-admin';\nimport { useMediaQuery, Divider, Tabs, Tab, Theme } from '@material-ui/core';\n\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport NbItemsField from './NbItemsField';\nimport CustomerReferenceField from '../visitors/CustomerReferenceField';\nimport AddressField from '../visitors/AddressField';\nimport MobileGrid from './MobileGrid';\nimport { Customer } from '../types';\n\nconst OrderFilter: FC<Omit<FilterProps, 'children'>> = props => (\n <Filter {...props}>\n <SearchInput source=\"q\" alwaysOn />\n <ReferenceInput source=\"customer_id\" reference=\"customers\">\n <AutocompleteInput\n optionText={(choice: Customer) =>\n choice.id // the empty choice is { id: '' }\n ? `${choice.first_name} ${choice.last_name}`\n : ''\n }\n />\n </ReferenceInput>\n <DateInput source=\"date_gte\" />\n <DateInput source=\"date_lte\" />\n <TextInput source=\"total_gte\" />\n <NullableBooleanInput source=\"returned\" />\n </Filter>\n);\n\nconst useDatagridStyles = makeStyles({\n total: { fontWeight: 'bold' },\n});\n\nconst tabs = [\n { id: 'ordered', name: 'ordered' },\n { id: 'delivered', name: 'delivered' },\n { id: 'cancelled', name: 'cancelled' },\n];\n\ninterface TabbedDatagridProps extends DatagridProps {}\n\nconst useGetTotals = (filterValues: any) => {\n const { total: totalOrdered } = useGetList(\n 'commands',\n { perPage: 1, page: 1 },\n { field: 'id', order: 'ASC' },\n { ...filterValues, status: 'ordered' }\n );\n const { total: totalDelivered } = useGetList(\n 'commands',\n { perPage: 1, page: 1 },\n { field: 'id', order: 'ASC' },\n { ...filterValues, status: 'delivered' }\n );\n const { total: totalCancelled } = useGetList(\n 'commands',\n { perPage: 1, page: 1 },\n { field: 'id', order: 'ASC' },\n { ...filterValues, status: 'cancelled' }\n );\n\n return {\n ordered: totalOrdered,\n delivered: totalDelivered,\n cancelled: totalCancelled,\n };\n};\n\nconst TabbedDatagrid: FC<TabbedDatagridProps> = props => {\n const listContext = useListContext();\n const { ids, filterValues, setFilters, displayedFilters } = listContext;\n const classes = useDatagridStyles();\n const isXSmall = useMediaQuery<Theme>(theme =>\n theme.breakpoints.down('xs')\n );\n const [ordered, setOrdered] = useState<Identifier[]>([] as Identifier[]);\n const [delivered, setDelivered] = useState<Identifier[]>(\n [] as Identifier[]\n );\n const [cancelled, setCancelled] = useState<Identifier[]>(\n [] as Identifier[]\n );\n const totals = useGetTotals(filterValues) as any;\n\n useEffect(() => {\n if (ids && ids !== filterValues.status) {\n switch (filterValues.status) {\n case 'ordered':\n setOrdered(ids);\n break;\n case 'delivered':\n setDelivered(ids);\n break;\n case 'cancelled':\n setCancelled(ids);\n break;\n }\n }\n }, [ids, filterValues.status]);\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<{}>, value: any) => {\n setFilters &&\n setFilters(\n { ...filterValues, status: value },\n displayedFilters\n );\n },\n [displayedFilters, filterValues, setFilters]\n );\n\n const selectedIds =\n filterValues.status === 'ordered'\n ? ordered\n : filterValues.status === 'delivered'\n ? delivered\n : cancelled;\n\n return (\n <Fragment>\n <Tabs\n variant=\"fullWidth\"\n centered\n value={filterValues.status}\n indicatorColor=\"primary\"\n onChange={handleChange}\n >\n {tabs.map(choice => (\n <Tab\n key={choice.id}\n label={\n totals[choice.name]\n ? `${choice.name} (${totals[choice.name]})`\n : choice.name\n }\n value={choice.id}\n />\n ))}\n </Tabs>\n <Divider />\n {isXSmall ? (\n <ListContextProvider\n value={{ ...listContext, ids: selectedIds }}\n >\n <MobileGrid {...props} ids={selectedIds} />\n </ListContextProvider>\n ) : (\n <div>\n {filterValues.status === 'ordered' && (\n <ListContextProvider\n value={{ ...listContext, ids: ordered }}\n >\n <Datagrid {...props} optimized rowClick=\"edit\">\n <DateField source=\"date\" showTime />\n <TextField source=\"reference\" />\n <CustomerReferenceField />\n <ReferenceField\n source=\"customer_id\"\n reference=\"customers\"\n link={false}\n label=\"resources.commands.fields.address\"\n >\n <AddressField />\n </ReferenceField>\n <NbItemsField />\n <NumberField\n source=\"total\"\n options={{\n style: 'currency',\n currency: 'USD',\n }}\n className={classes.total}\n />\n </Datagrid>\n </ListContextProvider>\n )}\n {filterValues.status === 'delivered' && (\n <ListContextProvider\n value={{ ...listContext, ids: delivered }}\n >\n <Datagrid {...props} rowClick=\"edit\">\n <DateField source=\"date\" showTime />\n <TextField source=\"reference\" />\n <CustomerReferenceField />\n <ReferenceField\n source=\"customer_id\"\n reference=\"customers\"\n link={false}\n label=\"resources.commands.fields.address\"\n >\n <AddressField />\n </ReferenceField>\n <NbItemsField />\n <NumberField\n source=\"total\"\n options={{\n style: 'currency',\n currency: 'USD',\n }}\n className={classes.total}\n />\n <BooleanField source=\"returned\" />\n </Datagrid>\n </ListContextProvider>\n )}\n {filterValues.status === 'cancelled' && (\n <ListContextProvider\n value={{ ...listContext, ids: cancelled }}\n >\n <Datagrid {...props} rowClick=\"edit\">\n <DateField source=\"date\" showTime />\n <TextField source=\"reference\" />\n <CustomerReferenceField />\n <ReferenceField\n source=\"customer_id\"\n reference=\"customers\"\n link={false}\n label=\"resources.commands.fields.address\"\n >\n <AddressField />\n </ReferenceField>\n <NbItemsField />\n <NumberField\n source=\"total\"\n options={{\n style: 'currency',\n currency: 'USD',\n }}\n className={classes.total}\n />\n <BooleanField source=\"returned\" />\n </Datagrid>\n </ListContextProvider>\n )}\n </div>\n )}\n </Fragment>\n );\n};\n\nconst OrderList: FC<ListProps> = props => (\n <List\n {...props}\n filterDefaultValues={{ status: 'ordered' }}\n sort={{ field: 'date', order: 'DESC' }}\n perPage={25}\n filters={<OrderFilter />}\n >\n <TabbedDatagrid />\n </List>\n);\n\nexport default OrderList;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Link, FieldProps, useTranslate, useQueryWithStore } from 'react-admin';\n\nimport { AppState, Order, Product } from '../types';\n\nconst useStyles = makeStyles({\n rightAlignedCell: { textAlign: 'right' },\n});\n\nconst Basket: FC<FieldProps<Order>> = ({ record }) => {\n const classes = useStyles();\n const translate = useTranslate();\n\n const { loaded, data: products } = useQueryWithStore<AppState>(\n {\n type: 'getMany',\n resource: 'products',\n payload: {\n ids: record ? record.basket.map(item => item.product_id) : [],\n },\n },\n {},\n state => {\n const productIds = record\n ? record.basket.map(item => item.product_id)\n : [];\n\n return productIds\n .map<Product>(\n productId =>\n state.admin.resources.products.data[\n productId\n ] as Product\n )\n .filter(r => typeof r !== 'undefined')\n .reduce((prev, next) => {\n prev[next.id] = next;\n return prev;\n }, {} as { [key: string]: Product });\n }\n );\n\n if (!loaded || !record) return null;\n\n return (\n <Table>\n <TableHead>\n <TableRow>\n <TableCell>\n {translate(\n 'resources.commands.fields.basket.reference'\n )}\n </TableCell>\n <TableCell className={classes.rightAlignedCell}>\n {translate(\n 'resources.commands.fields.basket.unit_price'\n )}\n </TableCell>\n <TableCell className={classes.rightAlignedCell}>\n {translate('resources.commands.fields.basket.quantity')}\n </TableCell>\n <TableCell className={classes.rightAlignedCell}>\n {translate('resources.commands.fields.basket.total')}\n </TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {record.basket.map(\n (item: any) =>\n products[item.product_id] && (\n <TableRow key={item.product_id}>\n <TableCell>\n <Link to={`/products/${item.product_id}`}>\n {products[item.product_id].reference}\n </Link>\n </TableCell>\n <TableCell className={classes.rightAlignedCell}>\n {products[\n item.product_id\n ].price.toLocaleString(undefined, {\n style: 'currency',\n currency: 'USD',\n })}\n </TableCell>\n <TableCell className={classes.rightAlignedCell}>\n {item.quantity}\n </TableCell>\n <TableCell className={classes.rightAlignedCell}>\n {(\n products[item.product_id].price *\n item.quantity\n ).toLocaleString(undefined, {\n style: 'currency',\n currency: 'USD',\n })}\n </TableCell>\n </TableRow>\n )\n )}\n </TableBody>\n </Table>\n );\n};\n\nexport default Basket;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport classnames from 'classnames';\nimport { Table, TableBody, TableCell, TableRow } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { FieldProps, useTranslate } from 'react-admin';\n\nimport { Order } from '../types';\n\nconst useStyles = makeStyles({\n container: { minWidth: '35em' },\n rightAlignedCell: { textAlign: 'right' },\n boldCell: { fontWeight: 'bold' },\n});\n\nconst Totals: FC<FieldProps<Order>> = ({ record }: { record?: Order }) => {\n const classes = useStyles();\n const translate = useTranslate();\n\n return (\n <Table className={classes.container}>\n <TableBody>\n <TableRow>\n <TableCell>\n {translate('resources.commands.fields.basket.sum')}\n </TableCell>\n <TableCell className={classes.rightAlignedCell}>\n {record?.total_ex_taxes.toLocaleString(undefined, {\n style: 'currency',\n currency: 'USD',\n })}\n </TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n {translate('resources.commands.fields.basket.delivery')}\n </TableCell>\n <TableCell className={classes.rightAlignedCell}>\n {record?.delivery_fees.toLocaleString(undefined, {\n style: 'currency',\n currency: 'USD',\n })}\n </TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n {translate('resources.commands.fields.basket.taxes')} (\n {record?.tax_rate.toLocaleString(undefined, {\n style: 'percent',\n })}\n )\n </TableCell>\n <TableCell className={classes.rightAlignedCell}>\n {record?.taxes.toLocaleString(undefined, {\n style: 'currency',\n currency: 'USD',\n })}\n </TableCell>\n </TableRow>\n <TableRow>\n <TableCell className={classes.boldCell}>\n {translate('resources.commands.fields.basket.total')}\n </TableCell>\n <TableCell\n className={classnames(\n classes.boldCell,\n classes.rightAlignedCell\n )}\n >\n {record?.total.toLocaleString(undefined, {\n style: 'currency',\n currency: 'USD',\n })}\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n );\n};\n\nexport default Totals;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport {\n BooleanInput,\n DateField,\n Edit,\n EditProps,\n FormWithRedirect,\n Labeled,\n ReferenceField,\n SelectInput,\n TextField,\n Toolbar,\n useTranslate,\n} from 'react-admin';\nimport { Link as RouterLink } from 'react-router-dom';\nimport {\n Card,\n CardContent,\n Box,\n Grid,\n Typography,\n Link,\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport { Order, Customer } from '../types';\nimport Basket from './Basket';\nimport Totals from './Totals';\n\ninterface OrderTitleProps {\n record?: Order;\n}\n\nconst OrderTitle: FC<OrderTitleProps> = ({ record }) => {\n const translate = useTranslate();\n return record ? (\n <span>\n {translate('resources.commands.title', {\n reference: record.reference,\n })}\n </span>\n ) : null;\n};\n\nconst CustomerDetails = ({ record }: { record?: Customer }) => (\n <Box display=\"flex\" flexDirection=\"column\">\n <Typography\n component={RouterLink}\n color=\"primary\"\n to={`/customers/${record?.id}`}\n style={{ textDecoration: 'none' }}\n >\n {record?.first_name} {record?.last_name}\n </Typography>\n <Typography\n component={Link}\n color=\"primary\"\n href={`mailto:${record?.email}`}\n style={{ textDecoration: 'none' }}\n >\n {record?.email}\n </Typography>\n </Box>\n);\n\nconst CustomerAddress = ({ record }: { record?: Customer }) => (\n <Box>\n <Typography>\n {record?.first_name} {record?.last_name}\n </Typography>\n <Typography>{record?.address}</Typography>\n <Typography>\n {record?.city}, {record?.stateAbbr} {record?.zipcode}\n </Typography>\n </Box>\n);\n\nconst useEditStyles = makeStyles({\n root: { alignItems: 'flex-start' },\n});\n\nconst Spacer = () => <Box m={1}> </Box>;\n\nconst OrderForm = (props: any) => {\n const translate = useTranslate();\n return (\n <FormWithRedirect\n {...props}\n render={(formProps: any) => (\n <Box maxWidth=\"50em\">\n <Card>\n <CardContent>\n <Grid container spacing={1}>\n <Grid item xs={12} sm={12} md={8}>\n <Typography variant=\"h6\" gutterBottom>\n {translate(\n 'resources.commands.section.order'\n )}\n </Typography>\n <Grid container>\n <Grid item xs={12} sm={12} md={6}>\n <Labeled\n source=\"date\"\n resource=\"commands\"\n >\n <DateField\n source=\"date\"\n resource=\"commands\"\n record={formProps.record}\n />\n </Labeled>\n </Grid>\n <Grid item xs={12} sm={12} md={6}>\n <Labeled\n source=\"reference\"\n resource=\"commands\"\n >\n <TextField\n source=\"reference\"\n resource=\"commands\"\n record={formProps.record}\n />\n </Labeled>\n </Grid>\n </Grid>\n <Grid container>\n <Grid item xs={12} sm={12} md={6}>\n <SelectInput\n resource=\"commands\"\n source=\"status\"\n choices={[\n {\n id: 'delivered',\n name: 'delivered',\n },\n {\n id: 'ordered',\n name: 'ordered',\n },\n {\n id: 'cancelled',\n name: 'cancelled',\n },\n {\n id: 'unknown',\n name: 'unknown',\n disabled: true,\n },\n ]}\n />\n </Grid>\n <Grid item xs={12} sm={12} md={6}>\n <Box mt={2}>\n <BooleanInput\n row={true}\n resource=\"commands\"\n source=\"returned\"\n />\n </Box>\n </Grid>\n </Grid>\n </Grid>\n <Grid item xs={12} sm={12} md={4}>\n <Typography variant=\"h6\" gutterBottom>\n {translate(\n 'resources.commands.section.customer'\n )}\n </Typography>\n <ReferenceField\n source=\"customer_id\"\n resource=\"commands\"\n reference=\"customers\"\n basePath=\"/customers\"\n record={formProps.record}\n link={false}\n >\n <CustomerDetails />\n </ReferenceField>\n <Spacer />\n\n <Typography variant=\"h6\" gutterBottom>\n {translate(\n 'resources.commands.section.shipping_address'\n )}\n </Typography>\n <ReferenceField\n source=\"customer_id\"\n resource=\"commands\"\n reference=\"customers\"\n basePath=\"/customers\"\n record={formProps.record}\n link={false}\n >\n <CustomerAddress />\n </ReferenceField>\n </Grid>\n </Grid>\n <Spacer />\n\n <Typography variant=\"h6\" gutterBottom>\n {translate('resources.commands.section.items')}\n </Typography>\n <Box>\n <Basket record={formProps.record} />\n </Box>\n <Spacer />\n\n <Typography variant=\"h6\" gutterBottom>\n {translate('resources.commands.section.total')}\n </Typography>\n <Box>\n <Totals record={formProps.record} />\n </Box>\n </CardContent>\n <Toolbar\n record={formProps.record}\n basePath={formProps.basePath}\n undoable={true}\n invalid={formProps.invalid}\n handleSubmit={formProps.handleSubmit}\n saving={formProps.saving}\n resource=\"commands\"\n />\n </Card>\n </Box>\n )}\n />\n );\n};\nconst OrderEdit: FC<EditProps> = props => {\n const classes = useEditStyles();\n return (\n <Edit\n title={<OrderTitle />}\n classes={classes}\n {...props}\n component=\"div\"\n >\n <OrderForm />\n </Edit>\n );\n};\n\nexport default OrderEdit;\n","import OrderIcon from '@material-ui/icons/AttachMoney';\n\nimport OrderList from './OrderList';\nimport OrderEdit from './OrderEdit';\n\nexport default {\n list: OrderList,\n edit: OrderEdit,\n icon: OrderIcon,\n};\n","import * as React from 'react';\nimport { FC } from 'react';\nimport PropTypes from 'prop-types';\nimport ThumbUp from '@material-ui/icons/ThumbUp';\n\nimport {\n Button,\n useUpdateMany,\n useNotify,\n useRefresh,\n useUnselectAll,\n CRUD_UPDATE_MANY,\n BulkActionProps,\n Identifier,\n} from 'react-admin';\n\nconst noSelection: Identifier[] = [];\n\nconst BulkAcceptButton: FC<BulkActionProps> = ({\n selectedIds = noSelection,\n}) => {\n const notify = useNotify();\n const refresh = useRefresh();\n const unselectAll = useUnselectAll('reviews');\n\n const [approve, { loading }] = useUpdateMany(\n 'reviews',\n selectedIds,\n { status: 'accepted' },\n {\n action: CRUD_UPDATE_MANY,\n undoable: true,\n onSuccess: () => {\n notify(\n 'resources.reviews.notification.approved_success',\n 'info',\n {},\n true\n );\n refresh();\n unselectAll();\n },\n onFailure: () => {\n notify(\n 'resources.reviews.notification.approved_error',\n 'warning'\n );\n },\n }\n );\n\n return (\n <Button\n label=\"resources.reviews.action.accept\"\n onClick={approve}\n disabled={loading}\n >\n <ThumbUp />\n </Button>\n );\n};\n\nBulkAcceptButton.propTypes = {\n selectedIds: PropTypes.arrayOf(PropTypes.any).isRequired,\n};\n\nexport default BulkAcceptButton;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport PropTypes from 'prop-types';\nimport ThumbDown from '@material-ui/icons/ThumbDown';\n\nimport {\n Button,\n useUpdateMany,\n useNotify,\n useRefresh,\n useUnselectAll,\n CRUD_UPDATE_MANY,\n BulkActionProps,\n Identifier,\n} from 'react-admin';\n\nconst noSelection: Identifier[] = [];\n\nconst BulkRejectButton: FC<BulkActionProps> = ({\n selectedIds = noSelection,\n}) => {\n const notify = useNotify();\n const refresh = useRefresh();\n const unselectAll = useUnselectAll('reviews');\n\n const [reject, { loading }] = useUpdateMany(\n 'reviews',\n selectedIds,\n { status: 'rejected' },\n {\n action: CRUD_UPDATE_MANY,\n undoable: true,\n onSuccess: () => {\n notify(\n 'resources.reviews.notification.approved_success',\n 'info',\n {},\n true\n );\n refresh();\n unselectAll();\n },\n onFailure: () => {\n notify(\n 'resources.reviews.notification.approved_error',\n 'warning'\n );\n },\n }\n );\n\n return (\n <Button\n label=\"resources.reviews.action.reject\"\n onClick={reject}\n disabled={loading}\n >\n <ThumbDown />\n </Button>\n );\n};\n\nBulkRejectButton.propTypes = {\n selectedIds: PropTypes.arrayOf(PropTypes.any).isRequired,\n};\n\nexport default BulkRejectButton;\n","import * as React from 'react';\nimport { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemAvatar from '@material-ui/core/ListItemAvatar';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Link } from 'react-router-dom';\nimport {\n linkToRecord,\n ReferenceField,\n FunctionField,\n TextField,\n useListContext,\n Record,\n} from 'react-admin';\n\nimport AvatarField from '../visitors/AvatarField';\nimport { Review, Customer } from './../types';\n\nconst useStyles = makeStyles({\n root: {\n width: '100vw',\n },\n link: {\n textDecoration: 'none',\n color: 'inherit',\n },\n inline: {\n display: 'inline',\n },\n});\n\nconst ReviewListMobile = () => {\n const classes = useStyles();\n const { basePath, data, ids, loaded, total } = useListContext<Review>();\n\n return loaded || Number(total) > 0 ? (\n <List className={classes.root}>\n {(ids as Exclude<typeof ids, undefined>).map(id => {\n const item = (data as Exclude<typeof data, undefined>)[id];\n if (!item) return null;\n\n return (\n <Link\n to={linkToRecord(basePath, id)}\n className={classes.link}\n key={id}\n >\n <ListItem button>\n <ListItemAvatar>\n <ReferenceField\n record={item}\n source=\"customer_id\"\n reference=\"customers\"\n basePath={basePath}\n link={false}\n >\n <AvatarField size=\"40\" />\n </ReferenceField>\n </ListItemAvatar>\n <ListItemText\n primary={\n <Fragment>\n <ReferenceField\n record={item}\n source=\"customer_id\"\n reference=\"customers\"\n basePath={basePath}\n link={false}\n >\n <FunctionField\n render={(record?: Record) =>\n record\n ? `${\n (record as Customer)\n .first_name\n } ${\n (record as Customer)\n .last_name\n }`\n : ''\n }\n variant=\"subtitle1\"\n className={classes.inline}\n />\n </ReferenceField>{' '}\n on{' '}\n <ReferenceField\n record={item}\n source=\"product_id\"\n reference=\"products\"\n basePath={basePath}\n link={false}\n >\n <TextField\n source=\"reference\"\n variant=\"subtitle1\"\n className={classes.inline}\n />\n </ReferenceField>\n </Fragment>\n }\n secondary={item.comment}\n secondaryTypographyProps={{ noWrap: true }}\n />\n </ListItem>\n </Link>\n );\n })}\n </List>\n ) : null;\n};\n\nReviewListMobile.propTypes = {\n basePath: PropTypes.string,\n data: PropTypes.any,\n hasBulkActions: PropTypes.bool.isRequired,\n ids: PropTypes.array,\n onToggleItem: PropTypes.func,\n selectedIds: PropTypes.arrayOf(PropTypes.any).isRequired,\n};\n\nReviewListMobile.defaultProps = {\n hasBulkActions: false,\n selectedIds: [],\n};\n\nexport default ReviewListMobile;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport { ReferenceField, ReferenceFieldProps, TextField } from 'react-admin';\n\ninterface Props {\n source?: string;\n}\n\nconst ProductReferenceField: FC<\n Props & Omit<Omit<ReferenceFieldProps, 'source'>, 'reference' | 'children'>\n> = props => (\n <ReferenceField\n label=\"Product\"\n source=\"product_id\"\n reference=\"products\"\n {...props}\n >\n <TextField source=\"reference\" />\n </ReferenceField>\n);\n\nProductReferenceField.defaultProps = {\n source: 'product_id',\n addLabel: true,\n};\n\nexport default ProductReferenceField;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport Icon from '@material-ui/icons/Stars';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport { FieldProps } from 'react-admin';\n\nconst useStyles = makeStyles({\n root: {\n opacity: 0.87,\n whiteSpace: 'nowrap',\n display: 'flex',\n },\n large: {\n width: 20,\n height: 20,\n },\n small: {\n width: 15,\n height: 15,\n },\n});\n\ninterface OwnProps {\n size?: 'large' | 'small';\n}\n\nconst StarRatingField: FC<FieldProps & OwnProps> = ({\n record,\n size = 'large',\n}) => {\n const classes = useStyles();\n return record ? (\n <span className={classes.root}>\n {Array(record.rating)\n .fill(true)\n .map((_, i) => (\n <Icon\n key={i}\n className={\n size === 'large' ? classes.large : classes.small\n }\n />\n ))}\n </span>\n ) : null;\n};\n\nStarRatingField.defaultProps = {\n label: 'resources.reviews.fields.rating',\n source: 'rating',\n addLabel: true,\n};\n\nexport default StarRatingField;\n","import green from '@material-ui/core/colors/green';\nimport orange from '@material-ui/core/colors/orange';\nimport red from '@material-ui/core/colors/red';\nimport { useTheme } from '@material-ui/core/styles';\nimport { Identifier } from 'react-admin';\n\nimport { Review } from './../types';\n\nconst rowStyle = (selectedRow?: Identifier) => (record: Review) => {\n const theme = useTheme();\n let style = {};\n if (!record) {\n return style;\n }\n if (selectedRow && selectedRow === record.id) {\n style = {\n ...style,\n backgroundColor: theme.palette.action.selected,\n };\n }\n if (record.status === 'accepted')\n return {\n ...style,\n borderLeftColor: green[500],\n borderLeftWidth: 5,\n borderLeftStyle: 'solid',\n };\n if (record.status === 'pending')\n return {\n ...style,\n borderLeftColor: orange[500],\n borderLeftWidth: 5,\n borderLeftStyle: 'solid',\n };\n if (record.status === 'rejected')\n return {\n ...style,\n borderLeftColor: red[500],\n borderLeftWidth: 5,\n borderLeftStyle: 'solid',\n };\n return style;\n};\n\nexport default rowStyle;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport {\n Identifier,\n Datagrid,\n DateField,\n TextField,\n DatagridProps,\n} from 'react-admin';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport ProductReferenceField from '../products/ProductReferenceField';\nimport CustomerReferenceField from '../visitors/CustomerReferenceField';\nimport StarRatingField from './StarRatingField';\nimport rowStyle from './rowStyle';\n\nconst useListStyles = makeStyles({\n headerRow: {\n borderLeftColor: 'transparent',\n borderLeftWidth: 5,\n borderLeftStyle: 'solid',\n },\n headerCell: {\n padding: '6px 8px 6px 8px',\n },\n rowCell: {\n padding: '6px 8px 6px 8px',\n },\n comment: {\n maxWidth: '18em',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n});\n\nexport interface ReviewListDesktopProps extends DatagridProps {\n selectedRow?: Identifier;\n}\n\nconst ReviewListDesktop: FC<ReviewListDesktopProps> = ({\n selectedRow,\n ...props\n}) => {\n const classes = useListStyles();\n return (\n <Datagrid\n rowClick=\"edit\"\n // @ts-ignore\n rowStyle={rowStyle(selectedRow)}\n classes={{\n headerRow: classes.headerRow,\n headerCell: classes.headerCell,\n rowCell: classes.rowCell,\n }}\n optimized\n {...props}\n >\n <DateField source=\"date\" />\n <CustomerReferenceField link={false} />\n <ProductReferenceField link={false} />\n <StarRatingField size=\"small\" />\n <TextField source=\"comment\" cellClassName={classes.comment} />\n <TextField source=\"status\" />\n </Datagrid>\n );\n};\n\nexport default ReviewListDesktop;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport {\n AutocompleteInput,\n DateInput,\n Filter,\n ReferenceInput,\n SearchInput,\n SelectInput,\n FilterProps,\n} from 'react-admin';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Customer } from '../types';\n\nconst useFilterStyles = makeStyles({\n status: { width: 150 },\n});\n\nconst ReviewFilter: FC<Omit<FilterProps, 'children'>> = props => {\n const classes = useFilterStyles();\n return (\n <Filter {...props}>\n <SearchInput source=\"q\" alwaysOn />\n <SelectInput\n source=\"status\"\n choices={[\n { id: 'accepted', name: 'Accepted' },\n { id: 'pending', name: 'Pending' },\n { id: 'rejected', name: 'Rejected' },\n ]}\n className={classes.status}\n />\n <ReferenceInput source=\"customer_id\" reference=\"customers\">\n <AutocompleteInput\n optionText={(choice?: Customer) =>\n choice?.id // the empty choice is { id: '' }\n ? `${choice.first_name} ${choice.last_name}`\n : ''\n }\n />\n </ReferenceInput>\n <ReferenceInput source=\"product_id\" reference=\"products\">\n <AutocompleteInput optionText=\"reference\" />\n </ReferenceInput>\n <DateInput source=\"date_gte\" />\n <DateInput source=\"date_lte\" />\n </Filter>\n );\n};\n\nexport default ReviewFilter;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@material-ui/core/Button';\nimport ThumbUp from '@material-ui/icons/ThumbUp';\nimport { useTranslate, useUpdate, useNotify, useRedirect } from 'react-admin';\nimport { Review } from './../types';\n\n/**\n * This custom button demonstrate using useUpdate to update data\n */\nconst AcceptButton: FC<{ record: Review }> = ({ record }) => {\n const translate = useTranslate();\n const notify = useNotify();\n const redirectTo = useRedirect();\n\n const [approve, { loading }] = useUpdate(\n 'reviews',\n record.id,\n { status: 'accepted' },\n record,\n {\n undoable: true,\n onSuccess: () => {\n notify(\n 'resources.reviews.notification.approved_success',\n 'info',\n {},\n true\n );\n redirectTo('/reviews');\n },\n onFailure: () => {\n notify(\n 'resources.reviews.notification.approved_error',\n 'warning'\n );\n },\n }\n );\n return record && record.status === 'pending' ? (\n <Button\n variant=\"outlined\"\n color=\"primary\"\n size=\"small\"\n onClick={approve}\n disabled={loading}\n >\n <ThumbUp\n color=\"primary\"\n style={{ paddingRight: '0.5em', color: 'green' }}\n />\n {translate('resources.reviews.action.accept')}\n </Button>\n ) : (\n <span />\n );\n};\n\nAcceptButton.propTypes = {\n record: PropTypes.any,\n};\n\nexport default AcceptButton;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@material-ui/core/Button';\nimport ThumbDown from '@material-ui/icons/ThumbDown';\nimport { useTranslate, useUpdate, useNotify, useRedirect } from 'react-admin';\nimport { Review } from '../types';\n\n/**\n * This custom button demonstrate using a custom action to update data\n */\nconst RejectButton: FC<{ record: Review }> = ({ record }) => {\n const translate = useTranslate();\n const notify = useNotify();\n const redirectTo = useRedirect();\n\n const [reject, { loading }] = useUpdate(\n 'reviews',\n record.id,\n { status: 'rejected' },\n record,\n {\n undoable: true,\n onSuccess: () => {\n notify(\n 'resources.reviews.notification.rejected_success',\n 'info',\n {},\n true\n );\n redirectTo('/reviews');\n },\n onFailure: () => {\n notify(\n 'resources.reviews.notification.rejected_error',\n 'warning'\n );\n },\n }\n );\n\n return record && record.status === 'pending' ? (\n <Button\n variant=\"outlined\"\n color=\"primary\"\n size=\"small\"\n onClick={reject}\n disabled={loading}\n >\n <ThumbDown\n color=\"primary\"\n style={{ paddingRight: '0.5em', color: 'red' }}\n />\n {translate('resources.reviews.action.reject')}\n </Button>\n ) : (\n <span />\n );\n};\n\nRejectButton.propTypes = {\n record: PropTypes.any,\n};\n\nexport default RejectButton;\n","import * as React from 'react';\nimport { Fragment, FC } from 'react';\nimport MuiToolbar from '@material-ui/core/Toolbar';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport { SaveButton, DeleteButton, ToolbarProps } from 'react-admin';\nimport AcceptButton from './AcceptButton';\nimport RejectButton from './RejectButton';\nimport { Review } from '../types';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n backgroundColor: theme.palette.background.paper,\n display: 'flex',\n justifyContent: 'space-between',\n },\n}));\n\nconst ReviewEditToolbar: FC<ToolbarProps<Review>> = ({\n basePath,\n handleSubmitWithRedirect,\n invalid,\n record,\n resource,\n saving,\n}) => {\n const classes = useStyles();\n\n if (!record) return null;\n return (\n <MuiToolbar className={classes.root}>\n {record.status === 'pending' ? (\n <Fragment>\n <AcceptButton record={record} />\n <RejectButton record={record} />\n </Fragment>\n ) : (\n <Fragment>\n <SaveButton\n handleSubmitWithRedirect={handleSubmitWithRedirect}\n invalid={invalid}\n saving={saving}\n redirect=\"list\"\n submitOnEnter={true}\n />\n <DeleteButton\n basePath={basePath}\n record={record}\n resource={resource}\n />\n </Fragment>\n )}\n </MuiToolbar>\n );\n};\n\nexport default ReviewEditToolbar;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport {\n useEditController,\n EditContextProvider,\n useTranslate,\n TextInput,\n SimpleForm,\n DateField,\n EditProps,\n} from 'react-admin';\nimport { IconButton, Typography } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport CloseIcon from '@material-ui/icons/Close';\n\nimport ProductReferenceField from '../products/ProductReferenceField';\nimport CustomerReferenceField from '../visitors/CustomerReferenceField';\nimport StarRatingField from './StarRatingField';\nimport ReviewEditToolbar from './ReviewEditToolbar';\nimport { Review } from '../types';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n paddingTop: 40,\n },\n title: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n margin: '1em',\n },\n form: {\n [theme.breakpoints.up('xs')]: {\n width: 400,\n },\n [theme.breakpoints.down('xs')]: {\n width: '100vw',\n marginTop: -30,\n },\n },\n inlineField: {\n display: 'inline-block',\n width: '50%',\n },\n}));\n\ninterface Props extends EditProps {\n onCancel: () => void;\n}\n\nconst ReviewEdit: FC<Props> = ({ onCancel, ...props }) => {\n const classes = useStyles();\n const controllerProps = useEditController<Review>(props);\n const translate = useTranslate();\n if (!controllerProps.record) {\n return null;\n }\n return (\n <div className={classes.root}>\n <div className={classes.title}>\n <Typography variant=\"h6\">\n {translate('resources.reviews.detail')}\n </Typography>\n <IconButton onClick={onCancel}>\n <CloseIcon />\n </IconButton>\n </div>\n <EditContextProvider value={controllerProps}>\n <SimpleForm\n className={classes.form}\n basePath={controllerProps.basePath}\n record={controllerProps.record}\n save={controllerProps.save}\n version={controllerProps.version}\n redirect=\"list\"\n resource=\"reviews\"\n toolbar={<ReviewEditToolbar />}\n >\n <CustomerReferenceField\n formClassName={classes.inlineField}\n />\n <ProductReferenceField\n formClassName={classes.inlineField}\n />\n <DateField\n source=\"date\"\n formClassName={classes.inlineField}\n />\n <StarRatingField formClassName={classes.inlineField} />\n <TextInput\n source=\"comment\"\n rowsMax={15}\n multiline\n fullWidth\n />\n </SimpleForm>\n </EditContextProvider>\n </div>\n );\n};\n\nexport default ReviewEdit;\n","import * as React from 'react';\nimport { Fragment, useCallback, FC } from 'react';\nimport classnames from 'classnames';\nimport {\n BulkDeleteButton,\n List,\n ListProps,\n BulkActionProps,\n} from 'react-admin';\nimport { Route, RouteChildrenProps, useHistory } from 'react-router-dom';\nimport { Drawer, useMediaQuery, Theme } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport BulkAcceptButton from './BulkAcceptButton';\nimport BulkRejectButton from './BulkRejectButton';\nimport ReviewListMobile from './ReviewListMobile';\nimport ReviewListDesktop from './ReviewListDesktop';\nimport ReviewFilter from './ReviewFilter';\nimport ReviewEdit from './ReviewEdit';\n\nconst ReviewsBulkActionButtons = (props: BulkActionProps) => (\n <Fragment>\n <BulkAcceptButton {...props} />\n <BulkRejectButton {...props} />\n <BulkDeleteButton {...props} />\n </Fragment>\n);\n\nconst useStyles = makeStyles(theme => ({\n root: {\n display: 'flex',\n },\n list: {\n flexGrow: 1,\n transition: theme.transitions.create(['all'], {\n duration: theme.transitions.duration.enteringScreen,\n }),\n marginRight: 0,\n },\n listWithDrawer: {\n marginRight: 400,\n },\n drawerPaper: {\n zIndex: 100,\n },\n}));\n\nconst ReviewList: FC<ListProps> = props => {\n const classes = useStyles();\n const isXSmall = useMediaQuery<Theme>(theme =>\n theme.breakpoints.down('xs')\n );\n const history = useHistory();\n\n const handleClose = useCallback(() => {\n history.push('/reviews');\n }, [history]);\n\n return (\n <div className={classes.root}>\n <Route path=\"/reviews/:id\">\n {({ match }: RouteChildrenProps<{ id: string }>) => {\n const isMatch = !!(\n match &&\n match.params &&\n match.params.id !== 'create'\n );\n\n return (\n <Fragment>\n <List\n {...props}\n className={classnames(classes.list, {\n [classes.listWithDrawer]: isMatch,\n })}\n bulkActionButtons={<ReviewsBulkActionButtons />}\n filters={<ReviewFilter />}\n perPage={25}\n sort={{ field: 'date', order: 'DESC' }}\n >\n {isXSmall ? (\n <ReviewListMobile />\n ) : (\n <ReviewListDesktop\n selectedRow={\n isMatch\n ? parseInt(\n (match as any).params.id,\n 10\n )\n : undefined\n }\n />\n )}\n </List>\n <Drawer\n variant=\"persistent\"\n open={isMatch}\n anchor=\"right\"\n onClose={handleClose}\n classes={{\n paper: classes.drawerPaper,\n }}\n >\n {/* To avoid any errors if the route does not match, we don't render at all the component in this case */}\n {isMatch ? (\n <ReviewEdit\n id={(match as any).params.id}\n onCancel={handleClose}\n resource={props.resource}\n basePath={props.basePath}\n />\n ) : null}\n </Drawer>\n </Fragment>\n );\n }}\n </Route>\n </div>\n );\n};\n\nexport default ReviewList;\n","import ReviewIcon from '@material-ui/icons/Comment';\nimport ReviewList from './ReviewList';\n\nexport default {\n icon: ReviewIcon,\n list: ReviewList,\n};\n","import * as React from 'react';\nimport { FC } from 'react';\nimport PropTypes from 'prop-types';\nimport {\n NumberField,\n TextField,\n DateField,\n useTranslate,\n useGetList,\n Record,\n RecordMap,\n Identifier,\n ReferenceField,\n useLocale,\n} from 'react-admin';\nimport {\n Typography,\n Card,\n CardContent,\n Box,\n Link,\n Stepper,\n Step,\n StepLabel,\n StepContent,\n} from '@material-ui/core';\nimport { Link as RouterLink } from 'react-router-dom';\nimport AccessTimeIcon from '@material-ui/icons/AccessTime';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport order from '../orders';\nimport review from '../reviews';\nimport StarRatingField from '../reviews/StarRatingField';\nimport { Order as OrderRecord, Review as ReviewRecord } from '../types';\n\nconst useAsideStyles = makeStyles(theme => ({\n root: {\n width: 400,\n [theme.breakpoints.down('md')]: {\n display: 'none',\n },\n },\n}));\n\ninterface AsideProps {\n record?: Record;\n basePath?: string;\n}\n\nconst Aside: FC<AsideProps> = ({ record, basePath }) => {\n const classes = useAsideStyles();\n return (\n <div className={classes.root}>\n {record && <EventList record={record} basePath={basePath} />}\n </div>\n );\n};\n\nAside.propTypes = {\n record: PropTypes.any,\n basePath: PropTypes.string,\n};\n\ninterface EventListProps {\n record?: Record;\n basePath?: string;\n}\n\nconst useEventStyles = makeStyles({\n stepper: {\n background: 'none',\n border: 'none',\n marginLeft: '0.3em',\n },\n});\n\nconst EventList: FC<EventListProps> = ({ record, basePath }) => {\n const translate = useTranslate();\n const classes = useEventStyles();\n const locale = useLocale();\n const { data: orders, ids: orderIds } = useGetList<OrderRecord>(\n 'commands',\n { page: 1, perPage: 100 },\n { field: 'date', order: 'DESC' },\n { customer_id: record && record.id }\n );\n const { data: reviews, ids: reviewIds } = useGetList<ReviewRecord>(\n 'reviews',\n { page: 1, perPage: 100 },\n { field: 'date', order: 'DESC' },\n { customer_id: record && record.id }\n );\n const events = mixOrdersAndReviews(orders, orderIds, reviews, reviewIds);\n\n return (\n <>\n <Box m=\"0 0 1em 1em\">\n <Card>\n <CardContent>\n <Typography variant=\"h6\" gutterBottom>\n {translate(\n 'resources.customers.fieldGroups.history'\n )}\n </Typography>\n <Box display=\"flex\">\n <Box flexGrow={1}>\n <Box display=\"flex\" mb=\"1em\">\n <Box mr=\"1em\">\n <AccessTimeIcon\n fontSize=\"small\"\n color=\"disabled\"\n />\n </Box>\n <Box flexGrow={1}>\n <Typography>\n {translate(\n 'resources.customers.fields.first_seen'\n )}\n </Typography>\n <DateField\n record={record}\n source=\"first_seen\"\n />\n </Box>\n </Box>\n {orderIds && orderIds.length > 0 && (\n <Box display=\"flex\">\n <Box mr=\"1em\">\n <order.icon\n fontSize=\"small\"\n color=\"disabled\"\n />\n </Box>\n <Box flexGrow={1}>\n <Typography>\n {translate(\n 'resources.commands.amount',\n {\n smart_count:\n orderIds.length,\n }\n )}\n </Typography>\n </Box>\n </Box>\n )}\n </Box>\n <Box flexGrow={1}>\n <Box display=\"flex\" mb=\"1em\">\n <Box mr=\"1em\">\n <AccessTimeIcon\n fontSize=\"small\"\n color=\"disabled\"\n />\n </Box>\n <Box flexGrow={1}>\n <Typography>\n {translate(\n 'resources.customers.fields.last_seen'\n )}\n </Typography>\n <DateField\n record={record}\n source=\"last_seen\"\n />\n </Box>\n </Box>\n {reviewIds && reviewIds.length > 0 && (\n <Box display=\"flex\">\n <Box mr=\"1em\">\n <review.icon\n fontSize=\"small\"\n color=\"disabled\"\n />\n </Box>\n <Box flexGrow={1}>\n <Typography>\n {translate(\n 'resources.reviews.amount',\n {\n smart_count:\n reviewIds.length,\n }\n )}\n </Typography>\n </Box>\n </Box>\n )}\n </Box>\n </Box>\n </CardContent>\n </Card>\n </Box>\n <Stepper orientation=\"vertical\" classes={{ root: classes.stepper }}>\n {events.map(event => (\n <Step\n key={`${event.type}-${event.data.id}`}\n expanded\n active\n completed\n >\n <StepLabel\n StepIconComponent={() => {\n const Component =\n event.type === 'order'\n ? order.icon\n : review.icon;\n return (\n <Component\n fontSize=\"small\"\n color=\"disabled\"\n style={{ paddingLeft: 3 }}\n />\n );\n }}\n >\n {new Date(event.date).toLocaleString(locale, {\n weekday: 'long',\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n })}\n </StepLabel>\n <StepContent>\n {event.type === 'order' ? (\n <Order\n record={event.data as OrderRecord}\n key={`event_${event.data.id}`}\n basePath={basePath}\n />\n ) : (\n <Review\n record={event.data as ReviewRecord}\n key={`review_${event.data.id}`}\n basePath={basePath}\n />\n )}\n </StepContent>\n </Step>\n ))}\n </Stepper>\n </>\n );\n};\n\ninterface AsideEvent {\n type: string;\n date: Date;\n data: OrderRecord | ReviewRecord;\n}\n\nconst mixOrdersAndReviews = (\n orders?: RecordMap<OrderRecord>,\n orderIds?: Identifier[],\n reviews?: RecordMap<ReviewRecord>,\n reviewIds?: Identifier[]\n): AsideEvent[] => {\n const eventsFromOrders =\n orderIds && orders\n ? orderIds.map<AsideEvent>(id => ({\n type: 'order',\n date: orders[id].date,\n data: orders[id],\n }))\n : [];\n const eventsFromReviews =\n reviewIds && reviews\n ? reviewIds.map<AsideEvent>(id => ({\n type: 'review',\n date: reviews[id].date,\n data: reviews[id],\n }))\n : [];\n const events = eventsFromOrders.concat(eventsFromReviews);\n events.sort(\n (e1, e2) => new Date(e2.date).getTime() - new Date(e1.date).getTime()\n );\n return events;\n};\n\ninterface OrderProps {\n record?: OrderRecord;\n basePath?: string;\n}\n\nconst Order: FC<OrderProps> = ({ record, basePath }) => {\n const translate = useTranslate();\n return record ? (\n <>\n <Typography variant=\"body2\" gutterBottom>\n <Link to={`/commands/${record.id}`} component={RouterLink}>\n {translate('resources.commands.name', {\n smart_count: 1,\n })}{' '}\n #{record.reference}\n </Link>\n </Typography>\n <Typography variant=\"body2\" color=\"textSecondary\">\n {translate('resources.commands.nb_items', {\n smart_count: record.basket.length,\n _: '1 item |||| %{smart_count} items',\n })}\n  - \n <NumberField\n source=\"total\"\n options={{\n style: 'currency',\n currency: 'USD',\n }}\n record={record}\n basePath={basePath}\n />\n  - \n <TextField\n source=\"status\"\n record={record}\n basePath={basePath}\n />\n </Typography>\n </>\n ) : null;\n};\n\ninterface ReviewProps {\n record?: ReviewRecord;\n basePath?: string;\n}\n\nconst useReviewStyles = makeStyles({\n clamp: {\n display: '-webkit-box',\n '-webkit-line-clamp': 3,\n '-webkit-box-orient': 'vertical',\n overflow: 'hidden',\n },\n});\n\nconst Review: FC<ReviewProps> = ({ record, basePath }) => {\n const classes = useReviewStyles();\n const translate = useTranslate();\n return record ? (\n <>\n <Typography variant=\"body2\" gutterBottom>\n <Link to={`/reviews/${record.id}`} component={RouterLink}>\n {translate('resources.reviews.relative_to_poster')} \"\n <ReferenceField\n source=\"product_id\"\n reference=\"products\"\n resource=\"reviews\"\n record={record}\n basePath={basePath}\n link={false}\n >\n <TextField source=\"reference\" component=\"span\" />\n </ReferenceField>\n \"\n </Link>\n </Typography>\n <Typography variant=\"body2\" color=\"textSecondary\" gutterBottom>\n <StarRatingField record={record} />\n </Typography>\n <Typography\n variant=\"body2\"\n color=\"textSecondary\"\n className={classes.clamp}\n >\n {record.comment}\n </Typography>\n </>\n ) : null;\n};\n\nexport default Aside;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport { useTranslate, SelectArrayInput, InputProps } from 'react-admin';\n\nimport segments from '../segments/data';\n\ninterface Props extends Omit<InputProps, 'source'> {\n source?: string;\n}\n\nconst SegmentsInput: FC<Props> = ({ addField, ...rest }) => {\n const translate = useTranslate();\n return (\n <SelectArrayInput\n source=\"groups\"\n {...rest}\n choices={segments.map(segment => ({\n id: segment.id,\n name: translate(segment.name),\n }))}\n />\n );\n};\n\nSegmentsInput.defaultProps = {\n addField: true,\n source: 'groups',\n resource: 'customers',\n};\n\nexport default SegmentsInput;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport {\n DateInput,\n Edit,\n EditProps,\n NullableBooleanInput,\n TextInput,\n PasswordInput,\n Toolbar,\n useTranslate,\n FormWithRedirect,\n required,\n email,\n FieldProps,\n} from 'react-admin';\nimport { Box, Card, CardContent, Typography } from '@material-ui/core';\n\nimport Aside from './Aside';\nimport FullNameField from './FullNameField';\nimport SegmentsInput from './SegmentsInput';\nimport { validatePasswords } from './VisitorCreate';\nimport { Customer } from '../types';\n\nconst VisitorEdit: FC<EditProps> = props => {\n return (\n <Edit\n title={<VisitorTitle />}\n aside={<Aside />}\n component=\"div\"\n {...props}\n >\n <VisitorForm />\n </Edit>\n );\n};\n\nconst VisitorTitle: FC<FieldProps<Customer>> = ({ record }) =>\n record ? <FullNameField record={record} size=\"32\" /> : null;\n\nconst VisitorForm = (props: any) => {\n const translate = useTranslate();\n\n return (\n <FormWithRedirect\n {...props}\n validate={validatePasswords}\n render={(formProps: any) => (\n <Card>\n <form>\n <CardContent>\n <Box display={{ md: 'block', lg: 'flex' }}>\n <Box flex={2} mr={{ md: 0, lg: '1em' }}>\n <Typography variant=\"h6\" gutterBottom>\n {translate(\n 'resources.customers.fieldGroups.identity'\n )}\n </Typography>\n <Box display={{ xs: 'block', sm: 'flex' }}>\n <Box\n flex={1}\n mr={{ xs: 0, sm: '0.5em' }}\n >\n <TextInput\n source=\"first_name\"\n resource=\"customers\"\n validate={requiredValidate}\n fullWidth\n />\n </Box>\n <Box\n flex={1}\n ml={{ xs: 0, sm: '0.5em' }}\n >\n <TextInput\n source=\"last_name\"\n resource=\"customers\"\n validate={requiredValidate}\n fullWidth\n />\n </Box>\n </Box>\n <TextInput\n type=\"email\"\n source=\"email\"\n resource=\"customers\"\n validate={[email(), required()]}\n fullWidth\n />\n <Box display={{ xs: 'block', sm: 'flex' }}>\n <Box\n flex={1}\n mr={{ xs: 0, sm: '0.5em' }}\n >\n <DateInput\n source=\"birthday\"\n resource=\"customers\"\n fullWidth\n helperText={false}\n />\n </Box>\n <Box\n flex={2}\n ml={{ xs: 0, sm: '0.5em' }}\n />\n </Box>\n\n <Box mt=\"1em\" />\n\n <Typography variant=\"h6\" gutterBottom>\n {translate(\n 'resources.customers.fieldGroups.address'\n )}\n </Typography>\n <TextInput\n type=\"text\"\n source=\"canister\"\n resource=\"customers\"\n fullWidth\n />\n <TextInput\n source=\"address\"\n resource=\"customers\"\n multiline\n fullWidth\n helperText={false}\n />\n <Box display={{ xs: 'block', sm: 'flex' }}>\n <Box\n flex={2}\n mr={{ xs: 0, sm: '0.5em' }}\n >\n <TextInput\n source=\"city\"\n resource=\"customers\"\n fullWidth\n helperText={false}\n />\n </Box>\n <Box\n flex={1}\n mr={{ xs: 0, sm: '0.5em' }}\n >\n <TextInput\n source=\"stateAbbr\"\n resource=\"customers\"\n fullWidth\n helperText={false}\n />\n </Box>\n <Box flex={2}>\n <TextInput\n source=\"zipcode\"\n resource=\"customers\"\n fullWidth\n helperText={false}\n />\n </Box>\n </Box>\n\n <Box mt=\"1em\" />\n\n <Typography variant=\"h6\" gutterBottom>\n {translate(\n 'resources.customers.fieldGroups.change_password'\n )}\n </Typography>\n <Box display={{ xs: 'block', sm: 'flex' }}>\n <Box\n flex={1}\n mr={{ xs: 0, sm: '0.5em' }}\n >\n <PasswordInput\n source=\"password\"\n resource=\"customers\"\n fullWidth\n />\n </Box>\n <Box\n flex={1}\n ml={{ xs: 0, sm: '0.5em' }}\n >\n <PasswordInput\n source=\"confirm_password\"\n resource=\"customers\"\n fullWidth\n />\n </Box>\n </Box>\n </Box>\n <Box\n flex={1}\n ml={{ xs: 0, lg: '1em' }}\n mt={{ xs: '1em', lg: 0 }}\n >\n <Typography variant=\"h6\" gutterBottom>\n {translate(\n 'resources.customers.fieldGroups.stats'\n )}\n </Typography>\n <div>\n <SegmentsInput fullWidth />\n </div>\n <div>\n <NullableBooleanInput\n source=\"has_newsletter\"\n resource=\"customers\"\n />\n </div>\n </Box>\n </Box>\n </CardContent>\n <Toolbar\n record={formProps.record}\n basePath={formProps.basePath}\n undoable={true}\n invalid={formProps.invalid}\n handleSubmit={formProps.handleSubmit}\n saving={formProps.saving}\n resource=\"customers\"\n />\n </form>\n </Card>\n )}\n />\n );\n};\n\nconst requiredValidate = [required()];\n\nexport default VisitorEdit;\n","import VisitorIcon from '@material-ui/icons/People';\n\nimport VisitorList from './VisitorList';\nimport VisitorCreate from './VisitorCreate';\nimport VisitorEdit from './VisitorEdit';\n\nconst resource = {\n list: VisitorList,\n create: VisitorCreate,\n edit: VisitorEdit,\n icon: VisitorIcon,\n};\n\nexport default resource;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport Button from '@material-ui/core/Button';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Link } from 'react-router-dom';\nimport { useTranslate } from 'react-admin';\nimport { stringify } from 'query-string';\n\nimport visitors from '../visitors';\n\nconst useStyles = makeStyles({\n icon: { paddingRight: '0.5em' },\n link: {\n display: 'inline-flex',\n alignItems: 'center',\n },\n});\n\nconst LinkToRelatedCustomers: FC<{ segment: string }> = ({ segment }) => {\n const translate = useTranslate();\n const classes = useStyles();\n return (\n <Button\n size=\"small\"\n color=\"primary\"\n component={Link}\n to={{\n pathname: '/customers',\n search: stringify({\n filter: JSON.stringify({ groups: segment }),\n }),\n }}\n className={classes.link}\n >\n <visitors.icon className={classes.icon} />\n {translate('resources.segments.fields.customers')}\n </Button>\n );\n};\n\nexport default LinkToRelatedCustomers;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport Card from '@material-ui/core/Card';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableHead from '@material-ui/core/TableHead';\nimport TableRow from '@material-ui/core/TableRow';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslate, Title } from 'react-admin';\n\nimport LinkToRelatedCustomers from './LinkToRelatedCustomers';\nimport segments from './data';\n\nconst useStyles = makeStyles({\n root: {\n marginTop: 16,\n },\n});\n\nconst Segments: FC = () => {\n const translate = useTranslate();\n const classes = useStyles();\n return (\n <Card className={classes.root}>\n <Title\n title={translate('resources.segments.name', { smart_count: 2 })}\n />\n <Table size=\"small\">\n <TableHead>\n <TableRow>\n <TableCell>\n {translate('resources.segments.fields.name')}\n </TableCell>\n <TableCell />\n </TableRow>\n </TableHead>\n <TableBody>\n {segments.map(segment => (\n <TableRow key={segment.id}>\n <TableCell>{translate(segment.name)}</TableCell>\n <TableCell>\n <LinkToRelatedCustomers segment={segment.id} />\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </Card>\n );\n};\n\nexport default Segments;\n","import * as React from 'react';\nimport { Route } from 'react-router-dom';\nimport Configuration from './configuration/Configuration';\nimport Segments from './segments/Segments';\n\nexport default [\n <Route exact path=\"/configuration\" render={() => <Configuration />} />,\n <Route exact path=\"/segments\" render={() => <Segments />} />,\n];\n","import { TranslationMessages } from 'react-admin';\nimport englishMessages from 'ra-language-english';\n\nconst customEnglishMessages: TranslationMessages = {\n ...englishMessages,\n pos: {\n login: \"DEMO Login\",\n search: 'Search',\n configuration: 'Configuration',\n language: 'Language',\n theme: {\n name: 'Theme',\n light: 'Light',\n dark: 'Dark',\n red: 'Red',\n },\n dashboard: {\n monthly_revenue: 'Monthly Revenue',\n month_history: '30 Day Revenue History',\n new_orders: 'New Orders',\n pending_reviews: 'Pending Reviews',\n all_reviews: 'See all reviews',\n new_customers: 'New Customers',\n all_customers: 'See all customers',\n pending_orders: 'Pending Orders',\n order: {\n items:\n 'by %{customer_name}, one item |||| by %{customer_name}, %{nb_items} items',\n },\n welcome: {\n title: 'Welcome to the Dmail system',\n subtitle:\n \"This is the admin of an imaginary poster shop. Feel free to explore and modify the data - it's local to your computer, and will reset each time you reload.\",\n ra_button: 'react-admin site',\n demo_button: 'Source for this demo',\n },\n },\n menu: {\n sales: 'Sales',\n catalog: 'Catalog',\n customers: 'Customers',\n compose: 'Compose',\n inbox: 'Inbox',\n junk: 'Junk Mail',\n sent: 'Sent',\n subscription: 'Subscription',\n assets: 'Assets',\n more: 'More',\n trash: 'Trash',\n settings: 'Settings',\n nfts: 'NFT Market',\n },\n },\n resources: {\n customers: {\n name: 'Customer |||| Customers',\n fields: {\n commands: 'Orders',\n first_seen: 'First seen',\n groups: 'Segments',\n last_seen: 'Last seen',\n last_seen_gte: 'Visited Since',\n name: 'Name',\n total_spent: 'Total spent',\n password: 'Password',\n confirm_password: 'Confirm password',\n stateAbbr: 'State',\n },\n filters: {\n last_visited: 'Last visited',\n today: 'Today',\n this_week: 'This week',\n last_week: 'Last week',\n this_month: 'This month',\n last_month: 'Last month',\n earlier: 'Earlier',\n has_ordered: 'Has ordered',\n has_newsletter: 'Has newsletter',\n group: 'Segment',\n },\n fieldGroups: {\n identity: 'Identity',\n address: 'Address',\n stats: 'Stats',\n history: 'History',\n password: 'Password',\n change_password: 'Change Password',\n },\n page: {\n delete: 'Delete Customer',\n },\n errors: {\n password_mismatch:\n 'The password confirmation is not the same as the password.',\n },\n },\n commands: {\n name: 'Order |||| Orders',\n amount: '1 order |||| %{smart_count} orders',\n title: 'Order %{reference}',\n fields: {\n basket: {\n delivery: 'Delivery',\n reference: 'Reference',\n quantity: 'Quantity',\n sum: 'Sum',\n tax_rate: 'Tax Rate',\n taxes: 'Tax',\n total: 'Total',\n unit_price: 'Unit Price',\n },\n address: 'Address',\n customer_id: 'Customer',\n date_gte: 'Passed Since',\n date_lte: 'Passed Before',\n nb_items: 'Nb Items',\n total_gte: 'Min amount',\n status: 'Status',\n returned: 'Returned',\n },\n section: {\n order: 'Order',\n customer: 'Customer',\n shipping_address: 'Shipping Address',\n items: 'Items',\n total: 'Totals',\n },\n },\n invoices: {\n name: 'Invoice |||| Invoices',\n fields: {\n date: 'Invoice date',\n customer_id: 'Customer',\n command_id: 'Order',\n date_gte: 'Passed Since',\n date_lte: 'Passed Before',\n total_gte: 'Min amount',\n address: 'Address',\n },\n },\n products: {\n name: 'Poster |||| Posters',\n fields: {\n category_id: 'Category',\n height_gte: 'Min height',\n height_lte: 'Max height',\n height: 'Height',\n image: 'Image',\n price: 'Price',\n reference: 'Reference',\n sales: 'Sales',\n stock_lte: 'Low Stock',\n stock: 'Stock',\n thumbnail: 'Thumbnail',\n width_gte: 'Min width',\n width_lte: 'Max width',\n width: 'Width',\n },\n tabs: {\n image: 'Image',\n details: 'Details',\n description: 'Description',\n reviews: 'Reviews',\n },\n filters: {\n categories: 'Categories',\n stock: 'Stock',\n no_stock: 'Out of stock',\n low_stock: '1 - 9 items',\n average_stock: '10 - 49 items',\n enough_stock: '50 items & more',\n sales: 'Sales',\n best_sellers: 'Best sellers',\n average_sellers: 'Average',\n low_sellers: 'Low',\n never_sold: 'Never sold',\n },\n },\n categories: {\n name: 'Category |||| Categories',\n fields: {\n products: 'Products',\n },\n },\n reviews: {\n name: 'Review |||| Reviews',\n amount: '1 review |||| %{smart_count} reviews',\n relative_to_poster: 'Review on poster',\n detail: 'Review detail',\n fields: {\n customer_id: 'Customer',\n command_id: 'Order',\n product_id: 'Product',\n date_gte: 'Posted since',\n date_lte: 'Posted before',\n date: 'Date',\n comment: 'Comment',\n rating: 'Rating',\n },\n action: {\n accept: 'Accept',\n reject: 'Reject',\n },\n notification: {\n saved_success: 'Saved sucess',\n created_success: 'Created sucess',\n deleted_success: 'Deleted sucess',\n submit_success: 'Submit sucess',\n submit_failed: 'Submit failed',\n moved_success: 'Moved success',\n copyed_success: 'Copyed success',\n forwarded_success: 'Forward success',\n approved_success: 'Review approved',\n approved_error: 'Error: Review not approved',\n rejected_success: 'Review rejected',\n rejected_error: 'Error: Review not rejected',\n },\n },\n segments: {\n name: 'Segment |||| Segments',\n fields: {\n customers: 'Customers',\n name: 'Name',\n },\n data: {\n compulsive: 'Compulsive',\n collector: 'Collector',\n ordered_once: 'Ordered once',\n regular: 'Regular',\n returns: 'Returns',\n reviewer: 'Reviewer',\n },\n },\n },\n};\n\nexport default customEnglishMessages;\n","// in src/comments.js\nimport * as React from 'react';\nimport { FC } from 'react';\nimport { Card, CardHeader, CardContent } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n DateField,\n EditButton,\n NumberField,\n TextField,\n BooleanField,\n useTranslate,\n RecordMap,\n Identifier,\n Record,\n} from 'react-admin';\n\nimport CustomerReferenceField from '../visitors/CustomerReferenceField';\n\nconst useListStyles = makeStyles(theme => ({\n card: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n margin: '0.5rem 0',\n },\n cardTitleContent: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n cardContent: theme.typography.body1,\n cardContentRow: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n margin: '0.5rem 0',\n },\n}));\n\ninterface MobileGridProps {\n ids?: Identifier[];\n data?: RecordMap<Record>;\n basePath?: string;\n}\n\nconst MobileGrid: FC<MobileGridProps> = ({ ids, data, basePath }) => {\n const translate = useTranslate();\n const classes = useListStyles();\n\n if (!ids || !data || !basePath) {\n return null;\n }\n\n return (\n <div style={{ margin: '1em' }}>\n {ids.map(id => (\n <Card key={id} className={classes.card}>\n <CardHeader\n title={\n <div className={classes.cardTitleContent}>\n <span>\n {translate('resources.commands.name', 1)}\n : \n <TextField\n record={data[id]}\n source=\"reference\"\n />\n </span>\n <EditButton\n resource=\"commands\"\n basePath={basePath}\n record={data[id]}\n />\n </div>\n }\n />\n <CardContent className={classes.cardContent}>\n <span className={classes.cardContentRow}>\n {translate('resources.customers.name', 1)}: \n <CustomerReferenceField\n record={data[id]}\n basePath={basePath}\n />\n </span>\n <span className={classes.cardContentRow}>\n {translate('resources.reviews.fields.date')}: \n <DateField\n record={data[id]}\n source=\"date\"\n showTime\n />\n </span>\n <span className={classes.cardContentRow}>\n {translate(\n 'resources.commands.fields.basket.total'\n )}\n : \n <NumberField\n record={data[id]}\n source=\"total\"\n options={{ style: 'currency', currency: 'USD' }}\n />\n </span>\n <span className={classes.cardContentRow}>\n {translate('resources.commands.fields.status')}\n : \n <TextField source=\"status\" record={data[id]} />\n </span>\n <span className={classes.cardContentRow}>\n {translate('resources.commands.fields.returned')}\n : \n <BooleanField record={data[id]} source=\"returned\" />\n </span>\n </CardContent>\n </Card>\n ))}\n </div>\n );\n};\n\nMobileGrid.defaultProps = {\n data: {},\n ids: [],\n};\n\nexport default MobileGrid;\n","import * as React from 'react';\nimport empty from '../assets/red/empty.png';\nimport { makeStyles } from '@material-ui/core/styles';\nimport clsx from 'clsx';\n\nconst useStyles = makeStyles({\n empty: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-around',\n minHeight: '500px',\n paddingTop: '40px',\n\n '& img': {\n width: '200px',\n }\n },\n});\n\nconst Empty = props => {\n const { propClass, ...rest } = props;\n const classes = useStyles();\n\n return (\n <div className={clsx(classes.empty, propClass || '')}>\n <img src={empty} />\n </div>\n )\n}\n\nexport default Empty;","import * as React from 'react';\nimport { Pagination } from 'react-admin';\n\n// https://material-ui.com/zh/components/data-grid/pagination/\nconst PostPagination = props => {\n return (\n <Pagination rowsPerPageOptions={[10]} labelRowsPerPage={''} {...props} limit={null} />\n )\n}\n\nexport default PostPagination;","import * as React from 'react';\nimport { FC } from 'react';\nimport PropTypes from 'prop-types';\n// import Select, { SelectChangeEvent } from '@material-ui/Select';\n\nimport {\n useNotify,\n useDeleteMany,\n useRefresh,\n useUnselectAll,\n useListContext,\n CRUD_DELETE_MANY,\n useResourceContext,\n BulkActionProps,\n // BulkDeleteWithConfirmButton,\n // BulkDeleteWithUndoButton,\n // BulkDeleteWithConfirmButtonProps,\n // BulkDeleteWithUndoButtonProps,\n} from 'react-admin'\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport clsx from 'clsx';\n\n/**\n * Deletes the selected rows.\n *\n * To be used inside the <List bulkActionButtons> prop (where it's enabled by default).\n *\n * @example // basic usage\n * import * as React from 'react';\n * import { Fragment } from 'react';\n * import { BulkDeleteButton, BulkExportButton } from 'react-admin';\n *\n * const PostBulkActionButtons = ({ basePath }) => (\n * <Fragment>\n * <BulkExportButton />\n * <BulkDeleteButton basePath={basePath} />\n * </Fragment>\n * );\n *\n * export const PostList = (props) => (\n * <List {...props} bulkActionButtons={<PostBulkActionButtons />}>\n * ...\n * </List>\n * );\n */\n\nexport const useStyles = makeStyles(theme => ({\n btn: {\n position: 'relative',\n\n '&:last-child > span': {\n marginRight: '0',\n },\n\n '& > span': {\n height: '30px',\n lineHeight: '30px',\n padding: '0 10px',\n borderRadius: '5px',\n backgroundColor: '#FA6755',\n color: '#fff',\n transition: 'transform 0.3s ease',\n marginRight: '16px',\n cursor: 'pointer',\n display: 'block',\n\n '&:hover': {\n transform: 'scale(1.05)',\n backgroundColor: '#FA6755',\n },\n },\n\n '& .disabled': {\n backgroundColor: '#ccc',\n cursor: 'default',\n\n '&:hover': {\n transform: 'none',\n backgroundColor: '#ccc',\n },\n },\n\n '& ._js_more': {\n fontSize: '14px',\n }\n },\n hide: {\n display: 'none',\n },\n drops: {\n position: 'absolute',\n top: '100%',\n left: 0,\n boxShadow: '0px 5px 5px -3px rgb(0, 0, 0, 0.2), 0px 8px 10px 1px rgb(0, 0, 0, 0.14), 0px 3px 14px 2px rgb(0, 0, 0, 0.12)',\n padding: '8px 0',\n borderRadius: '4px',\n background: '#fff',\n\n '& a': {\n display: 'block',\n overflow: 'hidden',\n fontSize: '16px',\n lineHeight: 1.5,\n padding: '6px 20px',\n color: 'rgba(0, 0, 0, 0.54)',\n cursor: 'pointer',\n\n '&:hover': {\n backgroundColor: 'rgba(0, 0, 0, 0.04)',\n color: '#FA6755',\n }\n }\n },\n}));\n\n// see /node_modules/ra-ui-materialui/src/button/BulkDeleteWithUndoButton.tsx\nexport const BulkDeleteButton: FC<BulkDeleteButtonProps> = ({ undoable, ...props }) => {\n const classes = useStyles();\n\n const [showMore, toggleMore] = React.useState(false)\n const notify = useNotify();\n const refresh = useRefresh();\n const resource = useResourceContext(props);\n // console.log(resource)\n const unselectAll = useUnselectAll();\n const { selectedIds } = useListContext(props);\n const onFailure = error => {\n notify(\n typeof error === 'string'\n ? error\n : error.message || 'ra.notification.http_error',\n 'warning',\n {\n _:\n typeof error === 'string'\n ? error\n : error && error.message\n ? error.message\n : undefined,\n }\n )\n }\n const [deleteMany, { loading }] = useDeleteMany(resource, selectedIds, {\n action: CRUD_DELETE_MANY,\n onSuccess: () => {\n unselectAll(resource);\n refresh();\n notify(`resources.reviews.notification.deleted_success`, 'success');\n },\n onFailure,\n // undoable: true,\n });\n const onDel = () => {\n if (!selectedIds.length) {\n return;\n }\n\n deleteMany()\n }\n const onMove = () => {\n notify(`resources.reviews.notification.moved_success`, 'success');\n refresh();\n unselectAll(resource);\n }\n // TODO: should complete\n const onCopy = () => {\n notify(`resources.reviews.notification.copyed_success`, 'success');\n refresh();\n unselectAll(resource);\n }\n const onForward = () => {\n notify(`resources.reviews.notification.forwarded_success`, 'success');\n refresh();\n unselectAll(resource);\n }\n\n const moreClick = React.useCallback((ev) => {\n if (!ev.target.classList.contains('_js_more')) {\n toggleMore(false)\n }\n }, [showMore]);\n React.useEffect(() => {\n document.body.addEventListener('click', moreClick)\n\n return () => {\n document.body.removeEventListener('click', moreClick)\n }\n }, [moreClick])\n\n\n return (\n <>\n {/* {undoable ? <BulkDeleteWithUndoButton className={classes.btn} {...props} /> : <BulkDeleteWithConfirmButton className={classes.btn} {...props} />} */}\n <div className={classes.btn}>\n <span className={clsx(selectedIds.length ? '' : 'disabled', \"_js_more\")} onClick={onDel}>DELETE</span>\n </div>\n <div className={classes.btn}>\n <span className={clsx(selectedIds.length ? '' : 'disabled', \"_js_more\")} onClick={() => selectedIds.length && toggleMore(!showMore)}>MORE</span>\n <div className={clsx(classes.drops, showMore ? '' : classes.hide)}>\n <a onClick={onMove}>move</a>\n <a onClick={onCopy}>copy</a>\n <a onClick={onForward}>forward</a>\n </div>\n </div>\n </>\n )\n}\n\n// export type BulkDeleteButtonProps = Props &\n// (BulkDeleteWithUndoButtonProps | BulkDeleteWithConfirmButtonProps);\n\ninterface BulkDeleteButtonProps extends BulkActionProps {\n undoable?: boolean;\n}\n\nBulkDeleteButton.propTypes = {\n // basePath: PropTypes.string,\n // label: PropTypes.string,\n resource: PropTypes.string,\n selectedIds: PropTypes.arrayOf(PropTypes.any),\n undoable: PropTypes.bool,\n};\n\nBulkDeleteButton.defaultProps = {\n undoable: true,\n};\n\n\nconst BulkActionButtons = props => <BulkDeleteButton {...props} />;\n\nexport default BulkActionButtons;\n","import * as React from 'react';\nimport { FC, Fragment, useCallback, useEffect, useState, cloneElement, useMemo } from 'react';\nimport SubIcon from '@material-ui/icons/TurnedInNotRounded';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { AppState } from '../types';\nimport {\n useNotify,\n useRedirect,\n Datagrid,\n DatagridProps,\n DateField,\n DateInput,\n Filter,\n FilterProps,\n Identifier,\n List,\n ListContextProvider,\n ListProps,\n NullableBooleanInput,\n NumberField,\n ReferenceInput,\n ReferenceField,\n SearchInput,\n TextField,\n TextInput,\n useGetList,\n useListContext,\n ImageField,\n FieldProps,\n TopToolbar,\n CreateButton,\n ExportButton,\n Pagination,\n sanitizeListRestProps\n} from 'react-admin';\nimport { useMediaQuery, Divider, Tabs, Tab, Theme, Typography, Avatar } from '@material-ui/core';\n\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport NbItemsField from './NbItemsField';\nimport CustomerReferenceField from '../visitors/CustomerReferenceField';\nimport AddressField from '../visitors/AddressField';\nimport MobileGrid from './MobileGrid';\nimport { Mail } from '../types';\nimport IconSwap from '@material-ui/icons/SwapHoriz';\n\nimport Empty from '../components/empty'\nimport PostPagination from '../components/pagination'\nimport BulkActionButtons from '../components/BulkActionButtons'\nimport { styles } from '../visitors/VisitorCreate';\n\n\n// const InboxFilter: FC<Omit<FilterProps, 'children'>> = props => (\n// <Filter {...props}>\n// <SearchInput source=\"q\" alwaysOn />\n\n// </Filter>\n// );\n\nconst useDatagridStyles = makeStyles(\n theme => ({\n list: {\n '& .MuiToolbar-root[data-test=\"bulk-actions-toolbar\"]': {\n position: 'absolute',\n right: '34px',\n top: '30px',\n flexWrap: 'nowrap',\n }\n },\n chunk: {\n display: 'flex',\n flexWrap: 'nowrap',\n alignItems: 'center',\n },\n total: { fontWeight: 'bold', whiteSpace: 'nowrap' },\n ava: {\n marginRight: '35px',\n },\n project_avatar: {\n width: 54,\n height: 54,\n borderRadius: '26px',\n },\n project_name: {\n fontSize: '20px!important',\n fontWeight: 'bold',\n },\n project_amount: {\n '& strong': {\n paddingLeft: '12px',\n color: '#FFAE63',\n }\n },\n total_amm: { fontWeight: 'bold', marginRight: 5 },\n tabs: {\n display: 'block',\n marginBottom: '25px',\n },\n tab: {\n marginRight: '50px',\n lineHeight: '17px',\n padding: '12px 0',\n fontSize: '17px',\n fontFamily: 'PingFang SC',\n color: '#56677B',\n fontWeight: 600,\n minWidth: 'auto',\n\n '&.Mui-selected': {\n color: '#153F5D',\n fontWeight: 'bold',\n fontSize: '20px',\n }\n },\n table: {\n // let td ellipsis,it forbid to write in the redTheme.tsx\n tableLayout: 'fixed',\n\n '& .MuiTableCell-root': {\n height: '72px',\n },\n\n '& td': {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n\n '& th:nth-child(2)': {\n width: '250px',\n },\n\n '& th:last-child': {\n width: '88px',\n },\n },\n }));\n\nconst tabs = [\n { id: 'primary', name: 'Primary' },\n { id: 'other', name: 'Other' },\n { id: 'subscription', name: 'Subscription' },\n];\n\ninterface TabbedDatagridProps extends DatagridProps { }\n\nconst useGetTotals = (filterValues: any) => {\n const { total: totalPrimary } = useGetList(\n 'mails',\n { perPage: 1, page: 1 },\n { field: 'id', order: 'ASC' },\n { ...filterValues, status: 'primary' }\n );\n const { total: totalOther } = useGetList(\n 'mails',\n { perPage: 1, page: 1 },\n { field: 'id', order: 'ASC' },\n { ...filterValues, status: 'other' }\n );\n const { total: totalSubscription } = useGetList(\n 'mails',\n { perPage: 1, page: 1 },\n { field: 'id', order: 'ASC' },\n { ...filterValues, status: 'subscription' }\n );\n\n return {\n primary: totalPrimary,\n other: totalOther,\n subscription: totalSubscription,\n };\n};\n\nconst TabbedDatagrid: FC<TabbedDatagridProps> = props => {\n const listContext = useListContext();\n // console.log(listContext)\n const { ids, filterValues, setFilters, displayedFilters } = listContext;\n const classes = useDatagridStyles();\n const isXSmall = useMediaQuery<Theme>(theme =>\n theme.breakpoints.down('xs')\n );\n const [primary, setPrimary] = useState<Identifier[]>([] as Identifier[]);\n const [other, setOther] = useState<Identifier[]>(\n [] as Identifier[]\n );\n const [subscription, setSubscription] = useState<Identifier[]>(\n [] as Identifier[]\n );\n const totals = useGetTotals(filterValues) as any;\n\n useEffect(() => {\n // console.log('filterValues.status', ids, filterValues.status)\n if (ids && ids !== filterValues.status) {\n switch (filterValues.status) {\n case 'primary':\n setPrimary(ids);\n break;\n case 'other':\n setOther(ids);\n break;\n case 'subscription':\n setSubscription(ids);\n break;\n }\n }\n }, [ids, filterValues.status]);\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<{}>, value: any) => {\n setFilters &&\n setFilters(\n { ...filterValues, status: value },\n displayedFilters\n );\n },\n [displayedFilters, filterValues, setFilters]\n );\n\n const CustomerProjectField: FC<FieldProps<Mail>> = ({ record }) =>\n record ? (<div className={classes.chunk}>\n <Typography className={classes.ava}>\n <Avatar className={classes.project_avatar} src={`${record.project.icon}`} />\n </Typography>\n <Typography\n component=\"span\"\n variant=\"body2\"\n className={classes.project_name}\n >\n {record.project.name}\n </Typography>\n </div>\n ) : null;\n\n const CustomerAmountField: FC<FieldProps<Mail>> = ({ record }) =>\n record ? (<div className={classes.chunk}>\n\n <Typography\n component=\"span\"\n variant=\"body2\"\n className={classes.project_amount}\n >\n {record.amount}<strong>{record.unit}</strong>\n </Typography>\n </div>\n ) : null;\n\n const selectedIds =\n filterValues.status === 'primary'\n ? primary\n : filterValues.status === 'other'\n ? other\n : subscription;\n\n return (\n <Fragment>\n <Tabs\n variant=\"scrollable\"\n value={filterValues.status}\n indicatorColor=\"primary\"\n onChange={handleChange}\n className={classes.tabs}\n >\n {tabs.map(choice => (\n <Tab\n key={choice.id}\n label={\n totals[choice.name]\n ? `${choice.name} (${totals[choice.name]})`\n : choice.name\n }\n value={choice.id}\n className={classes.tab}\n />\n ))}\n </Tabs>\n {isXSmall ? (\n <ListContextProvider\n value={{ ...listContext, ids: selectedIds }}\n >\n <MobileGrid {...props} ids={selectedIds} />\n </ListContextProvider>\n ) : (\n <div>\n {filterValues.status === 'primary' && (\n <ListContextProvider\n value={{ ...listContext, ids: primary }}\n >\n <Datagrid {...props} empty={<Empty />} optimized rowClick=\"show\" size=\"medium\" className={classes.table}>\n <TextField source=\"from\" label=\"Sender\" headerClassName={classes.total} />\n <TextField source=\"subject\" headerClassName={classes.total} />\n <DateField source=\"date\" headerClassName={classes.total} />\n </Datagrid>\n </ListContextProvider>\n )}\n {filterValues.status === 'other' && (\n <ListContextProvider\n value={{ ...listContext, ids: other }}\n >\n <Datagrid {...props} empty={<Empty />} rowClick=\"show\" size=\"medium\" className={classes.table}>\n <TextField source=\"from\" label=\"Sender\" headerClassName={classes.total} />\n <TextField source=\"subject\" headerClassName={classes.total} />\n <DateField source=\"date\" headerClassName={classes.total} />\n </Datagrid>\n </ListContextProvider>\n )}\n {filterValues.status === 'subscription' && (\n <ListContextProvider\n value={{ ...listContext, ids: subscription }}\n >\n <Datagrid {...props} empty={<Empty />} rowClick=\"show\" size=\"medium\" className={classes.table}>\n <CustomerProjectField className={classes.chunk} headerClassName={classes.total} label='Project' />\n <TextField source=\"stage\" label=\"Stage\" headerClassName={classes.total} />\n <TextField source=\"participated\" label=\"Participated\" headerClassName={classes.total} />\n <TextField source=\"winners\" label=\"Winners\" headerClassName={classes.total} />\n <CustomerAmountField className={classes.chunk} headerClassName={classes.total} label='Total Amount' />\n <DateField source=\"date\" label=\"End Date\" headerClassName={classes.total} />\n </Datagrid>\n </ListContextProvider>\n )}\n </div>\n )}\n </Fragment>\n );\n};\n\n// actions\n// const ListActions = (props) => {\n// const {\n// className,\n// exporter,\n// filters,\n// maxResults,\n// ...rest\n// } = props;\n// const {\n// currentSort,\n// resource,\n// displayedFilters,\n// filterValues,\n// hasCreate,\n// basePath,\n// selectedIds,\n// showFilter,\n// total,\n// } = useListContext();\n// return (\n// <TopToolbar className={className} {...sanitizeListRestProps(rest)}>\n// {filters && cloneElement(filters, {\n// resource,\n// showFilter,\n// displayedFilters,\n// filterValues,\n// context: 'button',\n// })}\n// </TopToolbar>\n// );\n// };\n\nconst TestList: FC<ListProps> = props => {\n const classes = useDatagridStyles();\n const emailname = useSelector((state: AppState) => state.email);\n const redirect = useRedirect();\n if (!emailname) {\n window.confirm('Please set Mailbox alias first');\n redirect('./settings/show/email')\n }\n\n return (\n <List\n {...props}\n className={classes.list}\n filterDefaultValues={{\n status: 'primary',\n emailname\n }}\n sort={{ field: 'date', order: 'DESC' }}\n perPage={25}\n exporter={false}\n // filters={<InboxFilter />}\n // delete MuiToolbar\n actions={false}\n pagination={<PostPagination />}\n bulkActionButtons={<BulkActionButtons />}\n >\n <TabbedDatagrid />\n </List>\n )\n};\n\nexport default TestList;\n","import React, { FC } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n ShowProps,\n useShowController,\n} from 'react-admin';\nimport clsx from 'clsx';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n padding: '34px',\n overflow: 'hidden',\n boxShadow: 'none',\n borderRadius: '24px',\n backgroundColor: '#fff',\n },\n header: {\n paddingBottom: '30px',\n borderBottom: '1px solid #f3f3f3',\n marginBottom: '40px',\n },\n title: {\n fontSize: '22px',\n marginBottom: '20px',\n fontWeight: 'bold',\n lineHeight: '30px',\n },\n info: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n users: {\n '& span': {\n margin: '0 10px',\n color: '#FA6755',\n }\n },\n time: {\n fontSize: '14px',\n color: '#999',\n },\n body: {\n lineHeight: '24px',\n minHeight: '400px',\n },\n\n}));\n\nconst Show: FC<ShowProps> = props => {\n const classes = useStyles();\n const { record } = useShowController(props);\n\n if (!record) return null;\n return (\n <div className={classes.root}>\n <div className={classes.header}>\n <div className={classes.title}>\n {record.subject}\n </div>\n <div className={classes.info}>\n <div className={classes.users}>\n from\n <span>{record.from}</span>\n to\n <span>{record.to}</span>\n </div>\n <div className={classes.time}>\n {record.date}\n </div>\n </div>\n </div>\n <div className={classes.body} dangerouslySetInnerHTML={{ __html: record.content || '' }}>\n </div>\n </div>\n );\n};\n\nexport default Show;","import * as React from 'react';\nimport { FC } from 'react';\nimport {\n ShowProps,\n useShowController,\n useRedirect,\n} from 'react-admin';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport Show from '../components/show'\nimport { Mail, Customer } from '../types';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n\n },\n}));\n\nconst InboxShow: FC<ShowProps> = props => {\n const classes = useStyles();\n\n return (\n <div className={classes.root}>\n <Show {...props} />\n </div>\n );\n};\n\nexport default InboxShow;\n","import * as React from 'react';\nimport {\n Children,\n Fragment,\n isValidElement,\n ReactElement,\n FC,\n ReactNode,\n} from 'react';\nimport { ToolbarProps, SaveButton, useNotify } from 'react-admin';\nimport PropTypes from 'prop-types';\nimport MuiToolbar, {\n ToolbarProps as MuiToolbarProps,\n} from '@material-ui/core/Toolbar';\nimport withWidth from '@material-ui/core/withWidth';\nimport { makeStyles } from '@material-ui/core/styles';\nimport classnames from 'classnames';\nimport { Record, RedirectionSideEffect, MutationMode } from 'ra-core';\nimport { FormRenderProps } from 'react-final-form';\n\n// import { SaveButton, DeleteButton } from '../button';\nimport { Breakpoint } from '@material-ui/core/styles/createBreakpoints';\nimport { Storage, Create_Mail_Cached } from '../utils/storage'\n\nconst useStyles = makeStyles(\n theme => ({\n toolbar: {\n backgroundColor:\n theme.palette.type === 'light'\n ? theme.palette.grey[100]\n : theme.palette.grey[900],\n },\n desktopToolbar: {\n marginTop: theme.spacing(2),\n },\n mobileToolbar: {\n position: 'fixed',\n bottom: 0,\n left: 0,\n right: 0,\n padding: '16px',\n width: '100%',\n boxSizing: 'border-box',\n flexShrink: 0,\n zIndex: 2,\n },\n defaultToolbar: {\n flex: 1,\n display: 'flex',\n justifyContent: 'space-between',\n },\n spacer: {\n [theme.breakpoints.down('xs')]: {\n height: '5em',\n },\n },\n button: {\n height: '38px',\n lineHeight: '38px',\n padding: '0 15px',\n borderRadius: '10px',\n fontSize: '16px',\n color: '#fff',\n transition: 'transform 0.3s ease',\n textTransform: 'none',\n marginLeft: '35px',\n\n '&.Mui-disabled': {\n backgroundColor: 'rgba(0, 0, 0, 0.12)',\n color: '#fff',\n },\n\n '&:not(.Mui-disabled)': {\n backgroundColor: '#FA6755',\n\n '&:hover': {\n transform: 'scale(1.1)',\n backgroundColor: '#FA6755',\n },\n }\n },\n }),\n { name: 'RaToolbar' }\n);\n\n\nconst valueOrDefault = (value, defaultValue) =>\n typeof value === 'undefined' ? defaultValue : value;\n\n/**\n * The Toolbar displayed at the bottom of forms.\n *\n * @example Always enable the <SaveButton />\n *\n * import * as React from 'react';\n * import {\n * Create,\n * DateInput,\n * TextInput,\n * SimpleForm,\n * Toolbar,\n * required,\n * } from 'react-admin';\n *\n * const now = new Date();\n * const defaultSort = { field: 'title', order: 'ASC' };\n *\n * const CommentCreate = props => (\n * <Create {...props}>\n * <SimpleForm redirect={false} toolbar={<Toolbar alwaysEnableSaveButton={true} />}>\n * <TextInput\n * source=\"author.name\"\n * fullWidth\n * />\n * <DateInput source=\"created_at\" defaultValue={now} />\n * <TextInput source=\"body\" fullWidth={true} multiline={true} />\n * </SimpleForm>\n * </Create>\n * );\n *\n * @typedef {Object} Props the props you can use (other props are injected by the <SimpleForm>)\n * @prop {boolean} alwaysEnableSaveButton Force enabling the <SaveButton>. If it's not defined, the <SaveButton> will be enabled using the `pristine` and `validating` props (disabled if pristine or validating, enabled otherwise).\n * @prop {ReactElement[]} children Customize the buttons you want to display in the <Toolbar>.\n * @prop {string} width Apply to the mobile or desktop classes depending on its value. Pass `xs` to display the mobile version.\n *\n */\n// copy from react-admin/Toolbar: /node_modules/ra-ui-materialui/src/form/Toolbar.tsx\n\nconst Toolbar: FC<ToolbarProps> = props => {\n const {\n alwaysEnableSaveButton,\n basePath,\n children,\n className,\n classes: classesOverride,\n handleSubmit,\n handleSubmitWithRedirect,\n invalid,\n pristine,\n record,\n redirect,\n resource,\n saving,\n submitOnEnter,\n undoable,\n mutationMode,\n validating,\n width,\n ...rest\n } = props;\n const classes = useStyles(props);\n\n // Use form pristine and validating to enable or disable the save button\n // if alwaysEnableSaveButton is undefined\n const disabled = !valueOrDefault(\n alwaysEnableSaveButton,\n !pristine && !validating\n );\n\n const notify = useNotify();\n const onSave = () => {\n notify(`resources.reviews.notification.saved_success`, 'success');\n\n return Promise.resolve();\n }\n\n const onSubmit = async (...args) => {\n if (handleSubmit) {\n await handleSubmit(...args);\n // @TODO: if created success then remove\n Storage.remove(Create_Mail_Cached);\n }\n }\n\n return (\n <Fragment>\n <MuiToolbar\n className={classnames(\n classes.toolbar,\n {\n [classes.mobileToolbar]: width === 'xs',\n [classes.desktopToolbar]: width !== 'xs',\n },\n className\n )}\n role=\"toolbar\"\n {...rest}\n >\n {Children.count(children) === 0 ? (\n <div className={classes.defaultToolbar}>\n {/* <SaveButton \n label=\"Save\"\n icon={<></>}\n handleSubmitWithRedirect={\n onSave\n }\n className={classes.button}\n disabled={disabled}\n invalid={invalid}\n // redirect={redirect}\n saving={validating}\n submitOnEnter={false}\n />\n */}\n <SaveButton\n label=\"Send\"\n icon={<></>}\n handleSubmitWithRedirect={\n onSubmit\n }\n className={classes.button}\n disabled={disabled}\n invalid={invalid}\n redirect={redirect}\n saving={saving || validating}\n submitOnEnter={true}\n />\n </div>\n ) : (\n Children.map(children as any, (button: ReactElement) =>\n button && isValidElement<any>(button)\n ? React.cloneElement(button, {\n basePath: valueOrDefault(\n button.props.basePath,\n basePath\n ),\n handleSubmit: valueOrDefault(\n button.props.handleSubmit,\n handleSubmit\n ),\n handleSubmitWithRedirect: valueOrDefault(\n button.props.handleSubmitWithRedirect,\n handleSubmitWithRedirect\n ),\n onSave: button.props.onSave,\n invalid,\n pristine,\n record: valueOrDefault(\n button.props.record,\n record\n ),\n resource: valueOrDefault(\n button.props.resource,\n resource\n ),\n saving,\n submitOnEnter: valueOrDefault(\n button.props.submitOnEnter,\n submitOnEnter\n ),\n undoable: valueOrDefault(\n button.props.undoable,\n undoable\n ),\n })\n : null\n )\n )}\n </MuiToolbar>\n <div className={classes.spacer} />\n </Fragment>\n );\n};\n\nToolbar.propTypes = {\n basePath: PropTypes.string,\n children: PropTypes.node,\n classes: PropTypes.object,\n className: PropTypes.string,\n handleSubmit: PropTypes.func,\n handleSubmitWithRedirect: PropTypes.func,\n invalid: PropTypes.bool,\n pristine: PropTypes.bool,\n record: PropTypes.any,\n redirect: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n PropTypes.func,\n ]),\n resource: PropTypes.string,\n saving: PropTypes.bool,\n submitOnEnter: PropTypes.bool,\n undoable: PropTypes.bool,\n validating: PropTypes.bool,\n width: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']),\n};\n\nToolbar.defaultProps = {\n submitOnEnter: true,\n};\n\nexport default withWidth({ initialWidth: 'xs' })(Toolbar);\n","import React, { FC, useEffect, useState, useRef } from 'react';\nimport {\n CreateContextProvider,\n useRecordContext,\n ResourceContextProvider,\n useCheckMinimumRequiredProps,\n useCreateController,\n} from 'ra-core';\nimport {\n BooleanInput,\n DateField,\n Create,\n CreateProps,\n FormWithRedirect,\n useSaveContext,\n Labeled,\n ReferenceField,\n SelectInput,\n TextField,\n useRefresh,\n useNotify,\n useRedirect,\n SimpleForm,\n TextInput,\n required,\n NumberInput,\n useCreateContext,\n} from 'react-admin';\nimport { Link as RouterLink } from 'react-router-dom';\nimport {\n Card,\n CardContent,\n Box,\n Grid,\n Typography,\n Link,\n IconButton,\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport RichTextInput from 'ra-input-rich-text';\nimport clsx from 'clsx';\nimport DOMPurify from 'dompurify';\n\nimport { Mail, Customer } from '../types';\nimport Basket from './Basket';\nimport Totals from './Totals';\nimport Toolbar from './Toolbar'\nimport { useSelector, useDispatch } from 'react-redux';\nimport { AppState } from '../types';\nimport { Storage, Create_Mail_Cached } from '../utils/storage'\n\nconst useStyles = makeStyles(theme => ({\n root: {\n '& form': {\n paddingTop: 15,\n margin: '10px 15px',\n },\n\n '&>div': {\n marginTop: 0,\n },\n '& .MuiCardContent-root': {\n padding: 0,\n },\n '& .ra-input-Assets, & .ra-input-Amount, & .ra-input-Price': {\n display: 'inline-block',\n\n '& .MuiOutlinedInput-root': {\n width: '100%',\n },\n\n '& .MuiFormHelperText-contained': {\n left: 0,\n },\n },\n '& .MuiToolbar-regular': {\n background: 'none',\n padding: 0,\n margin: 0,\n minHeight: 'auto',\n textAlign: 'right',\n\n '&>div': {\n display: 'inline-block',\n },\n '& button': {\n // height: '38px',\n // lineHeight: '38px',\n // padding: '0 15px',\n // borderRadius: '10px',\n // fontSize: '16px',\n // color: '#fff',\n // transition: 'transform 0.3s ease',\n // textTransform: 'none',\n\n // '&:not(.Mui-disabled)': {\n // backgroundColor: '#FA6755',\n\n // '&:hover': {\n // transform: 'scale(1.1)',\n // backgroundColor: '#FA6755',\n // },\n // }\n },\n '& span': {\n padding: 0,\n },\n },\n },\n subtitle: {\n fontSize: '18px',\n color: '#666',\n fontWeight: 600,\n },\n nolabel: {\n '&.custom-input': {\n width: '210px',\n marginRight: '48px',\n display: 'inline-block',\n // overflow: 'hidden',\n },\n\n '& .MuiSelect-nativeInput[value=\"\"]': {\n padding: '0 14px',\n top: 0,\n opacity: 1,\n fontSize: '16px',\n border: 'none',\n background: 'transparent',\n\n '&::placeholder, &::-webkit-input-placeholder': {\n color: 'rgba(0, 0, 0, 0.87)',\n // for select\n opacity: '0.42!important',\n },\n },\n\n // for input\n '& label[data-shrink=false] + .MuiInputBase-formControl input::placeholder, & label[data-shrink=false] + .MuiInputBase-formControl input::-webkit-input-placeholder': {\n opacity: '0.42!important',\n },\n\n '&.pl-100': {\n paddingLeft: '100px',\n },\n\n '& .MuiInputLabel-outlined': {\n display: 'none',\n }\n },\n inlineField: {\n display: 'inline-block',\n width: '50%',\n },\n}));\n\nconst richTextOptions = {\n modules: {\n // https://quilljs.com/docs/modules/toolbar/\n toolbar: [\n [{ 'header': [1, 2, 3, false] }],\n ['link', 'bold', 'italic', 'underline'], // toggled buttons\n [{ 'align': [] }],\n ],\n history: { // History module\n delay: 2000,\n maxStack: 500,\n userOnly: true\n }\n },\n theme: \"snow\"\n}\n\nconst InboxCreate: FC<CreateProps> = props => {\n // const createContext = useCreateContext();\n const classes = useStyles();\n const [initedValues, setInitedValues] = useState(() => ({}))\n const richText = useRef(null);\n\n const email = useSelector((state: AppState) => state.email);\n\n const transform = data => ({\n ...data,\n // @TODO: the email should get from the use request\n dm_email_path: email,\n dm_from: `${email.replace('@ic.dmail.ai', '')} <${email}>`,\n // @TODO: will use the html after soon\n dm_content: data?.dm_content ? DOMPurify.sanitize(data.dm_content, { ALLOWED_TAGS: [] }) : '',\n })\n\n const notify = useNotify();\n // const redirect = useRedirect();\n // const refresh = useRefresh();\n\n const onSuccess = () => {\n notify(`resources.reviews.notification.created_success`, 'success');\n // Go to the list page, shouldn't have two actions together: redirect and refresh. So use the location.href\n // redirect('/mails');\n // refresh();\n window.location.href = window.location.href.replace('mails/create', 'sents')\n };\n\n const onSaveInputValue = (name: string) => (ev: any) => {\n let cached = Storage.get(Create_Mail_Cached);\n if (!cached) {\n cached = {}\n }\n cached[name] = ev.currentTarget.value\n Storage.set(Create_Mail_Cached, cached);\n }\n\n useEffect(() => {\n const cached = Storage.get(Create_Mail_Cached);\n if (cached) {\n setInitedValues(() => cached)\n }\n\n\n }, [])\n\n return (\n <Create {...props} title=\"Compose\" className={classes.root} transform={transform} onSuccess={onSuccess}>\n <SimpleForm variant=\"outlined\" toolbar={<Toolbar />} initialValues={initedValues}>\n {/* @TODO: dm_to must be email */}\n <TextInput source=\"dm_to\" className=\"custom-input\" validate={required()} label='Account' onChange={onSaveInputValue('dm_to')} />\n <TextInput source=\"dm_subject\" className=\"custom-input\" validate={required()} label='Subject' onChange={onSaveInputValue('dm_subject')} />\n <RichTextInput source=\"dm_content\" label=\"Content\" validate={required()} options={richTextOptions} ref={richText} />\n <Typography variant=\"h6\" gutterBottom className={classes.subtitle}>\n Select Asset\n </Typography>\n <SelectInput source=\"Assets\" placeholder=\"Assets\" className={clsx(classes.nolabel, \"pl-100\", \"custom-input\")} choices={[\n { id: 'cidco', name: 'Didco' },\n { id: 'aic', name: 'Aic' },\n { id: 'doge', name: 'Doge' },\n ]} />\n <NumberInput\n source=\"Amount\"\n className={clsx(classes.nolabel, \"custom-input\")}\n // validate={required()}\n label=\"Amount\"\n placeholder=\"Amount\"\n />\n <TextInput\n source=\"Price\"\n className={clsx(classes.nolabel, \"custom-input\")}\n // validate={required()}\n label=\"Price\"\n placeholder=\"Price\"\n />\n </SimpleForm>\n </Create>\n );\n};\n\nexport default InboxCreate;\n","import InboxIcon from '@material-ui/icons/Inbox';\n\nimport InboxList from './InboxList';\nimport InboxShow from './InboxShow';\nimport InboxCreate from './InboxCreate';\n\n\n\nexport default {\n list: InboxList,\n icon: InboxIcon,\n show: InboxShow,\n create:InboxCreate,\n};\n\n","// in src/comments.js\nimport * as React from 'react';\nimport { FC } from 'react';\nimport { Card, CardHeader, CardContent } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n DateField,\n EditButton,\n NumberField,\n TextField,\n BooleanField,\n useTranslate,\n RecordMap,\n Identifier,\n Record,\n} from 'react-admin';\n\nimport CustomerReferenceField from '../visitors/CustomerReferenceField';\n\nconst useListStyles = makeStyles(theme => ({\n card: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n margin: '0.5rem 0',\n },\n cardTitleContent: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n cardContent: theme.typography.body1,\n cardContentRow: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n margin: '0.5rem 0',\n },\n}));\n\ninterface MobileGridProps {\n ids?: Identifier[];\n data?: RecordMap<Record>;\n basePath?: string;\n}\n\nconst MobileGrid: FC<MobileGridProps> = ({ ids, data, basePath }) => {\n const translate = useTranslate();\n const classes = useListStyles();\n\n if (!ids || !data || !basePath) {\n return null;\n }\n\n return (\n <div style={{ margin: '1em' }}>\n {ids.map(id => (\n <Card key={id} className={classes.card}>\n <CardHeader\n title={\n <div className={classes.cardTitleContent}>\n <span>\n {translate('resources.commands.name', 1)}\n : \n <TextField\n record={data[id]}\n source=\"reference\"\n />\n </span>\n <EditButton\n resource=\"commands\"\n basePath={basePath}\n record={data[id]}\n />\n </div>\n }\n />\n <CardContent className={classes.cardContent}>\n <span className={classes.cardContentRow}>\n {translate('resources.customers.name', 1)}: \n <CustomerReferenceField\n record={data[id]}\n basePath={basePath}\n />\n </span>\n <span className={classes.cardContentRow}>\n {translate('resources.reviews.fields.date')}: \n <DateField\n record={data[id]}\n source=\"date\"\n showTime\n />\n </span>\n <span className={classes.cardContentRow}>\n {translate(\n 'resources.commands.fields.basket.total'\n )}\n : \n <NumberField\n record={data[id]}\n source=\"total\"\n options={{ style: 'currency', currency: 'USD' }}\n />\n </span>\n <span className={classes.cardContentRow}>\n {translate('resources.commands.fields.status')}\n : \n <TextField source=\"status\" record={data[id]} />\n </span>\n <span className={classes.cardContentRow}>\n {translate('resources.commands.fields.returned')}\n : \n <BooleanField record={data[id]} source=\"returned\" />\n </span>\n </CardContent>\n </Card>\n ))}\n </div>\n );\n};\n\nMobileGrid.defaultProps = {\n data: {},\n ids: [],\n};\n\nexport default MobileGrid;\n","import * as React from 'react';\nimport { FC, Fragment, useCallback, useEffect, useState } from 'react';\nimport {\n useRedirect,\n Datagrid,\n DatagridProps,\n DateField,\n DateInput,\n Filter,\n FilterProps,\n Identifier,\n List,\n ListContextProvider,\n ListProps,\n NullableBooleanInput,\n NumberField,\n ReferenceInput,\n ReferenceField,\n SearchInput,\n TextField,\n TextInput,\n Pagination,\n useGetList,\n useListContext,\n} from 'react-admin';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { AppState } from '../types';\nimport { useMediaQuery, Divider, Tabs, Tab, Theme } from '@material-ui/core';\nimport Empty from '../components/empty'\nimport BulkActionButtons from '../components/BulkActionButtons'\n\n\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport NbItemsField from './NbItemsField';\nimport CustomerReferenceField from '../visitors/CustomerReferenceField';\nimport AddressField from '../visitors/AddressField';\nimport MobileGrid from './MobileGrid';\nimport { Customer } from '../types';\n\nconst JunkFilter: FC<Omit<FilterProps, 'children'>> = props => (\n <Filter {...props}>\n <SearchInput source=\"q\" alwaysOn />\n\n </Filter>\n);\n\nconst useDatagridStyles = makeStyles({\n total: { fontWeight: 'bold' },\n});\n\nconst tabs = [\n { id: 'junk', name: 'Junk' },\n];\n\ninterface TabbedDatagridProps extends DatagridProps { }\n\nconst useGetTotals = (filterValues: any) => {\n const { total: totalJunk } = useGetList(\n 'junks',\n { perPage: 1, page: 1 },\n { field: 'id', order: 'ASC' },\n { ...filterValues, status: 'junk' }\n );\n\n return {\n junk: totalJunk\n };\n};\n\nconst TabbedDatagrid: FC<TabbedDatagridProps> = props => {\n const listContext = useListContext();\n // console.log(listContext)\n\n const { ids, filterValues, setFilters, displayedFilters } = listContext;\n const classes = useDatagridStyles();\n const isXSmall = useMediaQuery<Theme>(theme =>\n theme.breakpoints.down('xs')\n );\n const [junk, setJunk] = useState<Identifier[]>([] as Identifier[]);\n\n const totals = useGetTotals(filterValues) as any;\n\n useEffect(() => {\n if (ids && ids !== filterValues.status) {\n switch (filterValues.status) {\n case 'junk':\n setJunk(ids);\n break;\n }\n }\n }, [ids, filterValues.status]);\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<{}>, value: any) => {\n setFilters &&\n setFilters(\n { ...filterValues, status: value },\n displayedFilters\n );\n },\n [displayedFilters, filterValues, setFilters]\n );\n\n const selectedIds = junk;\n\n return (\n <Fragment>\n {/* <Divider /> */}\n {isXSmall ? (\n <ListContextProvider\n value={{ ...listContext, ids: selectedIds }}\n >\n <MobileGrid {...props} ids={selectedIds} />\n </ListContextProvider>\n ) : (\n <div>\n {filterValues.status === 'junk' && (\n <ListContextProvider\n value={{ ...listContext, ids: junk }}\n >\n <Datagrid {...props} empty={<Empty />} optimized rowClick=\"show\">\n <TextField source=\"from\" headerClassName={classes.total} />\n <TextField source=\"subject\" headerClassName={classes.total} />\n <DateField source=\"date\" locales=\"en-US\" showTime headerClassName={classes.total} />\n </Datagrid>\n </ListContextProvider>\n )}\n </div>\n )}\n </Fragment>\n );\n};\n\n// https://material-ui.com/zh/components/data-grid/pagination/\nconst PostPagination = props => {\n return (\n <Pagination rowsPerPageOptions={[10]} labelRowsPerPage={''} {...props} limit={null} />\n )\n}\n\nconst JunkList: FC<ListProps> = props => {\n const emailname = useSelector((state: AppState) => state.email);\n const redirect = useRedirect();\n if (!emailname) {\n window.confirm('Please set Mailbox alias first');\n redirect('./settings/show/email')\n }\n\n return (\n <List\n {...props}\n filterDefaultValues={{\n status: 'junk',\n emailname\n }}\n sort={{ field: 'date', order: 'DESC' }}\n perPage={25}\n exporter={false}\n empty={<Empty />}\n // filters={<JunkFilter />}\n // delete MuiToolbar\n actions={false}\n pagination={<PostPagination />}\n bulkActionButtons={<BulkActionButtons />}\n >\n <TabbedDatagrid />\n </List>\n )\n};\n\nexport default JunkList;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport {\n ShowProps,\n useShowController,\n useRedirect,\n} from 'react-admin';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport Show from '../components/show'\nimport { Junk, Customer } from '../types';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n\n },\n}));\n\nconst JunkShow: FC<ShowProps> = props => {\n const classes = useStyles();\n\n return (\n <div className={classes.root}>\n <Show {...props} />\n </div>\n );\n};\n\nexport default JunkShow;\n","import JunkIcon from '@material-ui/icons/Error';\n\nimport JunkList from './junkList';\nimport JunkShow from './junkShow';\n\n\n\nexport default {\n list: JunkList,\n icon: JunkIcon,\n show: JunkShow,\n};","// in src/comments.js\nimport * as React from 'react';\nimport { FC } from 'react';\nimport { Card, CardHeader, CardContent } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n DateField,\n EditButton,\n NumberField,\n TextField,\n BooleanField,\n useTranslate,\n RecordMap,\n Identifier,\n Record,\n} from 'react-admin';\n\nimport CustomerReferenceField from '../visitors/CustomerReferenceField';\n\nconst useListStyles = makeStyles(theme => ({\n card: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n margin: '0.5rem 0',\n },\n cardTitleContent: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n cardContent: theme.typography.body1,\n cardContentRow: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n margin: '0.5rem 0',\n },\n}));\n\ninterface MobileGridProps {\n ids?: Identifier[];\n data?: RecordMap<Record>;\n basePath?: string;\n}\n\nconst MobileGrid: FC<MobileGridProps> = ({ ids, data, basePath }) => {\n const translate = useTranslate();\n const classes = useListStyles();\n\n if (!ids || !data || !basePath) {\n return null;\n }\n\n return (\n <div style={{ margin: '1em' }}>\n {ids.map(id => (\n <Card key={id} className={classes.card}>\n <CardHeader\n title={\n <div className={classes.cardTitleContent}>\n <span>\n {translate('resources.commands.name', 1)}\n : \n <TextField\n record={data[id]}\n source=\"reference\"\n />\n </span>\n <EditButton\n resource=\"commands\"\n basePath={basePath}\n record={data[id]}\n />\n </div>\n }\n />\n <CardContent className={classes.cardContent}>\n <span className={classes.cardContentRow}>\n {translate('resources.customers.name', 1)}: \n <CustomerReferenceField\n record={data[id]}\n basePath={basePath}\n />\n </span>\n <span className={classes.cardContentRow}>\n {translate('resources.reviews.fields.date')}: \n <DateField\n record={data[id]}\n source=\"date\"\n showTime\n />\n </span>\n <span className={classes.cardContentRow}>\n {translate(\n 'resources.commands.fields.basket.total'\n )}\n : \n <NumberField\n record={data[id]}\n source=\"total\"\n options={{ style: 'currency', currency: 'USD' }}\n />\n </span>\n <span className={classes.cardContentRow}>\n {translate('resources.commands.fields.status')}\n : \n <TextField source=\"status\" record={data[id]} />\n </span>\n <span className={classes.cardContentRow}>\n {translate('resources.commands.fields.returned')}\n : \n <BooleanField record={data[id]} source=\"returned\" />\n </span>\n </CardContent>\n </Card>\n ))}\n </div>\n );\n};\n\nMobileGrid.defaultProps = {\n data: {},\n ids: [],\n};\n\nexport default MobileGrid;\n","import * as React from 'react';\nimport { FC, Fragment, useCallback, useEffect, useState } from 'react';\nimport {\n useRedirect,\n Datagrid,\n DatagridProps,\n DateField,\n DateInput,\n Filter,\n FilterProps,\n Identifier,\n List,\n ListContextProvider,\n ListProps,\n NullableBooleanInput,\n NumberField,\n ReferenceInput,\n ReferenceField,\n SearchInput,\n TextField,\n TextInput,\n Pagination,\n useGetList,\n useListContext,\n} from 'react-admin';\nimport { useMediaQuery, Divider, Tabs, Tab, Theme } from '@material-ui/core';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { AppState } from '../types';\n\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport NbItemsField from './NbItemsField';\nimport CustomerReferenceField from '../visitors/CustomerReferenceField';\nimport AddressField from '../visitors/AddressField';\nimport MobileGrid from './MobileGrid';\nimport { Customer } from '../types';\nimport Empty from '../components/empty'\nimport PostPagination from '../components/pagination'\nimport BulkActionButtons from '../components/BulkActionButtons'\n\nconst SentFilter: FC<Omit<FilterProps, 'children'>> = props => (\n <Filter {...props}>\n <SearchInput source=\"q\" alwaysOn />\n\n </Filter>\n);\n\nconst useDatagridStyles = makeStyles({\n total: { fontWeight: 'bold' },\n});\n\nconst tabs = [\n { id: 'sent', name: 'Sent' },\n];\n\ninterface TabbedDatagridProps extends DatagridProps { }\n\nconst useGetTotals = (filterValues: any) => {\n const { total: totalSent } = useGetList(\n 'sents',\n { perPage: 1, page: 1 },\n { field: 'id', order: 'ASC' },\n { ...filterValues, status: 'sent' }\n );\n\n return {\n sent: totalSent\n };\n};\n\nconst TabbedDatagrid: FC<TabbedDatagridProps> = props => {\n const listContext = useListContext();\n const { ids, filterValues, setFilters, displayedFilters } = listContext;\n const classes = useDatagridStyles();\n const isXSmall = useMediaQuery<Theme>(theme =>\n theme.breakpoints.down('xs')\n );\n const [sent, setSent] = useState<Identifier[]>([] as Identifier[]);\n\n const totals = useGetTotals(filterValues) as any;\n\n useEffect(() => {\n if (ids && ids !== filterValues.status) {\n switch (filterValues.status) {\n case 'sent':\n setSent(ids);\n break;\n }\n }\n }, [ids, filterValues.status]);\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<{}>, value: any) => {\n setFilters &&\n setFilters(\n { ...filterValues, status: value },\n displayedFilters\n );\n },\n [displayedFilters, filterValues, setFilters]\n );\n\n const selectedIds = sent;\n\n return (\n <Fragment>\n {/* <Divider /> */}\n {isXSmall ? (\n <ListContextProvider\n value={{ ...listContext, ids: selectedIds }}\n >\n <MobileGrid {...props} ids={selectedIds} />\n </ListContextProvider>\n ) : (\n <div>\n {filterValues.status === 'sent' && (\n <ListContextProvider\n value={{ ...listContext, ids: sent }}\n >\n <Datagrid {...props} empty={<Empty />} optimized rowClick=\"show\">\n <TextField source=\"to\" label='Recipient' headerClassName={classes.total} />\n <TextField source=\"subject\" headerClassName={classes.total} />\n <DateField source=\"date\" headerClassName={classes.total} />\n </Datagrid>\n </ListContextProvider>\n )}\n </div>\n )}\n </Fragment>\n );\n};\n\nconst SentList: FC<ListProps> = props => {\n const emailname = useSelector((state: AppState) => state.email);\n const redirect = useRedirect();\n if (!emailname) {\n window.confirm('Please set Mailbox alias first');\n redirect('./settings/show/email')\n }\n\n return (\n <List\n {...props}\n filterDefaultValues={{\n status: 'sent',\n emailname,\n }}\n sort={{ field: 'date', order: 'DESC' }}\n perPage={25}\n exporter={false}\n // filters={<SentFilter />}\n // delete MuiToolbar\n actions={false}\n pagination={<PostPagination />}\n bulkActionButtons={<BulkActionButtons />}\n >\n <TabbedDatagrid />\n </List>\n )\n};\n\nexport default SentList;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport {\n ShowProps,\n useShowController,\n useRedirect,\n} from 'react-admin';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport Show from '../components/show'\nimport { Sent, Customer } from '../types';\n\ninterface SentTitleProps {\n record?: Sent;\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n\n },\n}));\n\nconst SentShow: FC<ShowProps> = props => {\n const classes = useStyles();\n\n return (\n <div className={classes.root}>\n <Show {...props} />\n </div>\n );\n};\n\nexport default SentShow;\n","import SentIcon from '@material-ui/icons/Error';\n\nimport SentList from './sentList';\nimport SentShow from './sentShow';\n\n\n\nexport default {\n list: SentList,\n icon: SentIcon,\n show: SentShow,\n};","// in src/comments.js\nimport * as React from 'react';\nimport { FC } from 'react';\nimport { Card, CardHeader, CardContent } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n DateField,\n EditButton,\n NumberField,\n TextField,\n BooleanField,\n useTranslate,\n RecordMap,\n Identifier,\n Record,\n} from 'react-admin';\n\nimport CustomerReferenceField from '../visitors/CustomerReferenceField';\n\nconst useListStyles = makeStyles(theme => ({\n card: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n margin: '0.5rem 0',\n },\n cardTitleContent: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n cardContent: theme.typography.body1,\n cardContentRow: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n margin: '0.5rem 0',\n },\n}));\n\ninterface MobileGridProps {\n ids?: Identifier[];\n data?: RecordMap<Record>;\n basePath?: string;\n}\n\nconst MobileGrid: FC<MobileGridProps> = ({ ids, data, basePath }) => {\n const translate = useTranslate();\n const classes = useListStyles();\n\n if (!ids || !data || !basePath) {\n return null;\n }\n\n return (\n <div style={{ margin: '1em' }}>\n {ids.map(id => (\n <Card key={id} className={classes.card}>\n <CardHeader\n title={\n <div className={classes.cardTitleContent}>\n <span>\n {translate('resources.commands.name', 1)}\n : \n <TextField\n record={data[id]}\n source=\"reference\"\n />\n </span>\n <EditButton\n resource=\"commands\"\n basePath={basePath}\n record={data[id]}\n />\n </div>\n }\n />\n <CardContent className={classes.cardContent}>\n <span className={classes.cardContentRow}>\n {translate('resources.customers.name', 1)}: \n <CustomerReferenceField\n record={data[id]}\n basePath={basePath}\n />\n </span>\n <span className={classes.cardContentRow}>\n {translate('resources.reviews.fields.date')}: \n <DateField\n record={data[id]}\n source=\"date\"\n showTime\n />\n </span>\n <span className={classes.cardContentRow}>\n {translate(\n 'resources.commands.fields.basket.total'\n )}\n : \n <NumberField\n record={data[id]}\n source=\"total\"\n options={{ style: 'currency', currency: 'USD' }}\n />\n </span>\n <span className={classes.cardContentRow}>\n {translate('resources.commands.fields.status')}\n : \n <TextField source=\"status\" record={data[id]} />\n </span>\n <span className={classes.cardContentRow}>\n {translate('resources.commands.fields.returned')}\n : \n <BooleanField record={data[id]} source=\"returned\" />\n </span>\n </CardContent>\n </Card>\n ))}\n </div>\n );\n};\n\nMobileGrid.defaultProps = {\n data: {},\n ids: [],\n};\n\nexport default MobileGrid;\n","import * as React from 'react';\nimport { FC, Fragment, useCallback, useEffect, useState } from 'react';\nimport {\n useRedirect,\n Datagrid,\n DatagridProps,\n DateField,\n DateInput,\n Filter,\n FilterProps,\n Identifier,\n List,\n ListContextProvider,\n ListProps,\n NullableBooleanInput,\n NumberField,\n ReferenceInput,\n ReferenceField,\n SearchInput,\n TextField,\n TextInput,\n useGetList,\n useListContext,\n} from 'react-admin';\nimport { useMediaQuery, Divider, Tabs, Tab, Theme } from '@material-ui/core';\n\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport NbItemsField from './NbItemsField';\nimport CustomerReferenceField from '../visitors/CustomerReferenceField';\nimport AddressField from '../visitors/AddressField';\nimport MobileGrid from './MobileGrid';\nimport { Customer } from '../types';\nimport Empty from '../components/empty'\nimport PostPagination from '../components/pagination'\nimport BulkActionButtons from '../components/BulkActionButtons'\nimport { useSelector, useDispatch } from 'react-redux';\nimport { AppState } from '../types';\n\nconst TrashFilter: FC<Omit<FilterProps, 'children'>> = props => (\n <Filter {...props}>\n <SearchInput source=\"q\" alwaysOn />\n\n </Filter>\n);\n\nconst useDatagridStyles = makeStyles({\n total: { fontWeight: 'bold' },\n});\n\nconst tabs = [\n { id: 'trash', name: 'Trash' },\n];\n\ninterface TabbedDatagridProps extends DatagridProps { }\n\nconst useGetTotals = (filterValues: any) => {\n const { total: totalTrash } = useGetList(\n 'trashs',\n { perPage: 1, page: 1 },\n { field: 'id', order: 'ASC' },\n { ...filterValues, status: 'trash' }\n );\n\n return {\n trash: totalTrash\n };\n};\n\nconst TabbedDatagrid: FC<TabbedDatagridProps> = props => {\n const listContext = useListContext();\n const { ids, filterValues, setFilters, displayedFilters } = listContext;\n const classes = useDatagridStyles();\n const isXSmall = useMediaQuery<Theme>(theme =>\n theme.breakpoints.down('xs')\n );\n const [trash, setTrash] = useState<Identifier[]>([] as Identifier[]);\n\n const totals = useGetTotals(filterValues) as any;\n\n useEffect(() => {\n if (ids && ids !== filterValues.status) {\n switch (filterValues.status) {\n case 'trash':\n setTrash(ids);\n break;\n }\n }\n }, [ids, filterValues.status]);\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<{}>, value: any) => {\n setFilters &&\n setFilters(\n { ...filterValues, status: value },\n displayedFilters\n );\n },\n [displayedFilters, filterValues, setFilters]\n );\n\n const selectedIds = trash;\n\n return (\n <Fragment>\n {/* <Divider /> */}\n {isXSmall ? (\n <ListContextProvider\n value={{ ...listContext, ids: selectedIds }}\n >\n <MobileGrid {...props} ids={selectedIds} />\n </ListContextProvider>\n ) : (\n <div>\n {filterValues.status === 'trash' && (\n <ListContextProvider\n value={{ ...listContext, ids: trash }}\n >\n <Datagrid {...props} empty={<Empty />} optimized rowClick=\"show\">\n {/* the email from sent or inbox should have a distinguish */}\n <TextField source=\"from\" label=\"sender\" headerClassName={classes.total} />\n <TextField source=\"subject\" headerClassName={classes.total} />\n <DateField source=\"date\" locales=\"en-US\" showTime headerClassName={classes.total} />\n </Datagrid>\n </ListContextProvider>\n )}\n </div>\n )}\n </Fragment>\n );\n};\n\nconst TrashList: FC<ListProps> = props => {\n const emailname = useSelector((state: AppState) => state.email);\n const redirect = useRedirect();\n if (!emailname) {\n window.confirm('Please set Mailbox alias first');\n redirect('./settings/show/email')\n }\n\n return (\n <List\n {...props}\n filterDefaultValues={{\n status: 'trash',\n emailname\n }}\n sort={{ field: 'date', order: 'DESC' }}\n perPage={25}\n exporter={false}\n // filters={<TrashFilter />}\n // delete MuiToolbar\n actions={false}\n pagination={<PostPagination />}\n bulkActionButtons={<BulkActionButtons />}\n >\n <TabbedDatagrid />\n </List>\n )\n};\n\nexport default TrashList;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport {\n ShowProps,\n useShowController,\n useRedirect,\n} from 'react-admin';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport Show from '../components/show'\nimport { Trash, Customer } from '../types';\n\ninterface TrashTitleProps {\n record?: Trash;\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n\n },\n}));\n\nconst TrashShow: FC<ShowProps> = props => {\n const classes = useStyles();\n\n return (\n <div className={classes.root}>\n <Show {...props} />\n </div>\n );\n};\n\nexport default TrashShow;\n","import TrashIcon from '@material-ui/icons/Error';\n\nimport TrashList from './trashList';\nimport TrashShow from './trashShow';\n\n\n\nexport default {\n list: TrashList,\n icon: TrashIcon,\n show: TrashShow,\n};","// in src/comments.js\nimport * as React from 'react';\nimport { FC } from 'react';\nimport { Card, CardHeader, CardContent } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n DateField,\n EditButton,\n NumberField,\n TextField,\n BooleanField,\n useTranslate,\n RecordMap,\n Identifier,\n Record,\n} from 'react-admin';\n\nimport CustomerReferenceField from '../visitors/CustomerReferenceField';\n\nconst useListStyles = makeStyles(theme => ({\n card: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n margin: '0.5rem 0',\n },\n cardTitleContent: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n cardContent: theme.typography.body1,\n cardContentRow: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n margin: '0.5rem 0',\n },\n}));\n\ninterface MobileGridProps {\n ids?: Identifier[];\n data?: RecordMap<Record>;\n basePath?: string;\n}\n\nconst MobileGrid: FC<MobileGridProps> = ({ ids, data, basePath }) => {\n const translate = useTranslate();\n const classes = useListStyles();\n\n if (!ids || !data || !basePath) {\n return null;\n }\n\n return (\n <div style={{ margin: '1em' }}>\n {ids.map(id => (\n <Card key={id} className={classes.card}>\n <CardHeader\n title={\n <div className={classes.cardTitleContent}>\n <span>\n {translate('resources.commands.name', 1)}\n : \n <TextField\n record={data[id]}\n source=\"reference\"\n />\n </span>\n <EditButton\n resource=\"commands\"\n basePath={basePath}\n record={data[id]}\n />\n </div>\n }\n />\n <CardContent className={classes.cardContent}>\n <span className={classes.cardContentRow}>\n {translate('resources.customers.name', 1)}: \n <CustomerReferenceField\n record={data[id]}\n basePath={basePath}\n />\n </span>\n <span className={classes.cardContentRow}>\n {translate('resources.reviews.fields.date')}: \n <DateField\n record={data[id]}\n source=\"date\"\n showTime\n />\n </span>\n <span className={classes.cardContentRow}>\n {translate(\n 'resources.commands.fields.basket.total'\n )}\n : \n <NumberField\n record={data[id]}\n source=\"total\"\n options={{ style: 'currency', currency: 'USD' }}\n />\n </span>\n <span className={classes.cardContentRow}>\n {translate('resources.commands.fields.status')}\n : \n <TextField source=\"status\" record={data[id]} />\n </span>\n <span className={classes.cardContentRow}>\n {translate('resources.commands.fields.returned')}\n : \n <BooleanField record={data[id]} source=\"returned\" />\n </span>\n </CardContent>\n </Card>\n ))}\n </div>\n );\n};\n\nMobileGrid.defaultProps = {\n data: {},\n ids: [],\n};\n\nexport default MobileGrid;\n","\nimport React, { FC, Fragment, useCallback, useEffect, useState, cloneElement, useMemo } from 'react';\nimport { useRefresh, useRedirect } from 'react-admin';\nimport { makeStyles } from '@material-ui/core/styles';\nimport clsx from 'clsx';\nimport down from '../assets/red/down3.png';\n\nconst useStyles = makeStyles(\n theme => ({\n root: {\n position: 'relative',\n width: '200px',\n border: '1px solid #ddd',\n padding: '0 15px',\n lineHeight: '30px',\n marginRight: '30px',\n cursor: 'pointer',\n color: 'rgba(0, 0, 0, 0.87)',\n borderRadius: '5px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n\n '&::after': {\n content: '\"\"',\n width: '20px',\n height: '11px',\n display: 'block',\n background: `url(${down}) no-repeat`,\n backgroundSize: '100%',\n transition: 'transform 0.3s ease-in-out 0s',\n transformOrigin: 'center center',\n },\n\n '&.show': {\n '&::after': {\n transform: 'rotate(180deg)',\n },\n '& ul': {\n display: 'block',\n },\n },\n\n '& ul': {\n position: 'absolute',\n top: '100%',\n left: 0,\n right: 0,\n marginTop: '2px',\n boxShadow: '0px 5px 5px -3px rgb(0, 0, 0, 0.2), 0px 8px 10px 1px rgb(0, 0, 0, 0.14), 0px 3px 14px 2px rgb(0, 0, 0, 0.12)',\n padding: '8px 0',\n borderRadius: '4px',\n background: '#fff',\n display: 'none',\n\n '& li': {\n display: 'block',\n overflow: 'hidden',\n fontSize: '16px',\n lineHeight: 1.5,\n padding: '6px 20px',\n color: 'rgba(0, 0, 0, 0.54)',\n cursor: 'pointer',\n userSelect: 'none',\n\n '&:hover': {\n backgroundColor: 'rgba(0, 0, 0, 0.04)',\n color: '#FA6755',\n }\n }\n },\n },\n }));\n\ninterface Option {\n label: string;\n value: string;\n}\ninterface Props {\n options: Option[];\n}\nconst DropDown: FC<Props> = ({ options }) => {\n const classes = useStyles();\n const redirect = useRedirect();\n const onMoveAsset = () => {\n redirect('create', './assets');\n };\n\n const [asset, setAsset] = useState<string>('');\n const [assetText, setAssetText] = useState<string>('');\n const [showDrop, setShowDrop] = useState<boolean>(false);\n const refresh = useRefresh();\n const onSelectDrop = (value: string) => () => {\n setAsset(value);\n // @TODO: can not use refresh,it let the whole component reRender!!!!\n // refresh();\n }\n useEffect(() => {\n const filter = options.filter(({ value }: { value: string }) => value === asset)\n setAssetText(filter.length ? filter[0].label : '')\n }, [asset])\n\n const dropClick = useCallback((ev) => {\n if (ev.target.closest('.__drops') && !ev.target.closest('.__drops ul')) {\n setShowDrop(!showDrop)\n } else {\n setShowDrop(false)\n }\n }, [showDrop, setShowDrop]);\n useEffect(() => {\n document.body.addEventListener('click', dropClick)\n\n return () => {\n document.body.removeEventListener('click', dropClick)\n }\n }, [dropClick])\n\n return (\n <div className={clsx(classes.root, '__drops', showDrop ? 'show' : '')}>\n <span>{assetText || 'Please select'}</span>\n <ul>\n {options.map(({ label, value }: { label: string, value: string }) => (\n <li key={value} onClick={onSelectDrop(value)}>{label}</li>\n ))}\n </ul>\n </div>\n )\n};\n\nexport default DropDown;","import * as React from 'react';\nimport { FC, Fragment, useCallback, useEffect, useState, cloneElement } from 'react';\nimport {\n BooleanField,\n Datagrid,\n DatagridProps,\n DateField,\n DateInput,\n Filter,\n FilterProps,\n Identifier,\n List,\n ListContextProvider,\n ListProps,\n NullableBooleanInput,\n NumberField,\n ReferenceInput,\n ReferenceField,\n SearchInput,\n TextField,\n TextInput,\n useRedirect,\n useGetList,\n useListContext,\n useRecordContext,\n ImageField,\n FieldProps,\n TopToolbar,\n Button,\n BulkDeleteButton,\n Pagination,\n sanitizeListRestProps,\n DeleteButton\n} from 'react-admin';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { AppState } from '../types';\nimport { useMediaQuery, Divider, Tabs, Tab, Theme, Avatar, Typography } from '@material-ui/core';\n\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport NbItemsField from './NbItemsField';\nimport MobileGrid from './MobileGrid';\nimport { Project } from '../types'\n\nimport IconSubscriptions from '@material-ui/icons/Subscriptions';\nimport Empty from '../components/empty'\nimport PostPagination from '../components/pagination'\nimport DropDown from '../components/dropDown'\nimport { useStyles } from '../components/BulkActionButtons'\n// import { Storage, Create_Mail_Cached, Email_Name } from '../utils/storage'\n\nconst ProjectFilter: FC<Omit<FilterProps, 'children'>> = props => (\n <Filter {...props}>\n <SearchInput source=\"q\" alwaysOn />\n\n </Filter>\n);\n\nconst useDatagridStyles = makeStyles(\n theme => ({\n root: {\n '& .MuiTableCell-root': {\n height: 65,\n },\n },\n tabs: {\n display: 'block',\n marginBottom: '25px',\n },\n tab: {\n marginRight: '50px',\n lineHeight: '17px',\n padding: '12px 0',\n fontSize: '17px',\n fontFamily: 'PingFang SC',\n color: '#56677B',\n fontWeight: 600,\n minWidth: 'auto',\n\n '&.Mui-selected': {\n color: '#153F5D',\n fontWeight: 'bold',\n fontSize: '20px',\n }\n },\n chunk: {\n display: 'flex',\n flexWrap: 'nowrap',\n alignItems: 'center',\n },\n customer: {\n display: 'flex',\n flexWrap: 'nowrap',\n alignItems: 'center',\n },\n total: { fontWeight: 'bold' },\n ava: {\n marginRight: '35px',\n },\n project_avatar: {\n width: 54,\n height: 54,\n borderRadius: '26px',\n },\n project_name: {\n fontSize: '20px!important',\n fontWeight: 'bold',\n },\n // project_avatar: {\n // width: 55,\n // height: 55,\n // borderRadius: 18,\n // },\n total_amm: { fontWeight: 'bold', marginRight: 5 },\n\n }));\n\ninterface TabbedDatagridProps extends DatagridProps { }\n\nconst useGetTotals = (filterValues: any) => {\n const { total: totalProject } = useGetList(\n 'projects',\n { perPage: 1, page: 1 },\n { field: 'id', order: 'ASC' },\n { ...filterValues, status: 'information' }\n );\n\n return {\n project: totalProject\n };\n};\n\nconst tabs = [\n { id: 'information', name: 'Information' },\n { id: 'attetion', name: 'Attention' },\n];\n\n\nconst TabbedDatagrid: FC<TabbedDatagridProps> = props => {\n const listContext = useListContext();\n console.log(listContext)\n const { ids, filterValues, setFilters, displayedFilters } = listContext;\n const classes = useDatagridStyles();\n const isXSmall = useMediaQuery<Theme>(theme =>\n theme.breakpoints.down('xs')\n );\n const [project, setProject] = useState<Identifier[]>([] as Identifier[]);\n\n const totals = useGetTotals(filterValues) as any;\n\n useEffect(() => {\n if (ids && ids !== filterValues.status) {\n switch (filterValues.status) {\n case 'information':\n setProject(ids);\n break;\n }\n }\n }, [ids, filterValues.status]);\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<{}>, value: any) => {\n setFilters &&\n setFilters(\n { ...filterValues, status: value },\n displayedFilters\n );\n },\n [displayedFilters, filterValues, setFilters]\n );\n\n\n const CustomerTotalField: FC<FieldProps<Project>> = props => (\n props.record ? (\n <div className={classes.customer}>\n <TextField source=\"total\" />\n <div className={classes.total}>  {props.record.assets.coinname}</div>\n </div>\n ) : null\n );\n\n const CustomerProjectField: FC<FieldProps<Project>> = ({ record }) =>\n record ? (<div className={classes.chunk}>\n <Typography className={classes.ava}>\n <Avatar className={classes.project_avatar} src={`${record.assets.icon}`} />\n </Typography>\n <Typography\n component=\"span\"\n variant=\"body2\"\n className={classes.project_name}\n >\n {record.projectname}\n </Typography>\n </div>\n ) : null;\n\n const selectedIds = project;\n\n return (\n <Fragment>\n <Tabs\n variant=\"scrollable\"\n value={filterValues.status}\n indicatorColor=\"primary\"\n onChange={handleChange}\n className={classes.tabs}\n >\n {tabs.map(choice => (\n <Tab\n key={choice.id}\n label={choice.name}\n value={choice.id}\n className={classes.tab}\n />\n ))}\n </Tabs>\n {/* <Divider /> */}\n {isXSmall ? (\n <ListContextProvider\n value={{ ...listContext, ids: selectedIds }}\n >\n <MobileGrid {...props} ids={selectedIds} />\n </ListContextProvider>\n ) : (\n <div className={classes.root}>\n {/* {filterValues.status === 'information' && ( */}\n <ListContextProvider\n value={{ ...listContext, ids: project }}\n >\n <Datagrid {...props} empty={<Empty />} optimized rowClick=\"show\" hasBulkActions={false}>\n <CustomerProjectField className={classes.chunk} headerClassName={classes.total} label='Project' />\n {/* <TextField source=\"projectname\" label='Project' className={classes.total} headerClassName={classes.total} /> */}\n <TextField source=\"tags\" label='Stage' headerClassName={classes.total} />\n <TextField source=\"participated\" headerClassName={classes.total} />\n <TextField source=\"winners\" headerClassName={classes.total} />\n <CustomerTotalField source=\"total\" label='Total Amount' headerClassName={classes.total} />\n <DateField source=\"enddate\" label='End Date' headerClassName={classes.total} />\n <BooleanField source=\"sub\" label='Sub' headerClassName={classes.total} />\n </Datagrid>\n </ListContextProvider>\n {/* )} */}\n </div>\n )}\n </Fragment>\n );\n};\n\n// const ListActions = (props) => {\n// const {\n// className,\n// exporter,\n// filters,\n// maxResults,\n// ...rest\n// } = props;\n// const {\n// currentSort,\n// resource,\n// displayedFilters,\n// filterValues,\n// hasCreate,\n// basePath,\n// selectedIds,\n// showFilter,\n// total,\n// } = useListContext();\n// return (\n// <TopToolbar className={className} {...sanitizeListRestProps(rest)}>\n// {filters && cloneElement(filters, {\n// resource,\n// showFilter,\n// displayedFilters,\n// filterValues,\n// context: 'button',\n// })}\n// <DeleteButton variant=\"contained\" {...props} />\n\n// </TopToolbar>\n// );\n// };\n\n// const PostBulkActionButtons = props => (\n// <Fragment>\n// <Button variant=\"contained\"\n// onClick={() => { alert('Subscription Projects Success!'); }}\n// label=\"Subscription\"\n// >\n// <IconSubscriptions />\n// </Button>\n// </Fragment>\n// );\n\n\nconst useActionsStyles = makeStyles(\n theme => ({\n root: {\n display: 'flex',\n alignItems: 'center',\n },\n }));\n\nconst dropOptions = [\n {\n label: 'Airdrop',\n value: '1'\n },\n {\n label: 'Defi',\n value: '2'\n },\n {\n label: 'NFT',\n value: '3'\n },\n {\n label: 'GameFi',\n value: '4'\n },\n {\n label: 'Metaverse',\n value: '5'\n },\n {\n label: 'Swap',\n value: '6'\n },\n {\n label: 'DAO',\n value: '7'\n },\n {\n label: 'BSC',\n value: '8'\n },\n {\n label: 'Heco',\n value: '9'\n },\n {\n label: 'Solana',\n value: '10'\n },\n]\n\nconst BulkActionButtons = (props) => {\n const actionClasses = useActionsStyles();\n\n return (\n <div className={actionClasses.root}>\n <DropDown options={dropOptions} />\n </div>\n )\n};\n\nconst useListStyles = makeStyles(\n theme => ({\n root: {\n '& h6': {\n display: 'none',\n },\n\n '& .MuiToolbar-root[data-test=\"bulk-actions-toolbar\"]': {\n position: 'absolute',\n right: '34px',\n top: '30px',\n flexWrap: 'nowrap',\n },\n },\n }));\n\nconst ProjectList: FC<ListProps> = props => {\n const classes = useListStyles();\n // const email = Storage.get(Email_Name);\n const emailname = useSelector((state: AppState) => state.email);\n const redirect = useRedirect();\n if (!emailname) {\n window.confirm('Please set Mailbox alias first');\n redirect('./settings/show/email')\n }\n\n return (\n <List\n {...props}\n className={classes.root}\n filterDefaultValues={{ status: 'information', emailname }}\n sort={{ field: 'enddate', order: 'DESC' }}\n perPage={25}\n exporter={false}\n // filters={<ProjectFilter />}\n // actions={<ListActions />}\n // delete MuiToolbar\n actions={false}\n pagination={<PostPagination />}\n bulkActionButtons={<BulkActionButtons />}\n >\n <TabbedDatagrid />\n </List>\n )\n};\n\nexport default ProjectList;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport {\n BooleanInput,\n DateField,\n Show,\n ShowProps,\n FormWithRedirect,\n Labeled,\n ReferenceField,\n SelectInput,\n TextField,\n Toolbar,\n EditContextProvider,\n useTranslate,\n TextInput,\n SimpleForm,\n EditProps,\n SimpleShowLayout,\n RichTextField,\n FieldProps,\n useShowController,\n SaveButton,\n DeleteButton,\n Button,\n useRedirect,\n} from 'react-admin';\nimport { Link as RouterLink } from 'react-router-dom';\nimport {\n Card,\n CardContent,\n Box,\n Grid,\n Typography,\n Link,\n Avatar,\n IconButton,\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport { Project, Customer } from '../types';\nimport Totals from './Totals';\nimport CustomerReferenceField from '../visitors/CustomerReferenceField';\nimport RichTextInput from 'ra-input-rich-text';\nimport SubIcon from '@material-ui/icons/TurnedInNotRounded';\n\ninterface ProjectTitleProps {\n record?: Project;\n}\n\nconst Projectitle: FC<ProjectTitleProps> = ({ record }) => {\n const translate = useTranslate();\n return record ? (\n <span>\n {translate('resources.commands.title', {\n reference: record.reference,\n })}\n </span>\n ) : null;\n};\n\n\nconst CustomerField: FC<FieldProps<Customer>> = ({ record }) =>\n record ? (\n <Typography>\n <Avatar src={`${record.avatar}?size=32x32`} />{record.first_name} {record.last_name}({record.email})\n </Typography>\n ) : null;\n\n\nconst useStyles = makeStyles(theme => ({\n root: {\n },\n title: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n margin: '1em',\n },\n form: {\n [theme.breakpoints.up('xs')]: {\n width: 400,\n },\n [theme.breakpoints.down('xs')]: {\n width: '100vw',\n marginTop: -30,\n },\n },\n content:{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n contentdiv:{\n width: '200px',\n },\n inlineField: {\n display: 'inline-block',\n width: '50%',\n },\n spacer: { height: 20 },\n invoices: { margin: '10px 0' },\n toolbar: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n bold: { fontWeight: 'bold' },\n}));\n\n\nconst CustomToolbar = props => (\n <Toolbar {...props} classes={useStyles()}>\n <SaveButton />\n <DeleteButton undoable={false} />\n </Toolbar>\n);\n\n\nconst Spacer = () => <Box m={1}> </Box>;\n\n\n\n\nconst ProjectShow: FC<ShowProps> = props => {\n const classes = useStyles();\n const { record } = useShowController<Project>(props);\n const redirect = useRedirect();\n const onReply = () => {\n redirect('edit','./');\n };\n\n const SenderField: FC<FieldProps<Project>> = ({ record }) =>\n record ? (\n <Typography>\n <div className={classes.bold}><Avatar src={`${record.assets.icon}?size=32x32`} />{record.projectname} ({record.canister})</div>\n </Typography>\n ) : null;\n\n if (!record) return null;\n return (\n <Card className={classes.root}>\n <CardContent>\n <Grid container spacing={2}>\n <Grid item xs={10}>\n <Typography variant=\"h6\" gutterBottom>\n {record.projecttitle}\n </Typography>\n </Grid>\n </Grid>\n <div className={classes.spacer}> </div>\n <Grid container spacing={2}>\n <Grid item xs={6}>\n <SenderField record={record}/>\n </Grid>\n <Grid item xs={3}>\n <Typography gutterBottom align=\"left\">\n Start:{record.startdate}\n </Typography>\n <Typography gutterBottom align=\"left\">\n End:{record.enddate}\n </Typography>\n </Grid>\n <Grid item xs={2}>\n <Typography gutterBottom align=\"right\">\n <IconButton onClick={onReply}>\n <SubIcon />\n </IconButton>\n </Typography>\n </Grid>\n </Grid>\n <Grid container spacing={2}>\n <Grid item xs={3}>\n <Typography gutterBottom align=\"left\">\n Start:{record.startdate}\n </Typography>\n <Typography gutterBottom align=\"left\">\n End:{record.enddate}\n </Typography>\n </Grid>\n </Grid>\n <div className={classes.spacer}> </div>\n <div className={classes.spacer}> </div>\n\n <Grid container spacing={2} className={classes.content}>\n <div dangerouslySetInnerHTML={{ __html: record.content }}/>\n </Grid>\n <div className={classes.spacer}> </div>\n <Typography gutterBottom>\n Attachments\n </Typography>\n <Box>\n \n </Box>\n <Spacer />\n </CardContent>\n </Card>\n );\n};\n\nexport default ProjectShow;\n","import ProjectIcon from '@material-ui/icons/Error';\n\nimport ProjectList from './projectList';\nimport ProjectShow from './projectShow';\n\n\n\nexport default {\n list: ProjectList,\n icon: ProjectIcon,\n show: ProjectShow,\n};","// in src/comments.js\nimport * as React from 'react';\nimport { FC } from 'react';\nimport { Card, CardHeader, CardContent } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n DateField,\n EditButton,\n NumberField,\n TextField,\n BooleanField,\n useTranslate,\n RecordMap,\n Identifier,\n Record,\n} from 'react-admin';\n\nimport CustomerReferenceField from '../visitors/CustomerReferenceField';\n\nconst useListStyles = makeStyles(theme => ({\n card: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n margin: '0.5rem 0',\n },\n cardTitleContent: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n cardContent: theme.typography.body1,\n cardContentRow: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n margin: '0.5rem 0',\n },\n}));\n\ninterface MobileGridProps {\n ids?: Identifier[];\n data?: RecordMap<Record>;\n basePath?: string;\n}\n\nconst MobileGrid: FC<MobileGridProps> = ({ ids, data, basePath }) => {\n const translate = useTranslate();\n const classes = useListStyles();\n\n if (!ids || !data || !basePath) {\n return null;\n }\n\n return (\n <div style={{ margin: '1em' }}>\n {ids.map(id => (\n <Card key={id} className={classes.card}>\n <CardHeader\n title={\n <div className={classes.cardTitleContent}>\n <span>\n {translate('resources.commands.name', 1)}\n : \n <TextField\n record={data[id]}\n source=\"reference\"\n />\n </span>\n <EditButton\n resource=\"commands\"\n basePath={basePath}\n record={data[id]}\n />\n </div>\n }\n />\n <CardContent className={classes.cardContent}>\n <span className={classes.cardContentRow}>\n {translate('resources.customers.name', 1)}: \n <CustomerReferenceField\n record={data[id]}\n basePath={basePath}\n />\n </span>\n <span className={classes.cardContentRow}>\n {translate('resources.reviews.fields.date')}: \n <DateField\n record={data[id]}\n source=\"date\"\n showTime\n />\n </span>\n <span className={classes.cardContentRow}>\n {translate(\n 'resources.commands.fields.basket.total'\n )}\n : \n <NumberField\n record={data[id]}\n source=\"total\"\n options={{ style: 'currency', currency: 'USD' }}\n />\n </span>\n <span className={classes.cardContentRow}>\n {translate('resources.commands.fields.status')}\n : \n <TextField source=\"status\" record={data[id]} />\n </span>\n <span className={classes.cardContentRow}>\n {translate('resources.commands.fields.returned')}\n : \n <BooleanField record={data[id]} source=\"returned\" />\n </span>\n </CardContent>\n </Card>\n ))}\n </div>\n );\n};\n\nMobileGrid.defaultProps = {\n data: {},\n ids: [],\n};\n\nexport default MobileGrid;\n","import React, { FC, Fragment, useCallback, useEffect, useState, cloneElement, useMemo } from 'react';\nimport {\n AutocompleteInput,\n BooleanField,\n Datagrid,\n DatagridProps,\n DateField,\n DateInput,\n Filter,\n FilterProps,\n Identifier,\n List,\n ListContextProvider,\n ListProps,\n NullableBooleanInput,\n NumberField,\n ReferenceInput,\n ReferenceField,\n SearchInput,\n TextField,\n TextInput,\n useGetList,\n useRefresh,\n useListContext,\n useRecordContext,\n ImageField,\n FieldProps,\n TopToolbar,\n CreateButton,\n ExportButton,\n Button,\n Pagination,\n sanitizeListRestProps,\n useRedirect\n} from 'react-admin';\nimport { useMediaQuery, Divider, Tabs, Tab, Theme, Typography, Avatar, Icon } from '@material-ui/core';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport MobileGrid from './MobileGrid';\nimport { Asset } from '../types'\nimport IconTrendingUp from '@material-ui/icons/TrendingUp';\nimport Empty from '../components/empty'\nimport PostPagination from '../components/pagination'\nimport DropDown from '../components/dropDown'\nimport { useStyles } from '../components/BulkActionButtons'\n\nconst AssetFilter: FC<Omit<FilterProps, 'children'>> = props => (\n <Filter {...props}>\n <SearchInput source=\"q\" alwaysOn />\n\n </Filter>\n);\n\nconst useDatagridStyles = makeStyles(\n theme => ({\n root: {\n '& .MuiTableCell-root': {\n height: 65,\n },\n },\n customer: {\n display: 'flex',\n flexWrap: 'nowrap',\n alignItems: 'center',\n textAlign: 'center',\n },\n total: { fontWeight: 'bold' },\n asset_avatar: {\n width: 55,\n height: 55,\n borderRadius: 18,\n },\n total_amm: { fontWeight: 'bold', marginRight: 5 },\n }));\n\nconst tabs = [\n { id: 'asset', name: 'Asset' },\n];\n\ninterface TabbedDatagridProps extends DatagridProps { }\n\nconst useGetTotals = (filterValues: any) => {\n const { total: totalAsset } = useGetList(\n 'assets',\n { perPage: 1, page: 1 },\n { field: 'id', order: 'ASC' },\n { ...filterValues, status: 'ongoing' }\n );\n\n return {\n asset: totalAsset\n };\n};\n\n\n\nconst TabbedDatagrid: FC<TabbedDatagridProps> = props => {\n const listContext = useListContext();\n const { ids, filterValues, setFilters, displayedFilters } = listContext;\n const classes = useDatagridStyles();\n const isXSmall = useMediaQuery<Theme>(theme =>\n theme.breakpoints.down('xs')\n );\n const [asset, setAsset] = useState<Identifier[]>([] as Identifier[]);\n\n const totals = useGetTotals(filterValues) as any;\n\n const CustomerAvatarField: FC<FieldProps<Asset>> = ({ record }) =>\n record ? (<div className={classes.customer}>\n <Typography >\n <Avatar className={classes.asset_avatar} src={`${record.assets.icon}`} />\n </Typography>\n </div>\n ) : null;\n\n\n useEffect(() => {\n if (ids && ids !== filterValues.status) {\n switch (filterValues.status) {\n case 'ongoing':\n setAsset(ids);\n break;\n }\n }\n }, [ids, filterValues.status]);\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<{}>, value: any) => {\n setFilters &&\n setFilters(\n { ...filterValues, status: value },\n displayedFilters\n );\n },\n [displayedFilters, filterValues, setFilters]\n );\n\n\n const CustomerTotalField: FC<FieldProps<Asset>> = props => (\n props.record ? (\n <div className={classes.customer}>\n <TextField source=\"total\" />\n <div className={classes.total}>  {props.record.assets.coinname}</div>\n </div>\n ) : null\n );\n\n const CustomerPriceField: FC<FieldProps<Asset>> = props => (\n props.record ? (\n <div className={classes.customer}>\n <div className={classes.total}>$</div><TextField source=\"price\" />  <IconTrendingUp />\n </div>\n ) : null\n );\n\n const CustomerAssetField: FC<FieldProps<Asset>> = props => (\n props.record ? (\n <div>\n <div className={classes.customer}>\n <TextField source=\"name\" className={classes.total} />\n </div>\n <div className={classes.customer}>\n <TextField source=\"canister\" />\n </div>\n </div>\n ) : null\n );\n\n const selectedIds = asset;\n\n return (\n <Fragment>\n {/* <Divider /> */}\n {isXSmall ? (\n <ListContextProvider\n value={{ ...listContext, ids: selectedIds }}\n >\n <MobileGrid {...props} ids={selectedIds} />\n </ListContextProvider>\n ) : (\n <div className={classes.root}>\n {filterValues.status === 'ongoing' && (\n <ListContextProvider\n value={{ ...listContext, ids: asset }}\n >\n <Datagrid {...props} empty={<Empty />} optimized hasBulkActions={false}>\n <CustomerAvatarField source='assets.icon' className={classes.customer} label='' />\n <CustomerAssetField source=\"name\" label='Asset' headerClassName={classes.total} />\n <CustomerPriceField source=\"price\" label='Price (USD)' headerClassName={classes.total} />\n <CustomerTotalField source=\"total\" label='Total Amount' headerClassName={classes.total} />\n </Datagrid>\n </ListContextProvider>\n )}\n </div>\n )}\n </Fragment>\n );\n};\n\nconst useActionsStyles = makeStyles(\n theme => ({\n root: {\n display: 'flex',\n alignItems: 'center',\n\n },\n }));\n\nconst dropOptions = [\n {\n label: 'NFTs',\n value: '1'\n },\n {\n label: 'Tokens',\n value: '2'\n },\n]\n\nconst BulkActionButtons = (props) => {\n const classes = useStyles();\n const actionClasses = useActionsStyles();\n\n const redirect = useRedirect();\n const onMoveAsset = () => {\n redirect('create', './assets');\n };\n\n return (\n <div className={actionClasses.root}>\n <DropDown options={dropOptions} />\n <div className={classes.btn}>\n <span onClick={onMoveAsset}>MOVE ASSET</span>\n </div>\n </div>\n )\n};\n\nconst useListStyles = makeStyles(\n theme => ({\n root: {\n '& h6': {\n display: 'none',\n },\n },\n }));\n\nconst AssetList: FC<ListProps> = props => {\n const classes = useListStyles();\n\n return (\n <List\n {...props}\n className={classes.root}\n filterDefaultValues={{ status: 'ongoing' }}\n sort={{ field: 'total', order: 'DESC' }}\n perPage={25}\n exporter={false}\n // filters={<AssetFilter />}\n // actions={<ListActions />}\n actions={false}\n pagination={<PostPagination />}\n bulkActionButtons={<BulkActionButtons />}\n >\n <TabbedDatagrid />\n </List>\n )\n};\n\nexport default AssetList;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport {\n BooleanInput,\n DateField,\n Show,\n ShowProps,\n FormWithRedirect,\n Labeled,\n ReferenceField,\n SelectInput,\n TextField,\n Toolbar,\n EditContextProvider,\n useTranslate,\n TextInput,\n SimpleForm,\n EditProps,\n SimpleShowLayout,\n RichTextField,\n FieldProps,\n useShowController,\n SaveButton,\n DeleteButton,\n Button,\n useRedirect,\n} from 'react-admin';\nimport { Link as RouterLink } from 'react-router-dom';\nimport {\n Card,\n CardContent,\n Box,\n Grid,\n Typography,\n Link,\n Avatar,\n IconButton,\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport { Asset, Customer } from '../types';\nimport Totals from './Totals';\nimport CustomerReferenceField from '../visitors/CustomerReferenceField';\nimport RichTextInput from 'ra-input-rich-text';\nimport SubIcon from '@material-ui/icons/TurnedInNotRounded';\n\ninterface AssetTitleProps {\n record?: Asset;\n}\n\nconst Assettitle: FC<AssetTitleProps> = ({ record }) => {\n const translate = useTranslate();\n return record ? (\n <span>\n {translate('resources.commands.title', {\n reference: record.reference,\n })}\n </span>\n ) : null;\n};\n\n\nconst CustomerField: FC<FieldProps<Customer>> = ({ record }) =>\n record ? (\n <Typography>\n <Avatar src={`${record.avatar}?size=32x32`} />{record.first_name} {record.last_name}({record.email})\n </Typography>\n ) : null;\n\n\nconst useStyles = makeStyles(theme => ({\n root: {\n },\n title: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n margin: '1em',\n },\n form: {\n [theme.breakpoints.up('xs')]: {\n width: 400,\n },\n [theme.breakpoints.down('xs')]: {\n width: '100vw',\n marginTop: -30,\n },\n },\n content:{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n contentdiv:{\n width: '200px',\n },\n inlineField: {\n display: 'inline-block',\n width: '50%',\n },\n spacer: { height: 20 },\n invoices: { margin: '10px 0' },\n toolbar: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n bold: { fontWeight: 'bold' },\n}));\n\n\nconst CustomToolbar = props => (\n <Toolbar {...props} classes={useStyles()}>\n <SaveButton />\n <DeleteButton undoable={false} />\n </Toolbar>\n);\n\n\nconst Spacer = () => <Box m={1}> </Box>;\n\n\n\n\nconst AssetShow: FC<ShowProps> = props => {\n const classes = useStyles();\n const { record } = useShowController<Asset>(props);\n const redirect = useRedirect();\n const onReply = () => {\n redirect('edit','./');\n };\n\n const SenderField: FC<FieldProps<Asset>> = ({ record }) =>\n record ? (\n <Typography>\n <div className={classes.bold}><Avatar src={`${record.assets.icon}?size=32x32`} />{record.name} ({record.canister})</div>\n </Typography>\n ) : null;\n\n if (!record) return null;\n return (\n <Card className={classes.root}>\n <CardContent>\n <Grid container spacing={2}>\n <Grid item xs={10}>\n <Typography variant=\"h6\" gutterBottom>\n {record.projecttitle}\n </Typography>\n </Grid>\n </Grid>\n <div className={classes.spacer}> </div>\n <Grid container spacing={2}>\n <Grid item xs={6}>\n <SenderField record={record}/>\n </Grid>\n <Grid item xs={3}>\n <Typography gutterBottom align=\"left\">\n Start:{record.startdate}\n </Typography>\n <Typography gutterBottom align=\"left\">\n End:{record.enddate}\n </Typography>\n </Grid>\n <Grid item xs={2}>\n <Typography gutterBottom align=\"right\">\n <IconButton onClick={onReply}>\n <SubIcon />\n </IconButton>\n </Typography>\n </Grid>\n </Grid>\n <Grid container spacing={2}>\n <Grid item xs={3}>\n <Typography gutterBottom align=\"left\">\n Start:{record.startdate}\n </Typography>\n <Typography gutterBottom align=\"left\">\n End:{record.enddate}\n </Typography>\n </Grid>\n </Grid>\n <div className={classes.spacer}> </div>\n <div className={classes.spacer}> </div>\n\n <Grid container spacing={2} className={classes.content}>\n <div dangerouslySetInnerHTML={{ __html: record.content }}/>\n </Grid>\n <div className={classes.spacer}> </div>\n <Typography gutterBottom>\n Attachments\n </Typography>\n <Box>\n \n </Box>\n <Spacer />\n </CardContent>\n </Card>\n );\n};\n\nexport default AssetShow;\n","import * as React from 'react';\nimport { FC } from 'react';\nimport {\n Create,\n FormTab,\n NumberInput,\n ReferenceInput,\n SelectInput,\n TabbedForm,\n TextInput,\n required,\n CreateProps,\n SimpleForm\n} from 'react-admin';\nimport { InputAdornment, Typography } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport RichTextInput from 'ra-input-rich-text';\n\nexport const styles = {\n root: {\n '& .w315 .MuiOutlinedInput-root': {\n width: '315px!important',\n flex: 'initial',\n },\n\n '& form': {\n paddingTop: 15,\n margin: '10px 15px',\n },\n\n '& .ra-rich-text-input': {\n marginTop: 40,\n paddingLeft: 0,\n },\n\n '&>div': {\n marginTop: 0,\n },\n '& .MuiCardContent-root': {\n padding: 0,\n },\n '& .ra-input-Assets, & .ra-input-price': {\n display: 'inline-block',\n\n '& .MuiOutlinedInput-root': {\n width: '100%',\n },\n\n '& .MuiFormHelperText-contained': {\n left: 0,\n },\n },\n '& .MuiToolbar-regular': {\n background: 'none',\n padding: 0,\n margin: 0,\n minHeight: 'auto',\n\n '&>div': {\n display: 'inline-block',\n },\n '& button': {\n height: '38px',\n lineHeight: '38px',\n padding: '0 15px',\n borderRadius: '10px',\n fontSize: '16px',\n color: '#fff',\n transition: 'transform 0.3s ease',\n\n '&:not(.Mui-disabled)': {\n backgroundColor: '#FA6755',\n\n '&:hover': {\n transform: 'scale(1.1)',\n backgroundColor: '#FA6755',\n },\n }\n },\n '& svg': {\n display: 'none',\n },\n '& span': {\n padding: 0,\n },\n },\n },\n subtitle: {\n fontSize: '18px',\n color: '#666',\n fontWeight: 600,\n },\n nolabel: {\n '&.custom-input': {\n width: '210px',\n marginRight: '48px',\n display: 'inline-block',\n // overflow: 'hidden',\n },\n\n '& .MuiSelect-nativeInput[value=\"\"]': {\n padding: '0 14px',\n top: 0,\n opacity: 1,\n fontSize: '16px',\n border: 'none',\n background: 'transparent',\n\n '&::placeholder, &::-webkit-input-placeholder': {\n color: 'rgba(0, 0, 0, 0.87)',\n // for select\n opacity: '0.42!important',\n },\n },\n\n // for input\n '& label[data-shrink=false] + .MuiInputBase-formControl input::placeholder, & label[data-shrink=false] + .MuiInputBase-formControl input::-webkit-input-placeholder': {\n opacity: '0.42!important',\n },\n\n '&.pl-100': {\n paddingLeft: '100px',\n },\n\n '& .MuiInputLabel-outlined': {\n display: 'none',\n }\n },\n inlineField: {\n display: 'inline-block',\n width: '50%',\n },\n};\n\nconst richTextOptions = {\n modules: {\n // https://quilljs.com/docs/modules/toolbar/\n toolbar: [\n [{ 'header': [1, 2, 3, false] }],\n ['link', 'bold', 'italic', 'underline'], // toggled buttons\n [{ 'align': [] }],\n ],\n history: { // History module\n delay: 2000,\n maxStack: 500,\n userOnly: true\n }\n },\n theme: \"snow\"\n}\n\nconst useStyles = makeStyles(styles);\n\nconst AssetCreate: FC<CreateProps> = props => {\n const classes = useStyles();\n return (\n <Create {...props} title=\"Move Asset\" className={classes.root}>\n <SimpleForm variant=\"outlined\">\n <SelectInput className=\"custom-input w315\" source=\"Assets\" choices={[\n { id: 'cidco', name: 'Didco' },\n { id: 'aic', name: 'Aic' },\n { id: 'doge', name: 'Doge' },\n ]} />\n\n <TextInput className=\"custom-input w315\" source=\"reference\" validate={required()} label='Account' />\n <NumberInput\n className=\"custom-input w315\"\n source=\"price\"\n validate={required()}\n label=\"Amount\"\n />\n <RichTextInput multiline source=\"description\" label=\"\" options={richTextOptions} />\n\n </SimpleForm>\n </Create>\n );\n};\n\nexport default AssetCreate;\n","import AssetIcon from '@material-ui/icons/Error';\n\nimport AssetList from './assetList';\nimport AssetShow from './assetShow';\nimport AssetCreate from './assetCreate';\n\n\n\nexport default {\n list: AssetList,\n icon: AssetIcon,\n show: AssetShow,\n create: AssetCreate,\n};","import React, { FC, Fragment, useCallback, useEffect, useState, cloneElement, useRef } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { AppState } from '../types';\n// import {\n// CreateContextProvider,\n// useRecordContext,\n// ResourceContextProvider,\n// useCheckMinimumRequiredProps,\n// useCreateController,\n// } from 'ra-core';\nimport {\n Toolbar,\n useNotify,\n CreateProps,\n SaveButton,\n SimpleForm,\n useDataProvider,\n ImageField,\n useSaveContext,\n useFormContext,\n} from 'react-admin';\nimport clsx from 'clsx';\nimport { useDropzone } from 'react-dropzone';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport ava from '../assets/red/ava.png';\nimport photo from '../assets/red/photo.png';\nimport image from '../assets/red/image.png';\nimport ok from '../assets/red/ok.png';\nimport error from '../assets/red/error.png';\n\nimport { Storage, Username, Email_Name, Identity_Key } from '../utils/storage'\nimport { fetch, emailHost } from '../utils'\n\nconst useStyles = makeStyles(\n theme => ({\n root: {\n\n },\n chunk: {\n marginTop: '10px',\n marginBottom: '80px',\n display: 'flex',\n width: '100%',\n },\n label: {\n width: '240px',\n paddingRight: '20px',\n fontSize: '16px',\n fontWeight: 'bold',\n color: '#083353',\n textAlign: 'right',\n },\n form: {\n flex: 1,\n\n '&.error .errorTip': {\n display: 'flex',\n },\n\n '&.error .drop': {\n borderColor: '#FA6755',\n },\n\n '&.error .email': {\n borderColor: '#FA6755',\n },\n\n '&.error .valid': {\n color: '#FA6755',\n\n '& i': {\n backgroundImage: `url(${error})`,\n },\n },\n\n '& .drop': {\n width: '400px',\n height: '120px',\n padding: '26px 30px',\n marginTop: '20px',\n border: '2px dashed #BFBFBF',\n backgroundColor: '#F2F2F2',\n borderRadius: '10px',\n textAlign: 'center',\n boxSizing: 'border-box',\n color: '#56677B',\n cursor: 'pointer',\n\n '& input': {\n display: 'block!important',\n width: '30px',\n height: '28px',\n background: `url(${image}) no-repeat`,\n backgroundSize: '100%',\n lineHeight: '300px',\n overflow: 'hidden',\n margin: '0 auto 16px',\n cursor: 'pointer',\n },\n },\n\n '& .email': {\n position: 'relative',\n width: '400px',\n height: '32px',\n boxSizing: 'border-box',\n display: 'flex',\n alignItems: 'center',\n border: '1px solid #ccc',\n lineHeight: '30px',\n\n '& input': {\n flex: 1,\n border: 'none',\n lineHeight: '30px',\n padding: '0 12px',\n outline: 'none',\n fontSize: '14px',\n },\n\n '& > span': {\n width: '150px',\n background: '#EBEBEB',\n textAlign: 'center',\n },\n\n '& .valid': {\n position: 'absolute',\n left: '100%',\n top: '4px',\n marginLeft: '15px',\n width: '300px',\n display: 'flex',\n alignItems: 'start',\n color: '#333',\n lineHeight: '20px',\n fontSize: '14px',\n\n '& i': {\n width: '16px',\n height: '16px',\n background: `url(${ok}) no-repeat`,\n backgroundSize: '100%',\n marginRight: '10px',\n display: 'block',\n position: 'relative',\n top: '3px',\n },\n '& span': {\n flex: 1,\n }\n }\n },\n },\n avaChunk: {\n display: 'flex',\n alignItems: 'baseline',\n height: '65px',\n\n '& .errorTip': {\n marginLeft: '25px',\n whiteSpace: 'nowrap',\n display: 'none',\n position: 'relative',\n top: '-5px',\n\n '& span': {\n flex: 1,\n color: '#FA6755',\n fontSize: '14px',\n },\n\n '&::before': {\n content: '\"\"',\n width: '16px',\n height: '16px',\n background: `url(${error}) no-repeat`,\n backgroundSize: '100%',\n marginRight: '8px',\n },\n },\n },\n ava: {\n position: 'relative',\n width: '65px',\n height: '100%',\n cursor: 'pointer',\n\n '& img': {\n width: '100%',\n height: '100%',\n display: 'block',\n borderRadius: '15px',\n },\n\n '&::before, &::after': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n display: 'none',\n },\n '&:hover::before, &:hover::after': {\n display: 'block',\n },\n '&::before': {\n borderRadius: '0 0 15px 15px',\n height: '20px',\n backgroundColor: 'rgba(0, 0, 0, .55)',\n },\n '&::after': {\n width: '15px',\n height: '15px',\n background: `url(${photo}) no-repeat`,\n backgroundSize: '100%',\n left: '50%',\n transform: 'translateX(-50%)',\n bottom: '1px',\n },\n },\n\n submit: {\n '& a': {\n display: 'inline-block',\n color: '#fff',\n height: '38px',\n padding: '0 15px',\n fontSize: '16px',\n transition: 'transform 0.3s ease',\n lineHeight: '38px',\n borderRadius: '10px',\n textTransform: 'none',\n backgroundColor: '#FA6755',\n cursor: 'pointer',\n\n '&:hover': {\n transform: 'scale(1.05)'\n }\n },\n\n '& .disabled': {\n backgroundColor: '#ddd',\n cursor: 'default',\n\n '&:hover': {\n transform: 'none',\n }\n }\n }\n }));\n\n// const EmailToolbar = props => (\n// <Toolbar {...props}>\n// <SaveButton\n// label=\"post.action.save_and_notify\"\n// transform={data => {\n// console.log('transfrom data', data)\n// return { ...data }\n// }}\n// submitOnEnter={false}\n// />\n// </Toolbar>\n// );\n\n// control the ava is necessarily or not\nconst avaMustHave = false;\n\ninterface Props { }\n// TODO: progress bar\nconst Email: FC<CreateProps> = props => {\n const classes = useStyles();\n const notify = useNotify();\n const requestEmail = useSelector((state: AppState) => state.email);\n const identity = Storage.get(Identity_Key);\n\n // const data = useDataProvider();\n // console.log('useDataProvider', data.aaa());\n\n const uploadRef = useRef<HTMLDivElement | null>(null);\n // const context = useSaveContext({});\n // const record = useRecordContext();\n // const formContext = useFormContext();\n // useEffect(() => {\n // console.log('record', record)\n // }, [record])\n\n // const controllerProps = useCreateController({\n // basePath: '',\n // resource: 'settings',\n // ...props,\n // });\n\n const [files, setFiles] = useState<any[]>([]);\n // https://react-dropzone.js.org/#section-previews\n const { getRootProps, getInputProps } = useDropzone({\n accept: 'image/*',\n onDrop: acceptedFiles => {\n setFiles((acceptedFiles as any).map((file: any) => Object.assign(file, {\n preview: URL.createObjectURL(file)\n })));\n }\n });\n const onAvaClick = () => {\n uploadRef?.current?.click();\n }\n\n const [email, setEmail] = useState<string>(\"\");\n const onEmailChange = (e) => {\n setEmail(e.target.value);\n if (!e.target.value.length) {\n setEmailError(true);\n }\n }\n\n const [avaError, setAvaError] = useState(false);\n const [emailError, setEmailError] = useState(false);\n\n const onSubmit = async () => {\n let hasError = false;\n if (avaMustHave && !files.length) {\n setAvaError(true);\n hasError = true;\n }\n if (!email.length) {\n setEmailError(true);\n hasError = true;\n }\n if (hasError) {\n return;\n }\n\n try {\n const { data: { success, msg, code } } = await fetch('settings', 'create', {\n emailname: `${email}${emailHost}`,\n identity,\n })\n\n if (success) {\n Storage.set(Username, email);\n Storage.set(Email_Name, `${email}${emailHost}`);\n notify(`resources.reviews.notification.submit_success`, 'success', {\n // not effective \n message: msg\n });\n setTimeout(() => {\n window.location.reload()\n }, 300);\n } else {\n notify(`resources.reviews.notification.submit_failed`, 'error', {\n message: msg\n });\n }\n } catch (error) {\n notify(`resources.reviews.notification.submit_failed`, 'error');\n console.log('error', error);\n }\n }\n\n useEffect(() => {\n if (avaMustHave && files.length) {\n setAvaError(false);\n }\n }, [files])\n\n useEffect(() => {\n if (email.length) {\n setEmailError(false);\n }\n }, [email])\n\n useEffect(() => {\n if (requestEmail) {\n setEmail(requestEmail.replace('@ic.dmail.ai', ''));\n }\n }, [requestEmail])\n\n return (\n <div className={classes.root}>\n {/* <CreateContextProvider value={controllerProps}> */}\n <SimpleForm variant=\"outlined\" toolbar={<></>}>\n <div className={classes.chunk} style={{ marginBottom: 20 }}>\n <div className={classes.label}>Identity :</div>\n <div>{identity || '--'}</div>\n </div>\n <div className={classes.chunk}>\n <div className={classes.label}>Modify Avatar :</div>\n <div className={clsx(classes.form, avaError ? 'error' : '')}>\n <div className={classes.avaChunk}>\n <div className={classes.ava} onClick={onAvaClick}>\n <img src={files.length ? files[0]['preview'] : ava} />\n </div>\n <div className=\"errorTip\"><span>Please upload a photo as avatar!</span></div>\n </div>\n {/* <ImageInput source=\"pictures\" label=\"Related pictures\" accept=\"image/*\" ref={uploadRef}>\n <ImageField source=\"src\" title=\"title\" />\n </ImageInput> */}\n <div {...getRootProps({ className: 'drop' })} ref={(e) => {\n uploadRef.current = e;\n }}>\n <input {...getInputProps()} />\n <p>Click or dray the file here to upload</p>\n </div>\n </div>\n </div>\n <div className={classes.chunk}>\n <div className={classes.label}>Mailbox alias settings:</div>\n <div className={clsx(classes.form, emailError ? 'error' : '')}>\n <div className=\"email\">\n <input value={email} onInput={onEmailChange} placeholder=\"enter here...\" />\n <span>@ic.dmail.ai</span>\n <div className=\"valid\">\n <i></i>\n {emailError ? (\n <span>(Please input the email!)</span>\n ) : (\n <span>(You need to verify the uniqueness of the alias. If it is repeated,you will be prompted.)</span>\n )}\n </div>\n </div>\n </div>\n </div>\n <div className={classes.chunk} style={{ marginBottom: 0 }}>\n <div className={classes.label}></div>\n <div className={classes.form}>\n <div className={classes.submit}>\n <a className={(avaMustHave && !files.length) || !email.length ? 'disabled' : ''} onClick={onSubmit}>submit</a>\n </div>\n </div>\n </div>\n </SimpleForm>\n {/* </CreateContextProvider> */}\n </div>\n )\n};\n\nexport default Email;","import React, { FC, Fragment, useCallback, useEffect, useState, cloneElement } from 'react';\nimport Empty from '../components/empty'\nimport { makeStyles } from '@material-ui/core/styles';\nimport l1 from '../assets/red/1.png';\nimport l2 from '../assets/red/2.png';\nimport l3 from '../assets/red/3.png';\nimport l4 from '../assets/red/4.png';\nimport l5 from '../assets/red/5.png';\nimport l6 from '../assets/red/6.png';\nimport l7 from '../assets/red/7.png';\nimport l8 from '../assets/red/8.png';\n\nconst useStyles = makeStyles(\n theme => ({\n root: {\n\n },\n empty: {\n minHeight: 'auto',\n paddingTop: '50px',\n\n '& img': {\n width: 120,\n },\n },\n\n container: {\n padding: '30px 30px 40px',\n marginTop: '50px',\n border: '2px dashed #BFBFBF',\n backgroundColor: '#F2F2F2',\n borderRadius: '10px',\n },\n\n title: {\n fontSize: '20px',\n fontWeight: 'bold',\n color: '#083353',\n },\n list: {\n marginTop: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n flexWrap: 'wrap',\n\n '& li': {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n padding: '5px 15px',\n width: '21%',\n marginTop: '30px',\n backgroundColor: '#fff',\n borderRadius: '10px',\n boxSizing: 'border-box',\n boxShadow: '0px 6px 7px 1px rgba(206, 186, 186, 0.39)',\n fontSize: '16px',\n fontWeight: 'normal',\n border: '1px solid transparent',\n cursor: 'pointer',\n\n '&:hover': {\n borderColor: '#FF9B86',\n boxShadow: 'none',\n },\n\n '& img': {\n width: '66px',\n height: '66px',\n }\n }\n\n }\n\n }));\n\ninterface Props {\n\n}\nconst Wallet: FC<Props> = props => {\n const classes = useStyles();\n\n return (\n <div className={classes.root}>\n <Empty propClass={classes.empty} />\n <div className={classes.container}>\n <div className={classes.title}>\n Choose your Blockchain and connect your wallet\n <ul className={classes.list}>\n <li>\n <img src={l1} />\n <span>Dfinity</span>\n </li>\n <li>\n <img src={l2} />\n <span>BSC</span>\n </li>\n <li>\n <img src={l3} />\n <span>Polygon</span>\n </li>\n <li>\n <img src={l4} />\n <span>Cardano</span>\n </li>\n <li>\n <img src={l5} />\n <span>Solana</span>\n </li>\n <li>\n <img src={l6} />\n <span>Ethereum</span>\n </li>\n <li>\n <img src={l7} />\n <span>MetaMask</span>\n </li>\n <li>\n <img src={l8} />\n <span>Binance Chain</span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n )\n};\n\nexport default Wallet;","import React, { FC, Fragment, useCallback, useEffect, useState, cloneElement, useMemo } from 'react';\nimport { Tabs, Tab } from '@material-ui/core';\nimport { useSelector } from 'react-redux';\nimport { AppState } from '../types';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Email from './email'\nimport Wallet from './wallet'\n\nconst useStyles = makeStyles(\n theme => ({\n root: {\n padding: '20px 34px 34px',\n overflow: 'hidden',\n boxShadow: 'none',\n borderRadius: '24px',\n backgroundColor: '#fff',\n },\n tabs: {\n display: 'block',\n marginBottom: '25px',\n },\n tab: {\n marginRight: '50px',\n lineHeight: '17px',\n padding: '12px 0',\n fontSize: '17px',\n fontFamily: 'PingFang SC',\n color: '#56677B',\n fontWeight: 600,\n minWidth: 'auto',\n\n '&.Mui-selected': {\n color: '#153F5D',\n fontWeight: 'bold',\n fontSize: '20px',\n }\n },\n }));\n\nconst tabs = [\n { id: 'email', name: 'EMAIL ACCOUNT' },\n { id: 'wallet', name: 'WALLET ACCOUNT' },\n];\n\ninterface Props { }\n\nconst Show: FC<Props> = props => {\n const classes = useStyles();\n\n const path = useSelector((state: AppState) => {\n const location = state?.router?.location;\n return location.pathname || ''\n });\n const aPath = path.split('/');\n const [currentTab, setCurrentTab] = useState<string>(aPath.length > 3 ? aPath[3] : 'email');\n const onChangeTab = (event: React.ChangeEvent<{}>, value: any) => {\n setCurrentTab(value);\n }\n\n useEffect(() => {\n // console.log('currentTab', currentTab);\n window.history.replaceState(null, '', `/#/settings/show/${currentTab}`);\n }, [currentTab])\n\n return (\n <div className={classes.root}>\n <Tabs\n variant=\"scrollable\"\n value={currentTab}\n indicatorColor=\"primary\"\n onChange={onChangeTab}\n className={classes.tabs}\n >\n {tabs.map(choice => (\n <Tab\n key={choice.id}\n label={choice.name}\n value={choice.id}\n className={classes.tab}\n />\n ))}\n </Tabs>\n <div>\n {currentTab === 'wallet' ? <Wallet /> : <Email />}\n </div>\n </div>\n );\n};\n\nexport default Show;\n","import SettingsShow from './settingsShow';\n\nexport default {\n list: SettingsShow,\n};","export const tags = [\n { label: 'ALL', value: 1 },\n { label: 'Dmail accounts', value: 2 },\n { label: 'Pictures', value: 3 },\n { label: 'Voices', value: 4 },\n { label: 'Art', value: 5 },\n { label: 'Music', value: 6 },\n { label: 'Sports', value: 7 },\n { label: 'Collectibles', value: 8 },\n]\n\nexport const priceTypes = [\n { label: 'USDT', value: 1 },\n { label: 'USDC', value: 2 },\n { label: 'BTC', value: 3 },\n { label: 'ETH', value: 4 },\n { label: 'ICP', value: 5 },\n]","import React, { FC, Fragment, useCallback, useEffect, useState, cloneElement, useMemo } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\n// import {\n// useNotify,\n// useRedirect,\n// } from 'react-admin';\n\nconst useStyles = makeStyles(\n theme => ({\n modal: {\n position: 'fixed',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n zIndex: 1000,\n display: 'none',\n\n '& .modal-mask': {\n height: '100%',\n backgroundColor: 'rgba(40, 15, 15, .3)',\n },\n '& .modal-wrap': {\n position: 'absolute',\n left: '50%',\n top: '40%',\n transform: 'translateX(-50%) translateY(-50%)',\n minWidth: '400px',\n boxShadow: '0px 7px 15px 3px rgba(40, 15, 15, 0.15)',\n borderRadius: '10px',\n backgroundColor: '#fff',\n padding: '40px',\n },\n '& .modal-title': {\n fontSize: '26px',\n fontWeight: 600,\n color: '#153F5D',\n marginBottom: '40px',\n textAlign: 'center',\n },\n '& .modal-body': {\n height: '100%',\n },\n '& .modal-form': {\n minWidth: '620px',\n },\n '& .modal-form-item': {\n display: 'flex',\n alignItems: 'center',\n marginBottom: '20px',\n\n '& label': {\n minWidth: '200px',\n textAlign: 'right',\n fontWeight: 'bold',\n fontSize: '18px',\n color: '#666666',\n marginRight: '20px',\n },\n },\n '& .modal-form-input': {\n position: 'relative',\n\n '& input': {\n width: '270px',\n lineHeight: '40px',\n padding: '0 15px',\n border: 'none',\n background: '#F7F6F4',\n borderRadius: '8px',\n fontSize: '16px',\n }\n },\n '& .modal-footer': {\n marginTop: '48px',\n },\n '& .modal-btn': {\n textAlign: 'center',\n\n '& a': {\n display: 'inline-block',\n color: '#fff',\n height: '42px',\n lineHeight: '42px',\n marginRight: '100px',\n padding: '0 30px',\n fontSize: '18px',\n transition: 'transform 0.3s ease',\n borderRadius: '8px',\n textTransform: 'none',\n backgroundColor: '#FA6755',\n cursor: 'pointer',\n boxSizing: 'border-box',\n fontWeight: 'bold',\n\n '&:last-child': {\n marginRight: '0',\n backgroundColor: '#bbb',\n\n '&:hover': {\n backgroundColor: '#FA6755',\n }\n },\n\n '&:hover': {\n transform: 'scale(1.05)'\n }\n }\n },\n }\n }));\n\n\ninterface Props {\n visible: boolean;\n setVisible: (value: boolean) => void;\n}\nconst Modal: FC<Props> = ({ visible, setVisible }) => {\n const classes = useStyles();\n\n const onOk = () => {\n // do something;\n setVisible(false);\n }\n const onCancel = () => setVisible(false);\n\n return (\n <div className={classes.modal} style={{ display: visible ? 'block' : 'none' }}>\n <div className=\"modal-mask\"></div>\n <div className=\"modal-wrap\">\n <div className=\"modal-title\">Sell Information</div>\n <div className=\"modal-body\">\n <div className=\"modal-form\">\n <div className=\"modal-form-item\">\n <label>NFT Name:</label>\n <div className=\"modal-form-input\"><input /></div>\n </div>\n <div className=\"modal-form-item\">\n <label>Sell Price:</label>\n <div className=\"modal-form-input\"><input /></div>\n </div>\n <div className=\"modal-form-item\">\n <label>NFT Introduce:</label>\n <div className=\"modal-form-input\"><input /></div>\n </div>\n <div className=\"modal-form-item\">\n <label>Owner:</label>\n <div className=\"modal-form-input\"><input /></div>\n </div>\n </div>\n </div>\n <div className=\"modal-footer\">\n <div className=\"modal-btn\">\n <a onClick={onOk}>Submit</a>\n <a onClick={onCancel}>Cancel</a>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default Modal;","import React, { FC, Fragment, useCallback, useEffect, useState, cloneElement, useMemo } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n useNotify,\n useGetList,\n useRedirect,\n useListContext,\n} from 'react-admin';\nimport { tags, priceTypes } from './utils';\nimport test from '../assets/test/test1.jpeg';\nimport email from '../assets/red/nft-email.png';\nimport date from '../assets/red/nft-date.png';\nimport dapper from '../assets/red/nft-dapper.png';\nimport type from '../assets/red/6.png';\nimport dmail from '../assets/red/d.png';\nimport dbg from '../assets/red/dbg.jpg';\nimport down from '../assets/red/down3.png';\n// import transparent from '../assets/red/transparent.png';\n\nimport Modal from './modal'\n\nconst useStyles = makeStyles(\n theme => ({\n root: {\n\n },\n desc: {\n fontSize: '16px',\n color: '#999',\n lineHeight: '24px',\n },\n tags: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n flexWrap: 'wrap',\n fontSize: '16px',\n marginTop: '30px',\n\n '&>div': {\n display: 'flex',\n alignItems: 'center',\n },\n\n '& select, & input': {\n height: '28px',\n lineHeight: '28px',\n border: '1px solid #ccc',\n boxSizing: 'border-box',\n padding: '0 12px',\n fontSize: '14px',\n },\n\n '& select': {\n width: '165px',\n marginRight: '72px',\n },\n\n '& input': {\n width: '100px',\n },\n\n '& .search': {\n marginLeft: '20px',\n\n '& a': {\n display: 'inline-block',\n color: '#fff',\n height: '28px',\n lineHeight: '28px',\n padding: '0 15px',\n fontSize: '14px',\n transition: 'transform 0.3s ease',\n borderRadius: '5px',\n textTransform: 'none',\n backgroundColor: '#FA6755',\n cursor: 'pointer',\n\n '&:hover': {\n transform: 'scale(1.05)'\n }\n }\n },\n\n '& p': {\n margin: '0 20px',\n fontSize: '12px',\n color: 'rgba(8, 51, 83, 0.5)',\n display: 'inline-block',\n },\n\n '& strong': {\n width: '82px',\n display: 'inline-block',\n textAlign: 'right',\n marginRight: '35px',\n color: 'rgba(8, 51, 83, 1)',\n },\n\n '& span': {\n marginRight: '50px',\n color: 'rgba(8, 51, 83, 0.5)',\n cursor: 'pointer',\n verticalAlign: 'middle',\n },\n '& .more': {\n display: 'inline-block',\n width: '20px',\n height: '11px',\n background: `url(${down}) no-repeat`,\n backgroundSize: '100%',\n transition: 'transform 0.3s ease-in-out 0s',\n transformOrigin: 'center center',\n cursor: 'pointer',\n },\n '& .more.up': {\n transform: 'rotate(180deg)',\n },\n\n '& .on': {\n color: 'rgba(8, 51, 83, 1)',\n },\n '& a': {\n color: '#FF5745',\n cursor: 'pointer',\n },\n },\n list: {\n marginTop: '30px',\n\n '& ul': {\n display: 'flex',\n flexWrap: 'wrap',\n },\n\n '& li': {\n flex: 1,\n // let 4 li one line\n minWidth: '21%',\n maxWidth: '25%',\n marginRight: '30px',\n marginBottom: '40px',\n boxShadow: '0px 7px 7px 0px rgba(217, 216, 215, 0.58)',\n borderRadius: '10px',\n cursor: 'pointer',\n\n '&:nth-child(4n)': {\n marginRight: 0,\n }\n },\n\n '& .dmail': {\n borderRadius: '10px 10px 0 0',\n backgroundColor: '#FFC5BE',\n position: 'relative',\n\n '&::after': {\n content: '\"\"',\n width: '88px',\n height: '109px',\n background: `url(${dmail}) no-repeat`,\n backgroundSize: '100%',\n position: 'absolute',\n left: '50%',\n top: '50%',\n transform: 'translateX(-50%) translateY(-50%)',\n },\n },\n\n '& img': {\n width: '100%',\n display: 'block',\n borderRadius: '10px 10px 0 0',\n },\n\n '& .content': {\n padding: '5px 16px 15px',\n },\n\n '& .info': {\n display: 'flex',\n justifyContent: 'space-between',\n color: '#727A82',\n fontSize: '14px',\n },\n\n '& p': {\n display: 'flex',\n alignItems: 'center',\n lineHeight: '16px',\n marginTop: '5px',\n\n '& i': {\n width: '20px',\n height: '20px',\n marginRight: '6px',\n display: 'inline-block',\n background: `url(${email}) no-repeat`,\n backgroundSize: '100%',\n },\n\n '& .date': {\n backgroundImage: `url(${date})`,\n },\n\n '& .dapper': {\n backgroundImage: `url(${dapper})`,\n },\n\n '& .type': {\n backgroundImage: `url(${type})`,\n },\n },\n\n '& .right': {\n color: '#A5A5A5',\n // lineHeight value is equal the icon height\n lineHeight: '20px',\n\n '& i': {\n marginRight: '0',\n },\n\n '& span': {\n color: '#343434',\n fontSize: '18px',\n },\n },\n '& .action': {\n marginTop: '12px',\n textAlign: 'center',\n\n '& a': {\n display: 'inline-block',\n color: '#fff',\n height: '30px',\n lineHeight: '30px',\n padding: '0 25px',\n fontSize: '14px',\n fontWeight: 'bold',\n transition: 'transform 0.3s ease',\n borderRadius: '8px',\n textTransform: 'none',\n backgroundColor: '#FA6755',\n cursor: 'pointer',\n\n '&:hover': {\n transform: 'scale(1.05)'\n }\n }\n }\n },\n }));\n\ninterface Props {\n name: string;\n}\nconst Page: FC<Props> = ({ name }) => {\n const classes = useStyles();\n const [tag, setTag] = useState<number | string>(tags.length ? tags[0].value : 0);\n const onSelectTag = (tag: number | string) => () => {\n setTag(tag)\n }\n const [filterTags, setFilterTags] = useState([...tags.slice(0, 4)]);\n const [moreTag, setMoreTag] = useState(true);\n useEffect(() => {\n setFilterTags(moreTag ? [...tags.slice(0, 4)] : [...tags])\n }, [moreTag]);\n\n const [priceSelect, setPriceSelect] = useState<number | string>(priceTypes[0].value);\n const onPriceSelectChange = (e: React.ChangeEvent<HTMLSelectElement>) => {\n setPriceSelect(e.currentTarget.value);\n }\n // TODO: Make sure the thumb width and height rate is immutable.\n const { data, ids, filterValues } = useListContext();\n\n // just fix the css layout\n const [placeholderList, setPlaceholderList] = useState<any[]>([])\n useEffect(() => {\n setPlaceholderList(Array.from(Array(4 - ids.length % 4).fill('')));\n }, [ids]);\n\n // const notify = useNotify();\n const redirect = useRedirect();\n // @TODO: consider the onSubmit\n const onWant = () => {\n redirect('show', './nfts', name);\n };\n\n const btnText = name === 'auction' ? 'Auction' : name === 'sell' ? 'Buy' : 'Cancel'\n\n const [modalVisible, setModalVisible] = useState<boolean>(false);\n const setVisible = (visible: boolean) => setModalVisible(visible);\n const onSubmit = (name: string, item: any) => (e: React.MouseEvent<Element>) => {\n if (name === 'my' && !item.isEmail) {\n setModalVisible(true);\n e.stopPropagation();\n }\n }\n\n return (\n <div className={classes.root}>\n <div className={classes.desc}>\n NFT is the abbreviation of non homogenous token. The biggest feature is that it is not interchangeable. Each token is different. One of the origins of NFT can be traced back to the encrypted cat game in 2017, which is used to represent the different colors, genes, generations and other information owned by each cat. At present, NFT is mainly used to encrypt the issuance and circulation of works of art, virtual land, game props, tickets and other fields. NFT market zone is the basic platform to support the auction and secondary sale of NFT assets.\n </div>\n {name !== 'my' ?\n <>\n <div className={classes.tags}>\n <div>\n <strong>NFT Type:</strong>\n {filterTags.map(({ label, value }: { label: string, value: number | string }, index: number) => (\n <>\n <span key={value} className={tag === value ? \"on\" : \"\"} onClick={onSelectTag(value)}>\n {label}\n </span>\n {index === filterTags.length - 1 ? <i className={moreTag ? \"more down\" : 'more up'} onClick={() => setMoreTag(!moreTag)}></i> : null}\n </>\n ))}\n </div>\n {/* <a>Put Away</a> */}\n </div>\n <div className={classes.tags}>\n <div>\n <strong>Price:</strong>\n <select value={priceSelect} onChange={onPriceSelectChange}>\n {priceTypes.map(({ label, value }: { label: string, value: number | string }) => (\n <option value={value} key={value}>{label}</option>\n ))}\n </select>\n <div className=\"minToMax\">\n <input placeholder=\"min\" />\n <p>to</p>\n <input placeholder=\"max\" />\n </div>\n <div className=\"search\">\n <a>Search</a>\n </div >\n </div>\n </div>\n </>\n :\n null\n }\n <div className={classes.list}>\n <ul>\n {Object.values(data).map((item, key) => (\n <li key={key} onClick={onWant}>\n {item.isEmail ?\n <div className=\"dmail\">\n <img src={dbg} />\n </div>\n :\n <div className=\"thumb\">\n <img src={item.thumb} />\n </div>\n }\n <div className=\"content\">\n <div className=\"info\">\n <p className=\"left\">\n <i className={item.isEmail ? \"email\" : \"dapper\"}></i><span>{item.subject} #{item.id}</span>\n </p>\n <p className=\"right\">\n Price\n </p>\n </div>\n <div className=\"info\">\n <p className=\"left\">\n <i className=\"date\"></i><span>{item.time}</span>\n </p>\n <p className=\"right\">\n <i className=\"type\"></i><span>{item.price}</span>\n </p>\n </div>\n <div className=\"action\">\n <a onClick={onSubmit(name, item)}>{name === 'my' && !item.isEmail ? 'Sale out' : btnText}</a>\n </div>\n </div>\n </li>\n ))}\n {placeholderList.map((item, key) => (<li style={{ visibility: 'hidden' }} key={key} />))}\n </ul>\n </div>\n <Modal visible={modalVisible} setVisible={setVisible} />\n </div>\n )\n}\n\nexport default Page;","import React, { FC, Fragment, useCallback, useEffect, useState, cloneElement, useMemo } from 'react';\n\nimport {\n useGetList,\n ListContextProvider,\n useListContext,\n} from 'react-admin';\nimport { useMediaQuery, Divider, Tabs, Tab, Theme, Typography, Avatar } from '@material-ui/core';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Page from './page';\n\nconst useStyles = makeStyles(\n theme => ({\n root: {\n\n },\n tabs: {\n display: 'block',\n marginBottom: '25px',\n },\n tab: {\n marginRight: '50px',\n lineHeight: '17px',\n padding: '12px 0',\n fontSize: '17px',\n fontFamily: 'PingFang SC',\n color: '#56677B',\n fontWeight: 600,\n minWidth: 'auto',\n\n '&.Mui-selected': {\n color: '#153F5D',\n fontWeight: 'bold',\n fontSize: '20px',\n }\n },\n }));\n\nconst tabs = [\n { id: 'auction', name: 'AUCTION PLACE' },\n { id: 'sell', name: 'SELL PLACE' },\n { id: 'my', name: 'MY NFT' },\n];\n\ninterface ContentProps { }\n\nconst Content: FC<ContentProps> = props => {\n const listContext = useListContext();\n const { data, ids, filterValues, setFilters, displayedFilters } = listContext;\n const classes = useStyles();\n\n // TODO: delete filters in url\n useEffect(() => {\n setFilters(\n { status: filterValues.status || 'auction' },\n {}\n );\n }, [])\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<{}>, value: any) => {\n setFilters(\n { status: value },\n {}\n );\n },\n [setFilters]\n );\n\n return (\n <Fragment>\n <Tabs\n variant=\"scrollable\"\n value={filterValues.status}\n indicatorColor=\"primary\"\n onChange={handleChange}\n className={classes.tabs}\n >\n {tabs.map(choice => (\n <Tab\n key={choice.id}\n label={choice.name}\n value={choice.id}\n className={classes.tab}\n />\n ))}\n </Tabs>\n <div>\n {filterValues.status === 'auction' && (\n <ListContextProvider\n value={{ ...listContext }}\n >\n <Page name=\"auction\" />\n </ListContextProvider>\n )}\n\n {filterValues.status === 'sell' && (\n <ListContextProvider\n value={{ ...listContext }}\n >\n {/* <Sell /> */}\n <Page name=\"sell\" />\n </ListContextProvider>\n )}\n\n {filterValues.status === 'my' && (\n <ListContextProvider\n value={{ ...listContext }}\n >\n {/* <My /> */}\n <Page name=\"my\" />\n </ListContextProvider>\n )}\n </div>\n </Fragment>\n );\n};\n\n\nexport default Content;\n","import React, { FC, Fragment, useCallback, useEffect, useState, cloneElement } from 'react';\nimport {\n List,\n ListContextProvider,\n ListProps,\n} from 'react-admin';\nimport Content from './content';\n\ninterface Props {\n\n}\nconst NftList: FC<ListProps> = props => (\n <List\n {...props}\n filterDefaultValues={{ status: 'auction' }}\n sort={{ field: 'date', order: 'DESC' }}\n perPage={20}\n exporter={false}\n actions={false}\n pagination={false}\n bulkActionButtons={false}\n >\n <Content />\n </List>\n);\n\nexport default NftList;","import React, { FC, useEffect, useState } from 'react';\nimport {\n useGetList,\n useListContext,\n} from 'react-admin';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { makeStyles } from '@material-ui/core/styles';\nimport clsx from 'clsx';\nimport { useSelector } from 'react-redux';\nimport { AppState } from '../types';\n\nimport dapper from '../assets/red/nft-dapper.png';\nimport test from '../assets/test/test1.jpeg';\nimport test2 from '../assets/test/test2.png';\n\n\nconst useStyles = makeStyles(theme => ({\n root: {\n background: '#fff',\n borderRadius: '24px',\n padding: '35px',\n },\n works: {\n display: 'flex',\n\n '& .pic': {\n // width: '320px',\n marginRight: '55px',\n\n '& img': {\n width: '320px',\n height: '385px',\n borderRadius: '10px',\n display: 'block',\n },\n },\n\n '& .info': {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n color: '#404040',\n },\n\n '& .sell-info': {\n '& .price': {\n marginTop: '40px',\n },\n },\n\n '& .name': {\n display: 'flex',\n alignItems: 'center',\n fontSize: '24px',\n fontWeight: 'bold',\n\n '& i': {\n width: '28px',\n height: '28px',\n marginRight: '18px',\n background: `url(${dapper}) no-repeat`,\n backgroundSize: '100%',\n },\n },\n\n '& .creator': {\n display: 'flex',\n alignItems: 'center',\n marginTop: '15px',\n\n '& img': {\n width: '35px',\n height: '35px',\n borderRadius: '50%',\n marginRight: '11px',\n },\n\n '& p': {\n '&:first-child': {\n fontSize: '14px',\n marginBottom: '4px',\n color: '#999',\n },\n\n '&:last-child': {\n color: '#464646',\n fontSize: '18px',\n fontWeight: 'bold',\n },\n }\n },\n\n '& h3': {\n fontSize: '20px',\n marginBottom: '10px',\n },\n\n '& .price': {\n marginTop: '30px',\n\n '&>p': {\n display: 'flex',\n alignItems: 'baseline',\n },\n\n '& i': {\n width: '28px',\n height: '45px',\n marginRight: '18px',\n background: `url(${test2}) no-repeat`,\n backgroundSize: '100%',\n },\n\n '& strong': {\n fontSize: '48px',\n marginRight: '15px',\n },\n\n '& span': {\n fontSize: '22px',\n color: '#808080',\n },\n },\n\n '& .more': {\n display: 'flex',\n alignItems: 'center',\n marginTop: '16px',\n\n '& h3': {\n marginRight: '10px',\n marginBottom: '0',\n },\n\n '& div': {\n fontSize: '20px',\n },\n\n '& input': {\n height: '28px',\n width: '100px',\n lineHeight: '28px',\n border: '1px solid #ccc',\n boxSizing: 'border-box',\n padding: '0 12px',\n fontSize: '16px',\n marginRight: '15px',\n }\n },\n\n '& .desc': {\n marginTop: '22px',\n\n '& p': {\n lineHeight: '18px',\n fontSize: '14px',\n color: '#999',\n }\n },\n\n '& .btns': {\n '& a': {\n display: 'inline-block',\n height: '42px',\n lineHeight: '42px',\n marginRight: '35px',\n padding: '0 30px',\n fontSize: '18px',\n transition: 'transform 0.3s ease',\n borderRadius: '8px',\n textTransform: 'none',\n cursor: 'pointer',\n border: '2px solid #FA6755',\n boxSizing: 'border-box',\n backgroundColor: '#fff',\n color: '#FA6755',\n\n '&.submit': {\n padding: '0 160px',\n },\n\n '&:first-child': {\n backgroundColor: '#FA6755',\n color: '#fff',\n },\n\n '&:hover': {\n transform: 'scale(1.05)',\n backgroundColor: '#FA6755',\n color: '#fff',\n }\n }\n },\n },\n introduction: {\n background: '#F2F2F2',\n borderRadius: '10px',\n fontSize: '14px',\n color: '#404040',\n padding: '25px 35px',\n marginTop: '25px',\n lineHeight: '20px',\n\n '& p:last-child': {\n textIndent: '2em',\n }\n },\n}));\n\nconst Sell = ({ data }) => {\n const classes = useStyles();\n\n return (\n <div className=\"info\">\n <div>\n <div className=\"name\">\n <i className=\"dapper\"></i>\n <span>{data.subject} #{data.id}</span>\n </div>\n <div className=\"creator\">\n <img src={data.ava} />\n <div>\n <p>Creator</p>\n <p>{data.creator}</p>\n </div>\n </div>\n <div className=\"price\">\n <h3>Price</h3>\n <p>\n <i></i><strong>{data.price}</strong><span>(${data.dollar})</span>\n </p>\n </div>\n <div className=\"desc\">\n <h3>Product description</h3>\n <p>{data.description}</p>\n </div>\n </div>\n <div className=\"btns\">\n <a>Buy Now</a>\n <a>Make Offer</a>\n </div>\n </div>\n )\n}\n\nconst Auction = ({ data }) => {\n const classes = useStyles();\n\n const [eth, setEth] = useState('0');\n const onChangeETH = (e: React.ChangeEvent<HTMLInputElement>) => {\n setEth(e.target.value)\n }\n\n return (\n <div className=\"info sell-info\">\n <div>\n <div className=\"name\">\n <i className=\"dapper\"></i>\n <span>{data.subject} #{data.id}</span>\n </div>\n <div className=\"price\">\n <h3>Current Price:</h3>\n <p>\n <i></i><strong>{data.price}</strong><span>(${data.dollar})</span>\n </p>\n </div>\n <div className=\"more\">\n <h3>Bonds:</h3>\n <div>{data.price} ETH</div>\n </div>\n <div className=\"more\">\n <h3>Add Price:</h3>\n <div><input value={eth} onChange={onChangeETH} type=\"number\" /> ETH</div>\n </div>\n <div className=\"more\">\n <h3>Total:</h3>\n <div>{+eth + data.price} ETH</div>\n </div>\n </div>\n <div className=\"btns\">\n <a className=\"submit\">Submit</a>\n </div>\n </div>\n )\n}\n\ninterface Props {\n\n}\nconst NftShow: FC<Props> = props => {\n const classes = useStyles();\n\n const path = useSelector((state: AppState) => {\n const location = state?.router?.location;\n return location.pathname || ''\n });\n const aPath = path.split('/');\n const name = aPath.length > 2 ? aPath[2] : '';\n\n const { filterValues } = useListContext();\n // @TODO: need fix to use real data by id\n const list = useGetList(\n 'nfts',\n { perPage: 1, page: 1 },\n { field: 'id', order: 'ASC' },\n { ...filterValues, status: name },\n );\n const values = Object.values(list.data);\n const data = values.length ? values[0] : {} as any;\n // console.log(data, filterValues)\n\n return (\n <div className={classes.root}>\n <div className={classes.works}>\n <div className=\"pic\"><img src={data.pic} /></div>\n {name === 'auction' ? <Auction data={data} /> : <Sell data={data} />}\n </div>\n <div className={classes.introduction}>\n <p>The NFT introduction:</p><br />\n <p>{data.introduction}</p>\n </div>\n </div>\n );\n};\n\nexport default NftShow;\n","import NftList from './nftList';\nimport NftShow from './nftShow'\n\nexport default {\n list: NftList,\n show: NftShow,\n};","export default (type: string) => {\n switch (type) {\n case 'graphql':\n return import('./graphql').then(factory => factory.default());\n default:\n return import('./rest').then(factory => factory.default());\n }\n};\n","import {\n convertLegacyDataProvider,\n DataProvider,\n LegacyDataProvider,\n} from 'react-admin';\nimport fakeServerFactory from '../fakeServer';\nimport { resources } from '../App';\n\nexport default (type: string) => {\n // The fake servers require to generate data, which can take some time.\n // Here we start the server initialization but we don't wait for it to finish\n let dataProviderPromise = getDataProvider(type);\n\n // Instead we return this proxy which may be called immediately by react-admin if the\n // user is already signed-in. In this case, we simply wait for the dataProvider promise\n // to complete before requesting it the data.\n // If the user isn't signed in, we already started the server initialization while they see\n // the login page. By the time they come back to the admin as a signed-in user,\n // the fake server will be initialized.\n const dataProviderWithGeneratedData = new Proxy(defaultDataProvider, {\n get(_, name) {\n return (resource: string, params: any) => {\n return dataProviderPromise.then(dataProvider => {\n // We have to convert the dataProvider here otherwise the proxy would try to intercept the promise resolution\n if (typeof dataProvider === 'function') {\n return convertLegacyDataProvider(dataProvider)[\n name.toString()\n ](resource, params);\n }\n const path = resources.filter(({ name, useMock }) => name === resource && !useMock).length ? `${resource}/${name.toString()}` : resource;\n const data = dataProvider[name.toString()](path, params);\n return data\n });\n };\n },\n });\n\n return dataProviderWithGeneratedData;\n};\n\nconst getDataProvider = async (\n type: string\n): Promise<DataProvider | LegacyDataProvider> => {\n // @TODO: must notes this line when use real http request\n await fakeServerFactory(process.env.REACT_APP_DATA_PROVIDER || '');\n /**\n * This demo can work with either a fake REST server, or a fake GraphQL server.\n *\n * To avoid bundling both libraries, the dataProvider and fake server factories\n * use the import() function, so they are asynchronous.\n */\n if (type === 'graphql') {\n return import('./graphql').then(factory => factory.default());\n }\n return import('./rest').then(provider => provider.default);\n};\n\nconst defaultDataProvider: DataProvider = {\n // @ts-ignore\n create: () => Promise.resolve({ data: { id: 0 } }),\n delete: () => Promise.resolve({}),\n deleteMany: () => Promise.resolve({}),\n getList: () => Promise.resolve({ data: [], total: 0 }),\n getMany: () => Promise.resolve({ data: [] }),\n getManyReference: () => Promise.resolve({ data: [], total: 0 }),\n // @ts-ignore\n getOne: () => Promise.resolve({ data: {} }),\n // @ts-ignore\n update: () => Promise.resolve({ data: {} }),\n updateMany: () => Promise.resolve({}),\n};\n","import React, { FC, useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { changeEmail } from '../configuration/actions';\nimport { fetch, emailHost } from '../utils'\nimport { Storage, Email_Name, Username } from '../utils/storage'\n\nconst GetEmail = (props) => {\n const dispatch = useDispatch();\n\n useEffect(() => {\n const email = Storage.get(Email_Name);\n if (email) {\n dispatch(changeEmail(email))\n }\n }, [])\n\n return null\n}\n\nexport default GetEmail;","import React, { useContext, useEffect, useState } from 'react';\nimport { Admin, Resource, DataProvider } from 'react-admin';\nimport polyglotI18nProvider from 'ra-i18n-polyglot';\n\nimport authProvider from './authProvider';\nimport themeReducer from './themeReducer';\nimport emailReducer from './emailReducer';\nimport { Login, Layout } from './layout';\nimport { Dashboard } from './dashboard';\nimport customRoutes from './routes';\nimport englishMessages from './i18n/en';\n\nimport inbox from './inbox';\nimport junk from './junk';\nimport sent from './sent';\nimport trash from './trash';\nimport projects from './projects';\nimport asset from './asset';\nimport settings from './settings';\nimport nft from './nft';\nimport dataProviderFactory from './dataProvider';\nimport GetEmail from './components/GetEmail'\n\nconst i18nProvider = polyglotI18nProvider(locale => {\n if (locale === 'fr') {\n return import('./i18n/fr').then(messages => messages.default);\n }\n\n // Always fallback on english\n return englishMessages;\n}, 'en');\n\nexport const resources = [\n {\n name: 'mails',\n compontents: inbox,\n label: 'Inbox',\n useMock: false,\n },\n {\n name: 'junks',\n compontents: junk,\n label: 'Junk Mail',\n useMock: false,\n },\n {\n name: 'projects',\n compontents: projects,\n label: 'Subscription',\n useMock: true,\n },\n {\n name: 'sents',\n compontents: sent,\n label: 'Sent',\n useMock: false,\n },\n {\n name: 'trashs',\n compontents: trash,\n label: 'Trash',\n useMock: false,\n },\n {\n name: 'assets',\n compontents: asset,\n label: 'Assets',\n useMock: true,\n },\n {\n name: 'settings',\n compontents: settings,\n label: 'Settings',\n useMock: true,\n },\n {\n name: 'nfts',\n compontents: nft,\n label: 'NFT Market',\n useMock: true,\n },\n]\n\nconst App = () => {\n return (\n <Admin\n title=\"\"\n dataProvider={dataProviderFactory(\n 'rest'\n )}\n customReducers={{ theme: themeReducer, email: emailReducer }}\n customRoutes={customRoutes}\n authProvider={authProvider}\n dashboard={Dashboard}\n loginPage={Login}\n layout={Layout}\n i18nProvider={i18nProvider}\n disableTelemetry\n >\n <GetEmail />\n {resources.map(({ name, compontents, label }) => (\n <Resource\n key={name}\n name={name}\n options={{ label }}\n {...compontents}\n />\n ))}\n </Admin>\n );\n};\n\nexport default App;\n","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAAeCAYAAAB9hg0IAAADuElEQVRYR9WYyasdVRDGf59TXDlDxAERxQmV6EKiz5hJTRxWIomKgiAugiQL/wPXLrLQhbpQceGIO8V5njeOiBocwAHncaHg9Mn3ODecdN59ffu+7vdMbRr6nFOnfl11qqqPWCSxPQPcAKwH9gFeBG6X9PhimKDF2MT2NcA9Y/a6UdL2oe0YHNT2FcB9LSDbJN0yJOygoLYvAx5uADwJfAdc3Xi/VdKtQ8EOBmp7I/BYE1LShryzfQdwfWN8i6TbhoAdBNR2Es4TwN6V0c8AGyX9PXpn+y7g2gbYdZLu7Bu2d1Dbq4GnS2Yd2fsCcH4NWcHeD2xugF0lqe1cd/oWvYLaXlUg96useKlA/jnOMtsPAZc3xjdLerATzTyTewMtnnwK2Lfa79kSrn+1GWz7XuDKxrxNkvIRFiy9gNpeCySbphEYSSATrp7USttzhXEvnl0wqO01QBLNXhXQ88C6LpDVmX0A2NS3ZxcEavus0sotqwx7AzhP0tgz2eZh248AlzTmXSrp0ba148anBrV9JvAccECl/E1graTfpjUo62znCATqwkrPP8DFknJEOstUoLZPB1IyDqp2fBdYLemXzlbMscB2anCg1lXDqcEbJOX8d5LOoAUynjyk2um94skfO+3eMtl27MvfTe3Zf4GLunq2E6jtU4CXgYMrGz8EZiT91Cdkrct2PHtBQ3+6rHRfE8nEoLaPB14HDq00fwKcIylN+mBiOxk94Zquq5b1k4bxRKC2jwVeBQ6vdvkUOFfS14MRVopLgsrP+tnV6ySoVZJea7OhFdT20cArQJ4j+byE65dtG/Q5bnt/IFArKr2/lw/+1nx7zQtq+6hSJ+PRGnKNpM/6hJhUl+0DS1k7o1rza8n474zTMxa0QCbxHNOATLh+MalhQ8yznbKWzF979mcgDkiZ203mBB3jya/KeVgSTzYtt52kmFbz1Gos5S0NS8rdLrIbqO0jSrgeV81Mwklb9/EQHppWp+3DgPwGnlTp+KHY+kGtdxdQ28mq+UonVpO+KSHx0bQGDbnO9vLimBOqfVLuko13jN7tBB0D+W35OjsXDGn0tLqLZ9OSpqEZSWBzZmc9OwtqO51O0nbtyfSsKyX9Lz05x5lNGCd51gzfl9KzQyVdJ85Pqxb/UTqet6f9ykuxroRxHFaXw0TlTEDTL9ZNc6498hfS2m0sBUzbnqXBie1HVnPfD2h+kEf3PLn2yM1AEtIeK6UvD2zCeVYCmhvzm4HUoFwgJ4z3eLGds3o3cDJw03/mWD6JvJSZ3gAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/media/logo.29671886.png\";","module.exports = __webpack_public_path__ + \"static/media/login-bg.15296c67.jpg\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADYAAAAwCAYAAABaHInAAAAD7UlEQVRoQ+2aWYgdRRSGv9+4gCsiKqKI6JMENfgg4oJLEBTBDRRJXFDjRnBFwQU14gJRxCghURPFBRNQUUFfBEUT4kNwieDyIhJFFDdcieKCv5yx5zJT6Zmu6eX2ZEi9XO6tc/5TX3fd7lOnSiTN9k7ARcDJwEHADqnNJN8F/AN8B7wNPCPpwyn4t2YaAxk02xcCi4G9W4sAj0i6skW9LKkBmO1FwB1ZXlM3eg84StJfU3et5zECZvsC4Kl6Etle6yQdm23d0FC29wC+B8ZNy4a6E7mvkHRZR9rjZAPsHuCWkmCfA0uB+Pw3E9zAbsAZwOkTALwEPA381hDwT+ALSV+W6QTYB8BhSeen8ZukP+oGt/0gcG1d/0y/uJDx9I2ZEBdr0ALsF2DXRGihpGWZ4hOa2X4TOL6pTqb/x8BcSd+GfYBtAnZMnOdJWp0pOBnYtsA7wJymWpn+MS0PlrQpwH4FdkkcL5H0RKZYpZnth4GrKg3bMVgv6cihgMV4bR8BnA8cA+wPbNeQI70ZY+XOGhrY2Ki2Y+rPaggWr6mzgftKdNb0AtYQaJy77XjIpSnbNzMBbC7wenKxfp4JYJGmrU3AfhoamO1IAmZJer/lqVh2x34cCpjtF4EzC6B4aZ8iKVKixs12P2C2LwUeSwgWSbqzMdX/r5HewFYACxKIVySdtqWDPQRcnUCsljRvSwcry/JXSZq/FWySK9Dnf2zG3rFbgbuTi75M0sJpPxVtRylgn5KBRo3xXODEpC/WaCtLEuGou/wg6blc6E6mou1YerwGnJA7kEy7DaEpKVb3k7auwC4GHq8KXrP/NknpFN5Mqiuwm4F7aw68ym2ppMpVd1dg+xbluahttN1mS/qkSrQTsAhq+xDgRmD3+JoMJOqR0X9g8vtXwLvANsnv8fCIGsxySeuqoIr4veWKkezengyytYpwZ3es6qrafgC4PrF7VtJ5Vb45/X2CzdjMYytYztRLbfqcio8C6dbRy5JGSwV1eAY+fYJF9hCJ8Nj2pKTY527c+gTbE4gN9tF97d+BQyV91piqz5pH8RLdC7gGiAwlNts3tgFVaMfK4Y1Eb6T8VraNNF/SqraCd6lj+2ggzVJGKsGxZbpzEnyBpK6y9lY5bZ8KvJqIjlSCPwJmJx0bJB3e6gg6ErP9FnBcIr8xwJYU8z8NvR6Il+vXRXI7jFMFufiRbMf/9grgpBKnFwJsP6B05z03yjS0mzN6gOUG4P5pOMA6Q1oi6bqxR46WF7e2jth08Xle0jkxmPSQWCz172phG7UP0MWSbhoNvNkDwfYBwOXF+YzIFrbvY5QZMf8ujkrFAZaVkuKcx6D9B4H0O4uWqDH7AAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADYAAAAwCAYAAABaHInAAAAEOUlEQVRoQ92aT0wcZRjGn2cpxlgbvdh68lATaw8evJiGxIu3xosmYNKaLuywsJAGRCl/u6UplIBAsRJEFlh2s62tpvHQGDUejB6MevFvYvTSiCE2/kmmSNJII7uPGURgEGFnZr/Nhu+2yfu88/y+b99vvnlniE1D1619uHO3BegogIMA9q6GaHPsFr9DAO4A+A3CpyhThpWTX+WhK3gIN2bUWw0WxEEADxTwSkl8v7+e587lCphzx1RrYLra0AvgzI4KfwHfYGnpCCPpJX9y76oVMF1prAaU9i73pPiMxycrPCkCBFOplvtx19KtADk8SDXF5xMxDwLfodTlWB/EuO8MnoV8B8xlAASbTDGLZcwxMjm3lQUqE/sSwOOe/ZWKQPgcIUzxRCK10RKVji0AuK9UfAbw8TWy5U+zdvymk4NKxW4DuCdAwhKS6ibK/nyE4Uu3qdnYIoB9JeQuqJVPaCWepGbqdxuYMzHPUdO7EUwfU4ndCIZfqMldCfYHNVG3G2vsFvVa0cDmQGQhPBx029tRL9jUeN0iZHi7l9rZPDO8cuAer49Cmt7RXLAAmxozvGLEm2yaPrbRp8aiIwBbg3nfVm1TF6OGa0xNbEmOu8BeiVaCuGYWbNQwGNXBF5NDLrDRaATArFmwC4bBhC6emnHaDWtDF2otgEmzYMNFAGvfBDZUa4GmwYZqDdcYu7gVGGB4xQZNg2GUnUnXDqiBaCuoEbN/xYGCgL0P8CdAOQjrLb0Q9gCht9k5/YGrxgbrKqBsNZzH+82DfBDQs4GgV27Q/UHBVM3Ts04Po2BD/dZRgO86D8I+k9pUn+W/xsTr7Ek+4/Pi28rUVzsBqNFnbpvqDQAGjbAn1ebz4tuD9UaaAb7qM7dNnbUWQZ9nReFn3PvXIbZdcvomBR06a30L4jGfSVfBgvQ8iB8BxpHNziMUEnK5DZvHnjIsZ2+wPzXv2jy6owdQjsPILa9vHo7WGcIBEKcDtgRt6kzEf43lN53n2ZdyvRNQ3DoJynV+zC9V3lE2FTcOFuf5VL9rxeI1dQCn8rbpPdCmug2DiV0cmHWfFbtrinBW7DIMhv8Bk+mzYkeN6Rrr4stp94p11liQ6bNiu2EwoYXDadf9SG2RY6CueC+dvBU21WYYjOjjULrHtXmcqqkDYXjzaDUMBvyKLB7lxbTzVgeqqirDQ3u/A3Ao7/n3HmhTL1WbrjHHlnODzqy236oAHPbu1ZPCplqqd9FrpDX4BeqFoqyYp+kuQPAC1Rz+AaDJ/3sBfHpMIcxTTeFJAEV5k+/Rnv9w4T2qMXIQoewN/1lKUlnxzwcsJ8ODEDpK0qJ3U1c5kTm+/slRQ/gaiErveUpK8RFfzzzlOHJ/JNYYHoPQVFJW8zUjXGYic+Lf8P90gdQQfgJaaaIcAbAfQHm+uYsclwX4O6QvwNwME298uPH6fwMXup5M/jc9eAAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAABACAYAAABLAmSPAAAFlElEQVRoQ+2baaiVVRSGn7eygaKsLA2MTG2eC4qIJptRxLJJmuxHSRmUoU0UFNFApPUnG4iokLLRwgQ1KwsbCLKEKBttoMSoiGye3lj63et2e86594z3KGf9Ouf79vC+e6+91tp7r080WWwPB0YBRwHxeztgI+An4HPgDWCOpCXNhKJmNW57X+BGYGwv+1gA3CRpUS/LV1WsKURtXw3cXhWSNYWnSppcY92y1RpO1PZTwOl1Ao1ZHSnp5zrb6a7eUKK2XwGOqQDuE2AZYGAwsE+Fsksl7dV2RG3fAUwpA+wu4EFJH6TvbQ8FzgNCVbcqUXeWpNMaQbYhM2r7IGBxCUDx7FxJH1YCa3sn4CHg5BLlxkp6tl6yjSIarmH/DMxiSYdUA9D27MIVpdV+BHaQ9F81beVl6yZq+zggXEMqvwGDJK2sFpztL4BdsnqXSLqv2rbS8o0g+jhwdgbiMkn31ALM9gjgpazuIklH1tJeV51GEF0K7JGAWClp63pA2f4Y2C1p44dCfcNa1yR1EbW9GbAC2CbpfaakcTWhKSrZvgW4LmtjqKRwTTVJXUSjR9v5KI+X9EhNaNYQPbyIgdNmdpUU67cmWUXU9vnAgUWw3Vv1CCu4PXBB1vPLwLvAxjUhgn+BYcCYrP6sYhNQbbufhr2Q7VuBa2sEtb5UmxFEezuD6wupkjiDaCm/tV6TKgF+ZRCN8G0msPuGxq7g8y1wUbfVLQLseBcu43Vg24T4c8CVQN1WusGDGcvuBuDCrN3YQX1d4P1K0t8lgdsO37hjUvkBSRMaDLIhzdm+Gbg+a2xLSRGGdss6RG1vXozGgKTcDEmxnWo7sR1bwCsyYMMkxXlUh2gED50ZbTu9XR3VdVS3s0ZjBOpZo7bDUu8d50eSfiml6rYPDl8t6c1yS8F2bLLD/33Z03JpueraPhSYB/Qv9qijJb2dAs1APQGcIyl2K6ukuL54odjI/xPnw5Ker0S2L4i+BxyQgFog6YSExGHAWxnocZIi/Owi+nC27Qut6J8ORk66L4jmxx8LJR2bkIg7mKczoJMlTU3KPAakpxMR3QyQ9HsFNW+t1bWdz+hcSackJEYCoZapXCrp3qRMnO2mcev3wM6S/ugQbbUf7czoGkPTUd3OGoWOMUq0oONeUpfUsBOGjtXtWN1VI9CJjApF6FjdjtVdPQLNO+7sWN0N0OrmKTjzJHXnDdmODM9Ir0lloqTpFWLdyF0Y3G770c+AyATrktckHZ2QiPzAyBNMZYqkO5MycY50ZlLgz+Iopa023vOB7jOiICWpG7TtPYE8g+xESS8mRONYJW7tuiTuT4ZLKntZ3RdnRkOKo5JIZIzUuDPyix7blxfprf2AaZKuSqfXdlxVxqxHklZc+50q6Z1MC9b623KiyawMqZQ9YjuuI/tJ+qYcAduRObZc0l+VSMa7eohuUYxmZJx0yaOS8uyTnjC05L3tacCkrLNQ97AZ3VJq97IJEKOdXgS3M9F8XQe5ngOGQh1yCzpb0uiWTFGVndi+H7g4qRbqPlBSfJxQfkYLoguBbtcAfCdpYJUYWlLcdhiruM/pkmWSUje36nm5HIbbgGsypGN6ugdpCbOkE9uRir5WVjfwpKSzcizliJZqYIWkQa0mU6m/EvF1FB8laU6viBbqm18xxOP5kk5qB7Il1mbAKrvEyuYN2Y6k/WdKkIovjyZIer8vCBc+9u4SSZEBZ5KkeLeOVEyQsh13k+Ws7avAR0DcYzY70SpCwMjqjOjr+DKZo0skRYZqSekRoO342OaIvpi9KvqMhOX9JP1aM9Fivc4F2mJtliASucEjcr/Za2OUFyxS0SII37SKkW520emSJvamkx5VN23EdnxmNb6Y3fgdHwlEG83O+e3CGVf9y4H4NCzC0tyHluX8P+2S4kC5fck0AAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA+CAYAAAB3NHh5AAAAAXNSR0IArs4c6QAADPVJREFUaEPN22esZVUZBuB32Xvvvffee++9xhZjrIkx/vaXiT/UX5oYrIkNglhBQSlSlKKA0gQBkSYoTdqIIMW6zDP51mRz55xzz8zcO3NXsnPm3rvP3utdX3u/d61pWcPRe79tkgcleUySJyV5bJL7J7ljveaaJBcmOSPJ75OcnuRPSa5urfU1nMrcR7W1eknv/ZZJ7p3kyUmekORxSR45B/BZSf5QoE9OckFr7bq1msui56wJ4N77LZI8JMlzk7y6LHuXJHdK4m/T8Z8kVyXZlOSPSQ5L8uskZ+4M0GsFmNu+LMnrkrwwyV0nCP+ZhCtz2dslufXkb4Afm+SAJD/n3uvt2jsMuPd+myTPS/L+JC9Jco8JoBsqXs+v31kYbn77yT0sfWSS3ZMc1VqzCOs2dghw7/1mSR6c5I1JPpjkUTXT65NcXEnpd0n+XBa+X5LHJ3liEv+W5Ixzk+yZZD+x3Vr713oh3lHAd0vy/CRvTvKaiSufWS56uNhM8o+JSz8wyYuTvLbAw8blf5nkJ0kOaa1dslEBPzzJW5O8oSbPva9NAui3gWitXT2dfGXzFyT5QJJXlnv/L8k5ZeG9WmvK1bqMpS3ce79pEoBcJnjzAvm2JK9Kcp8k/04iXvdPskdr7dRZs+69W6h3VSiIaa4tdg9O8p0kJ9azvFMeuLa1Jrvv8JgLuAAqK8rLnctd/TwFPEoRkiEDi93TylI/bK2dPQcwt+YVrqcXMbFYarIEpk77GWDP5CVXJPnbuFpr/r7NYybgAosxPbpq6sMqyWBMLKvE3KTcURxbEM9CHjConyb5UWuNm241eu8PSPL6up5Z9dp9f09yWQHkRZ7JsoOhYWUIi+vc7QG9FeDeOwAPTfKUyqYYExeclpt5K/vfJCeUhfdexcJq9puqpN1qCVNdWTSUB51Sbn92a+3SJb675ZYbAe69c19s6UVJnpGEJfyOuy4zuN6vysIHtdYumGPhe1bN5tIvX0FUFr2He6vb+Lg4lxyPbK1dvszk3LMZcLkwYOqjmqpscGduO4b4AUgSYcnhcuM53PyiJEcX6JNba74zy6XvUA2GkmZxLax3jQbCp7mJYRzd/cJmOh/hckSSfQv8FcsktlZgPYxF0UMr/ogVHJilRmcjeaCLQJvUmJhYUz/Fl0x91bwYK8IChOSlo9J04NwWEVifAyxDjHziE9kxvF9MA32IRV7GvQGWiKzwO4v4s+yIKeBGV6OlO6+y5QA8VtzkRlNw2bJMqZoOOcMcBuABZgrYwmBx8gmmJiS82zuxNDxcOTtltUQGsIcA+aFiTYPci4vfJPlZkuOrTi506WWBrvTx3rvMv8ilcW9eqO2U7J5TbadHoaHm+a3qvC5prfGQmQPgd5RbvbuysxvFnlgE9uDWGi68y0fv/V4VckCL/VE5/pLkx5UsT2itKWNzAX+uOhh0T1wZxxU1PLCa852iRiyzor13jE6e0axIeobsbc4S2H6tNaE3FzBQGJOuR9xYHV3Ll1prauqGGxWGH03ylipp5i1hmvc3W2snLQKMGQGr1upqqBC6FiR+Q7jyysmXa7+9ujS0Vnyjmjj8F1prRy0CzPyjDkpUuKzYPay1pqfdcKP3fvdiaGJZx3XfmuShST5fLebMMJS0uIJkYKi3XBzgY1trWM2GG1VKUV+A9eI81MDy5KQDWmvq9FZjJWCFXOC7jmutqbcbbvTeJVeuDLA4xv0NVPOzrTXC4MyxEjD31ukIfoA18xtuFOCphSVdg2ry6dYa4EsB1nmQTH3xt6UizuTDu3IVeu+DCrOwC+U0VJWvVx7a3DuvZF4sDOQo4OqZzCxTS+0Y1kmtNT3qhhnV1WFbwNLBJV3jryX7mjtKjA7rm7eIggArRUM99CXBjkPjqBRHBV0rdt7OEMqXWdUJYJ2dFnPaq6s0QlOzQ0HhqbBsQjkBBm4qnI93Wgh/Y3ExIXNr+eby1GUmuxb3VAw/tcBKWsPC4/GUFxXG3I+pjorhNgGs01DHWJlehYD4nIoDbv5+dSXnt9a4/i4bvXfdnERll4OFCYF+B8Ogx+bHlbk2cXBvCwCwHQOFnDCuHgPv39NVk61ticjeatxcrrozVqH3rrMCTt8ulklQ+mY8Wxupvx6DYMFg35WbAAaMVQdgX/IgaqI+1N9Ym6Zkpb6qHVtGXVhv8L13baMMDSDAPgHWRvqkso5khlCdATAwVITh0j4Vch2JbsRe70hqrPzFahk3BAsr9+bOLqEoH43dkGcVNolYz3DOPJmWAkE+lfbJqaPOiQebXhLYdsmk6211z++9Y2HvrbnbwLMYDHTBIiFecbdf9PEC71m0Ko02wCcuarR3BrB57yipWX3Gs8U4SUgzcenCrZbeu5s/Ve7t+ZoLWV0bdkxrTdnacKNimyg5djeGh161GmAqyCdLzQSMlHJQAdZNSWQbbvTeJatnF2C7lNza2LTIpZUoLvHhOrcxXPoH1WCcuoFdmkXlHhbWZMjgEtfF85KWumw3f4jyo1+2G/iNAnzhRihNK92rThI5kfCeCkVgqaJ49mbigZnQhNU0Eq1LIRf0tl001wq93ph08uVSQ3Z561i6NvfFFexQyMasa962cIn8hrmTcs8CWJz6khtlM8I4n3czy1oMepGtDQnL0QScepcqmbVjYp5KEKOoKqxppxOPQKDUZQOnFoqnA/yZopYDMNC+PD1uhEpSETCto1tr3GOXjdqqQTCeluQVtSMx9rBXNhISK8+0M7HZwnpHVuXSVmTluSobZIQ9K6Q/vnJ7dxjWaoV671zYbgmwo3kYLj19DRFAt+RYFGNdBrDtk+kxIu2f9soRBOIASmbD6tD1PGyyLYtRigfaODbV9QFjyC3mDqyTBL8oFees1toNswBroDEqG8/AEgHE78W7Om4Hot47d1ZnVRH0d1QRhqLWqCZosH/DYb9pc0sLMO15tFOs7WYqgawGMM68QwdKKsFknnS6LdZ1b1l4cH3EYjApqiv3FbMAK503OkW0EjDqaK+Vv+shL9oRsFU2JJPRlFNRCGt61O0exaQkLNYVw0OXZqTdyo23EvCGhadCvFM3mgONvtKzzcpG8VhJEHmR8elNU8BChijoury15iDLNo16h1O7Q4hXigxSFJmW6jpzzBLigXUdv62iXWVPxyasvo1rJWJa4tRzAGV+scWLqKI3crvV0C8ArJoQ4nnpXMBerkgbrK3eAuywyFLdUMUoqyoVKKmEQnWYd/JHBqUqKhmsAfyly4ZPbbWI4ZGlKTPG2Go5cN6zWNhZSEGv/lr9sc+6f2tNd7Tq6L0Dhs4Bi8eKqXEKft73xbPnS5BKx+HLbt713iXZl1b8EvLGwurkbKZ51kx1FWCyDQWQhbgcVqXf3X2ZM491dpIbOyNiJ48eNg6eACVmp+elx5mOsRBKIBccRw6vX6389d5RR82BhEW7IkHJN/bEdmutSV5zXXqv4p+4M6alliEaX7HyizbUiuIp+lb7faWMDKZGUlEa1HHlAvcW0xaHTjZKIUvYIjEP250E/4VZvPfOqh8rpoV1af0YCuA9FxmKhT9RsSfjDUEeQ9mnLH36vExaAppYcqJuKojj2lxVjFL/p4DFNiXFNRiS3MEdTVjumJnEqvVjXXN1ONWBHMP9wsL3GUlemmthcSejfqRW3o3cQ4mSwBRyB0W2mkSdtxilQeyO1eYhXNTGnMQ3dWmLCiyXZClepX3jCUqiM5rjBP2WSffeta06I20fDm3OQ0011z2qT3ccca6HsLBVptwDDLwYG0P25GZO9KCXJu5hYp2Lih+qiN7ZyuubAaTyf22ea/Xevc95aWetubkzGrzC4n6v2J45CA9NgYWUWPFn8rGwGKGDNytHhIkjWmvyxtwBsC/iohRKNM3q6ysNK889gLUTp6/UbrG22JOgxK8yJCsj7vgrwM6IzDtr6X3OWQsDEozvWkQLq+f2LmqMpsZcLIqSN071jj7XPMQ/kd3pnZmnd6fohxA/VI6xV4PFDNDTbAowCypfAA+lf6giEp6YJePus8ppWgssy7La2CHgyhIdfg8whiYE1Nmxyz/mYw54P7BC6LRlNLYtmlb97xQPZTFuo66urKXDpW1ScWmSCncbRxW5u4YDYLGoxm81eu8WCFjxPw6ID48a7xgu7dksPdXfuC2+IMcIOUn2mtXKmQeuPD7s4eJyHCHmsqgh4CtfOgvLOCAG8L6tNfuyswCTZsQ90JLdaiTFM4BkVSzNc7EqSZFll9bXZh0Q595cVWIBXuwQ9aZnpwexMJFxqpbVuTyqqNsi1M88xzzpdhAVl9iUnITJ9Nl+3txh1SbAyCU8R5zr0RcmqZWrPQuw3wGt0zGRsRMnjsQ1S4/DoCY0Jgmw4i+eZE0rP6+eSjoWlIDoyDJPAljfLdOPg6Z+BmjzvtCkuQfcIfHrlnHjKej/AysrpS7oYs0IAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAICAYAAACRbl3VAAAAp0lEQVQ4T82TzQkCMRBG35CzYhOiJehdG9AedkkHYgFiB2GnB21A71rCik0oeA2RQLxIcgzsKQzh8T3mRwDatp2GEI7AKtbAVUR2Xdc9U519anBirZ157+/A5C/1ZYxZOOceOZtanDRNcwI2hU6cVXWb+6vFRaE3MC4IfVR1VBCqwg1SaHAjmwO33FIDS1XtCyOrwkkMSxdzANYp/GKM2Zcu7CdYg/sCYhuRzURfR78AAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/welcome_illustration.87ada4be.svg\";","module.exports = __webpack_public_path__ + \"static/media/empty.d8b2a176.png\";","module.exports = __webpack_public_path__ + \"static/media/ava.532125dd.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAmCAYAAACCjRgBAAAAAXNSR0IArs4c6QAABYNJREFUWEfVWF1sFFUUPufe7m4rqYq2nb0z01ExJgViRDAmhviD+EMMmgBRg4lifBBfSORBg4C+gCIPxr8HIw8q+ABGIJJgoojgDw+aiBETSUyj7W5nZ6e0pVDTn+3u3GNus0umw9K9s1siTrLZ7N5zvu9855z7Mxehgae7u3tBa2vrLinlvHpgELEXETem0+mf6/FXPlivo+d5S4joBGOsmYjqhZnyQ8RlQojv6gGpS4Drundxzn8EAN5o8JWgGWMPpNPpb+OKiC3A87x7AOD7uEQ69kT0kGVZ3+jYVmymBPT19a1JJBK3Syln9CWiJCK+FIcgri0RvYWIE7X8EPGUEOJzzOfz7xHRhloOV+j4u+h5XmMzMKKsMicQY3dnXTlSAs4DwNV1eVdxQsQ+RDwJAD1SyoGySTsR3YSIiwHAmS0uABhRAoYA4LpZAN0tpdxtWdYPiBhUwyMi5vv+vUS0DgDUp9HnbEMCVJsQ0VdSyk22bZ+KE43rurcxxt4EgBVx/CK2jQmQUm6xbfuNBgIAz/O2AsC2OjHqF4CIzwohdl+KmIiastlsqxp3HOcfRCxdytZ13XWI+AljTFU0jpb6BEgpX7Ntu2rW8vm8CmaVlPLO0OIwwjn/CQC+MAxjT7UIBwcHt4yOjm5PJBKXVwAinhBC3B1lKff0RwCwWGUxuoxW/iOiXxHxedM01Uo17fF9/0SpVFqqKqH5xKuACiIIAstxHC9M4Pv+yiAIDiGiFrMSFwTBStu2vwzjDAwMmIVCIXdZBJRJD9q2vSYS/K1Syt81MzbNDBEXCiFOh/90XfcA53y15lzQr4ACZIzdL4Q4HiH8CxHnxd15Va8Xi8W/TdO8OYzX29u7LJVKHZt1AYjoCyFEmGxoaGjNxMTE/rjBK4zyHgIjIyOPd3V17Y9U1Q+CwNDA1a8AIu4TQqyNZP8Q5/wxzWxV7bJkMnm4ra3t0YiAz0ql0hMacyGWgJ1CiE1holwul0HEhs42RJS1LOuGMG4+n99JRC9rzCs9ASoTk5OTWxzHubDrDg8PXzs+Pu4CwBwNoplMRltaWuy5c+eeqxhls9nNiUTidY3K6glQvVgsFl91HGd7hcT3/TlSSrWcNnSSJaLznHMrnU6PVrBd193KOd82awLKwO+Yprkx0kJ/IOKCRipARKcty1oYmQNvSylf1MDVq4ACIqKjlmU9GAb1PO8DAHhBg2gmk12maa6PJOYoIi7XwNUXAAAFxtj1kVKrI/FvGkRVTVSLENGi8FG83JpnASCpgRtLAHDOnzEM49NIuQ8S0SqNfr3gVt7VQUp50HGcaTt7JpN5OpVK7al1wVAG0xegSEul0snOzs47wgL6+vpaGGN/MsY6dUWo4JqamnoNw+hCxEKkLX9BRHVpplEA0BdQQWOMLU+n08fC6D09PelUKnWYiJbU2j3LB8JTzc3NKzo6OvwwzuDg4PKJiYmjGhtYxS2+AAAYEEKkEfGiS6QzZ87sKBaLGxCx6t5ARKOJROL99vb2zYg4LcVExD3P84mo7XILUBPva8uyqr7L+r7fIaV8mDG2VEo5tUsjYkbdoyLiESFE5aZiWov4vv/l5OTkI+qQp9k+yr+uCkwRc873GobxlE6j1rLJZDL7OOdPcs7jBN+YAFXmQqFwfGxs7Ln58+f31gqy2vjw8PCN4+PjHxPRfbXmziXw669AuTXUVyEIglcYYx+apjmmI8TzvKsYY+uJaIeUMlVn8I1VoBJo5VwPAP1Syr3JZPKIeu81DKM/LKa/v98AgEXFYnEFY2wtEanfF7076yQgZNNYBWYgG0fEbrVilW3U1eItANASM8Ba5mcxl8udQ8RralleiePqJKuu16WUEhvow/9UmxJwQEq5+n8qYP+/fKfZTQoB5jAAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/1.7fc71b09.png\";","module.exports = __webpack_public_path__ + \"static/media/2.3f0f421b.png\";","module.exports = __webpack_public_path__ + \"static/media/3.8fb58e7d.png\";","module.exports = __webpack_public_path__ + \"static/media/4.f4a8bdbb.png\";","module.exports = __webpack_public_path__ + \"static/media/5.1db7af32.png\";","module.exports = __webpack_public_path__ + \"static/media/7.c663af8c.png\";","module.exports = __webpack_public_path__ + \"static/media/8.b820eef8.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/dbg.a9459882.jpg\";","module.exports = __webpack_public_path__ + \"static/media/test2.bccf86b7.png\";","import 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\nimport 'proxy-polyfill';\nimport * as React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport './index.css';\nimport App from './App';\n\nReactDOM.render(<App />, document.getElementById('root'));\n"],"sourceRoot":""}