Improved bio styling and fixed penis sizes.
This commit is contained in:
		
							parent
							
								
									aed9b5bc21
								
							
						
					
					
						commit
						77ec461ff6
					
				| 
						 | 
				
			
			@ -0,0 +1,4 @@
 | 
			
		|||
<!-- Generated by IcoMoon.io -->
 | 
			
		||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
 | 
			
		||||
<path d="M12.218 16c-0.85-0-1.912-0.519-2.369-1.678-0.064-0.151-0.133-0.335-0.214-0.547-0.259-0.68-0.65-1.707-1.059-2.132-0.15-0.156-0.265-0.269-0.359-0.36-0.084-0.081-0.154-0.15-0.217-0.219-0.063 0.069-0.134 0.138-0.217 0.219-0.093 0.091-0.209 0.204-0.358 0.359-0.409 0.425-0.8 1.453-1.059 2.132-0.081 0.212-0.151 0.396-0.214 0.547-0.457 1.159-1.519 1.678-2.369 1.678-0.166 0-0.317-0.020-0.449-0.060-0.837-0.251-1.344-1.186-1.263-2.325l0.012-0.131c0.103-0.919 0.662-1.827 1.576-2.556 0.792-0.632 1.728-1.025 2.444-1.025 0.142 0 0.272 0.015 0.391 0.046l0.491-1.007c-0.505-1.263-1.223-3.149-1.785-4.801-0.313-0.921-0.545-1.675-0.69-2.241-0.23-0.897-0.215-1.2-0.122-1.379l0.269-0.52 3.345 6.858 3.345-6.858 0.269 0.52c0.093 0.179 0.107 0.483-0.122 1.379-0.145 0.566-0.377 1.321-0.69 2.241-0.562 1.652-1.28 3.538-1.785 4.801l0.491 1.007c0.119-0.031 0.25-0.046 0.391-0.046 0.715 0 1.652 0.393 2.444 1.025 0.781 0.624 1.304 1.378 1.503 2.158l0.037-0.018 0.048 0.548c0.081 1.139-0.426 2.073-1.263 2.325-0.132 0.040-0.283 0.060-0.449 0.060-0 0-0 0-0 0zM10.839 13.78c0.592 1.074 1.12 1.234 1.383 1.234 0.358 0 0.626-0.289 0.678-0.568 0.034-0.183 0.040-0.372 0.018-0.561-0.089-0.755-0.604-1.403-1.021-1.814-0.573-0.565-1.215-0.939-1.628-1.103-0.041-0.014-0.066-0.016-0.078-0.016-0.008 0-0.011 0.001-0.011 0.001-0.12 0.078-0.264 0.985 0.658 2.827zM5.723 10.968c-0.41 0.164-1.048 0.539-1.618 1.103-0.414 0.411-0.927 1.059-1.015 1.814-0.022 0.188-0.016 0.377 0.018 0.561 0.052 0.279 0.318 0.568 0.674 0.568 0.261 0 0.787-0.161 1.375-1.234 0.916-1.842 0.774-2.748 0.653-2.828 0 0-0 0-0 0s-0.004-0.001-0.010-0.001c-0.011-0-0.037 0.002-0.077 0.016z"></path>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 1.7 KiB  | 
| 
						 | 
				
			
			@ -0,0 +1,4 @@
 | 
			
		|||
<!-- Generated by IcoMoon.io -->
 | 
			
		||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
 | 
			
		||||
