diff --git a/assets/img/icons/scissors.svg b/assets/img/icons/scissors.svg
new file mode 100755
index 0000000..601ed1c
--- /dev/null
+++ b/assets/img/icons/scissors.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/assets/img/icons/scissors2.svg b/assets/img/icons/scissors2.svg
new file mode 100755
index 0000000..8a297d1
--- /dev/null
+++ b/assets/img/icons/scissors2.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/components/actors/bio.vue b/components/actors/bio.vue
index 6736f60..3a5bd3c 100644
--- a/components/actors/bio.vue
+++ b/components/actors/bio.vue
@@ -197,20 +197,20 @@
-
- {{ actor.penisLengthMetric }} * {{ actor.penisGirthMetric }} cm
- {{ actor.penisLengthImperial }}" * {{ actor.penisGirthImperial }}"
+
+ {{ actor.penisLength.imperial }}" × {{ actor.penisLength.imperial }}"
+ {{ actor.penisLength.metric }} × {{ actor.penisGirth.metric }} cm
-
- {{ actor.penisLengthMetric }} cm
- {{ actor.penisLengthImperial }}"
+
+ {{ actor.penisLength.imperial }}"
+ {{ actor.penisLength.metric }} cm
@@ -439,7 +439,7 @@ const descriptions = Object.values(Object.fromEntries(props.actor.profiles
.icon {
width: 1.25rem;
- height: 1.25rem;
+ height: auto;
}
}
@@ -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 {
diff --git a/components/stashes/heart.vue b/components/stashes/heart.vue
index 05ed658..9b8b356 100644
--- a/components/stashes/heart.vue
+++ b/components/stashes/heart.vue
@@ -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);
}
diff --git a/pages/actors/@actorId/edit/+Page.vue b/pages/actors/@actorId/edit/+Page.vue
index b160542..31167b1 100644
--- a/pages/actors/@actorId/edit/+Page.vue
+++ b/pages/actors/@actorId/edit/+Page.vue
@@ -141,6 +141,48 @@
>{{ option?.label || option }}
+
+
[
},
},
{
- 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');
diff --git a/src/actors.js b/src/actors.js
index 5964f35..cce41a1 100644
--- a/src/actors.js
+++ b/src/actors.js
@@ -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);