├── .editorconfig ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── enhancement_request.md │ └── feature_request.md └── workflows │ ├── cd-beta.yaml │ ├── cd-dev.yaml │ ├── cd-stable.yaml │ ├── cd-stage.yaml │ └── ci.yaml ├── .gitignore ├── .husky └── pre-commit ├── .nvmrc ├── Dockerfile ├── LICENSE ├── README.md ├── app.yaml ├── ci └── scripts │ ├── pull_ci_screenshots.sh │ ├── pull_ci_secrets.sh │ ├── update_etc_hosts.sh │ └── upload_debug_screenshots_to_gcp.sh ├── cypress.config.js ├── cypress ├── .gitignore ├── README.md ├── e2e │ ├── blocks │ │ ├── pages │ │ │ ├── AllBlocksPage.js │ │ │ └── BlockPage.js │ │ └── tests │ │ │ ├── blocks.spec.js │ │ │ └── starter-blocks.spec.js │ ├── code │ │ ├── actions.spec.js │ │ └── all-files-page.spec.js │ ├── content │ │ ├── actions.spec.js │ │ ├── analyticsDashboard.spec.js │ │ ├── comments.js │ │ ├── content.spec.js │ │ ├── failures.spec.js │ │ ├── favicon.spec.js │ │ ├── headTags.spec.js │ │ ├── item-list-table.spec.js │ │ ├── list.spec.js │ │ ├── meta.spec.js │ │ ├── multi-lang.spec.js │ │ ├── navigation.spec.js │ │ ├── pages │ │ │ └── ContentItemPage.js │ │ ├── redirects.spec.js │ │ ├── singlePageAnalytics.spec.js │ │ └── workflows.spec.js │ ├── home │ │ └── mature.spec.js │ ├── media │ │ ├── contentmodal.spec.js │ │ ├── files.spec.js │ │ ├── folders.spec.js │ │ └── uploads.spec.js │ ├── releases │ │ ├── members.spec.js │ │ └── release.spec.js │ ├── reports │ │ └── activity-log │ │ │ └── activity-log.spec.js │ ├── schema │ │ ├── activity-log.spec.js │ │ ├── field.spec.js │ │ ├── models.spec.js │ │ └── pages │ │ │ └── SchemaPage.js │ ├── search │ │ ├── advanced-search.spec.js │ │ ├── search-bar.spec.js │ │ └── search-page.spec.js │ ├── seo │ │ └── redirects │ │ │ └── redirects.spec.js │ ├── settings │ │ ├── actions.spec.js │ │ ├── fonts.spec.js │ │ ├── headtags.spec.js │ │ ├── instance.spec.js │ │ ├── tabs.spec.js │ │ └── workflows.spec.js │ └── shell │ │ └── instance-menu.spec.js ├── fixtures │ └── example.json ├── index.d.ts ├── jsconfig.json ├── plugins │ └── index.js └── support │ ├── api.js │ ├── commands.js │ └── e2e.js ├── etc ├── nginx.conf ├── release.js └── ssl │ ├── README.md │ ├── _.manager.dev.zesty.io.crt │ ├── _.manager.dev.zesty.io.csr │ ├── _.manager.dev.zesty.io.key │ ├── myCA.key │ ├── myCA.pem │ ├── myCA.srl │ └── zesty.io.ext ├── index.d.ts ├── package-lock.json ├── package.json ├── public ├── icons │ └── material-rounded │ │ └── icons.js ├── images │ ├── FFFFFF-0.png │ ├── addFieldsImage.png │ ├── all-models-empty-state-image.png │ ├── allBlocksEmpty.png │ ├── blockPlaceholder.png │ ├── block_contact_us_form.png │ ├── block_feature_side_by_side_image.png │ ├── block_hero_image_below.png │ ├── block_hero_side_by_side_image.png │ ├── block_single_testimonial.png │ ├── blocksOnboarding1.png │ ├── blocksOnboarding2.png │ ├── blocksOnboarding3.png │ ├── bynder-logo.svg │ ├── bynder-preview.png │ ├── contentAnalytics.svg │ ├── contentAnalyticsDashboard.svg │ ├── cssIcon.svg │ ├── csvImg.png │ ├── defaultImg.png │ ├── discordIcon.svg │ ├── emptyItemsList.png │ ├── excelImg.png │ ├── fields-loading.png │ ├── fileBroken.jpg │ ├── flags │ │ ├── ad.svg │ │ ├── ae.svg │ │ ├── af.svg │ │ ├── ag.svg │ │ ├── ai.svg │ │ ├── al.svg │ │ ├── am.svg │ │ ├── ao.svg │ │ ├── aq.svg │ │ ├── ar.svg │ │ ├── arab.svg │ │ ├── as.svg │ │ ├── at.svg │ │ ├── au.svg │ │ ├── aw.svg │ │ ├── ax.svg │ │ ├── az.svg │ │ ├── ba.svg │ │ ├── bb.svg │ │ ├── bd.svg │ │ ├── be.svg │ │ ├── bf.svg │ │ ├── bg.svg │ │ ├── bh.svg │ │ ├── bi.svg │ │ ├── bj.svg │ │ ├── bl.svg │ │ ├── bm.svg │ │ ├── bn.svg │ │ ├── bo.svg │ │ ├── bq.svg │ │ ├── br.svg │ │ ├── bs.svg │ │ ├── bt.svg │ │ ├── bv.svg │ │ ├── bw.svg │ │ ├── by.svg │ │ ├── bz.svg │ │ ├── ca.svg │ │ ├── cc.svg │ │ ├── cd.svg │ │ ├── cefta.svg │ │ ├── cf.svg │ │ ├── cg.svg │ │ ├── ch.svg │ │ ├── ci.svg │ │ ├── ck.svg │ │ ├── cl.svg │ │ ├── cm.svg │ │ ├── cn.svg │ │ ├── co.svg │ │ ├── cp.svg │ │ ├── cr.svg │ │ ├── cu.svg │ │ ├── cv.svg │ │ ├── cw.svg │ │ ├── cx.svg │ │ ├── cy.svg │ │ ├── cz.svg │ │ ├── de.svg │ │ ├── dg.svg │ │ ├── dj.svg │ │ ├── dk.svg │ │ ├── dm.svg │ │ ├── do.svg │ │ ├── dz.svg │ │ ├── eac.svg │ │ ├── ec.svg │ │ ├── ee.svg │ │ ├── eg.svg │ │ ├── eh.svg │ │ ├── er.svg │ │ ├── es-ct.svg │ │ ├── es-ga.svg │ │ ├── es-pv.svg │ │ ├── es.svg │ │ ├── et.svg │ │ ├── eu.svg │ │ ├── fi.svg │ │ ├── fj.svg │ │ ├── fk.svg │ │ ├── fm.svg │ │ ├── fo.svg │ │ ├── fr.svg │ │ ├── ga.svg │ │ ├── gb-eng.svg │ │ ├── gb-nir.svg │ │ ├── gb-sct.svg │ │ ├── gb-wls.svg │ │ ├── gb.svg │ │ ├── gd.svg │ │ ├── ge.svg │ │ ├── gf.svg │ │ ├── gg.svg │ │ ├── gh.svg │ │ ├── gi.svg │ │ ├── gl.svg │ │ ├── gm.svg │ │ ├── gn.svg │ │ ├── gp.svg │ │ ├── gq.svg │ │ ├── gr.svg │ │ ├── gs.svg │ │ ├── gt.svg │ │ ├── gu.svg │ │ ├── gw.svg │ │ ├── gy.svg │ │ ├── hk.svg │ │ ├── hm.svg │ │ ├── hn.svg │ │ ├── hr.svg │ │ ├── ht.svg │ │ ├── hu.svg │ │ ├── ic.svg │ │ ├── id.svg │ │ ├── ie.svg │ │ ├── il.svg │ │ ├── im.svg │ │ ├── in.svg │ │ ├── io.svg │ │ ├── iq.svg │ │ ├── ir.svg │ │ ├── is.svg │ │ ├── it.svg │ │ ├── je.svg │ │ ├── jm.svg │ │ ├── jo.svg │ │ ├── jp.svg │ │ ├── ke.svg │ │ ├── kg.svg │ │ ├── kh.svg │ │ ├── ki.svg │ │ ├── km.svg │ │ ├── kn.svg │ │ ├── kp.svg │ │ ├── kr.svg │ │ ├── kw.svg │ │ ├── ky.svg │ │ ├── kz.svg │ │ ├── la.svg │ │ ├── lb.svg │ │ ├── lc.svg │ │ ├── li.svg │ │ ├── lk.svg │ │ ├── lr.svg │ │ ├── ls.svg │ │ ├── lt.svg │ │ ├── lu.svg │ │ ├── lv.svg │ │ ├── ly.svg │ │ ├── ma.svg │ │ ├── mc.svg │ │ ├── md.svg │ │ ├── me.svg │ │ ├── mf.svg │ │ ├── mg.svg │ │ ├── mh.svg │ │ ├── mk.svg │ │ ├── ml.svg │ │ ├── mm.svg │ │ ├── mn.svg │ │ ├── mo.svg │ │ ├── mp.svg │ │ ├── mq.svg │ │ ├── mr.svg │ │ ├── ms.svg │ │ ├── mt.svg │ │ ├── mu.svg │ │ ├── mv.svg │ │ ├── mw.svg │ │ ├── mx.svg │ │ ├── my.svg │ │ ├── mz.svg │ │ ├── na.svg │ │ ├── nc.svg │ │ ├── ne.svg │ │ ├── nf.svg │ │ ├── ng.svg │ │ ├── ni.svg │ │ ├── nl.svg │ │ ├── no.svg │ │ ├── np.svg │ │ ├── nr.svg │ │ ├── nu.svg │ │ ├── nz.svg │ │ ├── om.svg │ │ ├── pa.svg │ │ ├── pc.svg │ │ ├── pe.svg │ │ ├── pf.svg │ │ ├── pg.svg │ │ ├── ph.svg │ │ ├── pk.svg │ │ ├── pl.svg │ │ ├── pm.svg │ │ ├── pn.svg │ │ ├── pr.svg │ │ ├── ps.svg │ │ ├── pt.svg │ │ ├── pw.svg │ │ ├── py.svg │ │ ├── qa.svg │ │ ├── re.svg │ │ ├── ro.svg │ │ ├── rs.svg │ │ ├── ru.svg │ │ ├── rw.svg │ │ ├── sa.svg │ │ ├── sb.svg │ │ ├── sc.svg │ │ ├── sd.svg │ │ ├── se.svg │ │ ├── sg.svg │ │ ├── sh-ac.svg │ │ ├── sh-hl.svg │ │ ├── sh-ta.svg │ │ ├── sh.svg │ │ ├── si.svg │ │ ├── sj.svg │ │ ├── sk.svg │ │ ├── sl.svg │ │ ├── sm.svg │ │ ├── sn.svg │ │ ├── so.svg │ │ ├── sr.svg │ │ ├── ss.svg │ │ ├── st.svg │ │ ├── sv.svg │ │ ├── sx.svg │ │ ├── sy.svg │ │ ├── sz.svg │ │ ├── tc.svg │ │ ├── td.svg │ │ ├── tf.svg │ │ ├── tg.svg │ │ ├── th.svg │ │ ├── tj.svg │ │ ├── tk.svg │ │ ├── tl.svg │ │ ├── tm.svg │ │ ├── tn.svg │ │ ├── to.svg │ │ ├── tr.svg │ │ ├── tt.svg │ │ ├── tv.svg │ │ ├── tw.svg │ │ ├── tz.svg │ │ ├── ua.svg │ │ ├── ug.svg │ │ ├── um.svg │ │ ├── un.svg │ │ ├── us.svg │ │ ├── uy.svg │ │ ├── uz.svg │ │ ├── va.svg │ │ ├── vc.svg │ │ ├── ve.svg │ │ ├── vg.svg │ │ ├── vi.svg │ │ ├── vn.svg │ │ ├── vu.svg │ │ ├── wf.svg │ │ ├── ws.svg │ │ ├── xk.svg │ │ ├── xx.svg │ │ ├── ye.svg │ │ ├── yt.svg │ │ ├── za.svg │ │ ├── zm.svg │ │ └── zw.svg │ ├── fullZestyLogo.svg │ ├── githubIcon.svg │ ├── githubLogoSmall.svg │ ├── googleAnalyticsIcon.svg │ ├── googleAnalyticsLogo.png │ ├── googleChromeLogo.png │ ├── googleIcon.svg │ ├── graphQLIcon.svg │ ├── growInstance.svg │ ├── guide1.png │ ├── guide2.png │ ├── guide3.png │ ├── headlessLogos.jpg │ ├── htmlIcon.svg │ ├── hybridLogos.jpg │ ├── ipad.png │ ├── iphone-14-camera.png │ ├── iphone-14-pro-camera.png │ ├── iphone-14-pro.png │ ├── iphone-14.png │ ├── jsIcon.svg │ ├── lineChartSkeleton.svg │ ├── lineChartSkeleton2.svg │ ├── lineChartSkeleton3.svg │ ├── microsoftIcon.svg │ ├── microsoftLogo.png │ ├── mpImg.png │ ├── noSearchResults.jpg │ ├── noSearchResults.svg │ ├── nodejsLogo.png │ ├── notFound.jpg │ ├── notFound.png │ ├── notFoundTransparent.png │ ├── npmLogo.png │ ├── numberImg.png │ ├── onboardingIcon.svg │ ├── openai-badge.svg │ ├── parsleyIcon.svg │ ├── pdfImg.png │ ├── pixel-7-camera.png │ ├── pixel-7.png │ ├── postmanIcon.svg │ ├── pptImg.png │ ├── restricted-image.svg │ ├── restricted.png │ ├── sb__avatar__1.png │ ├── sb__company__logo__1.png │ ├── sb__hero__image__1.png │ ├── sb__hero__image__2.png │ ├── sb__person__image__1.png │ ├── slackIcon.svg │ ├── starCheckIcon.svg │ ├── uploadFiles.svg │ ├── winnerPanel.svg │ ├── wordImg.png │ ├── youtubeIcon.svg │ ├── zestyLogo.svg │ ├── zestyLogoOnly.svg │ ├── zestyLogoOnlyGrey.svg │ ├── zestyLogoOnlyPulsate.svg │ ├── zestyRocket.svg │ └── zipImg.png ├── initial-loading.js ├── manifest.webmanifest ├── offline.html ├── plugins │ └── help │ │ ├── index.js │ │ ├── js │ │ └── i18n │ │ │ └── keynav │ │ │ ├── ar.js │ │ │ ├── bg_BG.js │ │ │ ├── ca.js │ │ │ ├── cs.js │ │ │ ├── da.js │ │ │ ├── de.js │ │ │ ├── el.js │ │ │ ├── en.js │ │ │ ├── es.js │ │ │ ├── eu.js │ │ │ ├── fa.js │ │ │ ├── fi.js │ │ │ ├── fr_FR.js │ │ │ ├── he_IL.js │ │ │ ├── hi.js │ │ │ ├── hr.js │ │ │ ├── hu_HU.js │ │ │ ├── id.js │ │ │ ├── it.js │ │ │ ├── ja.js │ │ │ ├── kk.js │ │ │ ├── ko_KR.js │ │ │ ├── ms.js │ │ │ ├── nb_NO.js │ │ │ ├── nl.js │ │ │ ├── pl.js │ │ │ ├── pt_BR.js │ │ │ ├── pt_PT.js │ │ │ ├── ro.js │ │ │ ├── ru.js │ │ │ ├── sk.js │ │ │ ├── sl_SI.js │ │ │ ├── sv_SE.js │ │ │ ├── th_TH.js │ │ │ ├── tr.js │ │ │ ├── uk.js │ │ │ ├── vi.js │ │ │ ├── zh_CN.js │ │ │ └── zh_TW.js │ │ ├── plugin.js │ │ └── plugin.min.js ├── styles │ └── initial-loading-screen.css ├── sw.js ├── ui │ └── images │ │ ├── clippy.svg │ │ └── icons │ │ └── file_types │ │ └── 48px │ │ ├── _blank.png │ │ ├── _page.png │ │ ├── aac.png │ │ ├── ai.png │ │ ├── aiff.png │ │ ├── avi.png │ │ ├── bmp.png │ │ ├── c.png │ │ ├── cpp.png │ │ ├── css.png │ │ ├── dat.png │ │ ├── dmg.png │ │ ├── doc.png │ │ ├── dotx.png │ │ ├── dwg.png │ │ ├── dxf.png │ │ ├── eps.png │ │ ├── exe.png │ │ ├── flv.png │ │ ├── gif.png │ │ ├── h.png │ │ ├── hpp.png │ │ ├── html.png │ │ ├── ics.png │ │ ├── iso.png │ │ ├── java.png │ │ ├── jpg.png │ │ ├── js.png │ │ ├── key.png │ │ ├── less.png │ │ ├── mid.png │ │ ├── mp3.png │ │ ├── mp4.png │ │ ├── mpg.png │ │ ├── odf.png │ │ ├── ods.png │ │ ├── odt.png │ │ ├── otp.png │ │ ├── ots.png │ │ ├── ott.png │ │ ├── pdf.png │ │ ├── php.png │ │ ├── png.png │ │ ├── ppt.png │ │ ├── psd.png │ │ ├── py.png │ │ ├── qt.png │ │ ├── rar.png │ │ ├── rb.png │ │ ├── rtf.png │ │ ├── sass.png │ │ ├── scss.png │ │ ├── sql.png │ │ ├── tga.png │ │ ├── tgz.png │ │ ├── tiff.png │ │ ├── txt.png │ │ ├── wav.png │ │ ├── xls.png │ │ ├── xlsx.png │ │ ├── xml.png │ │ ├── yml.png │ │ └── zip.png └── vendors │ └── tinymce │ ├── content.css │ ├── plugins │ ├── advcode │ │ ├── changelog.txt │ │ ├── codemirror.min.css │ │ ├── codemirror.min.js │ │ ├── license.txt │ │ ├── plugin.js │ │ ├── plugin.min.js │ │ └── version.txt │ ├── formatpainter │ │ ├── changelog.txt │ │ ├── plugin.js │ │ ├── plugin.min.js │ │ └── version.txt │ ├── mediaembed │ │ ├── changelog.txt │ │ ├── content.min.css │ │ ├── license.txt │ │ ├── plugin.js │ │ ├── plugin.min.js │ │ └── version.txt │ ├── pageembed │ │ ├── changelog.txt │ │ ├── plugin.js │ │ ├── plugin.min.js │ │ └── version.txt │ └── powerpaste │ │ ├── changelog.txt │ │ ├── js │ │ └── wordimport.js │ │ ├── langs │ │ ├── ar.js │ │ ├── ca.js │ │ ├── cs.js │ │ ├── da.js │ │ ├── de.js │ │ ├── el.js │ │ ├── es.js │ │ ├── fa.js │ │ ├── fi.js │ │ ├── fr_FR.js │ │ ├── he_IL.js │ │ ├── hr.js │ │ ├── hu_HU.js │ │ ├── it.js │ │ ├── ja.js │ │ ├── kk.js │ │ ├── ko_KR.js │ │ ├── nb_NO.js │ │ ├── nl.js │ │ ├── pl.js │ │ ├── pt_BR.js │ │ ├── pt_PT.js │ │ ├── ro.js │ │ ├── ru.js │ │ ├── sk.js │ │ ├── sl_SI.js │ │ ├── sv_SE.js │ │ ├── th_TH.js │ │ ├── tr.js │ │ ├── uk.js │ │ ├── zh_CN.js │ │ └── zh_TW.js │ │ ├── license.txt │ │ ├── plugin.js │ │ ├── plugin.min.js │ │ └── version.txt │ └── skins │ └── ui │ ├── Zesty │ ├── content.css │ ├── content.inline.css │ ├── content.inline.min.css │ ├── content.min.css │ ├── content.mobile.css │ ├── content.mobile.min.css │ ├── fonts │ │ └── tinymce-mobile.woff │ ├── skin.css │ ├── skin.min.css │ ├── skin.mobile.css │ └── skin.mobile.min.css │ └── oxide │ ├── content.min.css │ └── skin.min.css ├── src ├── apps │ ├── active-preview │ │ ├── Preview.js │ │ ├── Preview.less │ │ ├── api.js │ │ ├── components │ │ │ ├── Frame │ │ │ │ ├── Frame.js │ │ │ │ ├── Frame.less │ │ │ │ └── index.js │ │ │ ├── JSONPreview │ │ │ │ ├── JSONPreview.js │ │ │ │ ├── JSONPreview.less │ │ │ │ └── index.js │ │ │ └── Meta │ │ │ │ ├── Meta.js │ │ │ │ ├── Meta.less │ │ │ │ └── index.js │ │ ├── index.html │ │ └── index.js │ ├── blocks │ │ ├── components │ │ │ ├── BlockCard.tsx │ │ │ ├── CreateVariantDialog.tsx │ │ │ ├── OnboardingDialog.tsx │ │ │ └── Sidebar.tsx │ │ ├── index.tsx │ │ └── views │ │ │ ├── AllBlocks.tsx │ │ │ ├── BlockItem.tsx │ │ │ └── BlockModel.tsx │ ├── code-editor │ │ └── src │ │ │ ├── app │ │ │ ├── components │ │ │ │ ├── BottomDrawer │ │ │ │ │ ├── AuditTrail.tsx │ │ │ │ │ ├── FileCard.tsx │ │ │ │ │ ├── FileStatus.tsx │ │ │ │ │ ├── LinkedContent.tsx │ │ │ │ │ ├── LinkedSchema.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── CreateFile.tsx │ │ │ │ ├── Differ │ │ │ │ │ ├── Differ.js │ │ │ │ │ └── index.js │ │ │ │ ├── Editor │ │ │ │ │ ├── Editor.js │ │ │ │ │ ├── components │ │ │ │ │ │ └── MemoizedEditor │ │ │ │ │ │ │ ├── MemoizedEditor.js │ │ │ │ │ │ │ ├── MonacoSetup.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── parsley-theme.js │ │ │ │ │ │ │ └── parsley-tokens.js │ │ │ │ │ └── index.js │ │ │ │ ├── FileActions │ │ │ │ │ ├── FileActions.js │ │ │ │ │ ├── components │ │ │ │ │ │ ├── Delete │ │ │ │ │ │ │ ├── Delete.js │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── DifferActions │ │ │ │ │ │ │ ├── DifferActions.js │ │ │ │ │ │ │ ├── DifferActions.less │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── EditorActions │ │ │ │ │ │ │ ├── EditorActions.js │ │ │ │ │ │ │ ├── EditorActions.less │ │ │ │ │ │ │ ├── Publish │ │ │ │ │ │ │ ├── Publish.js │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── Save │ │ │ │ │ │ │ ├── Save.js │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── Sync │ │ │ │ │ │ │ ├── Sync.js │ │ │ │ │ │ │ ├── Sync.less │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ └── index.js │ │ │ │ │ └── index.js │ │ │ │ ├── FileDrawer │ │ │ │ │ ├── FileDrawer.js │ │ │ │ │ ├── FileDrawer.less │ │ │ │ │ ├── components │ │ │ │ │ │ ├── AuditTrail │ │ │ │ │ │ │ ├── AuditTrail.js │ │ │ │ │ │ │ ├── AuditTrail.less │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── FileStatus │ │ │ │ │ │ │ ├── FileStatus.js │ │ │ │ │ │ │ ├── FileStatus.less │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── LinkedContent │ │ │ │ │ │ │ ├── LinkedContent.js │ │ │ │ │ │ │ ├── LinkedContent.less │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── LinkedSchema │ │ │ │ │ │ │ ├── LinkedSchema.js │ │ │ │ │ │ │ ├── LinkedSchema.less │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── PublishAll │ │ │ │ │ │ │ ├── PublishAll.js │ │ │ │ │ │ │ ├── PublishAll.less │ │ │ │ │ │ │ └── index.js │ │ │ │ │ └── index.js │ │ │ │ ├── FileList │ │ │ │ │ ├── FileList.js │ │ │ │ │ ├── FileList.less │ │ │ │ │ ├── components │ │ │ │ │ │ ├── CreateFile │ │ │ │ │ │ │ ├── CreateFile.js │ │ │ │ │ │ │ ├── CreateFile.less │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── FilterFiles │ │ │ │ │ │ │ ├── FilterFiles.js │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── OrderFiles │ │ │ │ │ │ │ ├── OrderFiles.js │ │ │ │ │ │ │ ├── OrderFiles.less │ │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ │ ├── Draggable │ │ │ │ │ │ │ │ │ ├── Draggable.js │ │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ │ └── Dropzone │ │ │ │ │ │ │ │ │ ├── Dropzone.js │ │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── PublishAll │ │ │ │ │ │ │ ├── PublishAll.js │ │ │ │ │ │ │ ├── PublishAll.less │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── SelectBranch │ │ │ │ │ │ │ ├── SelectBranch.js │ │ │ │ │ │ │ ├── SelectBranch.less │ │ │ │ │ │ │ └── index.js │ │ │ │ │ └── index.js │ │ │ │ ├── FileTabs │ │ │ │ │ ├── FileTabs.js │ │ │ │ │ └── FileTabs.less │ │ │ │ ├── LocalDirtyCodeModal │ │ │ │ │ ├── LocalDirtyCodeModal.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── LockedView │ │ │ │ │ ├── LockedView.js │ │ │ │ │ ├── LockedView.less │ │ │ │ │ └── index.js │ │ │ │ ├── RecentFiles │ │ │ │ │ ├── DevResources.tsx │ │ │ │ │ ├── FileList.tsx │ │ │ │ │ ├── TopBar.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── SideBar │ │ │ │ │ ├── FileNav.tsx │ │ │ │ │ ├── OrderFiles.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── TopBar │ │ │ │ │ ├── ActionButton.tsx │ │ │ │ │ ├── DeleteDialog.tsx │ │ │ │ │ ├── DifferActions.tsx │ │ │ │ │ ├── EditorActions.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── Workspace │ │ │ │ │ ├── components │ │ │ │ │ │ ├── GettingStarted │ │ │ │ │ │ │ ├── GettingStarted.js │ │ │ │ │ │ │ ├── GettingStarted.less │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── NotFound │ │ │ │ │ │ │ ├── NotFound.js │ │ │ │ │ │ │ ├── NotFound.less │ │ │ │ │ │ │ └── index.js │ │ │ │ │ └── index.js │ │ │ │ └── constants.ts │ │ │ └── views │ │ │ │ └── CodeEditor │ │ │ │ ├── CodeEditor.js │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ └── store │ │ │ ├── auditTrail.js │ │ │ ├── files.js │ │ │ ├── headers.js │ │ │ ├── navCode.js │ │ │ └── status.js │ ├── content-editor │ │ └── src │ │ │ ├── app │ │ │ ├── ContentEditor.js │ │ │ ├── ContentEditor.less │ │ │ ├── components │ │ │ │ ├── APIEndpoints.tsx │ │ │ │ ├── ContentBreadcrumbs.tsx │ │ │ │ ├── ContentNav │ │ │ │ │ ├── NavError.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── DragScroll.js │ │ │ │ ├── Editor │ │ │ │ │ ├── Editor.js │ │ │ │ │ ├── Editor.less │ │ │ │ │ ├── Field │ │ │ │ │ │ ├── Field.less │ │ │ │ │ │ ├── Field.tsx │ │ │ │ │ │ ├── FieldShell.tsx │ │ │ │ │ │ ├── FieldTooltipBody.tsx │ │ │ │ │ │ ├── InternalLink.tsx │ │ │ │ │ │ ├── LinkOption.tsx │ │ │ │ │ │ ├── ResolvedOption.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── FieldError.tsx │ │ │ │ │ ├── FieldsLoader.tsx │ │ │ │ │ ├── PreviewMode │ │ │ │ │ │ ├── PreviewMode.js │ │ │ │ │ │ ├── PreviewMode.less │ │ │ │ │ │ └── index.js │ │ │ │ │ └── index.js │ │ │ │ ├── FieldTypeMedia.tsx │ │ │ │ ├── HideContentItemDialog.tsx │ │ │ │ ├── LockedItem │ │ │ │ │ └── index.tsx │ │ │ │ ├── NoFields.tsx │ │ │ │ ├── PendingEditsModal │ │ │ │ │ ├── PendingEditsModal.less │ │ │ │ │ ├── PendingEditsModal.tsx │ │ │ │ │ └── index.js │ │ │ │ └── ReorderNav │ │ │ │ │ ├── DragComponents │ │ │ │ │ ├── DragList.js │ │ │ │ │ ├── DraggableItem.js │ │ │ │ │ └── styles.less │ │ │ │ │ ├── ReorderNav.js │ │ │ │ │ ├── ReorderNav.less │ │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ └── views │ │ │ │ ├── Analytics │ │ │ │ ├── components │ │ │ │ │ ├── AnalyticsDateFilter.tsx │ │ │ │ │ ├── AnalyticsDialog.tsx │ │ │ │ │ ├── AnalyticsPropertySelector.tsx │ │ │ │ │ ├── AuthView.tsx │ │ │ │ │ ├── CompareDialog.tsx │ │ │ │ │ ├── Metric.tsx │ │ │ │ │ └── PropertiesDialog.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── utils.ts │ │ │ │ └── views │ │ │ │ │ ├── AnalyticsDashboard │ │ │ │ │ ├── ByDayLineChart.tsx │ │ │ │ │ ├── ItemsTable │ │ │ │ │ │ ├── GainersLosersWrapper.tsx │ │ │ │ │ │ ├── ItemsTable.tsx │ │ │ │ │ │ ├── LatestPublishesWrapper.tsx │ │ │ │ │ │ ├── MostPopularWrapper.tsx │ │ │ │ │ │ ├── NameCell.tsx │ │ │ │ │ │ ├── RecentEditsWrapper.tsx │ │ │ │ │ │ ├── StatsCell.tsx │ │ │ │ │ │ └── ViewsCell.tsx │ │ │ │ │ ├── UsersDoughutChart.tsx │ │ │ │ │ └── index.tsx │ │ │ │ │ └── SinglePageAnalytics │ │ │ │ │ ├── ByDayLineChart.tsx │ │ │ │ │ ├── UsersBarChart.tsx │ │ │ │ │ ├── UsersDoughnutChart.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── CSVImport │ │ │ │ ├── CSVImport.less │ │ │ │ ├── CSVImportBody.js │ │ │ │ ├── Columns │ │ │ │ │ ├── Columns.js │ │ │ │ │ ├── Columns.less │ │ │ │ │ └── index.js │ │ │ │ ├── CsvSettings │ │ │ │ │ ├── CsvSettings.js │ │ │ │ │ ├── CsvSettings.less │ │ │ │ │ └── index.js │ │ │ │ └── index.tsx │ │ │ │ ├── Dashboard │ │ │ │ ├── Dashboard.js │ │ │ │ ├── Dashboard.less │ │ │ │ ├── components │ │ │ │ │ ├── AccountInfo │ │ │ │ │ │ ├── AccountInfo.js │ │ │ │ │ │ ├── AccountInfo.less │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── ChartDashboard │ │ │ │ │ │ ├── ChartDashboard.js │ │ │ │ │ │ ├── ChartDashboard.less │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── InstanceActivity │ │ │ │ │ │ ├── InstanceActivity.js │ │ │ │ │ │ ├── InstanceActivity.less │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── QuickJumps │ │ │ │ │ │ ├── QuickJumps.js │ │ │ │ │ │ ├── QuickJumps.less │ │ │ │ │ │ └── index.js │ │ │ │ │ └── UserLatest │ │ │ │ │ │ ├── UserLatest.js │ │ │ │ │ │ ├── UserLatest.less │ │ │ │ │ │ └── index.js │ │ │ │ └── index.js │ │ │ │ ├── ItemCreate │ │ │ │ ├── Header.tsx │ │ │ │ ├── ItemCreate.less │ │ │ │ ├── ItemCreate.tsx │ │ │ │ └── index.js │ │ │ │ ├── ItemEdit │ │ │ │ ├── Content │ │ │ │ │ ├── Actions │ │ │ │ │ │ ├── Actions.js │ │ │ │ │ │ ├── Actions.less │ │ │ │ │ │ ├── Widgets │ │ │ │ │ │ │ ├── ContentInfo │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── ContentLinks │ │ │ │ │ │ │ │ ├── ContentLinks.js │ │ │ │ │ │ │ │ ├── ContentLinks.less │ │ │ │ │ │ │ │ ├── InstantUrl │ │ │ │ │ │ │ │ │ ├── InstantUrl.js │ │ │ │ │ │ │ │ │ ├── InstantUrl.less │ │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── Modal │ │ │ │ │ │ │ │ ├── Modal.js │ │ │ │ │ │ │ │ ├── Modal.less │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── Release │ │ │ │ │ │ │ │ ├── Release.js │ │ │ │ │ │ │ │ ├── Release.less │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── SharedWidget.less │ │ │ │ │ │ │ ├── Unpublish │ │ │ │ │ │ │ │ ├── Unpublish.js │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── Widget │ │ │ │ │ │ │ │ ├── Widget.less │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── WidgetDeleteItem │ │ │ │ │ │ │ │ ├── WidgetDeleteItem.js │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── WidgetDraftHistory │ │ │ │ │ │ │ │ ├── WidgetDraftHistory.js │ │ │ │ │ │ │ │ ├── WidgetDraftHistory.less │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── WidgetListed │ │ │ │ │ │ │ │ ├── WidgetListed.js │ │ │ │ │ │ │ │ ├── WidgetListed.less │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── WidgetPublishHistory │ │ │ │ │ │ │ │ ├── WidgetPublishHistory.js │ │ │ │ │ │ │ │ ├── WidgetPublishHistory.less │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── WidgetPurgeItem │ │ │ │ │ │ │ │ ├── WidgetPurgeItem.js │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── WidgetQuickShare │ │ │ │ │ │ │ │ ├── WidgetQuickShare.js │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ └── WorkflowRequest │ │ │ │ │ │ │ │ ├── WorkflowRequest.js │ │ │ │ │ │ │ │ ├── WorkflowRequests.less │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Content.js │ │ │ │ │ ├── Content.less │ │ │ │ │ └── index.js │ │ │ │ ├── FreestyleWrapper.tsx │ │ │ │ ├── HeadlessOptions │ │ │ │ │ ├── HeadlessOptions.js │ │ │ │ │ ├── HeadlessOptions.less │ │ │ │ │ └── index.js │ │ │ │ ├── ItemEdit.js │ │ │ │ ├── ItemHead │ │ │ │ │ ├── ItemHead.js │ │ │ │ │ ├── ItemHead.less │ │ │ │ │ └── index.js │ │ │ │ ├── Meta │ │ │ │ │ ├── ContentInsights │ │ │ │ │ │ ├── MatchedWords.tsx │ │ │ │ │ │ ├── MostMentionedWords.tsx │ │ │ │ │ │ ├── WordCount.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── SocialMediaPreview │ │ │ │ │ │ ├── FacebookPreview.tsx │ │ │ │ │ │ ├── GooglePreview.tsx │ │ │ │ │ │ ├── LinkedInPreview.tsx │ │ │ │ │ │ ├── TwitterPreview.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── useImageURL.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── settings │ │ │ │ │ │ ├── CanonicalTag.js │ │ │ │ │ │ ├── CanonicalTag.less │ │ │ │ │ │ ├── ItemParent.tsx │ │ │ │ │ │ ├── ItemRoute.tsx │ │ │ │ │ │ ├── MetaDescription.tsx │ │ │ │ │ │ ├── MetaImage.tsx │ │ │ │ │ │ ├── MetaKeywords.tsx │ │ │ │ │ │ ├── MetaLinkText.tsx │ │ │ │ │ │ ├── MetaTitle.tsx │ │ │ │ │ │ ├── OGDescription.tsx │ │ │ │ │ │ ├── OGTitle.tsx │ │ │ │ │ │ ├── SitemapPriority.js │ │ │ │ │ │ ├── SitemapPriority.less │ │ │ │ │ │ ├── TCDescription.tsx │ │ │ │ │ │ ├── TCImage.tsx │ │ │ │ │ │ ├── TCTitle.tsx │ │ │ │ │ │ └── util.ts │ │ │ │ ├── PublishState.tsx │ │ │ │ ├── components │ │ │ │ │ ├── BlockTabs.tsx │ │ │ │ │ ├── Header │ │ │ │ │ │ ├── DuoModeToggle │ │ │ │ │ │ │ ├── DuoModeToggle.js │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── Header.js │ │ │ │ │ │ ├── Header.less │ │ │ │ │ │ ├── ItemNavigation │ │ │ │ │ │ │ ├── ItemNavigation.js │ │ │ │ │ │ │ ├── ItemNavigation.less │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── LanguageSelector │ │ │ │ │ │ │ ├── LanguageSelector.js │ │ │ │ │ │ │ ├── LanguageSelector.less │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── LiveUrl │ │ │ │ │ │ │ ├── LiveUrl.js │ │ │ │ │ │ │ ├── LiveUrl.less │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── PreviewUrl │ │ │ │ │ │ │ ├── PreviewUrl.js │ │ │ │ │ │ │ ├── PreviewUrl.less │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── index.js │ │ │ │ │ └── ItemEditHeader │ │ │ │ │ │ ├── DeleteItemDialog.tsx │ │ │ │ │ │ ├── DuoModeToggle.tsx │ │ │ │ │ │ ├── DuplicateItemDialog.tsx │ │ │ │ │ │ ├── ItemEditHeaderActions.tsx │ │ │ │ │ │ ├── LanguageSelector.tsx │ │ │ │ │ │ ├── MoreMenu.tsx │ │ │ │ │ │ ├── PreviewMenu.tsx │ │ │ │ │ │ ├── PublishStatus.tsx │ │ │ │ │ │ ├── RenameItemDialog.tsx │ │ │ │ │ │ ├── UnpublishDialog.tsx │ │ │ │ │ │ ├── UnpublishedRelatedItem.tsx │ │ │ │ │ │ ├── VersionSelector │ │ │ │ │ │ ├── NoResults.tsx │ │ │ │ │ │ ├── Row.tsx │ │ │ │ │ │ ├── VersionItem.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.js │ │ │ │ ├── ItemList │ │ │ │ ├── ConfirmDeletesDialog.tsx │ │ │ │ ├── ConfirmPublishesDialog.tsx │ │ │ │ ├── DialogContentItem.tsx │ │ │ │ ├── ItemListActions.tsx │ │ │ │ ├── ItemListEmpty.tsx │ │ │ │ ├── ItemListFilters.tsx │ │ │ │ ├── ItemListTable.tsx │ │ │ │ ├── Loader.tsx │ │ │ │ ├── SchedulePublishesDialog.tsx │ │ │ │ ├── SelectedItemsContext.tsx │ │ │ │ ├── StagedChangesContext.tsx │ │ │ │ ├── TableCells │ │ │ │ │ ├── BooleanCell.tsx │ │ │ │ │ ├── DropdownCell.tsx │ │ │ │ │ ├── ImageCell.tsx │ │ │ │ │ ├── OneToManyCell.tsx │ │ │ │ │ ├── SingleRelationshipCell.tsx │ │ │ │ │ ├── SortCell.tsx │ │ │ │ │ ├── UserCell.tsx │ │ │ │ │ └── VersionCell.tsx │ │ │ │ ├── TableSortProvider.tsx │ │ │ │ ├── UpdateListActions.tsx │ │ │ │ └── index.tsx │ │ │ │ ├── LinkCreate │ │ │ │ ├── LinkCreate.js │ │ │ │ ├── LinkCreate.less │ │ │ │ └── index.js │ │ │ │ ├── LinkEdit │ │ │ │ ├── LinkEdit.js │ │ │ │ ├── LinkEdit.less │ │ │ │ └── index.js │ │ │ │ ├── NotFound │ │ │ │ └── index.tsx │ │ │ │ └── Redirects │ │ │ │ ├── DeleteRedirectModal.tsx │ │ │ │ └── index.tsx │ │ │ ├── index.js │ │ │ └── store │ │ │ ├── items.js │ │ │ ├── listFilters.js │ │ │ ├── modal.js │ │ │ ├── navContent.js │ │ │ └── sets.js │ ├── custom-app │ │ └── src │ │ │ ├── app │ │ │ ├── CustomApp.js │ │ │ ├── CustomApp.less │ │ │ └── index.js │ │ │ └── index.js │ ├── home │ │ ├── app │ │ │ ├── components │ │ │ │ ├── CongratulationsDialog.tsx │ │ │ │ ├── EmptyState.tsx │ │ │ │ ├── Header.tsx │ │ │ │ ├── MetricCards.tsx │ │ │ │ ├── ResourceTable.tsx │ │ │ │ └── ResourcesCard.tsx │ │ │ └── index.tsx │ │ └── index.ts │ ├── leads │ │ └── src │ │ │ ├── app │ │ │ ├── components │ │ │ │ ├── LeadExporter │ │ │ │ │ ├── DownloadCSVButton │ │ │ │ │ │ ├── DownloadCSVButton.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── FormGroupSelector │ │ │ │ │ │ ├── FormGroupSelector.js │ │ │ │ │ │ ├── FormGroupSelector.model.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── LeadExporter.js │ │ │ │ │ ├── LeadExporter.less │ │ │ │ │ ├── TableDateFilter │ │ │ │ │ │ ├── TableDateFilter.js │ │ │ │ │ │ ├── TableDateFilter.less │ │ │ │ │ │ ├── TableDateFilter.model.js │ │ │ │ │ │ └── index.js │ │ │ │ │ └── index.js │ │ │ │ └── LeadsTable │ │ │ │ │ ├── LeadsTable.js │ │ │ │ │ ├── LeadsTable.less │ │ │ │ │ └── index.js │ │ │ └── views │ │ │ │ ├── GetStarted │ │ │ │ ├── GetStarted.js │ │ │ │ ├── GetStarted.less │ │ │ │ └── index.js │ │ │ │ └── Leads │ │ │ │ ├── LeadFilter.service.js │ │ │ │ ├── Leads.js │ │ │ │ ├── Leads.less │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ └── store │ │ │ ├── filter.js │ │ │ └── leads.js │ ├── marketplace │ │ └── src │ │ │ ├── app │ │ │ ├── components │ │ │ │ ├── InstallApp.tsx │ │ │ │ └── Sidebar.tsx │ │ │ ├── index.tsx │ │ │ └── view │ │ │ │ ├── CustomApp.js │ │ │ │ └── CustomApp.less │ │ │ └── index.ts │ ├── media │ │ └── src │ │ │ ├── app │ │ │ ├── components │ │ │ │ ├── Controls │ │ │ │ │ ├── Controls.tsx │ │ │ │ │ ├── DateFilter.tsx │ │ │ │ │ ├── FiletypeFilter.tsx │ │ │ │ │ ├── ImageFilterRow.tsx │ │ │ │ │ ├── Sort.tsx │ │ │ │ │ ├── ToggleViews.tsx │ │ │ │ │ ├── VideoFilterRow.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── DateFilterModal.tsx │ │ │ │ ├── DeleteFolderDialog.tsx │ │ │ │ ├── DnDProvider.tsx │ │ │ │ ├── DropArea.tsx │ │ │ │ ├── EmptyState.tsx │ │ │ │ ├── FileModal │ │ │ │ │ ├── DeleteFileModal.tsx │ │ │ │ │ ├── FileModalContent.tsx │ │ │ │ │ ├── FileTypePreview.tsx │ │ │ │ │ ├── MoveFileDialog.tsx │ │ │ │ │ ├── OTFEditor.tsx │ │ │ │ │ ├── RenameFileModal.tsx │ │ │ │ │ ├── ReplaceFileModal.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── Folder │ │ │ │ │ └── index.tsx │ │ │ │ ├── FolderMenu.tsx │ │ │ │ ├── Header.tsx │ │ │ │ ├── InsightsTable.tsx │ │ │ │ ├── MediaBreadcrumbs.tsx │ │ │ │ ├── MediaGrid.tsx │ │ │ │ ├── MediaList.tsx │ │ │ │ ├── NewFolderDialog.tsx │ │ │ │ ├── NoResultsState.tsx │ │ │ │ ├── NotFoundState.tsx │ │ │ │ ├── RenameFolderDialog.tsx │ │ │ │ ├── SearchEmptyState.tsx │ │ │ │ ├── Sidebar │ │ │ │ │ ├── Folders.tsx │ │ │ │ │ ├── Menu.tsx │ │ │ │ │ ├── Searchbox.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── Thumbnail │ │ │ │ │ ├── Loading.less │ │ │ │ │ ├── ThumbnailContent.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── UploadButton.tsx │ │ │ │ ├── UploadModal.tsx │ │ │ │ └── UploadThumbnail.tsx │ │ │ ├── index.tsx │ │ │ ├── utils │ │ │ │ └── fileUtils.ts │ │ │ └── views │ │ │ │ ├── AllMedia.tsx │ │ │ │ ├── BinMedia.tsx │ │ │ │ ├── FolderMedia.tsx │ │ │ │ ├── InsightsMedia.tsx │ │ │ │ ├── Media.tsx │ │ │ │ └── SearchMedia.tsx │ │ │ └── index.js │ ├── release │ │ └── src │ │ │ ├── app │ │ │ ├── ReleaseApp.js │ │ │ ├── ReleaseApp.less │ │ │ ├── index.js │ │ │ └── views │ │ │ │ ├── Activate │ │ │ │ ├── Activate.js │ │ │ │ ├── Activate.less │ │ │ │ └── index.js │ │ │ │ ├── CreateRelease │ │ │ │ ├── CreateRelease.js │ │ │ │ ├── CreateRelease.less │ │ │ │ └── index.js │ │ │ │ ├── ListReleases │ │ │ │ ├── ListReleases.js │ │ │ │ ├── ListReleases.less │ │ │ │ ├── Release.js │ │ │ │ └── index.js │ │ │ │ └── ViewRelease │ │ │ │ ├── ViewRelease.js │ │ │ │ ├── ViewRelease.less │ │ │ │ ├── components │ │ │ │ ├── Completed │ │ │ │ │ ├── Completed.js │ │ │ │ │ ├── Completed.less │ │ │ │ │ └── index.js │ │ │ │ ├── Header │ │ │ │ │ ├── Header.js │ │ │ │ │ ├── Header.less │ │ │ │ │ ├── components │ │ │ │ │ │ ├── DeleteRelease │ │ │ │ │ │ │ ├── DeleteRelease.js │ │ │ │ │ │ │ ├── DeleteRelease.less │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── PublishAll │ │ │ │ │ │ │ ├── PublishAll.js │ │ │ │ │ │ │ ├── PublishAll.less │ │ │ │ │ │ │ └── index.js │ │ │ │ │ └── index.js │ │ │ │ ├── PlanStep │ │ │ │ │ ├── PlanStep.js │ │ │ │ │ ├── PlanStep.less │ │ │ │ │ └── index.js │ │ │ │ └── PlanTable │ │ │ │ │ ├── PlanTable.js │ │ │ │ │ ├── PlanTable.less │ │ │ │ │ └── index.js │ │ │ │ └── index.js │ │ │ └── index.js │ ├── reports │ │ └── src │ │ │ ├── app │ │ │ ├── ReportingApp.js │ │ │ ├── components │ │ │ │ └── ReportingNav.tsx │ │ │ └── views │ │ │ │ ├── ActivityLog │ │ │ │ ├── components │ │ │ │ │ ├── ActionTimelineItem │ │ │ │ │ │ ├── ContentActionTimelineItem.js │ │ │ │ │ │ ├── FileActionTimelineItem.js │ │ │ │ │ │ ├── ModelActionTimelineItem.js │ │ │ │ │ │ ├── SettingsActionTimelineItem.js │ │ │ │ │ │ ├── TimelineItem.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── ActionsByUsers.tsx │ │ │ │ │ ├── ActionsTimeline.tsx │ │ │ │ │ ├── ActivityByResource.js │ │ │ │ │ ├── ApiErrorState.js │ │ │ │ │ ├── DateRangePicker.js │ │ │ │ │ ├── EmptyState.tsx │ │ │ │ │ ├── Filters.tsx │ │ │ │ │ ├── ResourceHeaderTitle.tsx │ │ │ │ │ ├── ResourceList.js │ │ │ │ │ ├── ResourceListItem │ │ │ │ │ │ ├── ContentResourceListItem.js │ │ │ │ │ │ ├── FileResourceListItem.js │ │ │ │ │ │ ├── ListItem.js │ │ │ │ │ │ ├── ModelResourceListItem.js │ │ │ │ │ │ ├── SettingsResourceListItem.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── TopUsers.js │ │ │ │ │ ├── UserHeaderTitle.tsx │ │ │ │ │ ├── UserListItem.js │ │ │ │ │ └── UsersList.js │ │ │ │ ├── index.js │ │ │ │ ├── utils.ts │ │ │ │ └── views │ │ │ │ │ ├── Home.js │ │ │ │ │ ├── ResourceDetails.js │ │ │ │ │ └── UserDetails.js │ │ │ │ ├── AuditTrail │ │ │ │ ├── components │ │ │ │ │ ├── controls │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── styles.less │ │ │ │ │ ├── log │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── styles.less │ │ │ │ │ └── pagination │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── styles.less │ │ │ │ ├── index.js │ │ │ │ └── styles.less │ │ │ │ └── Metrics │ │ │ │ ├── Metrics.less │ │ │ │ ├── TopReq.js │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ └── store │ │ │ ├── logsInView.js │ │ │ └── searchTerm.js │ ├── schema │ │ ├── .editorconfig │ │ └── src │ │ │ ├── app │ │ │ ├── components │ │ │ │ ├── AddFieldDivider.tsx │ │ │ │ ├── AddFieldModal │ │ │ │ │ ├── CharacterLimit.tsx │ │ │ │ │ ├── ComingSoon.tsx │ │ │ │ │ ├── DefaultValue.tsx │ │ │ │ │ ├── DefaultValueInput.tsx │ │ │ │ │ ├── FieldFormInput.tsx │ │ │ │ │ ├── FieldItem.tsx │ │ │ │ │ ├── InputRange.tsx │ │ │ │ │ ├── Learn.tsx │ │ │ │ │ ├── MediaRules.tsx │ │ │ │ │ ├── Regex.tsx │ │ │ │ │ ├── TooltipBody.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── views │ │ │ │ │ │ ├── FieldForm.tsx │ │ │ │ │ │ ├── FieldSelection.tsx │ │ │ │ │ │ └── Rules.tsx │ │ │ │ ├── AllModelsEmptyState.tsx │ │ │ │ ├── CreateModelDialogue.tsx │ │ │ │ ├── DeleteModelDialogue.tsx │ │ │ │ ├── DuplicateModelDialogue.tsx │ │ │ │ ├── Field │ │ │ │ │ ├── FieldIcon.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── FieldEmptyState.tsx │ │ │ │ ├── FieldList.tsx │ │ │ │ ├── FieldsListRight.tsx │ │ │ │ ├── Filters │ │ │ │ │ ├── ModelType.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── ModelActivityLog.tsx │ │ │ │ ├── ModelApi │ │ │ │ │ ├── ApiCard.tsx │ │ │ │ │ ├── ApiCardList.tsx │ │ │ │ │ ├── ApiDetails.tsx │ │ │ │ │ ├── ApiDomainEndpoints.tsx │ │ │ │ │ ├── ApiInfo.tsx │ │ │ │ │ ├── HeadlessSwitcher.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── ModelBreadcrumbs.tsx │ │ │ │ ├── ModelHeader.tsx │ │ │ │ ├── ModelInfo │ │ │ │ │ ├── ActivityDetails.tsx │ │ │ │ │ ├── ModelDetails.tsx │ │ │ │ │ ├── RelatedModels.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── ModelMenu.tsx │ │ │ │ ├── ModelsTable.tsx │ │ │ │ ├── NoResults.tsx │ │ │ │ ├── RenameModelDialogue.tsx │ │ │ │ ├── SchemaCreateWizard.tsx │ │ │ │ ├── SelectBlockGroupInput.tsx │ │ │ │ ├── SelectModelParentInput.tsx │ │ │ │ ├── Sidebar │ │ │ │ │ ├── ModelList.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── StarterBlocks │ │ │ │ │ ├── StarterBlockForm.tsx │ │ │ │ │ ├── StarterBlocksSelection.tsx │ │ │ │ │ ├── configs.ts │ │ │ │ │ └── index.tsx │ │ │ │ ├── UpdateBlockGroupDialogue.tsx │ │ │ │ ├── UpdateDescriptionModelDialogue.tsx │ │ │ │ ├── UpdateParentModelDialogue.tsx │ │ │ │ ├── configs.ts │ │ │ │ └── hooks │ │ │ │ │ └── useMediaRules.tsx │ │ │ ├── index.tsx │ │ │ ├── utils │ │ │ │ └── index.ts │ │ │ └── views │ │ │ │ ├── AllModels.tsx │ │ │ │ ├── Model.tsx │ │ │ │ └── SearchModels.tsx │ │ │ ├── index.js │ │ │ └── store │ │ │ ├── navSchema.js │ │ │ └── parents.js │ ├── seo │ │ └── src │ │ │ ├── app │ │ │ ├── app.less │ │ │ ├── components │ │ │ │ └── RedirectsDialogProvider │ │ │ │ │ ├── CreateRedirects │ │ │ │ │ ├── CreateForm.tsx │ │ │ │ │ ├── PathField.tsx │ │ │ │ │ └── SearchField.tsx │ │ │ │ │ ├── DeleteDialog.tsx │ │ │ │ │ ├── ErrorDialog.tsx │ │ │ │ │ ├── constants.tsx │ │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ │ ├── index.js │ │ │ ├── store │ │ │ ├── imports.js │ │ │ ├── redirects.js │ │ │ └── redirectsFilter.js │ │ │ └── views │ │ │ └── RedirectsManager │ │ │ ├── RedirectActions │ │ │ ├── RedirectsDelete.tsx │ │ │ ├── RedirectsImport.tsx │ │ │ └── index.tsx │ │ │ ├── RedirectImportTable │ │ │ ├── ImportTableRowDisabled │ │ │ │ ├── ImportTableRowDisabled.js │ │ │ │ ├── ImportTableRowDisabled.less │ │ │ │ └── index.js │ │ │ ├── RedirectImportTable.js │ │ │ ├── RedirectImportTable.less │ │ │ ├── RedirectImportTableRow │ │ │ │ ├── RedirectImportTableRow.js │ │ │ │ ├── RedirectImportTableRow.less │ │ │ │ └── index.js │ │ │ └── index.js │ │ │ ├── RedirectsTable │ │ │ ├── RedirectCreator │ │ │ │ ├── RedirectCreator.js │ │ │ │ └── index.js │ │ │ ├── RedirectTargetCell.js │ │ │ ├── RedirectsTableContextProvider.tsx │ │ │ ├── RedirectsTableHeader │ │ │ │ ├── RedirectsTableHeader.js │ │ │ │ ├── RedirectsTableHeader.less │ │ │ │ └── index.js │ │ │ ├── RedirectsTableRow │ │ │ │ ├── RedirectsTableRow.js │ │ │ │ ├── RedirectsTableRow.less │ │ │ │ └── index.js │ │ │ ├── TableSortFilters.tsx │ │ │ └── index.tsx │ │ │ └── index.tsx │ └── settings │ │ └── src │ │ ├── app │ │ ├── App.js │ │ ├── components │ │ │ ├── ConfirmSaveDialog.tsx │ │ │ ├── Containers.tsx │ │ │ ├── Nav │ │ │ │ ├── SettingsNav.less │ │ │ │ ├── SettingsNav.tsx │ │ │ │ └── index.ts │ │ │ └── TopBar.tsx │ │ └── views │ │ │ ├── Bynder.tsx │ │ │ ├── Fonts │ │ │ ├── Browse.js │ │ │ ├── Fonts.less │ │ │ ├── Installed.js │ │ │ └── index.js │ │ │ ├── Instance │ │ │ ├── Instance.js │ │ │ └── index.js │ │ │ ├── Robots │ │ │ ├── HeadTags.js │ │ │ ├── Robots.js │ │ │ └── index.js │ │ │ ├── Styles │ │ │ ├── Styles.js │ │ │ └── index.js │ │ │ └── User │ │ │ └── Workflows │ │ │ ├── RestrictedPage.tsx │ │ │ ├── authorized │ │ │ ├── ActiveStatus.tsx │ │ │ ├── DeactivatedStatus.tsx │ │ │ ├── StatusLabel.tsx │ │ │ ├── forms-dialogs │ │ │ │ ├── DeactivationDialog.tsx │ │ │ │ ├── StatusLabelForm.tsx │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ │ ├── constants.tsx │ │ │ └── index.tsx │ │ └── index.js ├── engine │ ├── actionTypes.ts │ ├── handlers.ts │ ├── navigator.ts │ ├── queue.ts │ ├── refRegistry.ts │ └── useRegisterRef.ts ├── externals.d.ts ├── globals.d.ts ├── index.html ├── mui.d.ts ├── shell │ ├── app.config.js │ ├── components │ │ ├── AccessDenied.tsx │ │ ├── AppError │ │ │ ├── AppError.less │ │ │ ├── AppError.tsx │ │ │ └── index.ts │ │ ├── AppSidebar │ │ │ └── index.tsx │ │ ├── CascadingMenuItem │ │ │ └── index.tsx │ │ ├── Comment │ │ │ ├── CommentItem.tsx │ │ │ ├── CommentsList.tsx │ │ │ ├── ConfirmDeleteModal.tsx │ │ │ ├── InputField.tsx │ │ │ ├── MentionList.tsx │ │ │ ├── index.tsx │ │ │ └── utils.ts │ │ ├── ConfirmPublishModal.tsx │ │ ├── CreateContentItemDialog.tsx │ │ ├── CustomBreadcrumbs.tsx │ │ ├── DataGridSkeletonCell │ │ │ └── index.tsx │ │ ├── DirtyCodeModal │ │ │ ├── DirtyCodeModal.tsx │ │ │ └── index.tsx │ │ ├── Favicon │ │ │ ├── favicon.less │ │ │ └── index.tsx │ │ ├── FieldTypeBlockSelector │ │ │ ├── NoVariant.tsx │ │ │ ├── VariantSelector.tsx │ │ │ └── index.tsx │ │ ├── FieldTypeColor │ │ │ └── index.tsx │ │ ├── FieldTypeCurrency │ │ │ ├── currencies.ts │ │ │ └── index.tsx │ │ ├── FieldTypeDate │ │ │ └── index.tsx │ │ ├── FieldTypeDateTime │ │ │ ├── index.tsx │ │ │ └── util.ts │ │ ├── FieldTypeEditor │ │ │ ├── Converter.js │ │ │ ├── Editors │ │ │ │ ├── Basic.js │ │ │ │ ├── Basic.less │ │ │ │ ├── EmbedModal │ │ │ │ │ ├── EmbedModal.js │ │ │ │ │ ├── EmbedModal.less │ │ │ │ │ └── index.js │ │ │ │ ├── Html.js │ │ │ │ ├── Html.less │ │ │ │ ├── Inline.js │ │ │ │ ├── Inline.less │ │ │ │ ├── LinkModal │ │ │ │ │ ├── LinkModal.js │ │ │ │ │ ├── LinkModal.less │ │ │ │ │ └── index.js │ │ │ │ ├── Markdown.js │ │ │ │ ├── Markdown.less │ │ │ │ ├── prosemirror-views │ │ │ │ │ ├── IframeResizeView.js │ │ │ │ │ ├── ImageResizeView.js │ │ │ │ │ └── VideoResizeView.js │ │ │ │ ├── react-prosemirror-menu │ │ │ │ │ ├── characters.js │ │ │ │ │ ├── icons.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── inline-menu.js │ │ │ │ │ └── menu.js │ │ │ │ ├── react-prosemirror-plugins │ │ │ │ │ ├── index.js │ │ │ │ │ ├── keys.js │ │ │ │ │ ├── plugins.js │ │ │ │ │ └── rules.js │ │ │ │ ├── react-prosemirror-schema │ │ │ │ │ ├── index.js │ │ │ │ │ ├── marks.js │ │ │ │ │ └── nodes │ │ │ │ │ │ ├── blockquote.js │ │ │ │ │ │ ├── br.js │ │ │ │ │ │ ├── code.js │ │ │ │ │ │ ├── div.js │ │ │ │ │ │ ├── heading.js │ │ │ │ │ │ ├── hr.js │ │ │ │ │ │ ├── iframe.js │ │ │ │ │ │ ├── image.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── lists.js │ │ │ │ │ │ ├── paragraph.js │ │ │ │ │ │ ├── script.js │ │ │ │ │ │ ├── table.js │ │ │ │ │ │ └── video.js │ │ │ │ └── react-prosemirror │ │ │ │ │ ├── Editor.js │ │ │ │ │ ├── HtmlEditor.js │ │ │ │ │ ├── MenuBar.js │ │ │ │ │ └── MenuBar.module.less │ │ │ ├── FieldTypeEditor.js │ │ │ ├── FieldTypeEditor.less │ │ │ └── index.js │ │ ├── FieldTypeImage │ │ │ ├── FieldTypeImage.js │ │ │ ├── FieldTypeImage.less │ │ │ └── index.js │ │ ├── FieldTypeInternalLink │ │ │ ├── FieldTypeInternalLink.js │ │ │ ├── FieldTypeInternalLink.less │ │ │ └── index.js │ │ ├── FieldTypeNumber.tsx │ │ ├── FieldTypeOneToMany │ │ │ └── index.tsx │ │ ├── FieldTypeOneToOne │ │ │ └── index.tsx │ │ ├── FieldTypeSort │ │ │ └── index.tsx │ │ ├── FieldTypeTinyMCE │ │ │ ├── index.tsx │ │ │ └── plugins │ │ │ │ ├── imageresizer.ts │ │ │ │ ├── slashcommands.ts │ │ │ │ └── socialmediaembed.ts │ │ ├── FieldTypeUUID │ │ │ ├── FieldTypeUUID.js │ │ │ ├── FieldTypeUUID.less │ │ │ └── index.js │ │ ├── Filters │ │ │ ├── DateFilter │ │ │ │ ├── DateFilter.tsx │ │ │ │ ├── DateFilterModal.tsx │ │ │ │ ├── DateRangeFilterModal.tsx │ │ │ │ ├── getDateFilter.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── DateRangeFilter.tsx │ │ │ ├── FilterButton.tsx │ │ │ ├── GenericFilter.tsx │ │ │ ├── UserFilter.tsx │ │ │ └── index.ts │ │ ├── GlobalAccountMenu │ │ │ ├── config.ts │ │ │ └── index.tsx │ │ ├── GlobalDocsMenu │ │ │ ├── config.ts │ │ │ └── index.tsx │ │ ├── GlobalDomainsMenu │ │ │ └── index.tsx │ │ ├── GlobalSearch │ │ │ ├── components │ │ │ │ ├── AdvancedSearch.tsx │ │ │ │ ├── GlobalSearchItem.tsx │ │ │ │ ├── KeywordSearchItem.tsx │ │ │ │ ├── RecentSearchItem.tsx │ │ │ │ ├── SearchAccelerator.tsx │ │ │ │ └── config.ts │ │ │ ├── index.tsx │ │ │ └── utils.ts │ │ ├── GlobalTopbar │ │ │ ├── DomainSwitcher.tsx │ │ │ ├── GlobalTopbar.tsx │ │ │ └── index.ts │ │ ├── Head │ │ │ ├── Head.js │ │ │ ├── Head.less │ │ │ ├── HeadTag │ │ │ │ ├── HeadTag.js │ │ │ │ ├── HeadTag.less │ │ │ │ └── index.js │ │ │ ├── Preview │ │ │ │ ├── Preview.js │ │ │ │ ├── Preview.less │ │ │ │ └── index.js │ │ │ └── index.js │ │ ├── InAppAnnouncement │ │ │ └── index.tsx │ │ ├── InstanceFlyoutMenuModal │ │ │ ├── DocsMenu.tsx │ │ │ ├── DomainsMenu.tsx │ │ │ ├── InstancesListMenu.tsx │ │ │ ├── SearchEmptyState.tsx │ │ │ └── index.tsx │ │ ├── InteractiveTooltip │ │ │ └── index.tsx │ │ ├── InvalidUrl.tsx │ │ ├── InviteMembersModal │ │ │ ├── ConfirmationDialog.tsx │ │ │ ├── RoleAccessInfo.tsx │ │ │ ├── RoleSelectModal.tsx │ │ │ └── index.tsx │ │ ├── LegacyContentSearch │ │ │ ├── index.js │ │ │ └── styles.less │ │ ├── LoadingQuote │ │ │ └── index.tsx │ │ ├── MetricsCard │ │ │ ├── GrowthIndicator.tsx │ │ │ └── index.tsx │ │ ├── NavTree │ │ │ ├── components │ │ │ │ └── NavTreeItem.tsx │ │ │ └── index.tsx │ │ ├── NoPermission.tsx │ │ ├── NoSearchResults │ │ │ └── index.tsx │ │ ├── NotFound.tsx │ │ ├── NumberFormatInput │ │ │ └── index.tsx │ │ ├── RelationalFieldBase │ │ │ ├── ActiveItem │ │ │ │ ├── ActiveItemLoading.tsx │ │ │ │ └── index.tsx │ │ │ ├── CreateNewItemDialog.tsx │ │ │ ├── FieldSelectorDialog │ │ │ │ ├── DialogHeader.tsx │ │ │ │ ├── FieldSelectorFilters.tsx │ │ │ │ ├── ImageCell.tsx │ │ │ │ ├── ItemsLoading.tsx │ │ │ │ ├── TitleCell.tsx │ │ │ │ ├── VersionCell.tsx │ │ │ │ ├── dateFilter.ts │ │ │ │ ├── index.tsx │ │ │ │ ├── keywordSearchFilter.ts │ │ │ │ ├── statusFilter.ts │ │ │ │ └── userFilter.ts │ │ │ ├── VersionChip.tsx │ │ │ └── index.tsx │ │ ├── ResizeableContainer.tsx │ │ ├── SchedulePublish │ │ │ └── index.tsx │ │ ├── Staging.tsx │ │ ├── global-menu │ │ │ └── index.tsx │ │ ├── global-notifications │ │ │ ├── GlobalNotifications.js │ │ │ ├── GlobalNotifications.less │ │ │ └── index.js │ │ ├── global-sidebar │ │ │ ├── GlobalSidebar.tsx │ │ │ ├── components │ │ │ │ ├── InstanceAvatar.tsx │ │ │ │ ├── InstanceMenu │ │ │ │ │ ├── DropdownMenu.tsx │ │ │ │ │ ├── Flyouts │ │ │ │ │ │ └── InstancesList.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── OnboardingCall.tsx │ │ │ └── index.js │ │ ├── global-tabs │ │ │ ├── GlobalTabs.tsx │ │ │ ├── components │ │ │ │ ├── Breadcrumbs │ │ │ │ │ ├── Breadcrumbs.js │ │ │ │ │ ├── Breadcrumbs.less │ │ │ │ │ └── index.js │ │ │ │ ├── Dropdown.tsx │ │ │ │ ├── GlobalDirtyCodeModal.tsx │ │ │ │ └── Tab.tsx │ │ │ └── index.ts │ │ ├── load-instance │ │ │ ├── LoadInstance.less │ │ │ ├── NoInstancePermission.tsx │ │ │ └── index.js │ │ ├── login │ │ │ ├── Login.js │ │ │ ├── Login.less │ │ │ └── index.js │ │ ├── missing │ │ │ └── index.tsx │ │ ├── private-route │ │ │ └── index.js │ │ ├── utils │ │ │ └── virtualization.tsx │ │ ├── welcome │ │ │ └── index.js │ │ ├── withAi │ │ │ ├── AIGenerator.tsx │ │ │ ├── AIGeneratorProvider.tsx │ │ │ └── index.tsx │ │ ├── withCursorPosition │ │ │ └── index.tsx │ │ └── withDAM.tsx │ ├── constants.ts │ ├── contexts │ │ ├── CommentProvider.tsx │ │ ├── CreateContentItemDialogProvider.tsx │ │ └── duoModeContext.ts │ ├── hooks │ │ ├── use-domain.ts │ │ ├── use-permissions.js │ │ ├── useDateFilterParams.ts │ │ ├── useFilePath.js │ │ ├── useGetActiveApp.ts │ │ ├── useHover.js │ │ ├── useMetaKey.js │ │ ├── useParams.ts │ │ ├── useRecentSearches.ts │ │ ├── useResizeObserver.ts │ │ ├── useSearchCodeFilesByKeyword.ts │ │ ├── useSearchMediaFoldersByKeyword.ts │ │ └── useSearchModelsByKeyword.ts │ ├── index.js │ ├── package-lock.json │ ├── package.json │ ├── services │ │ ├── accounts.ts │ │ ├── analytics.ts │ │ ├── cloudFunctions.ts │ │ ├── instance.ts │ │ ├── marketing.ts │ │ ├── mediaManager.ts │ │ ├── metrics.ts │ │ ├── types.ts │ │ └── util.js │ ├── store │ │ ├── apps.js │ │ ├── auth.js │ │ ├── content.js │ │ ├── contentVersions.js │ │ ├── fields.js │ │ ├── headTags.js │ │ ├── index.js │ │ ├── instance.js │ │ ├── instances.js │ │ ├── languages.js │ │ ├── logs.js │ │ ├── media-revamp.ts │ │ ├── media.js │ │ ├── middleware │ │ │ ├── api.js │ │ │ ├── app-bus.js │ │ │ ├── local-storage.js │ │ │ ├── nav.js │ │ │ ├── relationship-worker.js │ │ │ └── session.js │ │ ├── models.js │ │ ├── notifications.ts │ │ ├── platform.js │ │ ├── products.js │ │ ├── releaseMembers.js │ │ ├── releases.js │ │ ├── settings.js │ │ ├── types.ts │ │ ├── ui.ts │ │ ├── user.js │ │ ├── userRole.js │ │ └── users.js │ ├── views │ │ ├── SearchPage │ │ │ ├── BackButton.tsx │ │ │ ├── CopyButton.tsx │ │ │ ├── Filters │ │ │ │ ├── LanguageFilter.tsx │ │ │ │ ├── ResourceTypeFilter.tsx │ │ │ │ ├── SortByFilter.tsx │ │ │ │ └── index.tsx │ │ │ ├── LinksContainer.tsx │ │ │ ├── List │ │ │ │ ├── Code.tsx │ │ │ │ ├── Content.tsx │ │ │ │ ├── Media.tsx │ │ │ │ ├── Model.tsx │ │ │ │ ├── SearchListItem.tsx │ │ │ │ └── SearchPageList.tsx │ │ │ ├── SearchPage.tsx │ │ │ └── index.tsx │ │ └── Shell │ │ │ ├── AIDrawer.tsx │ │ │ ├── LoadingShell.tsx │ │ │ ├── Shell.less │ │ │ ├── Shell.tsx │ │ │ └── index.js │ ├── wdyr.js │ └── webpack.config.js ├── utility │ ├── batchApiRequests.ts │ ├── deepFreeze.js │ ├── filterByParams.js │ ├── formatDate.ts │ ├── formatMediaFileName.js │ ├── formatName.js │ ├── formatPathPart.js │ ├── getFlagEmoji.ts │ ├── history.ts │ ├── idb.ts │ ├── instanceZUID.js │ ├── isZestyEmail.ts │ ├── md5.js │ ├── numberFormatter.js │ ├── pluralizeWord.ts │ ├── request.js │ ├── resolveResourceType.js │ ├── resolveResourceUrlFromAudit.ts │ └── sentry.js └── vendors │ └── common │ └── dnd.js └── tsconfig.json /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://EditorConfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | 15 | [*.{yml,yaml}] 16 | indent_size = 2 17 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/enhancement_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Enhancement request 3 | about: Request for a functionality enhancement on an existing feature on this project. 4 | title: "[APP NAME] - [DESCRIPTION OF THE ENHANCEMENT REQUEST]" 5 | labels: '["enhancement"]' 6 | assignees: "" 7 | type: "Feature" 8 | --- 9 | 10 | ## Current behavior 11 | 12 | Describe the current behavior of the feature that you would like to be changed. 13 | 14 | ## Proposed change 15 | 16 | A clear and concise description of what you want to happen. 17 | 18 | ## Design 19 | 20 | A link to the UI design related to the feature request. 21 | 22 | ## Additional notes 23 | 24 | Add any other context about the feature request here. 25 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Request for a new feature for this project. 4 | title: "[APP NAME] - [DESCRIPTION OF THE FEATURE REQUEST]" 5 | labels: '["feature"]' 6 | assignees: "" 7 | type: "Feature" 8 | --- 9 | 10 | ## Problem 11 | 12 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 13 | 14 | ## Solution 15 | 16 | A clear and concise description of what you want to happen. 17 | 18 | ## Design 19 | 20 | A link to the UI design related to the feature request. 21 | 22 | ## Additional notes 23 | 24 | Add any other context about the feature request here. 25 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # File Extensions 2 | *.sublime-* 3 | *.log 4 | *.lock 5 | *.css.json 6 | 7 | # secrets 8 | *.env* 9 | *.enc 10 | 11 | /build 12 | *dist/ 13 | *node_modules/ 14 | 15 | .vscode 16 | .DS_Store 17 | .idea 18 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npx --no-install pretty-quick --staged 5 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | v16 -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM nginx:alpine 2 | 3 | COPY ./etc/nginx.conf /etc/nginx/nginx.conf 4 | COPY ./build /www 5 | 6 | RUN chmod -R a+r /www 7 | -------------------------------------------------------------------------------- /app.yaml: -------------------------------------------------------------------------------- 1 | service: manager-ui 2 | 3 | runtime: custom 4 | env: flex 5 | 6 | automatic_scaling: 7 | min_num_instances: 2 8 | max_num_instances: 5 9 | cool_down_period_sec: 180 10 | cpu_utilization: 11 | target_utilization: 0.8 12 | 13 | liveness_check: 14 | path: "/liveness_check" 15 | check_interval_sec: 30 16 | timeout_sec: 4 17 | failure_threshold: 2 18 | success_threshold: 2 19 | 20 | readiness_check: 21 | path: "/readiness_check" 22 | check_interval_sec: 5 23 | timeout_sec: 4 24 | failure_threshold: 2 25 | success_threshold: 2 26 | app_start_timeout_sec: 300 27 | -------------------------------------------------------------------------------- /cypress/.gitignore: -------------------------------------------------------------------------------- 1 | /screenshots 2 | /videos 3 | -------------------------------------------------------------------------------- /cypress/README.md: -------------------------------------------------------------------------------- 1 | # Manager-UI Testing 2 | 3 | > Notes on the cypress testing process 4 | 5 | ## Custom Commands 6 | 7 | There are few custom commands we have created to simplify the process of writing tests against the manager-ui. 8 | 9 | ### `blockLock` 10 | 11 | Zesty is a multitennant app with a lock feature that presents a modal when USER X is viewing the same resource as USER Y. This modal can layover UI being tested causing the default Cypress behavior of failing on interaction with out of view elements. We solve this by including this statement which intercepts the /door/knock API request and stubs an empty response, preventing the lock modal from displaying. 12 | 13 | ### `waitOn` 14 | 15 | ### `login` 16 | -------------------------------------------------------------------------------- /cypress/e2e/blocks/pages/BlockPage.js: -------------------------------------------------------------------------------- 1 | class BlockPage { 2 | get createVariantButton() { 3 | return cy.getBySelector("create-variant-button"); 4 | } 5 | 6 | createVariant(name) { 7 | this.createVariantButton.click(); 8 | cy.getBySelector("variant-name-input").type(name); 9 | cy.getBySelector("create-variant-confirm-button").click(); 10 | } 11 | } 12 | 13 | export default new BlockPage(); 14 | -------------------------------------------------------------------------------- /cypress/e2e/content/failures.spec.js: -------------------------------------------------------------------------------- 1 | describe("Actions in content editor", () => { 2 | before(() => { 3 | //initial login to set the cookie 4 | cy.login(); 5 | }); 6 | 7 | // TODO: render error message for missing required field 8 | it.skip("Fails to save without filling all required fields", () => { 9 | cy.visit("/content/6-2543d4-dx4l70/7-255694-4gmw9w"); 10 | 11 | cy.contains("Page Title").get("input[name='title']").clear(); 12 | cy.get("#SaveItemButton").click(); 13 | cy.contains("You are missing data in required textarea").should("exist"); 14 | }); 15 | }); 16 | -------------------------------------------------------------------------------- /cypress/e2e/content/item-list-table.spec.js: -------------------------------------------------------------------------------- 1 | describe("Content item list table", () => { 2 | it("Resolves internal link zuids", () => { 3 | cy.waitOn("/search/items*", () => { 4 | cy.waitOn("/v1/content/models*", () => { 5 | cy.visit("/content/6-a1a600-k0b6f0"); 6 | }); 7 | }); 8 | 9 | cy.getBySelector("SingleRelationshipCell", { timeout: 30000 }) 10 | .first() 11 | .contains( 12 | "5 Tricks to Teach Your Pitbull: Fun & Easy Tips for You & Your Dog!", 13 | { timeout: 15_000 } 14 | ); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /cypress/e2e/content/multi-lang.spec.js: -------------------------------------------------------------------------------- 1 | describe("multi-lang", () => { 2 | it("Check if multi lang exist", () => { 3 | cy.waitOn( 4 | "/v1/content/models/6-a4d6e6f087-1jmlbx/items/7-b8da98dea8-1nwkc9", 5 | () => { 6 | cy.visit("/content/6-a4d6e6f087-1jmlbx/7-b8da98dea8-1nwkc9"); 7 | } 8 | ); 9 | 10 | cy.getBySelector("language-selector").click(); 11 | 12 | cy.contains("ES (ES)"); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /cypress/e2e/settings/fonts.spec.js: -------------------------------------------------------------------------------- 1 | describe("Fonts", () => { 2 | before(() => { 3 | cy.visit("/settings"); 4 | }); 5 | 6 | it("Install font", () => { 7 | cy.get("[data-cy=SettingsNav]").contains("Browse fonts").click(); 8 | cy.get("[data-cy=SubApp] input[type=checkbox]").first().check(); 9 | 10 | cy.get("#InstallFont").click(); 11 | 12 | cy.contains("Font installed").should("exist"); 13 | }); 14 | 15 | it("Removes a font", () => { 16 | cy.get("[data-cy=SettingsNav]").contains("Installed fonts").click(); 17 | cy.get("#RemoveFont").first().click(); 18 | cy.get(".MuiDialog-root button").last().click(); 19 | 20 | cy.contains("Font has been removed").should("exist"); 21 | }); 22 | }); 23 | -------------------------------------------------------------------------------- /cypress/fixtures/example.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Using fixtures to represent data", 3 | "email": "hello@cypress.io", 4 | "body": "Fixtures are a great way to mock data for responses to routes" 5 | } 6 | -------------------------------------------------------------------------------- /cypress/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "types": ["cypress", "node"], 4 | "jsx": "react-jsx", 5 | "resolveJsonModule": true 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /etc/ssl/myCA.srl: -------------------------------------------------------------------------------- 1 | 6DF9AA54720C2AC8A0BFC19FE9065E2296D7EC53 2 | -------------------------------------------------------------------------------- /etc/ssl/zesty.io.ext: -------------------------------------------------------------------------------- 1 | [ v3_req ] 2 | 3 | # Extensions to add to a certificate request 4 | authorityKeyIdentifier=keyid,issuer 5 | basicConstraints=CA:FALSE 6 | keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment 7 | subjectAltName = @alt_names 8 | 9 | # Be sure to include the domain name here because Common Name is not so commonly honoured by itself 10 | [alt_names] 11 | DNS.1 = zesty.io 12 | DNS.2 = dev.zesty.io 13 | DNS.3 = manager.dev.zesty.io 14 | DNS.4 = *.manager.dev.zesty.io -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | declare module "*.png"; 2 | declare module "*.jpg"; 3 | declare module "*.svg"; 4 | -------------------------------------------------------------------------------- /public/images/FFFFFF-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/FFFFFF-0.png -------------------------------------------------------------------------------- /public/images/addFieldsImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/addFieldsImage.png -------------------------------------------------------------------------------- /public/images/all-models-empty-state-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/all-models-empty-state-image.png -------------------------------------------------------------------------------- /public/images/allBlocksEmpty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/allBlocksEmpty.png -------------------------------------------------------------------------------- /public/images/blockPlaceholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/blockPlaceholder.png -------------------------------------------------------------------------------- /public/images/block_contact_us_form.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/block_contact_us_form.png -------------------------------------------------------------------------------- /public/images/block_feature_side_by_side_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/block_feature_side_by_side_image.png -------------------------------------------------------------------------------- /public/images/block_hero_image_below.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/block_hero_image_below.png -------------------------------------------------------------------------------- /public/images/block_hero_side_by_side_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/block_hero_side_by_side_image.png -------------------------------------------------------------------------------- /public/images/block_single_testimonial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/block_single_testimonial.png -------------------------------------------------------------------------------- /public/images/blocksOnboarding1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/blocksOnboarding1.png -------------------------------------------------------------------------------- /public/images/blocksOnboarding2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/blocksOnboarding2.png -------------------------------------------------------------------------------- /public/images/blocksOnboarding3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/blocksOnboarding3.png -------------------------------------------------------------------------------- /public/images/bynder-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/bynder-preview.png -------------------------------------------------------------------------------- /public/images/csvImg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/csvImg.png -------------------------------------------------------------------------------- /public/images/defaultImg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/defaultImg.png -------------------------------------------------------------------------------- /public/images/emptyItemsList.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/emptyItemsList.png -------------------------------------------------------------------------------- /public/images/excelImg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/excelImg.png -------------------------------------------------------------------------------- /public/images/fields-loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/fields-loading.png -------------------------------------------------------------------------------- /public/images/fileBroken.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/fileBroken.jpg -------------------------------------------------------------------------------- /public/images/flags/ae.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/images/flags/am.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/at.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/images/flags/ax.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /public/images/flags/az.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /public/images/flags/bb.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/images/flags/bd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/images/flags/be.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/bf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/bg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/bh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/images/flags/bj.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /public/images/flags/bl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/bq.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/bs.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /public/images/flags/bv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /public/images/flags/bw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/ca.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/images/flags/cd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/cg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /public/images/flags/ch.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /public/images/flags/ci.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/cl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /public/images/flags/co.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/cp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/cr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/cu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /public/images/flags/cz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/de.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/dj.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /public/images/flags/dk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/dz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/ee.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/es-ct.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/images/flags/es-pv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/fi.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/fo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /public/images/flags/fr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/ga.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/gb-eng.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/gb-sct.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/images/flags/gb.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/gf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/gg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /public/images/flags/gh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/images/flags/gl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/images/flags/gm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /public/images/flags/gn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/gp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/gy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /public/images/flags/hu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/ic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/id.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/images/flags/ie.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/is.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /public/images/flags/it.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/jm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /public/images/flags/jp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /public/images/flags/kw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /public/images/flags/la.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /public/images/flags/lc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /public/images/flags/lt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/lu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/lv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/images/flags/ly.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /public/images/flags/ma.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/images/flags/mc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/images/flags/mf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/mg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/mk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/ml.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/mq.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/mr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/images/flags/mu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /public/images/flags/mv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/images/flags/ne.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/images/flags/ng.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/images/flags/nl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/no.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/nr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /public/images/flags/pe.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/images/flags/pl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/images/flags/pm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/pr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /public/images/flags/ps.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /public/images/flags/pw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /public/images/flags/qa.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/images/flags/re.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/ro.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/ru.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/sc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/sd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /public/images/flags/se.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/images/flags/sh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/sj.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/sl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/sn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /public/images/flags/so.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /public/images/flags/sr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/images/flags/ss.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /public/images/flags/sy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/images/flags/td.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/th.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/tl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /public/images/flags/tn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/images/flags/to.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /public/images/flags/tr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /public/images/flags/tt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/tz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /public/images/flags/ua.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/images/flags/um.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /public/images/flags/us.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /public/images/flags/vc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /public/images/flags/vn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /public/images/flags/wf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/flags/ws.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/xx.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/images/flags/ye.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/images/flags/yt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/googleAnalyticsLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/googleAnalyticsLogo.png -------------------------------------------------------------------------------- /public/images/googleChromeLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/googleChromeLogo.png -------------------------------------------------------------------------------- /public/images/guide1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/guide1.png -------------------------------------------------------------------------------- /public/images/guide2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/guide2.png -------------------------------------------------------------------------------- /public/images/guide3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/guide3.png -------------------------------------------------------------------------------- /public/images/headlessLogos.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/headlessLogos.jpg -------------------------------------------------------------------------------- /public/images/hybridLogos.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/hybridLogos.jpg -------------------------------------------------------------------------------- /public/images/ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/ipad.png -------------------------------------------------------------------------------- /public/images/iphone-14-camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/iphone-14-camera.png -------------------------------------------------------------------------------- /public/images/iphone-14-pro-camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/iphone-14-pro-camera.png -------------------------------------------------------------------------------- /public/images/iphone-14-pro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/iphone-14-pro.png -------------------------------------------------------------------------------- /public/images/iphone-14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/iphone-14.png -------------------------------------------------------------------------------- /public/images/lineChartSkeleton3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /public/images/microsoftIcon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /public/images/microsoftLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/microsoftLogo.png -------------------------------------------------------------------------------- /public/images/mpImg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/mpImg.png -------------------------------------------------------------------------------- /public/images/noSearchResults.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/noSearchResults.jpg -------------------------------------------------------------------------------- /public/images/nodejsLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/nodejsLogo.png -------------------------------------------------------------------------------- /public/images/notFound.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/notFound.jpg -------------------------------------------------------------------------------- /public/images/notFound.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/notFound.png -------------------------------------------------------------------------------- /public/images/notFoundTransparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/notFoundTransparent.png -------------------------------------------------------------------------------- /public/images/npmLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/npmLogo.png -------------------------------------------------------------------------------- /public/images/numberImg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/numberImg.png -------------------------------------------------------------------------------- /public/images/pdfImg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/pdfImg.png -------------------------------------------------------------------------------- /public/images/pixel-7-camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/pixel-7-camera.png -------------------------------------------------------------------------------- /public/images/pixel-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/pixel-7.png -------------------------------------------------------------------------------- /public/images/pptImg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/pptImg.png -------------------------------------------------------------------------------- /public/images/restricted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/restricted.png -------------------------------------------------------------------------------- /public/images/sb__avatar__1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/sb__avatar__1.png -------------------------------------------------------------------------------- /public/images/sb__company__logo__1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/sb__company__logo__1.png -------------------------------------------------------------------------------- /public/images/sb__hero__image__1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/sb__hero__image__1.png -------------------------------------------------------------------------------- /public/images/sb__hero__image__2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/sb__hero__image__2.png -------------------------------------------------------------------------------- /public/images/sb__person__image__1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/sb__person__image__1.png -------------------------------------------------------------------------------- /public/images/wordImg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/wordImg.png -------------------------------------------------------------------------------- /public/images/zipImg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/images/zipImg.png -------------------------------------------------------------------------------- /public/plugins/help/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "help" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/help') 5 | // ES2015: 6 | // import 'tinymce/plugins/help' 7 | require("./plugin.js"); 8 | -------------------------------------------------------------------------------- /public/ui/images/clippy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/_blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/_blank.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/_page.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/aac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/aac.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/ai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/ai.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/aiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/aiff.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/avi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/avi.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/bmp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/bmp.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/c.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/cpp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/cpp.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/css.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/css.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/dat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/dat.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/dmg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/dmg.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/doc.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/dotx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/dotx.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/dwg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/dwg.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/dxf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/dxf.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/eps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/eps.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/exe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/exe.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/flv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/flv.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/gif.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/gif.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/h.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/hpp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/hpp.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/html.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/html.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/ics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/ics.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/iso.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/iso.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/java.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/java.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/jpg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/jpg.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/js.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/js.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/key.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/less.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/less.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/mid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/mid.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/mp3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/mp3.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/mp4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/mp4.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/mpg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/mpg.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/odf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/odf.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/ods.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/ods.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/odt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/odt.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/otp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/otp.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/ots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/ots.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/ott.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/ott.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/pdf.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/php.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/php.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/png.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/png.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/ppt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/ppt.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/psd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/psd.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/py.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/py.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/qt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/qt.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/rar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/rar.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/rb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/rb.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/rtf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/rtf.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/sass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/sass.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/scss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/scss.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/sql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/sql.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/tga.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/tga.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/tgz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/tgz.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/tiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/tiff.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/txt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/txt.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/wav.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/wav.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/xls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/xls.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/xlsx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/xlsx.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/xml.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/yml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/yml.png -------------------------------------------------------------------------------- /public/ui/images/icons/file_types/48px/zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/ui/images/icons/file_types/48px/zip.png -------------------------------------------------------------------------------- /public/vendors/tinymce/content.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #fff; 3 | color: #1b202c; 4 | font-family: Verdana, Arial, Sans-Serif; 5 | font-size: 14px; 6 | font-weight: 400; 7 | line-height: normal; 8 | letter-spacing: 0px; 9 | } 10 | -------------------------------------------------------------------------------- /public/vendors/tinymce/plugins/advcode/changelog.txt: -------------------------------------------------------------------------------- 1 | Version 1.2.0 (2018-02-01) 2 | Decreased plugin size by improving build steps. 3 | Version 1.1.1 (2017-12-28) 4 | [BUG] Fixed issue where the ui would be accessed directly instead of though a factory. 5 | Version 1.1.0 (2017-03-01) 6 | [FEATURE] Added HTML autocomplete addon. Open a new tag by writing '<' and a dropdown menu will appear showing a list of suggestions of HTML tags that narrows down as you continue writing. #TINY-556 7 | Version 1.0.2 (2016-10-25) 8 | [FEATURE] Added version detection logic that check if this plugin is used with a compatible tinymce version. #TINY-639 9 | -------------------------------------------------------------------------------- /public/vendors/tinymce/plugins/advcode/license.txt: -------------------------------------------------------------------------------- 1 | EPHOX SOFTWARE TERMS & CONDITIONS OF USE 2 | 3 | Use of this software is covered by the Ephox Software Terms & Conditions of Use presented at http://www.ephox.com/legal. By use of this Software you have agreed to the Ephox Software Terms & Conditions of Use. 4 | 5 | 4 May 2015 -------------------------------------------------------------------------------- /public/vendors/tinymce/plugins/advcode/version.txt: -------------------------------------------------------------------------------- 1 | 2.0.0-92 -------------------------------------------------------------------------------- /public/vendors/tinymce/plugins/formatpainter/changelog.txt: -------------------------------------------------------------------------------- 1 | Version 1.1.0 (2019-03-28) 2 | Changed so that formats registered by the format painter are namespaced with a prefix #FOPA-25 3 | Added checklist and liststyletype format registration #FOPA-7 4 | Fixed an issue that made the format painter too lenient when matching/reading formats #FOPA-23 5 | Fixed an issue where applying formats with keyboard shortcut would toggle off the format painter #FOPA-22 6 | Fixed an issue where formats with selectors would be handled incorrectly #FOPA-22 7 | Version 1.0.0 (2019-01-07) 8 | Initial release. -------------------------------------------------------------------------------- /public/vendors/tinymce/plugins/formatpainter/version.txt: -------------------------------------------------------------------------------- 1 | 1.1.0-23 -------------------------------------------------------------------------------- /public/vendors/tinymce/plugins/mediaembed/license.txt: -------------------------------------------------------------------------------- 1 | EPHOX SOFTWARE TERMS & CONDITIONS OF USE 2 | 3 | Use of this software is covered by the Ephox Software Terms & Conditions of Use presented at http://www.ephox.com/legal. By use of this Software you have agreed to the Ephox Software Terms & Conditions of Use. 4 | 5 | 4 May 2015 6 | -------------------------------------------------------------------------------- /public/vendors/tinymce/plugins/mediaembed/version.txt: -------------------------------------------------------------------------------- 1 | 2.2.3-91 -------------------------------------------------------------------------------- /public/vendors/tinymce/plugins/pageembed/changelog.txt: -------------------------------------------------------------------------------- 1 | 1.0.0 2 | * Initial release. 3 | -------------------------------------------------------------------------------- /public/vendors/tinymce/plugins/pageembed/version.txt: -------------------------------------------------------------------------------- 1 | 1.0.0-20 -------------------------------------------------------------------------------- /public/vendors/tinymce/plugins/powerpaste/license.txt: -------------------------------------------------------------------------------- 1 | EPHOX SOFTWARE TERMS & CONDITIONS OF USE 2 | 3 | Use of this software is covered by the Ephox Software Terms & Conditions of Use presented at http://www.ephox.com/legal. By use of this Software you have agreed to the Ephox Software Terms & Conditions of Use. 4 | 5 | 4 May 2015 -------------------------------------------------------------------------------- /public/vendors/tinymce/plugins/powerpaste/version.txt: -------------------------------------------------------------------------------- 1 | 5.1.0-412 -------------------------------------------------------------------------------- /public/vendors/tinymce/skins/ui/Zesty/fonts/tinymce-mobile.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/public/vendors/tinymce/skins/ui/Zesty/fonts/tinymce-mobile.woff -------------------------------------------------------------------------------- /src/apps/active-preview/components/Frame/index.js: -------------------------------------------------------------------------------- 1 | export { Frame, templates } from "./Frame"; 2 | -------------------------------------------------------------------------------- /src/apps/active-preview/components/JSONPreview/JSONPreview.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | 4 | .JSONPreview { 5 | background-color: @white; 6 | height: 100%; 7 | overflow: auto; 8 | } 9 | -------------------------------------------------------------------------------- /src/apps/active-preview/components/JSONPreview/index.js: -------------------------------------------------------------------------------- 1 | import { JSONPreview } from "./JSONPreview"; 2 | export { JSONPreview }; 3 | -------------------------------------------------------------------------------- /src/apps/active-preview/components/Meta/Meta.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | 4 | .Meta { 5 | background-color: @appBkgColor; 6 | .ModalHeader { 7 | margin-bottom: 32px; 8 | h1 { 9 | word-break: break-all; 10 | } 11 | } 12 | .Item { 13 | ul { 14 | margin: 8px 0 8px 16px; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/apps/active-preview/components/Meta/index.js: -------------------------------------------------------------------------------- 1 | import { Meta } from "./Meta"; 2 | export { Meta }; 3 | -------------------------------------------------------------------------------- /src/apps/active-preview/index.js: -------------------------------------------------------------------------------- 1 | import ReactDOM from "react-dom"; 2 | import { Preview } from "./Preview"; 3 | import { ThemeProvider } from "@mui/material/styles"; 4 | import { theme } from "@zesty-io/material"; 5 | 6 | // interploated by webpack at build time 7 | window.CONFIG = __CONFIG__; 8 | 9 | ReactDOM.render( 10 | 11 | 12 | , 13 | document.getElementById("root") 14 | ); 15 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/Differ/index.js: -------------------------------------------------------------------------------- 1 | export { Differ } from "./Differ"; 2 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/Editor/components/MemoizedEditor/index.js: -------------------------------------------------------------------------------- 1 | import MemoizedEditor from "./MemoizedEditor.js"; 2 | export { MemoizedEditor }; 3 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/Editor/components/MemoizedEditor/parsley-theme.js: -------------------------------------------------------------------------------- 1 | export const ParsleyTheme = [ 2 | { 3 | token: "constant.character.escape", 4 | foreground: "00FFFF", 5 | fontStyle: "italic underline", 6 | }, 7 | { 8 | token: "meta.tag", 9 | foreground: "00FF00", 10 | fontStyle: "italic underline", 11 | }, 12 | ]; 13 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/Editor/index.js: -------------------------------------------------------------------------------- 1 | export { Editor } from "./Editor"; 2 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileActions/components/Delete/index.js: -------------------------------------------------------------------------------- 1 | export { Delete } from "./Delete"; 2 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileActions/components/DifferActions/index.js: -------------------------------------------------------------------------------- 1 | export { DifferActions } from "./DifferActions"; 2 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileActions/components/EditorActions/EditorActions.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | 3 | .EditorActions { 4 | flex: 1; 5 | display: flex; 6 | padding: 0 4px; 7 | justify-content: flex-end; 8 | 9 | .HideSmall { 10 | display: none; 11 | @media only screen and (min-width: 1500px) { 12 | display: block; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileActions/components/EditorActions/Publish/index.js: -------------------------------------------------------------------------------- 1 | export { Publish } from "./Publish"; 2 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileActions/components/EditorActions/Save/index.js: -------------------------------------------------------------------------------- 1 | export { Save } from "./Save"; 2 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileActions/components/EditorActions/Sync/Sync.less: -------------------------------------------------------------------------------- 1 | .SyncFile { 2 | top: 0; 3 | right: 0; 4 | box-shadow: 2px 2px 4px #333; 5 | 6 | .ModalActions { 7 | display: flex; 8 | justify-content: space-between; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileActions/components/EditorActions/Sync/index.js: -------------------------------------------------------------------------------- 1 | export { Sync } from "./Sync"; 2 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileActions/components/EditorActions/index.js: -------------------------------------------------------------------------------- 1 | export { EditorActions } from "./EditorActions"; 2 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileActions/index.js: -------------------------------------------------------------------------------- 1 | export { FileActions } from "./FileActions"; 2 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileDrawer/components/AuditTrail/AuditTrail.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/typography.less"; 2 | 3 | .AuditTrail { 4 | .NoLogs { 5 | color: #38383d; 6 | } 7 | 8 | ul { 9 | li { 10 | line-height: 18px; 11 | list-style: circle; 12 | list-style-position: inside; 13 | margin: 0 4px 12px 0; 14 | } 15 | } 16 | 17 | .MoreLogs { 18 | text-shadow: none; 19 | i { 20 | padding: 0 8px 0 0; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileDrawer/components/AuditTrail/index.js: -------------------------------------------------------------------------------- 1 | import AuditTrail from "./AuditTrail"; 2 | export { AuditTrail }; 3 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileDrawer/components/FileStatus/FileStatus.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/typography.less"; 2 | 3 | .FileStatus { 4 | ul { 5 | li { 6 | line-height: 18px; 7 | list-style: circle; 8 | list-style-position: outside; 9 | margin: 0 4px 12px 16px; 10 | } 11 | } 12 | 13 | .FileLink { 14 | text-shadow: none; 15 | } 16 | 17 | .ZUID { 18 | background: #333; 19 | border-radius: 2px; 20 | font-style: italic; 21 | margin: 0 8px; 22 | padding: 2px 8px; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileDrawer/components/FileStatus/index.js: -------------------------------------------------------------------------------- 1 | import FileStatus from "./FileStatus"; 2 | export { FileStatus }; 3 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileDrawer/components/LinkedContent/index.js: -------------------------------------------------------------------------------- 1 | import LinkedContent from "./LinkedContent"; 2 | export { LinkedContent }; 3 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileDrawer/components/LinkedSchema/index.js: -------------------------------------------------------------------------------- 1 | import LinkedSchema from "./LinkedSchema"; 2 | export { LinkedSchema }; 3 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileDrawer/components/PublishAll/index.js: -------------------------------------------------------------------------------- 1 | import PublishAll from "./PublishAll"; 2 | export { PublishAll }; 3 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileDrawer/index.js: -------------------------------------------------------------------------------- 1 | export { FileDrawer } from "./FileDrawer"; 2 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileList/components/CreateFile/CreateFile.less: -------------------------------------------------------------------------------- 1 | .CreateFile { 2 | top: 0; 3 | right: 0; 4 | box-shadow: 2px 2px 4px #333; 5 | 6 | width: 500px; 7 | 8 | .ModalContent { 9 | .FileType { 10 | margin-bottom: 12px; 11 | } 12 | .description { 13 | margin-bottom: 12px; 14 | } 15 | } 16 | 17 | .ModalActions { 18 | display: flex; 19 | justify-content: space-between; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileList/components/CreateFile/index.js: -------------------------------------------------------------------------------- 1 | export { CreateFile } from "./CreateFile"; 2 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileList/components/FilterFiles/index.js: -------------------------------------------------------------------------------- 1 | export { FilterFiles } from "./FilterFiles"; 2 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileList/components/OrderFiles/components/Draggable/index.js: -------------------------------------------------------------------------------- 1 | export { Draggable } from "./Draggable"; 2 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileList/components/OrderFiles/components/Dropzone/index.js: -------------------------------------------------------------------------------- 1 | export { Dropzone } from "./Dropzone"; 2 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileList/components/OrderFiles/index.js: -------------------------------------------------------------------------------- 1 | import OrderFiles from "./OrderFiles"; 2 | export { OrderFiles }; 3 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileList/components/PublishAll/index.js: -------------------------------------------------------------------------------- 1 | import PublishAll from "./PublishAll"; 2 | export { PublishAll }; 3 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileList/components/SelectBranch/SelectBranch.less: -------------------------------------------------------------------------------- 1 | .SelectBranch { 2 | ul { 3 | min-width: 230px; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileList/components/SelectBranch/index.js: -------------------------------------------------------------------------------- 1 | export { SelectBranch } from "./SelectBranch"; 2 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileList/index.js: -------------------------------------------------------------------------------- 1 | export { FileList } from "./FileList"; 2 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/FileTabs/FileTabs.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/src/apps/code-editor/src/app/components/FileTabs/FileTabs.less -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/LocalDirtyCodeModal/index.ts: -------------------------------------------------------------------------------- 1 | import { LocalDirtyCodeModal } from "./LocalDirtyCodeModal"; 2 | export { LocalDirtyCodeModal }; 3 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/LockedView/LockedView.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | 4 | .LockedView { 5 | width: 600px; 6 | 7 | .ModalContent { 8 | margin: 28px 0; 9 | } 10 | .ModalFooter { 11 | display: flex; 12 | width: 100%; 13 | justify-content: space-between; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/LockedView/index.js: -------------------------------------------------------------------------------- 1 | export { LockedView } from "./LockedView"; 2 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/Workspace/components/GettingStarted/index.js: -------------------------------------------------------------------------------- 1 | export { GettingStarted } from "./GettingStarted"; 2 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/Workspace/components/NotFound/NotFound.js: -------------------------------------------------------------------------------- 1 | import { connect } from "react-redux"; 2 | 3 | import styles from "./NotFound.less"; 4 | export default connect((state) => state)(function NotFound(props) { 5 | return ( 6 |
7 |

