{"release_id":"01a1998d-9802-0000-b0f7-33a23307f4ed","chunk_id":"01a1998d-990e-7170-b21d-2282d7eb983f","file":"CZS5MnLn.mjs","mappings":"i6DAgBA,SAWE,IAAAA,gBAAQ,EAAK,EACbC,kBAAU,EAAK,EACfC,qBAAa,EAAK,EAClBC,gBAAQ,EAAK,EACbC,mBAAW,EAAK,EAChBC,mBAAW,EAAK,EAChBC,qBAAa,EAAK,EAClBC,eAAO,EAAE,EACTC,EAAKC,EAAAC,EAAA,QAAA,EAAG,EAAA,QAUHC,EAAKC,EAAA,IAAA,CAGTR,EAAQ,IAAM,KAAM,WAAY,KAAM,UAAU,EAChDC,EAAQ,IAAM,KAAM,WAAY,KAAM,mBAAmB,EACzDC,EAAU,IAAM,KAAM,aAAc,KAAM,YAAY,EACtDJ,EAAU,IAAM,KAAM,aAAc,KAAM,KAAK,EAC/CC,EAAK,IAAM,KAAM,QAAS,KAAM,OAAO,EACvCH,EAAK,IAAM,KAAM,QAAS,KAAM,OAAO,EACvCC,EAAO,IAAM,KAAM,UAAW,KAAM,SAAS,CAC5C,EAAA,OAAO,OAAO,CAAA,kCAKhBY,EAAIC,GAAA,IAAJD,EAAI,GAAA,IAAAE,EACCJ,CAAK,EAAIK,GAAIA,EAAG,KAAI,CAAAC,EAAXD,IAAE,CACT,MAAAE,EAAIN,EAAA,IAAGJ,EAAK,GAAAO,EAAIC,CAAE,EAAC,OAAS,cAAYD,EAAIC,CAAE,EAAC,OAAS,UAAU,MACzEG,EAAIC,GAAA,QACH,IAAAC,IADDF,CAAI,MACHE,CAAI,iBAEFC,EAAGC,GAAA,MAAHD,CAAG,aAKHE,EAAGC,GAAA,MAAHD,CAAG,aAKHE,EAAGC,GAAA,MAAHD,CAAG,aAIHE,EAAGC,GAAA,MAAHD,CAAG,aAKHE,EAAGC,GAAA,MAAHD,CAAG,aAKHE,EAAGC,GAAA,MAAHD,CAAG,aAIHE,EAAGC,GAAA,MAAHD,CAAG,WA7BAnB,EAAAC,CAAE,EAAC,OAAS,kBAIPA,CAAE,EAAC,OAAS,WAAUoB,EAAAC,EAAA,CAAA,EAAAtB,EAKtBC,CAAE,EAAC,OAAS,aAAYoB,EAAAE,EAAA,CAAA,EAAAvB,EAKxBC,CAAE,EAAC,OAAS,iBAIZA,CAAE,EAAC,OAAS,UAASoB,EAAAG,EAAA,CAAA,EAAAxB,EAMrBC,CAAE,EAAC,OAAS,aAAYoB,EAAAI,EAAA,CAAA,EAAAJ,EAAAK,EAAA,EAAA,WAzBlCpB,CAAI,UAAJA,EAAI,CAAA,iBAoCMqB,EAAIC,GAAA,MAAJD,EAAI,EAAA,IAAJA,CAAI,EAAkBE,EAAA,IAAAC,GAAAC,EAAA/B,EAAAC,CAAE,EAAC,IAAI,CAAA,MAA7B0B,CAAI,aAAVxB,CAAI,GAAAkB,EAAAW,CAAA,MArCT5B,CAAI,SAAJ6B,EAAAC,GAAA9B,EAAI,EAAA,UAAAJ,EAAgBC,CAAE,EAAC,2CAAuBE,CAAI,EAAA,EAAlDgC,EAAA/B,SAAgEZ,EAAI,GAAA,EAAA,IAAA,KAApEY,EAAI,QAAAJ,EAA4EC,CAAE,EAAC,IAAI,QAAvFG,CAAI,MAHJN,CAAI,EAAJ+B,EAAA,IAAAM,EAAArC,SAAgCN,KAAI,EAAA,IAAA,CAAA,MAApCM,CAAI,WADDE,EAAAJ,CAAK,EAAC,QAAMyB,EAAAe,CAAA,cAFT","names":["rater","creator","subscriber","admin","verified","topRater","ambassador","size","label","$.prop","$$props","items","$.derived","span","root_1","$.get","it","$$anchor","chip","span_1","root_2","span_2","svg","root_3","svg_1","root_4","svg_2","root_5","svg_3","root_6","svg_4","root_7","svg_5","root_8","svg_6","root_9","$$render","consequent_1","consequent_2","consequent_4","consequent_5","alternate","span_3","root_10","$.template_effect","$.set_text","text","consequent_6","classes","$.set_class","$.set_style","consequent_7"],"sources":["../../../../../../src/lib/components/UserBadge.svelte"],"sourcesContent":["<script module lang=\"ts\">\n\texport interface UserBadgeFlags {\n\t\trater?: boolean;\n\t\t/** Creator role — sells albums / paid content. Independent of rater. */\n\t\tcreator?: boolean;\n\t\tsubscriber?: boolean;\n\t\tadmin?: boolean;\n\t\tverified?: boolean;\n\t\t/** Rater of the week champion (profile.raterContestWins > 0). Platinum —\n\t\t *  the one pin on the site that can't be bought. */\n\t\ttopRater?: boolean;\n\t\t/** Ambassador — promotes the site off-platform. Violet, above pro. */\n\t\tambassador?: boolean;\n\t}\n</script>\n\n<script lang=\"ts\">\n\t// One unified badge shown next to a username. Renders an enamel-pin style\n\t// emblem per status the user holds (admin ▸ rater ▸ subscriber). Pass\n\t// `label` for the chip form (emblem + word) used where there's room.\n\tinterface Props extends UserBadgeFlags {\n\t\t/** emblem edge length in px */\n\t\tsize?: number;\n\t\t/** show the word beside the emblem (chip form) */\n\t\tlabel?: boolean;\n\t}\n\tlet {\n\t\trater = false,\n\t\tcreator = false,\n\t\tsubscriber = false,\n\t\tadmin = false,\n\t\tverified = false,\n\t\ttopRater = false,\n\t\tambassador = false,\n\t\tsize = 15,\n\t\tlabel = false\n\t}: Props = $props();\n\n\ttype Item = {\n\t\tkind: 'admin' | 'rater' | 'creator' | 'subscriber' | 'verified' | 'topRater' | 'ambassador';\n\t\ttext: string;\n\t};\n\t// Show every status the user holds (verified ▸ rater of the week ▸ pro ▸\n\t// admin ▸ rater ▸ creator). verified and subscriber are always bare\n\t// emblems; the role badges take the word when `label` is set.\n\tconst items = $derived(\n\t\t[\n\t\t\t// verified (anti-catfish) leads — it's the trust signal.\n\t\t\tverified && { kind: 'verified', text: 'verified' },\n\t\t\ttopRater && { kind: 'topRater', text: 'rater of the week' },\n\t\t\tambassador && { kind: 'ambassador', text: 'ambassador' },\n\t\t\tsubscriber && { kind: 'subscriber', text: 'pro' },\n\t\t\tadmin && { kind: 'admin', text: 'admin' },\n\t\t\trater && { kind: 'rater', text: 'rater' },\n\t\t\tcreator && { kind: 'creator', text: 'creator' }\n\t\t].filter(Boolean) as Item[]\n\t);\n</script>\n\n{#if items.length}\n\t<span class=\"ub-row\" style=\"--s:{size}px\">\n{#each items as it (it.kind)}\n\t{@const chip = label && it.kind !== 'subscriber' && it.kind !== 'verified'}\n\t<span class=\"ub ub--{it.kind}\" class:ub--chip={chip} style=\"--s:{size}px\" title={it.text}>\n\t\t<span class=\"emblem\">\n\t\t\t{#if it.kind === 'verified'}\n\t\t\t\t<svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n\t\t\t\t\t<path d=\"M9.6 16.2 5.4 12l-1.4 1.4 5.6 5.6L20.4 8.2 19 6.8z\" />\n\t\t\t\t</svg>\n\t\t\t{:else if it.kind === 'topRater'}\n\t\t\t\t<!-- crown: the rater-of-the-week pin -->\n\t\t\t\t<svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n\t\t\t\t\t<path d=\"M3 8l4.5 3.5L12 5l4.5 6.5L21 8l-1.8 10H4.8z\" />\n\t\t\t\t</svg>\n\t\t\t{:else if it.kind === 'ambassador'}\n\t\t\t\t<!-- flag: carries the site somewhere else -->\n\t\t\t\t<svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n\t\t\t\t\t<path d=\"M5 3h2v18H5zM8 4h11l-2.6 4L19 12H8z\" />\n\t\t\t\t</svg>\n\t\t\t{:else if it.kind === 'rater'}\n\t\t\t\t<svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n\t\t\t\t\t<path d=\"M12 2.6l2.7 5.9 6.4.6-4.8 4.3 1.4 6.3L12 16.9 6.3 19.7l1.4-6.3L2.9 9.1l6.4-.6z\" />\n\t\t\t\t</svg>\n\t\t\t{:else if it.kind === 'creator'}\n\t\t\t\t<!-- camera aperture-ish diamond: the \"makes content\" mark -->\n\t\t\t\t<svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n\t\t\t\t\t<path d=\"M12 3l6.4 4.7-2.5 7.5H8.1L5.6 7.7z\" />\n\t\t\t\t\t<circle cx=\"12\" cy=\"18.6\" r=\"2.1\" />\n\t\t\t\t</svg>\n\t\t\t{:else if it.kind === 'subscriber'}\n\t\t\t\t<svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n\t\t\t\t\t<path d=\"M3 7l4.5 4L12 4l4.5 7L21 7l-1.6 11H4.6z\" />\n\t\t\t\t</svg>\n\t\t\t{:else}\n\t\t\t\t<svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n\t\t\t\t\t<path d=\"M12 2l7 3v6c0 4.7-3.2 8.4-7 9.8C8.2 19.4 5 15.7 5 11V5z\" />\n\t\t\t\t</svg>\n\t\t\t{/if}\n\t\t\t<span class=\"gloss\" aria-hidden=\"true\"></span>\n\t\t</span>\n\t\t{#if chip}<span class=\"ub-text\">{it.text}</span>{/if}\n\t</span>\n{/each}\n\t</span>\n{/if}\n\n<style>\n\t/* One wrapper with a size-proportional gap so the space BETWEEN badges is\n\t   identical on every surface (profile, chat, feed, …) instead of inheriting\n\t   whatever gap the parent row happens to use. */\n\t.ub-row {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tgap: calc(var(--s) * 0.34);\n\t\tvertical-align: middle;\n\t}\n\t.ub {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tgap: 4px;\n\t\tvertical-align: middle;\n\t\tline-height: 0;\n\t}\n\t.ub--chip {\n\t\tgap: 5px;\n\t\tpadding: 2px 7px 2px 3px;\n\t\tborder-radius: 999px;\n\t\tbackground: rgba(255, 255, 255, 0.05);\n\t\tborder: 1px solid rgba(255, 255, 255, 0.08);\n\t}\n\t.emblem {\n\t\tposition: relative;\n\t\tdisplay: inline-grid;\n\t\tplace-items: center;\n\t\twidth: var(--s);\n\t\theight: var(--s);\n\t\tborder-radius: calc(var(--s) * 0.32);\n\t\toverflow: hidden;\n\t\tbox-shadow:\n\t\t\t0 1px 2px rgba(0, 0, 0, 0.55),\n\t\t\tinset 0 0 0 1px rgba(255, 255, 255, 0.22);\n\t}\n\t.emblem svg {\n\t\tposition: relative;\n\t\tz-index: 1;\n\t\twidth: 66%;\n\t\theight: 66%;\n\t\tcolor: #fff;\n\t\tfilter: drop-shadow(0 0.5px 0.5px rgba(0, 0, 0, 0.4));\n\t}\n\t/* glossy top sheen — the enamel-pin highlight */\n\t.gloss {\n\t\tposition: absolute;\n\t\tinset: 0;\n\t\tbackground: linear-gradient(\n\t\t\t180deg,\n\t\t\trgba(255, 255, 255, 0.42),\n\t\t\trgba(255, 255, 255, 0.08) 48%,\n\t\t\ttransparent 60%\n\t\t);\n\t\tpointer-events: none;\n\t}\n\n\t.ub--verified .emblem {\n\t\tbackground: linear-gradient(155deg, #5eb3ff 0%, #2f7fe0 55%, #1f5fb0 100%);\n\t}\n\t.ub--rater .emblem {\n\t\tbackground: linear-gradient(155deg, #3ee07a 0%, #18a350 55%, #0f7d3c 100%);\n\t}\n\t.ub--creator .emblem {\n\t\tbackground: linear-gradient(155deg, #ff7dc0 0%, #e0338f 55%, #ad1f6b 100%);\n\t}\n\t.ub--subscriber .emblem {\n\t\tbackground: linear-gradient(155deg, #ffe48a 0%, #f5b50a 52%, #c5860a 100%);\n\t}\n\t.ub--subscriber .emblem svg {\n\t\tcolor: #3a2700;\n\t}\n\t.ub--ambassador .emblem {\n\t\tbackground: linear-gradient(155deg, #a48cff 0%, #7c5cff 55%, #5a3fd6 100%);\n\t}\n\t.ub--admin .emblem {\n\t\tbackground: linear-gradient(155deg, #ff7d92 0%, #e22746 55%, #b01230 100%);\n\t}\n\t/* platinum — nothing else on the site is silver, so the crown reads as\n\t   \"won\", not \"paid\" (pro is gold). */\n\t.ub--topRater .emblem {\n\t\tbackground: linear-gradient(155deg, #ffffff 0%, #d9d9d9 45%, #8f8f8f 100%);\n\t}\n\t.ub--topRater .emblem svg {\n\t\tcolor: #111;\n\t\tfilter: none;\n\t}\n\n\t.ub-text {\n\t\tfont-family: var(--font-display, inherit);\n\t\tfont-size: 10px;\n\t\tfont-weight: 800;\n\t\tletter-spacing: 0.08em;\n\t\ttext-transform: uppercase;\n\t\tline-height: 1;\n\t\tcolor: var(--color-text, #f0f0f0);\n\t}\n</style>\n"],"version":3}