diff --git a/config/software/designs.json b/config/software/designs.json index 3c1d790ee60..e220d1e72cd 100644 --- a/config/software/designs.json +++ b/config/software/designs.json @@ -834,6 +834,21 @@ "lining" ] }, + "tristan": { + "code": "Wouter van Wageningen", + "description": "A FreeSewing pattern for a fitted top with prince(ss) seams", + "design": "Natalia Sayang", + "difficulty": 3, + "lab": true, + "org": true, + "tags": [ + "tops" + ], + "techniques": [ + "curvedSeam", + "precision" + ] + }, "uma": { "code": "Joost De Cock", "description": "A FreeSewing pattern for a basic, highly-customizable underwear pattern", diff --git a/designs/noble/i18n/en.json b/designs/noble/i18n/en.json index 8ced1a99810..1226ebf3dcd 100644 --- a/designs/noble/i18n/en.json +++ b/designs/noble/i18n/en.json @@ -37,6 +37,10 @@ "t": "Bust span ease", "d": "Controls the amount of ease along the bust span" }, + "waistdartposition": { + "t": "Waist dart position", + "d": "Controls the position of the waist 'dart', moving it to the center (negative) or side (positive)" + }, "backDartHeight": { "t": "Controls the height of the back dart", "d": "Back dart height" diff --git a/designs/noble/src/backpoints.mjs b/designs/noble/src/backpoints.mjs index f4fdf616e2a..b3cadc3369e 100644 --- a/designs/noble/src/backpoints.mjs +++ b/designs/noble/src/backpoints.mjs @@ -24,7 +24,6 @@ export const backPoints = { const aDown = points.dartBottomRight.angle(points.dartTip) const aDiff = Math.abs(aUp - aDown) - // let dartCpAdjustment = Math.abs( options.shoulderDartPosition -.5) +.05 const dartCpAdjustment = aDiff / 50 points.shoulderDartCpUp = points.shoulderDart.shiftFractionTowards( @@ -48,7 +47,7 @@ export const backPoints = { let diff = 0 let angle = 0 do { - if (length.o) angle = diff * (length.o > length.i ? -0.1 : 0.1) + if (length.o) angle = (diff / (length.i / 1300)) * (length.o > length.i ? -0.1 : 0.1) points.dartBottomRight = points.dartBottomRight.rotate(angle, points.waistSide) diff --git a/designs/noble/src/frontpoints.mjs b/designs/noble/src/frontpoints.mjs index d7cc8195f7c..5d02fdf988a 100644 --- a/designs/noble/src/frontpoints.mjs +++ b/designs/noble/src/frontpoints.mjs @@ -1,15 +1,78 @@ import { frontSideDart as bellaFront } from '@freesewing/bella' -import { hidePresets } from '@freesewing/core' +import { cbqc, hidePresets } from '@freesewing/core' import * as options from './options.mjs' +const createRightDartPoints = (points, Path, diff, utils) => { + const radius = points.waistDartRight.dist(points.sideHemInitial) + + points.waistDartRight = points.waistDartRight.rotate( + utils.rad2deg(Math.atan(diff / radius)), + points.sideHemInitial + ) + + let outsideSeam = new Path() + .move(points.waistDartRight) + .curve(points.bustAcp, points.shoulderDartTipCpDownOutside, points.shoulderDartOutside) + + points.waistUpDartRight = outsideSeam.shiftAlong( + points.waistDartRight.dist(points.waistDartRightCp) * 0.5 + ) + points.waistUpDartRightCpDown = points.waistUpDartRight.shiftFractionTowards( + points.waistDartRight, + 0.25 + ) + points.waistUpDartRightCpUp = points.waistUpDartRight.shiftFractionTowards( + points.waistDartRight, + -0.6 + ) + points.waistCpUp = points.waistDartRight + .shiftTowards(points.sideHemInitial, points.waistDartRight.dist(points.waistUpDartRight) * 0.25) + .rotate(90, points.waistDartRight) + points.waistCircleInsideCp1 = points.armholeDartTip.shiftTowards( + points.armholeDartTipCpDownInside, + -0.5 * cbqc * points.armholeDartInside.dist(points.armholeDartTip) + ) + + return new Path() + .move(points.waistDartRight) + .curve(points.waistCpUp, points.waistUpDartRightCpDown, points.waistUpDartRight) + .curve( + points.waistUpDartRightCpUp, + points.shoulderDartTipCpDownOutside, + points.shoulderDartOutside + ) + .length() +} + +const createArmholeDartPoints = (points, paths, Path, direction) => { + const dist = points.armholeDartTipInside.dist(points.armholeDartTipCpDownInside) + points.waistCircleOutsideCp1 = points.waistCircleOutsideCp1.shiftTowards( + points.waistUpDartRight, + direction + ) + points.armholeDartTipCpDownInside = points.waistCircleInsideCp1.shiftOutwards( + points.armholeDartTipInside, + dist + ) + + paths.armholeTempCircleOutside = new Path() + .move(points.armholeDartOutside) + .curve(points.armholeCircleOutsideCp1, points.waistCircleOutsideCp1, points.waistUpDartRight) + .curve(points.waistUpDartRightCpDown, points.waistCpUp, points.waistDartRight) + .hide() + paths.armholeTempCircleInside = new Path() + .move(points.armholeDartInside) + .curve(points.armholeCircleInsideCp1, points.waistCircleInsideCp1, points.armholeDartTipInside) + .curve(points.armholeDartTipCpDownInside, points.waistDartLeftCp, points.waistDartLeft) + .hide() +} + export const frontPoints = { name: 'noble.frontPoints', from: bellaFront, hide: hidePresets.HIDE_ALL, options, - draft: ({ log, points, Path, paths, snippets, options, macro, part }) => { - const bCircle = 0.552284749831 - + draft: ({ log, points, Path, paths, snippets, options, macro, part, utils }) => { // Hide Bella paths for (const key of Object.keys(paths)) paths[key].hide() for (const i in snippets) delete snippets[i] @@ -18,6 +81,13 @@ export const frontPoints = { macro('rmtitle') macro('rmscalebox') + const waistDartSize = points.waistDartLeft.dist(points.waistDartRight) + const waistDartMove = (waistDartSize / 2) * options.waistdartposition + + points.waistDartLeft = points.waistDartLeft.shiftTowards(points.cfHem, waistDartMove * -1) + points.waistDartLeftCp = points.waistDartLeftCp.shift(0, waistDartMove) + points.waistDartRight = points.waistDartRight.shiftTowards(points.sideHemInitial, waistDartMove) + points.shoulderDartInside = points.hps.shiftFractionTowards( points.shoulder, options.dartPosition == 'shoulder' ? options.shoulderDartPosition : 0.5 @@ -54,7 +124,7 @@ export const frontPoints = { points.armholeCircleInsideCp1 = points.armholeDartInside.shift( armholeDartAngle, - bCircle * points.armholeDartInside.dist(points.armholeDartTip) + cbqc * points.armholeDartInside.dist(points.armholeDartTip) ) points.armholeCircleOutsideCp1 = points.armholeCircleInsideCp1.clone() @@ -176,14 +246,12 @@ export const frontPoints = { points.bust, 1 + (1 - options.upperDartLength) + (1 - options.waistDartLength) * dartRatio ) - // points.shoulderDartTipCpDownOutside = points.shoulderDartTipCpDownOutside.rotate( options.dartOutsideCP *10, points.shoulderDartOutside ) points.shoulderDartTipCpDownInside = points.shoulderDartInside.shiftFractionTowards( points.shoulderDartTip, 1 + (1 - options.upperDartLength) + (1 - options.waistDartLength) * dartRatio ) points.armholeDartTipCpDownInside = points.armholeDartTip.shiftFractionTowards( - // points.waistDartHem, points.waistDartLeft, 1 - options.upperDartLength + (1 - options.waistDartLength) * dartRatio ) @@ -219,7 +287,7 @@ export const frontPoints = { ) points.waistCircleInsideCp1 = points.waistUpDartLeft.shiftTowards( points.waistDartLeft, - -0.5 * bCircle * points.armholeDartOutside.dist(points.armholeDartTip) + -0.5 * cbqc * points.armholeDartOutside.dist(points.armholeDartTip) ) points.shoulderDartTipCpDownOutside = points.shoulderDartTipCpDownOutside .rotate(-2.5, points.shoulderDartOutside) @@ -227,102 +295,37 @@ export const frontPoints = { let iteration = 1 let diff = 0 + + let rightDartLength = createRightDartPoints(points, Path, diff, utils) do { - points.waistDartRight = points.waistDartRight.rotate(diff * 0.1, points.sideHemInitial) + rightDartLength = createRightDartPoints(points, Path, diff, utils) - let outsideSeam = new Path() - .move(points.waistDartRight) - .curve(points.bustAcp, points.shoulderDartTipCpDownOutside, points.shoulderDartOutside) - - points.waistUpDartRight = outsideSeam.shiftAlong( - points.waistDartRight.dist(points.waistDartRightCp) * 0.5 - ) - points.waistUpDartRightCpDown = points.waistUpDartRight.shiftFractionTowards( - points.waistDartRight, - 0.25 - ) - // points.waistUpDartRightCpUp = points.waistUpDartRight.shiftFractionTowards( points.waistDartRight, -.25 ) - points.waistUpDartRightCpUp = points.waistUpDartRight.shiftFractionTowards( - points.waistDartRight, - -0.6 - ) - points.waistCpUp = points.waistDartRight - .shiftTowards( - points.sideHemInitial, - points.waistDartRight.dist(points.waistUpDartRight) * 0.25 - ) - .rotate(90, points.waistDartRight) - points.waistCircleInsideCp1 = points.armholeDartTip.shiftTowards( - points.armholeDartTipCpDownInside, - -0.5 * bCircle * points.armholeDartInside.dist(points.armholeDartTip) - ) - - outsideSeam = new Path() - .move(points.waistDartRight) - .curve(points.waistCpUp, points.waistUpDartRightCpDown, points.waistUpDartRight) - .curve( - points.waistUpDartRightCpUp, - points.shoulderDartTipCpDownOutside, - points.shoulderDartOutside - ) - - diff = shoulderInsideSeam.length() - outsideSeam.length() + diff = shoulderInsideSeam.length() - rightDartLength iteration++ - } while ((diff > 1 || diff < -1) && iteration < 200) - if (iteration >= 200) { + } while ((diff > 1 || diff < -1) && iteration < 100) + + if (iteration >= 100) { log.error('Something is not quite right here!') } points.waistDartRightCp = points.bustAcp.clone() points.armholeDartTipInside = points.armholeDartTip.clone() points.waistCircleOutsideCp1 = points.waistUpDartRight.shiftTowards( points.waistDartRight, - -1 * bCircle * points.armholeDartOutside.dist(points.armholeDartTip) + -1 * cbqc * points.armholeDartOutside.dist(points.armholeDartTip) ) - diff = 0 + createArmholeDartPoints(points, paths, Path, 0) + diff = paths.armholeTempCircleOutside.length() - paths.armholeTempCircleInside.length() + iteration = 0 do { - const dist = points.armholeDartTipInside.dist(points.armholeDartTipCpDownInside) - if (points.armholeDartTipInside.x > points.waistCircleOutsideCp1) { - points.armholeDartTipInside.x = points.armholeDartTipInside.x - 0.5 - points.armholeDartTipInside.y = points.armholeDartTipInside.y + 0.5 - } else { - points.waistCircleOutsideCp1 = points.waistCircleOutsideCp1.shiftTowards( - points.waistUpDartRight, - diff > 0 ? 1 : -1 - ) - } - points.armholeDartTipCpDownInside = points.waistCircleInsideCp1.shiftOutwards( - points.armholeDartTipInside, - dist - ) - - paths.armholeTempCircleOutside = new Path() - .move(points.armholeDartOutside) - .curve( - points.armholeCircleOutsideCp1, - points.waistCircleOutsideCp1, - points.waistUpDartRight - ) - .curve(points.waistUpDartRightCpDown, points.waistCpUp, points.waistDartRight) - .hide() - .attr('class', 'lining') - paths.armholeTempCircleInside = new Path() - .move(points.armholeDartInside) - .curve( - points.armholeCircleInsideCp1, - points.waistCircleInsideCp1, - points.armholeDartTipInside - ) - .curve(points.armholeDartTipCpDownInside, points.waistDartLeftCp, points.waistDartLeft) - .hide() - .attr('class', 'lining') + createArmholeDartPoints(points, paths, Path, diff) diff = paths.armholeTempCircleOutside.length() - paths.armholeTempCircleInside.length() iteration++ - } while ((diff < -1 || diff > 1) && iteration < 200) - if (iteration >= 200) { - log.error('Something is not quite right here!') + } while ((diff < -1 || diff > 1) && iteration < 100) + if (iteration >= 100) { + log.error('Something is not quite right here too!') } return part diff --git a/designs/noble/src/options.mjs b/designs/noble/src/options.mjs index 8e6357e87cb..012fea26ae8 100644 --- a/designs/noble/src/options.mjs +++ b/designs/noble/src/options.mjs @@ -9,6 +9,7 @@ export const bustSpanEase = { pct: 0, min: -5, max: 20, ...pctBasedOn('bustSpan' export const backHemSlope = { deg: 2.5, min: 0, max: 5, menu: 'advanced' } export const upperDartLength = { pct: 90, min: 80, max: 95, menu: 'darts' } export const dartPosition = { dflt: 'shoulder', list: ['shoulder', 'armhole'], menu: 'darts' } +export const waistdartposition = { pct: 0, min: -100, max: 100, menu: 'darts' } export const shoulderDartPosition = { pct: 50, min: 10, diff --git a/designs/tristan/CHANGELOG.md b/designs/tristan/CHANGELOG.md new file mode 100644 index 00000000000..83acfea0b8e --- /dev/null +++ b/designs/tristan/CHANGELOG.md @@ -0,0 +1,17 @@ +# Change log for: @freesewing/tristan + + +## 3.0.0 (2022-09-30) + +### Changed + + - All FreeSewing pacakges are now ESM only. + - All FreeSewing pacakges now use named exports. + - Dropped support for NodeJS 14. NodeJS 18 (LTS/hydrogen) or more recent is now required. + + +This is the **initial release**, and the start of this change log. + +> Prior to version 2, FreeSewing was not a JavaScript project. +> As such, that history is out of scope for this change log. + diff --git a/designs/tristan/README.md b/designs/tristan/README.md new file mode 100644 index 00000000000..133db2d0023 --- /dev/null +++ b/designs/tristan/README.md @@ -0,0 +1,143 @@ +![FreeSewing](https://static.freesewing.org/banner.png) +

@freesewing/tristan on NPM + License: MIT + Code quality on DeepScan + Open issues tagged pkg:tristan + All Contributors +

Follow @freesewing_org on Twitter + Chat with us on Discord + Become a FreeSewing Patron + Follow @freesewing_org on Twitter +

+ +# @freesewing/tristan + +A FreeSewing pattern for a fitted top + + + + +## What am I looking at? 🤔 + +This repository is the FreeSewing *monorepo* holding all FreeSewing's websites, documentation, designs, plugins, and other NPM packages. + +This folder holds: @freesewing/tristan + +If you're not entirely sure what to do or how to start, type this command: + +``` +npm run tips +``` + +> If you don't want to set up a dev environment, you can run it in your browser: +> +> [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freesewing/freesewing) +> +> We recommend that you fork our repository and then +> put `gitpod.io/# to start up a browser-based dev environment of your own. + +## About FreeSewing 💀 + +Where the world of makers and developers collide, that's where you'll find FreeSewing. + +If you're a maker, checkout [freesewing.org](https://freesewing.org/) where you can generate +sewing patterns adapted to your measurements. + +If you're a developer, the FreeSewing documentation lives at [freesewing.dev](https://freesewing.dev/). +The FreeSewing [core library](https://freesewing.dev/reference/api/) is a *batteries-included* toolbox +for parametric design of sewing patterns. But FreeSewing also provides a range +of [plugins](https://freesewing.dev/reference/plugins/) that further extend the +functionality of the platform. + +If you have NodeJS installed, you can try it right now by running: + +```bash +npx create-freesewing-pattern +``` + +Getting started guides are available for: +- [Linux](https://freesewing.dev/tutorials/getting-started-linux/) +- [MacOS](https://freesewing.dev/tutorials/getting-started-mac/) +- [Windows](https://freesewing.dev/tutorials/getting-started-windows/) + +The [pattern design tutorial](https://freesewing.dev/tutorials/pattern-design/) will +show you how to create your first parametric design. + +## Support FreeSewing: Become a patron 🥰 + +FreeSewing is an open source project maintained by Joost De Cock and financially supported by the FreeSewing patrons. + +If you feel FreeSewing is worthwhile, and you can spend a few coind without +hardship, then you should [join us and become a patron](https://freesewing.org/community/join). + +## Links 👩‍💻 + +**Official channels** + + - 💻 Makers website: [FreeSewing.org](https://freesewing.org) + - 💻 Developers website: [FreeSewing.dev](https://freesewing.dev) + - ✅ [Support](https://github.com/freesewing/freesewing/issues/new/choose), + [Issues](https://github.com/freesewing/freesewing/issues) & + [Discussions](https://github.com/freesewing/freesewing/discussions) on + [GitHub](https://github.com/freesewing/freesewing) + +**Social media** + + - 🐦 Twitter: [@freesewing_org](https://twitter.com/freesewing_org) + - 📷 Instagram: [@freesewing_org](https://instagram.com/freesewing_org) + +**Places the FreeSewing community hangs out** + + - 💬 [Discord](https://discord.freesewing.org/) + - 💬 [Facebook](https://www.facebook.com/groups/627769821272714/) + - 💬 [Reddit](https://www.reddit.com/r/freesewing/) + +## License: MIT 🤓 + +© [Joost De Cock](https://github.com/joostdecock). +See [the license file](https://github.com/freesewing/freesewing/blob/develop/LICENSE) for details. + +## Where to get help 🤯 + +For [Support](https://github.com/freesewing/freesewing/issues/new/choose), +please use the [Issues](https://github.com/freesewing/freesewing/issues) & +[Discussions](https://github.com/freesewing/freesewing/discussions) on +[GitHub](https://github.com/freesewing/freesewing). + diff --git a/designs/tristan/build.mjs b/designs/tristan/build.mjs new file mode 100644 index 00000000000..99ace216bc8 --- /dev/null +++ b/designs/tristan/build.mjs @@ -0,0 +1,35 @@ +/* This script will build the package with esbuild */ +import esbuild from 'esbuild' +import pkg from './package.json' assert { type: 'json' } + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.mjs'], + format: 'esm', + outfile: 'dist/index.mjs', + external: ['@freesewing'], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Let esbuild generate the build +const build = async () => { + const result = await esbuild.build(options).catch(() => process.exit(1)) + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } +} +build() diff --git a/designs/tristan/data.mjs b/designs/tristan/data.mjs new file mode 100644 index 00000000000..f703aaa2bd8 --- /dev/null +++ b/designs/tristan/data.mjs @@ -0,0 +1,4 @@ +// This file is auto-generated | All changes you make will be overwritten. +export const name = '@freesewing/tristan' +export const version = '3.0.0' +export const data = { name, version } diff --git a/designs/tristan/i18n/de.json b/designs/tristan/i18n/de.json new file mode 100644 index 00000000000..079db5e0e0d --- /dev/null +++ b/designs/tristan/i18n/de.json @@ -0,0 +1,178 @@ +{ + "t": "Tristan", + "d": "Tristan is a fitted tank top with prince(ss) seams.", + "p": { + "backInside": "Back inside", + "backOutside": "Back outside", + "backPoints": "Back base", + "frontInside": "Front inside", + "frontOutside": "Front outside", + "frontPoints": "Front base", + "peplumFront": "Peplum front", + "peplumBack": "Peplum back" + }, + "s": { + "strapWidthAdjusted.t": "The strap width has been adjusted", + "strapWidthAdjusted.d": "The strap width has been adjusted to {{{ width }}} to allow for the position of the strap on the shoulder.", + "peplumWidth.t": "Peplum size", + "peplumWidth.d": "The peplum will be {{{ peplumWidth }}} long.", + "frontOutside": "Outside front", + "frontInside": "Inside front", + "backOutside": "Outside back", + "backInside": "Inside back", + "frontPeplum": "Peplum front", + "backPeplum": "Peplum back", + "hem": "Hem" + }, + "o": { + "bustSpanEase": { + "t": "Bust span ease", + "d": "Controls the amount of ease along the bust span" + }, + "chestEase": { + "t": "Chest ease", + "d": "Controls the amount of ease at the chest" + }, + "shoulderToShoulderEase": { + "t": "Shoulder to shoulder ease", + "d": "Controls the amount of ease along the shoulder to shoulder measurement" + }, + "fullChestEaseReduction": { + "t": "Full chest ease reduction", + "d": "Allows you to independently reduce the ease around the chest to make it fit tight(er) in that area" + }, + "waistEase": { + "t": "Waist ease", + "d": "Controls the amount of ease at the waist" + }, + "waistdartposition": { + "t": "Waist dart position", + "d": "Controls the position of the waist 'dart', moving it to the center (negative) or side (positive)" + }, + "frontShoulderWidth": { + "t": "Front shoulder width", + "d": "Controls how much width is added to the shoulder in the front" + }, + "highBustWidth": { + "t": "High bust width", + "d": "Controls the width of the high bust" + }, + "armholeDepth": { + "t": "Depth of the Armhole", + "d": "Controls how deep the armhole is" + }, + "cutDepthBack": { + "t": "Depth of the cut in the back", + "d": "Controls the depth of the cut in the back" + }, + "cutDepthFront": { + "t": "Depth of the cut in the front", + "d": "Controls the depth of the cut in the front" + }, + "cutRoundnessBack": { + "t": "Roundness of the cut in the back", + "d": "Controls how 'round' the cut in the back is, from V to round to square" + }, + "cutRoundnessFront": { + "t": "Roundness of the cut in the front", + "d": "Controls how 'round' the cut in the front is, from V to round to square" + }, + "shoulderDartPosition": { + "t": "Shoulder dart position", + "d": "Controls the position of the shoulder dart" + }, + "strapWidth": { + "t": "Width of the straps", + "d": "Controls the width of the straps" + }, + "upperDartLength": { + "t": "Upper dart length", + "d": "Controls the length of the upper dart" + }, + "waistDartLength": { + "t": "Waist dart length", + "d": "Controls the length of the waist dart" + }, + "zipperLocation": { + "t": "Zipper location", + "d": "The location of the zipper: side, back, or front" + }, + "zipperLocation.front": { + "t": "Front zipper location", + "d": "The location of the zipper will be in the front" + }, + "zipperLocation.side": { + "t": "Side zipper location", + "d": "The location of the zipper will be on the side" + }, + "zipperLocation.back": { + "t": "Back zipper location", + "d": "The location of the zipper will be in the back" + }, + "hem": { + "t": "Hem option", + "d": "Add a hem." + }, + "hemYes": { + "t": "Add a hem", + "d": "Add a hem at the waist" + }, + "hemNo": { + "t": "Do not add a hem", + "d": "Do not add a hem at the waist" + }, + "hemSize": { + "t": "Size of the hem", + "d": "Size of the hem, a percentage of the distance between the neckline and the waist" + }, + "lacing": { + "t": "Lacing option", + "d": "This removes part of the seam to create an opening for lacing" + }, + "lacingYes": { + "t": "Add Lacing", + "d": "Remove part of the seam to create an opening for lacing" + }, + "lacingNo": { + "t": "No lacing", + "d": "Close the seams normally" + }, + "lacingLocation": { + "t": "Location of the lacing", + "d": "Lacing in the front, or the back" + }, + "lacingLocation.back": { + "t": "Lacing in the back", + "d": "The lacing will be in the back" + }, + "lacingLocation.front": { + "t": "Lacing in the front", + "d": "The lacing will be in the front" + }, + "lacingWidth": { + "t": "Lacing width", + "d": "Width of the lacing opening" + }, + "peplum": { + "t": "Peplum", + "d": "Add a peplum" + }, + "peplumYes": { + "t": "Add a peplum", + "d": "This will generate the peplum part." + }, + "peplumNo": { + "t": "No peplum", + "d": "Pattern will be generated without a peplum" + }, + "peplumSize": { + "t": "Peplum size", + "d": "Controls the size of the peplum" + }, + "peplumFullness": { + "t": "Peplum fullness", + "d": "Controls the 'fullness' of the peplum. Basically from a half-circle to a full-circle." + } + + } +} diff --git a/designs/tristan/i18n/en.json b/designs/tristan/i18n/en.json new file mode 100644 index 00000000000..079db5e0e0d --- /dev/null +++ b/designs/tristan/i18n/en.json @@ -0,0 +1,178 @@ +{ + "t": "Tristan", + "d": "Tristan is a fitted tank top with prince(ss) seams.", + "p": { + "backInside": "Back inside", + "backOutside": "Back outside", + "backPoints": "Back base", + "frontInside": "Front inside", + "frontOutside": "Front outside", + "frontPoints": "Front base", + "peplumFront": "Peplum front", + "peplumBack": "Peplum back" + }, + "s": { + "strapWidthAdjusted.t": "The strap width has been adjusted", + "strapWidthAdjusted.d": "The strap width has been adjusted to {{{ width }}} to allow for the position of the strap on the shoulder.", + "peplumWidth.t": "Peplum size", + "peplumWidth.d": "The peplum will be {{{ peplumWidth }}} long.", + "frontOutside": "Outside front", + "frontInside": "Inside front", + "backOutside": "Outside back", + "backInside": "Inside back", + "frontPeplum": "Peplum front", + "backPeplum": "Peplum back", + "hem": "Hem" + }, + "o": { + "bustSpanEase": { + "t": "Bust span ease", + "d": "Controls the amount of ease along the bust span" + }, + "chestEase": { + "t": "Chest ease", + "d": "Controls the amount of ease at the chest" + }, + "shoulderToShoulderEase": { + "t": "Shoulder to shoulder ease", + "d": "Controls the amount of ease along the shoulder to shoulder measurement" + }, + "fullChestEaseReduction": { + "t": "Full chest ease reduction", + "d": "Allows you to independently reduce the ease around the chest to make it fit tight(er) in that area" + }, + "waistEase": { + "t": "Waist ease", + "d": "Controls the amount of ease at the waist" + }, + "waistdartposition": { + "t": "Waist dart position", + "d": "Controls the position of the waist 'dart', moving it to the center (negative) or side (positive)" + }, + "frontShoulderWidth": { + "t": "Front shoulder width", + "d": "Controls how much width is added to the shoulder in the front" + }, + "highBustWidth": { + "t": "High bust width", + "d": "Controls the width of the high bust" + }, + "armholeDepth": { + "t": "Depth of the Armhole", + "d": "Controls how deep the armhole is" + }, + "cutDepthBack": { + "t": "Depth of the cut in the back", + "d": "Controls the depth of the cut in the back" + }, + "cutDepthFront": { + "t": "Depth of the cut in the front", + "d": "Controls the depth of the cut in the front" + }, + "cutRoundnessBack": { + "t": "Roundness of the cut in the back", + "d": "Controls how 'round' the cut in the back is, from V to round to square" + }, + "cutRoundnessFront": { + "t": "Roundness of the cut in the front", + "d": "Controls how 'round' the cut in the front is, from V to round to square" + }, + "shoulderDartPosition": { + "t": "Shoulder dart position", + "d": "Controls the position of the shoulder dart" + }, + "strapWidth": { + "t": "Width of the straps", + "d": "Controls the width of the straps" + }, + "upperDartLength": { + "t": "Upper dart length", + "d": "Controls the length of the upper dart" + }, + "waistDartLength": { + "t": "Waist dart length", + "d": "Controls the length of the waist dart" + }, + "zipperLocation": { + "t": "Zipper location", + "d": "The location of the zipper: side, back, or front" + }, + "zipperLocation.front": { + "t": "Front zipper location", + "d": "The location of the zipper will be in the front" + }, + "zipperLocation.side": { + "t": "Side zipper location", + "d": "The location of the zipper will be on the side" + }, + "zipperLocation.back": { + "t": "Back zipper location", + "d": "The location of the zipper will be in the back" + }, + "hem": { + "t": "Hem option", + "d": "Add a hem." + }, + "hemYes": { + "t": "Add a hem", + "d": "Add a hem at the waist" + }, + "hemNo": { + "t": "Do not add a hem", + "d": "Do not add a hem at the waist" + }, + "hemSize": { + "t": "Size of the hem", + "d": "Size of the hem, a percentage of the distance between the neckline and the waist" + }, + "lacing": { + "t": "Lacing option", + "d": "This removes part of the seam to create an opening for lacing" + }, + "lacingYes": { + "t": "Add Lacing", + "d": "Remove part of the seam to create an opening for lacing" + }, + "lacingNo": { + "t": "No lacing", + "d": "Close the seams normally" + }, + "lacingLocation": { + "t": "Location of the lacing", + "d": "Lacing in the front, or the back" + }, + "lacingLocation.back": { + "t": "Lacing in the back", + "d": "The lacing will be in the back" + }, + "lacingLocation.front": { + "t": "Lacing in the front", + "d": "The lacing will be in the front" + }, + "lacingWidth": { + "t": "Lacing width", + "d": "Width of the lacing opening" + }, + "peplum": { + "t": "Peplum", + "d": "Add a peplum" + }, + "peplumYes": { + "t": "Add a peplum", + "d": "This will generate the peplum part." + }, + "peplumNo": { + "t": "No peplum", + "d": "Pattern will be generated without a peplum" + }, + "peplumSize": { + "t": "Peplum size", + "d": "Controls the size of the peplum" + }, + "peplumFullness": { + "t": "Peplum fullness", + "d": "Controls the 'fullness' of the peplum. Basically from a half-circle to a full-circle." + } + + } +} diff --git a/designs/tristan/i18n/es.json b/designs/tristan/i18n/es.json new file mode 100644 index 00000000000..079db5e0e0d --- /dev/null +++ b/designs/tristan/i18n/es.json @@ -0,0 +1,178 @@ +{ + "t": "Tristan", + "d": "Tristan is a fitted tank top with prince(ss) seams.", + "p": { + "backInside": "Back inside", + "backOutside": "Back outside", + "backPoints": "Back base", + "frontInside": "Front inside", + "frontOutside": "Front outside", + "frontPoints": "Front base", + "peplumFront": "Peplum front", + "peplumBack": "Peplum back" + }, + "s": { + "strapWidthAdjusted.t": "The strap width has been adjusted", + "strapWidthAdjusted.d": "The strap width has been adjusted to {{{ width }}} to allow for the position of the strap on the shoulder.", + "peplumWidth.t": "Peplum size", + "peplumWidth.d": "The peplum will be {{{ peplumWidth }}} long.", + "frontOutside": "Outside front", + "frontInside": "Inside front", + "backOutside": "Outside back", + "backInside": "Inside back", + "frontPeplum": "Peplum front", + "backPeplum": "Peplum back", + "hem": "Hem" + }, + "o": { + "bustSpanEase": { + "t": "Bust span ease", + "d": "Controls the amount of ease along the bust span" + }, + "chestEase": { + "t": "Chest ease", + "d": "Controls the amount of ease at the chest" + }, + "shoulderToShoulderEase": { + "t": "Shoulder to shoulder ease", + "d": "Controls the amount of ease along the shoulder to shoulder measurement" + }, + "fullChestEaseReduction": { + "t": "Full chest ease reduction", + "d": "Allows you to independently reduce the ease around the chest to make it fit tight(er) in that area" + }, + "waistEase": { + "t": "Waist ease", + "d": "Controls the amount of ease at the waist" + }, + "waistdartposition": { + "t": "Waist dart position", + "d": "Controls the position of the waist 'dart', moving it to the center (negative) or side (positive)" + }, + "frontShoulderWidth": { + "t": "Front shoulder width", + "d": "Controls how much width is added to the shoulder in the front" + }, + "highBustWidth": { + "t": "High bust width", + "d": "Controls the width of the high bust" + }, + "armholeDepth": { + "t": "Depth of the Armhole", + "d": "Controls how deep the armhole is" + }, + "cutDepthBack": { + "t": "Depth of the cut in the back", + "d": "Controls the depth of the cut in the back" + }, + "cutDepthFront": { + "t": "Depth of the cut in the front", + "d": "Controls the depth of the cut in the front" + }, + "cutRoundnessBack": { + "t": "Roundness of the cut in the back", + "d": "Controls how 'round' the cut in the back is, from V to round to square" + }, + "cutRoundnessFront": { + "t": "Roundness of the cut in the front", + "d": "Controls how 'round' the cut in the front is, from V to round to square" + }, + "shoulderDartPosition": { + "t": "Shoulder dart position", + "d": "Controls the position of the shoulder dart" + }, + "strapWidth": { + "t": "Width of the straps", + "d": "Controls the width of the straps" + }, + "upperDartLength": { + "t": "Upper dart length", + "d": "Controls the length of the upper dart" + }, + "waistDartLength": { + "t": "Waist dart length", + "d": "Controls the length of the waist dart" + }, + "zipperLocation": { + "t": "Zipper location", + "d": "The location of the zipper: side, back, or front" + }, + "zipperLocation.front": { + "t": "Front zipper location", + "d": "The location of the zipper will be in the front" + }, + "zipperLocation.side": { + "t": "Side zipper location", + "d": "The location of the zipper will be on the side" + }, + "zipperLocation.back": { + "t": "Back zipper location", + "d": "The location of the zipper will be in the back" + }, + "hem": { + "t": "Hem option", + "d": "Add a hem." + }, + "hemYes": { + "t": "Add a hem", + "d": "Add a hem at the waist" + }, + "hemNo": { + "t": "Do not add a hem", + "d": "Do not add a hem at the waist" + }, + "hemSize": { + "t": "Size of the hem", + "d": "Size of the hem, a percentage of the distance between the neckline and the waist" + }, + "lacing": { + "t": "Lacing option", + "d": "This removes part of the seam to create an opening for lacing" + }, + "lacingYes": { + "t": "Add Lacing", + "d": "Remove part of the seam to create an opening for lacing" + }, + "lacingNo": { + "t": "No lacing", + "d": "Close the seams normally" + }, + "lacingLocation": { + "t": "Location of the lacing", + "d": "Lacing in the front, or the back" + }, + "lacingLocation.back": { + "t": "Lacing in the back", + "d": "The lacing will be in the back" + }, + "lacingLocation.front": { + "t": "Lacing in the front", + "d": "The lacing will be in the front" + }, + "lacingWidth": { + "t": "Lacing width", + "d": "Width of the lacing opening" + }, + "peplum": { + "t": "Peplum", + "d": "Add a peplum" + }, + "peplumYes": { + "t": "Add a peplum", + "d": "This will generate the peplum part." + }, + "peplumNo": { + "t": "No peplum", + "d": "Pattern will be generated without a peplum" + }, + "peplumSize": { + "t": "Peplum size", + "d": "Controls the size of the peplum" + }, + "peplumFullness": { + "t": "Peplum fullness", + "d": "Controls the 'fullness' of the peplum. Basically from a half-circle to a full-circle." + } + + } +} diff --git a/designs/tristan/i18n/fr.json b/designs/tristan/i18n/fr.json new file mode 100644 index 00000000000..079db5e0e0d --- /dev/null +++ b/designs/tristan/i18n/fr.json @@ -0,0 +1,178 @@ +{ + "t": "Tristan", + "d": "Tristan is a fitted tank top with prince(ss) seams.", + "p": { + "backInside": "Back inside", + "backOutside": "Back outside", + "backPoints": "Back base", + "frontInside": "Front inside", + "frontOutside": "Front outside", + "frontPoints": "Front base", + "peplumFront": "Peplum front", + "peplumBack": "Peplum back" + }, + "s": { + "strapWidthAdjusted.t": "The strap width has been adjusted", + "strapWidthAdjusted.d": "The strap width has been adjusted to {{{ width }}} to allow for the position of the strap on the shoulder.", + "peplumWidth.t": "Peplum size", + "peplumWidth.d": "The peplum will be {{{ peplumWidth }}} long.", + "frontOutside": "Outside front", + "frontInside": "Inside front", + "backOutside": "Outside back", + "backInside": "Inside back", + "frontPeplum": "Peplum front", + "backPeplum": "Peplum back", + "hem": "Hem" + }, + "o": { + "bustSpanEase": { + "t": "Bust span ease", + "d": "Controls the amount of ease along the bust span" + }, + "chestEase": { + "t": "Chest ease", + "d": "Controls the amount of ease at the chest" + }, + "shoulderToShoulderEase": { + "t": "Shoulder to shoulder ease", + "d": "Controls the amount of ease along the shoulder to shoulder measurement" + }, + "fullChestEaseReduction": { + "t": "Full chest ease reduction", + "d": "Allows you to independently reduce the ease around the chest to make it fit tight(er) in that area" + }, + "waistEase": { + "t": "Waist ease", + "d": "Controls the amount of ease at the waist" + }, + "waistdartposition": { + "t": "Waist dart position", + "d": "Controls the position of the waist 'dart', moving it to the center (negative) or side (positive)" + }, + "frontShoulderWidth": { + "t": "Front shoulder width", + "d": "Controls how much width is added to the shoulder in the front" + }, + "highBustWidth": { + "t": "High bust width", + "d": "Controls the width of the high bust" + }, + "armholeDepth": { + "t": "Depth of the Armhole", + "d": "Controls how deep the armhole is" + }, + "cutDepthBack": { + "t": "Depth of the cut in the back", + "d": "Controls the depth of the cut in the back" + }, + "cutDepthFront": { + "t": "Depth of the cut in the front", + "d": "Controls the depth of the cut in the front" + }, + "cutRoundnessBack": { + "t": "Roundness of the cut in the back", + "d": "Controls how 'round' the cut in the back is, from V to round to square" + }, + "cutRoundnessFront": { + "t": "Roundness of the cut in the front", + "d": "Controls how 'round' the cut in the front is, from V to round to square" + }, + "shoulderDartPosition": { + "t": "Shoulder dart position", + "d": "Controls the position of the shoulder dart" + }, + "strapWidth": { + "t": "Width of the straps", + "d": "Controls the width of the straps" + }, + "upperDartLength": { + "t": "Upper dart length", + "d": "Controls the length of the upper dart" + }, + "waistDartLength": { + "t": "Waist dart length", + "d": "Controls the length of the waist dart" + }, + "zipperLocation": { + "t": "Zipper location", + "d": "The location of the zipper: side, back, or front" + }, + "zipperLocation.front": { + "t": "Front zipper location", + "d": "The location of the zipper will be in the front" + }, + "zipperLocation.side": { + "t": "Side zipper location", + "d": "The location of the zipper will be on the side" + }, + "zipperLocation.back": { + "t": "Back zipper location", + "d": "The location of the zipper will be in the back" + }, + "hem": { + "t": "Hem option", + "d": "Add a hem." + }, + "hemYes": { + "t": "Add a hem", + "d": "Add a hem at the waist" + }, + "hemNo": { + "t": "Do not add a hem", + "d": "Do not add a hem at the waist" + }, + "hemSize": { + "t": "Size of the hem", + "d": "Size of the hem, a percentage of the distance between the neckline and the waist" + }, + "lacing": { + "t": "Lacing option", + "d": "This removes part of the seam to create an opening for lacing" + }, + "lacingYes": { + "t": "Add Lacing", + "d": "Remove part of the seam to create an opening for lacing" + }, + "lacingNo": { + "t": "No lacing", + "d": "Close the seams normally" + }, + "lacingLocation": { + "t": "Location of the lacing", + "d": "Lacing in the front, or the back" + }, + "lacingLocation.back": { + "t": "Lacing in the back", + "d": "The lacing will be in the back" + }, + "lacingLocation.front": { + "t": "Lacing in the front", + "d": "The lacing will be in the front" + }, + "lacingWidth": { + "t": "Lacing width", + "d": "Width of the lacing opening" + }, + "peplum": { + "t": "Peplum", + "d": "Add a peplum" + }, + "peplumYes": { + "t": "Add a peplum", + "d": "This will generate the peplum part." + }, + "peplumNo": { + "t": "No peplum", + "d": "Pattern will be generated without a peplum" + }, + "peplumSize": { + "t": "Peplum size", + "d": "Controls the size of the peplum" + }, + "peplumFullness": { + "t": "Peplum fullness", + "d": "Controls the 'fullness' of the peplum. Basically from a half-circle to a full-circle." + } + + } +} diff --git a/designs/tristan/i18n/index.mjs b/designs/tristan/i18n/index.mjs new file mode 100644 index 00000000000..36aac928b67 --- /dev/null +++ b/designs/tristan/i18n/index.mjs @@ -0,0 +1,8 @@ +import en from './en.json' assert { type: 'json' } +import de from './de.json' assert { type: 'json' } +import es from './es.json' assert { type: 'json' } +import fr from './fr.json' assert { type: 'json' } +import nl from './nl.json' assert { type: 'json' } +import uk from './uk.json' assert { type: 'json' } + +export const i18n = { en, de, es, fr, nl, uk } diff --git a/designs/tristan/i18n/nl.json b/designs/tristan/i18n/nl.json new file mode 100644 index 00000000000..079db5e0e0d --- /dev/null +++ b/designs/tristan/i18n/nl.json @@ -0,0 +1,178 @@ +{ + "t": "Tristan", + "d": "Tristan is a fitted tank top with prince(ss) seams.", + "p": { + "backInside": "Back inside", + "backOutside": "Back outside", + "backPoints": "Back base", + "frontInside": "Front inside", + "frontOutside": "Front outside", + "frontPoints": "Front base", + "peplumFront": "Peplum front", + "peplumBack": "Peplum back" + }, + "s": { + "strapWidthAdjusted.t": "The strap width has been adjusted", + "strapWidthAdjusted.d": "The strap width has been adjusted to {{{ width }}} to allow for the position of the strap on the shoulder.", + "peplumWidth.t": "Peplum size", + "peplumWidth.d": "The peplum will be {{{ peplumWidth }}} long.", + "frontOutside": "Outside front", + "frontInside": "Inside front", + "backOutside": "Outside back", + "backInside": "Inside back", + "frontPeplum": "Peplum front", + "backPeplum": "Peplum back", + "hem": "Hem" + }, + "o": { + "bustSpanEase": { + "t": "Bust span ease", + "d": "Controls the amount of ease along the bust span" + }, + "chestEase": { + "t": "Chest ease", + "d": "Controls the amount of ease at the chest" + }, + "shoulderToShoulderEase": { + "t": "Shoulder to shoulder ease", + "d": "Controls the amount of ease along the shoulder to shoulder measurement" + }, + "fullChestEaseReduction": { + "t": "Full chest ease reduction", + "d": "Allows you to independently reduce the ease around the chest to make it fit tight(er) in that area" + }, + "waistEase": { + "t": "Waist ease", + "d": "Controls the amount of ease at the waist" + }, + "waistdartposition": { + "t": "Waist dart position", + "d": "Controls the position of the waist 'dart', moving it to the center (negative) or side (positive)" + }, + "frontShoulderWidth": { + "t": "Front shoulder width", + "d": "Controls how much width is added to the shoulder in the front" + }, + "highBustWidth": { + "t": "High bust width", + "d": "Controls the width of the high bust" + }, + "armholeDepth": { + "t": "Depth of the Armhole", + "d": "Controls how deep the armhole is" + }, + "cutDepthBack": { + "t": "Depth of the cut in the back", + "d": "Controls the depth of the cut in the back" + }, + "cutDepthFront": { + "t": "Depth of the cut in the front", + "d": "Controls the depth of the cut in the front" + }, + "cutRoundnessBack": { + "t": "Roundness of the cut in the back", + "d": "Controls how 'round' the cut in the back is, from V to round to square" + }, + "cutRoundnessFront": { + "t": "Roundness of the cut in the front", + "d": "Controls how 'round' the cut in the front is, from V to round to square" + }, + "shoulderDartPosition": { + "t": "Shoulder dart position", + "d": "Controls the position of the shoulder dart" + }, + "strapWidth": { + "t": "Width of the straps", + "d": "Controls the width of the straps" + }, + "upperDartLength": { + "t": "Upper dart length", + "d": "Controls the length of the upper dart" + }, + "waistDartLength": { + "t": "Waist dart length", + "d": "Controls the length of the waist dart" + }, + "zipperLocation": { + "t": "Zipper location", + "d": "The location of the zipper: side, back, or front" + }, + "zipperLocation.front": { + "t": "Front zipper location", + "d": "The location of the zipper will be in the front" + }, + "zipperLocation.side": { + "t": "Side zipper location", + "d": "The location of the zipper will be on the side" + }, + "zipperLocation.back": { + "t": "Back zipper location", + "d": "The location of the zipper will be in the back" + }, + "hem": { + "t": "Hem option", + "d": "Add a hem." + }, + "hemYes": { + "t": "Add a hem", + "d": "Add a hem at the waist" + }, + "hemNo": { + "t": "Do not add a hem", + "d": "Do not add a hem at the waist" + }, + "hemSize": { + "t": "Size of the hem", + "d": "Size of the hem, a percentage of the distance between the neckline and the waist" + }, + "lacing": { + "t": "Lacing option", + "d": "This removes part of the seam to create an opening for lacing" + }, + "lacingYes": { + "t": "Add Lacing", + "d": "Remove part of the seam to create an opening for lacing" + }, + "lacingNo": { + "t": "No lacing", + "d": "Close the seams normally" + }, + "lacingLocation": { + "t": "Location of the lacing", + "d": "Lacing in the front, or the back" + }, + "lacingLocation.back": { + "t": "Lacing in the back", + "d": "The lacing will be in the back" + }, + "lacingLocation.front": { + "t": "Lacing in the front", + "d": "The lacing will be in the front" + }, + "lacingWidth": { + "t": "Lacing width", + "d": "Width of the lacing opening" + }, + "peplum": { + "t": "Peplum", + "d": "Add a peplum" + }, + "peplumYes": { + "t": "Add a peplum", + "d": "This will generate the peplum part." + }, + "peplumNo": { + "t": "No peplum", + "d": "Pattern will be generated without a peplum" + }, + "peplumSize": { + "t": "Peplum size", + "d": "Controls the size of the peplum" + }, + "peplumFullness": { + "t": "Peplum fullness", + "d": "Controls the 'fullness' of the peplum. Basically from a half-circle to a full-circle." + } + + } +} diff --git a/designs/tristan/i18n/uk.json b/designs/tristan/i18n/uk.json new file mode 100644 index 00000000000..079db5e0e0d --- /dev/null +++ b/designs/tristan/i18n/uk.json @@ -0,0 +1,178 @@ +{ + "t": "Tristan", + "d": "Tristan is a fitted tank top with prince(ss) seams.", + "p": { + "backInside": "Back inside", + "backOutside": "Back outside", + "backPoints": "Back base", + "frontInside": "Front inside", + "frontOutside": "Front outside", + "frontPoints": "Front base", + "peplumFront": "Peplum front", + "peplumBack": "Peplum back" + }, + "s": { + "strapWidthAdjusted.t": "The strap width has been adjusted", + "strapWidthAdjusted.d": "The strap width has been adjusted to {{{ width }}} to allow for the position of the strap on the shoulder.", + "peplumWidth.t": "Peplum size", + "peplumWidth.d": "The peplum will be {{{ peplumWidth }}} long.", + "frontOutside": "Outside front", + "frontInside": "Inside front", + "backOutside": "Outside back", + "backInside": "Inside back", + "frontPeplum": "Peplum front", + "backPeplum": "Peplum back", + "hem": "Hem" + }, + "o": { + "bustSpanEase": { + "t": "Bust span ease", + "d": "Controls the amount of ease along the bust span" + }, + "chestEase": { + "t": "Chest ease", + "d": "Controls the amount of ease at the chest" + }, + "shoulderToShoulderEase": { + "t": "Shoulder to shoulder ease", + "d": "Controls the amount of ease along the shoulder to shoulder measurement" + }, + "fullChestEaseReduction": { + "t": "Full chest ease reduction", + "d": "Allows you to independently reduce the ease around the chest to make it fit tight(er) in that area" + }, + "waistEase": { + "t": "Waist ease", + "d": "Controls the amount of ease at the waist" + }, + "waistdartposition": { + "t": "Waist dart position", + "d": "Controls the position of the waist 'dart', moving it to the center (negative) or side (positive)" + }, + "frontShoulderWidth": { + "t": "Front shoulder width", + "d": "Controls how much width is added to the shoulder in the front" + }, + "highBustWidth": { + "t": "High bust width", + "d": "Controls the width of the high bust" + }, + "armholeDepth": { + "t": "Depth of the Armhole", + "d": "Controls how deep the armhole is" + }, + "cutDepthBack": { + "t": "Depth of the cut in the back", + "d": "Controls the depth of the cut in the back" + }, + "cutDepthFront": { + "t": "Depth of the cut in the front", + "d": "Controls the depth of the cut in the front" + }, + "cutRoundnessBack": { + "t": "Roundness of the cut in the back", + "d": "Controls how 'round' the cut in the back is, from V to round to square" + }, + "cutRoundnessFront": { + "t": "Roundness of the cut in the front", + "d": "Controls how 'round' the cut in the front is, from V to round to square" + }, + "shoulderDartPosition": { + "t": "Shoulder dart position", + "d": "Controls the position of the shoulder dart" + }, + "strapWidth": { + "t": "Width of the straps", + "d": "Controls the width of the straps" + }, + "upperDartLength": { + "t": "Upper dart length", + "d": "Controls the length of the upper dart" + }, + "waistDartLength": { + "t": "Waist dart length", + "d": "Controls the length of the waist dart" + }, + "zipperLocation": { + "t": "Zipper location", + "d": "The location of the zipper: side, back, or front" + }, + "zipperLocation.front": { + "t": "Front zipper location", + "d": "The location of the zipper will be in the front" + }, + "zipperLocation.side": { + "t": "Side zipper location", + "d": "The location of the zipper will be on the side" + }, + "zipperLocation.back": { + "t": "Back zipper location", + "d": "The location of the zipper will be in the back" + }, + "hem": { + "t": "Hem option", + "d": "Add a hem." + }, + "hemYes": { + "t": "Add a hem", + "d": "Add a hem at the waist" + }, + "hemNo": { + "t": "Do not add a hem", + "d": "Do not add a hem at the waist" + }, + "hemSize": { + "t": "Size of the hem", + "d": "Size of the hem, a percentage of the distance between the neckline and the waist" + }, + "lacing": { + "t": "Lacing option", + "d": "This removes part of the seam to create an opening for lacing" + }, + "lacingYes": { + "t": "Add Lacing", + "d": "Remove part of the seam to create an opening for lacing" + }, + "lacingNo": { + "t": "No lacing", + "d": "Close the seams normally" + }, + "lacingLocation": { + "t": "Location of the lacing", + "d": "Lacing in the front, or the back" + }, + "lacingLocation.back": { + "t": "Lacing in the back", + "d": "The lacing will be in the back" + }, + "lacingLocation.front": { + "t": "Lacing in the front", + "d": "The lacing will be in the front" + }, + "lacingWidth": { + "t": "Lacing width", + "d": "Width of the lacing opening" + }, + "peplum": { + "t": "Peplum", + "d": "Add a peplum" + }, + "peplumYes": { + "t": "Add a peplum", + "d": "This will generate the peplum part." + }, + "peplumNo": { + "t": "No peplum", + "d": "Pattern will be generated without a peplum" + }, + "peplumSize": { + "t": "Peplum size", + "d": "Controls the size of the peplum" + }, + "peplumFullness": { + "t": "Peplum fullness", + "d": "Controls the 'fullness' of the peplum. Basically from a half-circle to a full-circle." + } + + } +} diff --git a/designs/tristan/package.json b/designs/tristan/package.json new file mode 100644 index 00000000000..90436d077ab --- /dev/null +++ b/designs/tristan/package.json @@ -0,0 +1,73 @@ +{ + "name": "@freesewing/tristan", + "version": "3.0.0", + "description": "A FreeSewing pattern for a fitted top", + "author": "Joost De Cock (https://github.com/joostdecock)", + "homepage": "https://freesewing.org/", + "repository": "github:freesewing/freesewing", + "license": "MIT", + "bugs": { + "url": "https://github.com/freesewing/freesewing/issues" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "type": "module", + "module": "dist/index.mjs", + "exports": { + ".": { + "internal": "./src/index.mjs", + "default": "./dist/index.mjs" + } + }, + "scripts": { + "build": "node build.mjs", + "build:all": "yarn build", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.mjs", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "npx mocha tests/*.test.mjs", + "vbuild": "VERBOSE=1 node build.mjs", + "lab": "cd ../../sites/lab && yarn start", + "tips": "node ../../scripts/help.mjs", + "lint": "npx eslint 'src/**' 'tests/*.mjs'", + "prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'", + "testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", + "wbuild": "node build.mjs", + "wbuild:all": "yarn wbuild" + }, + "peerDependencies": { + "@freesewing/core": "3.0.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "10.2.0", + "chai": "4.3.10", + "@freesewing/models": "3.0.0", + "@freesewing/plugin-timing": "3.0.0" + }, + "files": [ + "dist/*", + "README.md" + ], + "publishConfig": { + "access": "public", + "tag": "latest" + }, + "engines": { + "node": "18", + "npm": "9" + } +} diff --git a/designs/tristan/src/backinside.mjs b/designs/tristan/src/backinside.mjs new file mode 100644 index 00000000000..d1deb383abf --- /dev/null +++ b/designs/tristan/src/backinside.mjs @@ -0,0 +1,158 @@ +import { backPoints } from './backpoints.mjs' + +export const backInside = { + name: 'tristan.backInside', + from: backPoints, + draft: ({ sa, Point, points, Path, paths, Snippet, snippets, options, store, macro, part }) => { + const lacing = true == options.lacing && 'back' == options.lacingLocation + + macro('rmtitle') + store.cutlist.removeCut() + + paths.cut = new Path() + .move(points.strapInside) + .curve(points.strapInsideCp, points.cbCutCp, lacing ? points.lacingCut : points.cbCut) + + if (lacing) { + paths.cut.line(points.lacingWaist) + paths.originalSide = new Path() + .move(points.lacingCut) + .line(points.cbCut) + .curve_(points.cbCutCp2, points.waistCenter) + .line(points.lacingWaist) + .setClass('note dashed') + + const lacingDistance = points.lacingWaist.y - points.lacingCut.y + if (lacingDistance > 15 * 5) { + const numberOfEyelets = Math.floor(lacingDistance / 15) + const eyeletDistance = lacingDistance / (numberOfEyelets + 1) + const pEyelets = new Path().move(points.lacingCut).line(points.lacingWaist).offset(-10) + + for (let i = 1; i <= numberOfEyelets; i++) { + points['eyelet' + i] = pEyelets.shiftAlong(i * eyeletDistance) + snippets['eyelet' + i] = new Snippet('eyelet', points['eyelet' + i]) + } + } + } else { + paths.cut.curve_(points.cbCutCp2, points.waistCenter) + } + + if (options.hem && !options.peplum) { + paths.hem = new Path() + .move(lacing ? points.lacingWaist : points.waistCenter) + .line(points.waistCenterHem) + .line(points.dartBottomLeftHem) + .line(points.dartBottomLeft) + .hide() + paths.hemFold = new Path() + .move(points.waistCenter) + .line(points.dartBottomLeft) + .addClass('note dashed') + .addText('hem', 'center note') + } else { + paths.hem = new Path() + .move(lacing ? points.lacingWaist : points.waistCenter) + .line(points.dartBottomLeft) + .hide() + } + + paths.seamSA = new Path() + .move(points.dartBottomLeft) + .curve(points.dartLeftCp, points.shoulderDartCpDown, points.dartTip) + .curve(points.shoulderDartCpUp, points.shoulderDart, points.shoulderDart) + .line(points.strapInside) + .join(paths.cut) + + paths.seam = paths.seamSA.clone().join(paths.hem).close().attr('class', 'fabric') + + points.grainlineFrom = new Point(points.dartBottomLeft.x - 10, points.cbCut.y) + points.grainlineTo = new Point(points.dartBottomLeft.x - 10, points.waistSide.y) + macro('grainline', { + from: points.grainlineFrom, + to: points.grainlineTo, + }) + + store.cutlist.addCut({ cut: 2, from: 'fabric' }) + + points.titleAnchor = points.dartBottomLeft.shiftFractionTowards( + lacing ? points.lacingCut : points.cbCut, + 0.75 + ) + macro('title', { + at: points.titleAnchor, + nr: 3, + title: 'tristan:backInside', + }) + + if (sa) { + if (options.hem && !options.peplum) { + paths.sa = new Path() + .move(points.dartBottomLeftHem) + .join( + new Path() + .move(points.dartBottomLeftHem) + .line(points.dartBottomLeft) + .join(paths.seamSA) + .line(points.waistCenterHem) + .offset(sa) + ) + .line(points.waistCenterHem) + .attr('class', 'fabric sa') + } else { + paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') + } + } + + macro('hd', { + from: points.cbCut, + to: points.strapInside, + y: points.strapInside.y - sa - 15, + id: 'cutWidth', + }) + macro('hd', { + from: points.cbCut, + to: points.shoulderDart, + y: points.strapInside.y - sa - 25, + id: 'cutToDart', + }) + macro('hd', { + from: lacing ? points.lacingWaist : points.waistCenter, + to: points.dartBottomLeft, + y: points.waistCenter.y + sa + 15, + id: 'waistCenterToSide', + }) + macro('hd', { + from: points.cbCut, + to: points.dartBottomLeft, + y: points.waistCenter.y + sa + 25, + id: 'waistCutToSide', + }) + + macro('vd', { + from: lacing ? points.lacingWaist : points.waistCenter, + to: points.cbCut, + x: points.cbCut.x - sa - 15, + id: 'waistToCut', + }) + macro('vd', { + from: lacing ? points.lacingWaist : points.waistCenter, + to: points.strapInside, + x: points.cbCut.x - sa - 25, + id: 'waistToStrap', + }) + macro('vd', { + from: points.dartBottomLeft, + to: points.shoulderDart, + x: points.shoulderDart.x + sa + 15, + id: 'dartToDart', + }) + macro('vd', { + from: points.dartBottomLeft, + to: points.strapInside, + x: points.shoulderDart.x + sa + 25, + id: 'dartToStrap', + }) + + return part + }, +} diff --git a/designs/tristan/src/backoutside.mjs b/designs/tristan/src/backoutside.mjs new file mode 100644 index 00000000000..5a5cfed4a68 --- /dev/null +++ b/designs/tristan/src/backoutside.mjs @@ -0,0 +1,146 @@ +import { backPoints } from './backpoints.mjs' + +export const backOutside = { + name: 'tristan.backOutside', + from: backPoints, + draft: ({ sa, Point, points, Path, paths, options, store, macro, part }) => { + store.cutlist.removeCut() + + paths.cut = new Path() + .move(points.armhole) + .curve(points.armholeCutCp, points.strapOutsideCp, points.strapOutside) + .hide() + + paths.dart = new Path() + .move(points.shoulderDart) + .curve(points.shoulderDart, points.shoulderDartCpUp, points.dartTip) + .curve(points.shoulderDartCpDown, points.dartRightCp, points.dartBottomRight) + .hide() + + if (options.hem && !options.peplum) { + paths.hem = new Path() + .move(points.dartBottomRight) + .line(points.dartBottomRightHem) + .line(points.waistSideHem) + .line(points.waistSide) + .hide() + paths.hemFold = new Path() + .move(points.dartBottomRight) + .line(points.waistSide) + .addClass('note dashed') + .addText('hem', 'center note') + } else { + paths.hem = new Path().move(points.dartBottomRight).line(points.waistSide).hide() + } + paths.seamSA = new Path() + .move(points.waistSide) + .curve_(points.waistSideCp2, points.armhole) + .join(paths.cut) + .join(paths.dart) + + paths.seam = paths.seamSA.clone().join(paths.hem).close().attr('class', 'fabric') + + points.grainlineTo = new Point(points.dartBottomRight.x * 1.1, points.dartBottomRight.y * 0.95) + points.grainlineFrom = new Point(points.grainlineTo.x, points.dartTip.y) + + macro('grainline', { + from: points.grainlineFrom, + to: points.grainlineTo, + }) + + store.cutlist.removeCut('fabric') + store.cutlist.addCut({ cut: 2, from: 'fabric' }) + + points.titleAnchor = points.dartBottomRight.shiftFractionTowards(points.armholeCpTarget, 0.5) + macro('title', { + at: points.titleAnchor, + nr: 4, + title: 'tristan:backOutside', + }) + + if (sa) { + if (options.hem && !options.peplum) { + paths.sa = new Path() + .move(points.waistSideHem) + .join( + new Path() + .move(points.waistSideHem) + .line(points.waistSide) + .join(paths.seamSA) + .line(points.dartBottomRightHem) + .offset(sa) + ) + .line(points.dartBottomRightHem) + .attr('class', 'fabric sa') + } else { + paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') + } + } + + const pLeft = paths.dart.edge('left') + + macro('hd', { + from: pLeft, + to: points.shoulderDart, + y: points.shoulderDart.y - sa - 15, + id: 'leftToDart', + }) + macro('hd', { + from: pLeft, + to: points.strapOutside, + y: points.shoulderDart.y - sa - 25, + id: 'leftToStrap', + }) + macro('hd', { + from: pLeft, + to: points.armhole, + y: points.shoulderDart.y - sa - 35, + id: 'leftToArmhole', + }) + macro('hd', { + from: pLeft, + to: points.waistSide, + y: points.dartBottomRight.y + sa + 25, + id: 'leftToWaistSide', + }) + macro('hd', { + from: points.dartBottomRight, + to: points.waistSide, + y: points.dartBottomRight.y + sa + 15, + id: 'dartToWaistSide', + }) + + macro('vd', { + from: points.dartBottomRight, + to: pLeft, + x: pLeft.x - sa - 15, + id: 'leftToDart', + }) + macro('vd', { + from: points.dartBottomRight, + to: points.shoulderDart, + x: pLeft.x - sa - 25, + id: 'dartToDart', + }) + macro('vd', { + from: points.dartBottomRight, + to: points.strapOutside, + x: points.armhole.x + sa + 35, + id: 'dartToStrap', + }) + macro('vd', { + from: points.waistSide, + to: points.strapOutside, + x: points.armhole.x + sa + 25, + id: 'sideToStrap', + }) + macro('vd', { + from: points.waistSide, + to: points.armhole, + x: points.armhole.x + sa + 15, + id: 'sideToArmhole', + }) + + return part + }, +} diff --git a/designs/tristan/src/backpoints.mjs b/designs/tristan/src/backpoints.mjs new file mode 100644 index 00000000000..3b022d1de58 --- /dev/null +++ b/designs/tristan/src/backpoints.mjs @@ -0,0 +1,162 @@ +import { backPoints as nobleBackPoints } from '@freesewing/noble' +import { hidePresets } from '@freesewing/core' +import { frontPoints } from './frontpoints.mjs' + +export const backPoints = { + name: 'tristan.backPoints', + from: nobleBackPoints, + after: frontPoints, + hide: hidePresets.HIDE_ALL, + draft: ({ points, Path, paths, options, snippets, macro, utils, store, part }) => { + const lacing = true == options.lacing && 'back' == options.lacingLocation + + // Hide Noble paths + for (const key of Object.keys(paths)) paths[key].hide() + for (const i in snippets) delete snippets[i] + + delete points.bustDartLeft + delete points.bustDartLeftCp + + const strapWidth = store.get('strapWidth') + + points.strapInside = points.shoulderDart.shiftTowards(points.hps, strapWidth / 2) + points.strapOutside = points.shoulderDart.shiftTowards(points.shoulder, strapWidth / 2) + + points.cbCut = new Path() + .move(points.cbNeck) + .curve_(points.cbNeckCp2, points.waistCenter) + .shiftFractionAlong(options.cutDepthBack) + + points.cbCutCp2 = new Path() + .move(points.cbNeck) + .curve_(points.cbNeckCp2, points.waistCenter) + .split(points.cbCut)[1].ops[1].cp1 + + points.cutSeamInside = new Path() + .move(points.dartBottomLeft) + .curve(points.dartLeftCp, points.shoulderDartCpDown, points.dartTip) + .curve(points.shoulderDartCpUp, points.shoulderDart, points.shoulderDart) + .intersectsY(points.cbCut.y)[0] + + points.cutSeamOutside = new Path() + .move(points.shoulderDart) + .curve(points.shoulderDart, points.shoulderDartCpUp, points.dartTip) + .curve(points.shoulderDartCpDown, points.dartRightCp, points.dartBottomRight) + .intersectsY(points.cbCut.y)[0] + + points.cbCutCp = points.cbCut.shiftFractionTowards( + points.cutSeamInside, + 1 - options.cutRoundnessBack + ) + + points.strapInsideCp = points.strapInside.shiftFractionTowards( + points.cutSeamInside.shift( + points.cutSeamInside.angle(points.shoulderDart) + 90, + strapWidth / 2 + ), + 1 - options.cutRoundnessBack + ) + + points.armholeCutCp = points.armhole.shift( + 180, + options.armholeBackIn * points.armhole.dist(points.dartTip) + ) + + points.strapOutsideCp = points.strapOutside.shiftFractionTowards( + points.dartTip.shift(points.dartTip.angle(points.shoulderDart) - 90, strapWidth / 2), + options.armholeFrontDepth + ) + + if (lacing) { + let lacingWidth = (points.strapInsideCp.x - points.cbCut.x) * options.lacingWidth + if (points.waistCenter.dist(points.dartBottomLeft) < lacingWidth) { + lacingWidth = points.waistCenter.dist(points.dartBottomLeft) * 0.95 + } + points.lacingCut = points.cbCut.shift(0, lacingWidth) + points.lacingWaist = points.waistCenter.shiftTowards(points.dartBottomLeft, lacingWidth) + } + + if (points.cbCutCp.x < (lacing ? points.lacingCut : points.cbCut).x) { + points.cbCutCp.x = (lacing ? points.lacingCut : points.cbCut).x + } + + if (options.hem && !options.peplum) { + const hemSize = store.get('hemSize') + + const waistCenterHemTemp1 = (lacing ? points.lacingWaist : points.waistCenter).shiftTowards( + lacing ? points.lacingCut : points.cbCut, + hemSize + ) + const dartBottomLeftHemTemp = waistCenterHemTemp1.shift( + (lacing ? points.lacingWaist : points.cbWaist).angle(points.dartBottomLeft), + (lacing ? points.lacingWaist : points.cbWaist).dist(points.dartBottomLeft) * 1.5 + ) + const waistCenterHemTemp2 = dartBottomLeftHemTemp.shiftOutwards(waistCenterHemTemp1, 100) + + if (lacing) { + points.waistCenterHem = utils.beamsIntersect( + waistCenterHemTemp2, + dartBottomLeftHemTemp, + points.lacingWaist, + points.cbCut + ) + } else { + points.waistCenterHem = utils.beamIntersectsCurve( + waistCenterHemTemp2, + dartBottomLeftHemTemp, + points.waistCenter, + points.waistCenter, + points.cbCutCp2, + lacing ? points.lacingCut : points.cbCut + ) + } + points.dartBottomLeftHem = utils.beamIntersectsCurve( + waistCenterHemTemp2, + dartBottomLeftHemTemp, + points.dartBottomLeft, + points.dartLeftCp, + points.shoulderDartCpDown, + points.dartTip + ) + macro('mirror', { + clone: false, + mirror: [lacing ? points.lacingWaist : points.waistCenter, points.dartBottomLeft], + points: ['waistCenterHem', 'dartBottomLeftHem'], + }) + + const waistSideHemTemp1 = points.waistSide.shiftTowards(points.armhole, hemSize) + const waistDartRightHemTemp = waistSideHemTemp1.shift( + points.waistSide.angle(points.dartBottomRight), + points.waistSide.dist(points.dartBottomRight) * 1.5 + ) + const waistSideHemTemp2 = waistDartRightHemTemp.shiftOutwards(waistSideHemTemp1, 100) + + points.waistSideHem = utils.beamIntersectsCurve( + waistSideHemTemp2, + waistDartRightHemTemp, + points.waistSide, + points.waistSideCp2, + points.armhole, + points.armhole + ) + points.dartBottomRightHem = utils.beamIntersectsCurve( + waistSideHemTemp2, + waistDartRightHemTemp, + points.dartTip, + points.shoulderDartCpDown, + points.dartRightCp, + points.dartBottomRight + ) + macro('mirror', { + clone: false, + mirror: [points.dartBottomRight, points.waistSide], + points: ['waistSideHem', 'dartBottomRightHem'], + }) + } + + store.set('backOutsideWaistLength', points.dartBottomRight.dist(points.waistSide)) + store.set('backInsideWaistLength', points.dartBottomLeft.dist(points.waistCenter)) + + return part + }, +} diff --git a/designs/tristan/src/frontinside.mjs b/designs/tristan/src/frontinside.mjs new file mode 100644 index 00000000000..4f98fb57b0e --- /dev/null +++ b/designs/tristan/src/frontinside.mjs @@ -0,0 +1,209 @@ +import { frontPoints } from './frontpoints.mjs' + +export const frontInside = { + name: 'tristan.frontInside', + from: frontPoints, + draft: ({ store, sa, Point, points, Path, paths, Snippet, snippets, options, macro, part }) => { + delete points.waistDartHem + delete points.waistDartRight + delete points.waistDartRightCp + delete points.waistDartCpBottom + delete points.bustDartBottom + delete points.bustDartCpBottom + delete points.bustDartTip + delete points.bustDartTop + delete points.shoulderDartTipCpDownOutside + delete points.ex + delete points.bustB + delete points.shoulder + delete points.shoulderDartShoulder + delete points.shoulderDartOutside + delete points.pitchMax + delete points.armholeCpTarget + delete points.armholePitch + delete points.armholePitchCp1 + delete points.armholePitchCp2 + delete points.armhole + delete points.armholeCp2 + delete points.bustDartCpTop + delete points.bustSide + delete points.bustDartMiddle + delete points.bustDartEdge + + const lacing = true == options.lacing && 'front' == options.lacingLocation + + paths.cut = new Path() + .move(points.strapInside) + .curve(points.strapInsideCp, points.cfCutCp, lacing ? points.lacingCut : points.cfCut) + + paths.insideSeamTemp = new Path() + .move(points.waistDartLeft) + .curve(points.waistDartLeftCp, points.shoulderDartTipCpDownInside, points.shoulderDartTip) + .line(points.shoulderDartInside) + .join(paths.cut) + .hide() + + if (options.hem && !options.peplum) { + paths.insideSeam = new Path() + .move(points.waistDartLeftHem) + .line(points.waistDartLeft) + .join(paths.insideSeamTemp) + paths.hemFold = new Path() + .move(lacing ? points.lacingWaist : points.cfWaist) + .line(points.waistDartLeft) + .addClass('note dashed') + .addText('hem', 'center note') + } else { + paths.insideSeam = new Path() + .move(lacing ? points.lacingWaist : points.cfWaist) + .line(points.waistDartLeft) + .join(paths.insideSeamTemp) + } + + const lacingPath = lacing + ? new Path().move(points.lacingCut).line(points.lacingWaist) + : new Path().move(points.cfCut).line(points.cfWaist) + if (options.hem && !options.peplum) { + lacingPath.line(points.cfHem) + } + + paths.seam = paths.insideSeam.clone().join(lacingPath).close().attr('class', 'fabric') + + store.set( + 'shoulderDartTipNotch', + new Path() + .move(points.waistDartLeft) + .curve(points.waistDartLeftCp, points.shoulderDartTipCpDownInside, points.shoulderDartTip) + .length() + ) + + if (lacing) { + store.cutlist.addCut({ cut: 2, from: 'fabric' }) + paths.originalSide = new Path() + .move(points.lacingCut) + .line(points.cfCut) + .line(points.cfWaist) + .line(points.lacingWaist) + .setClass('note dashed') + const pGrainLineTo = points.waistDartLeft.shift(135, 10) + macro('grainline', { + from: new Point(pGrainLineTo.x, points.cfCut.y), + to: pGrainLineTo, + grainline: true, + }) + const lacingDistance = points.lacingWaist.y - points.lacingCut.y + if (lacingDistance > 15 * 5) { + const numberOfEyelets = Math.floor(lacingDistance / 15) + const eyeletDistance = lacingDistance / (numberOfEyelets + 1) + for (let i = 0; i < numberOfEyelets; i++) { + points['eyelet' + i] = new Point( + points.lacingCut.x + 10, + points.lacingCut.y + i * eyeletDistance + eyeletDistance + ) + snippets['eyelet' + i] = new Snippet('eyelet', points['eyelet' + i]) + } + } + } else { + if ('front' == options.zipperLocation) { + store.cutlist.addCut({ cut: 2, from: 'fabric' }) + macro('grainline', { + from: points.cfCut.shift(315, 10), + to: points.cfWaist.shift(45, 10), + grainline: true, + }) + } else { + macro('cutonfold', { + from: points.cfCut, + to: points.cfWaist, + grainline: true, + }) + store.cutlist.addCut({ cut: 1, from: 'fabric' }) + } + } + + snippets.shoulderDartTip = new Snippet('notch', points.shoulderDartTip) + + points.titleAnchor = points.waistDartLeft.shiftFractionTowards( + lacing ? points.lacingCut : points.cfCut, + 0.75 + ) + macro('title', { + at: points.titleAnchor, + nr: 1, + title: 'tristan:frontInside', + }) + points.gridAnchor = points.hps.clone() + + if (sa) { + if ('front' == options.zipperLocation) { + paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') + } else { + if (options.hem && !options.peplum) { + paths.sa = new Path() + .move(points.waistDartLeftHem) + .join(paths.insideSeam.offset(sa)) + .line(lacing ? points.lacingCut : points.cfCut) + .attr('class', 'fabric sa') + } else { + paths.sa = new Path() + .move(lacing ? points.lacingWaist : points.cfWaist) + .join(paths.insideSeam.offset(sa)) + .line(lacing ? points.lacingCut : points.cfCut) + .attr('class', 'fabric sa') + } + } + } + + macro('hd', { + from: lacing ? points.lacingWaist : points.cfWaist, + to: points.shoulderDartInside, + y: points.hps.y - 25, + id: 'hpsToDart', + }) + macro('vd', { + from: points.cfWaist, + to: points.shoulderDartInside, + x: 0 - 30, + id: 'waistToDart', + }) + macro('vd', { + from: points.cfWaist, + to: points.shoulderDartTip, + x: 0 - 10, + id: 'waistToDartTip', + }) + macro('hd', { + from: lacing ? points.lacingWaist : points.cfWaist, + to: points.shoulderDartTip, + y: points.cfWaist.y + sa + 25, + id: 'middleToDartTip', + }) + + macro('vd', { + from: points.cfWaist, + to: lacing ? points.lacingCut : points.cfCut, + x: 0 - 20, + id: 'waistToNeck', + }) + macro('vd', { + from: points.cfWaist, + to: points.strapInside, + x: 0 - 40, + id: 'waistToHps', + }) + macro('hd', { + from: lacing ? points.lacingWaist : points.cfWaist, + to: points.waistDartLeft, + y: points.cfWaist.y + sa + 15, + id: 'middleToDart', + }) + macro('hd', { + from: lacing ? points.lacingCut : points.cfCut, + to: points.strapInside, + y: points.strapInside.y - sa - 15, + id: 'middleToHps', + }) + + return part + }, +} diff --git a/designs/tristan/src/frontoutside.mjs b/designs/tristan/src/frontoutside.mjs new file mode 100644 index 00000000000..9b66adc8fd1 --- /dev/null +++ b/designs/tristan/src/frontoutside.mjs @@ -0,0 +1,188 @@ +import { frontPoints } from './frontpoints.mjs' +import { frontInside } from './frontinside.mjs' + +export const frontOutside = { + name: 'tristan.frontOutside', + from: frontPoints, + after: frontInside, + draft: ({ store, sa, points, Path, paths, Snippet, snippets, options, macro, part }) => { + delete points.bustDartTop + delete points.bustSide + delete points.bustDartMiddle + delete points.bustDartBottom + delete points.bustDartCpBottom + delete points.bustB + delete points.bustDartEdge + + paths.cut = new Path() + .move(points.armhole) + .curve(points.armholeCutCp, points.strapOutsideCp, points.strapOutside) + .hide() + + paths.princessSeam = new Path() + .move(points.shoulderDartOutside) + .curve( + points.shoulderDartTipCpDownOutside, + points.waistUpDartRightCpUp, + points.waistUpDartRight + ) + .curve(points.waistUpDartRightCpDown, points.waistCpUp, points.waistDartRight) + .hide() + + paths.armhole = new Path() + .move(points.armhole) + .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) + .curve_(points.armholePitchCp2, points.shoulder) + .hide() + + if (options.hem && !options.peplum) { + paths.hem = new Path() + .move(points.waistDartRight) + .line(points.waistDartRightHem) + .line(points.sideWaistHem) + .line(points.sideWaist) + .hide() + paths.hemFold = new Path() + .move(points.waistDartRight) + .line(points.sideWaist) + .addClass('note dashed') + .addText('hem', 'center note') + } else { + paths.hem = new Path().move(points.waistDartRight).line(points.sideWaist).hide() + } + + paths.seamSA = new Path() + .move(points.sideWaist) + .line(points.armhole) + .join(paths.cut) + .line(points.shoulderDartOutside) + .join(paths.princessSeam) + .line(points.waistDartRight) + .hide() + + paths.seam = paths.seamSA.clone().join(paths.hem).close().unhide().attr('class', 'fabric') + + points.grainTop = points.armhole.shift(225, 20) + points.grainBottom = points.sideWaistInitial.shift(135, 20) + macro('grainline', { + from: points.grainBottom, + to: points.grainTop, + }) + + store.cutlist.addCut({ cut: 2, from: 'fabric' }) + + points.snippet = paths.princessSeam.shiftAlong( + paths.princessSeam.length() - store.get('shoulderDartTipNotch') + ) + snippets.shoulderDartTip = new Snippet('notch', points.snippet) + + points.titleAnchor = points.waistDartRight + .shiftFractionTowards(points.armhole, 0.3) + .shiftFractionTowards(points.shoulderDartOutside, 0.2) + macro('title', { + at: points.titleAnchor, + nr: 2, + title: 'tristan:frontOutside', + }) + points.gridAnchor = points.armholeCpTarget.clone() + + points.scaleboxAnchor = points.titleAnchor.shiftFractionTowards(points.sideWaist, 0.5) + points.scaleboxAnchor.x = points.titleAnchor.x + macro('miniscale', { at: points.scaleboxAnchor }) + + if (sa) { + if (options.hem && !options.peplum) { + paths.sa = new Path() + .move(points.sideWaistHem) + .join( + new Path() + .move(points.sideWaistHem) + .join(paths.seamSA) + .line(points.waistDartRightHem) + .offset(sa) + ) + .line(points.waistDartRightHem) + .attr('class', 'fabric sa') + } else { + paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') + } + } + + const pLeft = paths.princessSeam.edge('left') + macro('hd', { + from: points.waistDartRight, + to: points.armholeOutsidePitchCp1, + y: points.sideWaistInitial.y + sa + 35, + id: 'dartToArmhole', + }) + macro('hd', { + from: points.waistDartRight, + to: points.sideWaistInitial, + y: points.sideWaistInitial.y + sa + 25, + id: 'dartToSide', + }) + macro('hd', { + from: pLeft, + to: points.sideWaistInitial, + y: points.sideWaistInitial.y + sa + 15, + id: 'leftToSide', + }) + macro('hd', { + from: points.shoulderDartOutside, + to: points.strapOutside, + y: points.shoulderDartOutside.y - sa - 15, + id: 'dartToShoulder', + }) + macro('hd', { + from: points.snippet, + to: points.strapOutside, + y: points.shoulderDartOutside.y - sa - 25, + id: 'dartPointToShoulder', + }) + macro('hd', { + from: pLeft, + to: points.strapOutside, + y: points.shoulderDartOutside.y - sa - 35, + id: 'leftToShoulder', + }) + + macro('vd', { + from: points.armholeOutsidePitchCp1, + to: points.sideWaistInitial, + x: points.sideWaistInitial.x + sa + 15, + id: 'waistToArmhole', + }) + macro('vd', { + from: points.waistDartRight, + to: pLeft, + x: pLeft.x - sa - 15, + id: 'waistToLeft', + }) + macro('vd', { + from: points.strapOutside, + to: points.sideWaistInitial, + x: points.sideWaistInitial.x + sa + 25, + id: 'waistToShoulder', + }) + macro('vd', { + from: points.shoulderDartOutside, + to: points.sideWaistInitial, + x: points.shoulderDartOutside.x, + id: 'sideWaistToShoulderDart', + }) + macro('vd', { + from: points.waistDartRight, + to: points.shoulderDartOutside, + x: pLeft.x - sa - 25, + id: 'waistToShoulderDart', + }) + macro('vd', { + from: points.snippet, + to: points.shoulderDartOutside, + x: pLeft.x - sa - 15, + id: 'shoulderDartToDartPoint', + }) + + return part + }, +} diff --git a/designs/tristan/src/frontpoints.mjs b/designs/tristan/src/frontpoints.mjs new file mode 100644 index 00000000000..83e41c9599d --- /dev/null +++ b/designs/tristan/src/frontpoints.mjs @@ -0,0 +1,240 @@ +import { frontPoints as nobleFrontPoints } from '@freesewing/noble' +import { pctBasedOn, hidePresets } from '@freesewing/core' + +export const frontPoints = { + name: 'tristan.frontPoints', + from: nobleFrontPoints, + hide: hidePresets.HIDE_ALL, + options: { + // Static + armholeBackDepth: 0.6, + armholeBackIn: 0.6, + armholeDartPosition: 0.5, + armholeFrontDepth: 0.65, + armholeFrontIn: 0.2, + backArmholeCurvature: 0.63, + backArmholePitchDepth: 0.035, + backArmholeSlant: 5, + backDartHeight: 0.46, + backHemSlope: 2.5, + backNeckCutout: 0.06, + bustDartCurve: 1, + bustDartLength: 0.9, + dartPosition: 'shoulder', + frontArmholeCurvature: 0.63, + frontArmholePitchDepth: 0.29, + shoulderToShoulderCorrection: 0.995, + + // Percentages + bustSpanEase: { pct: 0, min: -5, max: 20, ...pctBasedOn('bustSpan'), menu: 'fit' }, + armholeDepth: { pct: 44, min: 38, max: 55, menu: 'style' }, + cutDepthBack: { pct: 40, min: 5, max: 90, menu: 'style' }, + cutDepthFront: { pct: 80, min: 0, max: 125, menu: 'style' }, + cutRoundnessBack: { pct: 20, min: 0, max: 100, menu: 'style' }, + cutRoundnessFront: { pct: 10, min: 0, max: 100, menu: 'style' }, + shoulderDartPosition: { pct: 50, min: 10, max: 90, menu: 'style' }, + strapWidth: { pct: 45, min: 5, max: 90, menu: 'style' }, + hemSize: { + pct: 5.62, + min: 1, + max: 25, + // eslint-disable-next-line no-unused-vars + menu: (settings, mergedOptions) => + mergedOptions.hem === false || mergedOptions.peplum === true ? false : 'options', + }, + upperDartLength: { pct: 90, min: 80, max: 95, menu: 'advanced' }, + waistDartLength: { pct: 90, min: 75, max: 95, menu: 'advanced' }, + + // Options + zipperLocation: { dflt: 'side', list: ['front', 'side', 'back'], menu: 'options' }, + hem: { + bool: false, + // eslint-disable-next-line no-unused-vars + menu: (settings, mergedOptions) => (mergedOptions.peplum === true ? false : 'options'), + }, + lacing: { bool: true, menu: 'options' }, + lacingLocation: { + dflt: 'front', + list: ['front', 'back'], + // eslint-disable-next-line no-unused-vars + menu: (settings, mergedOptions) => (mergedOptions.lacing === false ? false : 'options'), + }, + lacingWidth: { + pct: 20, + min: 0, + max: 50, + // eslint-disable-next-line no-unused-vars + menu: (settings, mergedOptions) => (mergedOptions.lacing === false ? false : 'options'), + }, + }, + draft: ({ points, Path, paths, snippets, options, macro, store, utils, units, part }) => { + const lacing = true == options.lacing && 'front' == options.lacingLocation + + // Hide Noble paths + for (const key of Object.keys(paths)) paths[key].hide() + for (const i in snippets) delete snippets[i] + + // Remove macros from Noble + macro('rmtitle') + macro('rmscalebox') + macro('rmcutonfold') + + points.sideWaist = points.sideHem.clone() + points.sideWaistInitial = points.sideHemInitial.clone() + points.cfWaist = points.cfHem.clone() + + store.cutlist.removeCut() + + const shoulderWidthInside = points.shoulderDartInside.dist(points.hps) + const shoulderWidthOutside = points.shoulderDartOutside.dist(points.shoulder) + let strapWidth = (shoulderWidthInside + shoulderWidthOutside) * options.strapWidth + + if (strapWidth / 2 > shoulderWidthInside) { + strapWidth = shoulderWidthInside * 2 + } + if (strapWidth / 2 > shoulderWidthOutside) { + strapWidth = shoulderWidthOutside * 2 + } + store.set('strapWidth', strapWidth) + + if (strapWidth != (shoulderWidthInside + shoulderWidthOutside) * options.strapWidth) { + store.flag.info({ + msg: 'tristan:strapWidthAdjusted', + replace: { + width: units(strapWidth), + }, + }) + } + + points.strapInside = points.shoulderDartInside.shiftTowards(points.hps, strapWidth / 2) + points.strapOutside = points.shoulderDartOutside.shiftTowards(points.shoulder, strapWidth / 2) + + points.cfCut = points.cfNeck.shiftFractionTowards(points.cfBust, options.cutDepthFront) + + paths.cutSeamInside = new Path() + .move(points.waistDartLeft) + .curve(points.waistDartLeftCp, points.shoulderDartTipCpDownInside, points.shoulderDartTip) + .line(points.shoulderDartInside) + .hide() + points.cutSeamInside = paths.cutSeamInside.intersectsY(points.cfCut.y)[0] + + points.cutSeamOutside = new Path() + .move(points.waistDartRight) + .curve(points.waistCpUp, points.waistUpDartRightCpDown, points.waistUpDartRight) + .curve( + points.waistUpDartRightCpUp, + points.shoulderDartTipCpDownOutside, + points.shoulderDartOutside + ) + .intersectsY(points.cfCut.y)[0] + + points.cfCutCp = points.cfCut.shiftFractionTowards( + points.cutSeamInside, + 1 - options.cutRoundnessFront + ) + points.strapInsideCp = points.strapInside.shiftFractionTowards( + points.cutSeamInside.shift( + points.cutSeamInside.angle(points.shoulderDartInside) + 90, + strapWidth / 2 + ), + 1 - options.cutRoundnessFront + ) + + points.armholeCutCp = points.armhole.shiftFractionTowards( + points.bustDartTip, + options.armholeFrontIn + ) + + points.strapOutsideCp = points.strapOutside.shiftFractionTowards( + points.bustDartTip.shift( + points.cutSeamOutside.angle(points.shoulderDartOutside) - 90, + strapWidth / 2 + ), + options.armholeFrontDepth + ) + + if (points.strapOutsideCp.x > points.armholeDartCpBottom.x) { + points.strapOutsideCp.x = points.armholeDartCpBottom.x + } + if (points.strapOutsideCp.y > points.armholeDartCpBottom.y) { + points.strapOutsideCp.y = points.armholeDartCpBottom.y + } + + // armhole adjustment + // if (points.sideWaist.y < points.waistDartRight.y) { + // points.sideWaist.y = points.waistDartRight.y + // } + + if (lacing) { + points.lacingCut = points.cfCut.shift( + 0, + (points.strapInsideCp.x - points.cfCut.x) * options.lacingWidth + ) + points.lacingWaist = points.cfWaist.shiftTowards( + points.waistDartLeft, + (points.strapInsideCp.x - points.cfCut.x) * options.lacingWidth + ) + } + + if (options.hem && !options.peplum) { + const hemSize = points.cfWaist.dist(points.cfNeck) * options.hemSize + store.set('hemSize', hemSize) + + points.cfHem = (lacing ? points.lacingCut : points.cfCut).shiftOutwards( + lacing ? points.lacingWaist : points.cfWaist, + hemSize + ) + points.cfHemIn = (lacing ? points.lacingWaist : points.cfWaist).shiftTowards( + lacing ? points.lacingCut : points.cfCut, + hemSize + ) + const waistDartLeftHemInTemp = points.cfHemIn.shift( + points.cfWaist.angle(points.waistDartLeft), + points.cfWaist.dist(points.waistDartLeft) * 1.5 + ) + points.waistDartLeftHem = utils.beamIntersectsCurve( + points.cfHemIn, + waistDartLeftHemInTemp, + points.waistDartLeft, + points.waistDartLeftCp, + points.shoulderDartTipCpDownInside, + points.shoulderDartTip + ) + + points.sideWaistHem = points.armhole.shiftOutwards(points.sideWaist, hemSize) + points.sideWaistHemIn = points.sideWaist.shiftTowards(points.armhole, hemSize) + const waistDartRightHemInTemp = points.sideWaistHemIn.shift( + points.sideWaist.angle(points.waistDartRight), + points.sideWaist.dist(points.waistDartRight) * 1.5 + ) + points.waistDartRightHem = utils.beamIntersectsCurve( + points.sideWaistHemIn, + waistDartRightHemInTemp, + points.waistDartRight, + points.waistDartRightCp, + points.waistUpDartRightCpDown, + points.waistUpDartRight + ) + macro('mirror', { + clone: false, + mirror: [points.cfWaist, points.waistDartLeft], + points: ['waistDartLeftHem'], + }) + macro('mirror', { + clone: false, + mirror: [points.sideWaist, points.waistDartRight], + points: ['waistDartRightHem'], + }) + } + + store.set('frontOutsideWaistLength', points.waistDartRight.dist(points.sideWaist)) + store.set( + 'frontInsideWaistLength', + points.waistDartLeft.dist(lacing ? points.lacingWaist : points.cfWaist) + ) + store.set('frontLength', points.cfNeck.dist(points.cfWaist)) + store.set('sideSeamLength', points.armhole.dist(points.sideWaist)) + + return part + }, +} diff --git a/designs/tristan/src/index.mjs b/designs/tristan/src/index.mjs new file mode 100644 index 00000000000..bf3a9aab97d --- /dev/null +++ b/designs/tristan/src/index.mjs @@ -0,0 +1,43 @@ +// + +import { Design } from '@freesewing/core' +import { i18n } from '../i18n/index.mjs' +import { data } from '../data.mjs' +// Parts +import { frontPoints } from './frontpoints.mjs' +import { frontInside } from './frontinside.mjs' +import { frontOutside } from './frontoutside.mjs' +import { backPoints } from './backpoints.mjs' +import { backInside } from './backinside.mjs' +import { backOutside } from './backoutside.mjs' +import { peplumFront } from './peplumFront.mjs' +import { peplumBack } from './peplumBack.mjs' + +// Create new design +const Tristan = new Design({ + data, + parts: [ + frontPoints, + frontInside, + frontOutside, + backPoints, + backInside, + backOutside, + peplumFront, + peplumBack, + ], +}) + +// Named exports +export { + frontPoints, + frontInside, + frontOutside, + backPoints, + backInside, + backOutside, + peplumFront, + peplumBack, + i18n, + Tristan, +} diff --git a/designs/tristan/src/peplumBack.mjs b/designs/tristan/src/peplumBack.mjs new file mode 100644 index 00000000000..57047fa4093 --- /dev/null +++ b/designs/tristan/src/peplumBack.mjs @@ -0,0 +1,32 @@ +import { plugin as ringsectorPlugin } from '@freesewing/plugin-ringsector' +import { CreateShape, peplumFront } from './peplumFront.mjs' + +export const peplumBack = { + name: 'tristan.peplumBack', + after: peplumFront, + plugins: [ringsectorPlugin], + draft: ({ points, paths, options, store, macro, sa, part }) => { + if (false == options.peplum) { + return part.hide() + } + + const radius = store.get('peplumRadius') + const width = store.get('peplumWidth') + const ratio = store.get('peplumratio') + + CreateShape({ + points: points, + paths: paths, + options: options, + macro: macro, + store: store, + sa: sa, + type: 'back', + radius: radius, + width: width, + ratio: 1 - ratio, + }) + + return part + }, +} diff --git a/designs/tristan/src/peplumFront.mjs b/designs/tristan/src/peplumFront.mjs new file mode 100644 index 00000000000..087936ca9b7 --- /dev/null +++ b/designs/tristan/src/peplumFront.mjs @@ -0,0 +1,143 @@ +import { backPoints } from './backpoints.mjs' +import { plugin as ringsectorPlugin } from '@freesewing/plugin-ringsector' + +export const CreateShape = ({ + points, + paths, + options, + macro, + store, + sa, + type, + radius, + width, + ratio, +}) => { + const double = + type == options.zipperLocation || (true == options.lacing && type == options.lacingLocation) + + macro('ringsector', { + id: type + 'Peblum', + angle: (options.peplumFullness / 2) * ratio * (double ? 0.5 : 1), + insideRadius: radius, + outsideRadius: radius + width, + rotate: false, + }) + + macro('cutOnFold', { + id: type, + from: points['__macro_ringsector_' + type + 'Peblum_in2Flipped'], + to: points['__macro_ringsector_' + type + 'Peblum_ex2Flipped'], + }) + + points[type + 'TitleAnchor'] = points[ + '__macro_ringsector_' + type + 'Peblum_in2FlippedRotated' + ].shiftFractionTowards(points['__macro_ringsector_' + type + 'Peblum_ex2FlippedRotated'], 0.5) + + store.cutlist.addCut({ cut: double ? 2 : 1, from: 'fabric', onFold: true }) + + macro('title', { + nr: 10 + ('front' == type ? 0 : 1), + at: points[type + 'TitleAnchor'], + id: type + 'Peplum', + title: 'tristan:' + type + 'Peplum', + align: 'center', + scale: options.peplumSize * 2, + }) + + if (sa) + paths[type + 'SA'] = paths['__macro_ringsector_' + type + 'Peblum_path'] + .offset(sa) + .attr('class', 'fabric sa') + + macro('hd', { + id: 'topWidth', + from: points['__macro_ringsector_' + type + 'Peblum_in2Flipped'], + to: points['__macro_ringsector_' + type + 'Peblum_in1Rotated'], + y: points['__macro_ringsector_' + type + 'Peblum_in1Rotated'].y - 15 - sa, + }) + macro('hd', { + id: 'bottomWidth', + from: points['__macro_ringsector_' + type + 'Peblum_ex2Flipped'], + to: points['__macro_ringsector_' + type + 'Peblum_ex1Rotated'], + y: points['__macro_ringsector_' + type + 'Peblum_ex1Rotated'].y + 15 + sa, + }) + macro('ld', { + id: 'width', + from: points['__macro_ringsector_' + type + 'Peblum_in1Rotated'], + to: points['__macro_ringsector_' + type + 'Peblum_ex1Rotated'], + d: 15 + sa, + }) +} + +export const peplumFront = { + name: 'tristan.peplumFront', + after: backPoints, + options: { + // Options + peplum: { bool: false, menu: 'options' }, + peplumSize: { + pct: 10, + min: 5, + max: 250, + // eslint-disable-next-line no-unused-vars + menu: (settings, mergedOptions) => (mergedOptions.peplum === false ? false : 'peplum'), + }, + peplumFullness: { + deg: 180, + min: 180, + max: 360, + // eslint-disable-next-line no-unused-vars + menu: (settings, mergedOptions) => (mergedOptions.peplum === false ? false : 'peplum'), + }, + }, + plugins: [ringsectorPlugin], + draft: ({ sa, Point, points, paths, options, macro, store, units, part }) => { + if (false == options.peplum) { + return part.hide() + } + const backInsideWaistLength = store.get('backInsideWaistLength') + const backOutsideWaistLength = store.get('backOutsideWaistLength') + const frontInsideWaistLength = store.get('frontInsideWaistLength') + const frontOutsideWaistLength = store.get('frontOutsideWaistLength') + const length = + backInsideWaistLength + + backOutsideWaistLength + + frontInsideWaistLength + + frontOutsideWaistLength + + const radius = ((length / Math.PI) * (360 / options.peplumFullness)) / 2 + const width = options.peplumSize * store.get('frontLength') + + const frontLength = frontInsideWaistLength + frontOutsideWaistLength + const ratio = frontLength / length + + store.set('peplumRadius', radius) + store.set('peplumWidth', width) + store.set('peplumratio', ratio) + + store.flag.note({ + msg: `tristan:peplumWidth`, + replace: { + peblumWidth: units(width), + }, + }) + + CreateShape({ + Point: Point, + points: points, + paths: paths, + options: options, + macro: macro, + store: store, + sa: sa, + type: 'front', + radius: radius, + width: width, + offset: 0, + ratio: ratio, + }) + + return part + }, +} diff --git a/designs/tristan/tests/shared.test.mjs b/designs/tristan/tests/shared.test.mjs new file mode 100644 index 00000000000..87be117e2ed --- /dev/null +++ b/designs/tristan/tests/shared.test.mjs @@ -0,0 +1,20 @@ +// This file is auto-generated | Any changes you make will be overwritten. +import { Tristan, i18n } from '../src/index.mjs' + +// Shared tests +import { testPatternConfig } from '../../../tests/designs/config.mjs' +import { testPatternI18n } from '../../../tests/designs/i18n.mjs' +import { testPatternDrafting } from '../../../tests/designs/drafting.mjs' +import { testPatternSampling } from '../../../tests/designs/sampling.mjs' + +// Test config +testPatternConfig(Tristan) + +// Test translation +testPatternI18n(Tristan, i18n) + +// Test drafting - Change the second parameter to `true` to log errors +testPatternDrafting(Tristan, false) + +// Test sampling - Change the second parameter to `true` to log errors +testPatternSampling(Tristan, false) diff --git a/markdown/org/docs/designs/noble/options/waistdartposition/de.md b/markdown/org/docs/designs/noble/options/waistdartposition/de.md new file mode 100644 index 00000000000..c602635298b --- /dev/null +++ b/markdown/org/docs/designs/noble/options/waistdartposition/de.md @@ -0,0 +1,11 @@ +--- +title: "Waist dart position" +--- + +*** + +The **waist dart position** option controls the position of the waist 'dart', moving it to the center (negative) or side (positive). + + + + diff --git a/markdown/org/docs/designs/noble/options/waistdartposition/en.md b/markdown/org/docs/designs/noble/options/waistdartposition/en.md new file mode 100644 index 00000000000..c602635298b --- /dev/null +++ b/markdown/org/docs/designs/noble/options/waistdartposition/en.md @@ -0,0 +1,11 @@ +--- +title: "Waist dart position" +--- + +*** + +The **waist dart position** option controls the position of the waist 'dart', moving it to the center (negative) or side (positive). + + + + diff --git a/markdown/org/docs/designs/noble/options/waistdartposition/es.md b/markdown/org/docs/designs/noble/options/waistdartposition/es.md new file mode 100644 index 00000000000..c602635298b --- /dev/null +++ b/markdown/org/docs/designs/noble/options/waistdartposition/es.md @@ -0,0 +1,11 @@ +--- +title: "Waist dart position" +--- + +*** + +The **waist dart position** option controls the position of the waist 'dart', moving it to the center (negative) or side (positive). + + + + diff --git a/markdown/org/docs/designs/noble/options/waistdartposition/fr.md b/markdown/org/docs/designs/noble/options/waistdartposition/fr.md new file mode 100644 index 00000000000..c602635298b --- /dev/null +++ b/markdown/org/docs/designs/noble/options/waistdartposition/fr.md @@ -0,0 +1,11 @@ +--- +title: "Waist dart position" +--- + +*** + +The **waist dart position** option controls the position of the waist 'dart', moving it to the center (negative) or side (positive). + + + + diff --git a/markdown/org/docs/designs/noble/options/waistdartposition/nl.md b/markdown/org/docs/designs/noble/options/waistdartposition/nl.md new file mode 100644 index 00000000000..c602635298b --- /dev/null +++ b/markdown/org/docs/designs/noble/options/waistdartposition/nl.md @@ -0,0 +1,11 @@ +--- +title: "Waist dart position" +--- + +*** + +The **waist dart position** option controls the position of the waist 'dart', moving it to the center (negative) or side (positive). + + + + diff --git a/markdown/org/docs/designs/noble/options/waistdartposition/uk.md b/markdown/org/docs/designs/noble/options/waistdartposition/uk.md new file mode 100644 index 00000000000..c602635298b --- /dev/null +++ b/markdown/org/docs/designs/noble/options/waistdartposition/uk.md @@ -0,0 +1,11 @@ +--- +title: "Waist dart position" +--- + +*** + +The **waist dart position** option controls the position of the waist 'dart', moving it to the center (negative) or side (positive). + + + + diff --git a/markdown/org/docs/designs/tristan/cutting/en.md b/markdown/org/docs/designs/tristan/cutting/en.md new file mode 100644 index 00000000000..96ceef2f17a --- /dev/null +++ b/markdown/org/docs/designs/tristan/cutting/en.md @@ -0,0 +1,25 @@ +--- +title: "Tristan Top: Cutting Instructions" +--- + +In **all versions**: + +- Cut 2 **Front Outside** parts with _good sides together_. +- Cut 2 **Back Outside** parts with _good sides together_. +- Cut 2 **Back Inside** parts with _good sides together_. + +Depending on your choice of closure, also cut the following parts. + +With a **back zip**, **side zip**, or **lace-up back (with or without side zip)** closure: + +- Cut 1 **Front Inside** part on the fold. + +With a **lace-up front** closure: + +- Cut 2 **Front Inside** parts with _good sides together_. + +If you choose to add a peplum: + +- Cut 1 **Peplum**. + +In **all versions**, if you want to line your top, cut the same parts out of your lining fabric. \ No newline at end of file diff --git a/markdown/org/docs/designs/tristan/en.md b/markdown/org/docs/designs/tristan/en.md new file mode 100644 index 00000000000..25daf4612a4 --- /dev/null +++ b/markdown/org/docs/designs/tristan/en.md @@ -0,0 +1,8 @@ +--- +title: "Tristan top" +--- + + + + + diff --git a/markdown/org/docs/designs/tristan/fabric/en.md b/markdown/org/docs/designs/tristan/fabric/en.md new file mode 100644 index 00000000000..f214eaca6a6 --- /dev/null +++ b/markdown/org/docs/designs/tristan/fabric/en.md @@ -0,0 +1,17 @@ +--- +title: "Tristan top: Fabric Options" +--- + +Tristan is designed for woven fabrics with little to no stretch. + +For the **main fabric**, you can use most non-stretch fabrics, such as poplin, jacquard, or linen. Even quilting cotton will work. Fabrics with some structure will work best. + +For the **lining**, if you would like a firm structure even without the use of boning, use a strong fabric, such as canvas, twill, or denim. Use something that will be comfortable against the skin. + + + +##### Consider using contrasting fabrics + +Consider using different fabrics for the inside and outside panels to highlight the prince(ss) seams. + + \ No newline at end of file diff --git a/markdown/org/docs/designs/tristan/instructions/en.md b/markdown/org/docs/designs/tristan/instructions/en.md new file mode 100644 index 00000000000..c00d9fde418 --- /dev/null +++ b/markdown/org/docs/designs/tristan/instructions/en.md @@ -0,0 +1,138 @@ +--- +title: "Tristan top: Sewing Instructions" +--- + + +##### There are many ways to sew a Tristan +These instructions are for a lined Tristan top with a center-front lacing closure and bias binding at the neckline, armhole, and hem. + + +### Step 1: Cut your pieces + +![Cut your pieces](step01.png) + +Cut your pattern pieces. If you would like to add embroidery or other decoration, now is a good time to do so. + + + +##### Finishing methods affect the seam allowance + +If using bias binding, you should cut the neckline and armholes without seam allowance. + + + +### Step 2: Sew the back inside parts together at center back + +![Sew the back inside parts together](step02.png) + +Align the back inside (Part 3) parts at center back. Sew them together with _good sides together_. + +### Step 3: Attach back outside parts + +![Attach the back outside parts](step03.png) + +Attach one back outside (Part 4) part to its matching back inside (Part 3) part, _good sides together_, making sure to match any notches. + +Do the same for the other back outside (Part 4) part. + +### Step 4: Attach front outside parts at the side seams + +![Attach the front outside parts](step04.png) + +Attach one front outside (Part 2) part to its matching back outside (Part 3) part, _good sides together_. + +Do the same for the other front outside (Part 2) part. + +### Step 5: Attach front inside parts + +![Attach the front inside parts](step05.png) + +Finally, attach one front inside (Part 1) part to its matching front inside (Part 2) part, _good sides together_. + +Do the same for the other front inside (Part 1) part. + +![Press](step05b.png) + +Press all the seam allowances flat. + +### Step 6: Sew at the shoulders + +![Attach the front inside parts](step06.png) + +Sew at the shoulders to complete each armhole. Sew _good sides together_. + +Press the seam allowances open. + + +##### Check the fit +This is a good time to try on your garment and make any small adjustments. For example, if your shoulders have a different slope, you could make one shoulder strap a little shorter. + + +### Step 7: Repeat with lining fabric + +![Repeat with lining fabric](step07.png) + +Repeat Steps 1 through 6 with your lining fabric. + +You will now have two identical pieces, one with your main fabric and one with your lining. + +Turn your lining piece inside out. + +The red arrows in the illustration are to help you identify the center insides in the next step. + +### Step 8: Begin the closure by sewing down center front + +![Sew down center front](step08.png) + +Place the center insides of the main and lining together, _good sides together_. This will become one side of your front opening. + +Sew down center front. + +Open flat. + +### Step 9: Sew your first boning channel + +![Sew your first boning channel](step09.png) + +Turn right side out -- that is, put the two pieces together, _bad sides together_ -- and press. + +Sew 2 mm (0.1 inch) in from center edge. + +Allow enough space for your boning, then sew again. + +Repeat Steps 8 through 10 on the other side. + + +##### Leave enough room for your boning +Leave enough wiggle room to allow you to insert your boning. You want the channel to be snug, but not too tight. + + +### Step 10: Sew your second boning channel + +![Sew your second boning channel](step10.png) + +Mark the locations of your eyelets. Allow enough space to install these later, then sew again. + +Allow enough space for another row of boning, then sew again. + +Repeat on the other side. + +### Step 11: Insert your boning + +Cap your boning if appropriate for the type of boning used. Then insert boning in the boning channels. + +### Step 12: Install your eyelets + +Install your eyelets between the two boning channels. + +### Step 13: Bind and lace up your top + +Apply bias binding to the neck hole, armholes, and hem. + +Lace up your top. + +### Step 14: You're done! + +![You're done!](step14.png) + +Enjoy your Tristan top! diff --git a/markdown/org/docs/designs/tristan/instructions/step01.png b/markdown/org/docs/designs/tristan/instructions/step01.png new file mode 100644 index 00000000000..8276dc12b4f Binary files /dev/null and b/markdown/org/docs/designs/tristan/instructions/step01.png differ diff --git a/markdown/org/docs/designs/tristan/instructions/step02.png b/markdown/org/docs/designs/tristan/instructions/step02.png new file mode 100644 index 00000000000..9f136080075 Binary files /dev/null and b/markdown/org/docs/designs/tristan/instructions/step02.png differ diff --git a/markdown/org/docs/designs/tristan/instructions/step03.png b/markdown/org/docs/designs/tristan/instructions/step03.png new file mode 100644 index 00000000000..e359d0b3eb2 Binary files /dev/null and b/markdown/org/docs/designs/tristan/instructions/step03.png differ diff --git a/markdown/org/docs/designs/tristan/instructions/step04.png b/markdown/org/docs/designs/tristan/instructions/step04.png new file mode 100644 index 00000000000..7c8e7490bc6 Binary files /dev/null and b/markdown/org/docs/designs/tristan/instructions/step04.png differ diff --git a/markdown/org/docs/designs/tristan/instructions/step05.png b/markdown/org/docs/designs/tristan/instructions/step05.png new file mode 100644 index 00000000000..e07274eb561 Binary files /dev/null and b/markdown/org/docs/designs/tristan/instructions/step05.png differ diff --git a/markdown/org/docs/designs/tristan/instructions/step05b.png b/markdown/org/docs/designs/tristan/instructions/step05b.png new file mode 100644 index 00000000000..58a903d9d21 Binary files /dev/null and b/markdown/org/docs/designs/tristan/instructions/step05b.png differ diff --git a/markdown/org/docs/designs/tristan/instructions/step06.png b/markdown/org/docs/designs/tristan/instructions/step06.png new file mode 100644 index 00000000000..7b80bbef1eb Binary files /dev/null and b/markdown/org/docs/designs/tristan/instructions/step06.png differ diff --git a/markdown/org/docs/designs/tristan/instructions/step07.png b/markdown/org/docs/designs/tristan/instructions/step07.png new file mode 100644 index 00000000000..678fdc77682 Binary files /dev/null and b/markdown/org/docs/designs/tristan/instructions/step07.png differ diff --git a/markdown/org/docs/designs/tristan/instructions/step08.png b/markdown/org/docs/designs/tristan/instructions/step08.png new file mode 100644 index 00000000000..4f9ebc4f721 Binary files /dev/null and b/markdown/org/docs/designs/tristan/instructions/step08.png differ diff --git a/markdown/org/docs/designs/tristan/instructions/step09.png b/markdown/org/docs/designs/tristan/instructions/step09.png new file mode 100644 index 00000000000..c03d7e656ab Binary files /dev/null and b/markdown/org/docs/designs/tristan/instructions/step09.png differ diff --git a/markdown/org/docs/designs/tristan/instructions/step10.png b/markdown/org/docs/designs/tristan/instructions/step10.png new file mode 100644 index 00000000000..3b9ac26d8fe Binary files /dev/null and b/markdown/org/docs/designs/tristan/instructions/step10.png differ diff --git a/markdown/org/docs/designs/tristan/instructions/step14.png b/markdown/org/docs/designs/tristan/instructions/step14.png new file mode 100644 index 00000000000..4982f21d94b Binary files /dev/null and b/markdown/org/docs/designs/tristan/instructions/step14.png differ diff --git a/markdown/org/docs/designs/tristan/measurements/en.md b/markdown/org/docs/designs/tristan/measurements/en.md new file mode 100644 index 00000000000..420db2e9640 --- /dev/null +++ b/markdown/org/docs/designs/tristan/measurements/en.md @@ -0,0 +1,5 @@ +--- +title: "Tristan top: Required Measurements" +--- + + \ No newline at end of file diff --git a/markdown/org/docs/designs/tristan/needs/en.md b/markdown/org/docs/designs/tristan/needs/en.md new file mode 100644 index 00000000000..92410690295 --- /dev/null +++ b/markdown/org/docs/designs/tristan/needs/en.md @@ -0,0 +1,27 @@ +--- +title: "Tristan top: What You Need" +--- + +To make Tristan, you will need the following: + +- [Basic sewing supplies](/docs/sewing/basic-sewing-supplies) +- About 1 meter (1.1 yards) of a suitable main fabric (see [Fabric options](/docs/designs/tristan/fabric)) +- About 1 meter (1.1 yards) of a suitable lining fabric (if lining) +- Choice of closure - either **Zipper**, or **eyelets**, **reinforcement for the eyelets**, and **lacing** +- If finishing with bias binding, **Bias tape** (about 4 meters (4.4 yards)) + + + +##### Use a separating zipper + +We recommend a separating invisible zipper for this garment. Using a separating zipper will make it easier for you to take the top on and off. + +##### When making Tristan with the lacing option, reinforce the eyelets + +When making Tristan with the lacing option, make sure you reinforce the eyelets. A binding, or sewn in interfacing could work to do so. Adding boning between the eyelets and the seam is another option. + +Tristan is not a corset, and therefore doesn't require heavy boning. We would recommend using a flexible type of boning. That would create the neatest opening. Otherwise a double layer of hair canvas and put the eyelets close to the seam. Both would require lining, or an adequately sized hem or binding. + + + + diff --git a/markdown/org/docs/designs/tristan/notes/en.md b/markdown/org/docs/designs/tristan/notes/en.md new file mode 100644 index 00000000000..48b14a26169 --- /dev/null +++ b/markdown/org/docs/designs/tristan/notes/en.md @@ -0,0 +1,15 @@ +--- +title: "Tristan top: Designer Notes" +--- + +Tristan is a fitted top with corset-inspired design elements. + +It’s the result of a collaboration between Wouter and Natalia. This was a dream come true for me, Natalia, because I think Wouter is brilliant. + +The original version had a lace-up back and was made for the Renaissance fair. I made it by tracing a new neckline and armholes on Noble directly on the body. Wouter thought it looked nice and we decided to turn it into a published standalone top design, with Wouter doing the code. Many messages, sketches, and mock-ups later, the result is Tristan. + +Tristan allows the user a lot of control over the options. It’s a great introduction to prince(ss) seams, and since it doesn’t use a lot of fabric, could be a good project to use up scraps. Although Tristan has options for corset-inspired lacing, it is not intended to be historically accurate. + +I chose the name “Tristan top” because I wanted something that sounded romantic and pretty and followed the traditional FreeSewing convention of a first name that starts with the same letter as the type of design. + +Natalia diff --git a/markdown/org/docs/designs/tristan/options/armholedepth/de.md b/markdown/org/docs/designs/tristan/options/armholedepth/de.md new file mode 100644 index 00000000000..d3a9a18e691 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/armholedepth/de.md @@ -0,0 +1,11 @@ +--- +title: "Armlochtiefe" +--- + +*** + +Die **Armlochtiefe** steuert die Tiefe des Armlochs. + + + + diff --git a/markdown/org/docs/designs/tristan/options/armholedepth/en.md b/markdown/org/docs/designs/tristan/options/armholedepth/en.md new file mode 100644 index 00000000000..8a2d03c3831 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/armholedepth/en.md @@ -0,0 +1,11 @@ +--- +title: "Armhole depth" +--- + +*** + +The **armhole depth** option controls the depth of the armhole. + + + + diff --git a/markdown/org/docs/designs/tristan/options/armholedepth/es.md b/markdown/org/docs/designs/tristan/options/armholedepth/es.md new file mode 100644 index 00000000000..7a33ec2c36e --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/armholedepth/es.md @@ -0,0 +1,11 @@ +--- +title: "Profundidad del orificio" +--- + +*** + +La opción **de profundidad de armadura** controla la profundidad del orificio de armadura. + + + + diff --git a/markdown/org/docs/designs/tristan/options/armholedepth/fr.md b/markdown/org/docs/designs/tristan/options/armholedepth/fr.md new file mode 100644 index 00000000000..56eaa99c431 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/armholedepth/fr.md @@ -0,0 +1,11 @@ +--- +title: "Profondeur d'emmanchure" +--- + +*** + +L'option **de profondeur de blindage** contrôle la profondeur de l'armure. + + + + diff --git a/markdown/org/docs/designs/tristan/options/armholedepth/nl.md b/markdown/org/docs/designs/tristan/options/armholedepth/nl.md new file mode 100644 index 00000000000..cabe409240f --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/armholedepth/nl.md @@ -0,0 +1,11 @@ +--- +title: "Diepte armsgat" +--- + +*** + +De **armsgat** optie bepaalt de diepte van het armsgat. + + + + diff --git a/markdown/org/docs/designs/tristan/options/armholedepth/uk.md b/markdown/org/docs/designs/tristan/options/armholedepth/uk.md new file mode 100644 index 00000000000..5d34e1507e2 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/armholedepth/uk.md @@ -0,0 +1,11 @@ +--- +title: "Глибина пройми" +--- + +*** + +Параметр **глибина пройми** регулює глибину пройми. + + + + diff --git a/markdown/org/docs/designs/tristan/options/bustspanease/de.md b/markdown/org/docs/designs/tristan/options/bustspanease/de.md new file mode 100644 index 00000000000..4a7c3c32c75 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/bustspanease/de.md @@ -0,0 +1,13 @@ +--- +title: "Büstenumfang leicht" +--- + +*** + +Die **Bustumpfschlanke** Option bestimmt, wie viel Leichtigkeit auf den Bustumpfbereich angewendet wird. + +Dies wird das Kleidungsstück nicht leicht machen, sondern nur den Büstenpunkt beeinflussen + + + + diff --git a/markdown/org/docs/designs/tristan/options/bustspanease/en.md b/markdown/org/docs/designs/tristan/options/bustspanease/en.md new file mode 100644 index 00000000000..072a5e40a5c --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/bustspanease/en.md @@ -0,0 +1,13 @@ +--- +title: "Bust span ease" +--- + +*** + +The **bust span ease** option controls how much ease is applied to the bust span. + +This will not add ease to the garment, but merely influence the bust point + + + + diff --git a/markdown/org/docs/designs/tristan/options/bustspanease/es.md b/markdown/org/docs/designs/tristan/options/bustspanease/es.md new file mode 100644 index 00000000000..603f5c7e57b --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/bustspanease/es.md @@ -0,0 +1,13 @@ +--- +title: "Facilidad de la expansión del polvo" +--- + +*** + +La opción **de reducción de polvo** controla la facilidad con la que se aplica a la gama de busto. + +Esto no añadirá facilidad a la ropa, sino que simplemente influirá en el punto de busto + + + + diff --git a/markdown/org/docs/designs/tristan/options/bustspanease/fr.md b/markdown/org/docs/designs/tristan/options/bustspanease/fr.md new file mode 100644 index 00000000000..768cb018428 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/bustspanease/fr.md @@ -0,0 +1,13 @@ +--- +title: "Aisance de l'écart poitrine" +--- + +*** + +L'option **de facilité** de la boussole contrôle la quantité de facilité appliquée à la boussole. + +Cela ne facilitera pas le vêtement, mais seulement le point de buste + + + + diff --git a/markdown/org/docs/designs/tristan/options/bustspanease/nl.md b/markdown/org/docs/designs/tristan/options/bustspanease/nl.md new file mode 100644 index 00000000000..1c7bbc8c1f0 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/bustspanease/nl.md @@ -0,0 +1,13 @@ +--- +title: "Overwijdte bustenwijdte" +--- + +*** + +De **bustewijdte overwijdte** optie bepaalt hoeveel overwijdte wordt toegepast op de bustewijdte. + +Dit maakt het kledingstuk niet gemakkelijker, maar beïnvloedt alleen het bustepunt + + + + diff --git a/markdown/org/docs/designs/tristan/options/bustspanease/uk.md b/markdown/org/docs/designs/tristan/options/bustspanease/uk.md new file mode 100644 index 00000000000..5c8bb89370c --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/bustspanease/uk.md @@ -0,0 +1,13 @@ +--- +title: "Легкість обхвату грудей" +--- + +*** + +Параметр **bust span ease** контролює, наскільки полегшено буде застосовано обхват бюста. + +Це не додасть одягу легкості, а лише вплине на точку обхвату грудей + + + + diff --git a/markdown/org/docs/designs/tristan/options/chestease/de.md b/markdown/org/docs/designs/tristan/options/chestease/de.md new file mode 100644 index 00000000000..d8ed9e0e9a0 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/chestease/de.md @@ -0,0 +1,11 @@ +--- +title: "Brustumfangszugabe" +--- + +*** + +Mit der Option **chest ease** kannst du den Grad der Entspannung an der vollsten Stelle deiner Brust einstellen. + + + + diff --git a/markdown/org/docs/designs/tristan/options/chestease/en.md b/markdown/org/docs/designs/tristan/options/chestease/en.md new file mode 100644 index 00000000000..ed8fef65d30 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/chestease/en.md @@ -0,0 +1,11 @@ +--- +title: "Chest ease" +--- + +*** + +The **chest ease** option controls the amount of ease at the fullest part of your chest. + + + + diff --git a/markdown/org/docs/designs/tristan/options/chestease/es.md b/markdown/org/docs/designs/tristan/options/chestease/es.md new file mode 100644 index 00000000000..93c0f52f2bc --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/chestease/es.md @@ -0,0 +1,11 @@ +--- +title: "Holgura de pecho" +--- + +*** + +La opción de **facilidad de cofre** controla la cantidad de facilidad en la parte más completa del cofre. + + + + diff --git a/markdown/org/docs/designs/tristan/options/chestease/fr.md b/markdown/org/docs/designs/tristan/options/chestease/fr.md new file mode 100644 index 00000000000..391552a9d03 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/chestease/fr.md @@ -0,0 +1,11 @@ +--- +title: "Aisance de poitrine" +--- + +*** + +L'option **facilité de poitrine** contrôle la quantité d'aisance à la partie la plus complète de votre poitrine. + + + + diff --git a/markdown/org/docs/designs/tristan/options/chestease/nl.md b/markdown/org/docs/designs/tristan/options/chestease/nl.md new file mode 100644 index 00000000000..3795d57fd2a --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/chestease/nl.md @@ -0,0 +1,11 @@ +--- +title: "Overwijdte borst" +--- + +*** + +De optie **borst overwijdte** bepaalt de hoeveelheid overwijdte aan het grootste deel van je borst. + + + + diff --git a/markdown/org/docs/designs/tristan/options/chestease/uk.md b/markdown/org/docs/designs/tristan/options/chestease/uk.md new file mode 100644 index 00000000000..08c814a15e2 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/chestease/uk.md @@ -0,0 +1,11 @@ +--- +title: "Легкість у грудях" +--- + +*** + +Параметр **об'єму грудей** регулює об'єм грудей у найповнішій частині тіла. + + + + diff --git a/markdown/org/docs/designs/tristan/options/cutdepthback/de.md b/markdown/org/docs/designs/tristan/options/cutdepthback/de.md new file mode 100644 index 00000000000..df7cf684865 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/cutdepthback/de.md @@ -0,0 +1,11 @@ +--- +title: "Depth of the cut in the back" +--- + +*** + +The **Depth of the cut in the back** controls how deep the neckline will be in the back. + + + + diff --git a/markdown/org/docs/designs/tristan/options/cutdepthback/en.md b/markdown/org/docs/designs/tristan/options/cutdepthback/en.md new file mode 100644 index 00000000000..df7cf684865 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/cutdepthback/en.md @@ -0,0 +1,11 @@ +--- +title: "Depth of the cut in the back" +--- + +*** + +The **Depth of the cut in the back** controls how deep the neckline will be in the back. + + + + diff --git a/markdown/org/docs/designs/tristan/options/cutdepthback/es.md b/markdown/org/docs/designs/tristan/options/cutdepthback/es.md new file mode 100644 index 00000000000..df7cf684865 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/cutdepthback/es.md @@ -0,0 +1,11 @@ +--- +title: "Depth of the cut in the back" +--- + +*** + +The **Depth of the cut in the back** controls how deep the neckline will be in the back. + + + + diff --git a/markdown/org/docs/designs/tristan/options/cutdepthback/fr.md b/markdown/org/docs/designs/tristan/options/cutdepthback/fr.md new file mode 100644 index 00000000000..df7cf684865 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/cutdepthback/fr.md @@ -0,0 +1,11 @@ +--- +title: "Depth of the cut in the back" +--- + +*** + +The **Depth of the cut in the back** controls how deep the neckline will be in the back. + + + + diff --git a/markdown/org/docs/designs/tristan/options/cutdepthback/nl.md b/markdown/org/docs/designs/tristan/options/cutdepthback/nl.md new file mode 100644 index 00000000000..df7cf684865 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/cutdepthback/nl.md @@ -0,0 +1,11 @@ +--- +title: "Depth of the cut in the back" +--- + +*** + +The **Depth of the cut in the back** controls how deep the neckline will be in the back. + + + + diff --git a/markdown/org/docs/designs/tristan/options/cutdepthback/uk.md b/markdown/org/docs/designs/tristan/options/cutdepthback/uk.md new file mode 100644 index 00000000000..df7cf684865 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/cutdepthback/uk.md @@ -0,0 +1,11 @@ +--- +title: "Depth of the cut in the back" +--- + +*** + +The **Depth of the cut in the back** controls how deep the neckline will be in the back. + + + + diff --git a/markdown/org/docs/designs/tristan/options/cutdepthfront/de.md b/markdown/org/docs/designs/tristan/options/cutdepthfront/de.md new file mode 100644 index 00000000000..7fa0a4002aa --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/cutdepthfront/de.md @@ -0,0 +1,11 @@ +--- +title: "Depth of the cut in the front" +--- + +*** + +The **Depth of the cut in the front** controls how deep the neckline will be in the front. + + + + diff --git a/markdown/org/docs/designs/tristan/options/cutdepthfront/en.md b/markdown/org/docs/designs/tristan/options/cutdepthfront/en.md new file mode 100644 index 00000000000..7fa0a4002aa --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/cutdepthfront/en.md @@ -0,0 +1,11 @@ +--- +title: "Depth of the cut in the front" +--- + +*** + +The **Depth of the cut in the front** controls how deep the neckline will be in the front. + + + + diff --git a/markdown/org/docs/designs/tristan/options/cutdepthfront/es.md b/markdown/org/docs/designs/tristan/options/cutdepthfront/es.md new file mode 100644 index 00000000000..7fa0a4002aa --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/cutdepthfront/es.md @@ -0,0 +1,11 @@ +--- +title: "Depth of the cut in the front" +--- + +*** + +The **Depth of the cut in the front** controls how deep the neckline will be in the front. + + + + diff --git a/markdown/org/docs/designs/tristan/options/cutdepthfront/fr.md b/markdown/org/docs/designs/tristan/options/cutdepthfront/fr.md new file mode 100644 index 00000000000..7fa0a4002aa --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/cutdepthfront/fr.md @@ -0,0 +1,11 @@ +--- +title: "Depth of the cut in the front" +--- + +*** + +The **Depth of the cut in the front** controls how deep the neckline will be in the front. + + + + diff --git a/markdown/org/docs/designs/tristan/options/cutdepthfront/nl.md b/markdown/org/docs/designs/tristan/options/cutdepthfront/nl.md new file mode 100644 index 00000000000..7fa0a4002aa --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/cutdepthfront/nl.md @@ -0,0 +1,11 @@ +--- +title: "Depth of the cut in the front" +--- + +*** + +The **Depth of the cut in the front** controls how deep the neckline will be in the front. + + + + diff --git a/markdown/org/docs/designs/tristan/options/cutdepthfront/uk.md b/markdown/org/docs/designs/tristan/options/cutdepthfront/uk.md new file mode 100644 index 00000000000..7fa0a4002aa --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/cutdepthfront/uk.md @@ -0,0 +1,11 @@ +--- +title: "Depth of the cut in the front" +--- + +*** + +The **Depth of the cut in the front** controls how deep the neckline will be in the front. + + + + diff --git a/markdown/org/docs/designs/tristan/options/cutroundnessback/de.md b/markdown/org/docs/designs/tristan/options/cutroundnessback/de.md new file mode 100644 index 00000000000..23c941ab9a0 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/cutroundnessback/de.md @@ -0,0 +1,12 @@ +--- +title: "Roundness of the cut in the back" +--- + +*** + +The **Roundness of the cut in the back** controls the shape of the neckline will be in the back. +This will go from V-neck to U- shaped, with a round option between those extremes. + + + + diff --git a/markdown/org/docs/designs/tristan/options/cutroundnessback/en.md b/markdown/org/docs/designs/tristan/options/cutroundnessback/en.md new file mode 100644 index 00000000000..23c941ab9a0 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/cutroundnessback/en.md @@ -0,0 +1,12 @@ +--- +title: "Roundness of the cut in the back" +--- + +*** + +The **Roundness of the cut in the back** controls the shape of the neckline will be in the back. +This will go from V-neck to U- shaped, with a round option between those extremes. + + + + diff --git a/markdown/org/docs/designs/tristan/options/cutroundnessback/es.md b/markdown/org/docs/designs/tristan/options/cutroundnessback/es.md new file mode 100644 index 00000000000..23c941ab9a0 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/cutroundnessback/es.md @@ -0,0 +1,12 @@ +--- +title: "Roundness of the cut in the back" +--- + +*** + +The **Roundness of the cut in the back** controls the shape of the neckline will be in the back. +This will go from V-neck to U- shaped, with a round option between those extremes. + + + + diff --git a/markdown/org/docs/designs/tristan/options/cutroundnessback/fr.md b/markdown/org/docs/designs/tristan/options/cutroundnessback/fr.md new file mode 100644 index 00000000000..23c941ab9a0 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/cutroundnessback/fr.md @@ -0,0 +1,12 @@ +--- +title: "Roundness of the cut in the back" +--- + +*** + +The **Roundness of the cut in the back** controls the shape of the neckline will be in the back. +This will go from V-neck to U- shaped, with a round option between those extremes. + + + + diff --git a/markdown/org/docs/designs/tristan/options/cutroundnessback/nl.md b/markdown/org/docs/designs/tristan/options/cutroundnessback/nl.md new file mode 100644 index 00000000000..23c941ab9a0 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/cutroundnessback/nl.md @@ -0,0 +1,12 @@ +--- +title: "Roundness of the cut in the back" +--- + +*** + +The **Roundness of the cut in the back** controls the shape of the neckline will be in the back. +This will go from V-neck to U- shaped, with a round option between those extremes. + + + + diff --git a/markdown/org/docs/designs/tristan/options/cutroundnessback/uk.md b/markdown/org/docs/designs/tristan/options/cutroundnessback/uk.md new file mode 100644 index 00000000000..23c941ab9a0 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/cutroundnessback/uk.md @@ -0,0 +1,12 @@ +--- +title: "Roundness of the cut in the back" +--- + +*** + +The **Roundness of the cut in the back** controls the shape of the neckline will be in the back. +This will go from V-neck to U- shaped, with a round option between those extremes. + + + + diff --git a/markdown/org/docs/designs/tristan/options/cutroundnessfront/de.md b/markdown/org/docs/designs/tristan/options/cutroundnessfront/de.md new file mode 100644 index 00000000000..11d3564969c --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/cutroundnessfront/de.md @@ -0,0 +1,12 @@ +--- +title: "Roundness of the cut in the front" +--- + +*** + +The **Roundness of the cut in the front** controls the shape of the neckline will be in the front. +This will go from V-neck to U- shaped, with a round option between those extremes. + + + + diff --git a/markdown/org/docs/designs/tristan/options/cutroundnessfront/en.md b/markdown/org/docs/designs/tristan/options/cutroundnessfront/en.md new file mode 100644 index 00000000000..11d3564969c --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/cutroundnessfront/en.md @@ -0,0 +1,12 @@ +--- +title: "Roundness of the cut in the front" +--- + +*** + +The **Roundness of the cut in the front** controls the shape of the neckline will be in the front. +This will go from V-neck to U- shaped, with a round option between those extremes. + + + + diff --git a/markdown/org/docs/designs/tristan/options/cutroundnessfront/es.md b/markdown/org/docs/designs/tristan/options/cutroundnessfront/es.md new file mode 100644 index 00000000000..11d3564969c --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/cutroundnessfront/es.md @@ -0,0 +1,12 @@ +--- +title: "Roundness of the cut in the front" +--- + +*** + +The **Roundness of the cut in the front** controls the shape of the neckline will be in the front. +This will go from V-neck to U- shaped, with a round option between those extremes. + + + + diff --git a/markdown/org/docs/designs/tristan/options/cutroundnessfront/fr.md b/markdown/org/docs/designs/tristan/options/cutroundnessfront/fr.md new file mode 100644 index 00000000000..11d3564969c --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/cutroundnessfront/fr.md @@ -0,0 +1,12 @@ +--- +title: "Roundness of the cut in the front" +--- + +*** + +The **Roundness of the cut in the front** controls the shape of the neckline will be in the front. +This will go from V-neck to U- shaped, with a round option between those extremes. + + + + diff --git a/markdown/org/docs/designs/tristan/options/cutroundnessfront/nl.md b/markdown/org/docs/designs/tristan/options/cutroundnessfront/nl.md new file mode 100644 index 00000000000..11d3564969c --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/cutroundnessfront/nl.md @@ -0,0 +1,12 @@ +--- +title: "Roundness of the cut in the front" +--- + +*** + +The **Roundness of the cut in the front** controls the shape of the neckline will be in the front. +This will go from V-neck to U- shaped, with a round option between those extremes. + + + + diff --git a/markdown/org/docs/designs/tristan/options/cutroundnessfront/uk.md b/markdown/org/docs/designs/tristan/options/cutroundnessfront/uk.md new file mode 100644 index 00000000000..11d3564969c --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/cutroundnessfront/uk.md @@ -0,0 +1,12 @@ +--- +title: "Roundness of the cut in the front" +--- + +*** + +The **Roundness of the cut in the front** controls the shape of the neckline will be in the front. +This will go from V-neck to U- shaped, with a round option between those extremes. + + + + diff --git a/markdown/org/docs/designs/tristan/options/de.md b/markdown/org/docs/designs/tristan/options/de.md new file mode 100644 index 00000000000..8eb6e8481db --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/de.md @@ -0,0 +1,5 @@ +--- +title: "Tristan top: Design Options" +--- + + diff --git a/markdown/org/docs/designs/tristan/options/en.md b/markdown/org/docs/designs/tristan/options/en.md new file mode 100644 index 00000000000..8eb6e8481db --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/en.md @@ -0,0 +1,5 @@ +--- +title: "Tristan top: Design Options" +--- + + diff --git a/markdown/org/docs/designs/tristan/options/es.md b/markdown/org/docs/designs/tristan/options/es.md new file mode 100644 index 00000000000..8eb6e8481db --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/es.md @@ -0,0 +1,5 @@ +--- +title: "Tristan top: Design Options" +--- + + diff --git a/markdown/org/docs/designs/tristan/options/fr.md b/markdown/org/docs/designs/tristan/options/fr.md new file mode 100644 index 00000000000..8eb6e8481db --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/fr.md @@ -0,0 +1,5 @@ +--- +title: "Tristan top: Design Options" +--- + + diff --git a/markdown/org/docs/designs/tristan/options/frontshoulderwidth/de.md b/markdown/org/docs/designs/tristan/options/frontshoulderwidth/de.md new file mode 100644 index 00000000000..414c2783f0e --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/frontshoulderwidth/de.md @@ -0,0 +1,11 @@ +--- +title: "Vordere Schulterbreite" +--- + +*** + +Die Option **Vorderschulterbreite** steuert die Breite der Schultern an der Vorderseite, relativ zur Rückseite. + + + + diff --git a/markdown/org/docs/designs/tristan/options/frontshoulderwidth/en.md b/markdown/org/docs/designs/tristan/options/frontshoulderwidth/en.md new file mode 100644 index 00000000000..a891f275dcf --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/frontshoulderwidth/en.md @@ -0,0 +1,11 @@ +--- +title: "Front shoulder width" +--- + +*** + +The **front shoulder width** option controls the width of the shoulders at the front, relative to the back. + + + + diff --git a/markdown/org/docs/designs/tristan/options/frontshoulderwidth/es.md b/markdown/org/docs/designs/tristan/options/frontshoulderwidth/es.md new file mode 100644 index 00000000000..9d47ee1a0db --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/frontshoulderwidth/es.md @@ -0,0 +1,11 @@ +--- +title: "Ancho del hombro frontal" +--- + +*** + +La opción **de ancho del hombro frontal** controla el ancho de los hombros en el frente, relativo a la espalda. + + + + diff --git a/markdown/org/docs/designs/tristan/options/frontshoulderwidth/fr.md b/markdown/org/docs/designs/tristan/options/frontshoulderwidth/fr.md new file mode 100644 index 00000000000..e266cef2e45 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/frontshoulderwidth/fr.md @@ -0,0 +1,11 @@ +--- +title: "Largeur d'épaule devant" +--- + +*** + +L'option **de largeur d'épaule avant** contrôle la largeur des épaules à l'avant par rapport à l'arrière. + + + + diff --git a/markdown/org/docs/designs/tristan/options/frontshoulderwidth/nl.md b/markdown/org/docs/designs/tristan/options/frontshoulderwidth/nl.md new file mode 100644 index 00000000000..d448e072bb5 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/frontshoulderwidth/nl.md @@ -0,0 +1,11 @@ +--- +title: "Schouderbreedte vooraan" +--- + +*** + +De optie **breedte van de voorste schouder** bepaalt de breedte van de schouders vooraan ten opzichte van de achterkant. + + + + diff --git a/markdown/org/docs/designs/tristan/options/frontshoulderwidth/uk.md b/markdown/org/docs/designs/tristan/options/frontshoulderwidth/uk.md new file mode 100644 index 00000000000..7cb33200e45 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/frontshoulderwidth/uk.md @@ -0,0 +1,11 @@ +--- +title: "Ширина плечей спереду" +--- + +*** + +Параметр **ширина плечей спереду** регулює ширину плечей спереду відносно спинки. + + + + diff --git a/markdown/org/docs/designs/tristan/options/fullchesteasereduction/de.md b/markdown/org/docs/designs/tristan/options/fullchesteasereduction/de.md new file mode 100644 index 00000000000..8ffce74d660 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/fullchesteasereduction/de.md @@ -0,0 +1,7 @@ +--- +title: "Verringerung der Brustumfangszugabe" +--- + +*** + +Ermöglicht es dir den Spielraum an der Brust zu verringern, um dort einen engeren Sitz zu ermöglichen. diff --git a/markdown/org/docs/designs/tristan/options/fullchesteasereduction/en.md b/markdown/org/docs/designs/tristan/options/fullchesteasereduction/en.md new file mode 100644 index 00000000000..70696fe82de --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/fullchesteasereduction/en.md @@ -0,0 +1,7 @@ +--- +title: "Full chest ease reduction" +--- + +*** + +Allows you to independently reduce the ease around the chest to make it fit tight(er) in that area. diff --git a/markdown/org/docs/designs/tristan/options/fullchesteasereduction/es.md b/markdown/org/docs/designs/tristan/options/fullchesteasereduction/es.md new file mode 100644 index 00000000000..070a8baba3b --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/fullchesteasereduction/es.md @@ -0,0 +1,7 @@ +--- +title: "Reducción total de la holgura torácica" +--- + +*** + +Te permite reducir de forma independiente la holgura alrededor del pecho para que quede ajustado(a) en esa zona. diff --git a/markdown/org/docs/designs/tristan/options/fullchesteasereduction/fr.md b/markdown/org/docs/designs/tristan/options/fullchesteasereduction/fr.md new file mode 100644 index 00000000000..dbfbe6a4359 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/fullchesteasereduction/fr.md @@ -0,0 +1,7 @@ +--- +title: "Réduction de l'aisance de la poitrine" +--- + +*** + +Vous permet de réduire indépendamment du reste l'aisance de la poitrine pour le rendre (plus) ajusté à ce niveau. diff --git a/markdown/org/docs/designs/tristan/options/fullchesteasereduction/nl.md b/markdown/org/docs/designs/tristan/options/fullchesteasereduction/nl.md new file mode 100644 index 00000000000..ba0d0d98667 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/fullchesteasereduction/nl.md @@ -0,0 +1,7 @@ +--- +title: "Vermindering van de volle buste overwijdte" +--- + +*** + +Hiermee kun je de overwijdte rond de borst onafhankelijk verminderen om het daar strak(er) te laten aansluiten. diff --git a/markdown/org/docs/designs/tristan/options/fullchesteasereduction/uk.md b/markdown/org/docs/designs/tristan/options/fullchesteasereduction/uk.md new file mode 100644 index 00000000000..af69c52b24f --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/fullchesteasereduction/uk.md @@ -0,0 +1,7 @@ +--- +title: "Повне зменшення об'єму грудної клітки" +--- + +*** + +Дозволяє самостійно зменшити легкість навколо грудей, щоб вона щільно прилягала в цій ділянці. diff --git a/markdown/org/docs/designs/tristan/options/hem/de.md b/markdown/org/docs/designs/tristan/options/hem/de.md new file mode 100644 index 00000000000..5d2c56609e2 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/hem/de.md @@ -0,0 +1,12 @@ +--- +title: "Hem option" +--- + +*** + +The **hem** option creates the extra fabric to make a hem. This is for the waist only. Will be ignored +if the **peplum** option is enabled. + + + + diff --git a/markdown/org/docs/designs/tristan/options/hem/en.md b/markdown/org/docs/designs/tristan/options/hem/en.md new file mode 100644 index 00000000000..5d2c56609e2 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/hem/en.md @@ -0,0 +1,12 @@ +--- +title: "Hem option" +--- + +*** + +The **hem** option creates the extra fabric to make a hem. This is for the waist only. Will be ignored +if the **peplum** option is enabled. + + + + diff --git a/markdown/org/docs/designs/tristan/options/hem/es.md b/markdown/org/docs/designs/tristan/options/hem/es.md new file mode 100644 index 00000000000..5d2c56609e2 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/hem/es.md @@ -0,0 +1,12 @@ +--- +title: "Hem option" +--- + +*** + +The **hem** option creates the extra fabric to make a hem. This is for the waist only. Will be ignored +if the **peplum** option is enabled. + + + + diff --git a/markdown/org/docs/designs/tristan/options/hem/fr.md b/markdown/org/docs/designs/tristan/options/hem/fr.md new file mode 100644 index 00000000000..5d2c56609e2 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/hem/fr.md @@ -0,0 +1,12 @@ +--- +title: "Hem option" +--- + +*** + +The **hem** option creates the extra fabric to make a hem. This is for the waist only. Will be ignored +if the **peplum** option is enabled. + + + + diff --git a/markdown/org/docs/designs/tristan/options/hem/nl.md b/markdown/org/docs/designs/tristan/options/hem/nl.md new file mode 100644 index 00000000000..5d2c56609e2 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/hem/nl.md @@ -0,0 +1,12 @@ +--- +title: "Hem option" +--- + +*** + +The **hem** option creates the extra fabric to make a hem. This is for the waist only. Will be ignored +if the **peplum** option is enabled. + + + + diff --git a/markdown/org/docs/designs/tristan/options/hem/uk.md b/markdown/org/docs/designs/tristan/options/hem/uk.md new file mode 100644 index 00000000000..5d2c56609e2 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/hem/uk.md @@ -0,0 +1,12 @@ +--- +title: "Hem option" +--- + +*** + +The **hem** option creates the extra fabric to make a hem. This is for the waist only. Will be ignored +if the **peplum** option is enabled. + + + + diff --git a/markdown/org/docs/designs/tristan/options/hemsize/de.md b/markdown/org/docs/designs/tristan/options/hemsize/de.md new file mode 100644 index 00000000000..24023a08aa8 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/hemsize/de.md @@ -0,0 +1,11 @@ +--- +title: "Hem Size" +--- + +*** + +The **hem size** controls the size of the **hem**. + + + + diff --git a/markdown/org/docs/designs/tristan/options/hemsize/en.md b/markdown/org/docs/designs/tristan/options/hemsize/en.md new file mode 100644 index 00000000000..24023a08aa8 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/hemsize/en.md @@ -0,0 +1,11 @@ +--- +title: "Hem Size" +--- + +*** + +The **hem size** controls the size of the **hem**. + + + + diff --git a/markdown/org/docs/designs/tristan/options/hemsize/es.md b/markdown/org/docs/designs/tristan/options/hemsize/es.md new file mode 100644 index 00000000000..24023a08aa8 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/hemsize/es.md @@ -0,0 +1,11 @@ +--- +title: "Hem Size" +--- + +*** + +The **hem size** controls the size of the **hem**. + + + + diff --git a/markdown/org/docs/designs/tristan/options/hemsize/fr.md b/markdown/org/docs/designs/tristan/options/hemsize/fr.md new file mode 100644 index 00000000000..24023a08aa8 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/hemsize/fr.md @@ -0,0 +1,11 @@ +--- +title: "Hem Size" +--- + +*** + +The **hem size** controls the size of the **hem**. + + + + diff --git a/markdown/org/docs/designs/tristan/options/hemsize/nl.md b/markdown/org/docs/designs/tristan/options/hemsize/nl.md new file mode 100644 index 00000000000..24023a08aa8 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/hemsize/nl.md @@ -0,0 +1,11 @@ +--- +title: "Hem Size" +--- + +*** + +The **hem size** controls the size of the **hem**. + + + + diff --git a/markdown/org/docs/designs/tristan/options/hemsize/uk.md b/markdown/org/docs/designs/tristan/options/hemsize/uk.md new file mode 100644 index 00000000000..24023a08aa8 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/hemsize/uk.md @@ -0,0 +1,11 @@ +--- +title: "Hem Size" +--- + +*** + +The **hem size** controls the size of the **hem**. + + + + diff --git a/markdown/org/docs/designs/tristan/options/highbustwidth/de.md b/markdown/org/docs/designs/tristan/options/highbustwidth/de.md new file mode 100644 index 00000000000..8397dee397d --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/highbustwidth/de.md @@ -0,0 +1,11 @@ +--- +title: "Hohe Büstenbreite" +--- + +*** + +Die **hohe Büstenbreite** erlaubt es Ihnen, die hohe Büstenbreite an der Vorderseite zu optimieren. + + + + diff --git a/markdown/org/docs/designs/tristan/options/highbustwidth/en.md b/markdown/org/docs/designs/tristan/options/highbustwidth/en.md new file mode 100644 index 00000000000..9829cab1b18 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/highbustwidth/en.md @@ -0,0 +1,11 @@ +--- +title: "High bust width" +--- + +*** + +The **high bust width** option allows you to tweak the high bust width at the front. + + + + diff --git a/markdown/org/docs/designs/tristan/options/highbustwidth/es.md b/markdown/org/docs/designs/tristan/options/highbustwidth/es.md new file mode 100644 index 00000000000..2e76fc46cd5 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/highbustwidth/es.md @@ -0,0 +1,11 @@ +--- +title: "Ancho de bust alto" +--- + +*** + +La opción **de ancho de bust alto** le permite ajustar el ancho de bust alto en el frente. + + + + diff --git a/markdown/org/docs/designs/tristan/options/highbustwidth/fr.md b/markdown/org/docs/designs/tristan/options/highbustwidth/fr.md new file mode 100644 index 00000000000..73fe7de0937 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/highbustwidth/fr.md @@ -0,0 +1,11 @@ +--- +title: "Largeur de buste supérieur" +--- + +*** + +L'option **grande largeur de poitrine** vous permet de modifier la largeur de la poitrine à l'avant. + + + + diff --git a/markdown/org/docs/designs/tristan/options/highbustwidth/nl.md b/markdown/org/docs/designs/tristan/options/highbustwidth/nl.md new file mode 100644 index 00000000000..e6a47535b58 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/highbustwidth/nl.md @@ -0,0 +1,11 @@ +--- +title: "Hoge buste-breedte" +--- + +*** + +De **hoge bustebreedte** optie maakt het mogelijk om de bustebreedte aan het voorpand aan te passen. + + + + diff --git a/markdown/org/docs/designs/tristan/options/highbustwidth/uk.md b/markdown/org/docs/designs/tristan/options/highbustwidth/uk.md new file mode 100644 index 00000000000..03217ce42e6 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/highbustwidth/uk.md @@ -0,0 +1,11 @@ +--- +title: "Висока ширина бюста" +--- + +*** + +Опція **високої ширини бюста** дозволяє налаштувати високу ширину бюста спереду. + + + + diff --git a/markdown/org/docs/designs/tristan/options/lacing/de.md b/markdown/org/docs/designs/tristan/options/lacing/de.md new file mode 100644 index 00000000000..e940a3b80f6 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/lacing/de.md @@ -0,0 +1,12 @@ +--- +title: "Lacing option" +--- + +*** + +The **lacing** option removes the fabric that is being replaced by the lacing. This is +what one would see with historical corsets and some dirndl. + + + + diff --git a/markdown/org/docs/designs/tristan/options/lacing/en.md b/markdown/org/docs/designs/tristan/options/lacing/en.md new file mode 100644 index 00000000000..e940a3b80f6 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/lacing/en.md @@ -0,0 +1,12 @@ +--- +title: "Lacing option" +--- + +*** + +The **lacing** option removes the fabric that is being replaced by the lacing. This is +what one would see with historical corsets and some dirndl. + + + + diff --git a/markdown/org/docs/designs/tristan/options/lacing/es.md b/markdown/org/docs/designs/tristan/options/lacing/es.md new file mode 100644 index 00000000000..e940a3b80f6 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/lacing/es.md @@ -0,0 +1,12 @@ +--- +title: "Lacing option" +--- + +*** + +The **lacing** option removes the fabric that is being replaced by the lacing. This is +what one would see with historical corsets and some dirndl. + + + + diff --git a/markdown/org/docs/designs/tristan/options/lacing/fr.md b/markdown/org/docs/designs/tristan/options/lacing/fr.md new file mode 100644 index 00000000000..e940a3b80f6 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/lacing/fr.md @@ -0,0 +1,12 @@ +--- +title: "Lacing option" +--- + +*** + +The **lacing** option removes the fabric that is being replaced by the lacing. This is +what one would see with historical corsets and some dirndl. + + + + diff --git a/markdown/org/docs/designs/tristan/options/lacing/nl.md b/markdown/org/docs/designs/tristan/options/lacing/nl.md new file mode 100644 index 00000000000..e940a3b80f6 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/lacing/nl.md @@ -0,0 +1,12 @@ +--- +title: "Lacing option" +--- + +*** + +The **lacing** option removes the fabric that is being replaced by the lacing. This is +what one would see with historical corsets and some dirndl. + + + + diff --git a/markdown/org/docs/designs/tristan/options/lacing/uk.md b/markdown/org/docs/designs/tristan/options/lacing/uk.md new file mode 100644 index 00000000000..e940a3b80f6 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/lacing/uk.md @@ -0,0 +1,12 @@ +--- +title: "Lacing option" +--- + +*** + +The **lacing** option removes the fabric that is being replaced by the lacing. This is +what one would see with historical corsets and some dirndl. + + + + diff --git a/markdown/org/docs/designs/tristan/options/lacinglocation/de.md b/markdown/org/docs/designs/tristan/options/lacinglocation/de.md new file mode 100644 index 00000000000..b536cf52a9b --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/lacinglocation/de.md @@ -0,0 +1,12 @@ +--- +title: "Lacing location" +--- + +*** + +The **lacing location** controls where the **lacing** option will be implemented. +Options are in the front, or in the back. + + + + diff --git a/markdown/org/docs/designs/tristan/options/lacinglocation/en.md b/markdown/org/docs/designs/tristan/options/lacinglocation/en.md new file mode 100644 index 00000000000..b536cf52a9b --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/lacinglocation/en.md @@ -0,0 +1,12 @@ +--- +title: "Lacing location" +--- + +*** + +The **lacing location** controls where the **lacing** option will be implemented. +Options are in the front, or in the back. + + + + diff --git a/markdown/org/docs/designs/tristan/options/lacinglocation/es.md b/markdown/org/docs/designs/tristan/options/lacinglocation/es.md new file mode 100644 index 00000000000..b536cf52a9b --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/lacinglocation/es.md @@ -0,0 +1,12 @@ +--- +title: "Lacing location" +--- + +*** + +The **lacing location** controls where the **lacing** option will be implemented. +Options are in the front, or in the back. + + + + diff --git a/markdown/org/docs/designs/tristan/options/lacinglocation/fr.md b/markdown/org/docs/designs/tristan/options/lacinglocation/fr.md new file mode 100644 index 00000000000..b536cf52a9b --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/lacinglocation/fr.md @@ -0,0 +1,12 @@ +--- +title: "Lacing location" +--- + +*** + +The **lacing location** controls where the **lacing** option will be implemented. +Options are in the front, or in the back. + + + + diff --git a/markdown/org/docs/designs/tristan/options/lacinglocation/nl.md b/markdown/org/docs/designs/tristan/options/lacinglocation/nl.md new file mode 100644 index 00000000000..b536cf52a9b --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/lacinglocation/nl.md @@ -0,0 +1,12 @@ +--- +title: "Lacing location" +--- + +*** + +The **lacing location** controls where the **lacing** option will be implemented. +Options are in the front, or in the back. + + + + diff --git a/markdown/org/docs/designs/tristan/options/lacinglocation/uk.md b/markdown/org/docs/designs/tristan/options/lacinglocation/uk.md new file mode 100644 index 00000000000..b536cf52a9b --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/lacinglocation/uk.md @@ -0,0 +1,12 @@ +--- +title: "Lacing location" +--- + +*** + +The **lacing location** controls where the **lacing** option will be implemented. +Options are in the front, or in the back. + + + + diff --git a/markdown/org/docs/designs/tristan/options/lacingwidth/de.md b/markdown/org/docs/designs/tristan/options/lacingwidth/de.md new file mode 100644 index 00000000000..761b2be3be3 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/lacingwidth/de.md @@ -0,0 +1,11 @@ +--- +title: "Lacing width" +--- + +*** + +The **lacing width** controls the size of the **lacing** opening. + + + + diff --git a/markdown/org/docs/designs/tristan/options/lacingwidth/en.md b/markdown/org/docs/designs/tristan/options/lacingwidth/en.md new file mode 100644 index 00000000000..761b2be3be3 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/lacingwidth/en.md @@ -0,0 +1,11 @@ +--- +title: "Lacing width" +--- + +*** + +The **lacing width** controls the size of the **lacing** opening. + + + + diff --git a/markdown/org/docs/designs/tristan/options/lacingwidth/es.md b/markdown/org/docs/designs/tristan/options/lacingwidth/es.md new file mode 100644 index 00000000000..761b2be3be3 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/lacingwidth/es.md @@ -0,0 +1,11 @@ +--- +title: "Lacing width" +--- + +*** + +The **lacing width** controls the size of the **lacing** opening. + + + + diff --git a/markdown/org/docs/designs/tristan/options/lacingwidth/fr.md b/markdown/org/docs/designs/tristan/options/lacingwidth/fr.md new file mode 100644 index 00000000000..761b2be3be3 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/lacingwidth/fr.md @@ -0,0 +1,11 @@ +--- +title: "Lacing width" +--- + +*** + +The **lacing width** controls the size of the **lacing** opening. + + + + diff --git a/markdown/org/docs/designs/tristan/options/lacingwidth/nl.md b/markdown/org/docs/designs/tristan/options/lacingwidth/nl.md new file mode 100644 index 00000000000..761b2be3be3 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/lacingwidth/nl.md @@ -0,0 +1,11 @@ +--- +title: "Lacing width" +--- + +*** + +The **lacing width** controls the size of the **lacing** opening. + + + + diff --git a/markdown/org/docs/designs/tristan/options/lacingwidth/uk.md b/markdown/org/docs/designs/tristan/options/lacingwidth/uk.md new file mode 100644 index 00000000000..761b2be3be3 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/lacingwidth/uk.md @@ -0,0 +1,11 @@ +--- +title: "Lacing width" +--- + +*** + +The **lacing width** controls the size of the **lacing** opening. + + + + diff --git a/markdown/org/docs/designs/tristan/options/nl.md b/markdown/org/docs/designs/tristan/options/nl.md new file mode 100644 index 00000000000..8eb6e8481db --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/nl.md @@ -0,0 +1,5 @@ +--- +title: "Tristan top: Design Options" +--- + + diff --git a/markdown/org/docs/designs/tristan/options/peplum/de.md b/markdown/org/docs/designs/tristan/options/peplum/de.md new file mode 100644 index 00000000000..85ea4cbb999 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/peplum/de.md @@ -0,0 +1,15 @@ +--- +title: "Peplum option" +--- + +*** + +The **peplum** option creates a peplum along the waist. + + +If the size and fullness are large enough, this can become a dress. + + + + + diff --git a/markdown/org/docs/designs/tristan/options/peplum/en.md b/markdown/org/docs/designs/tristan/options/peplum/en.md new file mode 100644 index 00000000000..85ea4cbb999 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/peplum/en.md @@ -0,0 +1,15 @@ +--- +title: "Peplum option" +--- + +*** + +The **peplum** option creates a peplum along the waist. + + +If the size and fullness are large enough, this can become a dress. + + + + + diff --git a/markdown/org/docs/designs/tristan/options/peplum/es.md b/markdown/org/docs/designs/tristan/options/peplum/es.md new file mode 100644 index 00000000000..85ea4cbb999 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/peplum/es.md @@ -0,0 +1,15 @@ +--- +title: "Peplum option" +--- + +*** + +The **peplum** option creates a peplum along the waist. + + +If the size and fullness are large enough, this can become a dress. + + + + + diff --git a/markdown/org/docs/designs/tristan/options/peplum/fr.md b/markdown/org/docs/designs/tristan/options/peplum/fr.md new file mode 100644 index 00000000000..85ea4cbb999 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/peplum/fr.md @@ -0,0 +1,15 @@ +--- +title: "Peplum option" +--- + +*** + +The **peplum** option creates a peplum along the waist. + + +If the size and fullness are large enough, this can become a dress. + + + + + diff --git a/markdown/org/docs/designs/tristan/options/peplum/nl.md b/markdown/org/docs/designs/tristan/options/peplum/nl.md new file mode 100644 index 00000000000..85ea4cbb999 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/peplum/nl.md @@ -0,0 +1,15 @@ +--- +title: "Peplum option" +--- + +*** + +The **peplum** option creates a peplum along the waist. + + +If the size and fullness are large enough, this can become a dress. + + + + + diff --git a/markdown/org/docs/designs/tristan/options/peplum/uk.md b/markdown/org/docs/designs/tristan/options/peplum/uk.md new file mode 100644 index 00000000000..85ea4cbb999 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/peplum/uk.md @@ -0,0 +1,15 @@ +--- +title: "Peplum option" +--- + +*** + +The **peplum** option creates a peplum along the waist. + + +If the size and fullness are large enough, this can become a dress. + + + + + diff --git a/markdown/org/docs/designs/tristan/options/peplumfullness/de.md b/markdown/org/docs/designs/tristan/options/peplumfullness/de.md new file mode 100644 index 00000000000..564530ded9e --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/peplumfullness/de.md @@ -0,0 +1,16 @@ +[--- +title: "Peplum option" +--- + +*** + +The **peplum** option creates a peplum along the waist. + + +If the size and fullness are large enough, this can become a dress. + + + + + +](../peplum) \ No newline at end of file diff --git a/markdown/org/docs/designs/tristan/options/peplumfullness/en.md b/markdown/org/docs/designs/tristan/options/peplumfullness/en.md new file mode 100644 index 00000000000..6513201ea49 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/peplumfullness/en.md @@ -0,0 +1,12 @@ +--- +title: "Peplum fullness" +--- + +*** + +The **peplum fullness** determines the amount of wrinkles in the peplum. This can +vary between 180 to 360 degree. Think of it as a half-circle to a full-circle skirt. + + + + diff --git a/markdown/org/docs/designs/tristan/options/peplumfullness/es.md b/markdown/org/docs/designs/tristan/options/peplumfullness/es.md new file mode 100644 index 00000000000..564530ded9e --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/peplumfullness/es.md @@ -0,0 +1,16 @@ +[--- +title: "Peplum option" +--- + +*** + +The **peplum** option creates a peplum along the waist. + + +If the size and fullness are large enough, this can become a dress. + + + + + +](../peplum) \ No newline at end of file diff --git a/markdown/org/docs/designs/tristan/options/peplumfullness/fr.md b/markdown/org/docs/designs/tristan/options/peplumfullness/fr.md new file mode 100644 index 00000000000..564530ded9e --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/peplumfullness/fr.md @@ -0,0 +1,16 @@ +[--- +title: "Peplum option" +--- + +*** + +The **peplum** option creates a peplum along the waist. + + +If the size and fullness are large enough, this can become a dress. + + + + + +](../peplum) \ No newline at end of file diff --git a/markdown/org/docs/designs/tristan/options/peplumfullness/nl.md b/markdown/org/docs/designs/tristan/options/peplumfullness/nl.md new file mode 100644 index 00000000000..564530ded9e --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/peplumfullness/nl.md @@ -0,0 +1,16 @@ +[--- +title: "Peplum option" +--- + +*** + +The **peplum** option creates a peplum along the waist. + + +If the size and fullness are large enough, this can become a dress. + + + + + +](../peplum) \ No newline at end of file diff --git a/markdown/org/docs/designs/tristan/options/peplumfullness/uk.md b/markdown/org/docs/designs/tristan/options/peplumfullness/uk.md new file mode 100644 index 00000000000..564530ded9e --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/peplumfullness/uk.md @@ -0,0 +1,16 @@ +[--- +title: "Peplum option" +--- + +*** + +The **peplum** option creates a peplum along the waist. + + +If the size and fullness are large enough, this can become a dress. + + + + + +](../peplum) \ No newline at end of file diff --git a/markdown/org/docs/designs/tristan/options/peplumsize/de.md b/markdown/org/docs/designs/tristan/options/peplumsize/de.md new file mode 100644 index 00000000000..9b7371fcdab --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/peplumsize/de.md @@ -0,0 +1,11 @@ +--- +title: "Peplum Size" +--- + +*** + +The **peplum size** controls the size of the **peplum**. This is a percentage of the length of the front. + + + + diff --git a/markdown/org/docs/designs/tristan/options/peplumsize/en.md b/markdown/org/docs/designs/tristan/options/peplumsize/en.md new file mode 100644 index 00000000000..9b7371fcdab --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/peplumsize/en.md @@ -0,0 +1,11 @@ +--- +title: "Peplum Size" +--- + +*** + +The **peplum size** controls the size of the **peplum**. This is a percentage of the length of the front. + + + + diff --git a/markdown/org/docs/designs/tristan/options/peplumsize/es.md b/markdown/org/docs/designs/tristan/options/peplumsize/es.md new file mode 100644 index 00000000000..9b7371fcdab --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/peplumsize/es.md @@ -0,0 +1,11 @@ +--- +title: "Peplum Size" +--- + +*** + +The **peplum size** controls the size of the **peplum**. This is a percentage of the length of the front. + + + + diff --git a/markdown/org/docs/designs/tristan/options/peplumsize/fr.md b/markdown/org/docs/designs/tristan/options/peplumsize/fr.md new file mode 100644 index 00000000000..9b7371fcdab --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/peplumsize/fr.md @@ -0,0 +1,11 @@ +--- +title: "Peplum Size" +--- + +*** + +The **peplum size** controls the size of the **peplum**. This is a percentage of the length of the front. + + + + diff --git a/markdown/org/docs/designs/tristan/options/peplumsize/nl.md b/markdown/org/docs/designs/tristan/options/peplumsize/nl.md new file mode 100644 index 00000000000..9b7371fcdab --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/peplumsize/nl.md @@ -0,0 +1,11 @@ +--- +title: "Peplum Size" +--- + +*** + +The **peplum size** controls the size of the **peplum**. This is a percentage of the length of the front. + + + + diff --git a/markdown/org/docs/designs/tristan/options/peplumsize/uk.md b/markdown/org/docs/designs/tristan/options/peplumsize/uk.md new file mode 100644 index 00000000000..9b7371fcdab --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/peplumsize/uk.md @@ -0,0 +1,11 @@ +--- +title: "Peplum Size" +--- + +*** + +The **peplum size** controls the size of the **peplum**. This is a percentage of the length of the front. + + + + diff --git a/markdown/org/docs/designs/tristan/options/shoulderdartposition/de.md b/markdown/org/docs/designs/tristan/options/shoulderdartposition/de.md new file mode 100644 index 00000000000..59f83d7e187 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/shoulderdartposition/de.md @@ -0,0 +1,11 @@ +--- +title: "Schulter Abnäher Position" +--- + +*** + +Mit der Option **Schulterabnäherposition** kannst du die Position des Abnähers/der Prinzessinnennaht verschieben. + + + + diff --git a/markdown/org/docs/designs/tristan/options/shoulderdartposition/en.md b/markdown/org/docs/designs/tristan/options/shoulderdartposition/en.md new file mode 100644 index 00000000000..30caccd12d8 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/shoulderdartposition/en.md @@ -0,0 +1,11 @@ +--- +title: "Shoulder Dart Position" +--- + +*** + +The **Shoulder Dart Position** option allows you to move the position of the dart/princess seam. + + + + diff --git a/markdown/org/docs/designs/tristan/options/shoulderdartposition/es.md b/markdown/org/docs/designs/tristan/options/shoulderdartposition/es.md new file mode 100644 index 00000000000..61916134f28 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/shoulderdartposition/es.md @@ -0,0 +1,11 @@ +--- +title: "Posición del dardo en el hombro" +--- + +*** + +La opción **Posición de la pinza en el hombro** te permite mover la posición de la pinza/costura princesa. + + + + diff --git a/markdown/org/docs/designs/tristan/options/shoulderdartposition/fr.md b/markdown/org/docs/designs/tristan/options/shoulderdartposition/fr.md new file mode 100644 index 00000000000..446d901a904 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/shoulderdartposition/fr.md @@ -0,0 +1,11 @@ +--- +title: "Position de la fléchette d'épaule" +--- + +*** + +L'option **Shoulder Dart Position** te permet de déplacer la position de la couture d'échancrure/princesse. + + + + diff --git a/markdown/org/docs/designs/tristan/options/shoulderdartposition/nl.md b/markdown/org/docs/designs/tristan/options/shoulderdartposition/nl.md new file mode 100644 index 00000000000..770eefc1104 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/shoulderdartposition/nl.md @@ -0,0 +1,11 @@ +--- +title: "Schouderpijl Positie" +--- + +*** + +Met de optie **Shoulder Dart Position** kun je de positie van de figuurnaad verplaatsen. + + + + diff --git a/markdown/org/docs/designs/tristan/options/shoulderdartposition/uk.md b/markdown/org/docs/designs/tristan/options/shoulderdartposition/uk.md new file mode 100644 index 00000000000..7fe12a65aaf --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/shoulderdartposition/uk.md @@ -0,0 +1,11 @@ +--- +title: "Положення плечової виточки" +--- + +*** + +Опція **Положення плечової виточки** дозволяє змінювати положення виточки/притачного шва. + + + + diff --git a/markdown/org/docs/designs/tristan/options/shouldertoshoulderease/de.md b/markdown/org/docs/designs/tristan/options/shouldertoshoulderease/de.md new file mode 100644 index 00000000000..737383cac39 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/shouldertoshoulderease/de.md @@ -0,0 +1,11 @@ +--- +title: "Schulter-zu-Schulter-Erleichterung" +--- + +*** + +Mit der Option **Schulter-zu-Schulter-Erleichterung** kannst du eine Erleichterung zwischen den Schultern hinzufügen. + + + + diff --git a/markdown/org/docs/designs/tristan/options/shouldertoshoulderease/en.md b/markdown/org/docs/designs/tristan/options/shouldertoshoulderease/en.md new file mode 100644 index 00000000000..6cd003449bb --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/shouldertoshoulderease/en.md @@ -0,0 +1,11 @@ +--- +title: "Shoulder to Shoulder Ease" +--- + +*** + +The **Shoulder to Shoulder Ease** option allows you to add ease between the shoulders. + + + + diff --git a/markdown/org/docs/designs/tristan/options/shouldertoshoulderease/es.md b/markdown/org/docs/designs/tristan/options/shouldertoshoulderease/es.md new file mode 100644 index 00000000000..ff65b5bf456 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/shouldertoshoulderease/es.md @@ -0,0 +1,11 @@ +--- +title: "Facilidad de Hombro a Hombro" +--- + +*** + +La opción **Facilidad entre hombros** te permite añadir facilidad entre los hombros. + + + + diff --git a/markdown/org/docs/designs/tristan/options/shouldertoshoulderease/fr.md b/markdown/org/docs/designs/tristan/options/shouldertoshoulderease/fr.md new file mode 100644 index 00000000000..a197b3eb507 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/shouldertoshoulderease/fr.md @@ -0,0 +1,11 @@ +--- +title: "Facilité d'épaule à épaule" +--- + +*** + +L'option **Shoulder to Shoulder Ease** te permet d'ajouter de l'aisance entre les épaules. + + + + diff --git a/markdown/org/docs/designs/tristan/options/shouldertoshoulderease/nl.md b/markdown/org/docs/designs/tristan/options/shouldertoshoulderease/nl.md new file mode 100644 index 00000000000..28fed2194eb --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/shouldertoshoulderease/nl.md @@ -0,0 +1,11 @@ +--- +title: "Schouder aan schouder gemak" +--- + +*** + +Met de optie **Shoulder to Shoulder Ease** kun je gemak tussen de schouders toevoegen. + + + + diff --git a/markdown/org/docs/designs/tristan/options/shouldertoshoulderease/uk.md b/markdown/org/docs/designs/tristan/options/shouldertoshoulderease/uk.md new file mode 100644 index 00000000000..97b006f60de --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/shouldertoshoulderease/uk.md @@ -0,0 +1,11 @@ +--- +title: "Легкість від плеча до плеча" +--- + +*** + +Опція **Shoulder to Shoulder Ease** дозволяє додати легкості між плечима. + + + + diff --git a/markdown/org/docs/designs/tristan/options/strapwidth/de.md b/markdown/org/docs/designs/tristan/options/strapwidth/de.md new file mode 100644 index 00000000000..002df59ab43 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/strapwidth/de.md @@ -0,0 +1,11 @@ +--- +title: "Strap width" +--- + +*** + +The **strap width** option controls the width of the shoulder straps. + + + + diff --git a/markdown/org/docs/designs/tristan/options/strapwidth/en.md b/markdown/org/docs/designs/tristan/options/strapwidth/en.md new file mode 100644 index 00000000000..002df59ab43 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/strapwidth/en.md @@ -0,0 +1,11 @@ +--- +title: "Strap width" +--- + +*** + +The **strap width** option controls the width of the shoulder straps. + + + + diff --git a/markdown/org/docs/designs/tristan/options/strapwidth/es.md b/markdown/org/docs/designs/tristan/options/strapwidth/es.md new file mode 100644 index 00000000000..002df59ab43 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/strapwidth/es.md @@ -0,0 +1,11 @@ +--- +title: "Strap width" +--- + +*** + +The **strap width** option controls the width of the shoulder straps. + + + + diff --git a/markdown/org/docs/designs/tristan/options/strapwidth/fr.md b/markdown/org/docs/designs/tristan/options/strapwidth/fr.md new file mode 100644 index 00000000000..002df59ab43 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/strapwidth/fr.md @@ -0,0 +1,11 @@ +--- +title: "Strap width" +--- + +*** + +The **strap width** option controls the width of the shoulder straps. + + + + diff --git a/markdown/org/docs/designs/tristan/options/strapwidth/nl.md b/markdown/org/docs/designs/tristan/options/strapwidth/nl.md new file mode 100644 index 00000000000..002df59ab43 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/strapwidth/nl.md @@ -0,0 +1,11 @@ +--- +title: "Strap width" +--- + +*** + +The **strap width** option controls the width of the shoulder straps. + + + + diff --git a/markdown/org/docs/designs/tristan/options/strapwidth/uk.md b/markdown/org/docs/designs/tristan/options/strapwidth/uk.md new file mode 100644 index 00000000000..002df59ab43 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/strapwidth/uk.md @@ -0,0 +1,11 @@ +--- +title: "Strap width" +--- + +*** + +The **strap width** option controls the width of the shoulder straps. + + + + diff --git a/markdown/org/docs/designs/tristan/options/uk.md b/markdown/org/docs/designs/tristan/options/uk.md new file mode 100644 index 00000000000..8eb6e8481db --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/uk.md @@ -0,0 +1,5 @@ +--- +title: "Tristan top: Design Options" +--- + + diff --git a/markdown/org/docs/designs/tristan/options/upperdartlength/de.md b/markdown/org/docs/designs/tristan/options/upperdartlength/de.md new file mode 100644 index 00000000000..1805e8ba1bc --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/upperdartlength/de.md @@ -0,0 +1,11 @@ +--- +title: "Obere Abnäherlänge" +--- + +*** + +Die **Upper Dart Length** steuert die Länge des oberen Abnähers, der zu 100 % bis zum Brustansatz reicht. + + + + diff --git a/markdown/org/docs/designs/tristan/options/upperdartlength/en.md b/markdown/org/docs/designs/tristan/options/upperdartlength/en.md new file mode 100644 index 00000000000..2a790f863e8 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/upperdartlength/en.md @@ -0,0 +1,11 @@ +--- +title: "Upper Dart Length" +--- + +*** + +The **Upper Dart Length** controls the length of the upper dart, 100% is all the way to the bust point. + + + + diff --git a/markdown/org/docs/designs/tristan/options/upperdartlength/es.md b/markdown/org/docs/designs/tristan/options/upperdartlength/es.md new file mode 100644 index 00000000000..1429e4df5d6 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/upperdartlength/es.md @@ -0,0 +1,11 @@ +--- +title: "Longitud del dardo superior" +--- + +*** + +La página **Longitud del dardo superior** controla la longitud del dardo superior, 100% hasta el punto del pecho. + + + + diff --git a/markdown/org/docs/designs/tristan/options/upperdartlength/fr.md b/markdown/org/docs/designs/tristan/options/upperdartlength/fr.md new file mode 100644 index 00000000000..86ff4e7b3a9 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/upperdartlength/fr.md @@ -0,0 +1,11 @@ +--- +title: "Longueur de la fléchette supérieure" +--- + +*** + +Le site **Upper Dart Length** contrôle la longueur du dard supérieur, 100 % jusqu'à la pointe du buste. + + + + diff --git a/markdown/org/docs/designs/tristan/options/upperdartlength/nl.md b/markdown/org/docs/designs/tristan/options/upperdartlength/nl.md new file mode 100644 index 00000000000..d0da8cbdf1d --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/upperdartlength/nl.md @@ -0,0 +1,11 @@ +--- +title: "Lengte bovenste pijl" +--- + +*** + +De **Bovenpijllengte** regelt de lengte van de bovenpijl, 100% is helemaal tot aan de buste. + + + + diff --git a/markdown/org/docs/designs/tristan/options/upperdartlength/uk.md b/markdown/org/docs/designs/tristan/options/upperdartlength/uk.md new file mode 100644 index 00000000000..d136ded89e5 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/upperdartlength/uk.md @@ -0,0 +1,11 @@ +--- +title: "Довжина верхньої виточки" +--- + +*** + +Довжина верхньої виточки **** регулює довжину верхньої виточки, 100% - це довжина до точки обхвату грудей. + + + + diff --git a/markdown/org/docs/designs/tristan/options/waistdartlength/de.md b/markdown/org/docs/designs/tristan/options/waistdartlength/de.md new file mode 100644 index 00000000000..6dbc3b8b7eb --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/waistdartlength/de.md @@ -0,0 +1,11 @@ +--- +title: "Länge des Taillenabnähers" +--- + +*** + +Die Option **Taillenlänge Dart** steuert die Länge des Taillendarts in Richtung Büste. + + + + diff --git a/markdown/org/docs/designs/tristan/options/waistdartlength/en.md b/markdown/org/docs/designs/tristan/options/waistdartlength/en.md new file mode 100644 index 00000000000..b0c75990481 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/waistdartlength/en.md @@ -0,0 +1,11 @@ +--- +title: "Waist dart length" +--- + +*** + +The **waist dart length** option controls the length of the waist dart towards the bust. + + + + diff --git a/markdown/org/docs/designs/tristan/options/waistdartlength/es.md b/markdown/org/docs/designs/tristan/options/waistdartlength/es.md new file mode 100644 index 00000000000..1cac55d1012 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/waistdartlength/es.md @@ -0,0 +1,11 @@ +--- +title: "Longitud del dart de Waist" +--- + +*** + +La opción de dardos de cintura **** controla la longitud del dardo de cintura hacia el busto. + + + + diff --git a/markdown/org/docs/designs/tristan/options/waistdartlength/fr.md b/markdown/org/docs/designs/tristan/options/waistdartlength/fr.md new file mode 100644 index 00000000000..886ecdad5c1 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/waistdartlength/fr.md @@ -0,0 +1,11 @@ +--- +title: "Longueur de la pince de taille" +--- + +*** + +L'option **longueur de la tige de taille** contrôle la longueur du dart de taille vers le bust. + + + + diff --git a/markdown/org/docs/designs/tristan/options/waistdartlength/nl.md b/markdown/org/docs/designs/tristan/options/waistdartlength/nl.md new file mode 100644 index 00000000000..7e97cb5d4a3 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/waistdartlength/nl.md @@ -0,0 +1,11 @@ +--- +title: "Lengte neep taille" +--- + +*** + +De lengte van de **neep** optie bepaalt de lengte van de neep van de taille naar de bust. + + + + diff --git a/markdown/org/docs/designs/tristan/options/waistdartlength/uk.md b/markdown/org/docs/designs/tristan/options/waistdartlength/uk.md new file mode 100644 index 00000000000..48af2ad243d --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/waistdartlength/uk.md @@ -0,0 +1,11 @@ +--- +title: "Довжина талієвої виточки" +--- + +*** + +Параметр **довжина талієвої виточки** регулює довжину талієвої виточки по відношенню до грудей. + + + + diff --git a/markdown/org/docs/designs/tristan/options/waistdartposition/de.md b/markdown/org/docs/designs/tristan/options/waistdartposition/de.md new file mode 100644 index 00000000000..c602635298b --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/waistdartposition/de.md @@ -0,0 +1,11 @@ +--- +title: "Waist dart position" +--- + +*** + +The **waist dart position** option controls the position of the waist 'dart', moving it to the center (negative) or side (positive). + + + + diff --git a/markdown/org/docs/designs/tristan/options/waistdartposition/en.md b/markdown/org/docs/designs/tristan/options/waistdartposition/en.md new file mode 100644 index 00000000000..c602635298b --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/waistdartposition/en.md @@ -0,0 +1,11 @@ +--- +title: "Waist dart position" +--- + +*** + +The **waist dart position** option controls the position of the waist 'dart', moving it to the center (negative) or side (positive). + + + + diff --git a/markdown/org/docs/designs/tristan/options/waistdartposition/es.md b/markdown/org/docs/designs/tristan/options/waistdartposition/es.md new file mode 100644 index 00000000000..c602635298b --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/waistdartposition/es.md @@ -0,0 +1,11 @@ +--- +title: "Waist dart position" +--- + +*** + +The **waist dart position** option controls the position of the waist 'dart', moving it to the center (negative) or side (positive). + + + + diff --git a/markdown/org/docs/designs/tristan/options/waistdartposition/fr.md b/markdown/org/docs/designs/tristan/options/waistdartposition/fr.md new file mode 100644 index 00000000000..c602635298b --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/waistdartposition/fr.md @@ -0,0 +1,11 @@ +--- +title: "Waist dart position" +--- + +*** + +The **waist dart position** option controls the position of the waist 'dart', moving it to the center (negative) or side (positive). + + + + diff --git a/markdown/org/docs/designs/tristan/options/waistdartposition/nl.md b/markdown/org/docs/designs/tristan/options/waistdartposition/nl.md new file mode 100644 index 00000000000..c602635298b --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/waistdartposition/nl.md @@ -0,0 +1,11 @@ +--- +title: "Waist dart position" +--- + +*** + +The **waist dart position** option controls the position of the waist 'dart', moving it to the center (negative) or side (positive). + + + + diff --git a/markdown/org/docs/designs/tristan/options/waistdartposition/uk.md b/markdown/org/docs/designs/tristan/options/waistdartposition/uk.md new file mode 100644 index 00000000000..c602635298b --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/waistdartposition/uk.md @@ -0,0 +1,11 @@ +--- +title: "Waist dart position" +--- + +*** + +The **waist dart position** option controls the position of the waist 'dart', moving it to the center (negative) or side (positive). + + + + diff --git a/markdown/org/docs/designs/tristan/options/waistease/de.md b/markdown/org/docs/designs/tristan/options/waistease/de.md new file mode 100644 index 00000000000..e22ed3ab4ed --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/waistease/de.md @@ -0,0 +1,11 @@ +--- +title: "Taillenzugabe" +--- + +*** + +Die Option **Taille Leichtigkeit** steuert die Menge der Leichtigkeit in deiner Taille. + + + + diff --git a/markdown/org/docs/designs/tristan/options/waistease/en.md b/markdown/org/docs/designs/tristan/options/waistease/en.md new file mode 100644 index 00000000000..0ca649ecfa9 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/waistease/en.md @@ -0,0 +1,11 @@ +--- +title: "Waist ease" +--- + +*** + +The **waist ease** option controls the amount of ease at your waist. + + + + diff --git a/markdown/org/docs/designs/tristan/options/waistease/es.md b/markdown/org/docs/designs/tristan/options/waistease/es.md new file mode 100644 index 00000000000..8e3d24b0675 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/waistease/es.md @@ -0,0 +1,11 @@ +--- +title: "Holgura de cintura" +--- + +*** + +La opción de facilidad de cintura **** controla la cantidad de facilidad en la cintura. + + + + diff --git a/markdown/org/docs/designs/tristan/options/waistease/fr.md b/markdown/org/docs/designs/tristan/options/waistease/fr.md new file mode 100644 index 00000000000..795048ec78c --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/waistease/fr.md @@ -0,0 +1,11 @@ +--- +title: "Aisance à la taille" +--- + +*** + +L'option **facilitant la taille** contrôle la quantité d'aisance à votre taille. + + + + diff --git a/markdown/org/docs/designs/tristan/options/waistease/nl.md b/markdown/org/docs/designs/tristan/options/waistease/nl.md new file mode 100644 index 00000000000..535bb827372 --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/waistease/nl.md @@ -0,0 +1,11 @@ +--- +title: "Overwijdte taille" +--- + +*** + +De optie **taille overwijdte** bepaalt de hoeveelheid overwijdte aan je taille. + + + + diff --git a/markdown/org/docs/designs/tristan/options/waistease/uk.md b/markdown/org/docs/designs/tristan/options/waistease/uk.md new file mode 100644 index 00000000000..9d00d9774ad --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/waistease/uk.md @@ -0,0 +1,11 @@ +--- +title: "Легкість талії" +--- + +*** + +Опція **полегшення талії** контролює ступінь полегшення талії. + + + + diff --git a/markdown/org/docs/designs/tristan/options/zipperlocation/de.md b/markdown/org/docs/designs/tristan/options/zipperlocation/de.md new file mode 100644 index 00000000000..7868421791b --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/zipperlocation/de.md @@ -0,0 +1,12 @@ +--- +title: "Zipper location" +--- + +*** + +The **zipper location** controls where the zipper should be inserted. +Options are in the front, in the back, or in the side seam. + + + + diff --git a/markdown/org/docs/designs/tristan/options/zipperlocation/en.md b/markdown/org/docs/designs/tristan/options/zipperlocation/en.md new file mode 100644 index 00000000000..7868421791b --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/zipperlocation/en.md @@ -0,0 +1,12 @@ +--- +title: "Zipper location" +--- + +*** + +The **zipper location** controls where the zipper should be inserted. +Options are in the front, in the back, or in the side seam. + + + + diff --git a/markdown/org/docs/designs/tristan/options/zipperlocation/es.md b/markdown/org/docs/designs/tristan/options/zipperlocation/es.md new file mode 100644 index 00000000000..7868421791b --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/zipperlocation/es.md @@ -0,0 +1,12 @@ +--- +title: "Zipper location" +--- + +*** + +The **zipper location** controls where the zipper should be inserted. +Options are in the front, in the back, or in the side seam. + + + + diff --git a/markdown/org/docs/designs/tristan/options/zipperlocation/fr.md b/markdown/org/docs/designs/tristan/options/zipperlocation/fr.md new file mode 100644 index 00000000000..7868421791b --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/zipperlocation/fr.md @@ -0,0 +1,12 @@ +--- +title: "Zipper location" +--- + +*** + +The **zipper location** controls where the zipper should be inserted. +Options are in the front, in the back, or in the side seam. + + + + diff --git a/markdown/org/docs/designs/tristan/options/zipperlocation/nl.md b/markdown/org/docs/designs/tristan/options/zipperlocation/nl.md new file mode 100644 index 00000000000..7868421791b --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/zipperlocation/nl.md @@ -0,0 +1,12 @@ +--- +title: "Zipper location" +--- + +*** + +The **zipper location** controls where the zipper should be inserted. +Options are in the front, in the back, or in the side seam. + + + + diff --git a/markdown/org/docs/designs/tristan/options/zipperlocation/uk.md b/markdown/org/docs/designs/tristan/options/zipperlocation/uk.md new file mode 100644 index 00000000000..7868421791b --- /dev/null +++ b/markdown/org/docs/designs/tristan/options/zipperlocation/uk.md @@ -0,0 +1,12 @@ +--- +title: "Zipper location" +--- + +*** + +The **zipper location** controls where the zipper should be inserted. +Options are in the front, in the back, or in the side seam. + + + + diff --git a/sites/lab/pages/new/tristan.mjs b/sites/lab/pages/new/tristan.mjs new file mode 100644 index 00000000000..cc78e03c87c --- /dev/null +++ b/sites/lab/pages/new/tristan.mjs @@ -0,0 +1,41 @@ +/* + * This page is auto-generated. Do not edit it by hand. + */ +import { Tristan } from 'designs/tristan/src/index.mjs' +// Dependencies +import { serverSideTranslations } from 'next-i18next/serverSideTranslations' +import { nsMerge } from 'shared/utils.mjs' +// Components +import { PageWrapper, ns as pageNs } from 'shared/components/wrappers/page.mjs' +import { Workbench, ns as wbNs } from 'shared/components/workbench/new.mjs' +import { WorkbenchLayout } from 'site/components/layouts/workbench.mjs' + +// Translation namespaces used on this page +const ns = nsMerge('tristan', wbNs, pageNs) + +const NewTristanPage = ({ page, docs }) => ( + + + +) + +export default NewTristanPage + +export async function getStaticProps({ locale }) { + return { + props: { + ...(await serverSideTranslations(locale, ns)), + page: { + locale, + path: ['new', 'tristan'], + title: 'Tristan', + }, + }, + } +} diff --git a/sites/org/pages/account/patterns/tristan/edit.mjs b/sites/org/pages/account/patterns/tristan/edit.mjs new file mode 100644 index 00000000000..a9566759f85 --- /dev/null +++ b/sites/org/pages/account/patterns/tristan/edit.mjs @@ -0,0 +1,86 @@ +/* + * This page is auto-generated. Do not edit it by hand. + */ +import { Tristan } from 'designs/tristan/src/index.mjs' +// Dependencies +import { serverSideTranslations } from 'next-i18next/serverSideTranslations' +import { nsMerge, getSearchParam } from 'shared/utils.mjs' +// Hooks +import { useState, useEffect, useContext } from 'react' +import { useTranslation } from 'next-i18next' +import { useBackend } from 'shared/hooks/use-backend.mjs' +// Context +import { LoadingStatusContext } from 'shared/context/loading-status-context.mjs' +// Components +import { PageWrapper, ns as pageNs } from 'shared/components/wrappers/page.mjs' +import { Workbench, ns as wbNs } from 'shared/components/workbench/new.mjs' +import { WorkbenchLayout } from 'site/components/layouts/workbench.mjs' +import { Loading } from 'shared/components/spinner.mjs' + +// Translation namespaces used on this page +const ns = nsMerge('tristan', wbNs, pageNs) + +const EditDesignComponent = ({ id, design, Design, settings }) => ( + +) + +const EditTristanPage = ({ page }) => { + const { setLoadingStatus } = useContext(LoadingStatusContext) + const backend = useBackend() + const { t } = useTranslation(ns) + + const [pattern, setPattern] = useState(false) + + useEffect(() => { + const getPattern = async () => { + setLoadingStatus([true, t('backendLoadingStarted')]) + let result + try { + result = await backend.getPattern(id) + if (result.success) { + setPattern(result.data.pattern) + setLoadingStatus([true, 'backendLoadingCompleted', true, true]) + } else setLoadingStatus([true, 'backendError', true, false]) + } catch (err) { + console.log(err) + setLoadingStatus([true, 'backendError', true, false]) + } + } + const id = getSearchParam('id') + if (id) getPattern() + }, [backend, setLoadingStatus, t]) + + return ( + // prettier-ignore + + {pattern ? ( + + ) : ( +
+

{t('account:oneMomentPLease')}

+ +
+ )} +
+ ) +} + +export default EditTristanPage + +export async function getStaticProps({ locale }) { + return { + props: { + ...(await serverSideTranslations(locale, ns)), + page: { + locale, + path: ['account', 'patterns', 'tristan'], + title: 'Tristan', + }, + }, + } +} diff --git a/sites/org/pages/new/tristan.mjs b/sites/org/pages/new/tristan.mjs new file mode 100644 index 00000000000..cc78e03c87c --- /dev/null +++ b/sites/org/pages/new/tristan.mjs @@ -0,0 +1,41 @@ +/* + * This page is auto-generated. Do not edit it by hand. + */ +import { Tristan } from 'designs/tristan/src/index.mjs' +// Dependencies +import { serverSideTranslations } from 'next-i18next/serverSideTranslations' +import { nsMerge } from 'shared/utils.mjs' +// Components +import { PageWrapper, ns as pageNs } from 'shared/components/wrappers/page.mjs' +import { Workbench, ns as wbNs } from 'shared/components/workbench/new.mjs' +import { WorkbenchLayout } from 'site/components/layouts/workbench.mjs' + +// Translation namespaces used on this page +const ns = nsMerge('tristan', wbNs, pageNs) + +const NewTristanPage = ({ page, docs }) => ( + + + +) + +export default NewTristanPage + +export async function getStaticProps({ locale }) { + return { + props: { + ...(await serverSideTranslations(locale, ns)), + page: { + locale, + path: ['new', 'tristan'], + title: 'Tristan', + }, + }, + } +} diff --git a/sites/shared/components/designs/linedrawings/index.mjs b/sites/shared/components/designs/linedrawings/index.mjs index 56cbd2dfc8a..1973ecfb850 100644 --- a/sites/shared/components/designs/linedrawings/index.mjs +++ b/sites/shared/components/designs/linedrawings/index.mjs @@ -19,6 +19,11 @@ import { Hortensia, HortensiaFront } from 'shared/components/designs/linedrawing import { Simon, SimonFront, SimonBack } from 'shared/components/designs/linedrawings/simon.mjs' import { Uma, UmaFront, UmaBack } from 'shared/components/designs/linedrawings/uma.mjs' import { Wahid, WahidFront, WahidBack } from 'shared/components/designs/linedrawings/wahid.mjs' +import { + Tristan, + TristanFront, + TristanBack, +} from 'shared/components/designs/linedrawings/tristan.mjs' export const lineDrawingsFront = { aaron: AaronFront, @@ -38,6 +43,7 @@ export const lineDrawingsFront = { simon: SimonFront, uma: UmaFront, wahid: WahidFront, + tristan: TristanFront, } export const lineDrawingsBack = { @@ -53,6 +59,7 @@ export const lineDrawingsBack = { simon: SimonBack, uma: UmaBack, wahid: WahidBack, + tristan: TristanBack, } export const lineDrawings = { @@ -73,4 +80,5 @@ export const lineDrawings = { simon: Simon, uma: Uma, wahid: Wahid, + tristan: Tristan, } diff --git a/sites/shared/components/designs/linedrawings/tristan.mjs b/sites/shared/components/designs/linedrawings/tristan.mjs new file mode 100644 index 00000000000..ac196d25a06 --- /dev/null +++ b/sites/shared/components/designs/linedrawings/tristan.mjs @@ -0,0 +1,86 @@ +import { LineDrawingWrapper, thin } from './shared.mjs' + +const strokeScale = 0.5 + +export const Tristan = ({ + className = 'w-64', // CSS classes to apply + stroke = 1, // Stroke width to use +}) => { + // Normalize stroke across designs + stroke = stroke * strokeScale + + return ( + + + + + ) +} + +/* + * React component for the front + */ +export const TristanFront = ({ + className = 'w-64', // CSS classes to apply + stroke = 1, // Stroke width to use +}) => { + // Normalize stroke across designs + stroke = stroke * strokeScale + + return ( + + + + ) +} + +/* + * React component for the back + */ +export const TristanBack = ({ + className = 'w-64', // CSS classes to apply + stroke = 1, // Stroke width to use +}) => { + // Normalize stroke across designs + stroke = stroke * strokeScale + + return ( + + + + ) +} + +/* + * SVG elements for the front + */ +export const Front = ({ stroke }) => ( + <> + + + +) + +/* + * SVG elements for the back + */ +const Back = ({ stroke }) => ( + <> + + + +)