<path d="M4.655 0l-0.269 0.52c-0.093 0.179-0.107 0.483 0.122 1.379 0.145 0.566 0.377 1.321 0.69 2.241 0.395 1.163 0.868 2.441 1.29 3.536l0.955-1.959-2.789-5.718zM13.93 13.616l-0.048-0.548-0.037 0.018c-0.199-0.78-0.722-1.534-1.503-2.158-0.792-0.633-1.729-1.025-2.444-1.025-0.142 0-0.272 0.015-0.391 0.046l-0.491-1.007c0.505-1.263 1.224-3.149 1.785-4.801 0.313-0.921 0.545-1.675 0.69-2.241 0.23-0.897 0.215-1.2 0.122-1.379l-0.269-0.52-4.852 9.948c-0.119-0.031-0.25-0.046-0.391-0.046-0.715 0-1.652 0.393-2.444 1.025-0.914 0.73-1.473 1.638-1.576 2.556l-0.012 0.131c-0.081 1.139 0.426 2.073 1.263 2.325 0.132 0.040 0.283 0.060 0.449 0.060 0.85 0 1.912-0.519 2.369-1.678 0.064-0.151 0.133-0.335 0.214-0.547 0.259-0.68 0.65-1.707 1.059-2.132 0.15-0.156 0.265-0.269 0.358-0.359 0.084-0.082 0.154-0.15 0.217-0.219 0.063 0.069 0.134 0.138 0.217 0.219 0.093 0.091 0.209 0.204 0.359 0.36 0.409 0.425 0.8 1.453 1.059 2.132 0.081 0.212 0.151 0.396 0.214 0.547 0.457 1.159 1.519 1.678 2.369 1.678 0 0 0 0 0 0 0.166 0 0.317-0.020 0.449-0.060 0.837-0.252 1.344-1.186 1.263-2.325zM5.157 13.78c-0.588 1.073-1.114 1.234-1.375 1.234-0.356 0-0.622-0.289-0.674-0.568-0.034-0.184-0.040-0.373-0.018-0.561 0.088-0.755 0.6-1.403 1.015-1.814 0.569-0.565 1.208-0.939 1.618-1.103 0.041-0.014 0.066-0.016 0.077-0.016 0.006 0 0.009 0.001 0.010 0.001s0 0 0-0c0.121 0.080 0.263 0.986-0.653 2.828zM12.9 14.446c-0.052 0.279-0.32 0.568-0.678 0.568-0.263 0-0.791-0.161-1.383-1.234-0.922-1.842-0.778-2.749-0.658-2.827 0 0 0.003-0.001 0.011-0.001 0.011 0 0.037 0.002 0.078 0.016 0.412 0.164 1.055 0.539 1.628 1.103 0.417 0.411 0.933 1.059 1.021 1.814 0.022 0.189 0.016 0.378-0.018 0.561z"></path>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 1.8 KiB  | 
| 
						 | 
				
			
			@ -197,20 +197,20 @@
 | 
			
		|||
 | 
			
		||||
				<span>
 | 
			
		||||
					<Icon
 | 
			
		||||
						v-if="actor.circumcised"
 | 
			
		||||
						v-if="actor.isCircumcised"
 | 
			
		||||
						:title="'Circumcised'"
 | 
			
		||||
						icon="page-break"
 | 
			
		||||
						icon="pagebreak"
 | 
			
		||||
						class="circumcised"
 | 
			
		||||
					/>
 | 
			
		||||
 | 
			
		||||
					<template v-if="actor.penisLengthMetric && actor.penisGirthMetric">
 | 
			
		||||
						<span>{{ actor.penisLengthMetric }} * {{ actor.penisGirthMetric }} cm</span>
 | 
			
		||||
						<span class="bio-segment">{{ actor.penisLengthImperial }}" * {{ actor.penisGirthImperial }}"</span>
 | 
			
		||||
					<template v-if="actor.penisLength && actor.penisGirth">
 | 
			
		||||
						<span>{{ actor.penisLength.imperial }}" × {{ actor.penisLength.imperial }}"</span>
 | 
			
		||||
						<span class="bio-segment">{{ actor.penisLength.metric }} × {{ actor.penisGirth.metric }} cm</span>
 | 
			
		||||
					</template>
 | 
			
		||||
 | 
			
		||||
					<template v-else-if="actor.penisLengthMetric">
 | 
			
		||||
						<span>{{ actor.penisLengthMetric }} cm</span>
 | 
			
		||||
						<span class="bio-segment">{{ actor.penisLengthImperial }}"</span>
 | 
			
		||||
					<template v-else-if="actor.penisLength">
 | 
			
		||||
						<span>{{ actor.penisLength.imperial }}"</span>
 | 
			
		||||
						<span class="bio-segment">{{ actor.penisLength.metric }} cm</span>
 | 
			
		||||
					</template>
 | 
			
		||||
				</span>
 | 
			
		||||
			</li>
 | 
			
		||||