View Not Found

8 |
9 | ); 10 | }); 11 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/Workspace/components/NotFound/NotFound.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | 4 | .NotFound { 5 | width: calc(100vw - 20vw); 6 | height: calc(100vh - 64px - 60px); 7 | margin: 0; 8 | 9 | display: flex; 10 | justify-content: center; 11 | align-items: center; 12 | 13 | h1 { 14 | color: @zesty-white; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/components/Workspace/components/NotFound/index.js: -------------------------------------------------------------------------------- 1 | import NotFound from "./NotFound"; 2 | export { NotFound }; 3 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/app/views/CodeEditor/index.js: -------------------------------------------------------------------------------- 1 | import CodeEditor from "./CodeEditor.js"; 2 | export { CodeEditor }; 3 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/index.js: -------------------------------------------------------------------------------- 1 | import { store, injectReducer } from "shell/store"; 2 | import { files } from "./store/files"; 3 | import { status } from "./store/status"; 4 | import { auditTrail } from "./store/auditTrail"; 5 | import { headers } from "./store/headers"; 6 | import { navCode } from "./store/navCode"; 7 | import { CodeEditor } from "./app/views/CodeEditor"; 8 | 9 | injectReducer(store, "files", files); 10 | injectReducer(store, "status", status); 11 | injectReducer(store, "auditTrail", auditTrail); 12 | injectReducer(store, "headers", headers); 13 | injectReducer(store, "navCode", navCode); 14 | 15 | export default CodeEditor; 16 | -------------------------------------------------------------------------------- /src/apps/code-editor/src/store/status.js: -------------------------------------------------------------------------------- 1 | export function status( 2 | state = { 3 | selected: "dev", 4 | branches: [], 5 | }, 6 | action 7 | ) { 8 | switch (action.type) { 9 | case "FETCH_FILES_SUCCESS": 10 | const branches = action.payload.files.map((file) => file.status); 11 | return { 12 | ...state, 13 | branches: branches.reduce((acc, env) => { 14 | let exists = acc.find((el) => el === env); 15 | if (!exists) { 16 | acc.push(env); 17 | } 18 | return acc; 19 | }, []), 20 | }; 21 | 22 | default: 23 | return state; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/components/ContentNav/NavError.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from "react"; 2 | import { Box, Typography } from "@mui/material"; 3 | 4 | import notFound from "../../../../../../../public/images/notFoundTransparent.png"; 5 | 6 | interface Props { 7 | navName: string; 8 | } 9 | export const NavError: FC = ({ navName }) => { 10 | return ( 11 | 12 | Not Found 13 | 14 | We're sorry we are unable to load your {navName}. Please refresh your 15 | page and try again. 16 | 17 | 18 | ); 19 | }; 20 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/components/Editor/Editor.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | 3 | .Fields { 4 | display: flex; 5 | flex-direction: column; 6 | width: 100%; 7 | 8 | scrollbar-width: none; /* FireFox */ 9 | -ms-overflow-style: none; /* Edge */ 10 | ::-webkit-scrollbar { 11 | display: none; 12 | } 13 | 14 | //Scroll Calc (GlobalTopbar - Content Header - padding) 15 | 16 | .Field { 17 | padding: 12px 0; 18 | } 19 | .Field:first-child { 20 | padding: 0 0 8px; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/components/Editor/Field/LinkOption.tsx: -------------------------------------------------------------------------------- 1 | import { memo } from "react"; 2 | import { AppLink } from "@zesty-io/core/AppLink"; 3 | import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; 4 | import { faExclamationTriangle } from "@fortawesome/free-solid-svg-icons"; 5 | 6 | type LinkOptionProps = { modelZUID: string; itemZUID: string }; 7 | export const LinkOption = memo(({ modelZUID, itemZUID }: LinkOptionProps) => { 8 | return ( 9 | <> 10 | 11 |   12 | {itemZUID} 13 |  is missing a meta title 14 | 15 | ); 16 | }); 17 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/components/Editor/Field/index.ts: -------------------------------------------------------------------------------- 1 | import { Field } from "./Field"; 2 | export { Field }; 3 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/components/Editor/PreviewMode/index.js: -------------------------------------------------------------------------------- 1 | import PreviewMode from "./PreviewMode"; 2 | export { PreviewMode }; 3 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/components/Editor/index.js: -------------------------------------------------------------------------------- 1 | import Editor from "./Editor"; 2 | export { Editor }; 3 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/components/PendingEditsModal/PendingEditsModal.less: -------------------------------------------------------------------------------- 1 | .PendingEditsModal { 2 | } 3 | .Actions { 4 | button { 5 | margin-right: 8px; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/components/PendingEditsModal/index.js: -------------------------------------------------------------------------------- 1 | import PendingEditsModal from "./PendingEditsModal"; 2 | export { PendingEditsModal }; 3 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/components/ReorderNav/DragComponents/styles.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | .sort { 3 | display: flex; 4 | flex-direction: column; 5 | width: 100%; 6 | overflow-y: auto; 7 | 8 | li { 9 | display: flex; 10 | align-items: center; 11 | margin: 8px 0; 12 | 13 | .node { 14 | display: flex; 15 | align-items: center; 16 | color: @zesty-blue; 17 | 18 | &:hover, 19 | &:focus { 20 | color: darken(@zesty-blue, 20%); 21 | } 22 | 23 | svg { 24 | margin: 0; 25 | width: 18px; 26 | height: 18px; 27 | } 28 | } 29 | } 30 | } 31 | 32 | .Item { 33 | width: 100%; 34 | } 35 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/components/ReorderNav/ReorderNav.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | 4 | .ReorderNav { 5 | overflow-y: auto; 6 | max-height: 70vh; 7 | .ModalContent { 8 | h3 { 9 | margin-bottom: 16px; 10 | } 11 | svg { 12 | margin-right: 8px; 13 | } 14 | 15 | ul li:hover, 16 | ul li:focus { 17 | cursor: move; 18 | color: darken(@zesty-grey, 10%); 19 | } 20 | } 21 | 22 | .ModalFooter { 23 | display: flex; 24 | align-items: center; 25 | justify-content: space-between; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/components/ReorderNav/index.js: -------------------------------------------------------------------------------- 1 | import ReorderNav from "./ReorderNav"; 2 | export { ReorderNav }; 3 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/index.js: -------------------------------------------------------------------------------- 1 | import ContentEditor from "./ContentEditor"; 2 | export default ContentEditor; 3 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/CSVImport/Columns/index.js: -------------------------------------------------------------------------------- 1 | import Columns from "./Columns"; 2 | export { Columns }; 3 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/CSVImport/CsvSettings/CsvSettings.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | 4 | .CsvSettings { 5 | display: grid; 6 | padding: 8px; 7 | grid-template-columns: min-content min-content min-content; 8 | background-color: #5b667d; 9 | color: #eff5ff; 10 | 11 | .Setting { 12 | margin: 8px; 13 | min-width: 250px; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/CSVImport/CsvSettings/index.js: -------------------------------------------------------------------------------- 1 | export { CsvSettings } from "./CsvSettings"; 2 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/Dashboard/components/AccountInfo/AccountInfo.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | 4 | .AccountInfo { 5 | display: flex; 6 | flex: 1; 7 | 8 | .UploadImg { 9 | position: relative; 10 | font-size: 32px; 11 | } 12 | .Links { 13 | display: flex; 14 | flex-direction: column; 15 | & > * { 16 | margin: 4px 0; 17 | } 18 | } 19 | mark { 20 | background-color: @zesty-light-blue; 21 | } 22 | img { 23 | border-radius: 4px; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/Dashboard/components/AccountInfo/index.js: -------------------------------------------------------------------------------- 1 | export { AccountInfo } from "./AccountInfo"; 2 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/Dashboard/components/ChartDashboard/ChartDashboard.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | 3 | .ChartDashboard { 4 | } 5 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/Dashboard/components/ChartDashboard/index.js: -------------------------------------------------------------------------------- 1 | export { ChartDashboard } from "./ChartDashboard"; 2 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/Dashboard/components/InstanceActivity/InstanceActivity.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/typography.less"; 2 | .WrapperActivity { 3 | .Stats { 4 | display: grid; 5 | grid-template-columns: repeat(2, 1fr); 6 | margin: 16px 0 32px; 7 | } 8 | .Stat { 9 | display: flex; 10 | flex-direction: column; 11 | align-items: center; 12 | } 13 | h1 { 14 | text-align: center; 15 | margin: 0 8px; 16 | } 17 | 18 | dt { 19 | padding-bottom: 8px; 20 | } 21 | dl { 22 | text-align: center; 23 | column-count: 2; 24 | } 25 | dd { 26 | border: 2px solid black; 27 | display: inline-block; 28 | padding: 8px 24px; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/Dashboard/components/InstanceActivity/index.js: -------------------------------------------------------------------------------- 1 | export { InstanceActivity } from "./InstanceActivity"; 2 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/Dashboard/components/QuickJumps/QuickJumps.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | 4 | .QuickJumps { 5 | flex: 1; 6 | display: flex; 7 | 8 | .Icon { 9 | display: block; 10 | font-size: 24px; 11 | margin: 3px auto; 12 | } 13 | .Docs { 14 | color: @zesty-light-grey; 15 | 16 | margin-top: 12px; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/Dashboard/components/QuickJumps/index.js: -------------------------------------------------------------------------------- 1 | export { QuickJumps } from "./QuickJumps"; 2 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/Dashboard/components/UserLatest/index.js: -------------------------------------------------------------------------------- 1 | export { UserLatest } from "./UserLatest"; 2 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/Dashboard/index.js: -------------------------------------------------------------------------------- 1 | import Dashboard from "./Dashboard"; 2 | export { Dashboard }; 3 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemCreate/index.js: -------------------------------------------------------------------------------- 1 | import { ItemCreate } from "./ItemCreate"; 2 | export { ItemCreate }; 3 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Content/Actions/Actions.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/src/apps/content-editor/src/app/views/ItemEdit/Content/Actions/Actions.less -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Content/Actions/Widgets/ContentLinks/ContentLinks.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | 4 | .ContentLinks { 5 | .Content { 6 | ul { 7 | padding: 0; 8 | li { 9 | margin-bottom: 4px; 10 | list-style-type: none; 11 | svg { 12 | width: 16px; 13 | } 14 | } 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Content/Actions/Widgets/ContentLinks/InstantUrl/InstantUrl.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | 4 | .InstantUrl { 5 | } 6 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Content/Actions/Widgets/ContentLinks/InstantUrl/index.js: -------------------------------------------------------------------------------- 1 | export { InstantUrl } from "./InstantUrl"; 2 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Content/Actions/Widgets/ContentLinks/index.js: -------------------------------------------------------------------------------- 1 | export { ContentLinks } from "./ContentLinks"; 2 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Content/Actions/Widgets/Modal/Modal.js: -------------------------------------------------------------------------------- 1 | import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; 2 | import { faWindowClose } from "@fortawesome/free-solid-svg-icons"; 3 | 4 | import styles from "./Modal.less"; 5 | export const Modal = ({ handleClose, children }) => { 6 | return ( 7 |
8 |
9 | 10 | {children} 11 |
12 |
13 | ); 14 | }; 15 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Content/Actions/Widgets/Modal/index.js: -------------------------------------------------------------------------------- 1 | export { Modal } from "./Modal"; 2 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Content/Actions/Widgets/Release/index.js: -------------------------------------------------------------------------------- 1 | export { Release } from "./Release"; 2 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Content/Actions/Widgets/SharedWidget.less: -------------------------------------------------------------------------------- 1 | .Button { 2 | margin-bottom: 8px; 3 | @media (max-width: 1200px) { 4 | font-size: 12px; 5 | } 6 | } 7 | 8 | .CardListSpace { 9 | ul { 10 | padding: 0; 11 | li { 12 | margin-bottom: 4px; 13 | list-style-type: none; 14 | } 15 | } 16 | } 17 | .FooterSpacing { 18 | a { 19 | margin: 8px 8px 8px 0; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Content/Actions/Widgets/Unpublish/index.js: -------------------------------------------------------------------------------- 1 | export { Unpublish } from "./Unpublish"; 2 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Content/Actions/Widgets/Widget/index.js: -------------------------------------------------------------------------------- 1 | import cx from "classnames"; 2 | import styles from "./Widget.less"; 3 | 4 | export function Widget(props) { 5 | return ( 6 | 9 | ); 10 | } 11 | 12 | export function WidgetHeader(props) { 13 | return ( 14 |
15 | {props.children} 16 |
17 | ); 18 | } 19 | 20 | export function WidgetContent(props) { 21 | return ( 22 |
23 | {props.children} 24 |
25 | ); 26 | } 27 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Content/Actions/Widgets/WidgetDeleteItem/index.js: -------------------------------------------------------------------------------- 1 | export { WidgetDeleteItem } from "./WidgetDeleteItem"; 2 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Content/Actions/Widgets/WidgetDraftHistory/WidgetDraftHistory.less: -------------------------------------------------------------------------------- 1 | .AppLink { 2 | color: #026aa2; 3 | font-size: 14px; 4 | line-height: 20px; 5 | font-weight: 500; 6 | 7 | &:hover, 8 | &:focus, 9 | &:active { 10 | color: #026aa2; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Content/Actions/Widgets/WidgetDraftHistory/index.js: -------------------------------------------------------------------------------- 1 | import WidgetDraftHistory from "./WidgetDraftHistory"; 2 | export default WidgetDraftHistory; 3 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Content/Actions/Widgets/WidgetListed/WidgetListed.less: -------------------------------------------------------------------------------- 1 | .WidgetListed { 2 | article { 3 | margin-bottom: 16px; 4 | } 5 | span { 6 | display: flex; 7 | align-items: center; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Content/Actions/Widgets/WidgetListed/index.js: -------------------------------------------------------------------------------- 1 | export { WidgetListed } from "./WidgetListed"; 2 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Content/Actions/Widgets/WidgetPublishHistory/WidgetPublishHistory.less: -------------------------------------------------------------------------------- 1 | .AppLink { 2 | color: #026aa2; 3 | font-size: 14px; 4 | line-height: 20px; 5 | font-weight: 500; 6 | 7 | &:hover, 8 | &:focus, 9 | &:active { 10 | color: #026aa2; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Content/Actions/Widgets/WidgetPublishHistory/index.js: -------------------------------------------------------------------------------- 1 | import WidgetPublishHistory from "./WidgetPublishHistory"; 2 | export default WidgetPublishHistory; 3 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Content/Actions/Widgets/WidgetPurgeItem/index.js: -------------------------------------------------------------------------------- 1 | import { WidgetPurgeItem } from "./WidgetPurgeItem"; 2 | export default WidgetPurgeItem; 3 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Content/Actions/Widgets/WidgetQuickShare/index.js: -------------------------------------------------------------------------------- 1 | export { WidgetQuickShare } from "./WidgetQuickShare"; 2 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Content/Actions/Widgets/WorkflowRequest/WorkflowRequests.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/typography.less"; 2 | 3 | .TextArea { 4 | min-width: auto; 5 | width: calc(100% - 20px); 6 | } 7 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Content/Actions/Widgets/WorkflowRequest/index.js: -------------------------------------------------------------------------------- 1 | import WorkflowRequest from "./WorkflowRequest"; 2 | export { WorkflowRequest }; 3 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Content/Actions/index.js: -------------------------------------------------------------------------------- 1 | export { Actions } from "./Actions"; 2 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Content/index.js: -------------------------------------------------------------------------------- 1 | import Content from "./Content"; 2 | export { Content }; 3 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/HeadlessOptions/index.js: -------------------------------------------------------------------------------- 1 | export { HeadlessOptions } from "./HeadlessOptions"; 2 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/ItemHead/ItemHead.js: -------------------------------------------------------------------------------- 1 | import { Head } from "shell/components/Head"; 2 | 3 | import styles from "./ItemHead.less"; 4 | export default function ItemHead(props) { 5 | return ( 6 |
7 | 8 |
9 | ); 10 | } 11 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/ItemHead/ItemHead.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | 4 | .ItemHead { 5 | flex: 1; 6 | overflow: scroll; 7 | background-color: #f9fafb; 8 | height: 100%; 9 | 10 | // .Head { 11 | // display: flex; 12 | // flex-direction: column-reverse; 13 | 14 | // @media screen and (min-width: 2000px) { 15 | // flex-direction: row; 16 | // } 17 | 18 | // } 19 | } 20 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/ItemHead/index.js: -------------------------------------------------------------------------------- 1 | import ItemHead from "./ItemHead"; 2 | export { ItemHead }; 3 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Meta/settings/CanonicalTag.less: -------------------------------------------------------------------------------- 1 | .CanonicalTag { 2 | label { 3 | display: flex; 4 | align-items: center; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/Meta/settings/SitemapPriority.less: -------------------------------------------------------------------------------- 1 | .SitemapPriority { 2 | label { 3 | display: flex; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/components/Header/DuoModeToggle/index.js: -------------------------------------------------------------------------------- 1 | export { DuoModeToggle } from "./DuoModeToggle"; 2 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/components/Header/ItemNavigation/index.js: -------------------------------------------------------------------------------- 1 | import ItemNavigation from "./ItemNavigation"; 2 | export default ItemNavigation; 3 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/components/Header/LanguageSelector/LanguageSelector.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zesty-io/manager-ui/9e8343318bad7090dd129abf8762f3fa700a4767/src/apps/content-editor/src/app/views/ItemEdit/components/Header/LanguageSelector/LanguageSelector.less -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/components/Header/LanguageSelector/index.js: -------------------------------------------------------------------------------- 1 | export { LanguageSelector } from "./LanguageSelector"; 2 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/components/Header/LiveUrl/LiveUrl.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | 3 | .Unpublished { 4 | color: @zesty-light-grey; 5 | } 6 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/components/Header/LiveUrl/index.js: -------------------------------------------------------------------------------- 1 | export { LiveUrl } from "./LiveUrl"; 2 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/components/Header/PreviewUrl/PreviewUrl.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/components/Header/PreviewUrl/index.js: -------------------------------------------------------------------------------- 1 | export { PreviewUrl } from "./PreviewUrl"; 2 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/components/Header/index.js: -------------------------------------------------------------------------------- 1 | export { Header } from "./Header"; 2 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/ItemEdit/index.js: -------------------------------------------------------------------------------- 1 | import ItemEdit from "./ItemEdit"; 2 | export { ItemEdit }; 3 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/LinkCreate/LinkCreate.less: -------------------------------------------------------------------------------- 1 | .Editor { 2 | width: 85vw; 3 | } 4 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/LinkCreate/index.js: -------------------------------------------------------------------------------- 1 | export { LinkCreate } from "./LinkCreate"; 2 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/LinkEdit/LinkEdit.less: -------------------------------------------------------------------------------- 1 | .Editor { 2 | width: 85vw; 3 | height: calc(100vh - 54px); 4 | } 5 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/app/views/LinkEdit/index.js: -------------------------------------------------------------------------------- 1 | import LinkEdit from "./LinkEdit"; 2 | export { LinkEdit }; 3 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/index.js: -------------------------------------------------------------------------------- 1 | import ContentEditor from "./app"; 2 | 3 | import { injectReducer, store } from "shell/store"; 4 | 5 | import { modal } from "./store/modal"; 6 | import { listFilters } from "./store/listFilters"; 7 | 8 | // Inject reducers into shared app shell store 9 | injectReducer(store, "modal", modal); 10 | injectReducer(store, "listFilters", listFilters); 11 | 12 | export default ContentEditor; 13 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/store/items.js: -------------------------------------------------------------------------------- 1 | export function items(state = {}, action) { 2 | switch (action.type) { 3 | default: 4 | return state; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/store/listFilters.js: -------------------------------------------------------------------------------- 1 | export function listFilters(state = {}, action) { 2 | switch (action.type) { 3 | case "PERSIST_LIST_FILTERS": 4 | return { ...state, [action.modelZUID]: action.filters }; 5 | 6 | default: 7 | return state; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/store/modal.js: -------------------------------------------------------------------------------- 1 | export function modal(state = { isOpen: false }, action) { 2 | switch (action.type) { 3 | case "MODAL_OPEN": 4 | return { isOpen: true }; 5 | case "MODAL_CLOSE": 6 | return { isOpen: false }; 7 | default: 8 | return state; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/apps/content-editor/src/store/sets.js: -------------------------------------------------------------------------------- 1 | export function sets(state = {}, action) { 2 | switch (action.type) { 3 | default: 4 | // return state 5 | return { 6 | xxxx1: { 7 | name: "Page Set", 8 | }, 9 | xxxx2: { 10 | name: "Template Set", 11 | }, 12 | xxxx3: { 13 | name: "Data Set", 14 | }, 15 | }; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/apps/custom-app/src/app/CustomApp.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/typography.less"; 2 | 3 | .CustomApp { 4 | height: calc(100vh - 40px); 5 | width: 100%; 6 | iframe { 7 | height: calc(100vh - 40px); 8 | width: 100%; 9 | } 10 | } 11 | 12 | .InstallApp { 13 | padding: 16px; 14 | .Filter { 15 | display: flex; 16 | margin: 0 0 32px 0; 17 | } 18 | } 19 | 20 | .Grid { 21 | display: grid; 22 | grid-gap: 32px; 23 | grid-template-columns: repeat(auto-fill, minmax(400px, 1fr)); 24 | grid-auto-rows: 250px; 25 | } 26 | 27 | .Register { 28 | background-color: #f2f4fb; 29 | ol { 30 | list-style-position: inside; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/apps/custom-app/src/app/index.js: -------------------------------------------------------------------------------- 1 | import CustomApp from "./CustomApp"; 2 | export { CustomApp }; 3 | -------------------------------------------------------------------------------- /src/apps/custom-app/src/index.js: -------------------------------------------------------------------------------- 1 | import CustomApp from "./app/CustomApp"; 2 | export default CustomApp; 3 | -------------------------------------------------------------------------------- /src/apps/home/index.ts: -------------------------------------------------------------------------------- 1 | import { HomeApp } from "./app"; 2 | export default HomeApp; 3 | -------------------------------------------------------------------------------- /src/apps/leads/src/app/components/LeadExporter/DownloadCSVButton/index.js: -------------------------------------------------------------------------------- 1 | import DownloadCSVButton from "./DownloadCSVButton"; 2 | export { DownloadCSVButton }; 3 | -------------------------------------------------------------------------------- /src/apps/leads/src/app/components/LeadExporter/FormGroupSelector/FormGroupSelector.model.js: -------------------------------------------------------------------------------- 1 | export const FORM_GROUP_PRESETS = { 2 | ALL: "ALL", 3 | }; 4 | -------------------------------------------------------------------------------- /src/apps/leads/src/app/components/LeadExporter/FormGroupSelector/index.js: -------------------------------------------------------------------------------- 1 | import FormGroupSelector from "./FormGroupSelector"; 2 | export { FormGroupSelector }; 3 | -------------------------------------------------------------------------------- /src/apps/leads/src/app/components/LeadExporter/LeadExporter.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | 4 | .LeadExporter { 5 | display: flex; 6 | flex-wrap: wrap; 7 | align-items: flex-end; 8 | background-color: @zesty-tab-blue; 9 | padding: 16px 32px; 10 | 11 | span, 12 | label { 13 | color: @zesty-light-blue; 14 | } 15 | 16 | .filter { 17 | margin: 0px 8px 8px 0; 18 | min-width: 300px; 19 | &.Date { 20 | min-width: 150px; 21 | } 22 | 23 | &.SearchEnd { 24 | margin-left: auto; 25 | } 26 | .Search { 27 | margin: 0; 28 | } 29 | 30 | input { 31 | width: 100%; 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/apps/leads/src/app/components/LeadExporter/TableDateFilter/TableDateFilter.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | 4 | .customDate label { 5 | color: @zesty-light-blue; 6 | } 7 | 8 | .customDate + .customDate { 9 | margin-top: 8px; 10 | } 11 | 12 | .customDateWrapper { 13 | margin-top: 8px; 14 | } 15 | -------------------------------------------------------------------------------- /src/apps/leads/src/app/components/LeadExporter/TableDateFilter/TableDateFilter.model.js: -------------------------------------------------------------------------------- 1 | export const DATE_PRESETS = { 2 | ALL: "ALL_DAYS", 3 | CUSTOM: "CUSTOM_DAYS", 4 | NINETY: "PREVIOUS_90_DAYS", 5 | SIXTY: "PREVIOUS_60_DAYS", 6 | THIRTY: "PREVIOUS_30_DAYS", 7 | }; 8 | -------------------------------------------------------------------------------- /src/apps/leads/src/app/components/LeadExporter/TableDateFilter/index.js: -------------------------------------------------------------------------------- 1 | import TableDateFilter from "./TableDateFilter"; 2 | export { TableDateFilter }; 3 | -------------------------------------------------------------------------------- /src/apps/leads/src/app/components/LeadExporter/index.js: -------------------------------------------------------------------------------- 1 | export { LeadExporter } from "./LeadExporter"; 2 | -------------------------------------------------------------------------------- /src/apps/leads/src/app/components/LeadsTable/index.js: -------------------------------------------------------------------------------- 1 | import LeadsTable from "./LeadsTable"; 2 | export { LeadsTable }; 3 | -------------------------------------------------------------------------------- /src/apps/leads/src/app/views/GetStarted/GetStarted.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | 4 | .GetStarted { 5 | padding: 32px; 6 | } 7 | -------------------------------------------------------------------------------- /src/apps/leads/src/app/views/GetStarted/index.js: -------------------------------------------------------------------------------- 1 | export { GetStarted } from "./GetStarted.js"; 2 | -------------------------------------------------------------------------------- /src/apps/leads/src/app/views/Leads/Leads.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | 4 | .Leads { 5 | height: calc(100vh - 54px); 6 | overflow-y: auto; 7 | } 8 | -------------------------------------------------------------------------------- /src/apps/leads/src/app/views/Leads/index.js: -------------------------------------------------------------------------------- 1 | import Leads from "./Leads"; 2 | export default Leads; 3 | -------------------------------------------------------------------------------- /src/apps/leads/src/index.js: -------------------------------------------------------------------------------- 1 | import { store, injectReducer } from "shell/store"; 2 | import { leads } from "./store/leads"; 3 | import { filter } from "./store/filter"; 4 | import Leads from "./app/views/Leads"; 5 | 6 | injectReducer(store, "leads", leads); 7 | injectReducer(store, "filter", filter); 8 | 9 | export default Leads; 10 | -------------------------------------------------------------------------------- /src/apps/marketplace/src/app/view/CustomApp.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/typography.less"; 2 | 3 | .CustomApp { 4 | height: calc(100vh - 40px); 5 | width: 100%; 6 | iframe { 7 | height: calc(100vh - 40px); 8 | width: 100%; 9 | } 10 | } 11 | 12 | .InstallApp { 13 | padding: 16px; 14 | .Filter { 15 | display: flex; 16 | margin: 0 0 32px 0; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/apps/marketplace/src/index.ts: -------------------------------------------------------------------------------- 1 | import { MarketplaceApp } from "./app"; 2 | export default MarketplaceApp; 3 | -------------------------------------------------------------------------------- /src/apps/media/src/app/components/Controls/index.ts: -------------------------------------------------------------------------------- 1 | import { Controls } from "./Controls"; 2 | export default Controls; 3 | -------------------------------------------------------------------------------- /src/apps/media/src/app/components/Thumbnail/Loading.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | 4 | .Load { 5 | position: absolute; 6 | top: 0; 7 | left: 0; 8 | height: 100%; 9 | width: 100%; 10 | } 11 | 12 | .Loading { 13 | animation: shimmer 3s infinite linear; 14 | background: linear-gradient(0.35turn, #eff1f3 25%, #e2e2e2 45%, #eff1f3 65%); 15 | background-size: 1000px 100%; 16 | 17 | // Perf: Hack to trigger hardware acceleration for animation performance 18 | transform: translate3d(0, 0, 0); 19 | } 20 | 21 | @keyframes shimmer { 22 | 100% { 23 | background-position: -1000px 0; 24 | } 25 | 0% { 26 | background-position: 1000px 0; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/apps/media/src/index.js: -------------------------------------------------------------------------------- 1 | import { MediaApp } from "./app"; 2 | 3 | export default function DamApp(props) { 4 | return ; 5 | } 6 | -------------------------------------------------------------------------------- /src/apps/release/src/app/ReleaseApp.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | 4 | .ReleaseApp { 5 | height: calc(100vh - 54px); 6 | overflow: auto; 7 | > main { 8 | margin: 16px; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/apps/release/src/app/index.js: -------------------------------------------------------------------------------- 1 | import ReleaseApp from "./ReleaseApp.js"; 2 | export default ReleaseApp; 3 | -------------------------------------------------------------------------------- /src/apps/release/src/app/views/Activate/Activate.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | .Activate { 4 | height: calc(100vh - 225px); 5 | display: flex; 6 | flex-direction: column; 7 | align-items: center; 8 | justify-content: center; 9 | 10 | .Add { 11 | margin-top: 32px; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/apps/release/src/app/views/Activate/index.js: -------------------------------------------------------------------------------- 1 | export { Activate } from "./Activate.js"; 2 | -------------------------------------------------------------------------------- /src/apps/release/src/app/views/CreateRelease/CreateRelease.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | .CreateRelease { 4 | height: calc(100vh - 225px); 5 | display: flex; 6 | flex-direction: column; 7 | align-items: center; 8 | justify-content: center; 9 | 10 | .Create { 11 | margin-top: 32px; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/apps/release/src/app/views/CreateRelease/index.js: -------------------------------------------------------------------------------- 1 | export { CreateRelease } from "./CreateRelease.js"; 2 | -------------------------------------------------------------------------------- /src/apps/release/src/app/views/ListReleases/index.js: -------------------------------------------------------------------------------- 1 | export { ListReleases } from "./ListReleases.js"; 2 | -------------------------------------------------------------------------------- /src/apps/release/src/app/views/ViewRelease/ViewRelease.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | 4 | .Instructions { 5 | list-style-position: inside; 6 | margin: 36px 0; 7 | } 8 | -------------------------------------------------------------------------------- /src/apps/release/src/app/views/ViewRelease/components/Completed/Completed.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | .Completed { 4 | height: calc(100vh - 225px); 5 | display: flex; 6 | flex-direction: column; 7 | align-items: center; 8 | justify-content: center; 9 | } 10 | -------------------------------------------------------------------------------- /src/apps/release/src/app/views/ViewRelease/components/Completed/index.js: -------------------------------------------------------------------------------- 1 | export { Completed } from "./Completed"; 2 | -------------------------------------------------------------------------------- /src/apps/release/src/app/views/ViewRelease/components/Header/Header.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | .Header { 4 | display: grid; 5 | grid-template-columns: auto max-content 225px 1fr max-content; 6 | column-gap: 16px; 7 | align-items: center; 8 | } 9 | -------------------------------------------------------------------------------- /src/apps/release/src/app/views/ViewRelease/components/Header/components/DeleteRelease/DeleteRelease.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | 3 | .DeleteReleaseModal { 4 | top: 0; 5 | right: 0; 6 | box-shadow: 2px 2px 4px #333; 7 | 8 | .ModalFooter { 9 | display: flex; 10 | justify-content: space-between; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/apps/release/src/app/views/ViewRelease/components/Header/components/DeleteRelease/index.js: -------------------------------------------------------------------------------- 1 | export { DeleteRelease } from "./DeleteRelease"; 2 | -------------------------------------------------------------------------------- /src/apps/release/src/app/views/ViewRelease/components/Header/components/PublishAll/PublishAll.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | 3 | .PublishAllModal { 4 | top: 0; 5 | left: 0; 6 | box-shadow: 2px 2px 4px #333; 7 | min-width: 420px; 8 | 9 | .ModalFooter { 10 | display: flex; 11 | justify-content: space-between; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/apps/release/src/app/views/ViewRelease/components/Header/components/PublishAll/index.js: -------------------------------------------------------------------------------- 1 | export { PublishAll } from "./PublishAll"; 2 | -------------------------------------------------------------------------------- /src/apps/release/src/app/views/ViewRelease/components/Header/index.js: -------------------------------------------------------------------------------- 1 | export { Header } from "./Header"; 2 | -------------------------------------------------------------------------------- /src/apps/release/src/app/views/ViewRelease/components/PlanStep/index.js: -------------------------------------------------------------------------------- 1 | export { PlanStep } from "./PlanStep"; 2 | -------------------------------------------------------------------------------- /src/apps/release/src/app/views/ViewRelease/components/PlanTable/index.js: -------------------------------------------------------------------------------- 1 | export { PlanTable } from "./PlanTable"; 2 | -------------------------------------------------------------------------------- /src/apps/release/src/app/views/ViewRelease/index.js: -------------------------------------------------------------------------------- 1 | export { ViewRelease } from "./ViewRelease.js"; 2 | -------------------------------------------------------------------------------- /src/apps/release/src/index.js: -------------------------------------------------------------------------------- 1 | import ReleaseApp from "./app"; 2 | export default ReleaseApp; 3 | -------------------------------------------------------------------------------- /src/apps/reports/src/app/views/ActivityLog/components/ActionTimelineItem/FileActionTimelineItem.js: -------------------------------------------------------------------------------- 1 | import { useSelector } from "react-redux"; 2 | import { TimelineItem } from "./TimelineItem"; 3 | 4 | export const FileActionTimelineItem = (props) => { 5 | const fileData = useSelector((state) => 6 | Object.values(state.files).find( 7 | (item) => item.ZUID === props.action.affectedZUID 8 | ) 9 | ); 10 | 11 | return ( 12 | 22 | ); 23 | }; 24 | -------------------------------------------------------------------------------- /src/apps/reports/src/app/views/ActivityLog/components/ApiErrorState.js: -------------------------------------------------------------------------------- 1 | import ErrorIcon from "@mui/icons-material/Error"; 2 | import { Box, Typography, Button } from "@mui/material"; 3 | export const ApiErrorState = (props) => { 4 | return ( 5 | 6 | 7 | 8 | Whoops! 9 | 10 | 11 | An error occurred loading the data 12 | 13 | 16 | 17 | ); 18 | }; 19 | -------------------------------------------------------------------------------- /src/apps/reports/src/app/views/ActivityLog/utils.ts: -------------------------------------------------------------------------------- 1 | import moment from "moment"; 2 | 3 | // This assumes the date passed in the param has a format of YYYY-MM-DD 4 | export const toUTC = (originalDate: string) => { 5 | if (!originalDate || !moment(originalDate).isValid) return; 6 | 7 | const [year, month, date] = originalDate.split("-"); 8 | 9 | if (isNaN(Number(year)) || isNaN(Number(month)) || isNaN(Number(date))) 10 | return; 11 | 12 | return moment() 13 | .year(Number(year)) 14 | .month(Number(month) - 1) 15 | .date(Number(date)) 16 | .utc() 17 | .format("L"); 18 | }; 19 | -------------------------------------------------------------------------------- /src/apps/reports/src/app/views/AuditTrail/components/controls/styles.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | 4 | .auditControls { 5 | align-items: center; 6 | display: flex; 7 | padding: 16px 32px; 8 | margin: 0; 9 | } 10 | -------------------------------------------------------------------------------- /src/apps/reports/src/app/views/AuditTrail/components/pagination/styles.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | .auditPagination { 3 | align-items: center; 4 | display: flex; 5 | flex-direction: row-reverse; 6 | padding: 2rem; 7 | 8 | .group { 9 | .child { 10 | margin: 0; 11 | } 12 | } 13 | 14 | // span { 15 | // background: #697a91; 16 | // color: @zesty-light-gray; 17 | // cursor: pointer; 18 | // margin: 0 0.5em; 19 | // padding: 1em; 20 | // } 21 | // span:first-child { 22 | // margin-left: 0; 23 | // } 24 | // span:last-child { 25 | // margin-right: 0; 26 | // } 27 | } 28 | -------------------------------------------------------------------------------- /src/apps/reports/src/app/views/AuditTrail/styles.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | 3 | .auditApp { 4 | background-color: @zesty-tab-color; 5 | display: flex; 6 | flex-direction: column; 7 | height: 100%; 8 | position: relative; 9 | overflow: hidden; 10 | 11 | .logList { 12 | flex: 1; 13 | margin: 0; 14 | padding: 0 2rem 5rem; 15 | overflow: auto; 16 | background-color: #f2f7fc; 17 | } 18 | 19 | .noLogs { 20 | color: @zesty-tab-blue; 21 | letter-spacing: 1px; 22 | margin: 2rem 0 0 0; 23 | } 24 | 25 | .paginationWrap { 26 | position: absolute; 27 | bottom: 0; 28 | right: 1rem; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/apps/reports/src/index.js: -------------------------------------------------------------------------------- 1 | import { injectReducer, store } from "shell/store"; 2 | import { logsInView } from "./store/logsInView"; 3 | import { ReportingApp } from "./app/ReportingApp"; 4 | 5 | injectReducer(store, "logsInView", logsInView); 6 | 7 | export default ReportingApp; 8 | -------------------------------------------------------------------------------- /src/apps/reports/src/store/searchTerm.js: -------------------------------------------------------------------------------- 1 | export function searchTerm(state = "", action) { 2 | if (action.type === SEARCH_LOGS) { 3 | return action.term; 4 | } else { 5 | return state; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/apps/schema/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://EditorConfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | 15 | [*.{yml,yaml}] 16 | indent_size = 2 17 | -------------------------------------------------------------------------------- /src/apps/schema/src/app/components/ModelInfo/index.tsx: -------------------------------------------------------------------------------- 1 | import { Box } from "@mui/material"; 2 | import { ActivityDetails } from "./ActivityDetails"; 3 | import { ModelDetails } from "./ModelDetails"; 4 | import { RelatedModels } from "./RelatedModels"; 5 | 6 | export const ModelInfo = () => { 7 | return ( 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | ); 16 | }; 17 | -------------------------------------------------------------------------------- /src/apps/schema/src/index.js: -------------------------------------------------------------------------------- 1 | import { store, injectReducer } from "shell/store"; 2 | 3 | import { navSchema } from "./store/navSchema"; 4 | import { parents } from "./store/parents"; 5 | 6 | import { SchemaApp } from "./app"; 7 | 8 | injectReducer(store, "navSchema", navSchema); 9 | injectReducer(store, "parents", parents); 10 | 11 | export default SchemaApp; 12 | -------------------------------------------------------------------------------- /src/apps/seo/src/index.js: -------------------------------------------------------------------------------- 1 | import { store, injectReducer } from "shell/store"; 2 | import { redirects } from "./store/redirects"; 3 | import { redirectsFilter } from "./store/redirectsFilter"; 4 | import { imports } from "./store/imports"; 5 | import SeoApp from "./app"; 6 | 7 | injectReducer(store, "redirects", redirects); 8 | injectReducer(store, "redirectsFilter", redirectsFilter); 9 | injectReducer(store, "imports", imports); 10 | 11 | export default SeoApp; 12 | -------------------------------------------------------------------------------- /src/apps/seo/src/store/redirectsFilter.js: -------------------------------------------------------------------------------- 1 | export const REDIRECT_FILTER = "REDIRECT_FILTER"; 2 | 3 | export function redirectsFilter(state = "", action) { 4 | switch (action.type) { 5 | case REDIRECT_FILTER: 6 | return action.filter; 7 | default: 8 | return state; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/apps/seo/src/views/RedirectsManager/RedirectImportTable/ImportTableRowDisabled/index.js: -------------------------------------------------------------------------------- 1 | import ImportTableRowDisabled from "./ImportTableRowDisabled"; 2 | export default ImportTableRowDisabled; 3 | -------------------------------------------------------------------------------- /src/apps/seo/src/views/RedirectsManager/RedirectImportTable/RedirectImportTableRow/index.js: -------------------------------------------------------------------------------- 1 | import RedirectImportTableRow from "./RedirectImportTableRow"; 2 | export default RedirectImportTableRow; 3 | -------------------------------------------------------------------------------- /src/apps/seo/src/views/RedirectsManager/RedirectImportTable/index.js: -------------------------------------------------------------------------------- 1 | import RedirectImportTable from "./RedirectImportTable"; 2 | export default RedirectImportTable; 3 | -------------------------------------------------------------------------------- /src/apps/seo/src/views/RedirectsManager/RedirectsTable/RedirectCreator/index.js: -------------------------------------------------------------------------------- 1 | export { RedirectCreator } from "./RedirectCreator"; 2 | -------------------------------------------------------------------------------- /src/apps/seo/src/views/RedirectsManager/RedirectsTable/RedirectsTableHeader/index.js: -------------------------------------------------------------------------------- 1 | import RedirectsTableHeader from "./RedirectsTableHeader"; 2 | export default RedirectsTableHeader; 3 | -------------------------------------------------------------------------------- /src/apps/seo/src/views/RedirectsManager/RedirectsTable/RedirectsTableRow/index.js: -------------------------------------------------------------------------------- 1 | import RedirectsTableRow from "./RedirectsTableRow"; 2 | export default RedirectsTableRow; 3 | -------------------------------------------------------------------------------- /src/apps/settings/src/app/components/Nav/index.ts: -------------------------------------------------------------------------------- 1 | import { SettingsNav } from "./SettingsNav"; 2 | export { SettingsNav }; 3 | -------------------------------------------------------------------------------- /src/apps/settings/src/app/views/Fonts/index.js: -------------------------------------------------------------------------------- 1 | import Browse from "./Browse.js"; 2 | import Installed from "./Installed.js"; 3 | export { Browse, Installed }; 4 | -------------------------------------------------------------------------------- /src/apps/settings/src/app/views/Instance/index.js: -------------------------------------------------------------------------------- 1 | import Instance from "./Instance"; 2 | export { Instance }; 3 | -------------------------------------------------------------------------------- /src/apps/settings/src/app/views/Robots/index.js: -------------------------------------------------------------------------------- 1 | import Robots from "./Robots"; 2 | export { Robots }; 3 | -------------------------------------------------------------------------------- /src/apps/settings/src/app/views/Styles/index.js: -------------------------------------------------------------------------------- 1 | import Styles from "./Styles"; 2 | export { Styles }; 3 | -------------------------------------------------------------------------------- /src/apps/settings/src/index.js: -------------------------------------------------------------------------------- 1 | import Settings from "./app/App"; 2 | 3 | import { store, injectReducer } from "shell/store"; 4 | import { settings } from "shell/store/settings"; 5 | 6 | injectReducer(store, "settings", settings); 7 | 8 | export default Settings; 9 | -------------------------------------------------------------------------------- /src/engine/actionTypes.ts: -------------------------------------------------------------------------------- 1 | export type ActionType = 2 | | "SET_VALUE" 3 | | "CLICK" 4 | | "FOCUS" 5 | | "BLUR" 6 | | "NAVIGATE" 7 | | "CUSTOM"; 8 | 9 | export interface PayloadMap { 10 | SET_VALUE: { refKey: string; value: string }; 11 | CLICK: { refKey: string }; 12 | FOCUS: { refKey: string }; 13 | BLUR: { refKey: string }; 14 | NAVIGATE: { url: string; replace?: boolean }; 15 | CUSTOM: { refKey: string; event: string; data?: any }; 16 | } 17 | 18 | export type Action = { 19 | [K in keyof PayloadMap]: { type: K; payload: PayloadMap[K] }; 20 | }[keyof PayloadMap]; 21 | -------------------------------------------------------------------------------- /src/engine/navigator.ts: -------------------------------------------------------------------------------- 1 | // src/engine/navigator.ts 2 | let navigateFn: (to: string, options?: { replace?: boolean }) => void; 3 | 4 | export function registerNavigate(fn: typeof navigateFn) { 5 | navigateFn = fn; 6 | } 7 | 8 | export function getNavigate() { 9 | if (!navigateFn) { 10 | throw new Error( 11 | "Navigator not registered – did you forget to call registerNavigate()?" 12 | ); 13 | } 14 | return navigateFn; 15 | } 16 | -------------------------------------------------------------------------------- /src/engine/refRegistry.ts: -------------------------------------------------------------------------------- 1 | // src/engine/refRegistry.ts 2 | export interface RefHandle { 3 | setValue?(value: string): void; 4 | click?(): void; 5 | focus?(): void; 6 | blur?(): void; 7 | [event: string]: any; 8 | } 9 | 10 | export interface RefRegistryEntry { 11 | handle: RefHandle; 12 | context?: Record; 13 | options?: { 14 | skip?: boolean; 15 | }; 16 | } 17 | 18 | export const refRegistry: Record = {}; 19 | -------------------------------------------------------------------------------- /src/engine/useRegisterRef.ts: -------------------------------------------------------------------------------- 1 | import { useEffect } from "react"; 2 | import { RefHandle, refRegistry } from "./refRegistry"; 3 | 4 | export function useRegisterRef( 5 | key: string, 6 | handle: RefHandle | null, 7 | context?: Record, 8 | options?: { skip?: boolean } 9 | ) { 10 | useEffect(() => { 11 | if (options?.skip) return; 12 | if (handle) 13 | refRegistry[key] = { 14 | handle, 15 | context, 16 | }; 17 | return () => { 18 | delete refRegistry[key]; 19 | }; 20 | }, [key, handle, context]); 21 | } 22 | -------------------------------------------------------------------------------- /src/externals.d.ts: -------------------------------------------------------------------------------- 1 | declare module "*.less"; 2 | declare module "@zesty-io/core/*"; 3 | declare module "zuid"; 4 | -------------------------------------------------------------------------------- /src/globals.d.ts: -------------------------------------------------------------------------------- 1 | interface Config { 2 | COOKIE_NAME: string; 3 | URL_APPS: string; 4 | } 5 | 6 | declare var CONFIG: Config; 7 | -------------------------------------------------------------------------------- /src/shell/components/AppError/index.ts: -------------------------------------------------------------------------------- 1 | import { AppError } from "./AppError"; 2 | export default AppError; 3 | -------------------------------------------------------------------------------- /src/shell/components/Comment/utils.ts: -------------------------------------------------------------------------------- 1 | import { CommentResourceType } from "../../services/types"; 2 | 3 | export const countCharUsage = (string: string, char: string) => { 4 | const regex = new RegExp(char, "g"); 5 | return [...string.matchAll(regex)]?.length ?? 0; 6 | }; 7 | 8 | export const getResourceTypeByZuid = ( 9 | zuid: string 10 | ): CommentResourceType | "" => { 11 | switch (zuid?.split("-")?.[0]) { 12 | case "12": 13 | return "fields"; 14 | 15 | default: 16 | return ""; 17 | } 18 | }; 19 | -------------------------------------------------------------------------------- /src/shell/components/DirtyCodeModal/index.tsx: -------------------------------------------------------------------------------- 1 | import { DirtyCodeModal } from "./DirtyCodeModal"; 2 | export { DirtyCodeModal }; 3 | -------------------------------------------------------------------------------- /src/shell/components/FieldTypeEditor/Editors/Basic.less: -------------------------------------------------------------------------------- 1 | .BasicEditor { 2 | flex: 1; 3 | position: relative; 4 | 5 | &.hasError { 6 | border: 1px solid #f04438; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/shell/components/FieldTypeEditor/Editors/EmbedModal/EmbedModal.less: -------------------------------------------------------------------------------- 1 | .EmbedModal { 2 | width: 300px; 3 | } 4 | -------------------------------------------------------------------------------- /src/shell/components/FieldTypeEditor/Editors/EmbedModal/index.js: -------------------------------------------------------------------------------- 1 | export { EmbedModal } from "./EmbedModal"; 2 | -------------------------------------------------------------------------------- /src/shell/components/FieldTypeEditor/Editors/Html.less: -------------------------------------------------------------------------------- 1 | .Html { 2 | flex: 1; 3 | overflow: hidden; 4 | font-family: monospace; 5 | 6 | &.hasError { 7 | border: 1px solid #f04438; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/shell/components/FieldTypeEditor/Editors/Inline.less: -------------------------------------------------------------------------------- 1 | .InlineEditor { 2 | flex: 1; 3 | button { 4 | font-weight: bold; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/shell/components/FieldTypeEditor/Editors/LinkModal/LinkModal.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/typography.less"; 2 | 3 | .LinkModal { 4 | width: 600px; 5 | label { 6 | font-size: @svg-icon; 7 | margin: 0 0 8px; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/shell/components/FieldTypeEditor/Editors/LinkModal/index.js: -------------------------------------------------------------------------------- 1 | export { LinkModal } from "./LinkModal"; 2 | -------------------------------------------------------------------------------- /src/shell/components/FieldTypeEditor/Editors/Markdown.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | 4 | .Markdown { 5 | width: 100%; 6 | border: 4px solid #eaecf1; 7 | border-radius: 4px; 8 | flex: 1; 9 | min-height: 800px; 10 | max-height: 800px; 11 | padding: 8px 12px; 12 | 13 | font-family: Verdana, Arial, sans-serif !important; 14 | font-size: 14px !important; 15 | font-weight: 400 !important; 16 | letter-spacing: 0px !important; 17 | 18 | &.hasError { 19 | border: 1px solid #f04438; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/shell/components/FieldTypeEditor/Editors/react-prosemirror-menu/index.js: -------------------------------------------------------------------------------- 1 | export { menu } from "./menu"; 2 | export { inline } from "./inline-menu"; 3 | -------------------------------------------------------------------------------- /src/shell/components/FieldTypeEditor/Editors/react-prosemirror-plugins/index.js: -------------------------------------------------------------------------------- 1 | export { default as plugins } from "./plugins"; 2 | -------------------------------------------------------------------------------- /src/shell/components/FieldTypeEditor/Editors/react-prosemirror-schema/index.js: -------------------------------------------------------------------------------- 1 | import { Schema } from "prosemirror-model"; 2 | 3 | import nodes from "./nodes"; 4 | import marks from "./marks"; 5 | 6 | export const schema = new Schema({ nodes, marks }); 7 | -------------------------------------------------------------------------------- /src/shell/components/FieldTypeEditor/Editors/react-prosemirror-schema/nodes/blockquote.js: -------------------------------------------------------------------------------- 1 | import { getElementAttrs, attributes } from "./index.js"; 2 | 3 | // :: NodeSpec A blockquote (`
`) wrapping one or more blocks. 4 | export const blockquote = { 5 | content: "text*", 6 | group: "block", 7 | defining: true, 8 | attrs: attributes(), 9 | parseDOM: [ 10 | { 11 | tag: "blockquote", 12 | getAttrs(dom) { 13 | return getElementAttrs(dom); 14 | }, 15 | }, 16 | ], 17 | toDOM(node) { 18 | return ["blockquote", node.attrs, ["p", 0]]; 19 | }, 20 | }; 21 | -------------------------------------------------------------------------------- /src/shell/components/FieldTypeEditor/Editors/react-prosemirror-schema/nodes/br.js: -------------------------------------------------------------------------------- 1 | import { getElementAttrs, attributes } from "./index.js"; 2 | 3 | // :: NodeSpec A hard line break, represented in the DOM as `
`. 4 | export const br = { 5 | inline: true, 6 | group: "inline", 7 | selectable: false, 8 | attrs: attributes(), 9 | parseDOM: [ 10 | { 11 | tag: "br", 12 | getAttrs(dom) { 13 | return getElementAttrs(dom); 14 | }, 15 | }, 16 | ], 17 | toDOM(node) { 18 | return ["br", node.attrs]; 19 | }, 20 | }; 21 | -------------------------------------------------------------------------------- /src/shell/components/FieldTypeEditor/Editors/react-prosemirror-schema/nodes/div.js: -------------------------------------------------------------------------------- 1 | import { getElementAttrs, attributes } from "./index.js"; 2 | 3 | export const div = { 4 | content: "block+", 5 | group: "block", 6 | attrs: attributes(), 7 | parseDOM: [ 8 | { 9 | tag: "div", 10 | getAttrs(dom) { 11 | return getElementAttrs(dom); 12 | }, 13 | }, 14 | ], 15 | toDOM(node) { 16 | return ["div", node.attrs, 0]; 17 | }, 18 | }; 19 | -------------------------------------------------------------------------------- /src/shell/components/FieldTypeEditor/Editors/react-prosemirror-schema/nodes/hr.js: -------------------------------------------------------------------------------- 1 | import { getElementAttrs, attributes } from "./index.js"; 2 | 3 | // :: NodeSpec A horizontal rule (`
`). 4 | export const hr = { 5 | group: "block", 6 | attrs: attributes(), 7 | parseDOM: [ 8 | { 9 | tag: "hr", 10 | getAttrs(dom) { 11 | return getElementAttrs(dom); 12 | }, 13 | }, 14 | ], 15 | toDOM(node) { 16 | return ["hr", node.attrs]; 17 | }, 18 | }; 19 | -------------------------------------------------------------------------------- /src/shell/components/FieldTypeEditor/Editors/react-prosemirror-schema/nodes/lists.js: -------------------------------------------------------------------------------- 1 | import { orderedList, bulletList, listItem } from "prosemirror-schema-list"; 2 | 3 | export const ordered_list = { 4 | ...orderedList, 5 | content: "list_item+", 6 | group: "block", 7 | }; 8 | export const bullet_list = { 9 | ...bulletList, 10 | content: "list_item+", 11 | group: "block", 12 | }; 13 | export const list_item = { 14 | ...listItem, 15 | content: "paragraph block*", 16 | group: "block", 17 | }; 18 | -------------------------------------------------------------------------------- /src/shell/components/FieldTypeEditor/Editors/react-prosemirror-schema/nodes/paragraph.js: -------------------------------------------------------------------------------- 1 | import { getElementAttrs, attributes } from "./index.js"; 2 | 3 | // :: NodeSpec A plain paragraph textblock. Represented in the DOM 4 | // as a `

` element. 5 | export const paragraph = { 6 | content: "inline*", 7 | group: "block", 8 | attrs: attributes(), 9 | parseDOM: [ 10 | { 11 | tag: "p", 12 | getAttrs(dom) { 13 | return getElementAttrs(dom); 14 | }, 15 | }, 16 | ], 17 | toDOM(node) { 18 | return ["p", node.attrs, 0]; 19 | }, 20 | }; 21 | -------------------------------------------------------------------------------- /src/shell/components/FieldTypeEditor/index.js: -------------------------------------------------------------------------------- 1 | export { FieldTypeEditor } from "./FieldTypeEditor.js"; 2 | -------------------------------------------------------------------------------- /src/shell/components/FieldTypeImage/index.js: -------------------------------------------------------------------------------- 1 | export { FieldTypeImage } from "./FieldTypeImage"; 2 | -------------------------------------------------------------------------------- /src/shell/components/FieldTypeInternalLink/FieldTypeInternalLink.less: -------------------------------------------------------------------------------- 1 | .FieldTypeInternalLink { 2 | span { 3 | span { 4 | width: 100px; 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/shell/components/FieldTypeInternalLink/index.js: -------------------------------------------------------------------------------- 1 | export { FieldTypeInternalLink } from "./FieldTypeInternalLink"; 2 | -------------------------------------------------------------------------------- /src/shell/components/FieldTypeUUID/index.js: -------------------------------------------------------------------------------- 1 | export { FieldTypeUUID } from "./FieldTypeUUID"; 2 | -------------------------------------------------------------------------------- /src/shell/components/Filters/DateFilter/index.ts: -------------------------------------------------------------------------------- 1 | import { DateFilter } from "./DateFilter"; 2 | import { DateFilterValue } from "./types"; 3 | import { getDateFilterFn } from "./getDateFilter"; 4 | 5 | export { DateFilter, DateFilterValue, getDateFilterFn }; 6 | -------------------------------------------------------------------------------- /src/shell/components/Filters/DateFilter/types.ts: -------------------------------------------------------------------------------- 1 | export type PresetType = 2 | | "today" 3 | | "yesterday" 4 | | "last_7_days" 5 | | "last_14_days" 6 | | "last_30_days" 7 | | "last_3_months" 8 | | "last_12_months" 9 | | "this_week" 10 | | "this_year" 11 | | "quarter_to_date"; 12 | export type DateFilterModalType = "on" | "before" | "after" | "daterange" | ""; 13 | export interface DateRangeFilterValue { 14 | from: string | null; 15 | to: string | null; 16 | } 17 | 18 | export interface DateFilterValue { 19 | type: "preset" | DateFilterModalType; 20 | value: PresetType | DateRangeFilterValue | string; 21 | } 22 | -------------------------------------------------------------------------------- /src/shell/components/Filters/index.ts: -------------------------------------------------------------------------------- 1 | import { FilterButton } from "./FilterButton"; 2 | import { UserFilter } from "./UserFilter"; 3 | import { DateFilter } from "./DateFilter"; 4 | import { DateRangeFilter, DateRangeFilterValue } from "./DateRangeFilter"; 5 | import { GenericFilter } from "./GenericFilter"; 6 | 7 | export { 8 | FilterButton, 9 | UserFilter, 10 | DateFilter, 11 | DateRangeFilter, 12 | DateRangeFilterValue, 13 | GenericFilter, 14 | }; 15 | -------------------------------------------------------------------------------- /src/shell/components/GlobalTopbar/index.ts: -------------------------------------------------------------------------------- 1 | import { GlobalTopbar } from "./GlobalTopbar"; 2 | export default GlobalTopbar; 3 | -------------------------------------------------------------------------------- /src/shell/components/Head/Head.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | 4 | .Head { 5 | height: 100%; 6 | display: flex; 7 | flex-direction: column-reverse; 8 | display: grid; 9 | grid-template-columns: minmax(400px, 1fr) 1fr; 10 | .Tags { 11 | height: 100%; 12 | overflow-y: scroll; 13 | margin-left: 16px; 14 | } 15 | 16 | .Notice { 17 | display: flex; 18 | align-items: center; 19 | margin: 20px 16px 32px 16px; 20 | color: #5b667d; 21 | font-size: 14px; 22 | } 23 | 24 | .NoTags { 25 | margin: 32px; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/shell/components/Head/HeadTag/HeadTag.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | 3 | .HeadTag { 4 | &:hover, 5 | &:focus { 6 | .CardHeader { 7 | button { 8 | display: flex; 9 | } 10 | } 11 | } 12 | 13 | .DropDown { 14 | width: 210px; 15 | } 16 | 17 | .Pair { 18 | align-items: flex-end; 19 | display: flex; 20 | margin: 8px 0; 21 | gap: 8px; 22 | 23 | &:hover, 24 | &:focus { 25 | button { 26 | visibility: visible; 27 | } 28 | } 29 | 30 | .Value { 31 | width: 100%; 32 | } 33 | } 34 | } 35 | .Global { 36 | background-color: lighten(@zesty-gray, 15%); 37 | } 38 | -------------------------------------------------------------------------------- /src/shell/components/Head/HeadTag/index.js: -------------------------------------------------------------------------------- 1 | export { HeadTag } from "./HeadTag"; 2 | -------------------------------------------------------------------------------- /src/shell/components/Head/Preview/Preview.less: -------------------------------------------------------------------------------- 1 | .TagPreviewWrap { 2 | background: #333333; 3 | overflow: scroll; 4 | 5 | .TagPreview { 6 | height: 100%; 7 | font-size: 14px; 8 | font-family: "Courier New", Courier, monospace; 9 | padding: 16px; 10 | color: lightgray; 11 | 12 | .Tag { 13 | color: lightseagreen; 14 | } 15 | .localTag { 16 | color: gold; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/shell/components/Head/Preview/index.js: -------------------------------------------------------------------------------- 1 | export { Preview } from "./Preview"; 2 | -------------------------------------------------------------------------------- /src/shell/components/Head/index.js: -------------------------------------------------------------------------------- 1 | import Head from "./Head"; 2 | export { Head }; 3 | -------------------------------------------------------------------------------- /src/shell/components/RelationalFieldBase/FieldSelectorDialog/userFilter.ts: -------------------------------------------------------------------------------- 1 | import { GridFilterOperator } from "@mui/x-data-grid-pro"; 2 | 3 | export const userFilterOperator: GridFilterOperator = { 4 | label: "equals", 5 | value: "userEquals", 6 | getApplyFilterFn: (filterItem) => { 7 | if (!filterItem.value) { 8 | return null; 9 | } 10 | 11 | return (params): boolean => { 12 | const version = params.value; 13 | return version?.itemData?.meta?.createdByUserZUID === filterItem.value; 14 | }; 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /src/shell/components/Staging.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from "react"; 2 | import { Box } from "@mui/material"; 3 | import zestyLogo from "../../../public/images/zestyLogo.svg"; 4 | 5 | export const Staging: FC = (props) => { 6 | return ( 7 | 17 | {props.children} 18 | 25 | 26 | ); 27 | }; 28 | -------------------------------------------------------------------------------- /src/shell/components/global-notifications/index.js: -------------------------------------------------------------------------------- 1 | import GlobalNotifications from "./GlobalNotifications"; 2 | export { GlobalNotifications }; 3 | -------------------------------------------------------------------------------- /src/shell/components/global-sidebar/index.js: -------------------------------------------------------------------------------- 1 | import GlobalSidebar from "./GlobalSidebar"; 2 | export default GlobalSidebar; 3 | -------------------------------------------------------------------------------- /src/shell/components/global-tabs/components/Breadcrumbs/Breadcrumbs.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | 3 | .Breadcrumbs { 4 | display: flex; 5 | .Home { 6 | padding: 0 4px 0 0; 7 | } 8 | 9 | .Crumbs { 10 | display: flex; 11 | flex-wrap: wrap; 12 | 13 | li { 14 | list-style: none; 15 | display: flex; 16 | align-items: center; 17 | 18 | a { 19 | word-break: keep-all; 20 | padding: 0 4px; 21 | color: #ff5d0a; 22 | } 23 | } 24 | } 25 | 26 | svg { 27 | padding: 0px 4px; 28 | } 29 | 30 | svg:first-child { 31 | padding: 0; 32 | color: #ff5d0a; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/shell/components/global-tabs/components/Breadcrumbs/index.js: -------------------------------------------------------------------------------- 1 | import Breadcrumbs from "./Breadcrumbs"; 2 | export { Breadcrumbs }; 3 | -------------------------------------------------------------------------------- /src/shell/components/global-tabs/index.ts: -------------------------------------------------------------------------------- 1 | import GlobalTabs from "./GlobalTabs"; 2 | export default GlobalTabs; 3 | -------------------------------------------------------------------------------- /src/shell/components/load-instance/LoadInstance.less: -------------------------------------------------------------------------------- 1 | .ErrorMessage { 2 | display: flex; 3 | justify-content: center; 4 | align-items: center; 5 | height: 100vh; 6 | flex-direction: column; 7 | } 8 | -------------------------------------------------------------------------------- /src/shell/components/login/Login.less: -------------------------------------------------------------------------------- 1 | @import "~@zesty-io/core/colors.less"; 2 | @import "~@zesty-io/core/typography.less"; 3 | 4 | .Login { 5 | width: 600px; 6 | 7 | form { 8 | .message { 9 | margin: 0 0 16px; 10 | } 11 | } 12 | .error { 13 | margin-top: 16px; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/shell/components/login/index.js: -------------------------------------------------------------------------------- 1 | import Login from "./Login"; 2 | export default Login; 3 | -------------------------------------------------------------------------------- /src/shell/components/welcome/index.js: -------------------------------------------------------------------------------- 1 | import { connect } from "react-redux"; 2 | 3 | export default connect()(function Welcome() { 4 | return ( 5 |

6 |

7 | Welcome to Zesty.io 8 |

9 |
10 | ); 11 | }); 12 | -------------------------------------------------------------------------------- /src/shell/constants.ts: -------------------------------------------------------------------------------- 1 | import ListRoundedIcon from "@mui/icons-material/ListRounded"; 2 | import { FileTable, Block } from "@zesty-io/material"; 3 | import DescriptionRoundedIcon from "@mui/icons-material/DescriptionRounded"; 4 | 5 | export const MODEL_ICON = { 6 | templateset: DescriptionRoundedIcon, 7 | dataset: FileTable, 8 | pageset: ListRoundedIcon, 9 | block: Block, 10 | } as const; 11 | 12 | export const MODEL_NAME = { 13 | templateset: "Single Page", 14 | dataset: "Dataset", 15 | pageset: "Multi Page", 16 | block: "Block", 17 | } as const; 18 | -------------------------------------------------------------------------------- /src/shell/contexts/duoModeContext.ts: -------------------------------------------------------------------------------- 1 | import { createContext } from "react"; 2 | 3 | type DuoModeContextType = { 4 | value: boolean; 5 | setValue: (newValue: boolean) => void; 6 | isDisabled: boolean; 7 | }; 8 | 9 | export const DuoModeContext = createContext( 10 | undefined 11 | ); 12 | -------------------------------------------------------------------------------- /src/shell/hooks/useGetActiveApp.ts: -------------------------------------------------------------------------------- 1 | import { useMemo } from "react"; 2 | import { useLocation } from "react-router-dom"; 3 | 4 | /** 5 | * This hook is used to find out which app the user is currently using 6 | */ 7 | interface UseGetActiveApp { 8 | mainApp: string; 9 | subApp: string; 10 | } 11 | export const useGetActiveApp: () => UseGetActiveApp = () => { 12 | const { pathname } = useLocation(); 13 | 14 | const activeApp: UseGetActiveApp = useMemo(() => { 15 | return { 16 | mainApp: pathname.split("/")[1], 17 | subApp: pathname.split("/")[2] ?? "", 18 | }; 19 | }, [pathname]); 20 | 21 | return activeApp; 22 | }; 23 | -------------------------------------------------------------------------------- /src/shell/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "app-shell", 3 | "version": "1.0.0", 4 | "description": "Root application shell to coordinate all manager experiences", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "cross-env NODE_ENV=development ../../node_modules/.bin/webpack --display=errors-only --progress --watch", 8 | "build": "cross-env ../../node_modules/.bin/webpack --display=errors-only --progress -p" 9 | }, 10 | "devDependencies": { 11 | "cross-env": "^7.0.2" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/shell/store/middleware/app-bus.js: -------------------------------------------------------------------------------- 1 | export const appBus = 2 | (store) => 3 | (next) => 4 | (action = {}) => { 5 | const state = store.getState(); 6 | 7 | if (state.apps.frames.length) { 8 | state.apps.frames.forEach((frame) => { 9 | frame?.contentWindow?.postMessage({ 10 | source: "zesty", 11 | action, 12 | }); 13 | }); 14 | } 15 | 16 | // Ensure we continue redux action handling 17 | return next(action); 18 | }; 19 | -------------------------------------------------------------------------------- /src/shell/store/middleware/nav.js: -------------------------------------------------------------------------------- 1 | import { fetchNav } from "../../../apps/content-editor/src/store/navContent"; 2 | 3 | export const nav = (store) => (next) => (action) => { 4 | switch (action.type) { 5 | // update content nav and store to indexedDB 6 | case "CREATE_LINK": 7 | case "CREATE_ITEM": 8 | case "REMOVE_LINK": 9 | case "REMOVE_ITEM": 10 | case "REORDER_NAV": 11 | store.dispatch(fetchNav()); 12 | break; 13 | } 14 | 15 | return next(action); 16 | }; 17 | -------------------------------------------------------------------------------- /src/shell/store/platform.js: -------------------------------------------------------------------------------- 1 | export function platform(state = {}, action) { 2 | switch (action.type) { 3 | case "DETECT_PLATFORM": 4 | return { 5 | ...state, 6 | isMac: action.payload.isMac, 7 | }; 8 | 9 | default: 10 | return state; 11 | } 12 | } 13 | 14 | export function detectPlatform() { 15 | return (dispatch) => { 16 | return dispatch({ 17 | type: "DETECT_PLATFORM", 18 | payload: { 19 | isMac: navigator.platform.toUpperCase().indexOf("MAC") >= 0, 20 | }, 21 | }); 22 | }; 23 | } 24 | -------------------------------------------------------------------------------- /src/shell/views/SearchPage/BackButton.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from "react"; 2 | 3 | import CloseIcon from "@mui/icons-material/Close"; 4 | import { useHistory } from "react-router"; 5 | import { IconButton } from "@mui/material"; 6 | 7 | export const BackButton: FC = () => { 8 | const history = useHistory(); 9 | if (history.action === "POP") { 10 | return null; 11 | } 12 | return ( 13 | history.goBack()} 16 | data-cy="CloseSearchPage" 17 | > 18 | 19 | 20 | ); 21 | }; 22 | -------------------------------------------------------------------------------- /src/shell/views/SearchPage/index.tsx: -------------------------------------------------------------------------------- 1 | import { SearchPage } from "./SearchPage"; 2 | export default SearchPage; 3 | -------------------------------------------------------------------------------- /src/shell/views/Shell/index.js: -------------------------------------------------------------------------------- 1 | import Shell from "./Shell"; 2 | export default Shell; 3 | 4 | console.log(` 5 | ####### 6 | # ###### #### ##### # # # #### 7 | # # # # # # # # # 8 | # ##### #### # # # # # 9 | # # # # # ### # # # 10 | # # # # # # ### # # # 11 | ####### ###### #### # # ### # #### 12 | 13 | Hello there from the Zesty.io team. 14 | If you are looking to understand how this application is built or need to submit a bug report 15 | visit our public repository: https://github.com/zesty-io/manager-ui 16 | `); 17 | -------------------------------------------------------------------------------- /src/shell/wdyr.js: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | 3 | if (process.env.NODE_ENV === "development") { 4 | const whyDidYouRender = require("@welldone-software/why-did-you-render"); 5 | whyDidYouRender(React, { 6 | trackAllPureComponents: true, 7 | trackExtraHooks: [[require("react-redux/lib"), "useSelector"]], 8 | }); 9 | } 10 | -------------------------------------------------------------------------------- /src/utility/deepFreeze.js: -------------------------------------------------------------------------------- 1 | export function deepFreeze(obj) { 2 | // Retrieve the property names defined on obj 3 | var propNames = Object.getOwnPropertyNames(obj); 4 | 5 | // Freeze properties before freezing self 6 | propNames.forEach(function (name) { 7 | var prop = obj[name]; 8 | 9 | // Freeze prop if it is an object 10 | if (typeof prop == "object" && prop !== null) deepFreeze(prop); 11 | }); 12 | 13 | // Freeze self (no-op if already frozen) 14 | return Object.freeze(obj); 15 | } 16 | -------------------------------------------------------------------------------- /src/utility/formatMediaFileName.js: -------------------------------------------------------------------------------- 1 | export const formatMediaFilename = (str) => str.replace(/[^a-z\d-.]/gi, "-"); 2 | -------------------------------------------------------------------------------- /src/utility/formatName.js: -------------------------------------------------------------------------------- 1 | export const formatName = (str) => 2 | str 3 | .replace(/[^a-zA-Z0-9\_\\s]+/gi, "_") 4 | .toLowerCase() 5 | .trim(); 6 | -------------------------------------------------------------------------------- /src/utility/formatPathPart.js: -------------------------------------------------------------------------------- 1 | export const formatPathPart = (str) => 2 | str 3 | .replace(/[^a-zA-Z0-9\_\\s]+/gi, "-") 4 | .toLowerCase() 5 | .trim(); 6 | -------------------------------------------------------------------------------- /src/utility/getFlagEmoji.ts: -------------------------------------------------------------------------------- 1 | export default (countryCode: string) => { 2 | // Convert country code to flag emoji. 3 | // Unicode flag emojis are made up of regional indicator symbols, which are a sequence of two letters. 4 | const baseOffset = 0x1f1e6; 5 | return ( 6 | String.fromCodePoint(baseOffset + (countryCode.charCodeAt(0) - 65)) + 7 | String.fromCodePoint(baseOffset + (countryCode.charCodeAt(1) - 65)) 8 | ); 9 | }; 10 | -------------------------------------------------------------------------------- /src/utility/history.ts: -------------------------------------------------------------------------------- 1 | type NavModal = null | ((callback: (result: boolean) => void) => void); 2 | 3 | declare global { 4 | interface Window { 5 | openContentNavigationModal: NavModal; 6 | openCodeNavigationModal: NavModal; 7 | } 8 | } 9 | 10 | import { createBrowserHistory } from "history"; 11 | const history = createBrowserHistory({ 12 | getUserConfirmation(message, callback) { 13 | if (message === "content_confirm") { 14 | window.openContentNavigationModal(callback); 15 | } else if (message === "code_confirm") { 16 | window.openCodeNavigationModal(callback); 17 | } else { 18 | callback(true); 19 | } 20 | }, 21 | }); 22 | export default history; 23 | -------------------------------------------------------------------------------- /src/utility/instanceZUID.js: -------------------------------------------------------------------------------- 1 | const instanceZUID = window.location.host.split(".")[0]; 2 | export default instanceZUID; 3 | -------------------------------------------------------------------------------- /src/utility/isZestyEmail.ts: -------------------------------------------------------------------------------- 1 | export function isZestyEmail(email: string): boolean { 2 | return ( 3 | email.endsWith("@zesty.io") || 4 | email.endsWith("@kin.com") || 5 | email.endsWith("@geo-blue.com") || 6 | email.endsWith("@bpcreates.com") 7 | ); 8 | } 9 | -------------------------------------------------------------------------------- /src/utility/numberFormatter.js: -------------------------------------------------------------------------------- 1 | export const numberFormatter = Intl.NumberFormat("en", { 2 | notation: "compact", 3 | maximumFractionDigits: 2, 4 | }); 5 | -------------------------------------------------------------------------------- /src/utility/pluralizeWord.ts: -------------------------------------------------------------------------------- 1 | export default (word: string, count: number) => { 2 | return count > 1 ? `${word}s` : word; 3 | }; 4 | -------------------------------------------------------------------------------- /src/utility/resolveResourceType.js: -------------------------------------------------------------------------------- 1 | export const resolveResourceType = (ZUID) => { 2 | if (ZUID.startsWith("7")) { 3 | return "content"; 4 | } else if (ZUID.startsWith("6")) { 5 | return "schema"; 6 | } else if (ZUID.startsWith("10") || ZUID.startsWith("11")) { 7 | return "code"; 8 | } else { 9 | return "settings"; 10 | } 11 | }; 12 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": ["src", "index.d.ts"], 3 | "compilerOptions": { 4 | "noImplicitAny": true, 5 | "allowJs": true, 6 | "module": "es6", 7 | "target": "esnext", 8 | "jsx": "react-jsx", 9 | "moduleResolution": "node", 10 | "sourceMap": true, 11 | "allowSyntheticDefaultImports": true, 12 | "esModuleInterop": true, 13 | "types": ["react"] 14 | } 15 | } 16 | --------------------------------------------------------------------------------