├── .editorconfig ├── .eslintrc.json ├── .gitignore ├── .husky └── pre-commit ├── README.md ├── angular.json ├── assets └── svg │ ├── add-image.svg │ ├── add.svg │ ├── arrow-left.svg │ ├── chart-arrow-down.svg │ ├── chart-arrow-flat.svg │ ├── chart-arrow-up.svg │ ├── check.svg │ ├── clear.svg │ ├── close.svg │ ├── closed.svg │ ├── congratulations.svg │ ├── copy.svg │ ├── decentr-hub.svg │ ├── delegate.svg │ ├── delete.svg │ ├── discord.svg │ ├── download.svg │ ├── dropdown-expand.svg │ ├── dynamics-negative.svg │ ├── dynamics-positive.svg │ ├── edit.svg │ ├── email-confirmation-wait.svg │ ├── expand-more.svg │ ├── eye-crossed.svg │ ├── eye.svg │ ├── flags │ ├── ad.svg │ ├── ae.svg │ ├── af.svg │ ├── ag.svg │ ├── ai.svg │ ├── al.svg │ ├── am.svg │ ├── ao.svg │ ├── aq.svg │ ├── ar.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 │ ├── cf.svg │ ├── cg.svg │ ├── ch.svg │ ├── ci.svg │ ├── ck.svg │ ├── cl.svg │ ├── cm.svg │ ├── cn.svg │ ├── co.svg │ ├── cr.svg │ ├── cu.svg │ ├── cv.svg │ ├── cw.svg │ ├── cx.svg │ ├── cy.svg │ ├── cz.svg │ ├── de.svg │ ├── dj.svg │ ├── dk.svg │ ├── dm.svg │ ├── do.svg │ ├── dz.svg │ ├── ec.svg │ ├── ee.svg │ ├── eg.svg │ ├── eh.svg │ ├── er.svg │ ├── es-ct.svg │ ├── es-ga.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 │ ├── 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 │ ├── 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.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 │ ├── ye.svg │ ├── yt.svg │ ├── za.svg │ ├── zm.svg │ └── zw.svg │ ├── follow.svg │ ├── get-coin.svg │ ├── github.svg │ ├── import-account.svg │ ├── import.svg │ ├── information.svg │ ├── jailed.svg │ ├── like.svg │ ├── link.svg │ ├── lock.svg │ ├── logo-feed.svg │ ├── logo-icon-green.svg │ ├── logo-icon-orange.svg │ ├── logo-icon-pink.svg │ ├── logo-icon.svg │ ├── logo-portal.svg │ ├── logo.svg │ ├── loud.svg │ ├── medium.svg │ ├── moon.svg │ ├── new-user.svg │ ├── path.svg │ ├── pdv-rate-icon.svg │ ├── pdv-type │ ├── advertiser.svg │ ├── cookie.svg │ ├── location.svg │ ├── profile.svg │ └── search-history.svg │ ├── piggy-bank.svg │ ├── plus.svg │ ├── publish.svg │ ├── qr.svg │ ├── receive-coin.svg │ ├── receive.svg │ ├── redelegate.svg │ ├── referral.svg │ ├── refresh.svg │ ├── reload.svg │ ├── seed-phrase.svg │ ├── send-coin.svg │ ├── send.svg │ ├── settings.svg │ ├── signal.svg │ ├── speedometer.svg │ ├── star.svg │ ├── telegram.svg │ ├── topup.svg │ ├── transaction.svg │ ├── trash.svg │ ├── twitter.svg │ ├── undo.svg │ ├── validator-status │ ├── bonded.svg │ ├── unbonded.svg │ └── unbonding.svg │ ├── wallet.svg │ └── widescreen.svg ├── environments ├── environment.definitions.ts ├── environment.prod.ts └── environment.ts ├── package-lock.json ├── package.json ├── projects ├── charon │ ├── .browserslistrc │ ├── karma.conf.js │ ├── src │ │ ├── app │ │ │ ├── app-route.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.html │ │ │ ├── app.component.scss │ │ │ ├── app.component.ts │ │ │ ├── app.definitions.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── auth │ │ │ │ │ ├── auth.module.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── models │ │ │ │ │ │ ├── auth-user.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── services │ │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ │ └── index.ts │ │ │ │ ├── core.module.ts │ │ │ │ ├── guards │ │ │ │ │ ├── auth │ │ │ │ │ │ ├── auth-completed-registration.guard.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── unauth.guard.ts │ │ │ │ │ ├── browser-tab.guard.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── mainnet.guard.ts │ │ │ │ │ ├── maintenance.guard.ts │ │ │ │ │ ├── offline.guard.ts │ │ │ │ │ ├── supported-version.guard.ts │ │ │ │ │ └── update.guard.ts │ │ │ │ ├── index.ts │ │ │ │ ├── interceptors │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── maintenance.interceptor.ts │ │ │ │ │ └── offline.interceptor.ts │ │ │ │ ├── layout │ │ │ │ │ ├── authorized-layout │ │ │ │ │ │ ├── authorized-layout-header │ │ │ │ │ │ │ ├── authorized-layout-header.component.html │ │ │ │ │ │ │ ├── authorized-layout-header.component.scss │ │ │ │ │ │ │ ├── authorized-layout-header.component.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── authorized-layout-navigation-link │ │ │ │ │ │ │ ├── authorized-layout-navigation-link-def.directive.ts │ │ │ │ │ │ │ ├── authorized-layout-navigation-link.component.html │ │ │ │ │ │ │ ├── authorized-layout-navigation-link.component.scss │ │ │ │ │ │ │ ├── authorized-layout-navigation-link.component.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── authorized-layout-navigation │ │ │ │ │ │ │ ├── authorized-layout-navigation-def.directive.ts │ │ │ │ │ │ │ ├── authorized-layout-navigation.component.html │ │ │ │ │ │ │ ├── authorized-layout-navigation.component.scss │ │ │ │ │ │ │ ├── authorized-layout-navigation.component.ts │ │ │ │ │ │ │ ├── authorized-layout-navigation.service.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── authorized-layout.component.html │ │ │ │ │ │ ├── authorized-layout.component.scss │ │ │ │ │ │ ├── authorized-layout.component.ts │ │ │ │ │ │ ├── authorized-layout.module.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── layout-footer │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── layout-footer.component.html │ │ │ │ │ │ ├── layout-footer.component.scss │ │ │ │ │ │ ├── layout-footer.component.ts │ │ │ │ │ │ └── layout-footer.module.ts │ │ │ │ │ └── public-layout │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── public-layout.component.html │ │ │ │ │ │ ├── public-layout.component.scss │ │ │ │ │ │ ├── public-layout.component.ts │ │ │ │ │ │ └── public-layout.module.ts │ │ │ │ ├── lock │ │ │ │ │ ├── guards │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── lock.guard.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── lock.module.ts │ │ │ │ │ ├── lock.tokens.ts │ │ │ │ │ └── services │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── lock.definitions.ts │ │ │ │ │ │ └── lock.service.ts │ │ │ │ ├── navigation │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── navigate-back │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── navigate-back.directive.ts │ │ │ │ │ ├── navigation.module.ts │ │ │ │ │ └── navigation.service.ts │ │ │ │ ├── notifications │ │ │ │ │ ├── error-processors │ │ │ │ │ │ ├── broadcast-error-processor.ts │ │ │ │ │ │ ├── fallback-error-processor.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── translated-error-processor.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── models │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── translated-error.ts │ │ │ │ ├── permissions │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── permissions.service.ts │ │ │ │ │ └── permissions.ts │ │ │ │ ├── services │ │ │ │ │ ├── bank │ │ │ │ │ │ ├── bank.service.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── blocks │ │ │ │ │ │ ├── blocks.service.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── currency │ │ │ │ │ │ ├── currency.service.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── decentr │ │ │ │ │ │ ├── decentr.service.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── distribution │ │ │ │ │ │ ├── distribution.service.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── following │ │ │ │ │ │ ├── following.service.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── help │ │ │ │ │ │ ├── help.service.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── image-uploader │ │ │ │ │ │ ├── image-uploader.service.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── menu │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── menu.service.ts │ │ │ │ │ ├── network-selector │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── network-selector.service.ts │ │ │ │ │ ├── network │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── network.service.ts │ │ │ │ │ ├── pdv │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── pdv.definitions.ts │ │ │ │ │ │ └── pdv.service.ts │ │ │ │ │ ├── posts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── posts.definitions.ts │ │ │ │ │ │ └── posts.service.ts │ │ │ │ │ ├── referral │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── referral.service.ts │ │ │ │ │ ├── sentinel │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── sentinel-utils.ts │ │ │ │ │ │ ├── sentinel.definitions.ts │ │ │ │ │ │ └── sentinel.service.ts │ │ │ │ │ ├── spinner │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── spinner.service.ts │ │ │ │ │ ├── staking │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── staking.service.ts │ │ │ │ │ └── user │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── user.service.ts │ │ │ │ ├── svg-icons │ │ │ │ │ ├── index.ts │ │ │ │ │ └── svg-icon-root.module.ts │ │ │ │ └── transloco │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── transloco-http-loader.ts │ │ │ │ │ └── transloco-root.module.ts │ │ │ ├── hub │ │ │ │ ├── components │ │ │ │ │ ├── hub-additional-statistics │ │ │ │ │ │ ├── hub-additional-statistics.component.html │ │ │ │ │ │ ├── hub-additional-statistics.component.scss │ │ │ │ │ │ ├── hub-additional-statistics.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-adv-statistics │ │ │ │ │ │ ├── hub-adv-statistics.component.html │ │ │ │ │ │ ├── hub-adv-statistics.component.scss │ │ │ │ │ │ ├── hub-adv-statistics.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-category-select │ │ │ │ │ │ ├── hub-category-select.component.html │ │ │ │ │ │ ├── hub-category-select.component.scss │ │ │ │ │ │ ├── hub-category-select.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-currency-statistics │ │ │ │ │ │ ├── hub-currency-statistics.component.html │ │ │ │ │ │ ├── hub-currency-statistics.component.scss │ │ │ │ │ │ ├── hub-currency-statistics.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-dashboard │ │ │ │ │ │ ├── hub-dashboard.component.html │ │ │ │ │ │ ├── hub-dashboard.component.scss │ │ │ │ │ │ └── hub-dashboard.component.ts │ │ │ │ │ ├── hub-ddv-statistics │ │ │ │ │ │ ├── hub-ddv-statistics.component.html │ │ │ │ │ │ ├── hub-ddv-statistics.component.scss │ │ │ │ │ │ ├── hub-ddv-statistics.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-feed-navigation │ │ │ │ │ │ ├── hub-feed-navigation.component.html │ │ │ │ │ │ ├── hub-feed-navigation.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-feed-posts │ │ │ │ │ │ ├── hub-feed-posts.component.html │ │ │ │ │ │ ├── hub-feed-posts.component.scss │ │ │ │ │ │ ├── hub-feed-posts.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-header-stats-meta │ │ │ │ │ │ ├── hub-header-stats-meta.component.html │ │ │ │ │ │ ├── hub-header-stats-meta.component.scss │ │ │ │ │ │ ├── hub-header-stats-meta.component.ts │ │ │ │ │ │ ├── hub-header-stats-meta.service.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-infinite-posts-container │ │ │ │ │ │ ├── hub-infinite-posts-container.component.html │ │ │ │ │ │ ├── hub-infinite-posts-container.component.scss │ │ │ │ │ │ ├── hub-infinite-posts-container.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-load-more-button │ │ │ │ │ │ ├── hub-load-more-button.component.html │ │ │ │ │ │ ├── hub-load-more-button.component.scss │ │ │ │ │ │ ├── hub-load-more-button.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-navigation │ │ │ │ │ │ ├── hub-navigation.component.html │ │ │ │ │ │ ├── hub-navigation.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-pdv-statistics │ │ │ │ │ │ ├── hub-pdv-statistics.component.html │ │ │ │ │ │ ├── hub-pdv-statistics.component.scss │ │ │ │ │ │ ├── hub-pdv-statistics.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-post-card │ │ │ │ │ │ ├── hub-post-card.component.html │ │ │ │ │ │ ├── hub-post-card.component.scss │ │ │ │ │ │ ├── hub-post-card.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-post-content │ │ │ │ │ │ ├── hub-post-content.component.html │ │ │ │ │ │ ├── hub-post-content.component.scss │ │ │ │ │ │ ├── hub-post-content.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-post-delete-button │ │ │ │ │ │ ├── hub-post-delete-button.component.html │ │ │ │ │ │ ├── hub-post-delete-button.component.scss │ │ │ │ │ │ ├── hub-post-delete-button.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-post-editor-error │ │ │ │ │ │ ├── hub-post-editor-error.component.html │ │ │ │ │ │ ├── hub-post-editor-error.component.scss │ │ │ │ │ │ ├── hub-post-editor-error.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-post-editor │ │ │ │ │ │ ├── hub-post-editor.component.html │ │ │ │ │ │ ├── hub-post-editor.component.scss │ │ │ │ │ │ ├── hub-post-editor.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-post-layout │ │ │ │ │ │ ├── hub-post-layout.component.html │ │ │ │ │ │ ├── hub-post-layout.component.scss │ │ │ │ │ │ ├── hub-post-layout.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-post-pdv-diagram │ │ │ │ │ │ ├── hub-post-pdv-diagram.component.html │ │ │ │ │ │ ├── hub-post-pdv-diagram.component.scss │ │ │ │ │ │ ├── hub-post-pdv-diagram.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-post-pdv │ │ │ │ │ │ ├── hub-post-pdv.component.html │ │ │ │ │ │ ├── hub-post-pdv.component.scss │ │ │ │ │ │ ├── hub-post-pdv.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-post-rating │ │ │ │ │ │ ├── hub-post-rating.component.html │ │ │ │ │ │ ├── hub-post-rating.component.scss │ │ │ │ │ │ ├── hub-post-rating.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-posts-pdv-filter │ │ │ │ │ │ ├── hub-posts-pdv-filter.component.html │ │ │ │ │ │ ├── hub-posts-pdv-filter.component.scss │ │ │ │ │ │ ├── hub-posts-pdv-filter.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-profile-card │ │ │ │ │ │ ├── hub-profile-card.component.html │ │ │ │ │ │ ├── hub-profile-card.component.scss │ │ │ │ │ │ ├── hub-profile-card.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-related-posts │ │ │ │ │ │ ├── hub-related-posts.component.html │ │ │ │ │ │ ├── hub-related-posts.component.scss │ │ │ │ │ │ ├── hub-related-posts.component.ts │ │ │ │ │ │ ├── hub-related-posts.service.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-statistics-card │ │ │ │ │ │ ├── hub-statistics-card.component.html │ │ │ │ │ │ ├── hub-statistics-card.component.scss │ │ │ │ │ │ ├── hub-statistics-card.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-top-posts │ │ │ │ │ │ ├── hub-top-posts.component.html │ │ │ │ │ │ ├── hub-top-posts.component.scss │ │ │ │ │ │ ├── hub-top-posts.component.ts │ │ │ │ │ │ ├── hub-top-posts.service.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── directives │ │ │ │ │ ├── hub-can-delete-post │ │ │ │ │ │ ├── hub-can-delete-post.directive.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-image-uploader │ │ │ │ │ │ ├── hub-image-uploader.directive.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-post-category-color │ │ │ │ │ │ ├── hub-post-category-color.directive.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── hub-route.ts │ │ │ │ ├── hub-routing.module.ts │ │ │ │ ├── hub.module.ts │ │ │ │ ├── index.ts │ │ │ │ ├── models │ │ │ │ │ └── post-category.ts │ │ │ │ ├── pages │ │ │ │ │ ├── feed-page │ │ │ │ │ │ ├── feed-page.component.html │ │ │ │ │ │ ├── feed-page.component.scss │ │ │ │ │ │ ├── feed-page.component.ts │ │ │ │ │ │ ├── feed-page.service.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── following-page │ │ │ │ │ │ ├── following-page.component.html │ │ │ │ │ │ ├── following-page.component.scss │ │ │ │ │ │ ├── following-page.component.ts │ │ │ │ │ │ ├── following-page.service.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hub-page │ │ │ │ │ │ ├── hub-page.component.html │ │ │ │ │ │ ├── hub-page.component.scss │ │ │ │ │ │ ├── hub-page.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── my-posts-page │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── my-posts-page.component.html │ │ │ │ │ │ ├── my-posts-page.component.scss │ │ │ │ │ │ ├── my-posts-page.component.ts │ │ │ │ │ │ └── my-posts-page.service.ts │ │ │ │ │ ├── post-create-page │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── post-create-page.component.html │ │ │ │ │ │ ├── post-create-page.component.scss │ │ │ │ │ │ ├── post-create-page.component.ts │ │ │ │ │ │ └── post-create-page.service.ts │ │ │ │ │ ├── post-page │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── post-page.component.html │ │ │ │ │ │ ├── post-page.component.scss │ │ │ │ │ │ ├── post-page.component.ts │ │ │ │ │ │ └── post-page.service.ts │ │ │ │ │ ├── posts-page │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── posts-page.component.html │ │ │ │ │ │ ├── posts-page.component.scss │ │ │ │ │ │ ├── posts-page.component.ts │ │ │ │ │ │ └── posts-page.service.ts │ │ │ │ │ └── scrollable-page.ts │ │ │ │ ├── services │ │ │ │ │ ├── hub-likes.service.ts │ │ │ │ │ ├── hub-posts-pdv-filter.service.ts │ │ │ │ │ ├── hub-posts.service.ts │ │ │ │ │ └── index.ts │ │ │ │ └── utils │ │ │ │ │ └── pdv │ │ │ │ │ ├── get-hub-pdv-stats.ts │ │ │ │ │ └── index.ts │ │ │ ├── login │ │ │ │ ├── guards │ │ │ │ │ ├── index.ts │ │ │ │ │ └── login.guard.ts │ │ │ │ ├── index.ts │ │ │ │ ├── login-route.ts │ │ │ │ ├── login-routing.module.ts │ │ │ │ ├── login.module.ts │ │ │ │ └── pages │ │ │ │ │ ├── import-restore │ │ │ │ │ ├── import-restore-page.component.html │ │ │ │ │ ├── import-restore-page.component.scss │ │ │ │ │ ├── import-restore-page.component.ts │ │ │ │ │ ├── import-restore-page.service.ts │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── login-page │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── login-page.component.html │ │ │ │ │ ├── login-page.component.scss │ │ │ │ │ ├── login-page.component.ts │ │ │ │ │ └── login-page.service.ts │ │ │ ├── portal │ │ │ │ ├── components │ │ │ │ │ ├── index.ts │ │ │ │ │ └── portal-navigation │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── portal-navigation.component.html │ │ │ │ │ │ ├── portal-navigation.component.scss │ │ │ │ │ │ └── portal-navigation.component.ts │ │ │ │ ├── index.ts │ │ │ │ ├── modules │ │ │ │ │ ├── activity │ │ │ │ │ │ ├── activity-routing.module.ts │ │ │ │ │ │ ├── activity.module.ts │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── pages │ │ │ │ │ │ │ ├── activity-page │ │ │ │ │ │ │ ├── activity-page.component.html │ │ │ │ │ │ │ ├── activity-page.component.scss │ │ │ │ │ │ │ ├── activity-page.component.ts │ │ │ │ │ │ │ ├── activity-page.definitions.ts │ │ │ │ │ │ │ ├── activity-page.service.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── assets │ │ │ │ │ │ ├── assets-routing.module.ts │ │ │ │ │ │ ├── assets.module.ts │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── token-complex-transaction │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── token-complex-transaction.component.html │ │ │ │ │ │ │ │ ├── token-complex-transaction.component.scss │ │ │ │ │ │ │ │ ├── token-complex-transaction.component.ts │ │ │ │ │ │ │ │ └── token-complex-transaction.ts │ │ │ │ │ │ │ ├── token-single-transaction │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── token-single-transaction.component.html │ │ │ │ │ │ │ │ ├── token-single-transaction.component.scss │ │ │ │ │ │ │ │ ├── token-single-transaction.component.ts │ │ │ │ │ │ │ │ └── token-single-transaction.ts │ │ │ │ │ │ │ ├── token-transaction-actions │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── token-transaction-actions.component.html │ │ │ │ │ │ │ │ ├── token-transaction-actions.component.scss │ │ │ │ │ │ │ │ └── token-transaction-actions.component.ts │ │ │ │ │ │ │ ├── token-transaction-amount │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── token-transaction-amount.component.html │ │ │ │ │ │ │ │ ├── token-transaction-amount.component.scss │ │ │ │ │ │ │ │ └── token-transaction-amount.component.ts │ │ │ │ │ │ │ └── token-transactions-table │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── token-transactions-table.component.html │ │ │ │ │ │ │ │ ├── token-transactions-table.component.scss │ │ │ │ │ │ │ │ ├── token-transactions-table.component.ts │ │ │ │ │ │ │ │ └── token-transactions-table.definitions.ts │ │ │ │ │ │ ├── directives │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── transaction-link │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ └── transaction-link.directive.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── pages │ │ │ │ │ │ │ ├── assets-page │ │ │ │ │ │ │ ├── assets-page.component.html │ │ │ │ │ │ │ ├── assets-page.component.scss │ │ │ │ │ │ │ ├── assets-page.component.ts │ │ │ │ │ │ │ ├── assets-page.definitions.ts │ │ │ │ │ │ │ ├── assets-page.service.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── mapping.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── transfer-page │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── transfer-page.component.html │ │ │ │ │ │ │ ├── transfer-page.component.scss │ │ │ │ │ │ │ ├── transfer-page.component.ts │ │ │ │ │ │ │ ├── transfer-page.definitions.ts │ │ │ │ │ │ │ └── transfer-page.service.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── pdv-rate │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── pdv-rate-chart │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── pdv-rate-chart.component.html │ │ │ │ │ │ │ │ ├── pdv-rate-chart.component.scss │ │ │ │ │ │ │ │ └── pdv-rate-chart.component.ts │ │ │ │ │ │ │ └── tooltip │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── tooltip.component.html │ │ │ │ │ │ │ │ ├── tooltip.component.scss │ │ │ │ │ │ │ │ ├── tooltip.component.ts │ │ │ │ │ │ │ │ └── tooltip.module.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── pages │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── pdv-rate-page │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── pdv-rate-page.component.html │ │ │ │ │ │ │ │ ├── pdv-rate-page.component.scss │ │ │ │ │ │ │ │ ├── pdv-rate-page.component.ts │ │ │ │ │ │ │ │ └── pdv-rate-page.service.ts │ │ │ │ │ │ ├── pdv-rate-routing.module.ts │ │ │ │ │ │ ├── pdv-rate.module.ts │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ └── component-factory.ts │ │ │ │ │ ├── staking │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── staking-extended-error │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── staking-extended-error.component.html │ │ │ │ │ │ │ │ ├── staking-extended-error.component.scss │ │ │ │ │ │ │ │ └── staking-extended-error.component.ts │ │ │ │ │ │ │ ├── staking-layout │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── staking-layout.component.html │ │ │ │ │ │ │ │ ├── staking-layout.component.scss │ │ │ │ │ │ │ │ └── staking-layout.component.ts │ │ │ │ │ │ │ ├── validator-jailed │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── validator-jailed.component.html │ │ │ │ │ │ │ │ ├── validator-jailed.component.scss │ │ │ │ │ │ │ │ └── validator-jailed.component.ts │ │ │ │ │ │ │ ├── validator-status │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── validator-status.component.html │ │ │ │ │ │ │ │ ├── validator-status.component.scss │ │ │ │ │ │ │ │ └── validator-status.component.ts │ │ │ │ │ │ │ ├── validators-table │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── validators-table.component.html │ │ │ │ │ │ │ │ ├── validators-table.component.scss │ │ │ │ │ │ │ │ └── validators-table.component.ts │ │ │ │ │ │ │ ├── withdraw-delegator-table │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── withdraw-delegator-table.component.html │ │ │ │ │ │ │ │ ├── withdraw-delegator-table.component.scss │ │ │ │ │ │ │ │ └── withdraw-delegator-table.component.ts │ │ │ │ │ │ │ └── withdraw-validator-table │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── withdraw-validator-table.component.html │ │ │ │ │ │ │ │ ├── withdraw-validator-table.component.scss │ │ │ │ │ │ │ │ └── withdraw-validator-table.component.ts │ │ │ │ │ │ ├── guards │ │ │ │ │ │ │ ├── existing-validator.guard.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── models │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── validator-definition.ts │ │ │ │ │ │ ├── pages │ │ │ │ │ │ │ ├── delegate-page │ │ │ │ │ │ │ │ ├── delegate-page.component.html │ │ │ │ │ │ │ │ ├── delegate-page.component.scss │ │ │ │ │ │ │ │ ├── delegate-page.component.ts │ │ │ │ │ │ │ │ ├── delegate-page.service.ts │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── redelegate-page │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── redelegate-page.component.html │ │ │ │ │ │ │ │ ├── redelegate-page.component.scss │ │ │ │ │ │ │ │ ├── redelegate-page.component.ts │ │ │ │ │ │ │ │ └── redelegate-page.service.ts │ │ │ │ │ │ │ ├── undelegate-page │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── undelegate-page.component.html │ │ │ │ │ │ │ │ ├── undelegate-page.component.scss │ │ │ │ │ │ │ │ ├── undelegate-page.component.ts │ │ │ │ │ │ │ │ └── undelegate-page.service.ts │ │ │ │ │ │ │ ├── validator-details-page │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── validator-details-page.component.html │ │ │ │ │ │ │ │ ├── validator-details-page.component.scss │ │ │ │ │ │ │ │ ├── validator-details-page.component.ts │ │ │ │ │ │ │ │ └── validator-details-page.service.ts │ │ │ │ │ │ │ ├── validators-page │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── validators-page.component.html │ │ │ │ │ │ │ │ ├── validators-page.component.scss │ │ │ │ │ │ │ │ ├── validators-page.component.ts │ │ │ │ │ │ │ │ └── validators-page.service.ts │ │ │ │ │ │ │ ├── widthraw-delegator-page │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── withdraw-delegator-page.component.html │ │ │ │ │ │ │ │ ├── withdraw-delegator-page.component.scss │ │ │ │ │ │ │ │ ├── withdraw-delegator-page.component.ts │ │ │ │ │ │ │ │ └── withdraw-delegator-page.service.ts │ │ │ │ │ │ │ └── widthraw-validator-page │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── withdraw-validator-page.component.html │ │ │ │ │ │ │ │ ├── withdraw-validator-page.component.scss │ │ │ │ │ │ │ │ ├── withdraw-validator-page.component.ts │ │ │ │ │ │ │ │ └── withdraw-validator-page.service.ts │ │ │ │ │ │ ├── staking-route.ts │ │ │ │ │ │ ├── staking-routing.module.ts │ │ │ │ │ │ ├── staking.module.ts │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ ├── build-validator-definition.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── vpn │ │ │ │ │ │ ├── components │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── node-accordion │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── node-accordion-content.directive.ts │ │ │ │ │ │ │ ├── node-accordion.component.html │ │ │ │ │ │ │ ├── node-accordion.component.scss │ │ │ │ │ │ │ └── node-accordion.component.ts │ │ │ │ │ │ ├── node-subscribe │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── node-subscribe.component.html │ │ │ │ │ │ │ ├── node-subscribe.component.scss │ │ │ │ │ │ │ └── node-subscribe.component.ts │ │ │ │ │ │ └── node-subscription │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── node-subscription.component.html │ │ │ │ │ │ │ ├── node-subscription.component.scss │ │ │ │ │ │ │ └── node-subscription.component.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── pages │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── vpn-page │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── vpn-page.component.html │ │ │ │ │ │ │ ├── vpn-page.component.scss │ │ │ │ │ │ │ ├── vpn-page.component.ts │ │ │ │ │ │ │ ├── vpn-page.definitions.ts │ │ │ │ │ │ │ └── vpn-page.service.ts │ │ │ │ │ │ ├── vpn-routing.module.ts │ │ │ │ │ │ └── vpn.module.ts │ │ │ │ ├── pages │ │ │ │ │ ├── index.ts │ │ │ │ │ └── portal-page │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── portal-page.component.html │ │ │ │ │ │ ├── portal-page.component.scss │ │ │ │ │ │ ├── portal-page.component.ts │ │ │ │ │ │ └── portal-page.service.ts │ │ │ │ ├── portal-route.ts │ │ │ │ ├── portal-routing.module.ts │ │ │ │ └── portal.module.ts │ │ │ ├── sign-up │ │ │ │ ├── components │ │ │ │ │ ├── account-form │ │ │ │ │ │ ├── account-form.component.html │ │ │ │ │ │ ├── account-form.component.scss │ │ │ │ │ │ ├── account-form.component.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── profile-card │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── profile-card.component.html │ │ │ │ │ │ ├── profile-card.component.scss │ │ │ │ │ │ └── profile-card.component.ts │ │ │ │ │ └── seed-phrase │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── seed-phrase.component.html │ │ │ │ │ │ ├── seed-phrase.component.scss │ │ │ │ │ │ └── seed-phrase.component.ts │ │ │ │ ├── guards │ │ │ │ │ ├── complete-registration.guard.ts │ │ │ │ │ ├── email-confirmation.guard.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── pdv-consent.guard.ts │ │ │ │ │ └── sign-up.guard.ts │ │ │ │ ├── index.ts │ │ │ │ ├── pages │ │ │ │ │ ├── complete-registration-page │ │ │ │ │ │ ├── complete-registration-page.component.html │ │ │ │ │ │ ├── complete-registration-page.component.scss │ │ │ │ │ │ ├── complete-registration-page.component.ts │ │ │ │ │ │ ├── complete-registration-page.service.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── email-confirmation-page │ │ │ │ │ │ ├── email-confirmation-page.component.html │ │ │ │ │ │ ├── email-confirmation-page.component.scss │ │ │ │ │ │ ├── email-confirmation-page.component.ts │ │ │ │ │ │ ├── email-confirmation-page.service.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── pdv-consent-page │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── pdv-consent-page.component.html │ │ │ │ │ │ ├── pdv-consent-page.component.scss │ │ │ │ │ │ └── pdv-consent-page.component.ts │ │ │ │ │ ├── sign-up-page │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── sign-up-page.component.html │ │ │ │ │ │ ├── sign-up-page.component.scss │ │ │ │ │ │ ├── sign-up-page.component.ts │ │ │ │ │ │ └── sign-up-page.service.ts │ │ │ │ │ └── success-page │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── success-page.component.html │ │ │ │ │ │ ├── success-page.component.scss │ │ │ │ │ │ └── success-page.component.ts │ │ │ │ ├── services │ │ │ │ │ ├── index.ts │ │ │ │ │ └── sign-up-store.service.ts │ │ │ │ ├── sign-up-route.ts │ │ │ │ ├── sign-up-routing.module.ts │ │ │ │ └── sign-up.module.ts │ │ │ ├── technical │ │ │ │ ├── pages │ │ │ │ │ ├── index.ts │ │ │ │ │ └── technical-page │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── technical-page.component.html │ │ │ │ │ │ ├── technical-page.component.scss │ │ │ │ │ │ ├── technical-page.component.ts │ │ │ │ │ │ └── technical-page.definitons.ts │ │ │ │ ├── technical-routing.module.ts │ │ │ │ └── technical.module.ts │ │ │ ├── user │ │ │ │ ├── components │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── lock-delay-settings │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── lock-delay-settings.component.html │ │ │ │ │ │ ├── lock-delay-settings.component.scss │ │ │ │ │ │ └── lock-delay-settings.component.ts │ │ │ │ │ ├── qr-login-dialog │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── qr-login-dialog.component.html │ │ │ │ │ │ ├── qr-login-dialog.component.scss │ │ │ │ │ │ └── qr-login-dialog.component.ts │ │ │ │ │ ├── referral-bonus-milestones │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── referral-bonus-milestones.component.html │ │ │ │ │ │ ├── referral-bonus-milestones.component.scss │ │ │ │ │ │ └── referral-bonus-milestones.component.ts │ │ │ │ │ ├── referral-reward-milestones │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── referral-reward-milestones.component.html │ │ │ │ │ │ ├── referral-reward-milestones.component.scss │ │ │ │ │ │ └── referral-reward-milestones.component.ts │ │ │ │ │ ├── referral-stats │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── referral-stats.component.html │ │ │ │ │ │ ├── referral-stats.component.scss │ │ │ │ │ │ └── referral-stats.component.ts │ │ │ │ │ └── restore-seed-dialog │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── restore-seed-dialog.component.html │ │ │ │ │ │ ├── restore-seed-dialog.component.scss │ │ │ │ │ │ └── restore-seed-dialog.component.ts │ │ │ │ ├── pages │ │ │ │ │ ├── edit-profile-page │ │ │ │ │ │ ├── edit-profile-page.component.html │ │ │ │ │ │ ├── edit-profile-page.component.scss │ │ │ │ │ │ ├── edit-profile-page.component.ts │ │ │ │ │ │ ├── edit-profile-page.service.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── settings-page │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── settings-page.component.html │ │ │ │ │ │ ├── settings-page.component.scss │ │ │ │ │ │ └── settings-page.component.ts │ │ │ │ │ ├── user-menu-page │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── user-menu-page.component.html │ │ │ │ │ │ ├── user-menu-page.component.scss │ │ │ │ │ │ └── user-menu-page.component.ts │ │ │ │ │ └── user-page │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── user-page.component.html │ │ │ │ │ │ ├── user-page.component.scss │ │ │ │ │ │ └── user-page.component.ts │ │ │ │ ├── user-route.ts │ │ │ │ ├── user-routing.module.ts │ │ │ │ └── user.module.ts │ │ │ └── welcome │ │ │ │ ├── pages │ │ │ │ ├── index.ts │ │ │ │ └── welcome-page │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── welcome-page.component.html │ │ │ │ │ ├── welcome-page.component.scss │ │ │ │ │ └── welcome-page.component.ts │ │ │ │ ├── welcome-routing.module.ts │ │ │ │ └── welcome.module.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ ├── fonts │ │ │ │ ├── Inter-Bold.ttf │ │ │ │ ├── Inter-Bold.woff │ │ │ │ ├── Inter-Bold.woff2 │ │ │ │ ├── Inter-Medium.ttf │ │ │ │ ├── Inter-Medium.woff │ │ │ │ ├── Inter-Medium.woff2 │ │ │ │ ├── Inter-Regular.ttf │ │ │ │ ├── Inter-Regular.woff │ │ │ │ ├── Inter-Regular.woff2 │ │ │ │ ├── MaterialIcons-Regular.ttf │ │ │ │ ├── MaterialIcons-Regular.woff │ │ │ │ └── MaterialIcons-Regular.woff2 │ │ │ ├── i18n │ │ │ │ ├── core │ │ │ │ │ └── en.json │ │ │ │ ├── en.json │ │ │ │ ├── hub │ │ │ │ │ └── en.json │ │ │ │ ├── login │ │ │ │ │ └── en.json │ │ │ │ ├── portal │ │ │ │ │ └── en.json │ │ │ │ ├── shared │ │ │ │ │ └── en.json │ │ │ │ ├── sign-up │ │ │ │ │ └── en.json │ │ │ │ ├── staking │ │ │ │ │ └── en.json │ │ │ │ ├── technical │ │ │ │ │ └── en.json │ │ │ │ ├── user │ │ │ │ │ └── en.json │ │ │ │ └── welcome │ │ │ │ │ └── en.json │ │ │ └── images │ │ │ │ ├── congratulations-night.svg │ │ │ │ ├── congratulations.svg │ │ │ │ ├── icons │ │ │ │ ├── import.svg │ │ │ │ ├── moon-night.svg │ │ │ │ ├── moon.svg │ │ │ │ ├── plus.svg │ │ │ │ └── secured.svg │ │ │ │ ├── install-browser-mac.gif │ │ │ │ ├── logo-icon.svg │ │ │ │ ├── logo.svg │ │ │ │ ├── logo │ │ │ │ ├── logo-feed-night.svg │ │ │ │ ├── logo-feed.svg │ │ │ │ ├── logo-icon.png │ │ │ │ ├── logo-night.svg │ │ │ │ ├── logo-portal-night.svg │ │ │ │ ├── logo-portal.svg │ │ │ │ └── logo.svg │ │ │ │ └── vpn-ellipses │ │ │ │ ├── dots.svg │ │ │ │ ├── ellipse-1.svg │ │ │ │ ├── ellipse-2.svg │ │ │ │ └── ellipse-3.svg │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── scripts │ │ │ └── help-beacon.js │ │ ├── styles.scss │ │ ├── styles │ │ │ ├── beacon.scss │ │ │ ├── colors.scss │ │ │ ├── fonts.scss │ │ │ ├── material.scss │ │ │ ├── mixins.scss │ │ │ ├── post-category.scss │ │ │ ├── reset.scss │ │ │ ├── styles.scss │ │ │ ├── text-ellipsis.scss │ │ │ ├── theme.scss │ │ │ └── toastr.scss │ │ └── test.ts │ ├── tsconfig.app.json │ └── tsconfig.spec.json └── scripts │ ├── assets │ └── icons │ │ ├── 128.png │ │ ├── 16.png │ │ ├── 16_active.png │ │ ├── 19.png │ │ ├── 32.png │ │ ├── 32_active.png │ │ ├── 38.png │ │ ├── 512.png │ │ └── 64.png │ ├── manifest │ └── manifest.json │ ├── plugins │ └── inline-webpage-api.plugin.js │ ├── src │ ├── background-script.ts │ ├── background │ │ ├── auth │ │ │ └── while-user-active.ts │ │ ├── charon-api │ │ │ ├── api.ts │ │ │ ├── index.ts │ │ │ ├── listeners.ts │ │ │ └── message-bus-map.ts │ │ ├── client.ts │ │ ├── config │ │ │ ├── config-port-name.ts │ │ │ ├── config-port.ts │ │ │ ├── config.ts │ │ │ ├── index.ts │ │ │ └── sources │ │ │ │ ├── config-api-source.ts │ │ │ │ └── config-port-source.ts │ │ ├── context-menu │ │ │ ├── index.ts │ │ │ ├── policy.ts │ │ │ └── wireguard.ts │ │ ├── decentr-storage │ │ │ ├── index.ts │ │ │ └── sync.ts │ │ ├── installation.ts │ │ ├── listeners.ts │ │ ├── lock.ts │ │ ├── migration │ │ │ ├── 1.3.3.ts │ │ │ ├── 2.0.0.ts │ │ │ ├── 2.2.0.ts │ │ │ ├── 3.5.0.ts │ │ │ ├── index.ts │ │ │ └── migration.ts │ │ ├── network │ │ │ ├── index.ts │ │ │ └── network.ts │ │ ├── pdv │ │ │ ├── advertiser-id │ │ │ │ ├── advertisers.ts │ │ │ │ ├── collection.ts │ │ │ │ └── index.ts │ │ │ ├── api.ts │ │ │ ├── collection.ts │ │ │ ├── cookies │ │ │ │ ├── collection.ts │ │ │ │ ├── domain-track.ts │ │ │ │ ├── events.ts │ │ │ │ ├── index.ts │ │ │ │ └── unapproved-storage.ts │ │ │ ├── index.ts │ │ │ ├── is-pdv.ts │ │ │ ├── location │ │ │ │ ├── collection.ts │ │ │ │ ├── events.ts │ │ │ │ └── index.ts │ │ │ ├── pdv-unique-store.ts │ │ │ ├── search-history │ │ │ │ ├── collection.ts │ │ │ │ ├── engines.ts │ │ │ │ ├── events.ts │ │ │ │ └── index.ts │ │ │ └── storage.ts │ │ ├── queue.ts │ │ ├── technical.ts │ │ ├── webpage-api │ │ │ ├── api.ts │ │ │ ├── index.ts │ │ │ ├── listeners.ts │ │ │ ├── message-bus-map.ts │ │ │ └── messages.ts │ │ └── wireguard │ │ │ ├── icon.ts │ │ │ └── index.ts │ ├── content-api-script.ts │ ├── content-script.ts │ ├── content │ │ ├── location │ │ │ ├── events.ts │ │ │ ├── index.ts │ │ │ └── init.ts │ │ └── webpage-api │ │ │ ├── content-script │ │ │ ├── common │ │ │ │ ├── api.ts │ │ │ │ └── index.ts │ │ │ ├── config.ts │ │ │ ├── index.ts │ │ │ ├── message-handling.ts │ │ │ ├── share │ │ │ │ ├── api.ts │ │ │ │ └── index.ts │ │ │ └── swap │ │ │ │ ├── api.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── init.ts │ │ │ ├── webpage-api-message-bus.ts │ │ │ └── webpage-script │ │ │ ├── common │ │ │ ├── api.ts │ │ │ └── index.ts │ │ │ ├── script.ts │ │ │ ├── share │ │ │ ├── api.ts │ │ │ └── index.ts │ │ │ └── swap │ │ │ ├── api.ts │ │ │ └── index.ts │ └── messages │ │ └── index.ts │ ├── tsconfig.json │ ├── webpack.config.base.js │ ├── webpack.config.dev.js │ └── webpack.config.prod.js ├── shared ├── analytics │ ├── analytics.definitions.ts │ ├── analytics.module.ts │ ├── analytics.service.ts │ ├── directives │ │ ├── analytics-click-event.directive.ts │ │ └── index.ts │ └── index.ts ├── components │ ├── avatar │ │ ├── avatar.component.html │ │ ├── avatar.component.scss │ │ ├── avatar.component.ts │ │ ├── avatar.definitions.ts │ │ ├── avatar.module.ts │ │ └── index.ts │ ├── button-back │ │ ├── button-back.component.html │ │ ├── button-back.component.scss │ │ ├── button-back.component.ts │ │ ├── button-back.module.ts │ │ └── index.ts │ ├── button │ │ ├── button.component.html │ │ ├── button.component.scss │ │ ├── button.component.ts │ │ ├── button.module.ts │ │ └── index.ts │ ├── code-input │ │ ├── code-input.component.html │ │ ├── code-input.component.scss │ │ ├── code-input.component.ts │ │ ├── code-input.module.ts │ │ └── index.ts │ ├── color-circle-label │ │ ├── color-circle-label.component.html │ │ ├── color-circle-label.component.scss │ │ ├── color-circle-label.component.ts │ │ ├── color-circle-label.module.ts │ │ └── index.ts │ ├── confirmation-dialog │ │ ├── confirmation-dialog.component.html │ │ ├── confirmation-dialog.component.scss │ │ ├── confirmation-dialog.component.ts │ │ ├── confirmation-dialog.definitions.ts │ │ ├── confirmation-dialog.module.ts │ │ ├── confirmation-dialog.service.ts │ │ └── index.ts │ ├── controls │ │ ├── avatar-selector │ │ │ ├── avatar-selector.component.html │ │ │ ├── avatar-selector.component.scss │ │ │ ├── avatar-selector.component.ts │ │ │ ├── avatar-selector.module.ts │ │ │ └── index.ts │ │ ├── checkbox │ │ │ ├── checkbox.component.html │ │ │ ├── checkbox.component.scss │ │ │ ├── checkbox.component.ts │ │ │ ├── checkbox.module.ts │ │ │ └── index.ts │ │ ├── custom-control.ts │ │ ├── date-input │ │ │ ├── date-input.component.html │ │ │ ├── date-input.component.scss │ │ │ ├── date-input.component.ts │ │ │ ├── date-input.module.ts │ │ │ ├── date-input.utils.ts │ │ │ └── index.ts │ │ ├── gender-selector │ │ │ ├── gender-selector.component.html │ │ │ ├── gender-selector.component.scss │ │ │ ├── gender-selector.component.ts │ │ │ ├── gender-selector.definitions.ts │ │ │ ├── gender-selector.module.ts │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── input │ │ │ ├── index.ts │ │ │ ├── input.component.html │ │ │ ├── input.component.scss │ │ │ ├── input.component.ts │ │ │ └── input.module.ts │ │ └── select │ │ │ ├── index.ts │ │ │ ├── select.component.html │ │ │ ├── select.component.scss │ │ │ ├── select.component.ts │ │ │ ├── select.definitions.ts │ │ │ └── select.module.ts │ ├── currency-symbol │ │ ├── component │ │ │ ├── currency-symbol.component.html │ │ │ ├── currency-symbol.component.scss │ │ │ ├── currency-symbol.component.ts │ │ │ └── index.ts │ │ ├── currency-symbol.module.ts │ │ ├── currency-symbol.service.ts │ │ ├── index.ts │ │ └── pipe │ │ │ ├── currency-symbol.pipe.ts │ │ │ └── index.ts │ ├── data-table │ │ ├── data-table.component.html │ │ ├── data-table.component.scss │ │ ├── data-table.component.ts │ │ ├── data-table.module.ts │ │ ├── directives │ │ │ ├── data-table-column-def.directive.ts │ │ │ ├── data-table-empty-row-def.directive.ts │ │ │ └── index.ts │ │ └── index.ts │ ├── details-table │ │ ├── details-table-cell-def.directive.ts │ │ ├── details-table.component.html │ │ ├── details-table.component.scss │ │ ├── details-table.component.ts │ │ ├── details-table.module.ts │ │ └── index.ts │ ├── expansion-list │ │ ├── expansion-list-cell │ │ │ ├── expansion-list-cell-def.directive.ts │ │ │ └── index.ts │ │ ├── expansion-list-column-footer │ │ │ ├── expansion-list-column-footer-def.directive.ts │ │ │ └── index.ts │ │ ├── expansion-list-column │ │ │ ├── expansion-list-column-def.directive.ts │ │ │ ├── expansion-list-column.component.html │ │ │ ├── expansion-list-column.component.scss │ │ │ ├── expansion-list-column.component.ts │ │ │ └── index.ts │ │ ├── expansion-list-header-cell │ │ │ ├── expansion-list-header-cell-def.directive.ts │ │ │ └── index.ts │ │ ├── expansion-list-loading │ │ │ ├── expansion-list-loading.directive.ts │ │ │ └── index.ts │ │ ├── expansion-list.module.ts │ │ ├── expansion-list │ │ │ ├── expansion-list.component.html │ │ │ ├── expansion-list.component.scss │ │ │ ├── expansion-list.component.ts │ │ │ ├── expansion-list.service.ts │ │ │ └── index.ts │ │ └── index.ts │ ├── form-error │ │ ├── form-error.component.html │ │ ├── form-error.component.scss │ │ ├── form-error.component.ts │ │ ├── form-error.module.ts │ │ ├── form-error.tokens.ts │ │ └── index.ts │ ├── input-container │ │ ├── index.ts │ │ ├── input-container-control.ts │ │ ├── input-container.component.html │ │ ├── input-container.component.scss │ │ ├── input-container.component.ts │ │ └── input-container.module.ts │ ├── input-counter │ │ ├── index.ts │ │ ├── input-counter.component.html │ │ ├── input-counter.component.scss │ │ ├── input-counter.component.ts │ │ └── input-counter.module.ts │ ├── line-chart │ │ ├── index.ts │ │ ├── line-chart-tooltip.directive.ts │ │ ├── line-chart.component.html │ │ ├── line-chart.component.scss │ │ ├── line-chart.component.ts │ │ └── line-chart.module.ts │ ├── margin-label │ │ ├── index.ts │ │ ├── margin-label.component.html │ │ ├── margin-label.component.scss │ │ ├── margin-label.component.ts │ │ └── margin-label.module.ts │ ├── menu │ │ ├── index.ts │ │ ├── menu.definitions.ts │ │ ├── menu.module.ts │ │ ├── menu.service.ts │ │ └── menu │ │ │ ├── index.ts │ │ │ ├── menu.component.html │ │ │ ├── menu.component.scss │ │ │ └── menu.component.ts │ ├── network-selector │ │ ├── index.ts │ │ ├── network-selector.component.html │ │ ├── network-selector.component.scss │ │ ├── network-selector.component.ts │ │ ├── network-selector.definitions.ts │ │ ├── network-selector.module.ts │ │ └── network-selector.service.ts │ ├── password │ │ ├── index.ts │ │ ├── password-form │ │ │ ├── index.ts │ │ │ ├── password-form.component.html │ │ │ ├── password-form.component.scss │ │ │ └── password-form.component.ts │ │ ├── password-validation-state │ │ │ ├── index.ts │ │ │ ├── password-validation-state.component.html │ │ │ ├── password-validation-state.component.scss │ │ │ └── password-validation-state.component.ts │ │ ├── password.definitions.ts │ │ ├── password.module.ts │ │ └── validation.ts │ ├── pdv-type-icon │ │ ├── index.ts │ │ ├── pdv-type-icon.component.html │ │ ├── pdv-type-icon.component.scss │ │ ├── pdv-type-icon.component.ts │ │ └── pdv-type-icon.module.ts │ ├── pdv-types-settings │ │ ├── index.ts │ │ ├── pdv-types-settings.module.ts │ │ ├── pdv-types-settings │ │ │ ├── index.ts │ │ │ ├── pdv-types-settings.component.html │ │ │ ├── pdv-types-settings.component.scss │ │ │ └── pdv-types-settings.component.ts │ │ └── pdv-types-toggle │ │ │ ├── index.ts │ │ │ ├── pdv-types-toggle.component.html │ │ │ ├── pdv-types-toggle.component.scss │ │ │ └── pdv-types-toggle.component.ts │ ├── profile-form │ │ ├── index.ts │ │ ├── profile-form-model.ts │ │ ├── profile-form.component.html │ │ ├── profile-form.component.scss │ │ ├── profile-form.component.ts │ │ ├── profile-form.definitions.ts │ │ └── profile-form.module.ts │ ├── seed │ │ ├── index.ts │ │ ├── seed.component.html │ │ ├── seed.component.scss │ │ ├── seed.component.ts │ │ └── seed.module.ts │ ├── slot │ │ ├── index.ts │ │ ├── slot-container.directive.ts │ │ ├── slot.directive.ts │ │ ├── slot.module.ts │ │ └── slot.service.ts │ ├── spinner │ │ ├── index.ts │ │ ├── spinner.component.scss │ │ ├── spinner.component.ts │ │ └── spinner.module.ts │ ├── text-editor │ │ ├── index.ts │ │ ├── text-editor.component.html │ │ ├── text-editor.component.scss │ │ ├── text-editor.component.ts │ │ └── text-editor.module.ts │ ├── theme │ │ ├── index.ts │ │ ├── theme-toggle.component.html │ │ ├── theme-toggle.component.scss │ │ ├── theme-toggle.component.ts │ │ ├── theme.module.ts │ │ └── theme.service.ts │ └── tooltip │ │ ├── index.ts │ │ ├── tooltip.component.html │ │ ├── tooltip.component.scss │ │ ├── tooltip.component.ts │ │ ├── tooltip.directive.ts │ │ └── tooltip.module.ts ├── directives │ ├── auto-focus │ │ ├── auto-focus.directive.ts │ │ ├── auto-focus.module.ts │ │ └── index.ts │ ├── bind-query-params │ │ ├── bind-query-params.directive.ts │ │ ├── bind-query-params.module.ts │ │ └── index.ts │ ├── browser-view │ │ ├── browser-popup-view.directive.ts │ │ ├── browser-tab-view.directive.ts │ │ ├── browser-view.module.ts │ │ └── index.ts │ ├── clipboard-copied-notification │ │ ├── clipboard-copied-notification.directive.ts │ │ ├── clipboard-copied-notification.module.ts │ │ └── index.ts │ ├── drag-scroll │ │ ├── drag-scroll.directive.ts │ │ ├── drag-scroll.module.ts │ │ └── index.ts │ ├── intersection │ │ ├── index.ts │ │ ├── intersection-area.directive.ts │ │ ├── intersection-target.directive.ts │ │ └── intersection.module.ts │ ├── link │ │ ├── index.ts │ │ ├── link.directive.ts │ │ └── link.module.ts │ ├── mouse-wheel-horizontal-scroll │ │ ├── index.ts │ │ ├── mouse-wheel-horizontal-scroll.directive.ts │ │ └── mouse-wheel-horizontal-scroll.module.ts │ ├── numeric │ │ ├── index.ts │ │ ├── numeric.directive.ts │ │ └── numeric.module.ts │ ├── router-link-scroll-anchor │ │ ├── index.ts │ │ ├── router-link-scroll-anchor.directive.ts │ │ └── router-link-scroll-anchor.module.ts │ ├── submit-after-validation │ │ ├── index.ts │ │ ├── submit-after-validation.directive.ts │ │ └── submit-after-validation.module.ts │ ├── submit-source │ │ ├── index.ts │ │ ├── submit-source.directive.ts │ │ └── submit-source.module.ts │ ├── text-clamp │ │ ├── index.ts │ │ ├── text-clamp.directive.ts │ │ └── text-clamp.module.ts │ ├── text-ellipsis │ │ ├── index.ts │ │ ├── text-ellipsis.directive.ts │ │ └── text-ellipsis.module.ts │ └── typeface │ │ ├── index.ts │ │ ├── typeface.directive.ts │ │ └── typeface.module.ts ├── forms │ ├── form-control-warn.ts │ └── index.ts ├── message-bus │ ├── index.ts │ └── message-bus.ts ├── permissions │ ├── has-permission │ │ ├── has-permission.directive.ts │ │ └── index.ts │ ├── index.ts │ ├── permissions.module.ts │ └── permissions.service.ts ├── pipes │ ├── bytes-size │ │ ├── bytes-size.module.ts │ │ ├── bytes-size.pipe.ts │ │ └── index.ts │ ├── coerce-timestamp │ │ ├── coerce-timestamp.module.ts │ │ ├── coerce-timestamp.pipe.ts │ │ └── index.ts │ ├── date-ago │ │ ├── date-ago.module.ts │ │ ├── date-ago.pipe.ts │ │ └── index.ts │ ├── micro-value │ │ ├── index.ts │ │ ├── micro-value.module.ts │ │ └── micro-value.pipe.ts │ ├── number-format │ │ ├── index.ts │ │ ├── number-format.module.ts │ │ ├── number-format.pipe.ts │ │ └── number-format.spec.ts │ ├── number-suffix │ │ ├── index.ts │ │ ├── number-suffix.module.ts │ │ └── number-suffix.pipe.ts │ ├── pdv-value │ │ ├── index.ts │ │ ├── pdv-value.module.ts │ │ └── pdv-value.pipe.ts │ ├── positiveNumber │ │ ├── index.ts │ │ ├── positive-number.module.ts │ │ └── positive-number.pipe.ts │ ├── price │ │ ├── index.ts │ │ ├── price.definitions.ts │ │ ├── price.module.ts │ │ └── price.pipe.ts │ └── text-content │ │ ├── index.ts │ │ ├── text-content.module.ts │ │ └── text-content.pipe.ts ├── services │ ├── auth │ │ ├── auth-browser-storage.service.ts │ │ ├── index.ts │ │ └── user.ts │ ├── blockchain-node │ │ ├── blockchain-node.service.ts │ │ └── index.ts │ ├── configuration │ │ ├── config-api.service.ts │ │ ├── config.definitions.ts │ │ ├── config.service.ts │ │ ├── configuration.module.ts │ │ └── index.ts │ ├── currency │ │ ├── currency-api.definitions.ts │ │ ├── currency.service.ts │ │ └── index.ts │ ├── lock │ │ ├── index.ts │ │ └── lock-browser-storage.service.ts │ ├── network-storage │ │ ├── index.ts │ │ └── network-browser-storage.service.ts │ ├── notification │ │ ├── error-processor.ts │ │ ├── index.ts │ │ ├── notification.service.ts │ │ ├── notification.tokens.ts │ │ └── notifications.module.ts │ ├── pdv │ │ ├── index.ts │ │ └── pdv-storage.service.ts │ ├── settings │ │ ├── index.ts │ │ ├── lock │ │ │ ├── index.ts │ │ │ ├── lock-settings.definitions.ts │ │ │ └── lock-settings.service.ts │ │ ├── pdv │ │ │ ├── index.ts │ │ │ ├── pdv-settings.definitions.ts │ │ │ └── pdv-settings.service.ts │ │ ├── settings.definitions.ts │ │ ├── settings.module.ts │ │ ├── settings.service.ts │ │ └── user-settings.service.ts │ ├── storage │ │ ├── browser │ │ │ ├── browser-local-storage.ts │ │ │ ├── browser-storage-section.ts │ │ │ ├── browser-storage.definitons.ts │ │ │ └── index.ts │ │ ├── decentr │ │ │ ├── decentr-storage.ts │ │ │ └── index.ts │ │ └── index.ts │ └── wireguard │ │ ├── index.ts │ │ ├── wireguard.definitions.ts │ │ └── wireguard.service.ts ├── styles │ ├── colors-theme.scss │ ├── colors.scss │ ├── dialog.scss │ ├── menu-popup.scss │ ├── overlay.scss │ ├── typeface.scss │ └── variables.scss ├── svg-icons │ ├── add-image.ts │ ├── add.ts │ ├── arrow-left.ts │ ├── chart-arrow-down.ts │ ├── chart-arrow-flat.ts │ ├── chart-arrow-up.ts │ ├── check.ts │ ├── clear.ts │ ├── close.ts │ ├── closed.ts │ ├── congratulations.ts │ ├── copy.ts │ ├── decentr-hub.ts │ ├── delegate.ts │ ├── delete.ts │ ├── discord.ts │ ├── download.ts │ ├── dropdown-expand.ts │ ├── dynamics-negative.ts │ ├── dynamics-positive.ts │ ├── edit.ts │ ├── email-confirmation-wait.ts │ ├── expand-more.ts │ ├── eye-crossed.ts │ ├── eye.ts │ ├── flags │ │ ├── ad.ts │ │ ├── ae.ts │ │ ├── af.ts │ │ ├── ag.ts │ │ ├── ai.ts │ │ ├── al.ts │ │ ├── am.ts │ │ ├── ao.ts │ │ ├── aq.ts │ │ ├── ar.ts │ │ ├── as.ts │ │ ├── at.ts │ │ ├── au.ts │ │ ├── aw.ts │ │ ├── ax.ts │ │ ├── az.ts │ │ ├── ba.ts │ │ ├── bb.ts │ │ ├── bd.ts │ │ ├── be.ts │ │ ├── bf.ts │ │ ├── bg.ts │ │ ├── bh.ts │ │ ├── bi.ts │ │ ├── bj.ts │ │ ├── bl.ts │ │ ├── bm.ts │ │ ├── bn.ts │ │ ├── bo.ts │ │ ├── bq.ts │ │ ├── br.ts │ │ ├── bs.ts │ │ ├── bt.ts │ │ ├── bv.ts │ │ ├── bw.ts │ │ ├── by.ts │ │ ├── bz.ts │ │ ├── ca.ts │ │ ├── cc.ts │ │ ├── cd.ts │ │ ├── cf.ts │ │ ├── cg.ts │ │ ├── ch.ts │ │ ├── ci.ts │ │ ├── ck.ts │ │ ├── cl.ts │ │ ├── cm.ts │ │ ├── cn.ts │ │ ├── co.ts │ │ ├── cr.ts │ │ ├── cu.ts │ │ ├── cv.ts │ │ ├── cw.ts │ │ ├── cx.ts │ │ ├── cy.ts │ │ ├── cz.ts │ │ ├── de.ts │ │ ├── dj.ts │ │ ├── dk.ts │ │ ├── dm.ts │ │ ├── do.ts │ │ ├── dz.ts │ │ ├── ec.ts │ │ ├── ee.ts │ │ ├── eg.ts │ │ ├── eh.ts │ │ ├── er.ts │ │ ├── es-ct.ts │ │ ├── es-ga.ts │ │ ├── es.ts │ │ ├── et.ts │ │ ├── eu.ts │ │ ├── fi.ts │ │ ├── fj.ts │ │ ├── fk.ts │ │ ├── fm.ts │ │ ├── fo.ts │ │ ├── fr.ts │ │ ├── ga.ts │ │ ├── gb-eng.ts │ │ ├── gb-nir.ts │ │ ├── gb-sct.ts │ │ ├── gb-wls.ts │ │ ├── gb.ts │ │ ├── gd.ts │ │ ├── ge.ts │ │ ├── gf.ts │ │ ├── gg.ts │ │ ├── gh.ts │ │ ├── gi.ts │ │ ├── gl.ts │ │ ├── gm.ts │ │ ├── gn.ts │ │ ├── gp.ts │ │ ├── gq.ts │ │ ├── gr.ts │ │ ├── gs.ts │ │ ├── gt.ts │ │ ├── gu.ts │ │ ├── gw.ts │ │ ├── gy.ts │ │ ├── hk.ts │ │ ├── hm.ts │ │ ├── hn.ts │ │ ├── hr.ts │ │ ├── ht.ts │ │ ├── hu.ts │ │ ├── id.ts │ │ ├── ie.ts │ │ ├── il.ts │ │ ├── im.ts │ │ ├── in.ts │ │ ├── index.ts │ │ ├── io.ts │ │ ├── iq.ts │ │ ├── ir.ts │ │ ├── is.ts │ │ ├── it.ts │ │ ├── je.ts │ │ ├── jm.ts │ │ ├── jo.ts │ │ ├── jp.ts │ │ ├── ke.ts │ │ ├── kg.ts │ │ ├── kh.ts │ │ ├── ki.ts │ │ ├── km.ts │ │ ├── kn.ts │ │ ├── kp.ts │ │ ├── kr.ts │ │ ├── kw.ts │ │ ├── ky.ts │ │ ├── kz.ts │ │ ├── la.ts │ │ ├── lb.ts │ │ ├── lc.ts │ │ ├── li.ts │ │ ├── lk.ts │ │ ├── lr.ts │ │ ├── ls.ts │ │ ├── lt.ts │ │ ├── lu.ts │ │ ├── lv.ts │ │ ├── ly.ts │ │ ├── ma.ts │ │ ├── mc.ts │ │ ├── md.ts │ │ ├── me.ts │ │ ├── mf.ts │ │ ├── mg.ts │ │ ├── mh.ts │ │ ├── mk.ts │ │ ├── ml.ts │ │ ├── mm.ts │ │ ├── mn.ts │ │ ├── mo.ts │ │ ├── mp.ts │ │ ├── mq.ts │ │ ├── mr.ts │ │ ├── ms.ts │ │ ├── mt.ts │ │ ├── mu.ts │ │ ├── mv.ts │ │ ├── mw.ts │ │ ├── mx.ts │ │ ├── my.ts │ │ ├── mz.ts │ │ ├── na.ts │ │ ├── nc.ts │ │ ├── ne.ts │ │ ├── nf.ts │ │ ├── ng.ts │ │ ├── ni.ts │ │ ├── nl.ts │ │ ├── no.ts │ │ ├── np.ts │ │ ├── nr.ts │ │ ├── nu.ts │ │ ├── nz.ts │ │ ├── om.ts │ │ ├── pa.ts │ │ ├── pe.ts │ │ ├── pf.ts │ │ ├── pg.ts │ │ ├── ph.ts │ │ ├── pk.ts │ │ ├── pl.ts │ │ ├── pm.ts │ │ ├── pn.ts │ │ ├── pr.ts │ │ ├── ps.ts │ │ ├── pt.ts │ │ ├── pw.ts │ │ ├── py.ts │ │ ├── qa.ts │ │ ├── re.ts │ │ ├── ro.ts │ │ ├── rs.ts │ │ ├── ru.ts │ │ ├── rw.ts │ │ ├── sa.ts │ │ ├── sb.ts │ │ ├── sc.ts │ │ ├── sd.ts │ │ ├── se.ts │ │ ├── sg.ts │ │ ├── sh.ts │ │ ├── si.ts │ │ ├── sj.ts │ │ ├── sk.ts │ │ ├── sl.ts │ │ ├── sm.ts │ │ ├── sn.ts │ │ ├── so.ts │ │ ├── sr.ts │ │ ├── ss.ts │ │ ├── st.ts │ │ ├── sv.ts │ │ ├── sx.ts │ │ ├── sy.ts │ │ ├── sz.ts │ │ ├── tc.ts │ │ ├── td.ts │ │ ├── tf.ts │ │ ├── tg.ts │ │ ├── th.ts │ │ ├── tj.ts │ │ ├── tk.ts │ │ ├── tl.ts │ │ ├── tm.ts │ │ ├── tn.ts │ │ ├── to.ts │ │ ├── tr.ts │ │ ├── tt.ts │ │ ├── tv.ts │ │ ├── tw.ts │ │ ├── tz.ts │ │ ├── ua.ts │ │ ├── ug.ts │ │ ├── um.ts │ │ ├── un.ts │ │ ├── us.ts │ │ ├── uy.ts │ │ ├── uz.ts │ │ ├── va.ts │ │ ├── vc.ts │ │ ├── ve.ts │ │ ├── vg.ts │ │ ├── vi.ts │ │ ├── vn.ts │ │ ├── vu.ts │ │ ├── wf.ts │ │ ├── ws.ts │ │ ├── xk.ts │ │ ├── ye.ts │ │ ├── yt.ts │ │ ├── za.ts │ │ ├── zm.ts │ │ └── zw.ts │ ├── follow.ts │ ├── get-coin.ts │ ├── github.ts │ ├── import-account.ts │ ├── import.ts │ ├── information.ts │ ├── jailed.ts │ ├── like.ts │ ├── link.ts │ ├── lock.ts │ ├── logo-feed.ts │ ├── logo-icon-green.ts │ ├── logo-icon-orange.ts │ ├── logo-icon-pink.ts │ ├── logo-icon.ts │ ├── logo-portal.ts │ ├── logo.ts │ ├── loud.ts │ ├── medium.ts │ ├── moon.ts │ ├── new-user.ts │ ├── path.ts │ ├── pdv-rate-icon.ts │ ├── pdv-type │ │ ├── advertiser.ts │ │ ├── cookie.ts │ │ ├── index.ts │ │ ├── location.ts │ │ ├── profile.ts │ │ └── search-history.ts │ ├── piggy-bank.ts │ ├── plus.ts │ ├── publish.ts │ ├── qr.ts │ ├── receive-coin.ts │ ├── receive.ts │ ├── redelegate.ts │ ├── referral.ts │ ├── refresh.ts │ ├── reload.ts │ ├── seed-phrase.ts │ ├── send-coin.ts │ ├── send.ts │ ├── settings.ts │ ├── signal.ts │ ├── speedometer.ts │ ├── star.ts │ ├── telegram.ts │ ├── topup.ts │ ├── transaction.ts │ ├── trash.ts │ ├── twitter.ts │ ├── undo.ts │ ├── validator-status │ │ ├── bonded.ts │ │ ├── index.ts │ │ ├── unbonded.ts │ │ └── unbonding.ts │ ├── wallet.ts │ └── widescreen.ts └── utils │ ├── array │ ├── exclude.ts │ ├── index.ts │ ├── intersection.ts │ └── unique.ts │ ├── browser │ ├── browser.ts │ ├── index.ts │ ├── is-installed-as-extension.ts │ └── window-mode.ts │ ├── crypto │ ├── aes.ts │ ├── index.ts │ └── sha256.ts │ ├── date │ └── index.ts │ ├── file │ ├── index.ts │ ├── mime-type.ts │ └── size.ts │ ├── group-by │ ├── group-by.ts │ └── index.ts │ ├── html │ ├── children.ts │ ├── fragment-wrapped-fragment.ts │ ├── get-plain-text.ts │ ├── images-count.ts │ ├── index.ts │ ├── node-rect.ts │ └── visibility.ts │ ├── http │ └── index.ts │ ├── infinite-loading │ ├── index.ts │ ├── infinite-loading.presenter.ts │ └── infinite-loading.service.ts │ ├── number │ ├── compare-semver.ts │ └── index.ts │ ├── observable │ ├── coerce-observable.ts │ └── index.ts │ ├── observe-resize │ └── index.ts │ ├── online │ └── index.ts │ ├── os │ └── index.ts │ ├── pdv │ ├── get-pdv-day-change.ts │ ├── index.ts │ └── map-pdv-stats-to-chart-points.ts │ ├── price │ └── index.ts │ ├── routing │ ├── get-parent-url.ts │ └── index.ts │ ├── timer │ └── index.ts │ ├── url │ └── index.ts │ ├── uuid │ └── index.ts │ ├── validation │ ├── base │ │ └── base-validation.util.ts │ └── index.ts │ └── version │ └── index.ts └── tsconfig.json /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.ts] 12 | quote_type = single 13 | 14 | [*.md] 15 | max_line_length = off 16 | trim_trailing_whitespace = false 17 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npm run lint:staged 5 | -------------------------------------------------------------------------------- /assets/svg/add-image.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/svg/add.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/svg/arrow-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/svg/chart-arrow-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/svg/chart-arrow-flat.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/svg/chart-arrow-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/svg/check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/svg/copy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/svg/download.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/svg/dropdown-expand.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/svg/edit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/svg/expand-more.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/svg/flags/ae.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /assets/svg/flags/am.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /assets/svg/flags/at.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /assets/svg/flags/bd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/svg/flags/be.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/bf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/bg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/bl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/bq.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /assets/svg/flags/bw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/cd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /assets/svg/flags/ch.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /assets/svg/flags/ci.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/co.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/cr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/cz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /assets/svg/flags/de.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /assets/svg/flags/dk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /assets/svg/flags/dz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /assets/svg/flags/ee.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/es-ct.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/svg/flags/fi.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /assets/svg/flags/fr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/ga.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/gb-eng.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /assets/svg/flags/gb-sct.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/svg/flags/gf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/gh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /assets/svg/flags/gl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/svg/flags/gn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/gp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/hu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/id.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /assets/svg/flags/ie.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/it.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/lc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /assets/svg/flags/lu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /assets/svg/flags/lv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /assets/svg/flags/ma.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/svg/flags/mc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /assets/svg/flags/mf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/mg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/mk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /assets/svg/flags/ml.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/mq.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/mu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /assets/svg/flags/mv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /assets/svg/flags/ne.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /assets/svg/flags/ng.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /assets/svg/flags/nl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /assets/svg/flags/no.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/pl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /assets/svg/flags/pm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/qa.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/svg/flags/re.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/ro.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/ru.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/se.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /assets/svg/flags/sj.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/sl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/sr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /assets/svg/flags/td.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/th.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/tt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /assets/svg/flags/ua.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /assets/svg/flags/wf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/ye.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/flags/yt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/information.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/svg/moon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/svg/pdv-rate-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/svg/pdv-type/advertiser.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/svg/pdv-type/location.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/svg/pdv-type/profile.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/svg/publish.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/svg/receive-coin.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /assets/svg/send-coin.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/svg/send.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/svg/signal.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /assets/svg/undo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/svg/validator-status/bonded.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /environments/environment.definitions.ts: -------------------------------------------------------------------------------- 1 | export abstract class Environment { 2 | abstract avatars: string; 3 | abstract config: string; 4 | abstract currencyApi: string; 5 | abstract explorer: string; 6 | abstract ga: string; 7 | abstract help: string; 8 | abstract production: boolean; 9 | } 10 | -------------------------------------------------------------------------------- /projects/charon/src/app/app-route.ts: -------------------------------------------------------------------------------- 1 | export enum AppRoute { 2 | Hub = 'hub', 3 | Login = 'login', 4 | Maintenance = 'maintenance', 5 | Offline = 'offline', 6 | Portal = 'portal', 7 | SignUp = 'sign-up', 8 | User = 'user', 9 | Update = 'update', 10 | Welcome = 'welcome', 11 | } 12 | -------------------------------------------------------------------------------- /projects/charon/src/app/app.definitions.ts: -------------------------------------------------------------------------------- 1 | export const APP_TITLE = 'Charon'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/auth/index.ts: -------------------------------------------------------------------------------- 1 | export * from './auth.module'; 2 | export * from './services'; 3 | export * from './models'; 4 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/auth/models/index.ts: -------------------------------------------------------------------------------- 1 | export * from './auth-user'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/auth/services/index.ts: -------------------------------------------------------------------------------- 1 | export * from './auth.service'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/guards/auth/index.ts: -------------------------------------------------------------------------------- 1 | import { AuthCompletedRegistrationGuard } from './auth-completed-registration.guard'; 2 | import { UnauthGuard } from './unauth.guard'; 3 | 4 | export * from './auth-completed-registration.guard'; 5 | export * from './unauth.guard'; 6 | 7 | export const AUTH_GUARDS = [ 8 | AuthCompletedRegistrationGuard, 9 | UnauthGuard, 10 | ]; 11 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './core.module'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/layout/authorized-layout/authorized-layout-header/index.ts: -------------------------------------------------------------------------------- 1 | export * from './authorized-layout-header.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/layout/authorized-layout/authorized-layout-navigation-link/index.ts: -------------------------------------------------------------------------------- 1 | export * from './authorized-layout-navigation-link.component'; 2 | export * from './authorized-layout-navigation-link-def.directive'; 3 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/layout/authorized-layout/authorized-layout-navigation/index.ts: -------------------------------------------------------------------------------- 1 | export * from './authorized-layout-navigation.component'; 2 | export * from './authorized-layout-navigation.service'; 3 | export * from './authorized-layout-navigation-def.directive'; 4 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/layout/authorized-layout/index.ts: -------------------------------------------------------------------------------- 1 | export * from './authorized-layout.component'; 2 | export { 3 | AUTHORIZED_LAYOUT_HEADER_META_SLOT, 4 | AUTHORIZED_LAYOUT_HEADER_ACTIONS_SLOT, 5 | AUTHORIZED_LAYOUT_HEADER_LOGO_SLOT, 6 | } from './authorized-layout-header'; 7 | export * from './authorized-layout.module'; 8 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/layout/layout-footer/index.ts: -------------------------------------------------------------------------------- 1 | export * from './layout-footer.module'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/layout/public-layout/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-layout.module'; 2 | export * from './public-layout.component'; 3 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/lock/guards/index.ts: -------------------------------------------------------------------------------- 1 | import { LockGuard } from './lock.guard'; 2 | 3 | export const LOCK_GUARDS = [ 4 | LockGuard, 5 | ]; 6 | 7 | export * from './lock.guard'; 8 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/lock/index.ts: -------------------------------------------------------------------------------- 1 | export * from './guards'; 2 | export * from './services'; 3 | export * from './lock.module'; 4 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/lock/lock.tokens.ts: -------------------------------------------------------------------------------- 1 | import { InjectionToken } from '@angular/core'; 2 | import { Observable } from 'rxjs'; 3 | 4 | export const LOCK_ACTIVITY_SOURCE: InjectionToken> 5 | = new InjectionToken('LOCK_ACTIVITY_SOURCE'); 6 | 7 | export const LOCK_REDIRECT_URL: InjectionToken = new InjectionToken('LOCK_REDIRECT_URL'); 8 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/lock/services/index.ts: -------------------------------------------------------------------------------- 1 | import { LockService } from './lock.service'; 2 | 3 | export const LOCK_SERVICES = [ 4 | LockService, 5 | ]; 6 | 7 | export * from './lock.definitions'; 8 | export * from './lock.service'; 9 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/lock/services/lock.definitions.ts: -------------------------------------------------------------------------------- 1 | export enum LockParam { 2 | ReturnUrl = 'returnUrl', 3 | } 4 | 5 | export enum LockReturnUrlParam { 6 | Close = 'close', 7 | } 8 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/navigation/index.ts: -------------------------------------------------------------------------------- 1 | export * from './navigation.module'; 2 | export * from './navigation.service'; 3 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/navigation/navigate-back/index.ts: -------------------------------------------------------------------------------- 1 | export * from './navigate-back.directive'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/navigation/navigation.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | 3 | import { NavigateBackDirective } from './navigate-back'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | NavigateBackDirective, 8 | ], 9 | exports: [ 10 | NavigateBackDirective, 11 | ], 12 | }) 13 | export class NavigationModule { 14 | } 15 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/notifications/error-processors/index.ts: -------------------------------------------------------------------------------- 1 | import { BroadcastErrorProcessor } from './broadcast-error-processor'; 2 | import { TranslatedErrorProcessor } from './translated-error-processor'; 3 | 4 | export * from './fallback-error-processor'; 5 | 6 | export const ERROR_PROCESSORS = [ 7 | BroadcastErrorProcessor, 8 | TranslatedErrorProcessor, 9 | ]; 10 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/notifications/index.ts: -------------------------------------------------------------------------------- 1 | export * from './error-processors'; 2 | export * from './models'; 3 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/notifications/models/index.ts: -------------------------------------------------------------------------------- 1 | export * from './translated-error'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/notifications/models/translated-error.ts: -------------------------------------------------------------------------------- 1 | export class TranslatedError extends Error { 2 | } 3 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/permissions/index.ts: -------------------------------------------------------------------------------- 1 | export * from './permissions.service'; 2 | export * from './permissions'; 3 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/permissions/permissions.ts: -------------------------------------------------------------------------------- 1 | export enum UserPermissions { 2 | DELETE_POST, 3 | } 4 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/services/bank/index.ts: -------------------------------------------------------------------------------- 1 | export * from './bank.service'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/services/blocks/index.ts: -------------------------------------------------------------------------------- 1 | export * from './blocks.service'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/services/currency/index.ts: -------------------------------------------------------------------------------- 1 | export * from './currency.service'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/services/decentr/index.ts: -------------------------------------------------------------------------------- 1 | export * from './decentr.service'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/services/distribution/index.ts: -------------------------------------------------------------------------------- 1 | export * from './distribution.service'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/services/following/index.ts: -------------------------------------------------------------------------------- 1 | export * from './following.service'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/services/help/index.ts: -------------------------------------------------------------------------------- 1 | export * from './help.service'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/services/image-uploader/index.ts: -------------------------------------------------------------------------------- 1 | export * from './image-uploader.service'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/services/menu/index.ts: -------------------------------------------------------------------------------- 1 | export * from './menu.service'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/services/network-selector/index.ts: -------------------------------------------------------------------------------- 1 | export * from './network-selector.service'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/services/network/index.ts: -------------------------------------------------------------------------------- 1 | export * from './network.service'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/services/pdv/index.ts: -------------------------------------------------------------------------------- 1 | export * from './pdv.definitions'; 2 | export * from './pdv.service'; 3 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/services/pdv/pdv.definitions.ts: -------------------------------------------------------------------------------- 1 | export interface PDVStatChartPoint { 2 | date: number; 3 | value: number; 4 | } 5 | 6 | export interface BalanceValueDynamic { 7 | dayMargin: number; 8 | value: string | number; 9 | } 10 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/services/posts/index.ts: -------------------------------------------------------------------------------- 1 | export * from './posts.definitions'; 2 | export * from './posts.service'; 3 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/services/referral/index.ts: -------------------------------------------------------------------------------- 1 | export * from './referral.service'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/services/sentinel/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sentinel.definitions'; 2 | export * from './sentinel.service'; 3 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/services/spinner/index.ts: -------------------------------------------------------------------------------- 1 | export * from './spinner.service'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/services/staking/index.ts: -------------------------------------------------------------------------------- 1 | export * from './staking.service'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/services/user/index.ts: -------------------------------------------------------------------------------- 1 | export * from './user.service'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/svg-icons/index.ts: -------------------------------------------------------------------------------- 1 | export * from './svg-icon-root.module'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/core/transloco/index.ts: -------------------------------------------------------------------------------- 1 | export * from './transloco-root.module'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-additional-statistics/hub-additional-statistics.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-additional-statistics/hub-additional-statistics.component.scss: -------------------------------------------------------------------------------- 1 | @import 'variables'; 2 | 3 | :host { 4 | display: grid; 5 | gap: $grid-step * 3; 6 | grid-template-columns: 1fr 1fr; 7 | position: relative; 8 | } 9 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-additional-statistics/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-additional-statistics.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-adv-statistics/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-adv-statistics.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-category-select/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-category-select.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-currency-statistics/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-currency-statistics.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-ddv-statistics/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-ddv-statistics.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-feed-navigation/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-feed-navigation.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-feed-posts/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-feed-posts.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-header-stats-meta/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-header-stats-meta.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-infinite-posts-container/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-infinite-posts-container.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-load-more-button/hub-load-more-button.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-load-more-button/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-load-more-button.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-navigation/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-navigation.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-pdv-statistics/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-pdv-statistics.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-post-card/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-post-card.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-post-content/hub-post-content.component.html: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-post-content/hub-post-content.component.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | img { 3 | display: block; 4 | height: auto; 5 | margin: auto; 6 | max-width: 100%; 7 | padding: 10px 0; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-post-content/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-post-content.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-post-delete-button/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-post-delete-button.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-post-editor-error/hub-post-editor-error.component.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-post-editor-error/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-post-editor-error.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-post-editor/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-post-editor.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-post-layout/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-post-layout.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-post-pdv-diagram/hub-post-pdv-diagram.component.html: -------------------------------------------------------------------------------- 1 | 5 | 6 | {{ pdv | pdvValue : true }} 7 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-post-pdv-diagram/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-post-pdv-diagram.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-post-pdv/hub-post-pdv.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ translate('label') }} 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-post-pdv/hub-post-pdv.component.scss: -------------------------------------------------------------------------------- 1 | @import 'variables'; 2 | 3 | :host { 4 | align-items: center; 5 | display: inline-flex; 6 | } 7 | 8 | .hub-post-pdv__label { 9 | font-weight: 700; 10 | margin-right: $grid-half-step; 11 | } 12 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-post-pdv/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-post-pdv.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-post-rating/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-post-rating.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-posts-pdv-filter/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-posts-pdv-filter.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-profile-card/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-profile-card.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-related-posts/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-related-posts.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-statistics-card/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-statistics-card.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-top-posts/hub-top-posts.component.scss: -------------------------------------------------------------------------------- 1 | @import 'variables'; 2 | 3 | :host .hub-top-posts__post { 4 | border-radius: 0; 5 | cursor: pointer; 6 | 7 | &:last-of-type { 8 | border-bottom-left-radius: $border-radius; 9 | border-bottom-right-radius: $border-radius; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/components/hub-top-posts/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-top-posts.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/directives/hub-can-delete-post/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-can-delete-post.directive'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/directives/hub-image-uploader/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-image-uploader.directive'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/directives/hub-post-category-color/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-post-category-color.directive'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/directives/index.ts: -------------------------------------------------------------------------------- 1 | import { HubCanDeletePostDirective } from './hub-can-delete-post'; 2 | import { HubImageUploaderDirective } from './hub-image-uploader'; 3 | import { HubPostCategoryColorDirective } from './hub-post-category-color'; 4 | 5 | export const HUB_DIRECTIVES = [ 6 | HubCanDeletePostDirective, 7 | HubImageUploaderDirective, 8 | HubPostCategoryColorDirective, 9 | ]; 10 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-route'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/pages/feed-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './feed-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/pages/following-page/following-page.component.html: -------------------------------------------------------------------------------- 1 | 5 | 6 |
{{ translate('no_posts') }}
7 |
8 |
9 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/pages/following-page/following-page.component.scss: -------------------------------------------------------------------------------- 1 | @import 'variables'; 2 | 3 | :host { 4 | display: block; 5 | padding-bottom: $grid-step * 3; 6 | } 7 | 8 | .my-posts-page__no-posts { 9 | color: var(--color-dhub-no-posts); 10 | text-align: center; 11 | } 12 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/pages/following-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './following-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/pages/hub-page/hub-page.component.scss: -------------------------------------------------------------------------------- 1 | @import 'colors'; 2 | 3 | :host { 4 | background: var(--color-main-background); 5 | display: block; 6 | height: 100%; 7 | margin: 0 auto; 8 | } 9 | 10 | .hub-page__network-selector { 11 | margin-left: $grid-step; 12 | } 13 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/pages/hub-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hub-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/pages/my-posts-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './my-posts-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/pages/my-posts-page/my-posts-page.component.html: -------------------------------------------------------------------------------- 1 | 5 | 6 |
{{ translate('no_posts') }}
7 |
8 |
9 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/pages/my-posts-page/my-posts-page.component.scss: -------------------------------------------------------------------------------- 1 | @import 'variables'; 2 | 3 | :host { 4 | display: block; 5 | padding-bottom: $grid-step * 3; 6 | } 7 | 8 | .my-posts-page__no-posts { 9 | color: var(--color-dhub-no-posts); 10 | text-align: center; 11 | } 12 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/pages/post-create-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './post-create-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/pages/post-create-page/post-create-page.component.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/pages/post-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './post-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/pages/posts-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './posts-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/services/index.ts: -------------------------------------------------------------------------------- 1 | import { HubLikesService } from './hub-likes.service'; 2 | 3 | export * from './hub-likes.service'; 4 | export * from './hub-posts-pdv-filter.service'; 5 | export * from './hub-posts.service'; 6 | 7 | export const HUB_SERVICES = [ 8 | HubLikesService, 9 | ]; 10 | -------------------------------------------------------------------------------- /projects/charon/src/app/hub/utils/pdv/index.ts: -------------------------------------------------------------------------------- 1 | export * from './get-hub-pdv-stats'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/login/guards/index.ts: -------------------------------------------------------------------------------- 1 | import { LoginGuard } from './login.guard'; 2 | 3 | export * from './login.guard'; 4 | 5 | export const LOGIN_GUARDS = [ 6 | LoginGuard, 7 | ]; 8 | -------------------------------------------------------------------------------- /projects/charon/src/app/login/index.ts: -------------------------------------------------------------------------------- 1 | export * from './login-route'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/login/login-route.ts: -------------------------------------------------------------------------------- 1 | export enum LoginRoute { 2 | Import = 'import', 3 | Restore = 'restore', 4 | Login = 'login', 5 | } 6 | -------------------------------------------------------------------------------- /projects/charon/src/app/login/pages/import-restore/index.ts: -------------------------------------------------------------------------------- 1 | export * from './import-restore-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/login/pages/index.ts: -------------------------------------------------------------------------------- 1 | import { LoginPageComponent } from './login-page'; 2 | import { ImportRestorePageComponent } from './import-restore'; 3 | 4 | export * from './login-page'; 5 | export * from './import-restore'; 6 | 7 | export const LOGIN_PAGES = [ 8 | ImportRestorePageComponent, 9 | LoginPageComponent, 10 | ]; 11 | -------------------------------------------------------------------------------- /projects/charon/src/app/login/pages/login-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './login-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/components/index.ts: -------------------------------------------------------------------------------- 1 | import { PortalNavigationComponent } from './portal-navigation'; 2 | 3 | export const PORTAL_COMPONENTS = [ 4 | PortalNavigationComponent, 5 | ]; 6 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/components/portal-navigation/index.ts: -------------------------------------------------------------------------------- 1 | export * from './portal-navigation.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/components/portal-navigation/portal-navigation.component.scss: -------------------------------------------------------------------------------- 1 | @import 'variables'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/index.ts: -------------------------------------------------------------------------------- 1 | export * from './portal-route'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/activity/components/index.ts: -------------------------------------------------------------------------------- 1 | export const ACTIVITY_COMPONENTS = [ 2 | 3 | ]; 4 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/activity/index.ts: -------------------------------------------------------------------------------- 1 | export * from './activity.module'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/activity/pages/activity-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './activity-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/activity/pages/index.ts: -------------------------------------------------------------------------------- 1 | import { ActivityPageComponent } from './activity-page'; 2 | 3 | export * from './activity-page'; 4 | 5 | export const ACTIVITY_PAGES = [ 6 | ActivityPageComponent, 7 | ]; 8 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/assets/components/token-complex-transaction/index.ts: -------------------------------------------------------------------------------- 1 | export * from './token-complex-transaction.component'; 2 | export * from './token-complex-transaction'; 3 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/assets/components/token-single-transaction/index.ts: -------------------------------------------------------------------------------- 1 | export * from './token-single-transaction.component'; 2 | export * from './token-single-transaction'; 3 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/assets/components/token-transaction-actions/index.ts: -------------------------------------------------------------------------------- 1 | export * from './token-transaction-actions.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/assets/components/token-transaction-amount/index.ts: -------------------------------------------------------------------------------- 1 | export * from './token-transaction-amount.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/assets/components/token-transaction-amount/token-transaction-amount.component.html: -------------------------------------------------------------------------------- 1 | {{ amount | microValue | numberFormat : null : true }} 2 | 3 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/assets/components/token-transaction-amount/token-transaction-amount.component.scss: -------------------------------------------------------------------------------- 1 | @import 'variables'; 2 | 3 | :host { 4 | display: block; 5 | } 6 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/assets/components/token-transactions-table/index.ts: -------------------------------------------------------------------------------- 1 | export * from './token-transactions-table.component'; 2 | export * from './token-transactions-table.definitions'; 3 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/assets/components/token-transactions-table/token-transactions-table.definitions.ts: -------------------------------------------------------------------------------- 1 | import { TokenSingleTransaction } from '../token-single-transaction'; 2 | import { TokenComplexTransaction } from '../token-complex-transaction'; 3 | 4 | export type TokenTransaction = TokenSingleTransaction | TokenComplexTransaction; 5 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/assets/directives/index.ts: -------------------------------------------------------------------------------- 1 | import { TransactionLinkDirective } from './transaction-link'; 2 | 3 | export const ASSETS_DIRECTIVES = [ 4 | TransactionLinkDirective, 5 | ]; 6 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/assets/directives/transaction-link/index.ts: -------------------------------------------------------------------------------- 1 | export * from './transaction-link.directive'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/assets/index.ts: -------------------------------------------------------------------------------- 1 | export * from './assets.module'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/assets/pages/assets-page/assets-page.definitions.ts: -------------------------------------------------------------------------------- 1 | import { Observable } from 'rxjs'; 2 | 3 | import { TokenTransaction } from '../../components'; 4 | 5 | export interface Asset { 6 | balance: string; 7 | transactions: Observable; 8 | } 9 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/assets/pages/assets-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './assets-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/assets/pages/index.ts: -------------------------------------------------------------------------------- 1 | import { AssetsPageComponent } from './assets-page'; 2 | import { TransferPageComponent } from './transfer-page'; 3 | 4 | export * from './assets-page'; 5 | export * from './transfer-page'; 6 | 7 | export const ASSETS_PAGES = [ 8 | AssetsPageComponent, 9 | TransferPageComponent, 10 | ]; 11 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/assets/pages/transfer-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './transfer-page.component'; 2 | export * from './transfer-page.definitions'; 3 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/index.ts: -------------------------------------------------------------------------------- 1 | export * from './activity'; 2 | export * from './assets'; 3 | export * from './pdv-rate'; 4 | export * from './staking'; 5 | export * from './vpn'; 6 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/pdv-rate/components/index.ts: -------------------------------------------------------------------------------- 1 | import { PdvRateChartComponent } from './pdv-rate-chart'; 2 | 3 | export const PDV_RATE_COMPONENTS = [ 4 | PdvRateChartComponent, 5 | ]; 6 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/pdv-rate/components/pdv-rate-chart/index.ts: -------------------------------------------------------------------------------- 1 | export * from './pdv-rate-chart.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/pdv-rate/components/pdv-rate-chart/pdv-rate-chart.component.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/charon/src/app/portal/modules/pdv-rate/components/pdv-rate-chart/pdv-rate-chart.component.html -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/pdv-rate/components/pdv-rate-chart/pdv-rate-chart.component.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | height: inherit; 4 | } 5 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/pdv-rate/components/tooltip/index.ts: -------------------------------------------------------------------------------- 1 | export * from './tooltip.component'; 2 | export * from './tooltip.module'; 3 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/pdv-rate/components/tooltip/tooltip.component.html: -------------------------------------------------------------------------------- 1 | {{ tooltipData.y | pdvValue }} PDV 2 |
3 | {{ tooltipData.x | date : 'd MMM, yyyy'}} 4 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/pdv-rate/components/tooltip/tooltip.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/charon/src/app/portal/modules/pdv-rate/components/tooltip/tooltip.component.scss -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/pdv-rate/index.ts: -------------------------------------------------------------------------------- 1 | export * from './pdv-rate.module'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/pdv-rate/pages/index.ts: -------------------------------------------------------------------------------- 1 | import { PdvRatePageComponent } from './pdv-rate-page'; 2 | 3 | export * from './pdv-rate-page'; 4 | 5 | export const PDV_RATE_PAGES = [ 6 | PdvRatePageComponent, 7 | ]; 8 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/pdv-rate/pages/pdv-rate-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './pdv-rate-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/staking/components/staking-extended-error/index.ts: -------------------------------------------------------------------------------- 1 | export * from './staking-extended-error.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/staking/components/staking-layout/index.ts: -------------------------------------------------------------------------------- 1 | export * from './staking-layout.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/staking/components/validator-jailed/index.ts: -------------------------------------------------------------------------------- 1 | export * from './validator-jailed.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/staking/components/validator-status/index.ts: -------------------------------------------------------------------------------- 1 | export * from './validator-status.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/staking/components/validators-table/index.ts: -------------------------------------------------------------------------------- 1 | export * from './validators-table.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/staking/components/withdraw-delegator-table/index.ts: -------------------------------------------------------------------------------- 1 | export * from './withdraw-delegator-table.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/staking/components/withdraw-validator-table/index.ts: -------------------------------------------------------------------------------- 1 | export * from './withdraw-validator-table.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/staking/guards/index.ts: -------------------------------------------------------------------------------- 1 | import { ExistingValidatorGuard } from './existing-validator.guard'; 2 | 3 | export * from './existing-validator.guard'; 4 | 5 | export const STAKING_GUARDS = [ 6 | ExistingValidatorGuard, 7 | ]; 8 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/staking/index.ts: -------------------------------------------------------------------------------- 1 | export * from './staking.module'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/staking/models/index.ts: -------------------------------------------------------------------------------- 1 | export * from './validator-definition'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/staking/pages/delegate-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './delegate-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/staking/pages/redelegate-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './redelegate-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/staking/pages/undelegate-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './undelegate-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/staking/pages/validator-details-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './validator-details-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/staking/pages/validators-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './validators-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/staking/pages/widthraw-delegator-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './withdraw-delegator-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/staking/pages/widthraw-validator-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './withdraw-validator-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/staking/staking-route.ts: -------------------------------------------------------------------------------- 1 | export enum StakingRoute { 2 | Delegate = 'delegate', 3 | Redelegate = 'redelegate', 4 | ValidatorAddressParam = 'validatorAddressParam', 5 | Undelegate = 'undelegate', 6 | Withdraw = 'withdraw', 7 | } 8 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/staking/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from './build-validator-definition'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/vpn/components/node-accordion/index.ts: -------------------------------------------------------------------------------- 1 | export * from './node-accordion.component'; 2 | export * from './node-accordion-content.directive'; 3 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/vpn/components/node-accordion/node-accordion-content.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive, TemplateRef } from '@angular/core'; 2 | 3 | @Directive({ 4 | selector: '[appNodeAccordionContent]', 5 | }) 6 | export class NodeAccordionContentDirective { 7 | constructor( 8 | public templateRef: TemplateRef, 9 | ) { 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/vpn/components/node-subscribe/index.ts: -------------------------------------------------------------------------------- 1 | export * from './node-subscribe.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/vpn/components/node-subscription/index.ts: -------------------------------------------------------------------------------- 1 | export * from './node-subscription.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/vpn/index.ts: -------------------------------------------------------------------------------- 1 | export * from './vpn.module'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/vpn/pages/index.ts: -------------------------------------------------------------------------------- 1 | import { VpnPageComponent } from './vpn-page'; 2 | 3 | export * from './vpn-page'; 4 | 5 | export const VPN_PAGES = [ 6 | VpnPageComponent, 7 | ]; 8 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/modules/vpn/pages/vpn-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './vpn-page.component'; 2 | export * from './vpn-page.service'; 3 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/pages/index.ts: -------------------------------------------------------------------------------- 1 | import { PortalPageComponent } from './portal-page'; 2 | 3 | export * from './portal-page'; 4 | 5 | export const PORTAL_PAGES = [ 6 | PortalPageComponent, 7 | ]; 8 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/pages/portal-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './portal-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/portal/portal-route.ts: -------------------------------------------------------------------------------- 1 | export enum PortalRoute { 2 | Activity = 'activity', 3 | Assets = 'assets', 4 | PDVRate = 'pdv-rate', 5 | Staking = 'staking', 6 | Transfer = 'transfer', 7 | Vpn = 'vpn', 8 | } 9 | -------------------------------------------------------------------------------- /projects/charon/src/app/sign-up/components/account-form/index.ts: -------------------------------------------------------------------------------- 1 | export * from './account-form.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/sign-up/components/index.ts: -------------------------------------------------------------------------------- 1 | import { AccountFormComponent } from './account-form'; 2 | import { ProfileCardComponent } from './profile-card'; 3 | import { SeedPhraseComponent } from './seed-phrase'; 4 | 5 | export const SIGN_UP_COMPONENTS = [ 6 | AccountFormComponent, 7 | ProfileCardComponent, 8 | SeedPhraseComponent, 9 | ]; 10 | 11 | export { AccountData } from './account-form'; 12 | -------------------------------------------------------------------------------- /projects/charon/src/app/sign-up/components/profile-card/index.ts: -------------------------------------------------------------------------------- 1 | export * from './profile-card.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/sign-up/components/seed-phrase/index.ts: -------------------------------------------------------------------------------- 1 | export * from './seed-phrase.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/sign-up/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sign-up-route'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/sign-up/pages/complete-registration-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './complete-registration-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/sign-up/pages/email-confirmation-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './email-confirmation-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/sign-up/pages/pdv-consent-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './pdv-consent-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/sign-up/pages/sign-up-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sign-up-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/sign-up/pages/success-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './success-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/sign-up/services/index.ts: -------------------------------------------------------------------------------- 1 | import { SignUpStoreService } from './sign-up-store.service'; 2 | 3 | export * from './sign-up-store.service'; 4 | 5 | export const SIGN_UP_SERVICES = [ 6 | SignUpStoreService, 7 | ]; 8 | -------------------------------------------------------------------------------- /projects/charon/src/app/sign-up/sign-up-route.ts: -------------------------------------------------------------------------------- 1 | export enum SignUpRoute { 2 | CompleteRegistration = 'complete-registration', 3 | EmailConfirmation = 'email-confirmation', 4 | PDVConsent = 'pdv-consent', 5 | Success = 'success', 6 | } 7 | -------------------------------------------------------------------------------- /projects/charon/src/app/technical/pages/index.ts: -------------------------------------------------------------------------------- 1 | import { TechnicalPageComponent } from './technical-page'; 2 | 3 | export * from './technical-page'; 4 | 5 | export const TECHNICAL_PAGES = [ 6 | TechnicalPageComponent, 7 | ]; 8 | -------------------------------------------------------------------------------- /projects/charon/src/app/technical/pages/technical-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './technical-page.component'; 2 | export * from './technical-page.definitons'; 3 | -------------------------------------------------------------------------------- /projects/charon/src/app/technical/pages/technical-page/technical-page.definitons.ts: -------------------------------------------------------------------------------- 1 | export interface TechnicalPageRouteData { 2 | i18nPageKey: string; 3 | isNetworkSelectorVisible: boolean; 4 | } 5 | -------------------------------------------------------------------------------- /projects/charon/src/app/user/components/lock-delay-settings/index.ts: -------------------------------------------------------------------------------- 1 | export * from './lock-delay-settings.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/user/components/qr-login-dialog/index.ts: -------------------------------------------------------------------------------- 1 | export * from './qr-login-dialog.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/user/components/referral-bonus-milestones/index.ts: -------------------------------------------------------------------------------- 1 | export * from './referral-bonus-milestones.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/user/components/referral-reward-milestones/index.ts: -------------------------------------------------------------------------------- 1 | export * from './referral-reward-milestones.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/user/components/referral-stats/index.ts: -------------------------------------------------------------------------------- 1 | export * from './referral-stats.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/user/components/restore-seed-dialog/index.ts: -------------------------------------------------------------------------------- 1 | export * from './restore-seed-dialog.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/user/pages/edit-profile-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './edit-profile-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/user/pages/settings-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './settings-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/user/pages/user-menu-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './user-menu-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/user/pages/user-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './user-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/app/user/user-route.ts: -------------------------------------------------------------------------------- 1 | export enum UserRoute { 2 | Edit = 'edit', 3 | Settings = 'settings', 4 | } 5 | -------------------------------------------------------------------------------- /projects/charon/src/app/welcome/pages/index.ts: -------------------------------------------------------------------------------- 1 | import { WelcomePageComponent } from './welcome-page'; 2 | 3 | export * from './welcome-page'; 4 | 5 | export const WELCOME_PAGES = [ 6 | WelcomePageComponent, 7 | ]; 8 | -------------------------------------------------------------------------------- /projects/charon/src/app/welcome/pages/welcome-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './welcome-page.component'; 2 | -------------------------------------------------------------------------------- /projects/charon/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/charon/src/assets/.gitkeep -------------------------------------------------------------------------------- /projects/charon/src/assets/fonts/Inter-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/charon/src/assets/fonts/Inter-Bold.ttf -------------------------------------------------------------------------------- /projects/charon/src/assets/fonts/Inter-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/charon/src/assets/fonts/Inter-Bold.woff -------------------------------------------------------------------------------- /projects/charon/src/assets/fonts/Inter-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/charon/src/assets/fonts/Inter-Bold.woff2 -------------------------------------------------------------------------------- /projects/charon/src/assets/fonts/Inter-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/charon/src/assets/fonts/Inter-Medium.ttf -------------------------------------------------------------------------------- /projects/charon/src/assets/fonts/Inter-Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/charon/src/assets/fonts/Inter-Medium.woff -------------------------------------------------------------------------------- /projects/charon/src/assets/fonts/Inter-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/charon/src/assets/fonts/Inter-Medium.woff2 -------------------------------------------------------------------------------- /projects/charon/src/assets/fonts/Inter-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/charon/src/assets/fonts/Inter-Regular.ttf -------------------------------------------------------------------------------- /projects/charon/src/assets/fonts/Inter-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/charon/src/assets/fonts/Inter-Regular.woff -------------------------------------------------------------------------------- /projects/charon/src/assets/fonts/Inter-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/charon/src/assets/fonts/Inter-Regular.woff2 -------------------------------------------------------------------------------- /projects/charon/src/assets/fonts/MaterialIcons-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/charon/src/assets/fonts/MaterialIcons-Regular.ttf -------------------------------------------------------------------------------- /projects/charon/src/assets/fonts/MaterialIcons-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/charon/src/assets/fonts/MaterialIcons-Regular.woff -------------------------------------------------------------------------------- /projects/charon/src/assets/fonts/MaterialIcons-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/charon/src/assets/fonts/MaterialIcons-Regular.woff2 -------------------------------------------------------------------------------- /projects/charon/src/assets/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "loading": { 3 | "disconnect_vpn": "Disconnect VPN", 4 | "message": "Loading..." 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /projects/charon/src/assets/images/icons/moon-night.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /projects/charon/src/assets/images/icons/moon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /projects/charon/src/assets/images/install-browser-mac.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/charon/src/assets/images/install-browser-mac.gif -------------------------------------------------------------------------------- /projects/charon/src/assets/images/logo/logo-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/charon/src/assets/images/logo/logo-icon.png -------------------------------------------------------------------------------- /projects/charon/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/charon/src/favicon.ico -------------------------------------------------------------------------------- /projects/charon/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /projects/charon/src/styles/beacon.scss: -------------------------------------------------------------------------------- 1 | @import 'variables'; 2 | 3 | .hsds-beacon { 4 | color-scheme: initial; 5 | } 6 | 7 | .hsds-beacon .BeaconFabButtonFrame { 8 | bottom: $grid-step * 8 !important; 9 | } 10 | -------------------------------------------------------------------------------- /projects/charon/src/styles/colors.scss: -------------------------------------------------------------------------------- 1 | @import 'variables'; 2 | 3 | .color-primary { 4 | color: $color-primary; 5 | } 6 | 7 | .color-positive { 8 | color: $color-positive; 9 | } 10 | 11 | .color-negative { 12 | color: $color-negative; 13 | } 14 | -------------------------------------------------------------------------------- /projects/charon/src/styles/post-category.scss: -------------------------------------------------------------------------------- 1 | @import 'variables'; 2 | 3 | @for $i from 1 through length($color-post-categories) { 4 | .post-category-#{$i} { 5 | color: var(--color-post-category-#{$i}); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /projects/charon/src/styles/text-ellipsis.scss: -------------------------------------------------------------------------------- 1 | .text-ellipsis { 2 | overflow: hidden; 3 | text-overflow: ellipsis; 4 | white-space: nowrap; 5 | } 6 | -------------------------------------------------------------------------------- /projects/scripts/assets/icons/128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/scripts/assets/icons/128.png -------------------------------------------------------------------------------- /projects/scripts/assets/icons/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/scripts/assets/icons/16.png -------------------------------------------------------------------------------- /projects/scripts/assets/icons/16_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/scripts/assets/icons/16_active.png -------------------------------------------------------------------------------- /projects/scripts/assets/icons/19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/scripts/assets/icons/19.png -------------------------------------------------------------------------------- /projects/scripts/assets/icons/32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/scripts/assets/icons/32.png -------------------------------------------------------------------------------- /projects/scripts/assets/icons/32_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/scripts/assets/icons/32_active.png -------------------------------------------------------------------------------- /projects/scripts/assets/icons/38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/scripts/assets/icons/38.png -------------------------------------------------------------------------------- /projects/scripts/assets/icons/512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/scripts/assets/icons/512.png -------------------------------------------------------------------------------- /projects/scripts/assets/icons/64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decentr-net/charon/0d27cc4ea65e3fe01ca4172f30b0f4d5df19cc52/projects/scripts/assets/icons/64.png -------------------------------------------------------------------------------- /projects/scripts/src/background/charon-api/index.ts: -------------------------------------------------------------------------------- 1 | export * from './listeners'; 2 | export * from './message-bus-map'; 3 | -------------------------------------------------------------------------------- /projects/scripts/src/background/config/config-port-name.ts: -------------------------------------------------------------------------------- 1 | export const CONFIG_PORT_NAME = 'config-port'; 2 | -------------------------------------------------------------------------------- /projects/scripts/src/background/config/index.ts: -------------------------------------------------------------------------------- 1 | import CONFIG_SERVICE from './config'; 2 | 3 | export * from './config-port'; 4 | export default CONFIG_SERVICE; 5 | -------------------------------------------------------------------------------- /projects/scripts/src/background/context-menu/index.ts: -------------------------------------------------------------------------------- 1 | import initPolicy from './policy'; 2 | import initWireguard from './wireguard'; 3 | 4 | const init = () => { 5 | initPolicy(); 6 | initWireguard(); 7 | }; 8 | 9 | export default init; 10 | -------------------------------------------------------------------------------- /projects/scripts/src/background/decentr-storage/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sync'; 2 | -------------------------------------------------------------------------------- /projects/scripts/src/background/listeners.ts: -------------------------------------------------------------------------------- 1 | import { initApplicationIconChanger } from './wireguard'; 2 | import { initCharonAPIListeners } from './charon-api'; 3 | import { initWebpageAPIListeners } from './webpage-api'; 4 | 5 | export const initMessageListeners = () => { 6 | initCharonAPIListeners(); 7 | 8 | initWebpageAPIListeners(); 9 | 10 | initApplicationIconChanger(); 11 | }; 12 | -------------------------------------------------------------------------------- /projects/scripts/src/background/migration/1.3.3.ts: -------------------------------------------------------------------------------- 1 | import { PDV_STORAGE_SERVICE } from '../pdv/storage'; 2 | 3 | export const migrate = (): Promise => { 4 | return PDV_STORAGE_SERVICE.clear(); 5 | }; 6 | -------------------------------------------------------------------------------- /projects/scripts/src/background/migration/index.ts: -------------------------------------------------------------------------------- 1 | export * from './migration'; 2 | -------------------------------------------------------------------------------- /projects/scripts/src/background/network/index.ts: -------------------------------------------------------------------------------- 1 | export * from './network'; 2 | -------------------------------------------------------------------------------- /projects/scripts/src/background/pdv/advertiser-id/index.ts: -------------------------------------------------------------------------------- 1 | export * from './collection'; 2 | -------------------------------------------------------------------------------- /projects/scripts/src/background/pdv/cookies/index.ts: -------------------------------------------------------------------------------- 1 | export * from './collection'; 2 | -------------------------------------------------------------------------------- /projects/scripts/src/background/pdv/index.ts: -------------------------------------------------------------------------------- 1 | export * from './collection'; 2 | -------------------------------------------------------------------------------- /projects/scripts/src/background/pdv/is-pdv.ts: -------------------------------------------------------------------------------- 1 | import { CookiePDV, PDV } from 'decentr-js'; 2 | 3 | export const isCookiePDV = (pdv: PDV): pdv is CookiePDV => { 4 | return !!(pdv as CookiePDV).expirationDate; 5 | }; 6 | -------------------------------------------------------------------------------- /projects/scripts/src/background/pdv/location/index.ts: -------------------------------------------------------------------------------- 1 | export * from './collection'; 2 | -------------------------------------------------------------------------------- /projects/scripts/src/background/pdv/search-history/index.ts: -------------------------------------------------------------------------------- 1 | export * from './collection'; 2 | -------------------------------------------------------------------------------- /projects/scripts/src/background/queue.ts: -------------------------------------------------------------------------------- 1 | import PQueue from 'p-queue'; 2 | 3 | const QUEUE = new PQueue({ concurrency: 1 }); 4 | 5 | export default QUEUE; 6 | -------------------------------------------------------------------------------- /projects/scripts/src/background/webpage-api/index.ts: -------------------------------------------------------------------------------- 1 | export * from './listeners'; 2 | export * from './message-bus-map'; 3 | export * from './messages'; 4 | -------------------------------------------------------------------------------- /projects/scripts/src/background/webpage-api/messages.ts: -------------------------------------------------------------------------------- 1 | export enum WebpageAPIMessageCode { 2 | OpenExtension = 'WEBPAGE_API_OPEN_EXTENSION', 3 | OpenPost = 'WEBPAGE_API_OPEN_POST', 4 | Unlock = 'WEBPAGE_API_UNLOCK', 5 | } 6 | -------------------------------------------------------------------------------- /projects/scripts/src/background/wireguard/index.ts: -------------------------------------------------------------------------------- 1 | export * from './icon'; 2 | -------------------------------------------------------------------------------- /projects/scripts/src/content-api-script.ts: -------------------------------------------------------------------------------- 1 | import initWebpageAPI from './content/webpage-api'; 2 | 3 | initWebpageAPI(); 4 | -------------------------------------------------------------------------------- /projects/scripts/src/content-script.ts: -------------------------------------------------------------------------------- 1 | import { initLocationStream } from './content/location'; 2 | 3 | initLocationStream(); 4 | -------------------------------------------------------------------------------- /projects/scripts/src/content/location/index.ts: -------------------------------------------------------------------------------- 1 | export * from './init'; 2 | -------------------------------------------------------------------------------- /projects/scripts/src/content/webpage-api/content-script/common/index.ts: -------------------------------------------------------------------------------- 1 | export * from './api'; 2 | -------------------------------------------------------------------------------- /projects/scripts/src/content/webpage-api/content-script/index.ts: -------------------------------------------------------------------------------- 1 | import handleMessages from './message-handling'; 2 | 3 | export default handleMessages; 4 | -------------------------------------------------------------------------------- /projects/scripts/src/content/webpage-api/content-script/share/index.ts: -------------------------------------------------------------------------------- 1 | export * from './api'; 2 | -------------------------------------------------------------------------------- /projects/scripts/src/content/webpage-api/content-script/swap/index.ts: -------------------------------------------------------------------------------- 1 | export * from './api'; 2 | -------------------------------------------------------------------------------- /projects/scripts/src/content/webpage-api/index.ts: -------------------------------------------------------------------------------- 1 | import initWebpageAPI from './init'; 2 | 3 | export default initWebpageAPI; 4 | -------------------------------------------------------------------------------- /projects/scripts/src/content/webpage-api/webpage-script/common/index.ts: -------------------------------------------------------------------------------- 1 | export * from './api'; 2 | -------------------------------------------------------------------------------- /projects/scripts/src/content/webpage-api/webpage-script/script.ts: -------------------------------------------------------------------------------- 1 | import * as commonAPI from './common'; 2 | import * as shareAPI from './share'; 3 | import * as swapAPI from './swap'; 4 | 5 | type WindowWithCharonAPI = Window & typeof global & { 6 | charon: unknown; 7 | }; 8 | 9 | (window as WindowWithCharonAPI).charon = { 10 | ...commonAPI, 11 | ...shareAPI, 12 | ...swapAPI, 13 | }; 14 | -------------------------------------------------------------------------------- /projects/scripts/src/content/webpage-api/webpage-script/share/index.ts: -------------------------------------------------------------------------------- 1 | export * from './api'; 2 | -------------------------------------------------------------------------------- /projects/scripts/src/content/webpage-api/webpage-script/swap/index.ts: -------------------------------------------------------------------------------- 1 | export * from './api'; 2 | -------------------------------------------------------------------------------- /projects/scripts/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": "./", 5 | "resolveJsonModule": true, 6 | "paths": { 7 | "@shared/*": ["../../shared/*"] 8 | } 9 | }, 10 | "include": [ 11 | "src/**/*" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /shared/analytics/directives/index.ts: -------------------------------------------------------------------------------- 1 | import { AnalyticsClickEventDirective } from './analytics-click-event.directive'; 2 | 3 | export const ANALYTICS_DIRECTIVES = [ 4 | AnalyticsClickEventDirective, 5 | ]; 6 | -------------------------------------------------------------------------------- /shared/analytics/index.ts: -------------------------------------------------------------------------------- 1 | export * from './analytics.definitions'; 2 | export * from './analytics.module'; 3 | export * from './analytics.service'; 4 | -------------------------------------------------------------------------------- /shared/components/avatar/avatar.component.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /shared/components/avatar/avatar.component.scss: -------------------------------------------------------------------------------- 1 | $avatar--default-size: 38px; 2 | 3 | :host { 4 | align-items: center; 5 | display: inline-flex; 6 | font-size: $avatar--default-size; 7 | max-width: $avatar--default-size; 8 | } 9 | 10 | .user-avatar__image { 11 | border-radius: 6px; 12 | display: inline-flex; 13 | font-size: inherit; 14 | width: 100%; 15 | } 16 | -------------------------------------------------------------------------------- /shared/components/avatar/avatar.component.ts: -------------------------------------------------------------------------------- 1 | import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-avatar', 5 | templateUrl: './avatar.component.html', 6 | styleUrls: ['./avatar.component.scss'], 7 | changeDetection: ChangeDetectionStrategy.OnPush, 8 | }) 9 | export class AvatarComponent { 10 | @Input() public avatarUrl: string; 11 | } 12 | -------------------------------------------------------------------------------- /shared/components/avatar/avatar.definitions.ts: -------------------------------------------------------------------------------- 1 | import { environment } from '../../../environments/environment'; 2 | 3 | export const USER_AVATARS = []; 4 | 5 | for (let i = 1; i <= 12; i++) { 6 | USER_AVATARS.push(`${environment.avatars}/user-avatar-${i}.svg`); 7 | } 8 | -------------------------------------------------------------------------------- /shared/components/avatar/avatar.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | 3 | import { AvatarComponent } from './avatar.component'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | AvatarComponent, 8 | ], 9 | exports: [ 10 | AvatarComponent, 11 | ], 12 | }) 13 | export class AvatarModule { 14 | } 15 | -------------------------------------------------------------------------------- /shared/components/avatar/index.ts: -------------------------------------------------------------------------------- 1 | export * from './avatar.module'; 2 | export * from './avatar.definitions'; 3 | -------------------------------------------------------------------------------- /shared/components/button-back/button-back.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shared/components/button-back/index.ts: -------------------------------------------------------------------------------- 1 | export * from './button-back.module'; 2 | -------------------------------------------------------------------------------- /shared/components/button/button.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shared/components/button/button.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | 3 | import { ButtonComponent } from './button.component'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | ButtonComponent, 8 | ], 9 | exports: [ 10 | ButtonComponent, 11 | ], 12 | }) 13 | export class ButtonModule { 14 | } 15 | -------------------------------------------------------------------------------- /shared/components/button/index.ts: -------------------------------------------------------------------------------- 1 | export * from './button.module'; 2 | -------------------------------------------------------------------------------- /shared/components/code-input/index.ts: -------------------------------------------------------------------------------- 1 | export * from './code-input.module'; 2 | -------------------------------------------------------------------------------- /shared/components/color-circle-label/color-circle-label.component.html: -------------------------------------------------------------------------------- 1 |
5 | 6 | 7 | -------------------------------------------------------------------------------- /shared/components/color-circle-label/index.ts: -------------------------------------------------------------------------------- 1 | export * from './color-circle-label.module'; 2 | export { ColorCircleLabelColor, ColorCircleType } from './color-circle-label.component'; 3 | -------------------------------------------------------------------------------- /shared/components/confirmation-dialog/confirmation-dialog.definitions.ts: -------------------------------------------------------------------------------- 1 | export type ConfirmationDialogButtonConfig = { 2 | icon?: string; 3 | label: string; 4 | }; 5 | 6 | export interface ConfirmationDialogConfig { 7 | alert: boolean; 8 | cancel: ConfirmationDialogButtonConfig; 9 | confirm: ConfirmationDialogButtonConfig; 10 | content: string; 11 | title: string; 12 | } 13 | -------------------------------------------------------------------------------- /shared/components/confirmation-dialog/index.ts: -------------------------------------------------------------------------------- 1 | export * from './confirmation-dialog.module'; 2 | export * from './confirmation-dialog.service'; 3 | -------------------------------------------------------------------------------- /shared/components/controls/avatar-selector/index.ts: -------------------------------------------------------------------------------- 1 | export * from './avatar-selector.module'; 2 | -------------------------------------------------------------------------------- /shared/components/controls/checkbox/checkbox.component.html: -------------------------------------------------------------------------------- 1 |
6 | 11 |
12 | 13 |
14 | 15 |
16 | -------------------------------------------------------------------------------- /shared/components/controls/checkbox/index.ts: -------------------------------------------------------------------------------- 1 | export * from './checkbox.component'; 2 | export * from './checkbox.module'; 3 | -------------------------------------------------------------------------------- /shared/components/controls/date-input/date-input.utils.ts: -------------------------------------------------------------------------------- 1 | export const parseDateValue = (value: string): { year: number, month: number, day: number } => { 2 | const values = value.split('-'); 3 | const year = +values[0]; 4 | const month = +values[1] - 1; 5 | const day = +values[2]; 6 | 7 | return { 8 | year, 9 | month, 10 | day, 11 | }; 12 | }; 13 | -------------------------------------------------------------------------------- /shared/components/controls/date-input/index.ts: -------------------------------------------------------------------------------- 1 | export * from './date-input.module'; 2 | export * from './date-input.utils'; 3 | -------------------------------------------------------------------------------- /shared/components/controls/gender-selector/gender-selector.definitions.ts: -------------------------------------------------------------------------------- 1 | import { Gender } from 'decentr-js'; 2 | 3 | export interface GenderSelectorTranslations { 4 | [Gender.Female]: string; 5 | [Gender.Male]: string; 6 | unspecified: string; 7 | } 8 | -------------------------------------------------------------------------------- /shared/components/controls/gender-selector/index.ts: -------------------------------------------------------------------------------- 1 | export * from './gender-selector.definitions'; 2 | export * from './gender-selector.module'; 3 | -------------------------------------------------------------------------------- /shared/components/controls/index.ts: -------------------------------------------------------------------------------- 1 | export * from './avatar-selector'; 2 | export * from './checkbox'; 3 | export * from './date-input'; 4 | export * from './gender-selector'; 5 | export * from './input'; 6 | -------------------------------------------------------------------------------- /shared/components/controls/input/index.ts: -------------------------------------------------------------------------------- 1 | export * from './input.component'; 2 | export * from './input.module'; 3 | -------------------------------------------------------------------------------- /shared/components/controls/select/index.ts: -------------------------------------------------------------------------------- 1 | export * from './select.component'; 2 | export * from './select.definitions'; 3 | export * from './select.module'; 4 | -------------------------------------------------------------------------------- /shared/components/controls/select/select.definitions.ts: -------------------------------------------------------------------------------- 1 | export interface SelectOption { 2 | label: string; 3 | meta?: string; 4 | value: T; 5 | } 6 | -------------------------------------------------------------------------------- /shared/components/currency-symbol/component/currency-symbol.component.html: -------------------------------------------------------------------------------- 1 | {{ symbol$ | async }} 2 | -------------------------------------------------------------------------------- /shared/components/currency-symbol/component/currency-symbol.component.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | display: inline-flex; 3 | } 4 | -------------------------------------------------------------------------------- /shared/components/currency-symbol/component/index.ts: -------------------------------------------------------------------------------- 1 | export * from './currency-symbol.component'; 2 | -------------------------------------------------------------------------------- /shared/components/currency-symbol/index.ts: -------------------------------------------------------------------------------- 1 | export * from './currency-symbol.module'; 2 | export * from './currency-symbol.service'; 3 | -------------------------------------------------------------------------------- /shared/components/currency-symbol/pipe/index.ts: -------------------------------------------------------------------------------- 1 | export * from './currency-symbol.pipe'; 2 | -------------------------------------------------------------------------------- /shared/components/data-table/directives/data-table-empty-row-def.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive, TemplateRef } from '@angular/core'; 2 | 3 | @Directive({ 4 | selector: '[dataTableEmptyRowDef]', 5 | }) 6 | export class DataTableEmptyRowDefDirective { 7 | constructor(public templateRef: TemplateRef) { 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /shared/components/data-table/index.ts: -------------------------------------------------------------------------------- 1 | export * from './data-table.module'; 2 | -------------------------------------------------------------------------------- /shared/components/details-table/details-table-cell-def.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive, Input, TemplateRef } from '@angular/core'; 2 | 3 | @Directive({ 4 | selector: '[appDetailsTableCellDef]', 5 | }) 6 | export class DetailsTableCellDefDirective { 7 | @Input('appDetailsTableCellDef') public name: string; 8 | 9 | constructor(public templateRef: TemplateRef) { 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /shared/components/details-table/index.ts: -------------------------------------------------------------------------------- 1 | export * from './details-table.module'; 2 | -------------------------------------------------------------------------------- /shared/components/expansion-list/expansion-list-cell/expansion-list-cell-def.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive, TemplateRef } from '@angular/core'; 2 | 3 | @Directive({ 4 | selector: '[appExpansionListCellDef]', 5 | }) 6 | export class ExpansionListCellDefDirective { 7 | constructor( 8 | public templateRef: TemplateRef<{ $implicit: T }>, 9 | ) { 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /shared/components/expansion-list/expansion-list-cell/index.ts: -------------------------------------------------------------------------------- 1 | export * from './expansion-list-cell-def.directive'; 2 | -------------------------------------------------------------------------------- /shared/components/expansion-list/expansion-list-column-footer/index.ts: -------------------------------------------------------------------------------- 1 | export * from './expansion-list-column-footer-def.directive'; 2 | -------------------------------------------------------------------------------- /shared/components/expansion-list/expansion-list-column/index.ts: -------------------------------------------------------------------------------- 1 | export * from './expansion-list-column.component'; 2 | export * from './expansion-list-column-def.directive'; 3 | -------------------------------------------------------------------------------- /shared/components/expansion-list/expansion-list-header-cell/expansion-list-header-cell-def.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive, TemplateRef } from '@angular/core'; 2 | 3 | @Directive({ 4 | selector: '[appExpansionListHeaderCellDef]', 5 | }) 6 | export class ExpansionListHeaderCellDefDirective { 7 | constructor( 8 | public templateRef: TemplateRef<{ $implicit: T }>, 9 | ) { 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /shared/components/expansion-list/expansion-list-header-cell/index.ts: -------------------------------------------------------------------------------- 1 | export * from './expansion-list-header-cell-def.directive'; 2 | -------------------------------------------------------------------------------- /shared/components/expansion-list/expansion-list-loading/index.ts: -------------------------------------------------------------------------------- 1 | export * from './expansion-list-loading.directive'; 2 | -------------------------------------------------------------------------------- /shared/components/expansion-list/expansion-list/expansion-list.component.html: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /shared/components/expansion-list/expansion-list/index.ts: -------------------------------------------------------------------------------- 1 | export * from './expansion-list.component'; 2 | export * from './expansion-list.service'; 3 | -------------------------------------------------------------------------------- /shared/components/expansion-list/index.ts: -------------------------------------------------------------------------------- 1 | export * from './expansion-list.module'; 2 | -------------------------------------------------------------------------------- /shared/components/form-error/form-error.component.html: -------------------------------------------------------------------------------- 1 | 2 | 7 | {{ translate(error.key, error.params) }} 8 | 9 | 10 | -------------------------------------------------------------------------------- /shared/components/form-error/form-error.component.scss: -------------------------------------------------------------------------------- 1 | @import '../../styles/variables'; 2 | 3 | :host { 4 | color: var(--color-input-label-invalid); 5 | display: block; 6 | } 7 | 8 | .form-error__container { 9 | &.mod-warning { 10 | color: var(--color-input-label-warning); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /shared/components/form-error/form-error.tokens.ts: -------------------------------------------------------------------------------- 1 | import { InjectionToken } from '@angular/core'; 2 | 3 | export const FORM_ERROR_TRANSLOCO_READ: InjectionToken 4 | = new InjectionToken('FORM_ERROR_TRANSLOCO_READ'); 5 | -------------------------------------------------------------------------------- /shared/components/form-error/index.ts: -------------------------------------------------------------------------------- 1 | export * from './form-error.component'; 2 | export * from './form-error.module'; 3 | export * from './form-error.tokens'; 4 | -------------------------------------------------------------------------------- /shared/components/input-container/index.ts: -------------------------------------------------------------------------------- 1 | export * from './input-container-control'; 2 | export * from './input-container.module'; 3 | -------------------------------------------------------------------------------- /shared/components/input-container/input-container-control.ts: -------------------------------------------------------------------------------- 1 | import { Observable } from 'rxjs'; 2 | 3 | export abstract class InputContainerControl { 4 | abstract touched: Observable; 5 | 6 | hasWarningError: boolean; 7 | } 8 | -------------------------------------------------------------------------------- /shared/components/input-container/input-container.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
8 | 9 |
10 | -------------------------------------------------------------------------------- /shared/components/input-container/input-container.component.scss: -------------------------------------------------------------------------------- 1 | @import '../../styles/variables'; 2 | 3 | :host { 4 | display: flex; 5 | flex-direction: column; 6 | row-gap: $grid-step; 7 | } 8 | 9 | .input-container__error { 10 | padding-left: $grid-step * 2; 11 | min-height: 16px; 12 | visibility: hidden; 13 | 14 | &.is-visible { 15 | visibility: visible; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /shared/components/input-counter/index.ts: -------------------------------------------------------------------------------- 1 | export * from './input-counter.module'; 2 | -------------------------------------------------------------------------------- /shared/components/line-chart/index.ts: -------------------------------------------------------------------------------- 1 | export * from './line-chart.module'; 2 | -------------------------------------------------------------------------------- /shared/components/line-chart/line-chart-tooltip.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive, TemplateRef } from '@angular/core'; 2 | 3 | @Directive({ 4 | selector: '[appLineChartTooltip]', 5 | }) 6 | export class LineChartTooltipDirective { 7 | constructor( 8 | private templateRef: TemplateRef, 9 | ) { 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /shared/components/line-chart/line-chart.component.html: -------------------------------------------------------------------------------- 1 |
2 |
6 | 11 |
12 | -------------------------------------------------------------------------------- /shared/components/line-chart/line-chart.component.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | position: relative; 4 | } 5 | 6 | .chart { 7 | height: inherit; 8 | position: relative; 9 | } 10 | 11 | .tooltip { 12 | border-radius: 4px; 13 | overflow: hidden; 14 | pointer-events: none; 15 | position: absolute; 16 | transform: translateY(-50%); 17 | visibility: hidden; 18 | z-index: 1; 19 | } 20 | -------------------------------------------------------------------------------- /shared/components/margin-label/index.ts: -------------------------------------------------------------------------------- 1 | export * from './margin-label.module'; 2 | -------------------------------------------------------------------------------- /shared/components/margin-label/margin-label.component.html: -------------------------------------------------------------------------------- 1 | {{ dayMargin | positiveNumber | number : digitsInfo || '1.0-2' }}% 2 | 7 | -------------------------------------------------------------------------------- /shared/components/menu/index.ts: -------------------------------------------------------------------------------- 1 | export * from './menu.module'; 2 | export * from './menu.definitions'; 3 | export * from './menu.service'; 4 | -------------------------------------------------------------------------------- /shared/components/menu/menu/index.ts: -------------------------------------------------------------------------------- 1 | export * from './menu.component'; 2 | -------------------------------------------------------------------------------- /shared/components/network-selector/index.ts: -------------------------------------------------------------------------------- 1 | export * from './network-selector.module'; 2 | export * from './network-selector.definitions'; 3 | export * from './network-selector.service'; 4 | -------------------------------------------------------------------------------- /shared/components/network-selector/network-selector.definitions.ts: -------------------------------------------------------------------------------- 1 | import { NetworkId } from '@shared/services/configuration'; 2 | 3 | export interface Network { 4 | id: NetworkId; 5 | name: string; 6 | } 7 | 8 | export interface NetworkSelectorTranslations { 9 | title: string; 10 | defaultNetwork: string; 11 | } 12 | -------------------------------------------------------------------------------- /shared/components/password/index.ts: -------------------------------------------------------------------------------- 1 | export * from './password.module'; 2 | -------------------------------------------------------------------------------- /shared/components/password/password-form/index.ts: -------------------------------------------------------------------------------- 1 | export * from './password-form.component'; 2 | -------------------------------------------------------------------------------- /shared/components/password/password-form/password-form.component.scss: -------------------------------------------------------------------------------- 1 | @import '../../../styles/variables'; 2 | 3 | :host { 4 | display: block; 5 | } 6 | 7 | .password-form__form { 8 | column-gap: $grid-step * 2; 9 | display: grid; 10 | grid-template-columns: repeat(2, minmax(0, 1fr)); 11 | } 12 | -------------------------------------------------------------------------------- /shared/components/password/password-validation-state/index.ts: -------------------------------------------------------------------------------- 1 | export * from './password-validation-state.component'; 2 | -------------------------------------------------------------------------------- /shared/components/password/password.definitions.ts: -------------------------------------------------------------------------------- 1 | export interface PasswordTranslationsConfig { 2 | read: string; 3 | scope?: string; 4 | } 5 | -------------------------------------------------------------------------------- /shared/components/pdv-type-icon/index.ts: -------------------------------------------------------------------------------- 1 | export * from './pdv-type-icon.module'; 2 | -------------------------------------------------------------------------------- /shared/components/pdv-type-icon/pdv-type-icon.component.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /shared/components/pdv-type-icon/pdv-type-icon.component.scss: -------------------------------------------------------------------------------- 1 | @import '../../styles/variables'; 2 | 3 | :host { 4 | color: $color-grey; 5 | display: inline-flex; 6 | } 7 | -------------------------------------------------------------------------------- /shared/components/pdv-types-settings/index.ts: -------------------------------------------------------------------------------- 1 | export * from './pdv-types-settings.module'; 2 | export { PDVTypesSettingsTranslations } from './pdv-types-settings'; 3 | export { PDVTypesToggleTranslations } from './pdv-types-toggle'; 4 | -------------------------------------------------------------------------------- /shared/components/pdv-types-settings/pdv-types-settings/index.ts: -------------------------------------------------------------------------------- 1 | export * from './pdv-types-settings.component'; 2 | -------------------------------------------------------------------------------- /shared/components/pdv-types-settings/pdv-types-toggle/index.ts: -------------------------------------------------------------------------------- 1 | export * from './pdv-types-toggle.component'; 2 | -------------------------------------------------------------------------------- /shared/components/pdv-types-settings/pdv-types-toggle/pdv-types-toggle.component.scss: -------------------------------------------------------------------------------- 1 | @import '../../../styles/variables'; 2 | 3 | :host { 4 | display: block; 5 | } 6 | 7 | .pdv-types-toggle__control { 8 | column-gap: $grid-step; 9 | display: flex; 10 | 11 | & + & { 12 | margin-top: $grid-step; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /shared/components/profile-form/index.ts: -------------------------------------------------------------------------------- 1 | export { ProfileFormControlValue } from './profile-form.definitions'; 2 | export * from './profile-form.module'; 3 | -------------------------------------------------------------------------------- /shared/components/seed/index.ts: -------------------------------------------------------------------------------- 1 | export * from './seed.module'; 2 | -------------------------------------------------------------------------------- /shared/components/slot/index.ts: -------------------------------------------------------------------------------- 1 | export * from './slot.module'; 2 | -------------------------------------------------------------------------------- /shared/components/spinner/index.ts: -------------------------------------------------------------------------------- 1 | export * from './spinner.component'; 2 | export * from './spinner.module'; 3 | -------------------------------------------------------------------------------- /shared/components/spinner/spinner.component.scss: -------------------------------------------------------------------------------- 1 | $cubic: cubic-bezier(0.5, 0.7, 0.4, 0.1); 2 | 3 | :host { 4 | display: inline-block; 5 | border: 3px solid rgba(255, 255, 255, 9); 6 | border-radius: 50%; 7 | border-top-color: #4477E4; 8 | animation: spin 1.2s $cubic infinite; 9 | } 10 | 11 | @keyframes spin { 12 | to { 13 | transform: rotate(360deg); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /shared/components/spinner/spinner.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | 3 | import { SpinnerComponent } from './spinner.component'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | SpinnerComponent, 8 | ], 9 | exports: [ 10 | SpinnerComponent, 11 | ], 12 | }) 13 | export class SpinnerModule { 14 | } 15 | -------------------------------------------------------------------------------- /shared/components/text-editor/index.ts: -------------------------------------------------------------------------------- 1 | export * from './text-editor.module'; 2 | -------------------------------------------------------------------------------- /shared/components/theme/index.ts: -------------------------------------------------------------------------------- 1 | export * from './theme.module'; 2 | export * from './theme.service'; 3 | -------------------------------------------------------------------------------- /shared/components/theme/theme-toggle.component.html: -------------------------------------------------------------------------------- 1 | 5 | 6 | -------------------------------------------------------------------------------- /shared/components/tooltip/index.ts: -------------------------------------------------------------------------------- 1 | export * from './tooltip.module'; 2 | -------------------------------------------------------------------------------- /shared/components/tooltip/tooltip.component.html: -------------------------------------------------------------------------------- 1 |
6 | {{ text }} 7 |
8 | -------------------------------------------------------------------------------- /shared/components/tooltip/tooltip.component.scss: -------------------------------------------------------------------------------- 1 | @import '../../styles/variables'; 2 | 3 | :host { 4 | display: block; 5 | } 6 | 7 | .tooltip__container { 8 | background-color: $color-black; 9 | border-radius: $border-radius; 10 | color: $color-white; 11 | padding: $grid-step $grid-step * 1.5; 12 | } 13 | -------------------------------------------------------------------------------- /shared/directives/auto-focus/auto-focus.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | 3 | import { AutoFocusDirective } from './auto-focus.directive'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | AutoFocusDirective, 8 | ], 9 | exports: [ 10 | AutoFocusDirective, 11 | ], 12 | }) 13 | export class AutoFocusModule { 14 | } 15 | -------------------------------------------------------------------------------- /shared/directives/auto-focus/index.ts: -------------------------------------------------------------------------------- 1 | export * from './auto-focus.module'; 2 | -------------------------------------------------------------------------------- /shared/directives/bind-query-params/bind-query-params.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | 3 | import { BindQueryParamsDirective } from './bind-query-params.directive'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | BindQueryParamsDirective, 8 | ], 9 | exports: [ 10 | BindQueryParamsDirective, 11 | ], 12 | }) 13 | export class BindQueryParamsModule { 14 | } 15 | -------------------------------------------------------------------------------- /shared/directives/bind-query-params/index.ts: -------------------------------------------------------------------------------- 1 | export * from './bind-query-params.module'; 2 | -------------------------------------------------------------------------------- /shared/directives/browser-view/index.ts: -------------------------------------------------------------------------------- 1 | export * from './browser-view.module'; 2 | -------------------------------------------------------------------------------- /shared/directives/clipboard-copied-notification/index.ts: -------------------------------------------------------------------------------- 1 | export * from './clipboard-copied-notification.module'; 2 | -------------------------------------------------------------------------------- /shared/directives/drag-scroll/drag-scroll.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | 3 | import { DragScrollDirective } from './drag-scroll.directive'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | DragScrollDirective, 8 | ], 9 | exports: [ 10 | DragScrollDirective, 11 | ], 12 | }) 13 | export class DragScrollModule { 14 | } 15 | -------------------------------------------------------------------------------- /shared/directives/drag-scroll/index.ts: -------------------------------------------------------------------------------- 1 | export * from './drag-scroll.module'; 2 | -------------------------------------------------------------------------------- /shared/directives/intersection/index.ts: -------------------------------------------------------------------------------- 1 | export * from './intersection.module'; 2 | -------------------------------------------------------------------------------- /shared/directives/link/index.ts: -------------------------------------------------------------------------------- 1 | export * from './link.module'; 2 | -------------------------------------------------------------------------------- /shared/directives/link/link.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | 3 | import { LinkDirective } from './link.directive'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | LinkDirective, 8 | ], 9 | exports: [ 10 | LinkDirective, 11 | ], 12 | }) 13 | export class LinkModule { 14 | } 15 | -------------------------------------------------------------------------------- /shared/directives/mouse-wheel-horizontal-scroll/index.ts: -------------------------------------------------------------------------------- 1 | export * from './mouse-wheel-horizontal-scroll.module'; 2 | -------------------------------------------------------------------------------- /shared/directives/numeric/index.ts: -------------------------------------------------------------------------------- 1 | export * from './numeric.module'; 2 | -------------------------------------------------------------------------------- /shared/directives/numeric/numeric.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | 3 | import { NumericDirective } from './numeric.directive'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | NumericDirective, 8 | ], 9 | exports: [ 10 | NumericDirective, 11 | ], 12 | }) 13 | export class NumericModule { 14 | } 15 | -------------------------------------------------------------------------------- /shared/directives/router-link-scroll-anchor/index.ts: -------------------------------------------------------------------------------- 1 | export * from './router-link-scroll-anchor.module'; 2 | -------------------------------------------------------------------------------- /shared/directives/submit-after-validation/index.ts: -------------------------------------------------------------------------------- 1 | export * from './submit-after-validation.module'; 2 | -------------------------------------------------------------------------------- /shared/directives/submit-source/index.ts: -------------------------------------------------------------------------------- 1 | export * from './submit-source.directive'; 2 | export * from './submit-source.module'; 3 | -------------------------------------------------------------------------------- /shared/directives/submit-source/submit-source.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | 3 | import { SubmitSourceDirective } from './submit-source.directive'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | SubmitSourceDirective, 8 | ], 9 | exports: [ 10 | SubmitSourceDirective, 11 | ], 12 | }) 13 | export class SubmitSourceModule { 14 | } 15 | -------------------------------------------------------------------------------- /shared/directives/text-clamp/index.ts: -------------------------------------------------------------------------------- 1 | export * from './text-clamp.module'; 2 | -------------------------------------------------------------------------------- /shared/directives/text-clamp/text-clamp.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | 3 | import { TextClampDirective } from './text-clamp.directive'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | TextClampDirective, 8 | ], 9 | exports: [ 10 | TextClampDirective, 11 | ], 12 | }) 13 | export class TextClampModule { 14 | } 15 | -------------------------------------------------------------------------------- /shared/directives/text-ellipsis/index.ts: -------------------------------------------------------------------------------- 1 | export * from './text-ellipsis.module'; 2 | -------------------------------------------------------------------------------- /shared/directives/text-ellipsis/text-ellipsis.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive, HostBinding } from '@angular/core'; 2 | 3 | @Directive({ 4 | selector: '[appTextEllipsis]', 5 | }) 6 | export class TextEllipsisDirective { 7 | @HostBinding('class.text-ellipsis') public hasHostClass = true; 8 | } 9 | -------------------------------------------------------------------------------- /shared/directives/text-ellipsis/text-ellipsis.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | 3 | import { TextEllipsisDirective } from './text-ellipsis.directive'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | TextEllipsisDirective, 8 | ], 9 | exports: [ 10 | TextEllipsisDirective, 11 | ], 12 | }) 13 | export class TextEllipsisModule { 14 | } 15 | -------------------------------------------------------------------------------- /shared/directives/typeface/index.ts: -------------------------------------------------------------------------------- 1 | export * from './typeface.module'; 2 | -------------------------------------------------------------------------------- /shared/directives/typeface/typeface.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { TypefaceDirective } from './typeface.directive'; 3 | 4 | @NgModule({ 5 | declarations: [ 6 | TypefaceDirective, 7 | ], 8 | exports: [ 9 | TypefaceDirective, 10 | ], 11 | }) 12 | export class TypefaceModule { 13 | } 14 | -------------------------------------------------------------------------------- /shared/forms/index.ts: -------------------------------------------------------------------------------- 1 | export * from './form-control-warn'; 2 | -------------------------------------------------------------------------------- /shared/message-bus/index.ts: -------------------------------------------------------------------------------- 1 | export * from './message-bus'; 2 | -------------------------------------------------------------------------------- /shared/permissions/has-permission/index.ts: -------------------------------------------------------------------------------- 1 | export * from './has-permission.directive'; 2 | -------------------------------------------------------------------------------- /shared/permissions/index.ts: -------------------------------------------------------------------------------- 1 | export * from './permissions.module'; 2 | export * from './permissions.service'; 3 | -------------------------------------------------------------------------------- /shared/pipes/bytes-size/index.ts: -------------------------------------------------------------------------------- 1 | export * from './bytes-size.module'; 2 | -------------------------------------------------------------------------------- /shared/pipes/coerce-timestamp/coerce-timestamp.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | 3 | import { CoerceTimestampPipe } from './coerce-timestamp.pipe'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | CoerceTimestampPipe, 8 | ], 9 | exports: [ 10 | CoerceTimestampPipe, 11 | ], 12 | }) 13 | export class CoerceTimestampModule { 14 | } 15 | -------------------------------------------------------------------------------- /shared/pipes/coerce-timestamp/coerce-timestamp.pipe.ts: -------------------------------------------------------------------------------- 1 | import { Pipe, PipeTransform } from '@angular/core'; 2 | import { coerceTimestamp } from '../../utils/date'; 3 | 4 | @Pipe({ 5 | name: 'appCoerceTimestamp', 6 | }) 7 | export class CoerceTimestampPipe implements PipeTransform { 8 | public transform(value: string | number): number { 9 | return coerceTimestamp(value); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /shared/pipes/coerce-timestamp/index.ts: -------------------------------------------------------------------------------- 1 | export * from './coerce-timestamp.module'; 2 | -------------------------------------------------------------------------------- /shared/pipes/date-ago/index.ts: -------------------------------------------------------------------------------- 1 | export * from './date-ago.module'; 2 | -------------------------------------------------------------------------------- /shared/pipes/micro-value/index.ts: -------------------------------------------------------------------------------- 1 | export * from './micro-value.module'; 2 | export * from './micro-value.pipe'; 3 | -------------------------------------------------------------------------------- /shared/pipes/micro-value/micro-value.pipe.ts: -------------------------------------------------------------------------------- 1 | import { Pipe, PipeTransform } from '@angular/core'; 2 | 3 | export const MICRO_PDV_DIVISOR = 1000000; 4 | 5 | @Pipe({ 6 | name: 'microValue', 7 | }) 8 | export class MicroValuePipe implements PipeTransform { 9 | 10 | public transform(value: string | number): number { 11 | return +(+value / MICRO_PDV_DIVISOR).toFixed(6); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /shared/pipes/number-format/index.ts: -------------------------------------------------------------------------------- 1 | export * from './number-format.module'; 2 | export * from './number-format.pipe'; 3 | -------------------------------------------------------------------------------- /shared/pipes/number-suffix/index.ts: -------------------------------------------------------------------------------- 1 | export * from './number-suffix.module'; 2 | -------------------------------------------------------------------------------- /shared/pipes/number-suffix/number-suffix.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | 3 | import { NumberSuffixPipe } from './number-suffix.pipe'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | NumberSuffixPipe, 8 | ], 9 | exports: [ 10 | NumberSuffixPipe, 11 | ], 12 | }) 13 | export class NumberSuffixModule { 14 | } 15 | -------------------------------------------------------------------------------- /shared/pipes/pdv-value/index.ts: -------------------------------------------------------------------------------- 1 | export * from './pdv-value.module'; 2 | -------------------------------------------------------------------------------- /shared/pipes/positiveNumber/index.ts: -------------------------------------------------------------------------------- 1 | export * from './positive-number.module'; 2 | -------------------------------------------------------------------------------- /shared/pipes/positiveNumber/positive-number.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | 3 | import { PositiveNumberPipe } from './positive-number.pipe'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | PositiveNumberPipe, 8 | ], 9 | exports: [ 10 | PositiveNumberPipe, 11 | ], 12 | }) 13 | export class PositiveNumberModule { 14 | } 15 | -------------------------------------------------------------------------------- /shared/pipes/positiveNumber/positive-number.pipe.ts: -------------------------------------------------------------------------------- 1 | import { Pipe, PipeTransform } from '@angular/core'; 2 | 3 | @Pipe({ 4 | name: 'positiveNumber', 5 | }) 6 | export class PositiveNumberPipe implements PipeTransform { 7 | public transform(num: number): number { 8 | return Math.abs(num); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /shared/pipes/price/index.ts: -------------------------------------------------------------------------------- 1 | export * from './price.definitions'; 2 | export * from './price.module'; 3 | export * from './price.pipe'; 4 | -------------------------------------------------------------------------------- /shared/pipes/text-content/index.ts: -------------------------------------------------------------------------------- 1 | export * from './text-content.module'; 2 | -------------------------------------------------------------------------------- /shared/pipes/text-content/text-content.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | 3 | import { TextContentPipe } from './text-content.pipe'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | TextContentPipe, 8 | ], 9 | exports: [ 10 | TextContentPipe, 11 | ], 12 | }) 13 | export class TextContentModule { 14 | } 15 | -------------------------------------------------------------------------------- /shared/services/auth/index.ts: -------------------------------------------------------------------------------- 1 | export * from './auth-browser-storage.service'; 2 | export * from './user'; 3 | -------------------------------------------------------------------------------- /shared/services/auth/user.ts: -------------------------------------------------------------------------------- 1 | import { Wallet } from 'decentr-js'; 2 | 3 | export interface User { 4 | readonly id: string; 5 | readonly wallet: Wallet; 6 | } 7 | -------------------------------------------------------------------------------- /shared/services/blockchain-node/index.ts: -------------------------------------------------------------------------------- 1 | export * from './blockchain-node.service'; 2 | -------------------------------------------------------------------------------- /shared/services/configuration/index.ts: -------------------------------------------------------------------------------- 1 | export * from './config.service'; 2 | export * from './config.definitions'; 3 | export * from './configuration.module'; 4 | -------------------------------------------------------------------------------- /shared/services/currency/currency-api.definitions.ts: -------------------------------------------------------------------------------- 1 | type BlockchainId = string; 2 | type CurrencyId = string; 3 | 4 | export type CoinRateResponse = Record>; 5 | 6 | export interface CoinRateHistoryResponse { 7 | prices: [number, number][]; 8 | } 9 | -------------------------------------------------------------------------------- /shared/services/currency/index.ts: -------------------------------------------------------------------------------- 1 | export * from './currency.service'; 2 | export * from './currency-api.definitions'; 3 | -------------------------------------------------------------------------------- /shared/services/lock/index.ts: -------------------------------------------------------------------------------- 1 | export * from './lock-browser-storage.service'; 2 | -------------------------------------------------------------------------------- /shared/services/network-storage/index.ts: -------------------------------------------------------------------------------- 1 | export * from './network-browser-storage.service'; 2 | -------------------------------------------------------------------------------- /shared/services/notification/error-processor.ts: -------------------------------------------------------------------------------- 1 | import { Observable } from 'rxjs'; 2 | 3 | export abstract class ErrorProcessor { 4 | public abstract process(error: unknown): Observable | string; 5 | } 6 | 7 | export abstract class ConcreteErrorProcessor extends ErrorProcessor { 8 | public abstract canProcess(error: unknown): boolean; 9 | } 10 | -------------------------------------------------------------------------------- /shared/services/notification/index.ts: -------------------------------------------------------------------------------- 1 | export * from './error-processor'; 2 | export * from './notification.service'; 3 | export * from './notifications.module'; 4 | -------------------------------------------------------------------------------- /shared/services/pdv/index.ts: -------------------------------------------------------------------------------- 1 | export * from './pdv-storage.service'; 2 | -------------------------------------------------------------------------------- /shared/services/settings/index.ts: -------------------------------------------------------------------------------- 1 | export { CollectedPDVTypesSettings } from './pdv'; 2 | 3 | export * from './settings.module'; 4 | export * from './settings.service'; 5 | -------------------------------------------------------------------------------- /shared/services/settings/lock/index.ts: -------------------------------------------------------------------------------- 1 | export * from './lock-settings.definitions'; 2 | export * from './lock-settings.service'; 3 | -------------------------------------------------------------------------------- /shared/services/settings/lock/lock-settings.definitions.ts: -------------------------------------------------------------------------------- 1 | export interface LockSettings { 2 | delay: number; 3 | } 4 | -------------------------------------------------------------------------------- /shared/services/settings/pdv/index.ts: -------------------------------------------------------------------------------- 1 | export * from './pdv-settings.definitions'; 2 | export * from './pdv-settings.service'; 3 | -------------------------------------------------------------------------------- /shared/services/settings/pdv/pdv-settings.definitions.ts: -------------------------------------------------------------------------------- 1 | import { PDVType } from 'decentr-js'; 2 | 3 | export type CollectedPDVTypesSettings = Record, boolean>; 4 | 5 | export interface PDVSettings { 6 | collectedTypes: CollectedPDVTypesSettings; 7 | collectionConfirmed: boolean; 8 | } 9 | -------------------------------------------------------------------------------- /shared/services/settings/settings.definitions.ts: -------------------------------------------------------------------------------- 1 | import { Wallet } from 'decentr-js'; 2 | 3 | export interface UserSettingsStorage { 4 | lock: unknown; 5 | pdv: unknown; 6 | } 7 | 8 | export type SettingsStorage = Record; 9 | -------------------------------------------------------------------------------- /shared/services/storage/browser/index.ts: -------------------------------------------------------------------------------- 1 | export * from './browser-local-storage'; 2 | export * from './browser-storage.definitons'; 3 | -------------------------------------------------------------------------------- /shared/services/storage/decentr/index.ts: -------------------------------------------------------------------------------- 1 | export * from './decentr-storage'; 2 | -------------------------------------------------------------------------------- /shared/services/storage/index.ts: -------------------------------------------------------------------------------- 1 | export * from './browser'; 2 | export * from './decentr'; 3 | -------------------------------------------------------------------------------- /shared/services/wireguard/index.ts: -------------------------------------------------------------------------------- 1 | export * from './wireguard.definitions'; 2 | export * from './wireguard.service'; 3 | -------------------------------------------------------------------------------- /shared/styles/dialog.scss: -------------------------------------------------------------------------------- 1 | @import 'variables'; 2 | 3 | .app-confirmation-dialog-container { 4 | .mat-dialog-container { 5 | height: auto; 6 | max-width: 588px; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /shared/styles/overlay.scss: -------------------------------------------------------------------------------- 1 | @import 'variables'; 2 | 3 | .overlay-backdrop, 4 | .cdk-overlay-backdrop.cdk-overlay-backdrop-showing { 5 | background-color: $color-black; 6 | opacity: .4; 7 | } 8 | -------------------------------------------------------------------------------- /shared/svg-icons/add.ts: -------------------------------------------------------------------------------- 1 | export const svgAdd = { 2 | data: ``, 3 | name: 'add' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/arrow-left.ts: -------------------------------------------------------------------------------- 1 | export const svgArrowLeft = { 2 | data: ``, 3 | name: 'arrow-left' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/chart-arrow-flat.ts: -------------------------------------------------------------------------------- 1 | export const svgChartArrowFlat = { 2 | data: ``, 3 | name: 'chart-arrow-flat' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/check.ts: -------------------------------------------------------------------------------- 1 | export const svgCheck = { 2 | data: ``, 3 | name: 'check' 4 | }; 5 | -------------------------------------------------------------------------------- /shared/svg-icons/copy.ts: -------------------------------------------------------------------------------- 1 | export const svgCopy = { 2 | data: ``, 3 | name: 'copy' 4 | }; 5 | -------------------------------------------------------------------------------- /shared/svg-icons/download.ts: -------------------------------------------------------------------------------- 1 | export const svgDownload = { 2 | data: ``, 3 | name: 'download' 4 | }; 5 | -------------------------------------------------------------------------------- /shared/svg-icons/dropdown-expand.ts: -------------------------------------------------------------------------------- 1 | export const svgDropdownExpand = { 2 | data: ``, 3 | name: 'dropdown-expand' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/expand-more.ts: -------------------------------------------------------------------------------- 1 | export const svgExpandMore = { 2 | data: ``, 3 | name: 'expand-more' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/ae.ts: -------------------------------------------------------------------------------- 1 | export const svgAe = { 2 | data: ``, 3 | name: 'ae' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/am.ts: -------------------------------------------------------------------------------- 1 | export const svgAm = { 2 | data: ``, 3 | name: 'am' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/at.ts: -------------------------------------------------------------------------------- 1 | export const svgAt = { 2 | data: ``, 3 | name: 'at' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/bd.ts: -------------------------------------------------------------------------------- 1 | export const svgBd = { 2 | data: ``, 3 | name: 'bd' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/be.ts: -------------------------------------------------------------------------------- 1 | export const svgBe = { 2 | data: ``, 3 | name: 'be' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/bg.ts: -------------------------------------------------------------------------------- 1 | export const svgBg = { 2 | data: ``, 3 | name: 'bg' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/bl.ts: -------------------------------------------------------------------------------- 1 | export const svgBl = { 2 | data: ``, 3 | name: 'bl' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/bq.ts: -------------------------------------------------------------------------------- 1 | export const svgBq = { 2 | data: ``, 3 | name: 'bq' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/bw.ts: -------------------------------------------------------------------------------- 1 | export const svgBw = { 2 | data: ``, 3 | name: 'bw' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/ch.ts: -------------------------------------------------------------------------------- 1 | export const svgCh = { 2 | data: ``, 3 | name: 'ch' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/ci.ts: -------------------------------------------------------------------------------- 1 | export const svgCi = { 2 | data: ``, 3 | name: 'ci' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/co.ts: -------------------------------------------------------------------------------- 1 | export const svgCo = { 2 | data: ``, 3 | name: 'co' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/cr.ts: -------------------------------------------------------------------------------- 1 | export const svgCr = { 2 | data: ``, 3 | name: 'cr' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/cz.ts: -------------------------------------------------------------------------------- 1 | export const svgCz = { 2 | data: ``, 3 | name: 'cz' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/de.ts: -------------------------------------------------------------------------------- 1 | export const svgDe = { 2 | data: ``, 3 | name: 'de' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/dk.ts: -------------------------------------------------------------------------------- 1 | export const svgDk = { 2 | data: ``, 3 | name: 'dk' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/dz.ts: -------------------------------------------------------------------------------- 1 | export const svgDz = { 2 | data: ``, 3 | name: 'dz' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/ee.ts: -------------------------------------------------------------------------------- 1 | export const svgEe = { 2 | data: ``, 3 | name: 'ee' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/es-ct.ts: -------------------------------------------------------------------------------- 1 | export const svgEsCt = { 2 | data: ``, 3 | name: 'es-ct' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/fi.ts: -------------------------------------------------------------------------------- 1 | export const svgFi = { 2 | data: ``, 3 | name: 'fi' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/fr.ts: -------------------------------------------------------------------------------- 1 | export const svgFr = { 2 | data: ``, 3 | name: 'fr' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/ga.ts: -------------------------------------------------------------------------------- 1 | export const svgGa = { 2 | data: ``, 3 | name: 'ga' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/gb-eng.ts: -------------------------------------------------------------------------------- 1 | export const svgGbEng = { 2 | data: ``, 3 | name: 'gb-eng' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/gb-sct.ts: -------------------------------------------------------------------------------- 1 | export const svgGbSct = { 2 | data: ``, 3 | name: 'gb-sct' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/gf.ts: -------------------------------------------------------------------------------- 1 | export const svgGf = { 2 | data: ``, 3 | name: 'gf' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/gh.ts: -------------------------------------------------------------------------------- 1 | export const svgGh = { 2 | data: ``, 3 | name: 'gh' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/gl.ts: -------------------------------------------------------------------------------- 1 | export const svgGl = { 2 | data: ``, 3 | name: 'gl' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/gn.ts: -------------------------------------------------------------------------------- 1 | export const svgGn = { 2 | data: ``, 3 | name: 'gn' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/gp.ts: -------------------------------------------------------------------------------- 1 | export const svgGp = { 2 | data: ``, 3 | name: 'gp' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/hu.ts: -------------------------------------------------------------------------------- 1 | export const svgHu = { 2 | data: ``, 3 | name: 'hu' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/id.ts: -------------------------------------------------------------------------------- 1 | export const svgId = { 2 | data: ``, 3 | name: 'id' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/ie.ts: -------------------------------------------------------------------------------- 1 | export const svgIe = { 2 | data: ``, 3 | name: 'ie' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/it.ts: -------------------------------------------------------------------------------- 1 | export const svgIt = { 2 | data: ``, 3 | name: 'it' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/lu.ts: -------------------------------------------------------------------------------- 1 | export const svgLu = { 2 | data: ``, 3 | name: 'lu' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/lv.ts: -------------------------------------------------------------------------------- 1 | export const svgLv = { 2 | data: ``, 3 | name: 'lv' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/ma.ts: -------------------------------------------------------------------------------- 1 | export const svgMa = { 2 | data: ``, 3 | name: 'ma' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/mc.ts: -------------------------------------------------------------------------------- 1 | export const svgMc = { 2 | data: ``, 3 | name: 'mc' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/mf.ts: -------------------------------------------------------------------------------- 1 | export const svgMf = { 2 | data: ``, 3 | name: 'mf' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/mg.ts: -------------------------------------------------------------------------------- 1 | export const svgMg = { 2 | data: ``, 3 | name: 'mg' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/ml.ts: -------------------------------------------------------------------------------- 1 | export const svgMl = { 2 | data: ``, 3 | name: 'ml' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/mq.ts: -------------------------------------------------------------------------------- 1 | export const svgMq = { 2 | data: ``, 3 | name: 'mq' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/mu.ts: -------------------------------------------------------------------------------- 1 | export const svgMu = { 2 | data: ``, 3 | name: 'mu' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/mv.ts: -------------------------------------------------------------------------------- 1 | export const svgMv = { 2 | data: ``, 3 | name: 'mv' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/ne.ts: -------------------------------------------------------------------------------- 1 | export const svgNe = { 2 | data: ``, 3 | name: 'ne' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/ng.ts: -------------------------------------------------------------------------------- 1 | export const svgNg = { 2 | data: ``, 3 | name: 'ng' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/nl.ts: -------------------------------------------------------------------------------- 1 | export const svgNl = { 2 | data: ``, 3 | name: 'nl' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/no.ts: -------------------------------------------------------------------------------- 1 | export const svgNo = { 2 | data: ``, 3 | name: 'no' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/pl.ts: -------------------------------------------------------------------------------- 1 | export const svgPl = { 2 | data: ``, 3 | name: 'pl' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/pm.ts: -------------------------------------------------------------------------------- 1 | export const svgPm = { 2 | data: ``, 3 | name: 'pm' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/re.ts: -------------------------------------------------------------------------------- 1 | export const svgRe = { 2 | data: ``, 3 | name: 're' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/ro.ts: -------------------------------------------------------------------------------- 1 | export const svgRo = { 2 | data: ``, 3 | name: 'ro' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/ru.ts: -------------------------------------------------------------------------------- 1 | export const svgRu = { 2 | data: ``, 3 | name: 'ru' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/se.ts: -------------------------------------------------------------------------------- 1 | export const svgSe = { 2 | data: ``, 3 | name: 'se' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/sj.ts: -------------------------------------------------------------------------------- 1 | export const svgSj = { 2 | data: ``, 3 | name: 'sj' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/sl.ts: -------------------------------------------------------------------------------- 1 | export const svgSl = { 2 | data: ``, 3 | name: 'sl' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/sr.ts: -------------------------------------------------------------------------------- 1 | export const svgSr = { 2 | data: ``, 3 | name: 'sr' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/td.ts: -------------------------------------------------------------------------------- 1 | export const svgTd = { 2 | data: ``, 3 | name: 'td' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/th.ts: -------------------------------------------------------------------------------- 1 | export const svgTh = { 2 | data: ``, 3 | name: 'th' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/to.ts: -------------------------------------------------------------------------------- 1 | export const svgTo = { 2 | data: ``, 3 | name: 'to' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/tt.ts: -------------------------------------------------------------------------------- 1 | export const svgTt = { 2 | data: ``, 3 | name: 'tt' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/ua.ts: -------------------------------------------------------------------------------- 1 | export const svgUa = { 2 | data: ``, 3 | name: 'ua' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/wf.ts: -------------------------------------------------------------------------------- 1 | export const svgWf = { 2 | data: ``, 3 | name: 'wf' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/ye.ts: -------------------------------------------------------------------------------- 1 | export const svgYe = { 2 | data: ``, 3 | name: 'ye' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/flags/yt.ts: -------------------------------------------------------------------------------- 1 | export const svgYt = { 2 | data: ``, 3 | name: 'yt' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/information.ts: -------------------------------------------------------------------------------- 1 | export const svgInformation = { 2 | data: ``, 3 | name: 'information' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/pdv-rate-icon.ts: -------------------------------------------------------------------------------- 1 | export const svgPdvRateIcon = { 2 | data: ``, 3 | name: 'pdv-rate-icon' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/pdv-type/index.ts: -------------------------------------------------------------------------------- 1 | import { svgAdvertiser } from './advertiser'; 2 | import { svgCookie } from './cookie'; 3 | import { svgLocation } from './location'; 4 | import { svgProfile } from './profile'; 5 | import { svgSearchHistory } from './search-history'; 6 | export const pdvTypeIcons = [svgAdvertiser, svgCookie, svgLocation, svgProfile, svgSearchHistory]; 7 | -------------------------------------------------------------------------------- /shared/svg-icons/pdv-type/location.ts: -------------------------------------------------------------------------------- 1 | export const svgLocation = { 2 | data: ``, 3 | name: 'location' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/pdv-type/profile.ts: -------------------------------------------------------------------------------- 1 | export const svgProfile = { 2 | data: ``, 3 | name: 'profile' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/receive-coin.ts: -------------------------------------------------------------------------------- 1 | export const svgReceiveCoin = { 2 | data: ``, 3 | name: 'receive-coin' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/send-coin.ts: -------------------------------------------------------------------------------- 1 | export const svgSendCoin = { 2 | data: ``, 3 | name: 'send-coin' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/undo.ts: -------------------------------------------------------------------------------- 1 | export const svgUndo = { 2 | data: ``, 3 | name: 'undo' 4 | }; -------------------------------------------------------------------------------- /shared/svg-icons/validator-status/index.ts: -------------------------------------------------------------------------------- 1 | import { svgBonded } from './bonded'; 2 | import { svgUnbonded } from './unbonded'; 3 | import { svgUnbonding } from './unbonding'; 4 | export const validatorStatusIcons = [svgBonded, svgUnbonded, svgUnbonding]; 5 | -------------------------------------------------------------------------------- /shared/utils/array/exclude.ts: -------------------------------------------------------------------------------- 1 | export const excludeArrayValues = (target: T[], exclude: T[]) => { 2 | return target.filter((value) => !exclude.includes(value)); 3 | }; 4 | -------------------------------------------------------------------------------- /shared/utils/array/index.ts: -------------------------------------------------------------------------------- 1 | export * from './exclude'; 2 | export * from './intersection'; 3 | export * from './unique'; 4 | -------------------------------------------------------------------------------- /shared/utils/array/intersection.ts: -------------------------------------------------------------------------------- 1 | export const arrayIntersection = (array1: T[], array2: T[]) => { 2 | return array1.filter((value) => array2.includes(value)); 3 | }; 4 | -------------------------------------------------------------------------------- /shared/utils/array/unique.ts: -------------------------------------------------------------------------------- 1 | export const getArrayUniqueValues = (array: T[]): T[] => { 2 | return array.filter((item, index) => array.indexOf(item) === index); 3 | }; 4 | -------------------------------------------------------------------------------- /shared/utils/browser/index.ts: -------------------------------------------------------------------------------- 1 | export * from './browser'; 2 | export * from './is-installed-as-extension'; 3 | export * from './window-mode'; 4 | -------------------------------------------------------------------------------- /shared/utils/browser/is-installed-as-extension.ts: -------------------------------------------------------------------------------- 1 | import * as Browser from 'webextension-polyfill'; 2 | 3 | export const isInstalledAsExtension = (): Promise => { 4 | return Browser.management.getAll() 5 | .then((extensions) => !!extensions.find((extension) => extension.id === Browser.runtime.id)); 6 | }; 7 | -------------------------------------------------------------------------------- /shared/utils/crypto/aes.ts: -------------------------------------------------------------------------------- 1 | import { AES, enc } from 'crypto-js'; 2 | 3 | export const aesEncrypt = (target: string, key: string): string => { 4 | return AES.encrypt(target, key).toString(); 5 | }; 6 | 7 | export const aesDecrypt = (target: string, key: string): string => { 8 | return AES.decrypt(target, key).toString(enc.Utf8); 9 | }; 10 | -------------------------------------------------------------------------------- /shared/utils/crypto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './aes'; 2 | export * from './sha256'; 3 | -------------------------------------------------------------------------------- /shared/utils/file/index.ts: -------------------------------------------------------------------------------- 1 | export * from './mime-type'; 2 | export * from './size'; 3 | -------------------------------------------------------------------------------- /shared/utils/file/size.ts: -------------------------------------------------------------------------------- 1 | export const KILOBYTE = 1024; 2 | 3 | export const MEGABYTE = KILOBYTE * 1024; 4 | -------------------------------------------------------------------------------- /shared/utils/group-by/index.ts: -------------------------------------------------------------------------------- 1 | export * from './group-by'; 2 | -------------------------------------------------------------------------------- /shared/utils/html/fragment-wrapped-fragment.ts: -------------------------------------------------------------------------------- 1 | export const createFragmentWrappedContainer = (): HTMLDivElement => { 2 | const fragment = document.createDocumentFragment(); 3 | const container = document.createElement('div'); 4 | fragment.appendChild(container); 5 | 6 | return container; 7 | }; 8 | -------------------------------------------------------------------------------- /shared/utils/html/get-plain-text.ts: -------------------------------------------------------------------------------- 1 | import { createFragmentWrappedContainer } from './fragment-wrapped-fragment'; 2 | 3 | export const getPlainText = (html: string): string => { 4 | const container = createFragmentWrappedContainer(); 5 | 6 | container.innerHTML = html; 7 | 8 | return container.innerText; 9 | }; 10 | -------------------------------------------------------------------------------- /shared/utils/html/images-count.ts: -------------------------------------------------------------------------------- 1 | import { createFragmentWrappedContainer } from './fragment-wrapped-fragment'; 2 | 3 | export const getHTMLImagesCount = (html: string) => { 4 | const container = createFragmentWrappedContainer(); 5 | container.innerHTML = html; 6 | return container.querySelectorAll('img').length; 7 | }; 8 | -------------------------------------------------------------------------------- /shared/utils/html/index.ts: -------------------------------------------------------------------------------- 1 | export * from './fragment-wrapped-fragment'; 2 | export * from './get-plain-text'; 3 | export * from './images-count'; 4 | export * from './node-rect'; 5 | export * from './visibility'; 6 | -------------------------------------------------------------------------------- /shared/utils/html/node-rect.ts: -------------------------------------------------------------------------------- 1 | export const getNodeRect = (node: Node): DOMRect => { 2 | const range = document.createRange(); 3 | range.selectNode(node); 4 | return range.getBoundingClientRect(); 5 | }; 6 | -------------------------------------------------------------------------------- /shared/utils/http/index.ts: -------------------------------------------------------------------------------- 1 | export const httpUrl = (httpsUrl: string): string => { 2 | return httpsUrl.replace('https://', 'http://'); 3 | }; 4 | -------------------------------------------------------------------------------- /shared/utils/infinite-loading/index.ts: -------------------------------------------------------------------------------- 1 | export * from './infinite-loading.presenter'; 2 | export * from './infinite-loading.service'; 3 | -------------------------------------------------------------------------------- /shared/utils/observable/coerce-observable.ts: -------------------------------------------------------------------------------- 1 | import { isObservable, Observable, of } from 'rxjs'; 2 | 3 | export const coerceObservable = (source: T | Observable): Observable => { 4 | return isObservable(source) ? source : of(source); 5 | }; 6 | -------------------------------------------------------------------------------- /shared/utils/observable/index.ts: -------------------------------------------------------------------------------- 1 | export * from './coerce-observable'; 2 | -------------------------------------------------------------------------------- /shared/utils/pdv/index.ts: -------------------------------------------------------------------------------- 1 | export * from './get-pdv-day-change'; 2 | export * from './map-pdv-stats-to-chart-points'; 3 | -------------------------------------------------------------------------------- /shared/utils/routing/get-parent-url.ts: -------------------------------------------------------------------------------- 1 | import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; 2 | 3 | export const getParentUrlFromSnapshots = ( 4 | route: ActivatedRouteSnapshot, 5 | routerState: RouterStateSnapshot, 6 | ): string => { 7 | return routerState.url 8 | .slice(0, routerState.url.indexOf(route.url[route.url.length - 1].path)); 9 | }; 10 | -------------------------------------------------------------------------------- /shared/utils/routing/index.ts: -------------------------------------------------------------------------------- 1 | export * from './get-parent-url'; 2 | -------------------------------------------------------------------------------- /shared/utils/url/index.ts: -------------------------------------------------------------------------------- 1 | export const URL_EXP = /^(https?:\/\/)?([\da-zа-я.-]+\.[a-zа-я.]{2,6}|[\d.]+)([\/:?=&#]{1}[\da-zа-я.-]+)*[\/?]?$/gi; 2 | 3 | export const addHttpsToUrl = (url: string): string => { 4 | if (!/^(?:f|ht)tps?:\/\//.test(url)) { 5 | return `https://${ url }`; 6 | } 7 | 8 | return url; 9 | }; 10 | -------------------------------------------------------------------------------- /shared/utils/uuid/index.ts: -------------------------------------------------------------------------------- 1 | export const uuid = () => { 2 | return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, c => 3 | (+c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> +c / 4).toString(16), 4 | ); 5 | }; 6 | -------------------------------------------------------------------------------- /shared/utils/validation/index.ts: -------------------------------------------------------------------------------- 1 | export * from './base/base-validation.util'; 2 | -------------------------------------------------------------------------------- /shared/utils/version/index.ts: -------------------------------------------------------------------------------- 1 | import packageSettings from '../../../package.json'; 2 | 3 | export const APP_VERSION = packageSettings.version; 4 | --------------------------------------------------------------------------------