From a5874bd0575c444523e387bfe30a5e04fc1cab04 Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Sat, 31 Dec 2022 18:21:51 +0400 Subject: [PATCH] Add roadmap rendering --- public/fonts/balsamiq.woff2 | Bin 0 -> 30596 bytes src/components/Icon.astro | 3 - .../InteractiveRoadmap.astro | 11 +++ .../InteractiveRoadmap/InteractiveRoadmap.css | 86 ++++++++++++++++++ .../{Layout.astro => BaseLayout.astro} | 4 + src/lib/roadmap.ts | 38 ++++++++ src/pages/[roadmapId].astro | 21 +++++ src/pages/index.astro | 7 +- src/roadmaps/frontend/frontend.md | 2 - 9 files changed, 163 insertions(+), 9 deletions(-) create mode 100644 public/fonts/balsamiq.woff2 create mode 100644 src/components/InteractiveRoadmap/InteractiveRoadmap.astro create mode 100644 src/components/InteractiveRoadmap/InteractiveRoadmap.css rename src/layouts/{Layout.astro => BaseLayout.astro} (94%) create mode 100644 src/lib/roadmap.ts create mode 100644 src/pages/[roadmapId].astro diff --git a/public/fonts/balsamiq.woff2 b/public/fonts/balsamiq.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f33cdb733db29e3b0f0885a28292700188688f61 GIT binary patch literal 30596 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⋙;F80b27i>Jmi=Wp^MbnE-VX|zsgBCsU3IO(V=f?^PyHF{9KjNq-TB3 zsHlI+U*`gv-{l^`bU;RbtNNMfin^0r65X#HUj!iWn-h7xYhh1l(nK1%=r4XI`L~x) zYuD^`4MzO+=$x?P-u!f)JynQXlrNv{Ec_2z9#B(2gfZ{*V)xJ1D|`z; zonSch5lem=IFO%ZRXB#HT8vOI;d-}c^ly=H9&KNS&XSA!
uor-f8;$g|PS)#}L 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 literal 0 HcmV?d00001 diff --git a/src/components/Icon.astro b/src/components/Icon.astro index 5e537c0bb..1315be5c3 100644 --- a/src/components/Icon.astro +++ b/src/components/Icon.astro @@ -7,9 +7,6 @@ export interface Props { async function getSVG(name: string) { const filepath = `/src/icons/${name}.svg`; - const iconFiles = await Astro.glob("../icons/**/*.svg"); - - console.log(iconFiles[0]); const files = import.meta.glob('/src/icons/**/*.svg', { eager: true, diff --git a/src/components/InteractiveRoadmap/InteractiveRoadmap.astro b/src/components/InteractiveRoadmap/InteractiveRoadmap.astro new file mode 100644 index 000000000..bfb661dde --- /dev/null +++ b/src/components/InteractiveRoadmap/InteractiveRoadmap.astro @@ -0,0 +1,11 @@ +--- +import "./InteractiveRoadmap.css"; + +export interface Props { + jsonUrl: string; +} + +const { jsonUrl } = Astro.props; +--- + + \ No newline at end of file diff --git a/src/components/InteractiveRoadmap/InteractiveRoadmap.css b/src/components/InteractiveRoadmap/InteractiveRoadmap.css new file mode 100644 index 000000000..419486adc --- /dev/null +++ b/src/components/InteractiveRoadmap/InteractiveRoadmap.css @@ -0,0 +1,86 @@ +svg text tspan { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-rendering: optimizeSpeed; + } + + code { + background: #1e1e3f; + color: #9efeff; + padding: 3px 5px; + font-size: 14px; + border-radius: 3px; + } + + svg .clickable-group { + cursor: pointer; + } + + svg .clickable-group:hover > [fill='rgb(65,53,214)'] { + fill: #232381; + stroke: #232381; + } + + svg .clickable-group:hover > [fill='rgb(255,255,0)'] { + fill: #d6d700; + } + + svg .clickable-group:hover > [fill='rgb(255,229,153)'] { + fill: #f3c950; + } + + svg .clickable-group:hover > [fill='rgb(153,153,153)'] { + fill: #646464; + } + + svg .clickable-group:hover > [fill='rgb(255,255,255)'] { + fill: #d7d7d7; + } + + svg .clickable-group:hover > [fill='rgb(255,255,221)'] { + fill: #e5e5be; + } + + svg .clickable-group:hover > [fill='rgb(255,217,102)'] { + fill: #d9b443; + } + + svg .done rect { + fill: #cbcbcb !important; + } + + svg .done text { + text-decoration: line-through; + } + + /************************************ + Aspect ratio implementation + *************************************/ + [style*="--aspect-ratio"] > :first-child { + width: 100%; + } + + [style*="--aspect-ratio"] > img { + height: auto; + } + + @supports (--custom:property) { + [style*="--aspect-ratio"] { + position: relative; + } + + [style*="--aspect-ratio"]::before { + content: ""; + display: block; + /*noinspection CssUnresolvedCustomProperty*/ + padding-bottom: calc(100% / (var(--aspect-ratio))); + } + + [style*="--aspect-ratio"] > :first-child { + position: absolute; + top: 0; + left: 0; + height: 100%; + } + } + \ No newline at end of file diff --git a/src/layouts/Layout.astro b/src/layouts/BaseLayout.astro similarity index 94% rename from src/layouts/Layout.astro rename to src/layouts/BaseLayout.astro index 077a95c77..d060a362a 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/BaseLayout.astro @@ -16,10 +16,14 @@ const { title } = Astro.props; {title} + + + +