diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 22be713d..8213e284 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,15 +26,22 @@ jobs: run: bun i - name: "`cüzdan` birimini derle" - run: bun lib/kdjs/kdjs.js birim/cüzdan/birim.js --globals '{"GEN":false,"DefaultChain":"0x1","Chains":["0x1","0xa4b1"],"Lang":"tr"}' + run: bun lib/kdjs/kdjs.js birim/cüzdan/birim.jsx --globals '{"GEN":false,"DefaultChain":"0x1","Chains":["0x1","0xa4b1"],"Lang":"tr"}' - name: "`dil` birimini derle" - run: bun lib/kdjs/kdjs.js birim/dil/birim.js --globals '{"GEN":false,"Route":{"en":"mint","tr":"al"},"Lang":"en"}' + run: bun lib/kdjs/kdjs.js birim/dil/birim.jsx --globals '{"GEN":false,"Route":{"en":"mint","tr":"al"},"Lang":"en"}' - name: "`kpass` birimini derle" - run: bun lib/kdjs/kdjs.js birim/kpass/birim.js --globals '{"GEN":false,"Lang":"en"}' + run: bun lib/kdjs/kdjs.js birim/kpass/birim.jsx --globals '{"GEN":false,"Lang":"en"}' + + - name: "ana sayfayı derle" + run: bun lib/kdjs/kdjs.js ana/sayfa.jsx --globals '{"GEN":false,"Route":{"en":"mint","tr":"al"},"DefaultChain":"0x1","Chains":["0x1","0xa4b1"],"Lang":"tr"}' + + - name: "yenial sayfayı derle" + run: bun lib/kdjs/kdjs.js yenial/sayfa.jsx --globals '{"GEN":false,"Route":{"en":"mint","tr":"al"},"DefaultChain":"0x1","Chains":["0x1","0xa4b1"],"Lang":"tr"}' dappi-derle: + if: false # Temporarily disabled name: dApp'ı derle runs-on: macos-latest steps: diff --git a/.gitignore b/.gitignore index 21b56a9a..79465693 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ .vscode/ *.lock* *.out.js +*.out.jsx **/*.rs.bk /build /dist diff --git a/al/sayfa.jsx b/al/sayfa.jsx index 9f3a873d..8e58461d 100644 --- a/al/sayfa.jsx +++ b/al/sayfa.jsx @@ -1,16 +1,16 @@ import Script from "kastro:./sayfa.js"; import PowWorker from "kastro:./tanışma/powWorker.js"; -import İmeceİptal from "./imeceİptal/birim.jsx"; +import İmeceİptal from "./imeceİptal/birim"; import Css from "./sayfa.css"; -import Tanışma from "./tanışma/birim.jsx"; +import Tanışma from "./tanışma/birim"; import Ödeme from "./ödeme/birim.jsx"; import Başlık from "/birim/başlık/birim"; import Favicon from "/birim/icon.svg"; -import KPass from "/birim/kpass/birim.jsx"; +import KPass from "/birim/kpass/birim"; import Lato400 from "/birim/lato/l400.ttf"; import Lato700 from "/birim/lato/l700.ttf"; import OrtakCss from "/birim/ortakcss/birim"; -import Telefon from "/birim/telefon/birim.jsx"; +import Telefon from "/birim/telefon/birim"; import { ChainId } from "/lib/crosschain/chains"; import dom from "/lib/util/dom"; @@ -38,7 +38,7 @@ const DefaultChain = ChainId.xa4b1; const CüzdanBağlama = () =>
- 1. Cüzdanınızı bağlayın.{{ + {{ en: "1. Cüzdanınızı bağlayın.", tr: "1. Cüzdanınızı bağlayın." }}{{ en: " Proceed with a crypto wallet.", tr: " Cüzdan bağlayarak devam edin.", }}

diff --git "a/ana/a\304\237/birim.css" "b/ana/a\304\237/birim.css" index 24e1ef18..1435dce2 100644 --- "a/ana/a\304\237/birim.css" +++ "b/ana/a\304\237/birim.css" @@ -18,10 +18,14 @@ margin-top: 30px; } +/** @name {Altıgen} */ +#ag6 {} + .agi:hover { opacity: 1; } +/** @name {Düğümİmza} */ .agi { align-items: center; border-radius: 15px; @@ -36,6 +40,7 @@ width: 180px; } +/** @name {DüğümNokta} */ .agp { width: 10px; height: 10px; @@ -130,12 +135,14 @@ position: relative; } +/** @name {AğSvgText} */ .agsvgt { font: 700 30px 'l'; fill: #333; text-anchor: middle; } +/** @name {Grafik} */ #agn { margin: auto; } \ No newline at end of file diff --git "a/ana/a\304\237/birim.jsx" "b/ana/a\304\237/birim.jsx" index b640832c..a4406b19 100644 --- "a/ana/a\304\237/birim.jsx" +++ "b/ana/a\304\237/birim.jsx" @@ -1,22 +1,22 @@ import AnaCss from "../sayfa.css"; import Css from "./birim.css"; +import KpassCss from "/birim/kpass/birim.css"; import OrtakCss from "/birim/ortakcss/birim.css"; import { keccak256 } from "/lib/crypto/sha3"; /** * @param {{ * idx: string, - * }} props - * @return {string} + * }=} props + * @return {Promise} */ -const Node = ({ idx }) => { - const h = keccak256(idx); - return ( -
-
{`0x${h.slice(0, 8)}...${h.slice(8, 16)}`} -
- ); -} +const Node = ({ idx }) => ( +
+
{ + `0x${keccak256(idx).slice(0, 8)}...${keccak256(idx).slice(8, 16)}` + } +
+); /** @const {!Object>} */ const NODES = { @@ -36,10 +36,8 @@ const NODES = { const h = (renk) => (renk.startsWith("#") ? renk : "#" + renk).toUpperCase(); /** - * @param {{ - * width: number - * }} props - * @return {string} + * @param {{ width: number }=} props + * @return {Promise} */ const Grafik = ({ width }) => { const keys = Object.keys(NODES); @@ -50,19 +48,19 @@ const Grafik = ({ width }) => { const r = cx - 80; return ( - + - - KimlikDAO - Ağı + {{ en: "The KimlikDAO", tr: "KimlikDAO" }} + {{ en: "Network", tr: "Ağı" }} {keys.map((key, i) => { const x = Math.round(cx + r * Math.sin((Math.PI * 2 * i) / n)); const y = Math.round(cy - r * Math.cos((Math.PI * 2 * i) / n)); return (<> - + {NODES[key][0].slice(0, 8)} {NODES[key][1]} ); @@ -83,29 +81,29 @@ const Ağ = () => ( en: "The contents of each KPass are verified and digitally signed by at least seven independent nodes in the KimlikDAO network, all while fully preserving your privacy.", tr: "KPass’ler birbirinden bağımsız en az 7 KimlikDAO ağı düğümünün onay ve dijital imzası ile üretilebilir. Onay aşamasında veri gizliliğiniz tamamıyla korunur." }}
- {{ + {{ en: "Learn about KimlikDAO nodes", tr: "KimlikDAO düğümü detayları" }}
-
-
{{ tr: "Doğum yeri", en: "City of birth" }}
-
{{ tr: "İstanbul", en: "Istanbul" }}
-
{{ tr: "Cinsiyet", en: "Gender" }}
+
+
{{ tr: "Doğum yeri", en: "City of birth" }}
+
{{ tr: "İstanbul", en: "Palo Alto, CA" }}
+
{{ tr: "Cinsiyet", en: "Gender" }}
{{ tr: "K", en: "F" }}
- - + + - - + +
{Object.keys(NODES).map((key) => )}
-
+ ); export default Ağ; diff --git a/ana/hero/Sergi.jsx b/ana/hero/Sergi.jsx new file mode 100644 index 00000000..d598068b --- /dev/null +++ b/ana/hero/Sergi.jsx @@ -0,0 +1,125 @@ +import Css from "./sergi.css"; +import Cüzdan from "/birim/cüzdan/birim"; +import Telefon from "/birim/telefon/birim"; +import dom from "/lib/util/dom"; + +/** @const {!HTMLDivElement} */ +const Boncuklar = dom.div(Css.Boncuklar); +/** @const {!HTMLUListElement} */ +const Kartlar = dom.ul(Css.Kartlar); + +/** @type {number} */ +let Kart = 0; +/** @type {number} */ +let SergiSaati = 0; +/** @type {number} */ +let YerleştirSaati = 0; + +/** + * Kartları `Kart` değişkenine göre doğru konuma çeker. + */ +const yerleştir = () => { + /** @const {number} */ + const width = Kartlar.firstElementChild.getBoundingClientRect().width; + Kartlar.style.transform = `translate3d(-${Kart * width}px,0,0)`; +} + +/** + * @param {number} yeniKart + */ +const kartDeğiştir = (yeniKart) => { + if (Kart > 2 && yeniKart == 0) yeniKart = 4; + const yeniKartDengi = yeniKart % 4; + Telefon.nftGöster(yeniKartDengi <= 1, !yeniKartDengi); + yeniKartDengi === 3 + ? Telefon.kutuGöster(dom.i18n({ + tr: "Bağlı app KPass’inizdeki iletişim bilgilerinize erişmek istiyor. İzin veriyor musunuz?", + en: "The connected app would like to access your contact info section of your KPass." + })) + : Telefon.kutuKapat(); + Boncuklar.children[Kart % 4].firstElementChild.classList.remove("sel"); + Boncuklar.children[yeniKartDengi].firstElementChild.classList.add("sel"); + Kart = yeniKart; + yerleştir(); + if (yeniKart == 4) + setTimeout(() => { + Kartlar.style.transition = "none"; + Kart = 0; + yerleştir(); + setTimeout(() => Kartlar.style.transition = "", 600) + }, 1200); +} + +const sergiSaatiKur = () => { + if (SergiSaati) clearInterval(SergiSaati); + SergiSaati = setInterval(() => kartDeğiştir(Kart + 1), 12000); +} + +const Sergi = () => { + window.onresize = () => { + clearTimeout(YerleştirSaati); + YerleştirSaati = setTimeout(yerleştir, 100); + } + for (let /** number */ i = 0; i < Boncuklar.childElementCount; ++i) { + Boncuklar.children[i].onclick = () => { + kartDeğiştir(i); + sergiSaatiKur(); + } + } + Telefon.nftGöster(true, true); + Cüzdan.adresDeğişince((adres) => Telefon.adresGir(adres)); + Kartlar.appendChild(Kartlar.firstElementChild.cloneNode(true)); + Kartlar.style.width = "500%"; + sergiSaatiKur(); + + return ( +
+ +
+ +
  • +

    {{ + tr: "Kontrolü tamamen sende olan on-chain bir hesap", + en: "An on-chain account that you truly own" + }}

    {{ + en: "Mint your KPass and wallet login to all supported on/off-ramps with an account you truly own", + tr: "Bir kez KPass al, destekleyen tüm platformlarda cüzdanını bağla, gerekli bilgileri güvenle sun, hesap açmadan işlem yap" + }} +
  • +
  • +

    {{ + tr: "İçeriği kendi cüzdan anahtarlarınla şifrelenir", + en: "Your data is encrypted under your wallet private key" + }}

    {{ + en: "The contents of your KPass is encrypted in your browser under your wallet private key. KimlikDAO will never store your data", + tr: "KPass içeriği kendi tarayıcında kendi cüzdan anahtarlarınla şifrelenir. KimlikDAO asla bilgilerini göremez ve saklamaz" + }} +
  • +
  • +

    MetaMask gibi NFT + destekleyen kripto cüzdanında taşınır

    {{ + en: "KPass is an ERC-721 non-fungible token meaning that you can see it in any NFT wallet", + tr: "KPass ERC-721 standardına uygun bir NFT olduğu için NFT destekleyen her cüzdanda görülebilir" + }} +
  • +
  • +

    dApp’lere istediğin + bilgileri paylaş, istediklerini gizli tut

    {{ + en: "The connected dApp may send you requests for accessing parts of your KPass. Approve the sections you’d like to share, reject others", + tr: "Bağlı dApp KPass’inin içindeki bölümlere erişim isteği yollayabilir. Paylaşmak istediklerini onayla, gizli tutmak istediklerini onaylama" + }} +
  • +
    +
    + + {[...Array(4)].map((_, i) => ( +
    +
    +
    + ))} +
    +
    + ); +} + +export default Sergi; diff --git a/ana/hero/birim.jsx b/ana/hero/birim.jsx index 4a2855e4..f01dde5c 100644 --- a/ana/hero/birim.jsx +++ b/ana/hero/birim.jsx @@ -1,5 +1,5 @@ import Css from "./birim.css"; -import Sergi from "./sergi/birim"; +import Sergi from "./Sergi"; import OrtakCss from "/birim/ortakcss/birim.css"; import Telefon from "/birim/telefon/birim.jsx"; import { Page } from "/crate"; diff --git a/ana/hero/sergi/birim.css b/ana/hero/sergi.css similarity index 100% rename from ana/hero/sergi/birim.css rename to ana/hero/sergi.css diff --git a/ana/hero/sergi/birim.js b/ana/hero/sergi/birim.js deleted file mode 100644 index 0575b334..00000000 --- a/ana/hero/sergi/birim.js +++ /dev/null @@ -1,71 +0,0 @@ -import { Boncuklar, Kartlar } from './birim.jsx'; -import Cüzdan from "/birim/cüzdan/birim"; -import Telefon from "/birim/telefon/birim"; -import dom from '/lib/util/dom'; - -/** @type {number} */ -let Kart = 0; -/** @type {number} */ -let SergiSaati = 0; -/** @type {number} */ -let YerleştirSaati = 0; - -Telefon.nftGöster(true, true); - -/** - * Kartları `Kart` değişkenine göre doğru konuma çeker. - */ -const yerleştir = () => { - /** @const {number} */ - const width = Kartlar.firstElementChild.getBoundingClientRect().width; - Kartlar.style.transform = `translate3d(-${Kart * width}px,0,0)`; -} - -/** - * @param {number} yeniKart - */ -const kartDeğiştir = (yeniKart) => { - if (Kart > 2 && yeniKart == 0) yeniKart = 4; - const yeniKartDengi = yeniKart % 4; - Telefon.nftGöster(yeniKartDengi <= 1, !yeniKartDengi); - yeniKartDengi === 3 - ? Telefon.kutuGöster(dom.i18n({ - tr: "Bağlı app KPass’inizdeki iletişim bilgilerinize erişmek istiyor. İzin veriyor musunuz?", - en: "The connected app would like to access your contact info section of your KPass." - })) - : Telefon.kutuKapat(); - Boncuklar.children[Kart % 4].firstElementChild.classList.remove("sel"); - Boncuklar.children[yeniKartDengi].firstElementChild.classList.add("sel"); - Kart = yeniKart; - yerleştir(); - if (yeniKart == 4) - setTimeout(() => { - Kartlar.style.transition = "none"; - Kart = 0; - yerleştir(); - setTimeout(() => Kartlar.style.transition = "", 600) - }, 1200); -} - -window.onresize = () => { - clearTimeout(YerleştirSaati); - YerleştirSaati = setTimeout(yerleştir, 100); -} - -for (let /** number */ i = 0; i < Boncuklar.childElementCount; ++i) { - Boncuklar.children[i].onclick = () => { - kartDeğiştir(i); - sergiSaatiKur(); - } -} - -const sergiSaatiKur = () => { - if (SergiSaati) clearInterval(SergiSaati); - SergiSaati = setInterval(() => kartDeğiştir(Kart + 1), 12000); -} - -Cüzdan.adresDeğişince((adres) => Telefon.adresGir(adres)); - -Kartlar.appendChild(Kartlar.firstElementChild.cloneNode(true)); -Kartlar.style.width = "500%"; -sergiSaatiKur(); diff --git a/ana/hero/sergi/birim.jsx b/ana/hero/sergi/birim.jsx deleted file mode 100644 index 6cb414af..00000000 --- a/ana/hero/sergi/birim.jsx +++ /dev/null @@ -1,58 +0,0 @@ -import Css from "./birim.css"; -import dom from "/lib/util/dom"; - -/** @const {!HTMLDivElement} */ -export const Boncuklar = dom.div(Css.Boncuklar); -/** @const {!HTMLUListElement} */ -export const Kartlar = dom.ul(Css.Kartlar); - -const Sergi = () => ( -
    - -
    - -
  • -

    {{ - tr: "Kontrolü tamamen sende olan on-chain bir hesap", - en: "An on-chain account that you truly own" - }}

    {{ - en: "Mint your KPass and wallet login to all supported on/off-ramps with an account you truly own", - tr: "Bir kez KPass al, destekleyen tüm platformlarda cüzdanını bağla, gerekli bilgileri güvenle sun, hesap açmadan işlem yap" - }} -
  • -
  • -

    {{ - tr: "İçeriği kendi cüzdan anahtarlarınla şifrelenir", - en: "Your data is encrypted under your wallet private key" - }}

    {{ - en: "The contents of your KPass is encrypted in your browser under your wallet private key. KimlikDAO will never store your data", - tr: "KPass içeriği kendi tarayıcında kendi cüzdan anahtarlarınla şifrelenir. KimlikDAO asla bilgilerini göremez ve saklamaz" - }} -
  • -
  • -

    MetaMask gibi NFT - destekleyen kripto cüzdanında taşınır

    {{ - en: "KPass is an ERC-721 non-fungible token meaning that you can see it in any NFT wallet", - tr: "KPass ERC-721 standardına uygun bir NFT olduğu için NFT destekleyen her cüzdanda görülebilir" - }} -
  • -
  • -

    dApp’lere istediğin - bilgileri paylaş, istediklerini gizli tut

    {{ - en: "The connected dApp may send you requests for accessing parts of your KPass. Approve the sections you’d like to share, reject others", - tr: "Bağlı dApp KPass’inin içindeki bölümlere erişim isteği yollayabilir. Paylaşmak istediklerini onayla, gizli tutmak istediklerini onaylama" - }} -
  • -
    -
    - - {[...Array(4)].map((_, i) => ( -
    -
    -
    - ))} -
    -
    -); - -export default Sergi; diff --git a/ana/kazan/birim.css b/ana/kazan/birim.css index 4bc9ad9f..fa1736b6 100644 --- a/ana/kazan/birim.css +++ b/ana/kazan/birim.css @@ -1,3 +1,8 @@ +/** + * @export {Kök} + */ +#ka {} + /** * @name {İçerik} */ diff --git a/ana/kazan/birim.js b/ana/kazan/birim.js deleted file mode 100644 index e69de29b..00000000 diff --git a/ana/kazan/birim.jsx b/ana/kazan/birim.jsx index ac079d9f..ac3cadd7 100644 --- a/ana/kazan/birim.jsx +++ b/ana/kazan/birim.jsx @@ -1,11 +1,12 @@ import AnaCss from "../sayfa.css"; import Css from "./birim.css"; -import EliptikEğriler from "/birim/blog/eliptik-egriler/birim.jsx"; -import EliptikImza from "/birim/blog/eliptik-imza/birim.jsx"; +import EliptikEğriler from "/birim/blog/eliptik-egriler/birim"; +import EliptikImza from "/birim/blog/eliptik-imza/birim"; import OrtakCss from "/birim/ortakcss/birim.css"; +import { ExternalPage } from "/crate"; -export default () => ( -
    +const Kazan = () => ( +

    {{ @@ -13,21 +14,23 @@ export default () => ( tr: "KPass’inle öğren ve kazan." }}

    {{ - en: "Delve into KimlikDAO's blog for in-depth articles on cryptography and the " + - "mathematical aspects of cryptocurrencies. Answer a few simple questions and present " + - "your KPass’s completely anonymous HumanID section to claim your reward from a pool " + - "worth tens of thousands of dollars. Coming soon!", - tr: "KimlikDAO blog’un bilgi dolu ve ödüllü makalelerini oku, basit soruları cevapla, " + - "KPass’inin %100 anonim HumanID kısmını sunarak on binlerce dolarlık havuzdan ödülünü topla.Çok yakında!" + en: <>Explore KimlikDAO's blog for in-depth articles on cryptography and the + "mathematical aspects of cryptocurrencies. Answer a few simple questions and present + "your KPass’s completely anonymous HumanID section to claim your reward from a pool + "worth tens of thousands of dollars. Coming soon!, + tr: <>KimlikDAO blog’un bilgi dolu ve ödüllü makalelerini oku, basit soruları cevapla, + KPass’inin %100 anonim HumanID kısmını sunarak on binlerce dolarlık havuzdan ödülünü + topla. Çok yakında! }}
    - {{ - en: "Learn & earn (Soon!)", - tr: "Öğren ve kazan (Yakında!)" - }} + {{ + en: "Learn & earn (Soon!)", + tr: "Öğren ve kazan (Yakında!)" + }}
    ); + +export default Kazan; diff --git a/ana/opengraph.jsx b/ana/opengraph.jsx index 98bb4cc3..7aaa74f9 100644 --- a/ana/opengraph.jsx +++ b/ana/opengraph.jsx @@ -13,7 +13,7 @@ export const Title = { [LangCode.TR]: "KimlikDAO | Blokzincirdeki kimlik NFT’niz" }; -export default () => (<> +const OpenGraph = () => (<> @@ -22,3 +22,5 @@ export default () => (<> ); + +export default OpenGraph; diff --git a/ana/raporlar/birim.jsx b/ana/raporlar/birim.jsx index bf0d0253..871defd2 100644 --- a/ana/raporlar/birim.jsx +++ b/ana/raporlar/birim.jsx @@ -1,13 +1,16 @@ import AnaCss from "../sayfa.css"; -import Jan25 from "/birim/blog/2025.01/birim.jsx"; +import Jan25 from "/birim/blog/2025.01/birim"; import OrtakCss from "/birim/ortakcss/birim.css"; -export default () => ( +const Raporlar = () => (
    - +
    -

    KimlikDAO ilerleme raporları.

    +

    {{ + en: "KimlikDAO progress reports.", + tr: "KimlikDAO ilerleme raporları." + }}

    {{ en: "Read about the progress at KimlikDAO, from advancements in the KimlikDAO " + @@ -18,10 +21,12 @@ export default () => ( "katıldığımız etkinliklerden, kurduğumuz yeni ortaklıklara tüm " + "gelişmelerini aylık ilerleme raporlarından okuyun." }}
    - {{ + {{ en: "All progress reports", tr: "Tüm ilerleme raporları" }}
    -
    +
    ); + +export default Raporlar; diff --git a/ana/sahipler/birim.jsx b/ana/sahipler/birim.jsx index ab37c8c0..c867dbc9 100644 --- a/ana/sahipler/birim.jsx +++ b/ana/sahipler/birim.jsx @@ -23,9 +23,13 @@ const Tablo = { [ChainId.x89]: { ad: "POLYGON", ek: "’DA", holders: 2 }, }; +/** + * @param {{ chainId: ChainId }=} props + * @return {Promise} + */ const Balon = ({ chainId }) => (
    - +
    {Tablo[chainId].holders}
    { diff --git a/ana/sayfa.js b/ana/sayfa.js deleted file mode 100644 index 63ef1999..00000000 --- a/ana/sayfa.js +++ /dev/null @@ -1,20 +0,0 @@ -import "./hero/sergi/birim"; -import "./kazan/birim"; -import Css from "./sayfa.css"; -import "/birim/altdizin/birim"; -import Cüzdan from "/birim/cüzdan/birim"; -import "/birim/cüzdan/sağMenü"; -import "/birim/dil/birim"; -import { Page } from "/crate"; -import dom from "/lib/util/dom"; - -Cüzdan.kpassDeğişince((_, dosyaSözü) => { - /** @const {!HTMLAnchorElement} */ - const eylemDüğmesi = dom.a(Css.EylemDüğmesi); - /** @type {!Text} */(eylemDüğmesi.firstChild).data = dosyaSözü - ? dom.i18n({ tr: "KPass’ini incele", en: "View KPass" }) - : dom.i18n({ tr: "Hemen KPass al", en: "Mint KPass" }) - eylemDüğmesi.href = dosyaSözü - ? dom.i18n(Page.KPassim) - : dom.i18n(Page.Al); -}); diff --git a/ana/sayfa.jsx b/ana/sayfa.jsx index 0f904c7a..76d1aaef 100644 --- a/ana/sayfa.jsx +++ b/ana/sayfa.jsx @@ -1,11 +1,11 @@ import Script from "kastro:./sayfa.js"; -import Ağ from "./ağ/birim.jsx"; +import Ağ from "./ağ/birim"; import Hero from "./hero/birim"; -import Kazan from "./kazan/birim.jsx"; +import Kazan from "./kazan/birim"; import OkResmi from "./ok.svg"; import OpenGraph, { Description, Title } from "./opengraph"; import Raporlar from "./raporlar/birim"; -import Sahipler from "./sahipler/birim.jsx"; +import Sahipler from "./sahipler/birim"; import Css from "./sayfa.css"; import TwitterCard from "./twittercard"; import Altdizin from "/birim/altdizin/birim"; @@ -19,7 +19,8 @@ import Logo from "/birim/logo.svg"; import OrtakCss from "/birim/ortakcss/birim"; import { ExternalPage, HostUrl, Page } from "/crate"; import { ChainId } from "/lib/crosschain/chains"; -import { I18nString, LangCode } from "/lib/util/i18n" +import dom from "/lib/util/dom"; +import { I18nString, LangCode } from "/lib/util/i18n"; /** @const {!Array} */ const Chains = [ @@ -41,53 +42,66 @@ const ChainNotes = { const DefaultChain = ChainId.xa4b1; /** - * @param {{ Lang: LangCode }} props - * @return {!Promise} + * @param {{ Lang: LangCode }=} props + * @return {Promise} */ -const Ana = ({ Lang }) => ( - - - - - - - - - - {Title} - - - -