| 
						 | 
				
			
			@ -439,7 +439,7 @@ const descriptions = Object.values(Object.fromEntries(props.actor.profiles
 | 
			
		|||
 | 
			
		||||
	.icon {
 | 
			
		||||
		width: 1.25rem;
 | 
			
		||||
		height: 1.25rem;
 | 
			
		||||
		height: auto;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
| 
						 | 
				
			
			@ -527,6 +527,10 @@ const descriptions = Object.values(Object.fromEntries(props.actor.profiles
 | 
			
		|||
    &:not(:last-of-type) {
 | 
			
		||||
        border-bottom: solid 1px var(--highlight-weak-40);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
	.icon {
 | 
			
		||||
		height: auto; /* prevents jumping */
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.bio-label,
 | 
			
		||||
| 
						 | 
				
			
			@ -562,6 +566,7 @@ const descriptions = Object.values(Object.fromEntries(props.actor.profiles
 | 
			
		|||
.flag {
 | 
			
		||||
    height: 1rem;
 | 
			
		||||
    margin: .25rem .5rem 0 0;
 | 
			
		||||
	border-radius: 3px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.bio-name {
 | 
			
		||||
| 
						 | 
				
			
			@ -604,7 +609,7 @@ const descriptions = Object.values(Object.fromEntries(props.actor.profiles
 | 
			
		|||
.penis-length-imperial,
 | 
			
		||||
.bio-segment {
 | 
			
		||||
    padding: 0 0 0 .5rem;
 | 
			
		||||
    border-left: solid 1px var(--highlight-weak);
 | 
			
		||||
    border-left: solid 1px var(--highlight-weak-20);
 | 
			
		||||
    margin: 0 0 0 .5rem;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -612,6 +617,8 @@ const descriptions = Object.values(Object.fromEntries(props.actor.profiles
 | 
			
		|||
.circumcised.icon {
 | 
			
		||||
    fill: var(--primary);
 | 
			
		||||
    padding: 0 .5rem;
 | 
			
		||||
	margin-right: .25rem;
 | 
			
		||||
	transform: translateY(2px);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.enhanced.icon {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -209,7 +209,7 @@ async function reloadStashes(newStash) {
 | 
			
		|||
 | 
			
		||||
	.icon {
 | 
			
		||||
		width: 1.5rem;
 | 
			
		||||
		height: 1.5rem;
 | 
			
		||||
		height: auto; /* prevents jumping */
 | 
			
		||||
		padding: .5rem .5rem;
 | 
			
		||||
		fill: var(--glass);
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -141,6 +141,48 @@
 | 
			
		|||
							>{{ option?.label || option }}</option>
 | 
			
		||||
						</select>
 | 
			
		||||
 | 
			
		||||
						<div
 | 
			
		||||
							v-if="item.type === 'size'"
 | 
			
		||||
							class="figure size"
 | 
			
		||||
						>
 | 
			
		||||
							<div class="value-section">
 | 
			
		||||
								<span class="value-label">Units</span>
 | 
			
		||||
 | 
			
		||||
								<select
 | 
			
		||||
									v-model="sizeUnits"
 | 
			
		||||
									class="input"
 | 
			
		||||
									:disabled="!editing.has(item.key)"
 | 
			
		||||
								>
 | 
			
		||||
									<option value="imperial">Imperial</option>
 | 
			
		||||
									<option value="metric">Metric</option>
 | 
			
		||||
								</select>
 | 
			
		||||
							</div>
 | 
			
		||||
 | 
			
		||||
							<span class="figure-bust">
 | 
			
		||||
								<div class="value-section">
 | 
			
		||||
									<span class="value-label">Bust</span>
 | 
			
		||||
 | 
			
		||||
									<select
 | 
			
		||||
										v-model="edits[item.key].bust"
 | 
			
		||||
										class="select input"
 | 
			
		||||
										placeholder="Bust"
 | 
			
		||||
										:disabled="!editing.has(item.key)"
 | 
			
		||||
									>
 | 
			
		||||
										<option
 | 
			
		||||
											:key="`${item.key}-bust-unknown`"
 | 
			
		||||
											:value="null"
 | 
			
		||||
										/>
 | 
			
		||||
 | 
			
		||||
										<option
 | 
			
		||||
											v-for="bust in bustSizes[figureUnits]"
 | 
			
		||||
											:key="`${item.key}-bust-${bust}`"
 | 
			
		||||
											:value="Array.isArray(bust) ? bust[0] : bust"
 | 
			
		||||
										>{{ Array.isArray(bust) ? bust.join('/') : bust }}</option>
 | 
			
		||||
									</select>
 | 
			
		||||
								</div>
 | 
			
		||||
							</span>
 | 
			
		||||
						</div>
 | 
			
		||||
 | 
			
		||||
						<div
 | 
			
		||||
							v-if="item.type === 'place'"
 | 
			
		||||
							class="place"
 | 
			
		||||
| 
						 | 
				
			
			@ -755,18 +797,12 @@ const fields = computed(() => [
 | 
			
		|||
		},
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		key: 'height',
 | 
			
		||||
		type: 'number',
 | 
			
		||||
		value: actor.value.height?.metric,
 | 
			
		||||
		unit: 'cm',
 | 
			
		||||
		inline: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		key: 'weight',
 | 
			
		||||
		type: 'number',
 | 
			
		||||
		value: actor.value.weight?.metric,
 | 
			
		||||
		unit: 'kg',
 | 
			
		||||
		inline: true,
 | 
			
		||||
		key: 'size',
 | 
			
		||||
		type: 'size',
 | 
			
		||||
		value: {
 | 
			
		||||
			height: actor.value.height?.metric,
 | 
			
		||||
			weight: actor.value.weight?.metric,
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		key: 'figure',
 | 
			
		||||
| 
						 | 
				
			
			@ -866,8 +902,8 @@ const fields = computed(() => [
 | 
			
		|||
		key: 'penis',
 | 
			
		||||
		type: 'penis',
 | 
			
		||||
		value: {
 | 
			
		||||
			penisLength: actor.value.penisLength,
 | 
			
		||||
			penisGirth: actor.value.penisGirth,
 | 
			
		||||
			penisLength: actor.value.penisLength.imperial,
 | 
			
		||||
			penisGirth: actor.value.penisGirth.imperial,
 | 
			
		||||
			isCircumcised: actor.value.isCircumcised,
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -887,6 +923,7 @@ const comment = ref(null);
 | 
			
		|||
const apply = ref(user.role !== 'user');
 | 
			
		||||
const submitted = ref(false);
 | 
			
		||||
 | 
			
		||||
const sizeUnits = ref('metric');
 | 
			
		||||
const figureUnits = ref('us');
 | 
			
		||||
const penisUnits = ref('imperial');
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -49,6 +49,7 @@ const keyMap = {
 | 
			
		|||
	penisGirth: 'penis_girth',
 | 
			
		||||
	hasTattoos: 'has_tattoos',
 | 
			
		||||
	hasPiercings: 'has_piercings',
 | 
			
		||||
	isCircumcised: 'circumcised',
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export function curateActor(actor, context = {}) {
 | 
			
		||||
| 
						 | 
				
			
			@ -65,7 +66,6 @@ export function curateActor(actor, context = {}) {
 | 
			
		|||
		cup: actor.cup,
 | 
			
		||||
		waist: actor.waist,
 | 
			
		||||
		hip: actor.hip,
 | 
			
		||||
		circumcised: actor.circumcised,
 | 
			
		||||
		height: actor.height && {
 | 
			
		||||
			metric: actor.height,
 | 
			
		||||
			imperial: unit(actor.height, 'cm').splitUnit(['ft', 'in']).map((value) => Math.round(value.toNumber())),
 | 
			
		||||
| 
						 | 
				
			
			@ -74,6 +74,14 @@ export function curateActor(actor, context = {}) {
 | 
			
		|||
			metric: actor.weight,
 | 
			
		||||
			imperial: Math.round(unit(actor.weight, 'kg').toNumeric('lbs')),
 | 
			
		||||
		},
 | 
			
		||||
		penisLength: actor.penis_length && {
 | 
			
		||||
			metric: actor.penis_length,
 | 
			
		||||
			imperial: Math.round(unit(actor.penis_length, 'cm').toNumeric('in')),
 | 
			
		||||
		},
 | 
			
		||||
		penisGirth: actor.penis_girth && {
 | 
			
		||||
			metric: actor.penis_girth,
 | 
			
		||||
			imperial: Math.round(unit(actor.penis_girth, 'cm').toNumeric('in')),
 | 
			
		||||
		},
 | 
			
		||||
		eyes: actor.eyes,
 | 
			
		||||
		tattoos: actor.tattoos,
 | 
			
		||||
		piercings: actor.piercings,
 | 
			
		||||
| 
						 | 
				
			
			@ -812,6 +820,16 @@ export async function createActorRevision(actorId, {
 | 
			
		|||
			};
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (['penisLength', 'penisGirth'].includes(key) && options.penisUnits === 'imperial') {
 | 
			
		||||
			const convertedValue = Math.round(convert(value, 'inches').to('cm'));
 | 
			
		||||
 | 
			
		||||
			return {
 | 
			
		||||
				key,
 | 
			
		||||
				value: convertedValue,
 | 
			
		||||
				comment: `${key} converted from ${value} inches to ${convertedValue} cm`,
 | 
			
		||||
			};
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return { key, value };
 | 
			
		||||
	}).filter(Boolean);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue