release prep
6
frontend/docs/website/package-lock.json
generated
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"name": "website",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 580 B After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 990 B After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
BIN
frontend/public/scholar_logo.png
Normal file
|
After Width: | Height: | Size: 109 KiB |
BIN
frontend/public/scholarr_favicon.png
Normal file
|
After Width: | Height: | Size: 127 KiB |
|
|
@ -3,8 +3,10 @@ set -euo pipefail
|
|||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
FRONTEND_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
||||
SRC_LOGO="${FRONTEND_DIR}/src/logo.png"
|
||||
PUBLIC_DIR="${FRONTEND_DIR}/public"
|
||||
SRC_LOGO="${PUBLIC_DIR}/scholar_logo.png"
|
||||
SRC_FAVICON="${PUBLIC_DIR}/scholar_favicon.png"
|
||||
SRC_FAVICON_ALT="${PUBLIC_DIR}/scholarr_favicon.png"
|
||||
TMP_DIR="$(mktemp -d)"
|
||||
TMP_ALPHA="${TMP_DIR}/logo-alpha-mask.png"
|
||||
TMP_GLYPH="${TMP_DIR}/logo-glyph-white.png"
|
||||
|
|
@ -23,22 +25,36 @@ if [[ ! -f "${SRC_LOGO}" ]]; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -f "${SRC_FAVICON}" && -f "${SRC_FAVICON_ALT}" ]]; then
|
||||
SRC_FAVICON="${SRC_FAVICON_ALT}"
|
||||
fi
|
||||
|
||||
mkdir -p "${PUBLIC_DIR}"
|
||||
|
||||
# Build a high-contrast icon: solid brand background + white logo.
|
||||
magick "${SRC_LOGO}" -alpha extract "${TMP_ALPHA}"
|
||||
magick -size 1024x1024 xc:white "${TMP_ALPHA}" \
|
||||
-compose CopyOpacity \
|
||||
-composite \
|
||||
"${TMP_GLYPH}"
|
||||
if [[ -f "${SRC_FAVICON}" ]]; then
|
||||
# Prefer dedicated favicon artwork when provided.
|
||||
magick "${SRC_FAVICON}" \
|
||||
-background none \
|
||||
-gravity center \
|
||||
-resize 1024x1024^ \
|
||||
-extent 1024x1024 \
|
||||
"${TMP_ICON}"
|
||||
else
|
||||
# Build a high-contrast icon from the logo: solid brand background + white logo.
|
||||
magick "${SRC_LOGO}" -alpha extract "${TMP_ALPHA}"
|
||||
magick -size 1024x1024 xc:white "${TMP_ALPHA}" \
|
||||
-compose CopyOpacity \
|
||||
-composite \
|
||||
"${TMP_GLYPH}"
|
||||
|
||||
magick -size 1024x1024 "xc:${BRAND_COLOR}" "${TMP_CANVAS}"
|
||||
magick "${TMP_GLYPH}" -resize 760x760 "${TMP_GLYPH}"
|
||||
magick "${TMP_CANVAS}" "${TMP_GLYPH}" \
|
||||
-gravity center \
|
||||
-compose over \
|
||||
-composite \
|
||||
"${TMP_ICON}"
|
||||
magick -size 1024x1024 "xc:${BRAND_COLOR}" "${TMP_CANVAS}"
|
||||
magick "${TMP_GLYPH}" -resize 760x760 "${TMP_GLYPH}"
|
||||
magick "${TMP_CANVAS}" "${TMP_GLYPH}" \
|
||||
-gravity center \
|
||||
-compose over \
|
||||
-composite \
|
||||
"${TMP_ICON}"
|
||||
fi
|
||||
|
||||
magick "${TMP_ICON}" -resize 16x16 "${PUBLIC_DIR}/favicon-16x16.png"
|
||||
magick "${TMP_ICON}" -resize 32x32 "${PUBLIC_DIR}/favicon-32x32.png"
|
||||
|
|
@ -53,4 +69,4 @@ magick \
|
|||
|
||||
rm -rf "${TMP_DIR}"
|
||||
|
||||
echo "Generated favicon + app icon assets in ${PUBLIC_DIR}"
|
||||
echo "Generated favicon + app icon assets in ${PUBLIC_DIR} (logo: ${SRC_LOGO}, favicon source: ${SRC_FAVICON})"
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ function onToggleMenu(): void {
|
|||
to="/dashboard"
|
||||
class="inline-flex items-center gap-2.5 rounded-sm font-display text-xl tracking-tight text-ink-primary transition hover:text-ink-secondary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-offset-2 focus-visible:ring-offset-focus-offset"
|
||||
>
|
||||
<AppBrandMark size="lg" />
|
||||
<AppBrandMark size="xl" />
|
||||
<span>scholarr</span>
|
||||
</RouterLink>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
<script setup lang="ts">
|
||||
import { computed } from "vue";
|
||||
|
||||
import brandLogo from "@/logo.png";
|
||||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
size?: "sm" | "md" | "lg" | "xl";
|
||||
|
|
@ -26,7 +24,7 @@ const sizeClass = computed(() => {
|
|||
});
|
||||
|
||||
const logoMaskStyle: Record<string, string> = {
|
||||
"--brand-logo-mask": `url(${brandLogo})`,
|
||||
"--brand-logo-mask": "url(/scholar_logo.png)",
|
||||
};
|
||||
</script>
|
||||
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 104 KiB |