|
| 1 | +<script setup lang="ts"> |
| 2 | +import type { ModuleReplacement } from 'module-replacements' |
| 3 | +
|
| 4 | +const props = defineProps<{ |
| 5 | + replacement: ModuleReplacement |
| 6 | +}>() |
| 7 | +
|
| 8 | +const { t } = useI18n() |
| 9 | +
|
| 10 | +const message = computed(() => { |
| 11 | + switch (props.replacement.type) { |
| 12 | + case 'native': |
| 13 | + return t('package.replacement.native', { |
| 14 | + replacement: props.replacement.replacement, |
| 15 | + nodeVersion: props.replacement.nodeVersion, |
| 16 | + }) |
| 17 | + case 'simple': |
| 18 | + return t('package.replacement.simple', { |
| 19 | + replacement: props.replacement.replacement, |
| 20 | + }) |
| 21 | + case 'documented': |
| 22 | + return t('package.replacement.documented') |
| 23 | + case 'none': |
| 24 | + return t('package.replacement.none') |
| 25 | + } |
| 26 | +}) |
| 27 | +
|
| 28 | +const mdnUrl = computed(() => { |
| 29 | + if (props.replacement.type !== 'native' || !props.replacement.mdnPath) return null |
| 30 | + return `https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/${props.replacement.mdnPath}` |
| 31 | +}) |
| 32 | +
|
| 33 | +const docPath = computed(() => { |
| 34 | + if (props.replacement.type !== 'documented' || !props.replacement.docPath) return null |
| 35 | + return `https://github.com/es-tooling/module-replacements/blob/main/docs/modules/${props.replacement.docPath}.md` |
| 36 | +}) |
| 37 | +</script> |
| 38 | + |
| 39 | +<template> |
| 40 | + <div |
| 41 | + class="border border-amber-600/40 bg-amber-500/10 rounded-lg px-3 py-2 text-base text-amber-700 dark:text-amber-400" |
| 42 | + > |
| 43 | + <h2 class="font-medium mb-1 flex items-center gap-2"> |
| 44 | + <span class="i-carbon-idea w-4 h-4" aria-hidden="true" /> |
| 45 | + {{ $t('package.replacement.title') }} |
| 46 | + </h2> |
| 47 | + <p class="text-sm m-0"> |
| 48 | + {{ message }} |
| 49 | + <a |
| 50 | + v-if="mdnUrl" |
| 51 | + :href="mdnUrl" |
| 52 | + target="_blank" |
| 53 | + rel="noopener noreferrer" |
| 54 | + class="inline-flex items-center gap-1 ml-1 underline underline-offset-4 decoration-amber-600/60 dark:decoration-amber-400/50 hover:decoration-fg transition-colors" |
| 55 | + > |
| 56 | + {{ $t('package.replacement.mdn') }} |
| 57 | + <span class="i-carbon-launch w-3 h-3" aria-hidden="true" /> |
| 58 | + </a> |
| 59 | + <a |
| 60 | + v-if="docPath" |
| 61 | + :href="docPath" |
| 62 | + target="_blank" |
| 63 | + rel="noopener noreferrer" |
| 64 | + class="inline-flex items-center gap-1 ml-1 underline underline-offset-4 decoration-amber-600/60 dark:decoration-amber-400/50 hover:decoration-fg transition-colors" |
| 65 | + > |
| 66 | + {{ $t('package.replacement.learn_more') }} |
| 67 | + <span class="i-carbon-launch w-3 h-3" aria-hidden="true" /> |
| 68 | + </a> |
| 69 | + </p> |
| 70 | + </div> |
| 71 | +</template> |
0 commit comments