doxa-maps/plugin-designs/template-bundle/template-map-b.vue
doxa-maps-88655c70 5ddabe26e2 light the remaining unconditional loading overlays and the copy-me starter
A previous sweep found six dark matches, correctly ruled five of them unreachable, and
fixed the one real violation in doxa-simple-map. Re-running it with a luminance test
rather than a hex prefix found more, because the earlier pattern also matched the green
accent #10b981 and so buried the genuine surfaces in noise.

Three further unconditional violations, all the same shape as the one already fixed: the
loading overlays in all-people-groups, country-posters and doxa-research-map each render
on every load via v-if="!appReady", so a near-black flash was the first thing a visitor
saw. All four now use the palette surface with muted text.

The template-bundle starter was also dark in both profiles. That one matters more than a
leaf: the documented recipe is to copy template-bundle and rename it, so every future
plugin would have inherited a surface the house style forbids. The two profiles stay
visibly distinct — a tinted surface with an accent border, b white with a neutral one.

Verified by reading the shipped rule out of each built bundle: 4 of 4 found, all
#f3f3f1 at luminance 243. The found-count is reported so a run that matches nothing
cannot read as a pass — an earlier version of that check found zero rules and printed
ALL LIGHT.
2026-09-21 16:40:53 +00:00

48 lines
1.9 KiB
Vue

<script setup>
/**
* template-map-b.vue — example profile "B"
*
* @description Minimal example profile B — a second profile in the same bundle.
* @profile template-map-b
* @bundle template-bundle
* @element template-bundle
*
* A SECOND profile living in the SAME bundle folder, alongside
* template-map-a.vue (both flat, no profiles/ subfolder). Both compile into the
* single output file app/doxa-maps/template-bundle/template-bundle.js — one
* bundle, two profiles.
* The host chooses which one to show with the `profile` field:
*
* <template-bundle profile-config='{"profile":"template-map-b"}'></template-bundle>
*/
import { inject, computed } from 'vue'
const config = inject('profileConfig', null)
const note = computed(() => config?.value?.note || '(no note passed in profile-config)')
</script>
<template>
<div class="tpl tpl--b">
<h2>Profile B</h2>
<p>Served from <code>template-map-b.vue</code> in the <code>template-bundle</code> bundle.</p>
<p class="note">note: {{ note }}</p>
</div>
</template>
<style scoped>
.tpl {
width: 100%; height: 100%;
display: flex; flex-direction: column; gap: 6px;
align-items: center; justify-content: center;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
text-align: center;
}
/* MATERIAL LIGHT (2026-09-21). Was background #1f0b2a / color #d8b4fe. See template-map-a.vue for
why the STARTER matters most: the copy-me recipe propagates whatever it finds here.
Kept visibly distinct from profile a (white card + neutral border, vs a's tinted surface and
accent border) so the two-profile demo still reads as two profiles. */
.tpl--b { background: #ffffff; color: #3b463d; border: 1px solid #d1d4cd; }
.tpl h2 { font-size: 22px; font-weight: 700; }
.tpl code { background: rgba(59, 70, 61, 0.08); padding: 1px 6px; border-radius: 4px; }
.tpl .note { font-size: 12px; opacity: 0.7; }
</style>