diff --git a/config/software/designs.json b/config/software/designs.json index 39075f37372..f0bcdbb3042 100644 --- a/config/software/designs.json +++ b/config/software/designs.json @@ -519,6 +519,14 @@ ], "techniques": [] }, + "naomiwu": { + "description": "A FreeSewing pattern for Naomi Wu's signature cargo skirt", + "code": "Joost De Cock", + "design": ["Naomi Wu", "Joost De Cock"], + "difficulty": 3, + "tags": ["bottoms", "skirts"], + "techniques": ["button", "hem", "pocket", "lining"] + }, "noble": { "code": "Wouter Van Wageningen", "description": "A FreeSewing pattern for a princess seam bodice block", diff --git a/designs/naomiwu/CHANGELOG.md b/designs/naomiwu/CHANGELOG.md new file mode 100644 index 00000000000..a9bb531063d --- /dev/null +++ b/designs/naomiwu/CHANGELOG.md @@ -0,0 +1,9 @@ +# Change log for: @freesewing/naomiwu + + + +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/naomiwu/README.md b/designs/naomiwu/README.md new file mode 100644 index 00000000000..d54bfdef401 --- /dev/null +++ b/designs/naomiwu/README.md @@ -0,0 +1,305 @@ +![FreeSewing](https://static.freesewing.org/banner.png) +

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

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

+ +# @freesewing/naomiwu + +A FreeSewing pattern for Naomi Wu's signature cargo skirt + + + + +> #### Note: Version 3 is a work in progress +> +> We are working on a new major version (v3) but it is not ready for prime-time. +> For production use, please refer to our v2 packages (the `latest` on NPM) +> or [the `v2` branch in our monorepo](https://github.com/freesewing/freesewing/tree/v2). +> +> We the `main` branch and `next` packages on NPM holds v3 code. But it's alpha for now. + +## What am I looking at? πŸ€” + +This repository is our *monorepo* holding all our NPM designs, plugins, other NPM packages, and (web)sites. + +This folder holds: @freesewing/naomiwu + +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 +our sewing patterns adapted to your measurements. + +If you're a developer, our documentation is on [freesewing.dev](https://freesewing.dev/). +Our [core library](https://freesewing.dev/reference/api/) is a *batteries-included* toolbox +for parametric design of sewing patterns. But we also provide 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 +``` + +Or, consult our getting started guides +for [Linux](https://freesewing.dev/tutorials/getting-started-linux/), +[MacOS](https://freesewing.dev/tutorials/getting-started-mac/), +or [Windows](https://freesewing.dev/tutorials/getting-started-windows/). + +We also have a [pattern design tutorial](https://freesewing.dev/tutorials/pattern-design/) that +walks you through your first parametric design, +and [a friendly community](https://freesewing.org/community/where/) with +people who can help you when you get stuck. + +## Support FreeSewing: Become a patron πŸ₯° + +FreeSewing is an open source project run by a community, +and financially supported by our patrons. + +If you feel what we do 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 πŸ‘©β€πŸ’» + + - πŸ’» Makers website: [freesewing.org](https://freesewing.org) + - πŸ’» Developers website: [freesewing.dev](https://freesewing.dev) + - πŸ’¬ Chat: On Discord via [discord.freesewing.org](https://discord.freesewing.org/) + - βœ… Todo list/Kanban board: On Github via [todo.freesewing.org](https://todo.freesewing.org/) + - 🐦 Twitter: [@freesewing_org](https://twitter.com/freesewing_org) + - πŸ“· Instagram: [@freesewing_org](https://instagram.com/freesewing_org) + +## 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 🀯 + +Our [chatrooms on Discord](https://chat.freesewing.org/) are the best place to ask questions, +share your feedback, or just hang out. + +If you want to report a problem, please [create an issue](https://github.com/freesewing/freesewing/issues/new). + + + +## Contributors ✨ + +Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Adam Tomkins
Adam Tomkins

πŸ“–
Alexandre Ignjatovic
Alexandre Ignjatovic

πŸ’»
AlfaLyr
AlfaLyr

πŸ’» πŸ”Œ 🎨
Andrew James
Andrew James

πŸ“–
Anneke
Anneke

πŸ“– 🌍
Annie Kao
Annie Kao

πŸ“–
Anternative
Anternative

πŸ“–
Anthony
Anthony

πŸ’¬
Ari Grayzel-student
Ari Grayzel-student

πŸ’»
Bart
Bart

πŸ“–
BenJamesBen
BenJamesBen

πŸ’» πŸ“– πŸ›
Cameron Dubas
Cameron Dubas

πŸ“–
Carsten Biebricher
Carsten Biebricher

πŸ“–
Cathy Zoller
Cathy Zoller

πŸ“–
Chantal Lapointe
Chantal Lapointe

🌍
Damien PIQUET
Damien PIQUET

πŸ’»
Darigov Research
Darigov Research

πŸ“– πŸ€”
David Clegg
David Clegg

🎨 πŸ’»
Elena FdR
Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke
Emmanuel Nyachoke

πŸ’» πŸ“–
Enoch Riese
Enoch Riese

πŸ’»
EvEkSwed
EvEkSwed

🌍
Fantastik-Maman
Fantastik-Maman

🌍
Forrest O.
Forrest O.

πŸ“–
FrΓ©dΓ©ric
FrΓ©dΓ©ric

🌍
Glenn Matthews
Glenn Matthews

πŸ“–
Greg Sadetsky
Greg Sadetsky

πŸ“–
Igor Couto
Igor Couto

πŸ›
Ikko Ashimine
Ikko Ashimine

πŸ“–
Irapeke
Irapeke

🌍
Ivo Bek
Ivo Bek

πŸ“–
Jacek Sawoszczuk
Jacek Sawoszczuk

πŸ“–
Jason Williams
Jason Williams

πŸ“–
Jeremy Jackson
Jeremy Jackson

πŸ’»
Jeroen Hoek
Jeroen Hoek

πŸ“–
Joe Schofield
Joe Schofield

πŸ“–
Joebidido
Joebidido

🌍
Joost De Cock
Joost De Cock

🚧
Josh Essman
Josh Essman

πŸ“–
Kake
Kake

πŸ“–
Kapunahele Wong
Kapunahele Wong

πŸ“–
Karen
Karen

πŸ“– πŸ“‹
Katie McGinley
Katie McGinley

πŸ“–
Kieran Klaassen
Kieran Klaassen

πŸ’»
Kittycatou
Kittycatou

🌍
Kris
Kris

πŸ“–
Kristin Ruben
Kristin Ruben

πŸ’»
Lin
Lin

πŸ’»
Loudepeuter
Loudepeuter

🌍
Lucian
Lucian

πŸ“‹
Luiz Saggioro
Luiz Saggioro

πŸ’»
MA-TATAS
MA-TATAS

πŸ“–
Marcus
Marcus

🌍
Martin Tribo
Martin Tribo

πŸ“–
Nadege Michel
Nadege Michel

⚠️ πŸ“–
Natalia
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler
Nathan Yergler

πŸ“–
Nick Dower
Nick Dower

πŸ“– πŸ’» πŸ›
Nikhil Chelliah
Nikhil Chelliah

πŸ“–
OysteinHoiby
OysteinHoiby

πŸ’»
Patrick Forringer
Patrick Forringer

πŸ”Œ
Paul
Paul

πŸ“– πŸ“ 🌍
Phillip Thelen
Phillip Thelen

πŸ’»
Pixieish
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX
Quentin FELIX

πŸ’» 🎨
Rik Hekker
Rik Hekker

πŸ›
Sam Livingston-Gray
Sam Livingston-Gray

πŸ“–
Sanne
Sanne

πŸ’» πŸ“–
Sara Latorre
Sara Latorre

🌍
SeaZeeZee
SeaZeeZee

πŸ“– πŸ’»
SimonbJohnson
SimonbJohnson

πŸ›
SirCharlotte
SirCharlotte

🌍
Slylele
Slylele

πŸ“– 🌍
Soazillon
Soazillon

🌍
SoneaTheBest
SoneaTheBest

🌍
Stefan Sydow
Stefan Sydow

🌍 πŸ“– πŸ’»
Trent Trama
Trent Trama

πŸ’»
TrΓ­ona
TrΓ­ona

πŸ“–
Unmutual
Unmutual

πŸ“–
Wouter van Wageningen
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews
amysews

πŸ“–
anna-puk
anna-puk

πŸ’»
beautifulsummermoon
beautifulsummermoon

🌍
berce
berce

πŸ“–
biou
biou

πŸ’»
bobgeorgethe3rd
bobgeorgethe3rd

πŸ’» πŸ“– 🎨
brmlyklr
brmlyklr

πŸ“–
chri5b
chri5b

πŸ’» ⚠️
dingcycle
dingcycle

🌍
drowned-in-books
drowned-in-books

πŸ’¬
econo202
econo202

πŸ“–
ericamattos
ericamattos

🌍
evilrobotfromouterspace
evilrobotfromouterspace

πŸ›
fightingrabbit
fightingrabbit

πŸ’»
gaylyndie
gaylyndie

πŸ“–
grimlokason
grimlokason

πŸ’»
hellgy
hellgy

🎨
jackseye
jackseye

πŸ“–
marckiesel
marckiesel

🌍
marpants
marpants

πŸ’»
mergerg
mergerg

πŸ“–
mesil
mesil

πŸ›
starfetch
starfetch

πŸ’» πŸ“– 🌍 🎨
timorl
timorl

πŸ’»
ttimearl
ttimearl

πŸ–‹
tuesgloomsday
tuesgloomsday

πŸ“–
valadaptive
valadaptive

πŸ’»
viocky
viocky

🌍
woolishboy
woolishboy

πŸ’»
yc
yc

🌍
+ + + + + + +This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! + diff --git a/designs/naomiwu/build.mjs b/designs/naomiwu/build.mjs new file mode 100644 index 00000000000..99ace216bc8 --- /dev/null +++ b/designs/naomiwu/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/naomiwu/data.mjs b/designs/naomiwu/data.mjs new file mode 100644 index 00000000000..abd297fc31e --- /dev/null +++ b/designs/naomiwu/data.mjs @@ -0,0 +1,4 @@ +// This file is auto-generated | All changes you make will be overwritten. +export const name = '@freesewing/naomiwu' +export const version = '3.0.0-alpha.10' +export const data = { name, version } diff --git a/designs/naomiwu/i18n/de.json b/designs/naomiwu/i18n/de.json new file mode 100644 index 00000000000..553e1803c5f --- /dev/null +++ b/designs/naomiwu/i18n/de.json @@ -0,0 +1,104 @@ +{ + "t": "Naomi Wu Cargo Skirt", + "d": "This is Naomi's Wu's signature cargo skirt design.", + "s": {}, + "o": { + "backAttachmentDepth": { + "t": "Back attachment depth", + "d": "Controls the depth of the back attachment." + }, + "backAttachmentFlapChamferSize": { + "t": "Back attachment flap chamfer size", + "d": "Controls the size of the chamfer on the back attachment flap." + }, + "backAttachmentWidth": { + "t": "Back attachment width", + "d": "Controls the width of the front attachment." + }, + "backPocketChamferSize": { + "t": "Back pocket chamfer size", + "d": "Controls the size of the chamfer on the back pocket." + }, + "backPocketDepth": { + "t": "Back pocket depth", + "d": "Controls the depth of the back pockets." + }, + "beltloopWidth": { + "t": "Beltloop width", + "d": "Controls the width of the beltloops." + }, + "dartLength": { + "t": "Dart length", + "d": "Controls the length of the darts at the back." + }, + "dartWidth": { + "t": "Dart width", + "d": "Controls the width of the darts at the back." + }, + "flyLength": { + "t": "Fly lengt", + "d": "Controls the length of the fly." + }, + "flyWidth": { + "t": "Fly width", + "d": "Controls the width of the fly." + }, + "frontAttachmentChamferSize": { + "t": "Front attachment chamfer size", + "d": "Controls the size of the chamfer on the front attachment." + }, + "frontAttachmentWidth": { + "t": "Front attachment width", + "d": "Controls the width of the front attachment." + }, + "frontHalf": { + "t": "Front half", + "d": "Controls the proportion of the skirt that will make up the front panel." + }, + "frontPocketOpeningBend": { + "t": "Front pocket opening bend", + "d": "Controls the curvature of the front pocket opening." + }, + "frontPocketOpeningDepth": { + "t": "Front pocket opening depth", + "d": "Controls the depth of the front pocket opening." + }, + "frontPocketOpeningWidth": { + "t": "Front pocket opening width", + "d": "Controls the width of the front pocket opening." + }, + "hipsEase": { + "t": "Hips ease", + "d": "Controls the amount of ease at your hips." + }, + "jseamBend": { + "t": "J-Seam bend", + "d": "Controls the curvature of the J-Seam, that J-shaped seam at the fly." + }, + "length": { + "t": "Length", + "d": "Controls the length of the skirt." + }, + "minDartWidth": { + "t": "Minimal dart width", + "d": "Controls the minimal width below which darts will be ommitted in favor of shaping at the seams." + }, + "seatEase": { + "t": "Seat ease", + "d": "Controls the amount of ease at your seat." + }, + "waistbandOverlap": { + "t": "Waistband overlap", + "d": "Controls how much the waistband overlaps at the front closure." + }, + "waistbandWidth": { + "t": "Waistband width", + "d": "Controls the width of the waistband." + }, + "waistSlant": { + "t": "Waist slant", + "d": "Controls the slant of the waistband, how much the back is raised higher than the front." + } + }, + "p": {} +} diff --git a/designs/naomiwu/i18n/en.json b/designs/naomiwu/i18n/en.json new file mode 100644 index 00000000000..e14012a58b4 --- /dev/null +++ b/designs/naomiwu/i18n/en.json @@ -0,0 +1,137 @@ +{ + "t": "Naomi Wu Cargo Skirt", + "d": "This is Naomi's Wu's signature cargo skirt design.", + "p": { + "backAttachmentBack": "Back Attachment Back", + "backAttachmentFlap": "Back Attachment Flap", + "backAttachmentFront": "Back Attachment Front", + "backPocket": "Back Pocket", + "backPocketFlap": "Back Pocket Flap", + "back": "Back", + "beltLoop": "Belt Loop", + "backBeltLoop": "Back Belt Loop", + "flyShield": "Fly Shield", + "frontAttachmentFacing": "Front Attachment Facing", + "frontAttachment": "Front Attachment", + "frontBase": "Front Base", + "frontFlySide": "Front fly side", + "frontNoFlySide": "Front no-fly side", + "frontNoFlySideLeft": "Front no-fly side (left)", + "frontNoFlySideRight": "Front no-fly side (right)", + "frontFlySideLeft": "Front fly side (left)", + "frontFlySideRight": "Front fly side (right)", + "frontPocketBag": "Front Pocket Bag", + "frontPocketFacing": "Front Pocket Facing", + "shared": "Shared Code", + "waistband": "Waistband" + }, + "s": { + "backAttachmentTooWide": "The **Back attachement** is currently wider than the space between the belt loops.\n\nYou can decrease the width until it fits, or you can leave it as-is but then you will need to modify the beltloop spacing yourself.", + "cutBackAttachmentBack.t": "The back attachement back is not shown", + "cutBackAttachmentBack.d": "The **Back attachement back** is a rectangular piece of fabric {{{ width }}} wide and {{{ length }}} long (this includes seam allowance). This part is not shown because the **expand** core setting is currently disabled. Enable it to show this pattern part.", + "cutBeltLoop.t": "The belt loop is not shown", + "cutBeltLoop.d": "The **Belt loop** is a rectangular piece of fabric {{{ width }}} wide and {{{ length }}} long (this includes seam allowance). You need 6 of them. This part is not shown because the **expand** core setting is currently disabled. Enable it to show this pattern part.", + "cutBackBeltLoop.t": "The back belt loop is not shown", + "cutBackBeltLoop.d": "The **Back belt loop** is a rectangular piece of fabric {{{ width }}} wide and {{{ length }}} long (this includes seam allowance). This part is not shown because the **expand** core setting is currently disabled. Enable it to show this pattern part.", + "cutFlyShield.t": "The fly shield is not shown", + "cutFlyShield.d": "The **Fly shield** is a rectangular piece of fabric {{{ width }}} wide and {{{ length }}} long (this includes seam allowance). This part is not shown because the **expand** core setting is currently disabled. Enable it to show this pattern part." + }, + "o": { + "backAttachmentDepth": { + "t": "Back attachment depth", + "d": "Controls the depth of the back attachment." + }, + "backAttachmentFlapChamferSize": { + "t": "Back attachment flap chamfer size", + "d": "Controls the size of the chamfer on the back attachment flap." + }, + "backAttachmentWidth": { + "t": "Back attachment width", + "d": "Controls the width of the front attachment." + }, + "backPocketChamferSize": { + "t": "Back pocket chamfer size", + "d": "Controls the size of the chamfer on the back pocket." + }, + "backPocketDepth": { + "t": "Back pocket depth", + "d": "Controls the depth of the back pockets." + }, + "beltLoopWidth": { + "t": "Belt loop width", + "d": "Controls the width of the belt loops." + }, + "dartLength": { + "t": "Back dart length", + "d": "Controls the length of the darts at the back." + }, + "dartWidth": { + "t": "Back dart width", + "d": "Controls the width of the darts at the back." + }, + "flyLength": { + "t": "Fly lengt", + "d": "Controls the length of the fly." + }, + "flyWidth": { + "t": "Fly width", + "d": "Controls the width of the fly." + }, + "frontAttachmentChamferSize": { + "t": "Front attachment chamfer size", + "d": "Controls the size of the chamfer on the front attachment." + }, + "frontAttachmentWidth": { + "t": "Front attachment width", + "d": "Controls the width of the front attachment." + }, + "frontHalf": { + "t": "Front half proportion", + "d": "Controls the proportion of the skirt that will make up the front panel." + }, + "frontPocketOpeningBend": { + "t": "Front pocket opening bend", + "d": "Controls the curvature of the front pocket opening." + }, + "frontPocketOpeningDepth": { + "t": "Front pocket opening depth", + "d": "Controls the depth of the front pocket opening." + }, + "frontPocketOpeningWidth": { + "t": "Front pocket opening width", + "d": "Controls the width of the front pocket opening." + }, + "hipsEase": { + "t": "Hips ease", + "d": "Controls the amount of ease at your hips." + }, + "invertFly": { + "t": "Invert the side of the fly", + "d": "Allows you to control the side the fly is on, for convenience of gender-expression." + }, + "jseamBend": { + "t": "J-Seam bend", + "d": "Controls the curvature of the J-Seam, that J-shaped seam at the fly." + }, + "length": { + "t": "Length", + "d": "Controls the length of the skirt." + }, + "minDartWidth": { + "t": "Minimal dart width", + "d": "Controls the minimal width below which darts will be ommitted in favor of shaping at the seams." + }, + "seatEase": { + "t": "Seat ease", + "d": "Controls the amount of ease at your seat." + }, + "waistbandWidth": { + "t": "Waistband width", + "d": "Controls the width of the waistband." + }, + "waistSlant": { + "t": "Waist slant", + "d": "Controls the slant of the waistband, how much the back is raised higher than the front." + } + } +} diff --git a/designs/naomiwu/i18n/es.json b/designs/naomiwu/i18n/es.json new file mode 100644 index 00000000000..553e1803c5f --- /dev/null +++ b/designs/naomiwu/i18n/es.json @@ -0,0 +1,104 @@ +{ + "t": "Naomi Wu Cargo Skirt", + "d": "This is Naomi's Wu's signature cargo skirt design.", + "s": {}, + "o": { + "backAttachmentDepth": { + "t": "Back attachment depth", + "d": "Controls the depth of the back attachment." + }, + "backAttachmentFlapChamferSize": { + "t": "Back attachment flap chamfer size", + "d": "Controls the size of the chamfer on the back attachment flap." + }, + "backAttachmentWidth": { + "t": "Back attachment width", + "d": "Controls the width of the front attachment." + }, + "backPocketChamferSize": { + "t": "Back pocket chamfer size", + "d": "Controls the size of the chamfer on the back pocket." + }, + "backPocketDepth": { + "t": "Back pocket depth", + "d": "Controls the depth of the back pockets." + }, + "beltloopWidth": { + "t": "Beltloop width", + "d": "Controls the width of the beltloops." + }, + "dartLength": { + "t": "Dart length", + "d": "Controls the length of the darts at the back." + }, + "dartWidth": { + "t": "Dart width", + "d": "Controls the width of the darts at the back." + }, + "flyLength": { + "t": "Fly lengt", + "d": "Controls the length of the fly." + }, + "flyWidth": { + "t": "Fly width", + "d": "Controls the width of the fly." + }, + "frontAttachmentChamferSize": { + "t": "Front attachment chamfer size", + "d": "Controls the size of the chamfer on the front attachment." + }, + "frontAttachmentWidth": { + "t": "Front attachment width", + "d": "Controls the width of the front attachment." + }, + "frontHalf": { + "t": "Front half", + "d": "Controls the proportion of the skirt that will make up the front panel." + }, + "frontPocketOpeningBend": { + "t": "Front pocket opening bend", + "d": "Controls the curvature of the front pocket opening." + }, + "frontPocketOpeningDepth": { + "t": "Front pocket opening depth", + "d": "Controls the depth of the front pocket opening." + }, + "frontPocketOpeningWidth": { + "t": "Front pocket opening width", + "d": "Controls the width of the front pocket opening." + }, + "hipsEase": { + "t": "Hips ease", + "d": "Controls the amount of ease at your hips." + }, + "jseamBend": { + "t": "J-Seam bend", + "d": "Controls the curvature of the J-Seam, that J-shaped seam at the fly." + }, + "length": { + "t": "Length", + "d": "Controls the length of the skirt." + }, + "minDartWidth": { + "t": "Minimal dart width", + "d": "Controls the minimal width below which darts will be ommitted in favor of shaping at the seams." + }, + "seatEase": { + "t": "Seat ease", + "d": "Controls the amount of ease at your seat." + }, + "waistbandOverlap": { + "t": "Waistband overlap", + "d": "Controls how much the waistband overlaps at the front closure." + }, + "waistbandWidth": { + "t": "Waistband width", + "d": "Controls the width of the waistband." + }, + "waistSlant": { + "t": "Waist slant", + "d": "Controls the slant of the waistband, how much the back is raised higher than the front." + } + }, + "p": {} +} diff --git a/designs/naomiwu/i18n/fr.json b/designs/naomiwu/i18n/fr.json new file mode 100644 index 00000000000..553e1803c5f --- /dev/null +++ b/designs/naomiwu/i18n/fr.json @@ -0,0 +1,104 @@ +{ + "t": "Naomi Wu Cargo Skirt", + "d": "This is Naomi's Wu's signature cargo skirt design.", + "s": {}, + "o": { + "backAttachmentDepth": { + "t": "Back attachment depth", + "d": "Controls the depth of the back attachment." + }, + "backAttachmentFlapChamferSize": { + "t": "Back attachment flap chamfer size", + "d": "Controls the size of the chamfer on the back attachment flap." + }, + "backAttachmentWidth": { + "t": "Back attachment width", + "d": "Controls the width of the front attachment." + }, + "backPocketChamferSize": { + "t": "Back pocket chamfer size", + "d": "Controls the size of the chamfer on the back pocket." + }, + "backPocketDepth": { + "t": "Back pocket depth", + "d": "Controls the depth of the back pockets." + }, + "beltloopWidth": { + "t": "Beltloop width", + "d": "Controls the width of the beltloops." + }, + "dartLength": { + "t": "Dart length", + "d": "Controls the length of the darts at the back." + }, + "dartWidth": { + "t": "Dart width", + "d": "Controls the width of the darts at the back." + }, + "flyLength": { + "t": "Fly lengt", + "d": "Controls the length of the fly." + }, + "flyWidth": { + "t": "Fly width", + "d": "Controls the width of the fly." + }, + "frontAttachmentChamferSize": { + "t": "Front attachment chamfer size", + "d": "Controls the size of the chamfer on the front attachment." + }, + "frontAttachmentWidth": { + "t": "Front attachment width", + "d": "Controls the width of the front attachment." + }, + "frontHalf": { + "t": "Front half", + "d": "Controls the proportion of the skirt that will make up the front panel." + }, + "frontPocketOpeningBend": { + "t": "Front pocket opening bend", + "d": "Controls the curvature of the front pocket opening." + }, + "frontPocketOpeningDepth": { + "t": "Front pocket opening depth", + "d": "Controls the depth of the front pocket opening." + }, + "frontPocketOpeningWidth": { + "t": "Front pocket opening width", + "d": "Controls the width of the front pocket opening." + }, + "hipsEase": { + "t": "Hips ease", + "d": "Controls the amount of ease at your hips." + }, + "jseamBend": { + "t": "J-Seam bend", + "d": "Controls the curvature of the J-Seam, that J-shaped seam at the fly." + }, + "length": { + "t": "Length", + "d": "Controls the length of the skirt." + }, + "minDartWidth": { + "t": "Minimal dart width", + "d": "Controls the minimal width below which darts will be ommitted in favor of shaping at the seams." + }, + "seatEase": { + "t": "Seat ease", + "d": "Controls the amount of ease at your seat." + }, + "waistbandOverlap": { + "t": "Waistband overlap", + "d": "Controls how much the waistband overlaps at the front closure." + }, + "waistbandWidth": { + "t": "Waistband width", + "d": "Controls the width of the waistband." + }, + "waistSlant": { + "t": "Waist slant", + "d": "Controls the slant of the waistband, how much the back is raised higher than the front." + } + }, + "p": {} +} diff --git a/designs/naomiwu/i18n/index.mjs b/designs/naomiwu/i18n/index.mjs new file mode 100644 index 00000000000..36aac928b67 --- /dev/null +++ b/designs/naomiwu/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/naomiwu/i18n/nl.json b/designs/naomiwu/i18n/nl.json new file mode 100644 index 00000000000..553e1803c5f --- /dev/null +++ b/designs/naomiwu/i18n/nl.json @@ -0,0 +1,104 @@ +{ + "t": "Naomi Wu Cargo Skirt", + "d": "This is Naomi's Wu's signature cargo skirt design.", + "s": {}, + "o": { + "backAttachmentDepth": { + "t": "Back attachment depth", + "d": "Controls the depth of the back attachment." + }, + "backAttachmentFlapChamferSize": { + "t": "Back attachment flap chamfer size", + "d": "Controls the size of the chamfer on the back attachment flap." + }, + "backAttachmentWidth": { + "t": "Back attachment width", + "d": "Controls the width of the front attachment." + }, + "backPocketChamferSize": { + "t": "Back pocket chamfer size", + "d": "Controls the size of the chamfer on the back pocket." + }, + "backPocketDepth": { + "t": "Back pocket depth", + "d": "Controls the depth of the back pockets." + }, + "beltloopWidth": { + "t": "Beltloop width", + "d": "Controls the width of the beltloops." + }, + "dartLength": { + "t": "Dart length", + "d": "Controls the length of the darts at the back." + }, + "dartWidth": { + "t": "Dart width", + "d": "Controls the width of the darts at the back." + }, + "flyLength": { + "t": "Fly lengt", + "d": "Controls the length of the fly." + }, + "flyWidth": { + "t": "Fly width", + "d": "Controls the width of the fly." + }, + "frontAttachmentChamferSize": { + "t": "Front attachment chamfer size", + "d": "Controls the size of the chamfer on the front attachment." + }, + "frontAttachmentWidth": { + "t": "Front attachment width", + "d": "Controls the width of the front attachment." + }, + "frontHalf": { + "t": "Front half", + "d": "Controls the proportion of the skirt that will make up the front panel." + }, + "frontPocketOpeningBend": { + "t": "Front pocket opening bend", + "d": "Controls the curvature of the front pocket opening." + }, + "frontPocketOpeningDepth": { + "t": "Front pocket opening depth", + "d": "Controls the depth of the front pocket opening." + }, + "frontPocketOpeningWidth": { + "t": "Front pocket opening width", + "d": "Controls the width of the front pocket opening." + }, + "hipsEase": { + "t": "Hips ease", + "d": "Controls the amount of ease at your hips." + }, + "jseamBend": { + "t": "J-Seam bend", + "d": "Controls the curvature of the J-Seam, that J-shaped seam at the fly." + }, + "length": { + "t": "Length", + "d": "Controls the length of the skirt." + }, + "minDartWidth": { + "t": "Minimal dart width", + "d": "Controls the minimal width below which darts will be ommitted in favor of shaping at the seams." + }, + "seatEase": { + "t": "Seat ease", + "d": "Controls the amount of ease at your seat." + }, + "waistbandOverlap": { + "t": "Waistband overlap", + "d": "Controls how much the waistband overlaps at the front closure." + }, + "waistbandWidth": { + "t": "Waistband width", + "d": "Controls the width of the waistband." + }, + "waistSlant": { + "t": "Waist slant", + "d": "Controls the slant of the waistband, how much the back is raised higher than the front." + } + }, + "p": {} +} diff --git a/designs/naomiwu/i18n/uk.json b/designs/naomiwu/i18n/uk.json new file mode 100644 index 00000000000..553e1803c5f --- /dev/null +++ b/designs/naomiwu/i18n/uk.json @@ -0,0 +1,104 @@ +{ + "t": "Naomi Wu Cargo Skirt", + "d": "This is Naomi's Wu's signature cargo skirt design.", + "s": {}, + "o": { + "backAttachmentDepth": { + "t": "Back attachment depth", + "d": "Controls the depth of the back attachment." + }, + "backAttachmentFlapChamferSize": { + "t": "Back attachment flap chamfer size", + "d": "Controls the size of the chamfer on the back attachment flap." + }, + "backAttachmentWidth": { + "t": "Back attachment width", + "d": "Controls the width of the front attachment." + }, + "backPocketChamferSize": { + "t": "Back pocket chamfer size", + "d": "Controls the size of the chamfer on the back pocket." + }, + "backPocketDepth": { + "t": "Back pocket depth", + "d": "Controls the depth of the back pockets." + }, + "beltloopWidth": { + "t": "Beltloop width", + "d": "Controls the width of the beltloops." + }, + "dartLength": { + "t": "Dart length", + "d": "Controls the length of the darts at the back." + }, + "dartWidth": { + "t": "Dart width", + "d": "Controls the width of the darts at the back." + }, + "flyLength": { + "t": "Fly lengt", + "d": "Controls the length of the fly." + }, + "flyWidth": { + "t": "Fly width", + "d": "Controls the width of the fly." + }, + "frontAttachmentChamferSize": { + "t": "Front attachment chamfer size", + "d": "Controls the size of the chamfer on the front attachment." + }, + "frontAttachmentWidth": { + "t": "Front attachment width", + "d": "Controls the width of the front attachment." + }, + "frontHalf": { + "t": "Front half", + "d": "Controls the proportion of the skirt that will make up the front panel." + }, + "frontPocketOpeningBend": { + "t": "Front pocket opening bend", + "d": "Controls the curvature of the front pocket opening." + }, + "frontPocketOpeningDepth": { + "t": "Front pocket opening depth", + "d": "Controls the depth of the front pocket opening." + }, + "frontPocketOpeningWidth": { + "t": "Front pocket opening width", + "d": "Controls the width of the front pocket opening." + }, + "hipsEase": { + "t": "Hips ease", + "d": "Controls the amount of ease at your hips." + }, + "jseamBend": { + "t": "J-Seam bend", + "d": "Controls the curvature of the J-Seam, that J-shaped seam at the fly." + }, + "length": { + "t": "Length", + "d": "Controls the length of the skirt." + }, + "minDartWidth": { + "t": "Minimal dart width", + "d": "Controls the minimal width below which darts will be ommitted in favor of shaping at the seams." + }, + "seatEase": { + "t": "Seat ease", + "d": "Controls the amount of ease at your seat." + }, + "waistbandOverlap": { + "t": "Waistband overlap", + "d": "Controls how much the waistband overlaps at the front closure." + }, + "waistbandWidth": { + "t": "Waistband width", + "d": "Controls the width of the waistband." + }, + "waistSlant": { + "t": "Waist slant", + "d": "Controls the slant of the waistband, how much the back is raised higher than the front." + } + }, + "p": {} +} diff --git a/designs/naomiwu/package.json b/designs/naomiwu/package.json new file mode 100644 index 00000000000..9809abbc853 --- /dev/null +++ b/designs/naomiwu/package.json @@ -0,0 +1,73 @@ +{ + "name": "@freesewing/naomiwu", + "version": "3.0.0-alpha.10", + "description": "A FreeSewing pattern for Naomi Wu's signature cargo skirt", + "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-alpha.10" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "10.2.0", + "chai": "4.3.7", + "@freesewing/models": "3.0.0-alpha.10", + "@freesewing/plugin-timing": "3.0.0-alpha.10" + }, + "files": [ + "dist/*", + "README.md" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": "18", + "npm": "9" + } +} diff --git a/designs/naomiwu/src/back-attachment-back.mjs b/designs/naomiwu/src/back-attachment-back.mjs new file mode 100644 index 00000000000..25e52d82dc8 --- /dev/null +++ b/designs/naomiwu/src/back-attachment-back.mjs @@ -0,0 +1,162 @@ +import { waistband } from './waistband.mjs' + +/* + * This is the exported part object + */ +export const backAttachmentBack = { + name: 'naomiwu.backAttachmentBack', // The name in design::part format + draft: draftBackAttachmentBack, // The method to call to draft this part + after: waistband, // Ensure this is drafted after the (imported) waistband part +} + +/* + * This function drafts the back of the back attachment of the skirt + */ +function draftBackAttachmentBack({ + Point, + points, + Path, + paths, + store, + part, + options, + complete, + sa, + snippets, + Snippet, + macro, + expand, + units, + absoluteOptions, +}) { + const width = absoluteOptions.backAttachmentWidth + const height = width * options.backAttachmentDepth + + /* + * Draw the back of the back attachment shape + */ + points.topLeft = new Point(0, 0) + points.topRight = new Point(width, 0) + points.bottomLeft = new Point(0, height) + points.bottomRight = new Point(width, height) + + /* + * Add points to mark the edge of the attachment's front + * Even if expand is off, we need these in other parts + */ + points.frontLeft = points.topLeft.shiftFractionTowards(points.bottomLeft, 0.22) + points.frontRight = new Point(points.topRight.x, points.frontLeft.y) + + /* + * We allow the user to control the back attachment, but warn them when it's + * too wide to fit between the belt loops, because that is inconvenient. + */ + if (absoluteOptions.backAttachmentWidth > store.get('backAttachmentMaxWidth')) { + store.flag.warn({ + msg: 'naomiwu:backAttachmentTooWide', + replace: { + delta: units(absoluteOptions.backAttachmentWidth - store.get('backAttachmentMaxWidth')), + }, + suggest: { + text: 'flag:decrease', + icon: 'down', + update: { + settings: ['options.backAttachmentWidth', options.backAttachmentWidth * 0.9], + }, + }, + }) + } + + if (expand) { + store.flag.preset('expandIsOn') + } else { + // Expand is off, do not draw the part but flag this to the user + store.flag.note({ + msg: `naomiwu:cutBackAttachmentBack`, + replace: { + width: units(width + 2 * sa), + length: units(height + 2 * sa), + }, + suggest: { + text: 'flag:show', + icon: 'expand', + update: { + settings: ['expand', 1], + }, + }, + }) + // Also hint about expand + store.flag.preset('expandIsOff') + + return part.hide() + } + + /* + * The seam line + */ + paths.seam = new Path() + .move(points.topLeft) + .line(points.bottomLeft) + .line(points.bottomRight) + .line(points.topRight) + .line(points.topLeft) + .close() + .addClass('fabric') + + /* + * Add the front edge line + */ + if (complete) + paths.frontEdge = new Path() + .move(points.frontLeft) + .line(points.frontRight) + .addClass('note stroke-sm dashed') + + /* + * Only add SA when it's requested. + * This also adds extra SA to fold under the edge. + */ + if (sa) paths.sa = paths.seam.offset(sa).addClass('fabric sa') + + /* + * Annotations + */ + // Cutlist + store.cutlist.setCut({ cut: 1, from: 'fabric' }) + + /* + * Add the title + */ + points.title = points.frontLeft.shiftFractionTowards(points.bottomRight, 0.5) + macro('title', { + at: points.title, + nr: 12, + title: 'backAttachmentBack', + align: 'center', + scale: 0.666, + }) + + /* + * Add the logo + */ + points.logo = points.title.shift(90, 65) + snippets.logo = new Snippet('logo', points.logo).scale(0.5) + + /* + * Dimensions + */ + macro('hd', { + id: 'width', + from: points.bottomLeft, + to: points.bottomRight, + y: points.bottomLeft.y + sa + 15, + }) + macro('vd', { + id: 'length', + from: points.bottomRight, + to: points.topRight, + x: points.topRight.x + sa + 15, + }) + + return part +} diff --git a/designs/naomiwu/src/back-attachment-flap.mjs b/designs/naomiwu/src/back-attachment-flap.mjs new file mode 100644 index 00000000000..e88777c2008 --- /dev/null +++ b/designs/naomiwu/src/back-attachment-flap.mjs @@ -0,0 +1,140 @@ +import { backAttachmentFront } from './back-attachment-front.mjs' + +/* + * This is the exported part object + */ +export const backAttachmentFlap = { + name: 'naomiwu.backAttachmentFlap', // The name in design::part format + draft: draftBackAttachmentFlap, // The method to call to draft this part + from: backAttachmentFront, // Draft this part starting from the (imported) `backAttachmentBack` part +} + +/* + * This function drafts the flap of the back attachment of the skirt + */ +function draftBackAttachmentFlap({ + Point, + points, + Path, + paths, + store, + part, + options, + complete, + sa, + snippets, + Snippet, + macro, +}) { + /* + * Shorten the bottom + */ + points.bottomLeft = new Point( + points.topLeft.x, + points.velcroBottomLeft.y + points.velcroBottomLeft.dx(points.velcroBottomRight) + ) + points.bottomRight = new Point(points.topRight.x, points.bottomLeft.y) + + /* + * Add chamfer + */ + const size = points.frontRight.x * options.backAttachmentFlapChamferSize + points.chamferLeftTop = points.bottomLeft.shift(90, size) + points.chamferLeftBottom = points.bottomLeft.shift(0, size) + points.chamferRightTop = points.bottomRight.shift(90, size) + points.chamferRightBottom = points.bottomRight.shift(180, size) + + /* + * Extend the velcro strip + */ + points.velcroBottomLeft = new Point(points.velcroBottomLeft.x, points.bottomLeft.y * 0.92) + points.velcroBottomRight = new Point(points.velcroBottomRight.x, points.velcroBottomLeft.y) + + /* + * The seam line + */ + paths.seam = new Path() + .move(points.topLeft) + .line(points.chamferLeftTop) + .line(points.chamferLeftBottom) + .line(points.chamferRightBottom) + .line(points.chamferRightTop) + .line(points.topRight) + .line(points.topLeft) + .close() + .addClass('fabric') + + /* + * Mark the velcro strip + */ + if (complete) { + paths.velcro = new Path() + .move(points.velcroTopLeft) + .line(points.velcroBottomLeft) + .line(points.velcroBottomRight) + .line(points.velcroTopRight) + .line(points.velcroTopLeft) + .close() + .addClass('note stroke-sm dashed') + macro('banner', { + path: paths.velcro, + text: 'velcro', + classes: 'fill-note text-xs', + spaces: 2, + }) + } + + /* + * Only add SA when it's requested. + * This also adds extra SA to fold under the edge. + */ + if (sa) paths.sa = paths.seam.offset(sa).close().addClass('fabric sa') + + /* + * Annotations + */ + + // Cutlist + store.cutlist.setCut({ cut: 1, from: 'fabric' }) + + /* + * Add the title + */ + points.title = points.topLeft.shift(-90, 25).shift(0, 10) + macro('title', { + at: points.title, + nr: 14, + title: 'backAttachmentFlap', + scale: 0.5, + }) + + /* + * Add the logo + */ + points.logo = points.title.shift(-90, 30) + snippets.logo = new Snippet('logo', points.logo).scale(0.333) + + /* + * Dimensions + */ + macro('hd', { + id: 'width', + from: points.bottomLeft, + to: points.bottomRight, + y: points.bottomLeft.y + sa + 15, + }) + macro('vd', { + id: 'length', + from: points.bottomRight, + to: points.topRight, + x: points.topRight.x + sa + 15, + }) + macro('hd', { + id: 'chamferWidth', + from: points.chamferRightBottom, + to: points.chamferRightTop, + y: points.chamferRightTop.y - 15, + }) + + return part +} diff --git a/designs/naomiwu/src/back-attachment-front.mjs b/designs/naomiwu/src/back-attachment-front.mjs new file mode 100644 index 00000000000..8bc053a2dcb --- /dev/null +++ b/designs/naomiwu/src/back-attachment-front.mjs @@ -0,0 +1,121 @@ +import { backAttachmentBack } from './back-attachment-back.mjs' + +/* + * This is the exported part object + */ +export const backAttachmentFront = { + name: 'naomiwu.backAttachmentFront', // The name in design::part format + draft: draftBackAttachmentFront, // The method to call to draft this part + from: backAttachmentBack, // Draft this part starting from the (imported) `backAttachmentBack` part +} + +/* + * This function drafts the front of the back attachment of the skirt + */ +function draftBackAttachmentFront({ points, Path, paths, store, part, complete, sa, macro }) { + /* + * Clear up what we don't need from the backAttachmentBack part + */ + delete paths.frontEdge + + /* + * Add points for the velcro strip + */ + points.velcroTopLeft = points.frontLeft + .shiftFractionTowards(points.frontRight, 0.4) + .shift(-90, points.frontRight.x / 10) + points.velcroTopRight = points.frontRight + .shiftFractionTowards(points.frontLeft, 0.4) + .shift(-90, points.frontRight.x / 10) + points.velcroBottomLeft = points.velcroTopLeft.shift(-90, points.frontRight.x / 3) + points.velcroBottomRight = points.velcroTopRight.shift(-90, points.frontRight.x / 3) + + /* + * The seam line + */ + paths.seam = new Path() + .move(points.frontLeft) + .line(points.bottomLeft) + .line(points.bottomRight) + .line(points.frontRight) + .line(points.frontLeft) + .close() + .addClass('fabric') + + /* + * Mark the velcro strip + */ + if (complete) { + paths.velcro = new Path() + .move(points.velcroTopLeft) + .line(points.velcroBottomLeft) + .line(points.velcroBottomRight) + .line(points.velcroTopRight) + .line(points.velcroTopLeft) + .close() + .addClass('note stroke-sm dashed') + macro('banner', { + path: paths.velcro, + text: 'velcro', + classes: 'fill-note text-xs', + spaces: 2, + }) + } + + /* + * Only add SA when it's requested. + * This also adds extra SA to fold under the edge. + */ + if (sa) + paths.sa = new Path() + .move(points.frontLeft) + .line(points.bottomLeft) + .line(points.bottomRight) + .line(points.frontRight) + .offset(sa) + .join( + new Path() + .move(points.frontRight) + .line(points.frontLeft) + .offset(3 * sa) + ) + .close() + .addClass('fabric sa') + + /* + * Annotations + */ + + // Cutlist + store.cutlist.setCut({ cut: 1, from: 'fabric' }) + + /* + * Add the title + */ + points.title = points.frontLeft.shiftFractionTowards(points.bottomRight, 0.5) + macro('title', { + at: points.title, + nr: 13, + title: 'backAttachmentFront', + align: 'center', + scale: 0.666, + }) + + /* + * Dimensions + */ + macro('hd', { + id: 'width', + from: points.bottomLeft, + to: points.bottomRight, + y: points.bottomLeft.y + sa + 15, + }) + macro('vd', { + id: 'length', + from: points.bottomRight, + to: points.frontRight, + x: points.topRight.x + sa + 15, + }) + + return part +} diff --git a/designs/naomiwu/src/back-belt-loop.mjs b/designs/naomiwu/src/back-belt-loop.mjs new file mode 100644 index 00000000000..6704967fcbe --- /dev/null +++ b/designs/naomiwu/src/back-belt-loop.mjs @@ -0,0 +1,136 @@ +/* + * This is the exported part object + */ +export const backBeltLoop = { + name: 'naomiwu.backBeltLoop', // The name in design::part format + draft: draftBackBeltLoop, // The method to call to draft this part +} + +/* + * This function drafts the waistband of the skirt + */ +function draftBackBeltLoop({ + Point, + points, + Path, + paths, + store, + part, + sa, + expand, + units, + macro, + absoluteOptions, +}) { + const w = absoluteOptions.beltLoopWidth * 4.5 + const h = absoluteOptions.waistbandWidth * 1.5 + + if (expand) { + store.flag.preset('expandIsOn') + } else { + // Expand is off, do not draw the part but flag this to the user + store.flag.note({ + msg: `naomiwu:cutBackBeltLoop`, + replace: { + width: units(w + 4 * sa), + length: units(h + 2 * sa), + }, + suggest: { + text: 'flag:show', + icon: 'expand', + update: { + settings: ['expand', 1], + }, + }, + }) + // Also hint about expand + store.flag.preset('expandIsOff') + + return part.hide() + } + + /* + * It's a rectangle + */ + points.topLeft = new Point(0, 0) + points.topRight = new Point(w, 0) + points.bottomLeft = new Point(0, h) + points.bottomRight = new Point(w, h) + + /* + * Seamline + */ + paths.seam = new Path() + .move(points.topLeft) + .line(points.bottomLeft) + .line(points.bottomRight) + .line(points.topRight) + .line(points.topLeft) + .close() + .addClass('fabric') + + /* + * Only add SA when requested (note that this adds extra SA at the sides for hemming) + */ + if (sa) + paths.sa = new Path() + .move(points.topLeft.shift(180, sa)) + .line(points.bottomLeft.shift(180, sa)) + .line(points.bottomRight.shift(0, sa)) + .line(points.topRight.shift(0, sa)) + .line(points.topLeft.shift(180, sa)) + .close() + .offset(sa) + .addClass('fabric sa') + + /* + * Annotations + */ + + // Cutlist + store.cutlist.setCut({ cut: 6, from: 'fabric' }) + + /* + * Add the title + */ + points.title = points.topLeft.shiftFractionTowards(points.bottomRight, 0.5) + macro('title', { + at: points.title, + nr: 15, + title: 'beltLoop', + align: 'center', + scale: 0.666, + }) + + /* + * Add a grainline indicator + */ + points.grainlineTop = points.topLeft.shift(0, 7) + points.grainlineBottom = points.bottomLeft.shift(0, 7) + macro('grainline', { + from: points.grainlineBottom, + to: points.grainlineTop, + classes: { + line: 'stroke-sm note', + text: 'text-sm fill-note center', + }, + }) + + /* + * Dimensions + */ + macro('hd', { + id: 'wFull', + from: points.bottomLeft, + to: points.bottomRight, + y: points.bottomLeft.y + 15 + sa, + }) + macro('vd', { + id: 'hFull', + from: points.bottomRight, + to: points.topRight, + x: points.topRight.x + 15 + 2 * sa, + }) + + return part +} diff --git a/designs/naomiwu/src/back-pocket-flap.mjs b/designs/naomiwu/src/back-pocket-flap.mjs new file mode 100644 index 00000000000..545a34848cb --- /dev/null +++ b/designs/naomiwu/src/back-pocket-flap.mjs @@ -0,0 +1,93 @@ +import { backPocket } from './back-pocket.mjs' + +/* + * This is the exported part object + */ +export const backPocketFlap = { + name: 'naomiwu.backPocketFlap', // The name in design::part format + draft: draftBackPocketFlap, // The method to call to draft this part + from: backPocket, // Draft this part starting from the (imported) `backPocket` part +} + +/* + * This function drafts the back pocket flap of the skirt + */ +function draftBackPocketFlap({ Point, points, paths, store, part, sa, snippets, Snippet, macro }) { + /* + * Clean up what we don't need from the backPocket part + */ + delete paths.pocket + macro('rmvd', 'height') + macro('rmhd', 'width') + macro('rmhd', 'wChamfer') + macro('rmvd', 'hChamfer') + + /* + * The seam line + */ + paths.seam = paths.flap.clone().setClass('fabric') + paths.flap.hide() + + /* + * Only add SA when it's requested + */ + if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') + + /* + * Annotations + */ + + // Cutlist + store.cutlist.setCut({ cut: 2, from: 'fabric' }) + + /* + * Add the title + */ + points.title = points.pocketTopLeft.shiftFractionTowards(points.flapBottomLeft, 0.6).shift(0, 20) + macro('title', { + at: points.title, + nr: 11, + title: 'backPocketFlap', + scale: 0.7, + }) + + /* + * Add the logo + */ + points.logo = points.title.shift(0, 70) + snippets.logo = new Snippet('logo', points.logo).scale(0.5) + + /* + * Add a grainline indicator + */ + points.grainlineBottom = points.flapBottomLeft.shift(0, 10) + points.grainlineTop = new Point(points.grainlineBottom.x, points.flapTopRight.y) + macro('grainline', { + from: points.grainlineBottom, + to: points.grainlineTop, + }) + + /* + * Dimensions + */ + macro('vd', { + id: 'leftHeight', + from: points.flapBottomLeft, + to: points.flapTopLeft, + x: points.flapTopLeft.x - sa - 15, + }) + macro('vd', { + id: 'rightHeight', + from: points.flapBottomRight, + to: points.flapTopRight, + x: points.flapTopRight.x + sa + 15, + }) + macro('hd', { + id: 'width', + from: points.flapTopLeft, + to: points.flapTopRight, + y: points.flapTopRight.y - sa - 15, + }) + + return part +} diff --git a/designs/naomiwu/src/back-pocket.mjs b/designs/naomiwu/src/back-pocket.mjs new file mode 100644 index 00000000000..6238a429c85 --- /dev/null +++ b/designs/naomiwu/src/back-pocket.mjs @@ -0,0 +1,132 @@ +import { back } from './back.mjs' + +/* + * This is the exported part object + */ +export const backPocket = { + name: 'naomiwu.backPocket', // The name in design::part format + draft: draftBackPocket, // The method to call to draft this part + from: back, // Draft this part starting from the (imported) `back` part +} + +/* + * This function drafts the back pocket of the skirt + */ +function draftBackPocket({ + Point, + points, + Path, + paths, + store, + part, + complete, + sa, + snippets, + Snippet, + macro, +}) { + /* + * Clean up what we don't need from the back part + */ + delete paths.cb + delete paths.hem + delete paths.hipLine + delete paths.side + delete paths.backSeam + if (!complete) delete paths.flap + delete snippets['dartLeft-bnotch'] + delete snippets['dartRight-bnotch'] + delete snippets['dartTip-bnotch'] + macro('rmad') + + /* + * The seam line + */ + paths.pocket.hide() + paths.seam = paths.pocket.clone().setClass('fabric').unhide() + + /* + * Only add SA when it's requested. + * This also adds extra SA to fold under the edge. + */ + if (sa) + paths.sa = new Path() + .move(points.pocketTopLeft) + .line(points.chamferLeftTop) + .line(points.chamferLeft) + .line(points.chamferRight) + .line(points.chamferRightTop) + .line(points.pocketTopRight) + .offset(sa) + .join( + new Path() + .move(points.pocketTopRight) + .line(points.pocketTopLeft) + .offset(3 * sa) + ) + .close() + .attr('class', 'fabric sa') + + /* + * Annotations + */ + + // Cutlist + store.cutlist.setCut({ cut: 2, from: 'fabric' }) + + /* + * Add the title + */ + points.title = points.pocketTopLeft.shiftFractionTowards(points.chamferLeft, 0.5) + macro('title', { + at: points.title, + nr: 10, + title: 'backPocket', + }) + + /* + * Add the logo + */ + points.logo = points.title.shift(20, 80) + snippets.logo = new Snippet('logo', points.logo).scale(0.5) + + /* + * Add the grainline indicator + */ + points.grainlineBottom = points.chamferRight.shiftFractionTowards(points.chamferLeft, 0.1) + points.grainlineTop = new Point(points.grainlineBottom.x, points.pocketTopRight.y) + macro('grainline', { + from: points.grainlineBottom, + to: points.grainlineTop, + }) + + /* + * Dimensions + */ + macro('hd', { + id: 'wChamfer', + from: points.chamferRight, + to: points.chamferRightTop, + y: points.chamferLeft.y + sa + 15, + }) + macro('hd', { + id: 'width', + from: points.chamferLeftTop, + to: points.chamferRightTop, + y: points.chamferLeft.y + sa + 30, + }) + macro('vd', { + id: 'hChamfer', + from: points.chamferRight, + to: points.chamferRightTop, + x: points.pocketTopRight.x + sa + 15, + }) + macro('vd', { + id: 'height', + from: points.chamferRight, + to: points.pocketTopRight, + x: points.pocketTopRight.x + sa + 30, + }) + + return part +} diff --git a/designs/naomiwu/src/back.mjs b/designs/naomiwu/src/back.mjs new file mode 100644 index 00000000000..f804b1b3803 --- /dev/null +++ b/designs/naomiwu/src/back.mjs @@ -0,0 +1,405 @@ +import { shared } from './shared.mjs' + +/* + * This is the exported part object + */ +export const back = { + name: 'naomiwu.back', // The name in design::part format + draft: draftBack, // The method to call to draft this part + after: shared, // Indicate the `shared` part (see import above) needs to be drafted prior to this part +} + +/* + * This function drafts the back panel of the skirt + */ +function draftBack({ + Point, + points, + Path, + paths, + store, + part, + options, + complete, + sa, + snippets, + Snippet, + macro, + absoluteOptions, +}) { + /* + * How much we need to reduce from seat to hips + */ + const reduce = store.get('hipsQuarterReduction') + + /* + * Do we need to add darts? + * Shaping happens at both back panels, so everthing we take out is doubled. + * In addition, shaping happens on both side seam and dart, so doubled again + * So only if the total reduction is more than 4x the minimal dart width do we add darts + */ + store.set( + 'darts', + store.get('hipsQuarterReduction') > 4 * absoluteOptions.minDartWidth ? true : false + ) + + /* + * How much shaping should we add in the panel? + */ + const shaping = store.get('darts') ? reduce - absoluteOptions.dartWidth * 2 : reduce + + /* + * We start with drawing a simple skirt outline for the back panel + */ + points.topLeft = new Point(shaping / 2, 0) + points.topCp = new Point(store.get('backQuarterHips') / 2, 0) + points.topRight = new Point( + points.topLeft.x + store.get('backQuarterHips'), + absoluteOptions.waistSlant + ) + points.bottomLeft = new Point(0, points.topRight.y + absoluteOptions.length) + points.bottomRight = new Point(store.get('backQuarterSeat'), points.bottomLeft.y) + + /* + * To find the top of the dart is easy if the waistline is a straight line. + * However, if the `waistSlant` option is non-zero, the waistline will be a curve. + * So we need to follow that curve to find a point on it to use as the middle for the dart. + * Store the hipline curve/line so we can re-use it later, but hide it from the output. + */ + paths.hipLine = + options.waistSlant > 0 + ? new Path().move(points.topRight)._curve(points.topCp, points.topLeft).hide() + : new Path().move(points.topRight).line(points.topLeft).hide() + + /* + * Store the waist length so we can accurately notch the waistband + */ + store.set('backHipLength', paths.hipLine.length()) + + /* + * Add back darts, but only if they are not too narrow to sew + */ + if (store.get('darts')) { + /* + * Find the middle of the hipline + */ + points.dartTopMiddle = paths.hipLine.shiftFractionAlong(0.5) + /* + * Bottom of the dart is controlled by the dart length option which is a factor + * of the distance between hipline and seatline. + */ + points.dartTip = points.dartTopMiddle.shift(-90, absoluteOptions.dartLength) + /* + * Now open up the dart + */ + const len = store.get('backHipLength') + points.dartRight = paths.hipLine.shiftAlong(len / 2 - absoluteOptions.dartWidth) + points.dartLeft = paths.hipLine.shiftAlong(len / 2 + absoluteOptions.dartWidth) + /* + * Finally, move the topRight point outwards to compensate for the draft shaping + * If the hipLine is curved, this is not a 100% accurate match as we need to extende the + * curve further than it goes. However, by going in a straight line from the dartRight + * to the topRight point, we will follow the general direction of the curve and things will + * smooth out + */ + points.topRight = points.dartRight.shiftOutwards(points.topRight, absoluteOptions.dartWidth * 2) + } + + /* + * Draw the back pockets, or at least their outline + * We only create the points here, we will only include this outline of the user requests a + * complete pattern (see below) + */ + points.waistCenter = points.topLeft.shiftFractionTowards(points.topRight, 0.5) + points.hemCenter = new Point(points.waistCenter.x, points.bottomRight.y) + points.pocketBottomRight = points.hemCenter.shiftFractionTowards(points.bottomRight, 0.75) + points.pocketBottomLeft = points.hemCenter.shiftFractionTowards(points.bottomRight, -0.75) + points.pocketTopRight = points.pocketBottomRight.shift( + -90, + points.pocketBottomRight.dy(points.topRight) * options.backPocketDepth + ) + points.pocketTopLeft = new Point(points.pocketBottomLeft.x, points.pocketTopRight.y) + points.chamferLeft = points.pocketBottomLeft.shiftFractionTowards( + points.pocketBottomRight, + options.backPocketChamferSize + ) + points.chamferRight = points.pocketBottomRight.shiftFractionTowards( + points.pocketBottomLeft, + options.backPocketChamferSize + ) + points.chamferLeftTop = points.chamferLeft.rotate(90, points.pocketBottomLeft) + points.chamferRightTop = new Point(points.pocketBottomRight.x, points.chamferLeftTop.y) + + /* + * Also draw the back pocket flap outline + * We only create the points here, we will only include this outline of the user requests a + * complete pattern (see below) + */ + points.flapTopLeft = points.pocketTopRight.shiftFractionTowards(points.pocketTopLeft, 1.02) + points.flapTopRight = points.pocketTopLeft.shiftFractionTowards(points.pocketTopRight, 1.02) + points.flapBottomLeft = points.flapTopLeft.shift( + -90, + points.flapTopLeft.dy(points.pocketBottomLeft) / 3 + ) + points.flapBottomRight = points.flapTopRight.shift( + -90, + points.flapTopLeft.dy(points.pocketBottomLeft) / 4 + ) + + /* + * Draw the actual seamline + */ + paths.seam = new Path() + .move(points.topLeft) + .line(points.bottomLeft) + .line(points.bottomRight) + .line(points.topRight) + if (store.get('darts')) { + paths.seam = paths.seam + .join(paths.hipLine.split(points.dartRight).shift()) + .line(points.dartTip) + .line(points.dartLeft) + .join(paths.hipLine.split(points.dartLeft).pop()) + } else paths.seam._curve(points.topCp, points.topLeft) + + /* + * Apply CSS classes and close the seamline path + */ + paths.seam.addClass('fabric').close() + + /* + * Draw the outline of the back pocket on the pattern in dashed line so that people + * have a visual guide for where the pocket should go when constructing the skirt + * (but only if the user wants a complete pattern) + */ + paths.pocket = new Path() + .move(points.pocketTopLeft) + .line(points.chamferLeftTop) + .line(points.chamferLeft) + .line(points.chamferRight) + .line(points.chamferRightTop) + .line(points.pocketTopRight) + .line(points.pocketTopLeft) + .close() + .addClass('note dashed stroke-sm') + .hide() + + /* + * Does the user want seam allowance (sa) included on the pattern? + */ + if (sa) { + /* + * Our dart complicates matters, so we need a version without the dart as the SA base + * We also need to make sure the hem allowance is different/bigger + */ + paths.saBase = new Path() + .move(points.topLeft) + .line(points.bottomLeft) + .line(points.bottomLeft.shift(-90, 2 * sa)) // extra hem SA + .line(points.bottomRight.shift(-90, 2 * sa)) // extra hem SA + .line(points.bottomRight) + .line(points.topRight) + .join(paths.hipLine) + .close() + .hide() + paths.sa = paths.saBase.offset(sa).attr('class', 'fabric sa') + } + + /* + * Store the side seam length so we can match it in the front part + */ + store.set('sideSeam', points.topRight.dist(points.bottomRight)) + + /* + * If the user wants a complete pattern, let's add some more guidance + */ + if (complete) { + /* + * Show the pocket outline + */ + paths.pocket.unhide() + + /* + * Some thing with the pocket flap. Note that drawing both pocket and pocket flap + * also helps people know which side is up, so to speak. + */ + paths.flap = new Path() + .move(points.flapTopRight) + .line(points.flapTopLeft) + .line(points.flapBottomLeft) + .line(points.flapBottomRight) + .line(points.flapTopRight) + .close() + .addClass('note dashed stroke-sm') + + /* + * Add a note on the center back seam (CB) to clarify this is center back + */ + paths.cb = new Path() + .move(points.bottomLeft) + .line(points.topLeft) + .addText('centerBack', 'center fill-note text-sm') + .attr('data-text-dy', 8) + /* + * Add a note on the side seam to clarify this is the side + */ + paths.side = new Path() + .move(points.bottomRight) + .line(points.topRight) + .addClass('hidden') + .addText('sideSeam', 'center fill-note text-sm') + .attr('data-text-dy', -1) + /* + * Add a note on the hem to clarify this is the hem + */ + paths.hem = new Path() + .move(points.bottomLeft) + .line(points.bottomRight) + .addClass('hidden') + .addText('hem', 'center fill-note text-sm') + .attr('data-text-dy', -1) + /* + * Add a note on the top seam to clarify this is where the waistband shoud be attached + */ + points.topRight + .addText('attachWaistband', 'fill-note right text-sm') + .attr('data-text-dy', 8) + .attr('data-text-dx', -8) + points.topLeft + .addText('attachWaistband', 'fill-note left text-sm') + .attr('data-text-dy', 8) + .attr('data-text-dx', 8) + } + + /* + * Annotations + */ + + // Cutlist + store.cutlist.setCut({ cut: 2, from: 'fabric' }) + + /* + * Add skully, the FreeSewing logo :) + */ + points.logo = points.topLeft + .shiftFractionTowards(points.bottomLeft, 0.3) + .shift(0, points.topRight.x / 4) + snippets.logo = new Snippet('logo', points.logo) + + /* + * Add a title for this part + */ + points.title = points.logo.shift(-90, 70) + macro('title', { + at: points.title, + nr: 1, + title: 'back', + }) + + /* + * Add a grainline to indicate the fabric grain + */ + points.grainlineTop = points.topRight.shift(225, 25) + points.grainlineBottom = new Point(points.grainlineTop.x, points.bottomRight.y - 25) + macro('grainline', { + from: points.grainlineBottom, + to: points.grainlineTop, + }) + + /* + * Add (back) notches + */ + const notches = ['pocketTopLeft', 'pocketTopRight'] + if (store.get('darts')) notches.push('dartLeft', 'dartRight', 'dartTip') + macro('sprinkle', { + snippet: 'bnotch', + on: notches, + }) + + // Add dimensions + if (points.topLeft.x > points.bottomLeft.x) { + macro('hd', { + id: 'bottomWidth', + from: points.bottomLeft, + to: points.bottomRight, + y: points.bottomLeft.y + 3 * sa + 30, + }) + macro('hd', { + id: 'topLeftToBottomWidth', + from: points.topLeft, + to: points.bottomRight, + y: points.bottomLeft.y + 3 * sa + 15, + }) + macro('hd', { + id: 'wCbWaistToSideWaist', + from: points.topLeft, + to: points.topRight, + y: points.topLeft.y - sa - 15, + }) + macro('hd', { + id: 'topWidth', + from: points.bottomLeft, + to: points.topRight, + y: points.topLeft.y - sa - 30, + }) + } else { + macro('hd', { + id: 'bottomWidth', + from: points.bottomLeft, + to: points.bottomRight, + y: points.bottomLeft.y + 3 * sa + 15, + }) + macro('hd', { + id: 'topLeftToBottomWidth', + from: points.topLeft, + to: points.bottomRight, + y: points.bottomLeft.y + 3 * sa + 30, + }) + macro('hd', { + id: 'bottomLeftToTopWidth', + from: points.bottomLeft, + to: points.topRight, + y: points.topLeft.y - sa - 15, + }) + macro('hd', { + id: 'topWidth', + from: points.topLeft, + to: points.topRight, + y: points.topLeft.y - sa - 30, + }) + } + if (store.get('darts')) { + macro('hd', { + id: 'topLeftToDartWidth', + from: points.topLeft, + to: points.dartLeft, + y: points.topLeft.y + 15, + }) + macro('hd', { + id: 'topRightToDartWidth', + from: points.dartRight, + to: points.topRight, + y: points.topLeft.y + 15, + }) + macro('hd', { + id: 'dartWidth', + from: points.dartLeft, + to: points.dartRight, + y: points.dartTip.y + 15, + }) + macro('vd', { + id: 'dartLength', + from: points.dartTip, + to: points.dartRight, + x: points.dartRight.x + 15, + }) + } + macro('vd', { + id: 'rightHeight', + from: points.bottomRight, + to: points.topRight, + x: points.topRight.x + sa + 15, + }) + + return part +} diff --git a/designs/naomiwu/src/belt-loop.mjs b/designs/naomiwu/src/belt-loop.mjs new file mode 100644 index 00000000000..f95ffd28191 --- /dev/null +++ b/designs/naomiwu/src/belt-loop.mjs @@ -0,0 +1,127 @@ +/* + * This is the exported part object + */ +export const beltLoop = { + name: 'naomiwu.beltLoop', // The name in design::part format + draft: draftBeltLoop, // The method to call to draft this part +} + +/* + * This function drafts the waistband of the skirt + */ +function draftBeltLoop({ + Point, + points, + Path, + paths, + store, + part, + sa, + expand, + units, + macro, + absoluteOptions, +}) { + const w = absoluteOptions.beltLoopWidth + const h = absoluteOptions.waistbandWidth * 1.5 + + if (expand) { + store.flag.preset('expandIsOn') + } else { + // Expand is off, do not draw the part but flag this to the user + store.flag.note({ + msg: `naomiwu:cutBeltLoop`, + replace: { + width: units(w + 2 * sa), + length: units(h + 2 * sa), + }, + suggest: { + text: 'flag:show', + icon: 'expand', + update: { + settings: ['expand', 1], + }, + }, + }) + // Also hint about expand + store.flag.preset('expandIsOff') + + return part.hide() + } + + /* + * It's a rectangle + */ + points.topLeft = new Point(0, 0) + points.topRight = new Point(w, 0) + points.bottomLeft = new Point(0, h) + points.bottomRight = new Point(w, h) + + /* + * Seamline + */ + paths.seam = new Path() + .move(points.topLeft) + .line(points.bottomLeft) + .line(points.bottomRight) + .line(points.topRight) + .line(points.topLeft) + .close() + .addClass('fabric') + + /* + * Only add SA when requested + */ + if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') + + /* + * Annotations + */ + + // Cutlist + store.cutlist.setCut({ cut: 6, from: 'fabric' }) + + /* + * Add the title + */ + points.title = points.topLeft.shiftFractionTowards(points.bottomRight, 0.5) + macro('title', { + at: points.title, + nr: 15, + title: 'beltLoop', + align: 'center', + scale: 0.333, + }) + + /* + * Add a grainline indicator + */ + points.grainlineTop = points.topLeft.shift(0, 5) + points.grainlineBottom = points.bottomLeft.shift(0, 5) + macro('grainline', { + from: points.grainlineBottom, + to: points.grainlineTop, + classes: { + line: 'stroke-sm note', + text: 'text-xs fill-note center', + }, + }) + + /* + * Dimensions + */ + macro('hd', { + id: 'wFull', + from: points.bottomLeft, + to: points.bottomRight, + y: points.bottomLeft.y + 15 + sa, + }) + macro('vd', { + id: 'hFull', + from: points.bottomRight, + to: points.topRight, + x: points.topRight.x + 15 + sa, + }) + + return part +} diff --git a/designs/naomiwu/src/fly-shield.mjs b/designs/naomiwu/src/fly-shield.mjs new file mode 100644 index 00000000000..28183c52cfa --- /dev/null +++ b/designs/naomiwu/src/fly-shield.mjs @@ -0,0 +1,149 @@ +/* + * This is the exported part object + */ +export const flyShield = { + name: 'naomiwu.flyShield', // The name in the form of design::name + draft: draftFlyShield, // The method to call for drafting this part +} + +/* + * This function drafts the fly shield. + * Giving it a descriptive name is optional, but helps with debugging. + */ +function draftFlyShield({ + Point, + points, + Path, + paths, + part, + complete, + store, + units, + sa, + expand, + macro, + absoluteOptions, +}) { + /* + * Save ourselves some typing by storing width and height + */ + const w = absoluteOptions.flyWidth + const h = absoluteOptions.flyLength * 1.05 // A bit longer than the fly so the seam will catch + + if (expand) { + store.flag.preset('expandIsOn') + } else { + // Expand is off, do not draw the part but flag this to the user + store.flag.note({ + msg: `naomiwu:cutFlyShield`, + replace: { + width: units(w + 2 * sa), + length: units(h + 2 * sa), + }, + suggest: { + text: 'flag:show', + icon: 'expand', + update: { + settings: ['expand', 1], + }, + }, + }) + // Also hint about expand + store.flag.preset('expandIsOff') + + return part.hide() + } + + /* + * Fly shield is a simple rectangle folder in half + */ + points.topLeft = new Point(0, 0) + points.topMid = new Point(w, 0) + points.topRight = new Point(2 * w, 0) + points.bottomLeft = new Point(0, h) + points.bottomMid = new Point(w, h) + points.bottomRight = new Point(2 * w, h) + + /* + * The seam line + */ + paths.seam = new Path() + .move(points.topLeft) + .line(points.bottomLeft) + .line(points.bottomRight) + .line(points.topRight) + .line(points.topLeft) + .close() + .addClass('fabric') + + /* + * Add seam allowance only when requested + */ + if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') + + /* + * If the user wants a complete pattern, let's add some more guidance + */ + if (complete) { + /* + * Indicate this needs to be folded in half + */ + paths.fold = new Path().move(points.bottomMid).line(points.topMid).addClass('note help') + + /* + * Print a message that it needs to be holded in half + */ + macro('banner', { + path: paths.fold, + text: 'foldHere', + className: 'text-sm fill-note', + }) + } + + /* + * Annotations + */ + + // Cutlist + store.cutlist.setCut({ cut: 1, from: 'fabric' }) + + /* + * Add a title + */ + points.title = points.topMid.shiftFractionTowards(points.bottomMid, 0.5) + macro('title', { + at: points.title, + nr: 4, + title: 'flyShield', + scale: 0.6, + align: 'center', + }) + + /* + * Add the grainline + */ + points.grainlineTop = points.topLeft.shiftFractionTowards(points.topMid, 0.5) + points.grainlineBottom = new Point(points.grainlineTop.x, points.bottomLeft.y) + macro('grainline', { + from: points.grainlineBottom, + to: points.grainlineTop, + }) + + /* + * Add dimensions + */ + macro('hd', { + id: 'wFull', + from: points.bottomLeft, + to: points.bottomRight, + y: points.bottomLeft.y + sa + 15, + }) + macro('vd', { + id: 'hFull', + from: points.bottomRight, + to: points.topRight, + x: points.bottomRight.x + sa + 15, + }) + + return part +} diff --git a/designs/naomiwu/src/front-attachment-facing.mjs b/designs/naomiwu/src/front-attachment-facing.mjs new file mode 100644 index 00000000000..7d98a40fd70 --- /dev/null +++ b/designs/naomiwu/src/front-attachment-facing.mjs @@ -0,0 +1,138 @@ +import { frontAttachment } from './front-attachment.mjs' + +/* + * This is the exported part object + */ +export const frontAttachmentFacing = { + name: 'naomiwu.frontAttachmentFacing', // The name in design::part format + draft: draftFrontAttachmentFacing, // The method to call to draft this part + from: frontAttachment, // Draft this part starting from the (imported) frontAttachment part +} + +/* + * This function drafts the front attachment facing of the skirt + */ +function draftFrontAttachmentFacing({ + Point, + points, + Path, + paths, + part, + store, + options, + sa, + snippets, + Snippet, + macro, +}) { + /* + * Adapt shape from the front attachment main shape + */ + points.waistLeft = points.topRight.shiftFractionTowards( + points.frontPocketStart, + options.frontAttachmentWidth + ) + points.waistRight = points.frontPocketStart.shiftFractionTowards(points.topRight, 0.95) + points.startLeft = new Point(points.waistLeft.x, points.frontPocketCurveStart.y) + points.startRight = new Point(points.waistRight.x, points.frontPocketCurveStart.y) + points.edgeLeft = points.foldLeft.shiftFractionTowards(points.startLeft, -0.4) + points.edgeRight = new Point(points.waistRight.x, points.edgeLeft.y) + + /* + * The seam line + */ + paths.seam = new Path() + .move(points.startLeft) + .line(points.edgeLeft) + .line(points.edgeRight) + .line(points.startRight) + .line(points.startLeft) + .close() + + /* + * Only add SA when it's requested. + * This also adds extra SA to fold under the edge. + */ + if (sa) + paths.sa = new Path() + .move(points.startLeft) + .line(points.edgeLeft) + .line(points.edgeRight) + .line(points.startRight) + .offset(sa) + .join( + new Path() + .move(points.startRight) + .line(points.startLeft) + .offset(3 * sa) + ) + .close() + .addClass('fabric sa') + + /* + * Annotations + */ + + // Cutlist + store.cutlist.setCut({ cut: 1, from: 'fabric' }) + + /* + * Add the title + */ + points.title = points.waistLeft + .shiftFractionTowards(points.waistRight, 0.1) + .shift(-90, points.foldRight.y / 1.5) + macro('title', { + at: points.title, + nr: 9, + title: 'frontAttachmentFacing', + }) + + /* + * Add the logo + */ + points.logo = points.title.shift(-70, 70) + snippets.logo = new Snippet('logo', points.logo).scale(0.666) + + /* + * Dimensions + */ + macro('hd', { + id: 'width', + from: points.edgeLeft, + to: points.edgeRight, + y: points.edgeLeft.y + sa + 15, + }) + macro('hd', { + id: 'chamferWidth', + from: points.foldLeft, + to: points.chamferLeft, + y: points.chamferLeftBottom.y + sa + 15, + }) + macro('vd', { + id: 'chamferHeight', + from: points.chamferLeftBottom, + to: points.chamferLeft, + x: points.chamferLeft.x + 15, + }) + macro('vd', { + id: 'bottomLength', + from: points.edgeRight, + to: points.foldRight, + x: points.edgeRight.x + sa + 15, + }) + macro('vd', { + id: 'topLength', + from: points.foldRight, + to: points.startRight, + x: points.edgeRight.x + sa + 15, + }) + macro('vd', { + id: 'length', + from: points.edgeRight, + to: points.startRight, + x: points.edgeRight.x + sa + 30, + }) + + return part +} diff --git a/designs/naomiwu/src/front-attachment.mjs b/designs/naomiwu/src/front-attachment.mjs new file mode 100644 index 00000000000..f8dc9580f7f --- /dev/null +++ b/designs/naomiwu/src/front-attachment.mjs @@ -0,0 +1,214 @@ +import { frontBase } from './front-base.mjs' + +/* + * This is the exported part object + */ +export const frontAttachment = { + name: 'naomiwu.frontAttachment', // The name in design::part format + draft: draftFrontAttachment, // The method to call to draft this part + from: frontBase, // Draft this part starting from the (imported) frontBase part +} + +/* + * This function drafts the front attachment of the skirt + */ +function draftFrontAttachment({ + Point, + points, + Path, + paths, + store, + part, + options, + complete, + sa, + snippets, + Snippet, + macro, +}) { + /* + * Draw the front attachment shape, or at least the part that's not + * made out of the main materials (aka the facing) + */ + points.waistLeft = points.topRight.shiftFractionTowards( + points.frontPocketStart, + options.frontAttachmentWidth + ) + points.waistRight = points.frontPocketStart.shiftFractionTowards(points.topRight, 0.95) + points.foldLeft = new Point(points.waistLeft.x, points.trueBottomRight.y) + points.foldRight = new Point(points.waistRight.x, points.foldLeft.y) + points.edgeLeft = points.foldLeft.shift(-90, points.foldLeft.y - points.frontPocketSide.y / 2) + points.edgeRight = new Point(points.waistRight.x, points.edgeLeft.y) + + /* + * Indicate the chamfers and fold line + */ + points.chamferLeft = points.foldLeft.shiftFractionTowards( + points.foldRight, + options.frontAttachmentChamferSize + ) + points.chamferRight = points.foldRight.shiftFractionTowards( + points.foldLeft, + options.frontAttachmentChamferSize + ) + points.chamferLeftTop = points.chamferLeft.rotate(90, points.foldLeft) + points.chamferLeftBottom = points.chamferLeft.rotate(-90, points.foldLeft) + points.chamferRightTop = new Point(points.foldRight.x, points.chamferLeftTop.y) + points.chamferRightBottom = new Point(points.foldRight.x, points.chamferLeftBottom.y) + + /* + * The seam line + */ + paths.seam = new Path() + .move(points.waistLeft) + .line(points.edgeLeft) + .line(points.edgeRight) + .line(points.waistRight) + .line(points.waistLeft) + .close() + .addClass('fabric') + + /* + * Only add SA when it's requested. + * This also adds extra SA to fold under the edge. + */ + if (sa) + paths.sa = new Path() + .move(points.edgeRight) + .line(points.waistRight) + .line(points.waistLeft) + .line(points.edgeLeft) + .offset(sa) + .join( + new Path() + .move(points.edgeLeft) + .line(points.edgeRight) + .offset(3 * sa) + ) + .close() + .attr('class', 'fabric sa') + + /* + * If the user wants a complete pattern, let's add some more guidance + */ + if (complete) { + /* + * Add the fold line + */ + paths.fold = new Path().move(points.foldLeft).line(points.foldRight).addClass('help note') + + /* + * Add the chamfers (the 45-degree slant at the corners of the fold) + */ + paths.chamfer = new Path() + .move(points.chamferLeftTop) + .line(points.chamferLeft) + .line(points.chamferLeftBottom) + .move(points.chamferRightTop) + .line(points.chamferRight) + .line(points.chamferRightBottom) + .addClass('note dashed stroke-sm') + } + + /* + * Clean up a bit + */ + delete paths.corner + delete paths.hem + delete paths.side + delete paths.frontWaist + delete paths.pocketbag + delete paths.pocketbagBoundary + delete paths.pocketfacingBoundary + + /* + * Annotations + */ + + // Cutlist + store.cutlist.setCut({ cut: 1, from: 'fabric' }) + + /* + * Add the title + */ + points.title = points.foldLeft + .shiftFractionTowards(points.foldRight, 0.2) + .shift(90, points.foldLeft.y / 2) + macro('title', { + at: points.title, + nr: 8, + title: 'frontAttachment', + }) + + /* + * Add the logo + */ + points.logo = points.title.shift(-70, 70) + snippets.logo = new Snippet('logo', points.logo) + + /* + * Add a 'fold here' note + */ + macro('banner', { + path: paths.fold, + text: 'foldHere', + className: 'text-sm fill-note', + }) + + /* + * Sprinkle some notches + */ + macro('sprinkle', { + snippet: 'notch', + on: [ + 'chamferLeftTop', + 'chamferLeftBottom', + 'chamferLeft', + 'chamferRightTop', + 'chamferRightBottom', + 'chamferRight', + ], + }) + + /* + * Dimensions + */ + macro('hd', { + id: 'width', + from: points.edgeLeft, + to: points.edgeRight, + y: points.edgeLeft.y + 3 * sa + 15, + }) + macro('hd', { + id: 'chamferWidth', + from: points.foldLeft, + to: points.chamferLeft, + y: points.chamferLeftBottom.y + sa + 15, + }) + macro('vd', { + id: 'chamferHeight', + from: points.chamferLeftBottom, + to: points.chamferLeft, + x: points.chamferLeft.x + 15, + }) + macro('vd', { + id: 'bottomLength', + from: points.edgeRight, + to: points.foldRight, + x: points.edgeRight.x + sa + 15, + }) + macro('vd', { + id: 'topLength', + from: points.foldRight, + to: points.waistRight, + x: points.edgeRight.x + sa + 15, + }) + macro('vd', { + id: 'length', + from: points.edgeRight, + to: points.waistRight, + x: points.edgeRight.x + sa + 30, + }) + + return part +} diff --git a/designs/naomiwu/src/front-base.mjs b/designs/naomiwu/src/front-base.mjs new file mode 100644 index 00000000000..8a3a3c5234c --- /dev/null +++ b/designs/naomiwu/src/front-base.mjs @@ -0,0 +1,346 @@ +import { back } from './back.mjs' + +/* + * This is the exported part object + */ +export const frontBase = { + name: 'naomiwu.frontBase', // The name in design::part format + draft: draftFrontBase, // The method to call to draft this part + hide: { self: true }, // This part is hidden by default + after: back, // Draw the (imported) back part prior to drafting this part +} + +/* + * A helper method to find a point on the (potentially curved) waistline for a + * given X coordinate + * + * @param {x} number - The X-coordinate to find the intersection with the waist + * for + * @return {point} Point - A Point object that lies at the intersection of the + * waist with x + */ +export const xOnWaist = (x, part) => { + const { options, utils, points, Point } = part.shorthand() + + return options.waistSlant + ? utils.curveIntersectsX(points.topLeft, points.topCp, points.topRight, points.topRight, x) + : new Point(x, points.topLeft.y) +} + +/* + * A helper method to draw the corner of the front where the pocket goes + * + * This is abstracted into a method because we need to draft two fronts that + * are mirror images of one another. If we mirror them, the entire path will be + * mirrored, including text and so on. So this method allows us to mirror + * first, then call this method again to draw the non-mirrored path using the + * mirrored points, which is what we want. + * + * @param {part} Part - The current part object + * + * @return {path} Path - The path object that was drawn + */ +export const drawCornerPath = (part) => { + const { Path, points, paths } = part.shorthand() + + return new Path() + .move(points.frontPocketSide) + .line(points.topRight) + .join(paths.frontWaistSide) + .addClass('note dashed stroke-sm') +} + +/* + * A helper method to draw the corner of the front where the pocket goes + * + * This is abstracted into a method because we need to draft two fronts that + * are mirror images of one another. If we mirror them, the entire path will be + * mirrored, including text and so on. So this method allows us to mirror + * first, then call this method again to draw the non-mirrored path using the + * mirrored points, which is what we want. + * + * @param {part} Part - The current part object + * + * @return {path} Path - The path object that was drawn + */ +export const drawSeamLine = (part) => { + const { Path, points, paths } = part.shorthand() + + return new Path() + .move(points.topLeft) + .line(points.bottomLeft) + .line(points.trueBottomRight) + .line(points.frontPocketSide) + .line(points.frontPocketCurveStart) + .curve(points.frontPocketCpSide, points.frontPocketCpTop, points.frontPocketStart) + .join(paths.frontWaistCenter) + .close() + .addClass('fabric') +} + +/* + * A helper method to draw a note on the side seam + * + * This is abstracted into a method because we need to draft two fronts that + * are mirror images of one another. If we mirror them, the entire path will be + * mirrored, including text and so on. So this method allows us to mirror + * first, then call this method again to draw the non-mirrored path using the + * mirrored points, which is what we want. + * + * @param {part} Part - The current part object + * + * @return {path} Path - The path object that was drawn + */ +export const drawSideNote = (part) => { + const { Path, points } = part.shorthand() + + return new Path() + .move(points.trueBottomRight) + .line(points.topRight) + .addClass('hidden') + .addText('sideSeam', 'center fill-note text-sm') + .attr('data-text-dy', -1) +} + +/* + * A helper method to draw a note on the hem seam + * + * This is abstracted into a method because we need to draft two fronts that + * are mirror images of one another. If we mirror them, the entire path will be + * mirrored, including text and so on. So this method allows us to mirror + * first, then call this method again to draw the non-mirrored path using the + * mirrored points, which is what we want. + * + * @param {part} Part - The current part object + * + * @return {path} Path - The path object that was drawn + */ +export const drawHemNote = (part) => { + const { Path, points } = part.shorthand() + + return new Path() + .move(points.bottomLeft) + .line(points.trueBottomRight) + .addClass('hidden') + .addText('hem', 'center fill-note text-sm') + .attr('data-text-dy', -1) +} + +/* + * A helper method to draw a the pocket outline + * + * This is abstracted into a method because we need to draft two fronts that + * are mirror images of one another. If we mirror them, the entire path will be + * mirrored, including text and so on. So this method allows us to mirror + * first, then call this method again to draw the non-mirrored path using the + * mirrored points, which is what we want. + * + * @param {part} Part - The current part object + * @param {reverse} bool - Indicates whether we are drawing the reversed version or not + * + * @return {path} Path - The path object that was drawn + */ +export const drawPocketBag = (part, reverse) => { + const { paths, Path, points } = part.shorthand() + + paths.pocketbag = new Path() + .move(points.frontPocketBagStart) + .line(points.frontPocketBagHem) + .addClass('note dashed stroke-sm') + paths.pocketfacingBoundary = new Path() + .move(reverse ? points.frontPocketFacingSide : points.frontPocketFacingCenter) + .line(reverse ? points.frontPocketFacingCenter : points.frontPocketFacingSide) + .addClass('note dashed stroke-sm') + .addText('pocketFacing', 'fill-note center text-sm') + paths.pocketbagBoundary = new Path() + .move(reverse ? points.frontPocketFacingSide : points.frontPocketFacingCenter) + .line(reverse ? points.frontPocketFacingCenter : points.frontPocketFacingSide) + .addClass('hidden') + .addText('pocketBag', 'fill-note center text-sm') + .attr('data-text-dy', 6) +} + +/* + * A helper method to split the front waist at the point the pocket cutout starts + * + * Does not return, but mutates the part object + * + * @param {part} Part - The current part object + */ +export const splitFrontWaist = (part) => { + const { paths, points, Path, options } = part.shorthand() + // Handle the split of the waitline at the pocket openinig + paths.frontWaist = new Path().move(points.topRight) + if (options.waistSlant) paths.frontWaist.curve(points.topRight, points.topCp, points.topLeft) + else paths.frontWaist.line(points.topLeft) + paths.frontWaist.addClass('hidden') + + // Store both halves for re-use + const halves = paths.frontWaist.split(part.points.frontPocketStart) + paths.frontWaistSide = halves[0].hide() + paths.frontWaistCenter = halves[1].hide() +} + +/* + * This function drafts the back panel of the skirt + */ +function draftFrontBase({ + Point, + points, + Path, + paths, + store, + part, + options, + complete, + sa, + snippets, + Snippet, + macro, + absoluteOptions, + utils, +}) { + /* + * How much shaping should we add in the panel? + */ + const shaping = store.get('hipsQuarterReduction') + + /* + * Simple skirt outline for the front panel + */ + points.topLeft = new Point(shaping / 2, 0) + points.topCp = new Point(store.get('frontQuarterHips') / 2, 0) + points.topRight = new Point( + points.topLeft.x + store.get('frontQuarterHips'), + absoluteOptions.waistSlant * -1 + ) + points.bottomLeft = new Point(0, points.topRight.y + absoluteOptions.length) + points.bottomRight = new Point(store.get('frontQuarterSeat'), points.bottomLeft.y) + + /* + * Store the waist length so we can accurately notch the waistband + */ + store.set( + 'frontHipLength', + options.waistSlant + ? new Path().move(points.topLeft).curve_(points.topCp, points.topRight).length() + : points.topLeft.dx(points.topRight) + ) + + /* + * True the side seam + */ + points.trueBottomRight = points.topRight.shiftTowards(points.bottomRight, store.get('sideSeam')) + points.trueBottomLeft = new Point(0, points.trueBottomRight.y) + + /* + * Construct the fly J-seam - see paths.jseam + */ + points.jseamTop = xOnWaist(points.topLeft.x + absoluteOptions.flyWidth, part) + points.jseamBottom = points.topLeft.shiftTowards(points.bottomLeft, absoluteOptions.flyLength) + points.jseamCorner = points.jseamBottom + .shiftTowards(points.topLeft, absoluteOptions.flyWidth) + .rotate(-90, points.jseamBottom) + points.jseamCurveStart = points.jseamCorner.shiftTowards( + points.jseamTop, + absoluteOptions.flyWidth + ) + points.jseamCpTop = points.jseamCorner.shiftFractionTowards( + points.jseamCurveStart, + 1 - options.jseamBend + ) + points.jseamCpBottom = points.jseamCorner.shiftFractionTowards( + points.jseamBottom, + 1 - options.jseamBend + ) + + /* + * Construct the fly extention (fe) - see paths.seam + */ + macro('mirror', { + clone: true, + mirror: [points.jseamBottom, points.topLeft], + points: [ + 'jseamTop', + 'jseamBottom', + 'jseamCorner', + 'jseamCurveStart', + 'jseamCpTop', + 'jseamCpBottom', + ], + nameFormat: (name) => `${name}Fe`, //Fe = Fly extension + }) + + /* + * Construct the front pocket cutout + */ + points.frontPocketStart = xOnWaist(absoluteOptions.frontPocketOpeningWidth, part) + points.frontPocketSide = utils.beamIntersectsY( + points.topRight, + points.trueBottomRight, + absoluteOptions.frontPocketOpeningDepth + ) + points.frontPocketCorner = new Point(points.frontPocketStart.x, points.frontPocketSide.y) + points.frontPocketCurveStart = points.frontPocketStart.rotate(-90, points.frontPocketCorner) + points.frontPocketCpTop = points.frontPocketCorner.shiftFractionTowards( + points.frontPocketStart, + 1 - options.frontPocketOpeningBend + ) + points.frontPocketCpSide = points.frontPocketCorner.shiftFractionTowards( + points.frontPocketCurveStart, + 1 - options.frontPocketOpeningBend + ) + + /* + * Front pocket bag/facing outline + */ + points.frontPocketBagStart = points.frontPocketStart.shiftFractionTowards(points.jseamTop, 0.4) + points.frontPocketBagHem = new Point(points.frontPocketBagStart.x, points.bottomRight.y) + points.frontPocketFacingSide = points.frontPocketSide.shiftFractionTowards(points.topRight, -0.4) + points.frontPocketFacingCenter = new Point( + points.frontPocketBagStart.x, + points.frontPocketFacingSide.y + ) + + /* + * Paths + */ + splitFrontWaist(part) // Handle the split of the waitline at the pocket openinig + paths.seam = drawSeamLine(part) // Seamline + + // Complete? + if (complete) { + /* + * Add the logo + */ + points.logo = points.topLeft + .shiftFractionTowards(points.bottomLeft, 0.3) + .shift(0, points.topRight.x / 3) + snippets.logo = new Snippet('logo', points.logo) + + /* + * Add the title + */ + points.title = points.logo.shift(-90, 70) + macro('title', { + at: points.title, + nr: '0', + title: 'frontBase', + }) + + /* + * Add various helper paths + */ + paths.corner = drawCornerPath(part) // Pocket corner + drawPocketBag(part) // Pocket bag + paths.side = drawSideNote(part) // Note on side seam + paths.hem = drawHemNote(part) // Note on hem + + /* + * Add seam allowance only if requested + */ + if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') + } + + return part +} diff --git a/designs/naomiwu/src/front-fly-side.mjs b/designs/naomiwu/src/front-fly-side.mjs new file mode 100644 index 00000000000..eab72858721 --- /dev/null +++ b/designs/naomiwu/src/front-fly-side.mjs @@ -0,0 +1,252 @@ +import { + frontBase, + splitFrontWaist, + drawCornerPath, + drawSideNote, + drawHemNote, + drawPocketBag, +} from './front-base.mjs' + +/* + * This is the exported part object + */ +export const frontFlySide = { + name: 'naomiwu.frontFlySide', // Name in design::part format + draft: draftFrontFlySide, // Method to call to draft this part + from: frontBase, // Draft this part starting from (the imported) frontBase +} + +/* + * This function drafts the front panel of the skirt with the fly on it + * Whether that ends up being the right or left panel depends on the + * 'invertFly' option. + * By default, this is the left panel, if the option is truthy, this becomes + * the right panel. + * + * Basic outline was drafted in frontBase + * + * Note that Left/Right is always from the vantage point the wearer + */ +function draftFrontFlySide({ + Point, + points, + Path, + paths, + store, + part, + options, + complete, + sa, + paperless, + snippets, + Snippet, + macro, +}) { + /* + * If the user wants the fly side inverted, we should mirror the entire thing + */ + if (options.invertFly) { + for (const p in points) points[p] = points[p].flipX() + + /* + * We need to re-split the waist after mirroring + */ + splitFrontWaist(part) + } + + /* + * Store the J-Seam dimensions to construct the fly shield later + */ + store.set('jseamWidth', points.jseamCorner.x) + store.set('jseamHeight', points.jseamCorner.y) + + /* + * The Seamline + */ + paths.seam = new Path() + .move(points.topLeft) + .line(points.jseamTopFe) + .line(points.jseamCurveStartFe) + .curve(points.jseamCpTopFe, points.jseamCpBottomFe, points.jseamBottomFe) + .line(points.bottomLeft) + .line(points.trueBottomRight) + .line(points.frontPocketSide) + .line(points.frontPocketCurveStart) + .curve(points.frontPocketCpSide, points.frontPocketCpTop, points.frontPocketStart) + .join(paths.frontWaistCenter) + .close() + .addClass('fabric') + + /* + * Seam allowance. Only if the user wants it. + */ + if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') + + /* + * If the user wants a complete pattern, let's add some more guidance + */ + if (complete) { + /* + * The J-Seam + */ + paths.jseam = new Path() + .move(points.jseamBottom) + .curve(points.jseamCpBottom, points.jseamCpTop, points.jseamCurveStart) + .line(points.jseamTop) + .addClass('note dashed stroke-sm') + .addText('jSeam', 'text-sm center fill-note') + + /* + * The fly fold line + */ + paths.flyFold = new Path() + .move(points.jseamBottom) + .line(points.topLeft) + .addClass('note help stroke-sm') + + /* + * Add a 'fold here' note along the fold line + */ + macro('banner', { + path: paths.flyFold, + text: 'foldHere', + className: 'text-sm fill-note', + }) + + /* + * Add various helper paths + */ + paths.corner = drawCornerPath(part) // Pocket corner + drawPocketBag(part) // Pocket bag + paths.side = drawSideNote(part) // Note on side seam + paths.hem = drawHemNote(part) // Note on hem + } + + /* + * Annotations + */ + // Cutlist + store.cutlist.setCut({ cut: 1, from: 'fabric' }) + + /* + * Add a grainline indicator + */ + points.grainlineTop = points.jseamTop.shiftFractionTowards(points.topLeft, 0.5) + points.grainlineBottom = new Point(points.grainlineTop.x, points.bottomLeft.y) + macro('grainline', { + from: points.grainlineBottom, + to: points.grainlineTop, + }) + + /* + * Remove title from frontBase and add our own title + */ + macro('rmtitle') + macro('title', { + at: points.title, + nr: 2, + title: options.invertFly ? 'frontFlySideRight' : 'frontFlySideLeft', + }) + + /* + * Overwrite logo from frontBase to add our own logo in the place we want + */ + points.logo = points.frontPocketCurveStart.shiftFractionTowards(points.bottomRight, 0.5) + snippets.logo = new Snippet('logo', points.logo) + + /* + * Add notches + */ + macro('sprinkle', { + snippet: 'notch', + on: ['jseamTop', 'frontPocketBagStart', 'topLeft', 'jseamBottomFe'], + }) + + /* + * Add dimentions for paperless only when needed + */ + if (paperless) { + macro('hd', { + id: 'wFlyExtension', + from: points.jseamTopFe, + to: points.topLeft, + y: points.jseamTopFe.y - sa - 15, + }) + macro('hd', { + id: 'wFly', + from: points.topLeft, + to: points.jseamTop, + y: points.jseamTopFe.y - sa - 15, + }) + macro('hd', { + id: 'wCfrontToPocket', + from: points.topLeft, + to: points.frontPocketStart, + y: points.jseamTopFe.y - sa - 30, + }) + macro('hd', { + id: 'wCfrontToFlyExtensionBottom', + from: points.jseamCurveStartFe, + to: points.topLeft, + y: points.jseamTopFe.y - sa - 30, + }) + macro('hd', { + id: 'wCfrontToSideWaist', + from: points.topLeft, + to: points.topRight, + y: points.jseamTopFe.y - sa - 45, + }) + macro('hd', { + id: 'wCfrontToSidePocket', + from: points.topLeft, + to: points.frontPocketSide, + y: points.jseamTopFe.y - sa - 60, + }) + macro('hd', { + id: 'wCfrontToSieHem', + from: points.topLeft, + to: points.trueBottomRight, + y: points.jseamTopFe.y - sa - 75, + }) + macro('hd', { + id: 'wCfBottomToSidePocket', + from: points.bottomLeft, + to: points.frontPocketSide, + y: points.bottomLeft.y + sa + 15, + }) + macro('hd', { + id: 'wCfBottomToSideHem', + from: points.bottomLeft, + to: points.trueBottomRight, + y: points.bottomLeft.y + sa + 30, + }) + macro('hd', { + id: 'wFull', + from: points.jseamCurveStartFe, + to: points.trueBottomRight, + y: points.bottomLeft.y + sa + 45, + }) + macro('vd', { + id: 'hSideHemToPocket', + from: points.trueBottomRight, + to: points.frontPocketSide, + x: points.trueBottomRight.x + sa + 15, + }) + macro('vd', { + id: 'hSideHemToWaist', + from: points.trueBottomRight, + to: points.frontPocketStart, + x: points.trueBottomRight.x + sa + 30, + }) + if (options.waistSlant) { + macro('vd', { + id: 'hFullWithSlant', + from: points.trueBottomRight, + to: points.topRight, + x: points.trueBottomRight.x + sa + 45, + }) + } + } + + return part +} diff --git a/designs/naomiwu/src/front-nofly-side.mjs b/designs/naomiwu/src/front-nofly-side.mjs new file mode 100644 index 00000000000..f5f1411d265 --- /dev/null +++ b/designs/naomiwu/src/front-nofly-side.mjs @@ -0,0 +1,201 @@ +import { + frontBase, + splitFrontWaist, + drawCornerPath, + drawSeamLine, + drawSideNote, + drawHemNote, + drawPocketBag, +} from './front-base.mjs' + +/* + * This is the exported part object + */ +/* + * This function drafts the front panel of the skirt without the fly on it + * Whether that ends up being the right or left panel depends on the + * 'invertFly' option. + * By default, this is the right panel, if the option is truthy, this becomes + * the right panel. + * + * Basic outline was drafted in frontBase + * + * Note that Left/Right is always from the vantage point the wearer + */ +export const frontNoFlySide = { + name: 'naomiwu.frontNoFlySide', // Name in design:part format + draft: draftFrontNoFlySide, // Method to call to draft this part + from: frontBase, // Draft this starting from (the imported) frontBase part +} + +/* + * This function drafts the right front panel of the skirt + * + * Basic outline was drafted in frontBase + * Now we adapt it for the right panel + * + * Note that Left/Right is always from the vantage point the wearer + */ +function draftFrontNoFlySide({ + Point, + points, + paths, + store, + part, + options, + complete, + sa, + snippets, + Snippet, + macro, +}) { + /* + * Let's mirror the entire thing, unless the user wants the fly side inverted + * In that case, we already have it the way it should be. + */ + if (!options.invertFly) { + for (const p in points) points[p] = points[p].flipX() + + /* + * We need to re-split the waist after mirroring it and re-draw paths + */ + splitFrontWaist(part) + paths.corner = drawCornerPath(part) // Corner + paths.seam = drawSeamLine(part) // Seamline + } + + /* + * Only add SA if it's requested + */ + if (sa) paths.sa = paths.seam.offset(-1 * sa).attr('class', 'fabric sa') + + /* + * If the user wants a complete pattern, let's add some more guidance + */ + if (complete) { + /* + * Draw various helper paths + */ + drawPocketBag(part, true) // Pocket bage + paths.side = drawSideNote(part) // Helper note on the side seam + paths.hem = drawHemNote(part).reverse(true) // Helper note on the hem + } + + /* + * Annotations + */ + + // Cutlist + store.cutlist.setCut({ cut: 1, from: 'fabric' }) + + /* + * Overwrite title from frontBase to add our own title + */ + macro('rmtitle') + macro('title', { + at: points.title, + nr: 3, + title: options.invertFly ? 'frontNoFlySideLeft' : 'frontNoFlySideRight', + }) + + /* + * Add the 1 notch that is on this part + */ + snippets.notch = new Snippet('notch', points.frontPocketBagStart) + + /* + * Add a grainline indicator + */ + points.grainlineTop = points.topLeft.shiftFractionTowards(points.jseamTop, 0.5) + points.grainlineBottom = new Point(points.grainlineTop.x, points.bottomLeft.y) + macro('grainline', { + from: points.grainlineBottom, + to: points.grainlineTop, + }) + + /* + * Overwrite logo from frontBase to add our own (or rather the same in our preferred location) + */ + points.logo = points.topLeft.shiftFractionTowards(points.bottomRight, 0.5) + snippets.logo = new Snippet('logo', points.logo) + + /* + * Dimensions + */ + macro('hd', { + id: 'wAtHem', + from: points.trueBottomRight, + to: points.bottomLeft, + y: points.bottomLeft.y + sa + 15, + }) + macro('hd', { + id: 'wPocketNotchToCfront', + from: points.frontPocketBagStart, + to: points.topLeft, + y: points.frontPocketStart.y - sa - 15, + }) + macro('hd', { + id: 'wPocketCutoutToCfront', + from: points.frontPocketStart, + to: points.topLeft, + y: points.frontPocketStart.y - sa - 30, + }) + macro('hd', { + id: 'wPocketCutout', + from: points.frontPocketSide, + to: points.frontPocketStart, + y: points.frontPocketStart.y - sa - 15, + }) + macro('hd', { + id: 'wPocketCutoutToCfHem', + from: points.frontPocketStart, + to: points.trueBottomLeft, + y: points.frontPocketStart.y - sa - 45, + }) + macro('hd', { + id: 'wSideHemToStartPocketCutout', + from: points.trueBottomRight, + to: points.frontPocketStart, + y: points.frontPocketStart.y - sa - 30, + }) + macro('vd', { + id: 'hSideHemToPocketCutout', + from: points.trueBottomRight, + to: points.frontPocketSide, + x: points.bottomRight.x - sa - 15, + }) + macro('vd', { + id: 'hHemBottomToPocketCutout', + from: points.bottomLeft, + to: points.frontPocketSide, + x: points.bottomRight.x - sa - 30, + }) + macro('vd', { + id: 'hCfHemToPoketStart', + from: points.bottomLeft, + to: points.frontPocketStart, + x: points.bottomRight.x - sa - 45, + }) + macro('vd', { + from: points.bottomLeft, + id: 'hTopLeftBottomLeft', + to: points.topLeft, + x: points.bottomLeft.x + sa + 15, + }) + if (options.waistSlant) { + macro('vd', { + id: 'hFullWithSlant', + from: points.bottomLeft, + to: points.topRight, + x: points.bottomRight.x - sa - 60, + }) + macro('vd', { + id: 'hWithSlantCfront', + from: points.bottomLeft, + to: points.frontPocketStart, + x: points.bottomLeft.x + sa + 30, + }) + } + + return part +} diff --git a/designs/naomiwu/src/front-pocket-bag.mjs b/designs/naomiwu/src/front-pocket-bag.mjs new file mode 100644 index 00000000000..4787f2e18ab --- /dev/null +++ b/designs/naomiwu/src/front-pocket-bag.mjs @@ -0,0 +1,111 @@ +import { frontBase } from './front-base.mjs' + +/* + * This is the exported part object + */ +export const frontPocketBag = { + name: 'naomiwu.frontPocketBag', // The name in design::part format + draft: draftFrontPocketBag, // The method to call to draft this part + from: frontBase, // Draft this starting from the (imported) frontBase part +} + +/* + * This function drafts the front pocket bag of the skirt + */ +function draftFrontPocketBag({ + Point, + points, + Path, + paths, + part, + store, + sa, + snippets, + Snippet, + macro, +}) { + /* + * Remove paths we don't need + */ + delete paths.corner + delete paths.hem + delete paths.frontWaist + delete paths.pocketbag + + /* + * The seam line + */ + paths.seam = new Path() + .move(points.frontPocketBagStart) + .line(points.frontPocketBagHem) + .line(points.trueBottomRight) + .line(points.topRight) + .join(paths.frontWaistSide) + .line(points.frontPocketBagStart) + .close() + .addClass('various') + + /* + * Add SA only when requested + */ + if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') + + /* + * Annotations + */ + + // Cutlist + store.cutlist.setCut({ cut: 2, from: 'lining', onFold: true }) + + /* + * Overwrite title from frontBase + */ + points.title = new Point( + points.frontPocketFacingCenter.x * 1.5, + points.frontPocketFacingCenter.y / 1.5 + ) + macro('title', { + at: points.title, + nr: 5, + title: 'frontPocketBag', + }) + + /* + * Overwrite logo from frontBase + */ + points.logo = points.title.shift(12, 100) + snippets.logo = new Snippet('logo', points.logo) + + /* + * Add a cut-on-fold indicator + */ + macro('cutonfold', { + from: points.frontPocketBagStart, + to: points.frontPocketBagHem, + grainline: true, + }) + + /* + * Dimensions + */ + macro('hd', { + id: 'wAtTop', + from: points.frontPocketBagStart, + to: points.topRight, + y: points.topLeft.y - sa - 15, + }) + macro('hd', { + id: 'wAtBottom', + from: points.frontPocketBagHem, + to: points.bottomRight, + y: points.bottomLeft.y + sa + 15, + }) + macro('vd', { + id: 'hFull', + from: points.frontPocketBagHem, + to: points.frontPocketBagStart, + x: points.frontPocketBagHem.x - sa - 15, + }) + + return part +} diff --git a/designs/naomiwu/src/front-pocket-facing.mjs b/designs/naomiwu/src/front-pocket-facing.mjs new file mode 100644 index 00000000000..7f7d7b7667f --- /dev/null +++ b/designs/naomiwu/src/front-pocket-facing.mjs @@ -0,0 +1,100 @@ +import { frontPocketBag } from './front-pocket-bag.mjs' + +/* + * This is the exported part object + */ +export const frontPocketFacing = { + name: 'naomiwu.frontPocketFacing', // The name in design::part format + draft: draftFrontPocketFacing, // The method to call to draft this part + from: frontPocketBag, // Draft this starting from the (imported) frontPocketBag part +} + +/* + * This function drafts the front pocket facing of the skirt + */ +function draftFrontPocketFacing({ points, Path, paths, store, part, sa, macro }) { + /* + * Clean up what we don't need + */ + delete paths.pocketbagBoundary + delete paths.pocketfacingBoundary + macro('rmad') // Removes all dimensions + + /* + * The seam line + */ + paths.seam = new Path() + .move(points.frontPocketBagStart) + .line(points.frontPocketFacingCenter) + .line(points.frontPocketFacingSide) + .line(points.topRight) + .join(paths.frontWaistSide) + .line(points.frontPocketBagStart) + .close() + .addClass('fabric') + + /* + * Only add SA when requested + */ + if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') + + /* + * Fix text alignement on the side seam + */ + paths.side = new Path() + .move(points.frontPocketFacingSide) + .line(points.topRight) + .addClass('hidden') + .addText('sideSeam', 'center fill-note text-sm') + .attr('data-text-dy', -1) + + /* + * Annotations + */ + + // Cutlist + store.cutlist.setCut({ cut: 2, from: 'fabric', onFold: true }) + + /* + * Add the title ( and remove the inherited one) + */ + macro('rmtitle') + macro('title', { + at: points.title, + nr: 6, + title: 'frontPocketFacing', + }) + + /* + * Add cut-on-fold indicator + */ + macro('cutonfold', { + from: points.frontPocketBagStart, + to: points.frontPocketFacingCenter, + grainline: true, + }) + + /* + * Dimensions + */ + macro('hd', { + id: 'wAtBottom', + from: points.frontPocketFacingCenter, + to: points.frontPocketFacingSide, + y: points.frontPocketFacingCenter.y + sa + 15, + }) + macro('hd', { + id: 'wAtTop', + from: points.frontPocketBagStart, + to: points.topRight, + y: points.topRight.y - sa - 15, + }) + macro('vd', { + id: 'hFull', + from: points.frontPocketFacingCenter, + to: points.frontPocketBagStart, + x: points.frontPocketFacingCenter.x - sa - 15, + }) + + return part +} diff --git a/designs/naomiwu/src/index.mjs b/designs/naomiwu/src/index.mjs new file mode 100644 index 00000000000..2999bfb9576 --- /dev/null +++ b/designs/naomiwu/src/index.mjs @@ -0,0 +1,94 @@ +import { Design } from '@freesewing/core' +import { data } from '../data.mjs' +import { i18n } from '../i18n/index.mjs' +// Parts +import { shared } from './shared.mjs' +import { back } from './back.mjs' +import { frontBase } from './front-base.mjs' +import { frontFlySide } from './front-fly-side.mjs' +import { frontNoFlySide } from './front-nofly-side.mjs' +import { waistband } from './waistband.mjs' +import { flyShield } from './fly-shield.mjs' +import { frontPocketBag } from './front-pocket-bag.mjs' +import { frontPocketFacing } from './front-pocket-facing.mjs' +import { frontAttachment } from './front-attachment.mjs' +import { frontAttachmentFacing } from './front-attachment-facing.mjs' +import { backPocket } from './back-pocket.mjs' +import { backPocketFlap } from './back-pocket-flap.mjs' +import { backAttachmentBack } from './back-attachment-back.mjs' +import { backAttachmentFront } from './back-attachment-front.mjs' +import { backAttachmentFlap } from './back-attachment-flap.mjs' +import { beltLoop } from './belt-loop.mjs' +import { backBeltLoop } from './back-belt-loop.mjs' + +/* + * Create new design + */ +const Naomiwu = new Design({ + data, + parts: [ + shared, + back, + frontBase, + frontFlySide, + frontNoFlySide, + waistband, + flyShield, + frontPocketBag, + frontPocketFacing, + frontAttachment, + frontAttachmentFacing, + backPocket, + backPocketFlap, + backAttachmentBack, + backAttachmentFront, + backAttachmentFlap, + beltLoop, + backBeltLoop, + ], +}) + +/* + * Note that we are creating this above as 'Naomiwu' and not 'NaomiWu', which + * would be the correctly camel-cased name of the person it's named after. + * + * The reason is that when discussing the name with Naomi, she originally + * suggested 'Open Cargo Skirt'. After explaining that we typically use + * first-names for our designs because we provide a website in multiple + * languages and want to have a name that does not need translation, she + * suggested either 'Wu Cargo Skirt' or 'Naomi Wu Cargo Skirt'. + * + * So we landed on 'Naomi Wu Cargo Skirt' which makes the short name of this + * pattern (as used in the NPM package and URLs) 'naomiwu'. + * To get the constructor from that, we capitalize the design name, so that + * is why 'Naomiwu' is exported. + * + * However, to be flexible, we also export this design as NaomiWu below. + * This way, both ways work. + */ +const NaomiWu = Naomiwu + +// Named exports +export { + shared, + back, + frontBase, + frontFlySide, + frontNoFlySide, + waistband, + flyShield, + frontPocketBag, + frontPocketFacing, + frontAttachment, + frontAttachmentFacing, + backPocket, + backPocketFlap, + backAttachmentBack, + backAttachmentFront, + backAttachmentFlap, + beltLoop, + backBeltLoop, + Naomiwu, + NaomiWu, // See note above + i18n, +} diff --git a/designs/naomiwu/src/shared.mjs b/designs/naomiwu/src/shared.mjs new file mode 100644 index 00000000000..9989b90f9e6 --- /dev/null +++ b/designs/naomiwu/src/shared.mjs @@ -0,0 +1,322 @@ +import { pctBasedOn } from '@freesewing/core' + +function draft({ store, measurements, options, part }) { + // Set values in the store for re-use + const hips = measurements.hips * (1 + options.hipsEase) + store.set('hips', hips) + store.set('frontQuarterHips', (hips * options.frontHalf) / 2) + store.set('backQuarterHips', (hips * (1 - options.frontHalf)) / 2) + const seat = measurements.seat * (1 + options.seatEase) + store.set('seat', seat) + store.set('frontQuarterSeat', (seat * options.frontHalf) / 2) + store.set('backQuarterSeat', (seat * (1 - options.frontHalf)) / 2) + store.set('hipsToSeat', measurements.waistToSeat - measurements.waistToHips) + store.set('hipsToUpperLeg', measurements.waistToUpperLeg - measurements.waistToHips) + store.set('seatToUpperLeg', measurements.waistToUpperLeg - measurements.waistToSeat) + // Never reduce a negative amount + const reduce = (seat - hips) / 4 + store.set('hipsQuarterReduction', reduce > 0 ? reduce : 0) + + return part +} + +/* + * Helper method like pctBasedOn, but using quarter hips for measurement + */ +const pctBasedOnQhips = () => ({ + toAbs: (value, { measurements }) => value * (measurements.hips / 4), + fromAbs: (value, { measurements }) => measurements.hips / 4 / value, +}) + +/* + * Helper method like pctBasedOn, but using hips to upperleg + */ +const pctBasedOnHipsToUleg = () => ({ + toAbs: (value, { measurements }) => + value * (measurements.waistToUpperLeg - measurements.waistToHips), + fromAbs: (value, { measurements }) => + (measurements.waistToUpperLeg - measurements.waistToHips) / value, +}) + +export const shared = { + name: 'naomiwu.shared', + measurements: ['hips', 'seat', 'waistToHips', 'waistToSeat', 'waistToUpperLeg'], + hide: { self: true }, + options: { + // Fit options + + /* + * Amount of ease at the hips. + * By default this has no ease + elasticated waist (partially) because this + * is supposed to support cargo without sliding down. (belt is better, but still). + */ + hipsEase: { + pct: 0, + min: -5, + max: 5, + menu: 'fit', + ...pctBasedOn('hips'), + }, + + /* + * Amount of ease at the seat. + * Needs to be sufficient to allow dexterity but not so much that it's to flared + */ + seatEase: { + pct: 5, + min: 0, + max: 15, + menu: 'fit', + ...pctBasedOn('seat'), + }, + + /* + * How much the waist should slant downward at the front (and up at the back) + * This is based on a model with a perfectly horizontal waistline. + * However, people who -- as Sir Mix A Lot would say -- got (more) back benefit + * from a sloped waistline that raises up at teh back and dips lower at the front. + * This option facilitates that. + */ + waistSlant: { + pct: 0, + min: 0, + max: 2, + menu: 'fit', + ...pctBasedOn('hips'), + }, + + // Style options + + /* + * Allows one to swap the fly side for what is more convenient or best + * matches one's gender expression. + * + * This design is based ona physical skirt made/worn by Naomi Wu and that + * skirt had the traditional left-over-right fly that is the most common + * style used in all menswear but also often in womenswear bottoms. + * + * Changing this option will draft a right-over-left style which is common + * for womenswear tops and bottoms, and as such is more female-presenting. + * + * There's no right or wrong way, it's just preference. The reason + * left-over-right is the default here is because that's how it was on + * the skirt we based this on. + */ + invertFly: { + bool: false, + menu: 'style', + }, + + /* + * The length as a percentage of the hips to upper leg measurements + */ + length: { + pct: 40, + min: 0, + max: 80, + menu: 'style', + toAbs: (value, { measurements }) => + (1 + value) * (measurements.waistToUpperLeg - measurements.waistToHips), + fromAbs: (value, { measurements }) => + (measurements.waistToUpperLeg - measurements.waistToHips) / (1 + value), + }, + + waistbandWidth: { + pct: 4.4, + min: 2, + max: 10, + menu: 'style', + ...pctBasedOn('hips'), + }, + + beltLoopWidth: { + pct: 40, + min: 20, + max: 60, + menu: 'style', + toAbs: (value, { measurements }, mergedOptions) => + value * measurements.hips * mergedOptions.waistbandWidth, + fromAbs: (value, { measurements }, mergedOptions) => + (measurements.hips * mergedOptions.waistbandWidth) / value, + }, + + // Pocket options + + /* + * Controls the curvature of the front pocket opening + */ + frontPocketOpeningBend: { + pct: 80, + min: 0, + max: 100, + menu: 'pockets', + }, + + /* + * Controls the depth of the front pocket opening as a factor of + * waistToUpperLeg - waistToHip + */ + frontPocketOpeningDepth: { + pct: 33, + min: 25, + max: 45, + menu: 'pockets', + ...pctBasedOnQhips(), + }, + + // Pocket options + backPocketDepth: { + pct: 70, + min: 60, + max: 85, + menu: 'pockets', + }, + backPocketChamferSize: { + pct: 15, + min: 5, + max: 25, + menu: 'pockets', + }, + frontPocketOpeningWidth: { + pct: 33, + min: 25, + max: 45, + menu: 'pockets', + ...pctBasedOnQhips(), + }, + + // Width of the back attachment + backAttachmentWidth: { + pct: 40, + min: 25, + max: 55, + menu: 'pockets', + ...pctBasedOnQhips(), + }, + backAttachmentDepth: { + pct: 190, + min: 100, + max: 220, + menu: 'pockets', + }, + + // Width of the front attachment + frontAttachmentWidth: { + pct: 95, + min: 80, + max: 110, + menu: 'pockets', + }, + frontAttachmentChamferSize: { + pct: 15, + min: 5, + max: 25, + menu: 'pockets', + }, + backAttachmentFlapChamferSize: { + pct: 15, + min: 5, + max: 25, + menu: 'pockets', + }, + + // Advanced options + + /* + * The dart length. + * Is a factor between the distance between the hipline and seatline + */ + dartLength: { + pct: 90, + min: 50, + max: 100, + menu: 'advanced', + toAbs: (value, { measurements }) => + value * (measurements.waistToSeat - measurements.waistToHips), + fromAbs: (value, { measurements }) => + (measurements.waistToSeat - measurements.waistToHips) / value, + }, + + /* + * The dart width. + * Doesn't influence fit, but rather determines how much shaping is done in the darts + */ + dartWidth: { + pct: 5, + min: 4, + max: 8, + menu: 'advanced', + ...pctBasedOnQhips(), + }, + + /* + * The fly length. + */ + flyLength: { + pct: 75, + min: 50, + max: 85, + menu: 'advanced', + ...pctBasedOnHipsToUleg(), + }, + /* + * The fly width. + */ + flyWidth: { + pct: 16, + min: 10, + max: 22, + menu: 'advanced', + ...pctBasedOnQhips(), + }, + + /* + * Percentage of the full circumference that should be made up + * by the front panels. Increasing this will shift the side seams + * to the back, which increases space for the pockets. However if + * you shift them too far, the pocket opening sits too far to the + * side and becomes difficult to access. The default 60% is a good + * average. + */ + frontHalf: { + pct: 55, + min: 50, + max: 60, + menu: 'advanced', + }, + + /* + * Curvature of the J-Seam bend + */ + jseamBend: { + pct: 65, + min: 50, + max: 100, + menu: 'advanced', + }, + + /* + * Minimal dart width. Below this width, we don't create darts but + * instead do all shaping in the side seams. + */ + minDartWidth: { + pct: 2, + min: 0.5, + max: 4, + menu: 'advanced', + toAbs: (pct, settings, mergedOptions) => + (pct * + settings.measurements.hips * + (1 + mergedOptions.hipsEase) * + (1 - mergedOptions.frontHalf)) / + 2, + fromAbs: (mm, settings) => + (settings.measurements.hips * + (1 + settings.options.hipsEase) * + (1 - settings.options.frontHalf)) / + 2 / + mm, + }, + }, + draft: draft, +} diff --git a/designs/naomiwu/src/waistband.mjs b/designs/naomiwu/src/waistband.mjs new file mode 100644 index 00000000000..a775e8a88e3 --- /dev/null +++ b/designs/naomiwu/src/waistband.mjs @@ -0,0 +1,377 @@ +import { frontBase } from './front-base.mjs' +import { capitalize } from '@freesewing/core' + +/* + * This is the exported part object + */ +export const waistband = { + name: 'naomiwu.waistband', // The name in design::part format + draft: draftWaistband, // The method to call to draft this part + after: frontBase, // Draft this part starting from the (imported) frontBase part +} + +/* + * This function drafts the waistband of the skirt + */ +function draftWaistband({ + Point, + points, + Path, + paths, + store, + part, + options, + complete, + sa, + snippets, + Snippet, + macro, + absoluteOptions, +}) { + /* + * We start from center back and make our way towards the front in both directions + */ + points.cbTop = new Point(0, 0) + points.cbBottom = new Point(points.cbTop.x, absoluteOptions.waistbandWidth * 2) + + /* + * First add the back parts + */ + points.leftSideTop = points.cbTop.shift(180, store.get('backHipLength')) + points.leftSideBottom = new Point(points.leftSideTop.x, points.cbBottom.y) + points.rightSideTop = points.leftSideTop.flipX() + points.rightSideBottom = points.leftSideBottom.flipX() + + /* + * Now continue with the fronts + */ + points.leftFrontTop = points.leftSideTop.shift(180, store.get('frontHipLength')) + points.leftFrontBottom = new Point(points.leftFrontTop.x, points.cbBottom.y) + points.rightFrontTop = points.leftFrontTop.flipX() + points.rightFrontBottom = points.leftFrontBottom.flipX() + + /* + * Add the overlap at the button side (noFly side) + */ + points.rightEdgeTop = points.rightFrontTop.shift(0, absoluteOptions.flyWidth) + points.rightEdgeBottom = new Point(points.rightEdgeTop.x, points.cbBottom.y) + + /* + * Fold in the middle + */ + points.midLeft = new Point(points.leftFrontTop.x, points.cbBottom.y / 2) + points.midRight = new Point(points.rightEdgeTop.x, points.midLeft.y) + + /* + * Location of the buttonhole (taking invertFly option into account) + */ + points.buttonhole = points.leftFrontBottom + .shiftFractionTowards(points.leftFrontTop, options.invertFly ? 0.75 : 0.25) + .shift(0, absoluteOptions.waistbandWidth / 4) + + /* + * Location of the button + */ + points.button = new Point( + points.rightEdgeTop.x - absoluteOptions.flyWidth / 2, + points.buttonhole.y + ) + + /* + * Indicate the location of the belt loops + */ + points.leftBackLoopTop = points.cbTop.shiftFractionTowards(points.leftSideTop, 0.5) + points.leftSideLoopTop = points.leftSideTop.shiftFractionTowards(points.leftFrontTop, 0.06) + points.leftFrontLoopTop = points.leftSideTop.shiftFractionTowards(points.leftFrontTop, 0.53) + for (const key of ['Back', 'Side', 'Front']) { + points[`left${key}LoopBottom`] = new Point(points[`left${key}LoopTop`].x, points.cbBottom.y) + points[`right${key}LoopTop`] = points[`left${key}LoopTop`].flipX() + points[`right${key}LoopBottom`] = new Point(points[`right${key}LoopTop`].x, points.cbBottom.y) + /* + * Also add points on the left and right edge of the belt loop + * so we can draw the path later + */ + for (const side of ['left', 'right']) { + points[`${side}${key}LoopTopLeft`] = points[`${side}${key}LoopTop`].shift( + 180, + absoluteOptions.beltLoopWidth / 2 + ) + points[`${side}${key}LoopTopRight`] = points[`${side}${key}LoopTop`].shift( + 0, + absoluteOptions.beltLoopWidth / 2 + ) + points[`${side}${key}LoopBottomLeft`] = points[`${side}${key}LoopBottom`].shift( + 180, + absoluteOptions.beltLoopWidth / 2 + ) + points[`${side}${key}LoopBottomRight`] = points[`${side}${key}LoopBottom`].shift( + 0, + absoluteOptions.beltLoopWidth / 2 + ) + } + } + + /* + * Center back belt loop is different (a large wide one) + */ + points.cbLoopTopLeft = points.cbTop.shiftFractionTowards(points.leftBackLoopTop, 0.5) + points.cbLoopTopRight = points.cbLoopTopLeft.flipX() + points.cbLoopBottomLeft = new Point(points.cbLoopTopLeft.x, points.cbBottom.y) + points.cbLoopBottomRight = points.cbLoopBottomLeft.flipX() + + /* + * We want to add an attachment here that can hold a mobile phone + * However, we want to refrain from puttin it over any belt loops so let's + * see how wide it can be (max) and store that for re-use later when drafting + * the back attachment + */ + store.set('backAttachmentMaxWidth', points.leftSideLoopTopRight.dx(points.leftBackLoopTopLeft)) + + /* + * Seamline + */ + paths.seam = new Path() + .move(points.leftFrontTop) + .line(points.leftFrontBottom) + .line(points.rightEdgeBottom) + .line(points.rightEdgeTop) + .line(points.leftFrontTop) + .close() + .addClass('fabric') + + /* + * Only add SA when requested + */ + if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') + + /* + * If the user wants a complete pattern, let's add some more guidance + */ + if (complete) { + /* + * Add the fold line + */ + paths.fold = new Path().move(points.midLeft).line(points.midRight).addClass('help note') + + /* + * Include a message that this is where to fold the waistband + */ + macro('banner', { + path: paths.fold, + text: 'foldHere', + className: 'text-sm fill-note', + repeat: 50, + }) + + /* + * Indicate the fly edge line + */ + paths.flyEdge = new Path() + .move(points.leftFrontBottom) + .line(points.leftFrontTop) + .addClass('note dashed') + .addText('flyEdge', 'text-sm fill-note center') + + /* + * Indicate location of the belt loops + */ + for (const key of ['Back', 'Side', 'Front']) { + for (const side of ['left', 'right']) { + paths[`beltLoop${capitalize(side)}${key}`] = new Path() + .move(points[`${side}${key}LoopTopLeft`]) + .line(points[`${side}${key}LoopBottomLeft`]) + .move(points[`${side}${key}LoopBottomRight`]) + .line(points[`${side}${key}LoopTopRight`]) + .addClass('note stroke-sm dashed') + } + } + } + + /* + * Annotations + */ + + // Cutlist + store.cutlist.setCut({ cut: 1, from: 'fabric' }) + + /* + * Add the logo + */ + points.logo = points.midLeft.shiftFractionTowards(points.midRight, 0.65) + snippets.logo = new Snippet('logo', points.logo).scale(0.666) + + /* + * Add the title + */ + points.title = points.logo.shift(0, 70) + macro('title', { + at: points.title, + nr: 7, + title: 'waistband', + align: 'center', + scale: 0.666, + }) + + /* + * Add the button hole + */ + snippets.buttonhole = new Snippet('buttonhole-start', points.buttonhole) + .attr('data-scale', absoluteOptions.waistbandWidth / 16) + .attr('data-rotate', 90) + + /* + * Add the button + */ + snippets.button = new Snippet('button', points.button).attr( + 'data-scale', + absoluteOptions.waistbandWidth / 16 + ) + + /* + * Add notches to indicate the location of the seams + */ + macro('sprinkle', { + snippet: 'notch', + on: [ + 'leftSideTop', + 'rightSideTop', + 'leftFrontTop', + 'cbTop', + 'leftSideBottom', + 'rightSideBottom', + 'leftFrontBottom', + 'cbBottom', + ], + }) + + /* + * Add a grainline indicator + */ + points.grainlineTop = points.leftFrontTop.shiftFractionTowards(points.leftFrontLoopTop, 0.5) + points.grainlineBottom = new Point(points.grainlineTop.x, points.cbBottom.y) + macro('grainline', { + from: points.grainlineBottom, + to: points.grainlineTop, + }) + + /* + * Dimensions + */ + macro('hd', { + id: 'frontLeft', + from: points.leftFrontBottom, + to: points.leftSideBottom, + y: points.cbBottom.y + 15 + sa, + }) + macro('hd', { + id: 'backLeft', + from: points.leftSideBottom, + to: points.cbBottom, + y: points.cbBottom.y + 15 + sa, + }) + macro('hd', { + id: 'backRight', + from: points.cbBottom, + to: points.rightSideBottom, + y: points.cbBottom.y + 15 + sa, + }) + macro('hd', { + id: 'frontRight', + from: points.rightSideBottom, + to: points.rightFrontBottom, + y: points.cbBottom.y + 15 + sa, + }) + macro('hd', { + id: 'overlapRight', + from: points.rightFrontBottom, + to: points.rightEdgeBottom, + y: points.cbBottom.y + 15 + sa, + }) + macro('hd', { + id: 'leftHalf', + from: points.leftFrontBottom, + to: points.cbBottom, + y: points.cbBottom.y + 30 + sa, + }) + macro('hd', { + id: 'rightHalf', + from: points.cbBottom, + to: points.rightFrontBottom, + y: points.cbBottom.y + 30 + sa, + }) + macro('hd', { + id: 'fullLength', + from: points.leftFrontBottom, + to: points.rightEdgeBottom, + y: points.cbBottom.y + 45 + sa, + }) + macro('vd', { + id: 'buttonHeight', + from: points.rightEdgeBottom, + to: points.button, + x: points.rightEdgeBottom.x + 15 + sa, + }) + macro('vd', { + id: 'buttonHoleHeight', + from: points.leftFrontBottom, + to: points.buttonhole, + x: points.leftFrontBottom.x - sa - 15, + }) + macro('vd', { + id: 'fullWidth', + from: points.leftFrontBottom, + to: points.leftFrontTop, + x: points.leftFrontBottom.x - sa - 30, + scale: 0.5, + }) + macro('hd', { + id: 'belLoopLeftFront', + from: points.leftFrontTop, + to: points.leftFrontLoopTop, + y: points.cbTop.y - 30 - sa, + }) + macro('hd', { + id: 'beltLoopLeftSide', + from: points.leftFrontLoopTop, + to: points.leftSideLoopTop, + y: points.cbTop.y - 30 - sa, + }) + macro('hd', { + id: 'beltLoopLeftBack', + from: points.leftSideLoopTop, + to: points.leftBackLoopTop, + y: points.cbTop.y - 30 - sa, + }) + macro('hd', { + id: 'beltLoopLeftCb', + from: points.leftBackLoopTop, + to: points.cbTop, + y: points.cbTop.y - 30 - sa, + }) + macro('hd', { + id: 'beltLoopRightCb', + from: points.cbTop, + to: points.rightBackLoopTop, + y: points.cbTop.y - 30 - sa, + }) + macro('hd', { + id: 'beltLoopRightBack', + from: points.rightBackLoopTop, + to: points.rightSideLoopTop, + y: points.cbTop.y - 30 - sa, + }) + macro('hd', { + id: 'beltLoopRightSide', + from: points.rightSideLoopTop, + to: points.rightFrontLoopTop, + y: points.cbTop.y - 30 - sa, + }) + macro('hd', { + id: 'beltLoopRightFront', + from: points.rightFrontLoopTop, + to: points.rightFrontTop, + y: points.cbTop.y - 30 - sa, + }) + + return part +} diff --git a/designs/naomiwu/tests/shared.test.mjs b/designs/naomiwu/tests/shared.test.mjs new file mode 100644 index 00000000000..715fa93954d --- /dev/null +++ b/designs/naomiwu/tests/shared.test.mjs @@ -0,0 +1,20 @@ +// This file is auto-generated | Any changes you make will be overwritten. +import { Naomiwu, 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(Naomiwu) + +// Test translation +testPatternI18n(Naomiwu, i18n) + +// Test drafting - Change the second parameter to `true` to log errors +testPatternDrafting(Naomiwu, false) + +// Test sampling - Change the second parameter to `true` to log errors +testPatternSampling(Naomiwu, false) diff --git a/markdown/org/docs/designs/naomiwu/cutting/de.md b/markdown/org/docs/designs/naomiwu/cutting/de.md new file mode 100644 index 00000000000..c1bb906e117 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/cutting/de.md @@ -0,0 +1,26 @@ +--- +title: "Naomi Wu Cargo Skirt: Cutting Instructions" +--- + +## Oberstoff + +- Part 1 (back): Cut 2 from main fabric +- Part 2 (front fly side): Cut 1 from main fabric +- Part 3 (front no-fly side): Cut 1 from main fabric +- Part 4 (fly shield): Cut 1 from main fabric +- Part 6 (front pocket facing): Cut 2 from main fabric +- Part 7 (waistband): Cut 1 from main fabric +- Part 8 (front attachment): Cut 1 from main fabric +- Part 9 (front attachment facing): Cut 1 from main fabric +- Part 10 (back pocket): Cut 2 from main fabric +- Part 11 (back pocket flap): Cut 2 from main fabric +- Part 12 (back attachment back): Cut 1 from main fabric +- Part 13 (back attachment front): Cut 1 from main fabric +- Part 14 (back attachment flap): Cut 1 from main fabric + +## Lining + +- Part 5 (fly shield): Cut 1 from lining + +Write documentation + diff --git a/markdown/org/docs/designs/naomiwu/cutting/en.md b/markdown/org/docs/designs/naomiwu/cutting/en.md new file mode 100644 index 00000000000..917c046cb01 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/cutting/en.md @@ -0,0 +1,26 @@ +--- +title: "Naomi Wu Cargo Skirt: Cutting Instructions" +--- + +## Main fabric + +- Part 1 (back): Cut 2 from main fabric +- Part 2 (front fly side): Cut 1 from main fabric +- Part 3 (front no-fly side): Cut 1 from main fabric +- Part 4 (fly shield): Cut 1 from main fabric +- Part 6 (front pocket facing): Cut 2 from main fabric +- Part 7 (waistband): Cut 1 from main fabric +- Part 8 (front attachment): Cut 1 from main fabric +- Part 9 (front attachment facing): Cut 1 from main fabric +- Part 10 (back pocket): Cut 2 from main fabric +- Part 11 (back pocket flap): Cut 2 from main fabric +- Part 12 (back attachment back): Cut 1 from main fabric +- Part 13 (back attachment front): Cut 1 from main fabric +- Part 14 (back attachment flap): Cut 1 from main fabric + +## Lining + +- Part 5 (fly shield): Cut 1 from lining + +Write documentation + diff --git a/markdown/org/docs/designs/naomiwu/cutting/es.md b/markdown/org/docs/designs/naomiwu/cutting/es.md new file mode 100644 index 00000000000..ef157f98e1e --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/cutting/es.md @@ -0,0 +1,26 @@ +--- +title: "Naomi Wu Cargo Skirt: Cutting Instructions" +--- + +## Tela principal + +- Part 1 (back): Cut 2 from main fabric +- Part 2 (front fly side): Cut 1 from main fabric +- Part 3 (front no-fly side): Cut 1 from main fabric +- Part 4 (fly shield): Cut 1 from main fabric +- Part 6 (front pocket facing): Cut 2 from main fabric +- Part 7 (waistband): Cut 1 from main fabric +- Part 8 (front attachment): Cut 1 from main fabric +- Part 9 (front attachment facing): Cut 1 from main fabric +- Part 10 (back pocket): Cut 2 from main fabric +- Part 11 (back pocket flap): Cut 2 from main fabric +- Part 12 (back attachment back): Cut 1 from main fabric +- Part 13 (back attachment front): Cut 1 from main fabric +- Part 14 (back attachment flap): Cut 1 from main fabric + +## Terminal + +- Part 5 (fly shield): Cut 1 from lining + +Write documentation + diff --git a/markdown/org/docs/designs/naomiwu/cutting/fr.md b/markdown/org/docs/designs/naomiwu/cutting/fr.md new file mode 100644 index 00000000000..d0be79e8b51 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/cutting/fr.md @@ -0,0 +1,26 @@ +--- +title: "Naomi Wu Cargo Skirt: Cutting Instructions" +--- + +## Tissu principal + +- Part 1 (back): Cut 2 from main fabric +- Part 2 (front fly side): Cut 1 from main fabric +- Part 3 (front no-fly side): Cut 1 from main fabric +- Part 4 (fly shield): Cut 1 from main fabric +- Part 6 (front pocket facing): Cut 2 from main fabric +- Part 7 (waistband): Cut 1 from main fabric +- Part 8 (front attachment): Cut 1 from main fabric +- Part 9 (front attachment facing): Cut 1 from main fabric +- Part 10 (back pocket): Cut 2 from main fabric +- Part 11 (back pocket flap): Cut 2 from main fabric +- Part 12 (back attachment back): Cut 1 from main fabric +- Part 13 (back attachment front): Cut 1 from main fabric +- Part 14 (back attachment flap): Cut 1 from main fabric + +## Doublure + +- Part 5 (fly shield): Cut 1 from lining + +Write documentation + diff --git a/markdown/org/docs/designs/naomiwu/cutting/nl.md b/markdown/org/docs/designs/naomiwu/cutting/nl.md new file mode 100644 index 00000000000..5dd8eafa7e7 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/cutting/nl.md @@ -0,0 +1,26 @@ +--- +title: "Naomi Wu Cargo Skirt: Cutting Instructions" +--- + +## Buitenstof + +- Part 1 (back): Cut 2 from main fabric +- Part 2 (front fly side): Cut 1 from main fabric +- Part 3 (front no-fly side): Cut 1 from main fabric +- Part 4 (fly shield): Cut 1 from main fabric +- Part 6 (front pocket facing): Cut 2 from main fabric +- Part 7 (waistband): Cut 1 from main fabric +- Part 8 (front attachment): Cut 1 from main fabric +- Part 9 (front attachment facing): Cut 1 from main fabric +- Part 10 (back pocket): Cut 2 from main fabric +- Part 11 (back pocket flap): Cut 2 from main fabric +- Part 12 (back attachment back): Cut 1 from main fabric +- Part 13 (back attachment front): Cut 1 from main fabric +- Part 14 (back attachment flap): Cut 1 from main fabric + +## Voering + +- Part 5 (fly shield): Cut 1 from lining + +Write documentation + diff --git a/markdown/org/docs/designs/naomiwu/cutting/uk.md b/markdown/org/docs/designs/naomiwu/cutting/uk.md new file mode 100644 index 00000000000..c7472a545b8 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/cutting/uk.md @@ -0,0 +1,26 @@ +--- +title: "Naomi Wu Cargo Skirt: Cutting Instructions" +--- + +## Основна Ρ‚ΠΊΠ°Π½ΠΈΠ½Π° + +- Part 1 (back): Cut 2 from main fabric +- Part 2 (front fly side): Cut 1 from main fabric +- Part 3 (front no-fly side): Cut 1 from main fabric +- Part 4 (fly shield): Cut 1 from main fabric +- Part 6 (front pocket facing): Cut 2 from main fabric +- Part 7 (waistband): Cut 1 from main fabric +- Part 8 (front attachment): Cut 1 from main fabric +- Part 9 (front attachment facing): Cut 1 from main fabric +- Part 10 (back pocket): Cut 2 from main fabric +- Part 11 (back pocket flap): Cut 2 from main fabric +- Part 12 (back attachment back): Cut 1 from main fabric +- Part 13 (back attachment front): Cut 1 from main fabric +- Part 14 (back attachment flap): Cut 1 from main fabric + +## ΠŸΡ–Π΄ΠΊΠ»Π°Π΄ΠΊΠ° + +- Part 5 (fly shield): Cut 1 from lining + +Write documentation + diff --git a/markdown/org/docs/designs/naomiwu/de.md b/markdown/org/docs/designs/naomiwu/de.md new file mode 100644 index 00000000000..d043b91d420 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/de.md @@ -0,0 +1,5 @@ +--- +title: "Naomi Wu Cargo Skirt" +--- + + diff --git a/markdown/org/docs/designs/naomiwu/en.md b/markdown/org/docs/designs/naomiwu/en.md new file mode 100644 index 00000000000..de384242aad --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/en.md @@ -0,0 +1,8 @@ +--- +title: "Naomi Wu Cargo Skirt" +--- + +import { DesignInfo } from 'shared/components/designs/info.mjs' + + + diff --git a/markdown/org/docs/designs/naomiwu/es.md b/markdown/org/docs/designs/naomiwu/es.md new file mode 100644 index 00000000000..d043b91d420 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/es.md @@ -0,0 +1,5 @@ +--- +title: "Naomi Wu Cargo Skirt" +--- + + diff --git a/markdown/org/docs/designs/naomiwu/fabric/de.md b/markdown/org/docs/designs/naomiwu/fabric/de.md new file mode 100644 index 00000000000..19b6330ba85 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/fabric/de.md @@ -0,0 +1,10 @@ +--- +title: "Naomi Wu Cargo Skirt: Fabric Options" +--- + +A cargo skirt is work wear, so you want to go with fabric that can stand the wear and tear of screwdrivers being wiped clean on them, nuts and bolds rattling around in its pockets. + +While there's plenty of choice in synthetic fibers, I would recommend a heavy-weight cotton or canvas. You also can't go wrong with what has been the de-facto standard for heavy duty workwear for many years: denim. + +However, avoid any hint of stretchy fibers. You want zero stretch. This baby should not start sagging as you load it with cargo. + diff --git a/markdown/org/docs/designs/naomiwu/fabric/en.md b/markdown/org/docs/designs/naomiwu/fabric/en.md new file mode 100644 index 00000000000..5bcaab97ebc --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/fabric/en.md @@ -0,0 +1,15 @@ +--- +title: "Naomi Wu Cargo Skirt: Fabric Options" +--- + +A cargo skirt is work wear, so you want to go with fabric that can stand the +wear and tear of screwdrivers being wiped clean on them, nuts and bolds +rattling around in its pockets. + +While there's plenty of choice in synthetic fibers, I would recommend a +heavy-weight cotton or canvas. You also can't go wrong with what has been the +de-facto standard for heavy duty workwear for many years: denim. + +However, avoid any hint of stretchy fibers. You want zero stretch. This baby +should not start sagging as you load it with cargo. + diff --git a/markdown/org/docs/designs/naomiwu/fabric/es.md b/markdown/org/docs/designs/naomiwu/fabric/es.md new file mode 100644 index 00000000000..19b6330ba85 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/fabric/es.md @@ -0,0 +1,10 @@ +--- +title: "Naomi Wu Cargo Skirt: Fabric Options" +--- + +A cargo skirt is work wear, so you want to go with fabric that can stand the wear and tear of screwdrivers being wiped clean on them, nuts and bolds rattling around in its pockets. + +While there's plenty of choice in synthetic fibers, I would recommend a heavy-weight cotton or canvas. You also can't go wrong with what has been the de-facto standard for heavy duty workwear for many years: denim. + +However, avoid any hint of stretchy fibers. You want zero stretch. This baby should not start sagging as you load it with cargo. + diff --git a/markdown/org/docs/designs/naomiwu/fabric/fr.md b/markdown/org/docs/designs/naomiwu/fabric/fr.md new file mode 100644 index 00000000000..19b6330ba85 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/fabric/fr.md @@ -0,0 +1,10 @@ +--- +title: "Naomi Wu Cargo Skirt: Fabric Options" +--- + +A cargo skirt is work wear, so you want to go with fabric that can stand the wear and tear of screwdrivers being wiped clean on them, nuts and bolds rattling around in its pockets. + +While there's plenty of choice in synthetic fibers, I would recommend a heavy-weight cotton or canvas. You also can't go wrong with what has been the de-facto standard for heavy duty workwear for many years: denim. + +However, avoid any hint of stretchy fibers. You want zero stretch. This baby should not start sagging as you load it with cargo. + diff --git a/markdown/org/docs/designs/naomiwu/fabric/nl.md b/markdown/org/docs/designs/naomiwu/fabric/nl.md new file mode 100644 index 00000000000..19b6330ba85 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/fabric/nl.md @@ -0,0 +1,10 @@ +--- +title: "Naomi Wu Cargo Skirt: Fabric Options" +--- + +A cargo skirt is work wear, so you want to go with fabric that can stand the wear and tear of screwdrivers being wiped clean on them, nuts and bolds rattling around in its pockets. + +While there's plenty of choice in synthetic fibers, I would recommend a heavy-weight cotton or canvas. You also can't go wrong with what has been the de-facto standard for heavy duty workwear for many years: denim. + +However, avoid any hint of stretchy fibers. You want zero stretch. This baby should not start sagging as you load it with cargo. + diff --git a/markdown/org/docs/designs/naomiwu/fabric/uk.md b/markdown/org/docs/designs/naomiwu/fabric/uk.md new file mode 100644 index 00000000000..19b6330ba85 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/fabric/uk.md @@ -0,0 +1,10 @@ +--- +title: "Naomi Wu Cargo Skirt: Fabric Options" +--- + +A cargo skirt is work wear, so you want to go with fabric that can stand the wear and tear of screwdrivers being wiped clean on them, nuts and bolds rattling around in its pockets. + +While there's plenty of choice in synthetic fibers, I would recommend a heavy-weight cotton or canvas. You also can't go wrong with what has been the de-facto standard for heavy duty workwear for many years: denim. + +However, avoid any hint of stretchy fibers. You want zero stretch. This baby should not start sagging as you load it with cargo. + diff --git a/markdown/org/docs/designs/naomiwu/fr.md b/markdown/org/docs/designs/naomiwu/fr.md new file mode 100644 index 00000000000..d043b91d420 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/fr.md @@ -0,0 +1,5 @@ +--- +title: "Naomi Wu Cargo Skirt" +--- + + diff --git a/markdown/org/docs/designs/naomiwu/instructions/de.md b/markdown/org/docs/designs/naomiwu/instructions/de.md new file mode 100644 index 00000000000..4d1fd31c14d --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/instructions/de.md @@ -0,0 +1,5 @@ +--- +title: "Naomi Wu Cargo Skirt: Sewing Instructions" +--- + + Write these diff --git a/markdown/org/docs/designs/naomiwu/instructions/en.md b/markdown/org/docs/designs/naomiwu/instructions/en.md new file mode 100644 index 00000000000..4d1fd31c14d --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/instructions/en.md @@ -0,0 +1,5 @@ +--- +title: "Naomi Wu Cargo Skirt: Sewing Instructions" +--- + + Write these diff --git a/markdown/org/docs/designs/naomiwu/instructions/es.md b/markdown/org/docs/designs/naomiwu/instructions/es.md new file mode 100644 index 00000000000..4d1fd31c14d --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/instructions/es.md @@ -0,0 +1,5 @@ +--- +title: "Naomi Wu Cargo Skirt: Sewing Instructions" +--- + + Write these diff --git a/markdown/org/docs/designs/naomiwu/instructions/fr.md b/markdown/org/docs/designs/naomiwu/instructions/fr.md new file mode 100644 index 00000000000..4d1fd31c14d --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/instructions/fr.md @@ -0,0 +1,5 @@ +--- +title: "Naomi Wu Cargo Skirt: Sewing Instructions" +--- + + Write these diff --git a/markdown/org/docs/designs/naomiwu/instructions/nl.md b/markdown/org/docs/designs/naomiwu/instructions/nl.md new file mode 100644 index 00000000000..4d1fd31c14d --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/instructions/nl.md @@ -0,0 +1,5 @@ +--- +title: "Naomi Wu Cargo Skirt: Sewing Instructions" +--- + + Write these diff --git a/markdown/org/docs/designs/naomiwu/instructions/uk.md b/markdown/org/docs/designs/naomiwu/instructions/uk.md new file mode 100644 index 00000000000..4d1fd31c14d --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/instructions/uk.md @@ -0,0 +1,5 @@ +--- +title: "Naomi Wu Cargo Skirt: Sewing Instructions" +--- + + Write these diff --git a/markdown/org/docs/designs/naomiwu/measurements/de.md b/markdown/org/docs/designs/naomiwu/measurements/de.md new file mode 100644 index 00000000000..b2507c88866 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/measurements/de.md @@ -0,0 +1,5 @@ +--- +title: "Naomi Wu Cargo Skirt: Required Measurements" +--- + + diff --git a/markdown/org/docs/designs/naomiwu/measurements/en.md b/markdown/org/docs/designs/naomiwu/measurements/en.md new file mode 100644 index 00000000000..b2507c88866 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/measurements/en.md @@ -0,0 +1,5 @@ +--- +title: "Naomi Wu Cargo Skirt: Required Measurements" +--- + + diff --git a/markdown/org/docs/designs/naomiwu/measurements/es.md b/markdown/org/docs/designs/naomiwu/measurements/es.md new file mode 100644 index 00000000000..b2507c88866 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/measurements/es.md @@ -0,0 +1,5 @@ +--- +title: "Naomi Wu Cargo Skirt: Required Measurements" +--- + + diff --git a/markdown/org/docs/designs/naomiwu/measurements/fr.md b/markdown/org/docs/designs/naomiwu/measurements/fr.md new file mode 100644 index 00000000000..b2507c88866 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/measurements/fr.md @@ -0,0 +1,5 @@ +--- +title: "Naomi Wu Cargo Skirt: Required Measurements" +--- + + diff --git a/markdown/org/docs/designs/naomiwu/measurements/nl.md b/markdown/org/docs/designs/naomiwu/measurements/nl.md new file mode 100644 index 00000000000..b2507c88866 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/measurements/nl.md @@ -0,0 +1,5 @@ +--- +title: "Naomi Wu Cargo Skirt: Required Measurements" +--- + + diff --git a/markdown/org/docs/designs/naomiwu/measurements/uk.md b/markdown/org/docs/designs/naomiwu/measurements/uk.md new file mode 100644 index 00000000000..b2507c88866 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/measurements/uk.md @@ -0,0 +1,5 @@ +--- +title: "Naomi Wu Cargo Skirt: Required Measurements" +--- + + diff --git a/markdown/org/docs/designs/naomiwu/needs/de.md b/markdown/org/docs/designs/naomiwu/needs/de.md new file mode 100644 index 00000000000..5fb46b6d9a5 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/needs/de.md @@ -0,0 +1,23 @@ +--- +title: "Naomi Wu Cargo Skirt: What You Need" +--- + +To make Naomi Wu's signature cargo skirt, you will need the following: + +- [Grundlegendes NΓ€hzubehΓΆr](/docs/sewing/basic-sewing-supplies) +- Etwa 0.75 cm (0.8") eines geeigneten Stoffes ([siehe Stoffoptionen](/docs/patterns/naomiwu/fabric)) +- About 0.20 meters (0.25 yards) of a suitable lining fabric ([see Fabric options](/docs/patterns/naomiwu/fabric)) +- A zipper +- A snap button (both stuf and socket) +- About 5 centimeter (2 inches) velcro strip (both sides) +- About 0.50 meters (20 inches) of strong ribbon (about 2cm/1inch wide) +- A D-ring to match the ribbon +- About 0.40 (16 inches) of waistband elastic + + + +These are estimates. Real requirements will vary based on your sizing. + +Refer to the designer messages or paperless view for more detailed dimensions. + + diff --git a/markdown/org/docs/designs/naomiwu/needs/en.md b/markdown/org/docs/designs/naomiwu/needs/en.md new file mode 100644 index 00000000000..bfd260688c6 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/needs/en.md @@ -0,0 +1,23 @@ +--- +title: "Naomi Wu Cargo Skirt: What You Need" +--- + +To make Naomi Wu's signature cargo skirt, you will need the following: + +- [Basic sewing supplies](/docs/sewing/basic-sewing-supplies) +- About 0.75 meters (0.8 yards) of a suitable fabric ([see Fabric options](/docs/patterns/naomiwu/fabric)) +- About 0.20 meters (0.25 yards) of a suitable lining fabric ([see Fabric options](/docs/patterns/naomiwu/fabric)) +- A zipper +- A snap button (both stuf and socket) +- About 5 centimeter (2 inches) velcro strip (both sides) +- About 0.50 meters (20 inches) of strong ribbon (about 2cm/1inch wide) +- A D-ring to match the ribbon +- About 0.40 (16 inches) of waistband elastic + + + +These are estimates. Real requirements will vary based on your sizing. + +Refer to the designer messages or paperless view for more detailed dimensions. + + diff --git a/markdown/org/docs/designs/naomiwu/needs/es.md b/markdown/org/docs/designs/naomiwu/needs/es.md new file mode 100644 index 00000000000..ba7a807569c --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/needs/es.md @@ -0,0 +1,23 @@ +--- +title: "Naomi Wu Cargo Skirt: What You Need" +--- + +To make Naomi Wu's signature cargo skirt, you will need the following: + +- [Suministros bΓ‘sicos de costura](/docs/sewing/basic-sewing-supplies) +- Unos 0,75 metros (0,8 yardas) de una tela adecuada ([ver Opciones de tela](/docs/patterns/naomiwu/fabric)) +- About 0.20 meters (0.25 yards) of a suitable lining fabric ([see Fabric options](/docs/patterns/naomiwu/fabric)) +- A zipper +- A snap button (both stuf and socket) +- About 5 centimeter (2 inches) velcro strip (both sides) +- About 0.50 meters (20 inches) of strong ribbon (about 2cm/1inch wide) +- A D-ring to match the ribbon +- About 0.40 (16 inches) of waistband elastic + + + +These are estimates. Real requirements will vary based on your sizing. + +Refer to the designer messages or paperless view for more detailed dimensions. + + diff --git a/markdown/org/docs/designs/naomiwu/needs/fr.md b/markdown/org/docs/designs/naomiwu/needs/fr.md new file mode 100644 index 00000000000..7893307b790 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/needs/fr.md @@ -0,0 +1,23 @@ +--- +title: "Naomi Wu Cargo Skirt: What You Need" +--- + +To make Naomi Wu's signature cargo skirt, you will need the following: + +- [Fourniture de base pour la couture](/docs/sewing/basic-sewing-supplies) +- Environ 0.75 mΓ¨tre (0.8 yard) d'un tissu adaptΓ© ([voir Options de tissu](/docs/patterns/naomiwu/fabric)) +- About 0.20 meters (0.25 yards) of a suitable lining fabric ([see Fabric options](/docs/patterns/naomiwu/fabric)) +- A zipper +- A snap button (both stuf and socket) +- About 5 centimeter (2 inches) velcro strip (both sides) +- About 0.50 meters (20 inches) of strong ribbon (about 2cm/1inch wide) +- A D-ring to match the ribbon +- About 0.40 (16 inches) of waistband elastic + + + +These are estimates. Real requirements will vary based on your sizing. + +Refer to the designer messages or paperless view for more detailed dimensions. + + diff --git a/markdown/org/docs/designs/naomiwu/needs/nl.md b/markdown/org/docs/designs/naomiwu/needs/nl.md new file mode 100644 index 00000000000..ada3e982f69 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/needs/nl.md @@ -0,0 +1,23 @@ +--- +title: "Naomi Wu Cargo Skirt: What You Need" +--- + +To make Naomi Wu's signature cargo skirt, you will need the following: + +- [Basis naaimateriaal](/docs/sewing/basic-sewing-supplies) +- Ongeveer 0,75 meter van een geschikte stof ([zie Stofopties](/docs/patterns/naomiwu/fabric)) +- About 0.20 meters (0.25 yards) of a suitable lining fabric ([see Fabric options](/docs/patterns/naomiwu/fabric)) +- A zipper +- A snap button (both stuf and socket) +- About 5 centimeter (2 inches) velcro strip (both sides) +- About 0.50 meters (20 inches) of strong ribbon (about 2cm/1inch wide) +- A D-ring to match the ribbon +- About 0.40 (16 inches) of waistband elastic + + + +These are estimates. Real requirements will vary based on your sizing. + +Refer to the designer messages or paperless view for more detailed dimensions. + + diff --git a/markdown/org/docs/designs/naomiwu/needs/uk.md b/markdown/org/docs/designs/naomiwu/needs/uk.md new file mode 100644 index 00000000000..159e9f9cf2d --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/needs/uk.md @@ -0,0 +1,23 @@ +--- +title: "Naomi Wu Cargo Skirt: What You Need" +--- + +To make Naomi Wu's signature cargo skirt, you will need the following: + +- [Π‘Π°Π·ΠΎΠ²Ρ– ΠΌΠ°Ρ‚Π΅Ρ€Ρ–Π°Π»ΠΈ для ΡˆΠΈΡ‚Ρ‚Ρ](/docs/sewing/basic-sewing-supplies) +- ΠŸΡ€ΠΈΠ±Π»ΠΈΠ·Π½ΠΎ 0,75 ΠΌΠ΅Ρ‚Ρ€Π° (0,8 ярдів) Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π½ΠΎΡ— Ρ‚ΠΊΠ°Π½ΠΈΠ½ΠΈ ([Π΄ΠΈΠ². Π²Π°Ρ€Ρ–Π°Π½Ρ‚ΠΈ Ρ‚ΠΊΠ°Π½ΠΈΠ½ΠΈ](/docs/patterns/naomiwu/fabric)) +- About 0.20 meters (0.25 yards) of a suitable lining fabric ([see Fabric options](/docs/patterns/naomiwu/fabric)) +- A zipper +- A snap button (both stuf and socket) +- About 5 centimeter (2 inches) velcro strip (both sides) +- About 0.50 meters (20 inches) of strong ribbon (about 2cm/1inch wide) +- A D-ring to match the ribbon +- About 0.40 (16 inches) of waistband elastic + + + +These are estimates. Real requirements will vary based on your sizing. + +Refer to the designer messages or paperless view for more detailed dimensions. + + diff --git a/markdown/org/docs/designs/naomiwu/nl.md b/markdown/org/docs/designs/naomiwu/nl.md new file mode 100644 index 00000000000..d043b91d420 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/nl.md @@ -0,0 +1,5 @@ +--- +title: "Naomi Wu Cargo Skirt" +--- + + diff --git a/markdown/org/docs/designs/naomiwu/notes/en.md b/markdown/org/docs/designs/naomiwu/notes/en.md new file mode 100644 index 00000000000..c8dec530fbf --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/notes/en.md @@ -0,0 +1,61 @@ +--- +title: "Naomi Wu Cargo Skirt: Designer Notes" +--- + +As these are the *designer notes* I first want to clear up any +misunderstanding: I am not the designer of this skirt. Naomi Wu is. +I merely wrote the code to implement this as a FreeSewing design, and worked +with Naomi to ensure that said code represents her vision for the design. + +I've collaborated with others before to bring a design to fruition, but that +was typically with friends or people from the FreeSewing community, and my role +in that collaboration was always much bigger. This was my first time +working with a bona-fide celebrity, in addition to being someone I find hugely +inspiring and have a ton of respect for. If I'm being honest, I was really +nervous about this. + +The process was also different from other collaborations which typically start +with an idea that we then try to implement together. Here, everything was +already done. Naomi already had the skirt and done all the work. The reason I +came on board is because she wanted to offer it in a size-inclusive range. In +other words, it was my job to make her design parametric. + +So one day in the spring of 2023, a package arrived on my doorstep all the way +from China. Inside it was Naomi Wu's very own cargo skirt. A veritable +smorgasbord of storage options in which even the pockets have pockets. + +It was a lot more elaborate than I anticipated, but somehow also very practical. +It dawned on me as I was working on this that I should make one of these for +myself because I always misplace tools when I'm working on something. This is +like a tool chest that you can wear. Only better organized. + +At Naomi's explicit request, I made the fronts reversible so they can me more +female or male presenting as you see fit (with the zipper being on this or that +side having certain significance towards gender-expression), and I added an +option to slope the waistband which will benefit more curvy people. + +In the end, you get what it says on the tin: Naomi Wu's cargo skirt. Or at +least the close as you can get to the original item that landed on my doorstep +that fateful day. + +I want to thank Naomi Wu for trusting FreeSewing -- and myself -- with her plans +to offer her skirt design as open source. I think it's a big deal for FreeSewing +to get this kind of recognition, and I know it was a big deal for me personally. + +joost + + + +##### Naomi Who? + +[Naomi Wu](https://en.wikipedia.org/wiki/Naomi_Wu), also known by her online pseudonym *SexyCyborg* is a Chinese tech & DIY girl from Shenzhen, China. +She is known for her signature style blending DIY, electronics, and fashion, and has proven to be a +relentless advocate for women in STEM and LGBTQ rights. + +Despite all prejudice and setbacks due to her gender expression, she managed to grow a large online audience, become a minor celebrity in the 3D-printers community, and at one point single-handedly compelled Chinese companies to take GPL-violations serious. As further testament to her status as a famous maker, she graced the cover of Make magazine in 2018. + +As an outspoken Chinese citizen with a tendency for telling it like it is, and a large international following, Noami drew the heat, and in the summer of 2023 the Chinese government de-facto silenced her. Ever since, her [Twitter](https://twitter.com/realsexycyborg) and [Instagram](https://www.instagram.com/reallysexycyborg/) accounts, and [YouTube channel]( +www.youtube.com/c/SexyCyborg) have fallen silent. Although [her online shop remains available](https://cybernightmarket.com/). + + + diff --git a/markdown/org/docs/designs/naomiwu/options/backattachmentdepth/de.md b/markdown/org/docs/designs/naomiwu/options/backattachmentdepth/de.md new file mode 100644 index 00000000000..21fda7b2419 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backattachmentdepth/de.md @@ -0,0 +1,10 @@ +--- +title: "Back attachment depth" +--- + +This option controls the depth of the back attachment. + +The back attachment is like a pocket that is only attached at the waist. It is a common feature on workwear as it allows greater mobility. An attachment like this exists because it's not so easy to bend over when there's a big wrench in your pocket. + +This option controls the depth of the back attachment. + diff --git a/markdown/org/docs/designs/naomiwu/options/backattachmentdepth/en.md b/markdown/org/docs/designs/naomiwu/options/backattachmentdepth/en.md new file mode 100644 index 00000000000..eef4de4d149 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backattachmentdepth/en.md @@ -0,0 +1,11 @@ +--- +title: "Back attachment depth" +--- + +This option controls the depth of the back attachment. + +The back attachment is like a pocket that is only attached at the waist. It is a common feature on workwear as it allows greater mobility. +An attachment like this exists because it's not so easy to bend over when there's a big wrench in your pocket. + +This option controls the depth of the back attachment. + diff --git a/markdown/org/docs/designs/naomiwu/options/backattachmentdepth/es.md b/markdown/org/docs/designs/naomiwu/options/backattachmentdepth/es.md new file mode 100644 index 00000000000..21fda7b2419 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backattachmentdepth/es.md @@ -0,0 +1,10 @@ +--- +title: "Back attachment depth" +--- + +This option controls the depth of the back attachment. + +The back attachment is like a pocket that is only attached at the waist. It is a common feature on workwear as it allows greater mobility. An attachment like this exists because it's not so easy to bend over when there's a big wrench in your pocket. + +This option controls the depth of the back attachment. + diff --git a/markdown/org/docs/designs/naomiwu/options/backattachmentdepth/fr.md b/markdown/org/docs/designs/naomiwu/options/backattachmentdepth/fr.md new file mode 100644 index 00000000000..21fda7b2419 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backattachmentdepth/fr.md @@ -0,0 +1,10 @@ +--- +title: "Back attachment depth" +--- + +This option controls the depth of the back attachment. + +The back attachment is like a pocket that is only attached at the waist. It is a common feature on workwear as it allows greater mobility. An attachment like this exists because it's not so easy to bend over when there's a big wrench in your pocket. + +This option controls the depth of the back attachment. + diff --git a/markdown/org/docs/designs/naomiwu/options/backattachmentdepth/nl.md b/markdown/org/docs/designs/naomiwu/options/backattachmentdepth/nl.md new file mode 100644 index 00000000000..21fda7b2419 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backattachmentdepth/nl.md @@ -0,0 +1,10 @@ +--- +title: "Back attachment depth" +--- + +This option controls the depth of the back attachment. + +The back attachment is like a pocket that is only attached at the waist. It is a common feature on workwear as it allows greater mobility. An attachment like this exists because it's not so easy to bend over when there's a big wrench in your pocket. + +This option controls the depth of the back attachment. + diff --git a/markdown/org/docs/designs/naomiwu/options/backattachmentdepth/uk.md b/markdown/org/docs/designs/naomiwu/options/backattachmentdepth/uk.md new file mode 100644 index 00000000000..21fda7b2419 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backattachmentdepth/uk.md @@ -0,0 +1,10 @@ +--- +title: "Back attachment depth" +--- + +This option controls the depth of the back attachment. + +The back attachment is like a pocket that is only attached at the waist. It is a common feature on workwear as it allows greater mobility. An attachment like this exists because it's not so easy to bend over when there's a big wrench in your pocket. + +This option controls the depth of the back attachment. + diff --git a/markdown/org/docs/designs/naomiwu/options/backattachmentflapchamfersize/de.md b/markdown/org/docs/designs/naomiwu/options/backattachmentflapchamfersize/de.md new file mode 100644 index 00000000000..f9212271b1a --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backattachmentflapchamfersize/de.md @@ -0,0 +1,14 @@ +--- +title: "Back attachment flap chamfer size" +--- + +This option controls the chamfer size of the back attachment flap. + +This option has no effect whatsoever on fit or functionality. It is mostly aesthetic. + + + +A [chamfer](https://en.wikipedia.org/wiki/Chamfer) is a term borrowed from the machining world to describe the process of softening a sharp 90Β° angle into two consecutive 45Β° angles. + + + diff --git a/markdown/org/docs/designs/naomiwu/options/backattachmentflapchamfersize/en.md b/markdown/org/docs/designs/naomiwu/options/backattachmentflapchamfersize/en.md new file mode 100644 index 00000000000..b506b4dab53 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backattachmentflapchamfersize/en.md @@ -0,0 +1,14 @@ +--- +title: "Back attachment flap chamfer size" +--- + +This option controls the chamfer size of the back attachment flap. + +This option has no effect whatsoever on fit or functionality. It is mostly aesthetic. + + + +A [chamfer](https://en.wikipedia.org/wiki/Chamfer) is a term borrowed from the machining world to describe the process of softening a sharp 90Β° angle into two consecutive 45Β° angles. + + + diff --git a/markdown/org/docs/designs/naomiwu/options/backattachmentflapchamfersize/es.md b/markdown/org/docs/designs/naomiwu/options/backattachmentflapchamfersize/es.md new file mode 100644 index 00000000000..f9212271b1a --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backattachmentflapchamfersize/es.md @@ -0,0 +1,14 @@ +--- +title: "Back attachment flap chamfer size" +--- + +This option controls the chamfer size of the back attachment flap. + +This option has no effect whatsoever on fit or functionality. It is mostly aesthetic. + + + +A [chamfer](https://en.wikipedia.org/wiki/Chamfer) is a term borrowed from the machining world to describe the process of softening a sharp 90Β° angle into two consecutive 45Β° angles. + + + diff --git a/markdown/org/docs/designs/naomiwu/options/backattachmentflapchamfersize/fr.md b/markdown/org/docs/designs/naomiwu/options/backattachmentflapchamfersize/fr.md new file mode 100644 index 00000000000..f9212271b1a --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backattachmentflapchamfersize/fr.md @@ -0,0 +1,14 @@ +--- +title: "Back attachment flap chamfer size" +--- + +This option controls the chamfer size of the back attachment flap. + +This option has no effect whatsoever on fit or functionality. It is mostly aesthetic. + + + +A [chamfer](https://en.wikipedia.org/wiki/Chamfer) is a term borrowed from the machining world to describe the process of softening a sharp 90Β° angle into two consecutive 45Β° angles. + + + diff --git a/markdown/org/docs/designs/naomiwu/options/backattachmentflapchamfersize/nl.md b/markdown/org/docs/designs/naomiwu/options/backattachmentflapchamfersize/nl.md new file mode 100644 index 00000000000..f9212271b1a --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backattachmentflapchamfersize/nl.md @@ -0,0 +1,14 @@ +--- +title: "Back attachment flap chamfer size" +--- + +This option controls the chamfer size of the back attachment flap. + +This option has no effect whatsoever on fit or functionality. It is mostly aesthetic. + + + +A [chamfer](https://en.wikipedia.org/wiki/Chamfer) is a term borrowed from the machining world to describe the process of softening a sharp 90Β° angle into two consecutive 45Β° angles. + + + diff --git a/markdown/org/docs/designs/naomiwu/options/backattachmentflapchamfersize/uk.md b/markdown/org/docs/designs/naomiwu/options/backattachmentflapchamfersize/uk.md new file mode 100644 index 00000000000..f9212271b1a --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backattachmentflapchamfersize/uk.md @@ -0,0 +1,14 @@ +--- +title: "Back attachment flap chamfer size" +--- + +This option controls the chamfer size of the back attachment flap. + +This option has no effect whatsoever on fit or functionality. It is mostly aesthetic. + + + +A [chamfer](https://en.wikipedia.org/wiki/Chamfer) is a term borrowed from the machining world to describe the process of softening a sharp 90Β° angle into two consecutive 45Β° angles. + + + diff --git a/markdown/org/docs/designs/naomiwu/options/backattachmentwidth/de.md b/markdown/org/docs/designs/naomiwu/options/backattachmentwidth/de.md new file mode 100644 index 00000000000..b137000a562 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backattachmentwidth/de.md @@ -0,0 +1,11 @@ +--- +title: "Back attachment width" +--- + +This option controls the width of the back attachment. + +The back attachment is like a pocket that is only attached at the waist. It is a common feature on workwear as it allows greater mobility. An attachment like this exists because it's not so easy to bend over when there's a big wrench in your pocket. + +If the back attachment gets too wide to fit between the belt loops, the pattern will warn you about this as it complicates construction. + + diff --git a/markdown/org/docs/designs/naomiwu/options/backattachmentwidth/en.md b/markdown/org/docs/designs/naomiwu/options/backattachmentwidth/en.md new file mode 100644 index 00000000000..33b791805c9 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backattachmentwidth/en.md @@ -0,0 +1,12 @@ +--- +title: "Back attachment width" +--- + +This option controls the width of the back attachment. + +The back attachment is like a pocket that is only attached at the waist. It is a common feature on workwear as it allows greater mobility. +An attachment like this exists because it's not so easy to bend over when there's a big wrench in your pocket. + +If the back attachment gets too wide to fit between the belt loops, the pattern will warn you about this as it complicates construction. + + diff --git a/markdown/org/docs/designs/naomiwu/options/backattachmentwidth/es.md b/markdown/org/docs/designs/naomiwu/options/backattachmentwidth/es.md new file mode 100644 index 00000000000..b137000a562 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backattachmentwidth/es.md @@ -0,0 +1,11 @@ +--- +title: "Back attachment width" +--- + +This option controls the width of the back attachment. + +The back attachment is like a pocket that is only attached at the waist. It is a common feature on workwear as it allows greater mobility. An attachment like this exists because it's not so easy to bend over when there's a big wrench in your pocket. + +If the back attachment gets too wide to fit between the belt loops, the pattern will warn you about this as it complicates construction. + + diff --git a/markdown/org/docs/designs/naomiwu/options/backattachmentwidth/fr.md b/markdown/org/docs/designs/naomiwu/options/backattachmentwidth/fr.md new file mode 100644 index 00000000000..b137000a562 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backattachmentwidth/fr.md @@ -0,0 +1,11 @@ +--- +title: "Back attachment width" +--- + +This option controls the width of the back attachment. + +The back attachment is like a pocket that is only attached at the waist. It is a common feature on workwear as it allows greater mobility. An attachment like this exists because it's not so easy to bend over when there's a big wrench in your pocket. + +If the back attachment gets too wide to fit between the belt loops, the pattern will warn you about this as it complicates construction. + + diff --git a/markdown/org/docs/designs/naomiwu/options/backattachmentwidth/nl.md b/markdown/org/docs/designs/naomiwu/options/backattachmentwidth/nl.md new file mode 100644 index 00000000000..b137000a562 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backattachmentwidth/nl.md @@ -0,0 +1,11 @@ +--- +title: "Back attachment width" +--- + +This option controls the width of the back attachment. + +The back attachment is like a pocket that is only attached at the waist. It is a common feature on workwear as it allows greater mobility. An attachment like this exists because it's not so easy to bend over when there's a big wrench in your pocket. + +If the back attachment gets too wide to fit between the belt loops, the pattern will warn you about this as it complicates construction. + + diff --git a/markdown/org/docs/designs/naomiwu/options/backattachmentwidth/uk.md b/markdown/org/docs/designs/naomiwu/options/backattachmentwidth/uk.md new file mode 100644 index 00000000000..b137000a562 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backattachmentwidth/uk.md @@ -0,0 +1,11 @@ +--- +title: "Back attachment width" +--- + +This option controls the width of the back attachment. + +The back attachment is like a pocket that is only attached at the waist. It is a common feature on workwear as it allows greater mobility. An attachment like this exists because it's not so easy to bend over when there's a big wrench in your pocket. + +If the back attachment gets too wide to fit between the belt loops, the pattern will warn you about this as it complicates construction. + + diff --git a/markdown/org/docs/designs/naomiwu/options/backpocketchamfersize/de.md b/markdown/org/docs/designs/naomiwu/options/backpocketchamfersize/de.md new file mode 100644 index 00000000000..10936f8ff64 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backpocketchamfersize/de.md @@ -0,0 +1,14 @@ +--- +title: "Back pocket chamfer size" +--- + +This option controls the chamfer size at the bottom of the back pocket. + +A back pocket with chamfered corners at the bottom help to avoid small items getting lost in the corners of your pockets. + + + +A [chamfer](https://en.wikipedia.org/wiki/Chamfer) is a term borrowed from the machining world to describe the process of softening a sharp 90Β° angle into two consecutive 45Β° angles. + + + diff --git a/markdown/org/docs/designs/naomiwu/options/backpocketchamfersize/en.md b/markdown/org/docs/designs/naomiwu/options/backpocketchamfersize/en.md new file mode 100644 index 00000000000..10936f8ff64 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backpocketchamfersize/en.md @@ -0,0 +1,14 @@ +--- +title: "Back pocket chamfer size" +--- + +This option controls the chamfer size at the bottom of the back pocket. + +A back pocket with chamfered corners at the bottom help to avoid small items getting lost in the corners of your pockets. + + + +A [chamfer](https://en.wikipedia.org/wiki/Chamfer) is a term borrowed from the machining world to describe the process of softening a sharp 90Β° angle into two consecutive 45Β° angles. + + + diff --git a/markdown/org/docs/designs/naomiwu/options/backpocketchamfersize/es.md b/markdown/org/docs/designs/naomiwu/options/backpocketchamfersize/es.md new file mode 100644 index 00000000000..10936f8ff64 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backpocketchamfersize/es.md @@ -0,0 +1,14 @@ +--- +title: "Back pocket chamfer size" +--- + +This option controls the chamfer size at the bottom of the back pocket. + +A back pocket with chamfered corners at the bottom help to avoid small items getting lost in the corners of your pockets. + + + +A [chamfer](https://en.wikipedia.org/wiki/Chamfer) is a term borrowed from the machining world to describe the process of softening a sharp 90Β° angle into two consecutive 45Β° angles. + + + diff --git a/markdown/org/docs/designs/naomiwu/options/backpocketchamfersize/fr.md b/markdown/org/docs/designs/naomiwu/options/backpocketchamfersize/fr.md new file mode 100644 index 00000000000..10936f8ff64 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backpocketchamfersize/fr.md @@ -0,0 +1,14 @@ +--- +title: "Back pocket chamfer size" +--- + +This option controls the chamfer size at the bottom of the back pocket. + +A back pocket with chamfered corners at the bottom help to avoid small items getting lost in the corners of your pockets. + + + +A [chamfer](https://en.wikipedia.org/wiki/Chamfer) is a term borrowed from the machining world to describe the process of softening a sharp 90Β° angle into two consecutive 45Β° angles. + + + diff --git a/markdown/org/docs/designs/naomiwu/options/backpocketchamfersize/nl.md b/markdown/org/docs/designs/naomiwu/options/backpocketchamfersize/nl.md new file mode 100644 index 00000000000..10936f8ff64 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backpocketchamfersize/nl.md @@ -0,0 +1,14 @@ +--- +title: "Back pocket chamfer size" +--- + +This option controls the chamfer size at the bottom of the back pocket. + +A back pocket with chamfered corners at the bottom help to avoid small items getting lost in the corners of your pockets. + + + +A [chamfer](https://en.wikipedia.org/wiki/Chamfer) is a term borrowed from the machining world to describe the process of softening a sharp 90Β° angle into two consecutive 45Β° angles. + + + diff --git a/markdown/org/docs/designs/naomiwu/options/backpocketchamfersize/uk.md b/markdown/org/docs/designs/naomiwu/options/backpocketchamfersize/uk.md new file mode 100644 index 00000000000..10936f8ff64 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backpocketchamfersize/uk.md @@ -0,0 +1,14 @@ +--- +title: "Back pocket chamfer size" +--- + +This option controls the chamfer size at the bottom of the back pocket. + +A back pocket with chamfered corners at the bottom help to avoid small items getting lost in the corners of your pockets. + + + +A [chamfer](https://en.wikipedia.org/wiki/Chamfer) is a term borrowed from the machining world to describe the process of softening a sharp 90Β° angle into two consecutive 45Β° angles. + + + diff --git a/markdown/org/docs/designs/naomiwu/options/backpocketdepth/de.md b/markdown/org/docs/designs/naomiwu/options/backpocketdepth/de.md new file mode 100644 index 00000000000..8eb3c295a48 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backpocketdepth/de.md @@ -0,0 +1,8 @@ +--- +title: "Tiefe der hinteren Tasche" +--- + +This option controls the depth of the back pocket. + +Deeper pockets can hold more stuff. But are harder to get to the bottom off. + diff --git a/markdown/org/docs/designs/naomiwu/options/backpocketdepth/en.md b/markdown/org/docs/designs/naomiwu/options/backpocketdepth/en.md new file mode 100644 index 00000000000..2c3836594ff --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backpocketdepth/en.md @@ -0,0 +1,8 @@ +--- +title: "Back pocket depth" +--- + +This option controls the depth of the back pocket. + +Deeper pockets can hold more stuff. But are harder to get to the bottom off. + diff --git a/markdown/org/docs/designs/naomiwu/options/backpocketdepth/es.md b/markdown/org/docs/designs/naomiwu/options/backpocketdepth/es.md new file mode 100644 index 00000000000..2d7f33116cd --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backpocketdepth/es.md @@ -0,0 +1,8 @@ +--- +title: "Profundidad del bolsillo trasero" +--- + +This option controls the depth of the back pocket. + +Deeper pockets can hold more stuff. But are harder to get to the bottom off. + diff --git a/markdown/org/docs/designs/naomiwu/options/backpocketdepth/fr.md b/markdown/org/docs/designs/naomiwu/options/backpocketdepth/fr.md new file mode 100644 index 00000000000..4f3dce31258 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backpocketdepth/fr.md @@ -0,0 +1,8 @@ +--- +title: "Profondeur de la poche arriΓ¨re" +--- + +This option controls the depth of the back pocket. + +Deeper pockets can hold more stuff. But are harder to get to the bottom off. + diff --git a/markdown/org/docs/designs/naomiwu/options/backpocketdepth/nl.md b/markdown/org/docs/designs/naomiwu/options/backpocketdepth/nl.md new file mode 100644 index 00000000000..09c56a05e9c --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backpocketdepth/nl.md @@ -0,0 +1,8 @@ +--- +title: "Diepte achterzak" +--- + +This option controls the depth of the back pocket. + +Deeper pockets can hold more stuff. But are harder to get to the bottom off. + diff --git a/markdown/org/docs/designs/naomiwu/options/backpocketdepth/uk.md b/markdown/org/docs/designs/naomiwu/options/backpocketdepth/uk.md new file mode 100644 index 00000000000..eac9f3af391 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/backpocketdepth/uk.md @@ -0,0 +1,8 @@ +--- +title: "Π“Π»ΠΈΠ±ΠΈΠ½Π° Π·Π°Π΄Π½ΡŒΠΎΡ— ΠΊΠΈΡˆΠ΅Π½Ρ–" +--- + +This option controls the depth of the back pocket. + +Deeper pockets can hold more stuff. But are harder to get to the bottom off. + diff --git a/markdown/org/docs/designs/naomiwu/options/beltloopwidth/de.md b/markdown/org/docs/designs/naomiwu/options/beltloopwidth/de.md new file mode 100644 index 00000000000..c5f97142ce6 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/beltloopwidth/de.md @@ -0,0 +1,9 @@ +--- +title: "Belt loop width" +--- + +This option controls the width of the belt loops. + +Wider belt loops are stronger, although this skirt already uses a extra-wide beltloop for the center back, which is the beltloop that typically gets the most strain. + + diff --git a/markdown/org/docs/designs/naomiwu/options/beltloopwidth/en.md b/markdown/org/docs/designs/naomiwu/options/beltloopwidth/en.md new file mode 100644 index 00000000000..358b076c3f3 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/beltloopwidth/en.md @@ -0,0 +1,11 @@ +--- +title: "Belt loop width" +--- + +This option controls the width of the belt loops. + +Wider belt loops are stronger, although this skirt already uses a extra-wide +beltloop for the center back, which is the beltloop that typically gets the +most strain. + + diff --git a/markdown/org/docs/designs/naomiwu/options/beltloopwidth/es.md b/markdown/org/docs/designs/naomiwu/options/beltloopwidth/es.md new file mode 100644 index 00000000000..c5f97142ce6 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/beltloopwidth/es.md @@ -0,0 +1,9 @@ +--- +title: "Belt loop width" +--- + +This option controls the width of the belt loops. + +Wider belt loops are stronger, although this skirt already uses a extra-wide beltloop for the center back, which is the beltloop that typically gets the most strain. + + diff --git a/markdown/org/docs/designs/naomiwu/options/beltloopwidth/fr.md b/markdown/org/docs/designs/naomiwu/options/beltloopwidth/fr.md new file mode 100644 index 00000000000..c5f97142ce6 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/beltloopwidth/fr.md @@ -0,0 +1,9 @@ +--- +title: "Belt loop width" +--- + +This option controls the width of the belt loops. + +Wider belt loops are stronger, although this skirt already uses a extra-wide beltloop for the center back, which is the beltloop that typically gets the most strain. + + diff --git a/markdown/org/docs/designs/naomiwu/options/beltloopwidth/nl.md b/markdown/org/docs/designs/naomiwu/options/beltloopwidth/nl.md new file mode 100644 index 00000000000..c5f97142ce6 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/beltloopwidth/nl.md @@ -0,0 +1,9 @@ +--- +title: "Belt loop width" +--- + +This option controls the width of the belt loops. + +Wider belt loops are stronger, although this skirt already uses a extra-wide beltloop for the center back, which is the beltloop that typically gets the most strain. + + diff --git a/markdown/org/docs/designs/naomiwu/options/beltloopwidth/uk.md b/markdown/org/docs/designs/naomiwu/options/beltloopwidth/uk.md new file mode 100644 index 00000000000..c5f97142ce6 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/beltloopwidth/uk.md @@ -0,0 +1,9 @@ +--- +title: "Belt loop width" +--- + +This option controls the width of the belt loops. + +Wider belt loops are stronger, although this skirt already uses a extra-wide beltloop for the center back, which is the beltloop that typically gets the most strain. + + diff --git a/markdown/org/docs/designs/naomiwu/options/dartlength/de.md b/markdown/org/docs/designs/naomiwu/options/dartlength/de.md new file mode 100644 index 00000000000..44cc3e5e5e2 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/dartlength/de.md @@ -0,0 +1,10 @@ +--- +title: "Back dart length" +--- + +This option controls the length of the darts at the back. + +Typically, the dart should and a bit above the fullest part of your bum, and the pattern will be drafted as such by default. + +But, if forever reason you want to make the back darts longer or shorter, this option allows you to do so. + diff --git a/markdown/org/docs/designs/naomiwu/options/dartlength/en.md b/markdown/org/docs/designs/naomiwu/options/dartlength/en.md new file mode 100644 index 00000000000..44cc3e5e5e2 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/dartlength/en.md @@ -0,0 +1,10 @@ +--- +title: "Back dart length" +--- + +This option controls the length of the darts at the back. + +Typically, the dart should and a bit above the fullest part of your bum, and the pattern will be drafted as such by default. + +But, if forever reason you want to make the back darts longer or shorter, this option allows you to do so. + diff --git a/markdown/org/docs/designs/naomiwu/options/dartlength/es.md b/markdown/org/docs/designs/naomiwu/options/dartlength/es.md new file mode 100644 index 00000000000..44cc3e5e5e2 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/dartlength/es.md @@ -0,0 +1,10 @@ +--- +title: "Back dart length" +--- + +This option controls the length of the darts at the back. + +Typically, the dart should and a bit above the fullest part of your bum, and the pattern will be drafted as such by default. + +But, if forever reason you want to make the back darts longer or shorter, this option allows you to do so. + diff --git a/markdown/org/docs/designs/naomiwu/options/dartlength/fr.md b/markdown/org/docs/designs/naomiwu/options/dartlength/fr.md new file mode 100644 index 00000000000..44cc3e5e5e2 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/dartlength/fr.md @@ -0,0 +1,10 @@ +--- +title: "Back dart length" +--- + +This option controls the length of the darts at the back. + +Typically, the dart should and a bit above the fullest part of your bum, and the pattern will be drafted as such by default. + +But, if forever reason you want to make the back darts longer or shorter, this option allows you to do so. + diff --git a/markdown/org/docs/designs/naomiwu/options/dartlength/nl.md b/markdown/org/docs/designs/naomiwu/options/dartlength/nl.md new file mode 100644 index 00000000000..44cc3e5e5e2 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/dartlength/nl.md @@ -0,0 +1,10 @@ +--- +title: "Back dart length" +--- + +This option controls the length of the darts at the back. + +Typically, the dart should and a bit above the fullest part of your bum, and the pattern will be drafted as such by default. + +But, if forever reason you want to make the back darts longer or shorter, this option allows you to do so. + diff --git a/markdown/org/docs/designs/naomiwu/options/dartlength/uk.md b/markdown/org/docs/designs/naomiwu/options/dartlength/uk.md new file mode 100644 index 00000000000..44cc3e5e5e2 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/dartlength/uk.md @@ -0,0 +1,10 @@ +--- +title: "Back dart length" +--- + +This option controls the length of the darts at the back. + +Typically, the dart should and a bit above the fullest part of your bum, and the pattern will be drafted as such by default. + +But, if forever reason you want to make the back darts longer or shorter, this option allows you to do so. + diff --git a/markdown/org/docs/designs/naomiwu/options/dartwidth/de.md b/markdown/org/docs/designs/naomiwu/options/dartwidth/de.md new file mode 100644 index 00000000000..52bcc0f08d2 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/dartwidth/de.md @@ -0,0 +1,10 @@ +--- +title: "Back dart width" +--- + +This option controls the width of the darts at the back. + +Note that changing this option will not change the waist size. Instead, it will redistribute shaping between the darts and the seams. + +The defaults are probably fine but for people with curvy bottoms, a larger dart might yield better fit. + diff --git a/markdown/org/docs/designs/naomiwu/options/dartwidth/en.md b/markdown/org/docs/designs/naomiwu/options/dartwidth/en.md new file mode 100644 index 00000000000..52bcc0f08d2 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/dartwidth/en.md @@ -0,0 +1,10 @@ +--- +title: "Back dart width" +--- + +This option controls the width of the darts at the back. + +Note that changing this option will not change the waist size. Instead, it will redistribute shaping between the darts and the seams. + +The defaults are probably fine but for people with curvy bottoms, a larger dart might yield better fit. + diff --git a/markdown/org/docs/designs/naomiwu/options/dartwidth/es.md b/markdown/org/docs/designs/naomiwu/options/dartwidth/es.md new file mode 100644 index 00000000000..52bcc0f08d2 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/dartwidth/es.md @@ -0,0 +1,10 @@ +--- +title: "Back dart width" +--- + +This option controls the width of the darts at the back. + +Note that changing this option will not change the waist size. Instead, it will redistribute shaping between the darts and the seams. + +The defaults are probably fine but for people with curvy bottoms, a larger dart might yield better fit. + diff --git a/markdown/org/docs/designs/naomiwu/options/dartwidth/fr.md b/markdown/org/docs/designs/naomiwu/options/dartwidth/fr.md new file mode 100644 index 00000000000..52bcc0f08d2 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/dartwidth/fr.md @@ -0,0 +1,10 @@ +--- +title: "Back dart width" +--- + +This option controls the width of the darts at the back. + +Note that changing this option will not change the waist size. Instead, it will redistribute shaping between the darts and the seams. + +The defaults are probably fine but for people with curvy bottoms, a larger dart might yield better fit. + diff --git a/markdown/org/docs/designs/naomiwu/options/dartwidth/nl.md b/markdown/org/docs/designs/naomiwu/options/dartwidth/nl.md new file mode 100644 index 00000000000..52bcc0f08d2 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/dartwidth/nl.md @@ -0,0 +1,10 @@ +--- +title: "Back dart width" +--- + +This option controls the width of the darts at the back. + +Note that changing this option will not change the waist size. Instead, it will redistribute shaping between the darts and the seams. + +The defaults are probably fine but for people with curvy bottoms, a larger dart might yield better fit. + diff --git a/markdown/org/docs/designs/naomiwu/options/dartwidth/uk.md b/markdown/org/docs/designs/naomiwu/options/dartwidth/uk.md new file mode 100644 index 00000000000..52bcc0f08d2 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/dartwidth/uk.md @@ -0,0 +1,10 @@ +--- +title: "Back dart width" +--- + +This option controls the width of the darts at the back. + +Note that changing this option will not change the waist size. Instead, it will redistribute shaping between the darts and the seams. + +The defaults are probably fine but for people with curvy bottoms, a larger dart might yield better fit. + diff --git a/markdown/org/docs/designs/naomiwu/options/de.md b/markdown/org/docs/designs/naomiwu/options/de.md new file mode 100644 index 00000000000..48a5e466d49 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/de.md @@ -0,0 +1,5 @@ +--- +title: "Aaron A-Shirt: Design Optionen" +--- + + diff --git a/markdown/org/docs/designs/naomiwu/options/en.md b/markdown/org/docs/designs/naomiwu/options/en.md new file mode 100644 index 00000000000..fae28b86766 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/en.md @@ -0,0 +1,5 @@ +--- +title: "Aaron A-Shirt: Design Options" +--- + + diff --git a/markdown/org/docs/designs/naomiwu/options/es.md b/markdown/org/docs/designs/naomiwu/options/es.md new file mode 100644 index 00000000000..c26b70d11f4 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/es.md @@ -0,0 +1,5 @@ +--- +title: "Camiseta Aaron A: Opciones de diseΓ±o" +--- + + diff --git a/markdown/org/docs/designs/naomiwu/options/flylength/de.md b/markdown/org/docs/designs/naomiwu/options/flylength/de.md new file mode 100644 index 00000000000..34df409790e --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/flylength/de.md @@ -0,0 +1,8 @@ +--- +title: "FluglΓ€nge" +--- + +This option controls the length of the fly. + +As zippers are a store-bought item that comes in predefined sizes, adapting this option allows you to draft a skirt that is adapted to the zipper length you intent to use. + diff --git a/markdown/org/docs/designs/naomiwu/options/flylength/en.md b/markdown/org/docs/designs/naomiwu/options/flylength/en.md new file mode 100644 index 00000000000..b5427774af9 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/flylength/en.md @@ -0,0 +1,8 @@ +--- +title: "Fly length" +--- + +This option controls the length of the fly. + +As zippers are a store-bought item that comes in predefined sizes, adapting this option allows you to draft a skirt that is adapted to the zipper length you intent to use. + diff --git a/markdown/org/docs/designs/naomiwu/options/flylength/es.md b/markdown/org/docs/designs/naomiwu/options/flylength/es.md new file mode 100644 index 00000000000..9d9aa4adcc0 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/flylength/es.md @@ -0,0 +1,8 @@ +--- +title: "Longitud del vuelo" +--- + +This option controls the length of the fly. + +As zippers are a store-bought item that comes in predefined sizes, adapting this option allows you to draft a skirt that is adapted to the zipper length you intent to use. + diff --git a/markdown/org/docs/designs/naomiwu/options/flylength/fr.md b/markdown/org/docs/designs/naomiwu/options/flylength/fr.md new file mode 100644 index 00000000000..eb5a1356f76 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/flylength/fr.md @@ -0,0 +1,8 @@ +--- +title: "Longueur de la mouche" +--- + +This option controls the length of the fly. + +As zippers are a store-bought item that comes in predefined sizes, adapting this option allows you to draft a skirt that is adapted to the zipper length you intent to use. + diff --git a/markdown/org/docs/designs/naomiwu/options/flylength/nl.md b/markdown/org/docs/designs/naomiwu/options/flylength/nl.md new file mode 100644 index 00000000000..c04c72efcb6 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/flylength/nl.md @@ -0,0 +1,8 @@ +--- +title: "Vlieg lengte" +--- + +This option controls the length of the fly. + +As zippers are a store-bought item that comes in predefined sizes, adapting this option allows you to draft a skirt that is adapted to the zipper length you intent to use. + diff --git a/markdown/org/docs/designs/naomiwu/options/flylength/uk.md b/markdown/org/docs/designs/naomiwu/options/flylength/uk.md new file mode 100644 index 00000000000..1ff6038fe43 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/flylength/uk.md @@ -0,0 +1,8 @@ +--- +title: "Π”ΠΎΠ²ΠΆΠΈΠ½Π° Π³ΡƒΠ»ΡŒΡ„ΠΈΠΊΠ°" +--- + +This option controls the length of the fly. + +As zippers are a store-bought item that comes in predefined sizes, adapting this option allows you to draft a skirt that is adapted to the zipper length you intent to use. + diff --git a/markdown/org/docs/designs/naomiwu/options/flywidth/de.md b/markdown/org/docs/designs/naomiwu/options/flywidth/de.md new file mode 100644 index 00000000000..2559385b9e5 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/flywidth/de.md @@ -0,0 +1,8 @@ +--- +title: "Fly width" +--- + +This option controls the width of the fly. + +This option has not real functional effect, although a certain minimal widht is required for the fly to provide access to the zipper. It's mostly about ensuring the fly appears balanced with regards to its width and height proportions. + diff --git a/markdown/org/docs/designs/naomiwu/options/flywidth/en.md b/markdown/org/docs/designs/naomiwu/options/flywidth/en.md new file mode 100644 index 00000000000..6368711734b --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/flywidth/en.md @@ -0,0 +1,9 @@ +--- +title: "Fly width" +--- + +This option controls the width of the fly. + +This option has not real functional effect, although a certain minimal widht is required for the fly to provide access to the zipper. +It's mostly about ensuring the fly appears balanced with regards to its width and height proportions. + diff --git a/markdown/org/docs/designs/naomiwu/options/flywidth/es.md b/markdown/org/docs/designs/naomiwu/options/flywidth/es.md new file mode 100644 index 00000000000..2559385b9e5 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/flywidth/es.md @@ -0,0 +1,8 @@ +--- +title: "Fly width" +--- + +This option controls the width of the fly. + +This option has not real functional effect, although a certain minimal widht is required for the fly to provide access to the zipper. It's mostly about ensuring the fly appears balanced with regards to its width and height proportions. + diff --git a/markdown/org/docs/designs/naomiwu/options/flywidth/fr.md b/markdown/org/docs/designs/naomiwu/options/flywidth/fr.md new file mode 100644 index 00000000000..2559385b9e5 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/flywidth/fr.md @@ -0,0 +1,8 @@ +--- +title: "Fly width" +--- + +This option controls the width of the fly. + +This option has not real functional effect, although a certain minimal widht is required for the fly to provide access to the zipper. It's mostly about ensuring the fly appears balanced with regards to its width and height proportions. + diff --git a/markdown/org/docs/designs/naomiwu/options/flywidth/nl.md b/markdown/org/docs/designs/naomiwu/options/flywidth/nl.md new file mode 100644 index 00000000000..2559385b9e5 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/flywidth/nl.md @@ -0,0 +1,8 @@ +--- +title: "Fly width" +--- + +This option controls the width of the fly. + +This option has not real functional effect, although a certain minimal widht is required for the fly to provide access to the zipper. It's mostly about ensuring the fly appears balanced with regards to its width and height proportions. + diff --git a/markdown/org/docs/designs/naomiwu/options/flywidth/uk.md b/markdown/org/docs/designs/naomiwu/options/flywidth/uk.md new file mode 100644 index 00000000000..73aee3c4871 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/flywidth/uk.md @@ -0,0 +1,8 @@ +--- +title: "Π¨ΠΈΡ€ΠΈΠ½Π° Π³ΡƒΠ»ΡŒΡ„ΠΈΠΊΠ°" +--- + +This option controls the width of the fly. + +This option has not real functional effect, although a certain minimal widht is required for the fly to provide access to the zipper. It's mostly about ensuring the fly appears balanced with regards to its width and height proportions. + diff --git a/markdown/org/docs/designs/naomiwu/options/fr.md b/markdown/org/docs/designs/naomiwu/options/fr.md new file mode 100644 index 00000000000..0a796a4d610 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/fr.md @@ -0,0 +1,5 @@ +--- +title: "Aaron A-Shirt : Options de design" +--- + + diff --git a/markdown/org/docs/designs/naomiwu/options/frontattachmentchamfersize/de.md b/markdown/org/docs/designs/naomiwu/options/frontattachmentchamfersize/de.md new file mode 100644 index 00000000000..9e2932ee2ff --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontattachmentchamfersize/de.md @@ -0,0 +1,16 @@ +--- +title: "Front attachment chamfer size" +--- + +This option controls the chamfer size at the bottom of the front attachment. + +The front attachment is like a pocket that is only attached at the waist. It is a common feature on workwear as it allows greater mobility. An attachment like this exists because it's not so easy to bend over when there's a big wrench in your pocket. + +An attachment with chamfered corners at the bottom help to avoid small items getting lost in the corners of your pockets. + + + +A [chamfer](https://en.wikipedia.org/wiki/Chamfer) is a term borrowed from the machining world to describe the process of softening a sharp 90Β° angle into two consecutive 45Β° angles. + + + diff --git a/markdown/org/docs/designs/naomiwu/options/frontattachmentchamfersize/en.md b/markdown/org/docs/designs/naomiwu/options/frontattachmentchamfersize/en.md new file mode 100644 index 00000000000..a4cc42ade3d --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontattachmentchamfersize/en.md @@ -0,0 +1,17 @@ +--- +title: "Front attachment chamfer size" +--- + +This option controls the chamfer size at the bottom of the front attachment. + +The front attachment is like a pocket that is only attached at the waist. It is a common feature on workwear as it allows greater mobility. +An attachment like this exists because it's not so easy to bend over when there's a big wrench in your pocket. + +An attachment with chamfered corners at the bottom help to avoid small items getting lost in the corners of your pockets. + + + +A [chamfer](https://en.wikipedia.org/wiki/Chamfer) is a term borrowed from the machining world to describe the process of softening a sharp 90Β° angle into two consecutive 45Β° angles. + + + diff --git a/markdown/org/docs/designs/naomiwu/options/frontattachmentchamfersize/es.md b/markdown/org/docs/designs/naomiwu/options/frontattachmentchamfersize/es.md new file mode 100644 index 00000000000..9e2932ee2ff --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontattachmentchamfersize/es.md @@ -0,0 +1,16 @@ +--- +title: "Front attachment chamfer size" +--- + +This option controls the chamfer size at the bottom of the front attachment. + +The front attachment is like a pocket that is only attached at the waist. It is a common feature on workwear as it allows greater mobility. An attachment like this exists because it's not so easy to bend over when there's a big wrench in your pocket. + +An attachment with chamfered corners at the bottom help to avoid small items getting lost in the corners of your pockets. + + + +A [chamfer](https://en.wikipedia.org/wiki/Chamfer) is a term borrowed from the machining world to describe the process of softening a sharp 90Β° angle into two consecutive 45Β° angles. + + + diff --git a/markdown/org/docs/designs/naomiwu/options/frontattachmentchamfersize/fr.md b/markdown/org/docs/designs/naomiwu/options/frontattachmentchamfersize/fr.md new file mode 100644 index 00000000000..9e2932ee2ff --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontattachmentchamfersize/fr.md @@ -0,0 +1,16 @@ +--- +title: "Front attachment chamfer size" +--- + +This option controls the chamfer size at the bottom of the front attachment. + +The front attachment is like a pocket that is only attached at the waist. It is a common feature on workwear as it allows greater mobility. An attachment like this exists because it's not so easy to bend over when there's a big wrench in your pocket. + +An attachment with chamfered corners at the bottom help to avoid small items getting lost in the corners of your pockets. + + + +A [chamfer](https://en.wikipedia.org/wiki/Chamfer) is a term borrowed from the machining world to describe the process of softening a sharp 90Β° angle into two consecutive 45Β° angles. + + + diff --git a/markdown/org/docs/designs/naomiwu/options/frontattachmentchamfersize/nl.md b/markdown/org/docs/designs/naomiwu/options/frontattachmentchamfersize/nl.md new file mode 100644 index 00000000000..9e2932ee2ff --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontattachmentchamfersize/nl.md @@ -0,0 +1,16 @@ +--- +title: "Front attachment chamfer size" +--- + +This option controls the chamfer size at the bottom of the front attachment. + +The front attachment is like a pocket that is only attached at the waist. It is a common feature on workwear as it allows greater mobility. An attachment like this exists because it's not so easy to bend over when there's a big wrench in your pocket. + +An attachment with chamfered corners at the bottom help to avoid small items getting lost in the corners of your pockets. + + + +A [chamfer](https://en.wikipedia.org/wiki/Chamfer) is a term borrowed from the machining world to describe the process of softening a sharp 90Β° angle into two consecutive 45Β° angles. + + + diff --git a/markdown/org/docs/designs/naomiwu/options/frontattachmentchamfersize/uk.md b/markdown/org/docs/designs/naomiwu/options/frontattachmentchamfersize/uk.md new file mode 100644 index 00000000000..9e2932ee2ff --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontattachmentchamfersize/uk.md @@ -0,0 +1,16 @@ +--- +title: "Front attachment chamfer size" +--- + +This option controls the chamfer size at the bottom of the front attachment. + +The front attachment is like a pocket that is only attached at the waist. It is a common feature on workwear as it allows greater mobility. An attachment like this exists because it's not so easy to bend over when there's a big wrench in your pocket. + +An attachment with chamfered corners at the bottom help to avoid small items getting lost in the corners of your pockets. + + + +A [chamfer](https://en.wikipedia.org/wiki/Chamfer) is a term borrowed from the machining world to describe the process of softening a sharp 90Β° angle into two consecutive 45Β° angles. + + + diff --git a/markdown/org/docs/designs/naomiwu/options/frontattachmentwidth/de.md b/markdown/org/docs/designs/naomiwu/options/frontattachmentwidth/de.md new file mode 100644 index 00000000000..202e10f2103 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontattachmentwidth/de.md @@ -0,0 +1,9 @@ +--- +title: "Front attachment width" +--- + +This option controls the width of the front attachment. + +The front attachment is like a pocket that is only attached at the waist. It is a common feature on workwear as it allows greater mobility. An attachment like this exists because it's not so easy to bend over when there's a big wrench in your pocket. + + diff --git a/markdown/org/docs/designs/naomiwu/options/frontattachmentwidth/en.md b/markdown/org/docs/designs/naomiwu/options/frontattachmentwidth/en.md new file mode 100644 index 00000000000..bf75faea109 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontattachmentwidth/en.md @@ -0,0 +1,10 @@ +--- +title: "Front attachment width" +--- + +This option controls the width of the front attachment. + +The front attachment is like a pocket that is only attached at the waist. It is a common feature on workwear as it allows greater mobility. +An attachment like this exists because it's not so easy to bend over when there's a big wrench in your pocket. + + diff --git a/markdown/org/docs/designs/naomiwu/options/frontattachmentwidth/es.md b/markdown/org/docs/designs/naomiwu/options/frontattachmentwidth/es.md new file mode 100644 index 00000000000..202e10f2103 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontattachmentwidth/es.md @@ -0,0 +1,9 @@ +--- +title: "Front attachment width" +--- + +This option controls the width of the front attachment. + +The front attachment is like a pocket that is only attached at the waist. It is a common feature on workwear as it allows greater mobility. An attachment like this exists because it's not so easy to bend over when there's a big wrench in your pocket. + + diff --git a/markdown/org/docs/designs/naomiwu/options/frontattachmentwidth/fr.md b/markdown/org/docs/designs/naomiwu/options/frontattachmentwidth/fr.md new file mode 100644 index 00000000000..202e10f2103 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontattachmentwidth/fr.md @@ -0,0 +1,9 @@ +--- +title: "Front attachment width" +--- + +This option controls the width of the front attachment. + +The front attachment is like a pocket that is only attached at the waist. It is a common feature on workwear as it allows greater mobility. An attachment like this exists because it's not so easy to bend over when there's a big wrench in your pocket. + + diff --git a/markdown/org/docs/designs/naomiwu/options/frontattachmentwidth/nl.md b/markdown/org/docs/designs/naomiwu/options/frontattachmentwidth/nl.md new file mode 100644 index 00000000000..202e10f2103 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontattachmentwidth/nl.md @@ -0,0 +1,9 @@ +--- +title: "Front attachment width" +--- + +This option controls the width of the front attachment. + +The front attachment is like a pocket that is only attached at the waist. It is a common feature on workwear as it allows greater mobility. An attachment like this exists because it's not so easy to bend over when there's a big wrench in your pocket. + + diff --git a/markdown/org/docs/designs/naomiwu/options/frontattachmentwidth/uk.md b/markdown/org/docs/designs/naomiwu/options/frontattachmentwidth/uk.md new file mode 100644 index 00000000000..202e10f2103 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontattachmentwidth/uk.md @@ -0,0 +1,9 @@ +--- +title: "Front attachment width" +--- + +This option controls the width of the front attachment. + +The front attachment is like a pocket that is only attached at the waist. It is a common feature on workwear as it allows greater mobility. An attachment like this exists because it's not so easy to bend over when there's a big wrench in your pocket. + + diff --git a/markdown/org/docs/designs/naomiwu/options/fronthalf/de.md b/markdown/org/docs/designs/naomiwu/options/fronthalf/de.md new file mode 100644 index 00000000000..b355b9cb8ca --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/fronthalf/de.md @@ -0,0 +1,8 @@ +--- +title: "Front half proportion" +--- + +This option controls the proportion of the skirt that will make up the front panel. + +This option does not influence fit as much, it's main impact is on pocket placement. A larger proportion pushes the pockets more towards the back, whereas a lower proportion brings them more to the front. + diff --git a/markdown/org/docs/designs/naomiwu/options/fronthalf/en.md b/markdown/org/docs/designs/naomiwu/options/fronthalf/en.md new file mode 100644 index 00000000000..917c06c04ae --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/fronthalf/en.md @@ -0,0 +1,9 @@ +--- +title: "Front half proportion" +--- + +This option controls the proportion of the skirt that will make up the front panel. + +This option does not influence fit as much, it's main impact is on pocket placement. +A larger proportion pushes the pockets more towards the back, whereas a lower proportion brings them more to the front. + diff --git a/markdown/org/docs/designs/naomiwu/options/fronthalf/es.md b/markdown/org/docs/designs/naomiwu/options/fronthalf/es.md new file mode 100644 index 00000000000..b355b9cb8ca --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/fronthalf/es.md @@ -0,0 +1,8 @@ +--- +title: "Front half proportion" +--- + +This option controls the proportion of the skirt that will make up the front panel. + +This option does not influence fit as much, it's main impact is on pocket placement. A larger proportion pushes the pockets more towards the back, whereas a lower proportion brings them more to the front. + diff --git a/markdown/org/docs/designs/naomiwu/options/fronthalf/fr.md b/markdown/org/docs/designs/naomiwu/options/fronthalf/fr.md new file mode 100644 index 00000000000..b355b9cb8ca --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/fronthalf/fr.md @@ -0,0 +1,8 @@ +--- +title: "Front half proportion" +--- + +This option controls the proportion of the skirt that will make up the front panel. + +This option does not influence fit as much, it's main impact is on pocket placement. A larger proportion pushes the pockets more towards the back, whereas a lower proportion brings them more to the front. + diff --git a/markdown/org/docs/designs/naomiwu/options/fronthalf/nl.md b/markdown/org/docs/designs/naomiwu/options/fronthalf/nl.md new file mode 100644 index 00000000000..b355b9cb8ca --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/fronthalf/nl.md @@ -0,0 +1,8 @@ +--- +title: "Front half proportion" +--- + +This option controls the proportion of the skirt that will make up the front panel. + +This option does not influence fit as much, it's main impact is on pocket placement. A larger proportion pushes the pockets more towards the back, whereas a lower proportion brings them more to the front. + diff --git a/markdown/org/docs/designs/naomiwu/options/fronthalf/uk.md b/markdown/org/docs/designs/naomiwu/options/fronthalf/uk.md new file mode 100644 index 00000000000..b355b9cb8ca --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/fronthalf/uk.md @@ -0,0 +1,8 @@ +--- +title: "Front half proportion" +--- + +This option controls the proportion of the skirt that will make up the front panel. + +This option does not influence fit as much, it's main impact is on pocket placement. A larger proportion pushes the pockets more towards the back, whereas a lower proportion brings them more to the front. + diff --git a/markdown/org/docs/designs/naomiwu/options/frontpocketopeningbend/de.md b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningbend/de.md new file mode 100644 index 00000000000..e6fd6ba0dab --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningbend/de.md @@ -0,0 +1,8 @@ +--- +title: "Front pocket opening bend" +--- + +This option controls the radius of the rounded bend on the front pocket opening. + +This option is mostly aesthetic and when set to zero creates a pocket opening that is chamfered instead of rounded. + diff --git a/markdown/org/docs/designs/naomiwu/options/frontpocketopeningbend/en.md b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningbend/en.md new file mode 100644 index 00000000000..e6fd6ba0dab --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningbend/en.md @@ -0,0 +1,8 @@ +--- +title: "Front pocket opening bend" +--- + +This option controls the radius of the rounded bend on the front pocket opening. + +This option is mostly aesthetic and when set to zero creates a pocket opening that is chamfered instead of rounded. + diff --git a/markdown/org/docs/designs/naomiwu/options/frontpocketopeningbend/es.md b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningbend/es.md new file mode 100644 index 00000000000..e6fd6ba0dab --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningbend/es.md @@ -0,0 +1,8 @@ +--- +title: "Front pocket opening bend" +--- + +This option controls the radius of the rounded bend on the front pocket opening. + +This option is mostly aesthetic and when set to zero creates a pocket opening that is chamfered instead of rounded. + diff --git a/markdown/org/docs/designs/naomiwu/options/frontpocketopeningbend/fr.md b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningbend/fr.md new file mode 100644 index 00000000000..e6fd6ba0dab --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningbend/fr.md @@ -0,0 +1,8 @@ +--- +title: "Front pocket opening bend" +--- + +This option controls the radius of the rounded bend on the front pocket opening. + +This option is mostly aesthetic and when set to zero creates a pocket opening that is chamfered instead of rounded. + diff --git a/markdown/org/docs/designs/naomiwu/options/frontpocketopeningbend/nl.md b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningbend/nl.md new file mode 100644 index 00000000000..e6fd6ba0dab --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningbend/nl.md @@ -0,0 +1,8 @@ +--- +title: "Front pocket opening bend" +--- + +This option controls the radius of the rounded bend on the front pocket opening. + +This option is mostly aesthetic and when set to zero creates a pocket opening that is chamfered instead of rounded. + diff --git a/markdown/org/docs/designs/naomiwu/options/frontpocketopeningbend/uk.md b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningbend/uk.md new file mode 100644 index 00000000000..e6fd6ba0dab --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningbend/uk.md @@ -0,0 +1,8 @@ +--- +title: "Front pocket opening bend" +--- + +This option controls the radius of the rounded bend on the front pocket opening. + +This option is mostly aesthetic and when set to zero creates a pocket opening that is chamfered instead of rounded. + diff --git a/markdown/org/docs/designs/naomiwu/options/frontpocketopeningdepth/de.md b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningdepth/de.md new file mode 100644 index 00000000000..3831759a716 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningdepth/de.md @@ -0,0 +1,8 @@ +--- +title: "Front pocket opening depth" +--- + +This option controls the depth of the front pocket opening. + +A deeper pocket opening is easier to get your hand into, but what you gain in access you loose in pocket depth. + diff --git a/markdown/org/docs/designs/naomiwu/options/frontpocketopeningdepth/en.md b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningdepth/en.md new file mode 100644 index 00000000000..3831759a716 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningdepth/en.md @@ -0,0 +1,8 @@ +--- +title: "Front pocket opening depth" +--- + +This option controls the depth of the front pocket opening. + +A deeper pocket opening is easier to get your hand into, but what you gain in access you loose in pocket depth. + diff --git a/markdown/org/docs/designs/naomiwu/options/frontpocketopeningdepth/es.md b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningdepth/es.md new file mode 100644 index 00000000000..3831759a716 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningdepth/es.md @@ -0,0 +1,8 @@ +--- +title: "Front pocket opening depth" +--- + +This option controls the depth of the front pocket opening. + +A deeper pocket opening is easier to get your hand into, but what you gain in access you loose in pocket depth. + diff --git a/markdown/org/docs/designs/naomiwu/options/frontpocketopeningdepth/fr.md b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningdepth/fr.md new file mode 100644 index 00000000000..3831759a716 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningdepth/fr.md @@ -0,0 +1,8 @@ +--- +title: "Front pocket opening depth" +--- + +This option controls the depth of the front pocket opening. + +A deeper pocket opening is easier to get your hand into, but what you gain in access you loose in pocket depth. + diff --git a/markdown/org/docs/designs/naomiwu/options/frontpocketopeningdepth/nl.md b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningdepth/nl.md new file mode 100644 index 00000000000..3831759a716 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningdepth/nl.md @@ -0,0 +1,8 @@ +--- +title: "Front pocket opening depth" +--- + +This option controls the depth of the front pocket opening. + +A deeper pocket opening is easier to get your hand into, but what you gain in access you loose in pocket depth. + diff --git a/markdown/org/docs/designs/naomiwu/options/frontpocketopeningdepth/uk.md b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningdepth/uk.md new file mode 100644 index 00000000000..3831759a716 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningdepth/uk.md @@ -0,0 +1,8 @@ +--- +title: "Front pocket opening depth" +--- + +This option controls the depth of the front pocket opening. + +A deeper pocket opening is easier to get your hand into, but what you gain in access you loose in pocket depth. + diff --git a/markdown/org/docs/designs/naomiwu/options/frontpocketopeningwidth/de.md b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningwidth/de.md new file mode 100644 index 00000000000..dedd75eff4d --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningwidth/de.md @@ -0,0 +1,10 @@ +--- +title: "Front pocket opening width" +--- + +This option controls the width of the front pockets opening. + +A wider pocket opening is easier to access (put your hand in). It also increases the pocket width itself, as it will extend further to center front. + +When extending this a lot, items pooling in the front pockets will move closer together, and from your leg into the space between your legs where they are more likely to dangle. So that's something to keep in mind when increasing the width of the front pocket opening. + diff --git a/markdown/org/docs/designs/naomiwu/options/frontpocketopeningwidth/en.md b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningwidth/en.md new file mode 100644 index 00000000000..d3a15eb24ec --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningwidth/en.md @@ -0,0 +1,14 @@ +--- +title: "Front pocket opening width" +--- + +This option controls the width of the front pockets opening. + +A wider pocket opening is easier to access (put your hand in). +It also increases the pocket width itself, as it will extend further to center front. + +When extending this a lot, items pooling in the front pockets will move closer +together, and from your leg into the space between your legs where they are +more likely to dangle. So that's something to keep in mind when increasing the +width of the front pocket opening. + diff --git a/markdown/org/docs/designs/naomiwu/options/frontpocketopeningwidth/es.md b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningwidth/es.md new file mode 100644 index 00000000000..dedd75eff4d --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningwidth/es.md @@ -0,0 +1,10 @@ +--- +title: "Front pocket opening width" +--- + +This option controls the width of the front pockets opening. + +A wider pocket opening is easier to access (put your hand in). It also increases the pocket width itself, as it will extend further to center front. + +When extending this a lot, items pooling in the front pockets will move closer together, and from your leg into the space between your legs where they are more likely to dangle. So that's something to keep in mind when increasing the width of the front pocket opening. + diff --git a/markdown/org/docs/designs/naomiwu/options/frontpocketopeningwidth/fr.md b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningwidth/fr.md new file mode 100644 index 00000000000..dedd75eff4d --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningwidth/fr.md @@ -0,0 +1,10 @@ +--- +title: "Front pocket opening width" +--- + +This option controls the width of the front pockets opening. + +A wider pocket opening is easier to access (put your hand in). It also increases the pocket width itself, as it will extend further to center front. + +When extending this a lot, items pooling in the front pockets will move closer together, and from your leg into the space between your legs where they are more likely to dangle. So that's something to keep in mind when increasing the width of the front pocket opening. + diff --git a/markdown/org/docs/designs/naomiwu/options/frontpocketopeningwidth/nl.md b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningwidth/nl.md new file mode 100644 index 00000000000..dedd75eff4d --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningwidth/nl.md @@ -0,0 +1,10 @@ +--- +title: "Front pocket opening width" +--- + +This option controls the width of the front pockets opening. + +A wider pocket opening is easier to access (put your hand in). It also increases the pocket width itself, as it will extend further to center front. + +When extending this a lot, items pooling in the front pockets will move closer together, and from your leg into the space between your legs where they are more likely to dangle. So that's something to keep in mind when increasing the width of the front pocket opening. + diff --git a/markdown/org/docs/designs/naomiwu/options/frontpocketopeningwidth/uk.md b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningwidth/uk.md new file mode 100644 index 00000000000..dedd75eff4d --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/frontpocketopeningwidth/uk.md @@ -0,0 +1,10 @@ +--- +title: "Front pocket opening width" +--- + +This option controls the width of the front pockets opening. + +A wider pocket opening is easier to access (put your hand in). It also increases the pocket width itself, as it will extend further to center front. + +When extending this a lot, items pooling in the front pockets will move closer together, and from your leg into the space between your legs where they are more likely to dangle. So that's something to keep in mind when increasing the width of the front pocket opening. + diff --git a/markdown/org/docs/designs/naomiwu/options/hipsease/de.md b/markdown/org/docs/designs/naomiwu/options/hipsease/de.md new file mode 100644 index 00000000000..a994b3f018d --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/hipsease/de.md @@ -0,0 +1,10 @@ +--- +title: "Zugabe HΓΌfte" +--- + +This option controls the amount of ease at your hips. + +Note that as a cargo skirt, we can't have too much ease or the skirt will slip down. + +Also note that there's an elasticated part of the waistband, and one would typically wear this with a belt. + diff --git a/markdown/org/docs/designs/naomiwu/options/hipsease/en.md b/markdown/org/docs/designs/naomiwu/options/hipsease/en.md new file mode 100644 index 00000000000..d162ba1da77 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/hipsease/en.md @@ -0,0 +1,10 @@ +--- +title: "Hips ease" +--- + +This option controls the amount of ease at your hips. + +Note that as a cargo skirt, we can't have too much ease or the skirt will slip down. + +Also note that there's an elasticated part of the waistband, and one would typically wear this with a belt. + diff --git a/markdown/org/docs/designs/naomiwu/options/hipsease/es.md b/markdown/org/docs/designs/naomiwu/options/hipsease/es.md new file mode 100644 index 00000000000..71fe44c228b --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/hipsease/es.md @@ -0,0 +1,10 @@ +--- +title: "Holgura de cadera" +--- + +This option controls the amount of ease at your hips. + +Note that as a cargo skirt, we can't have too much ease or the skirt will slip down. + +Also note that there's an elasticated part of the waistband, and one would typically wear this with a belt. + diff --git a/markdown/org/docs/designs/naomiwu/options/hipsease/fr.md b/markdown/org/docs/designs/naomiwu/options/hipsease/fr.md new file mode 100644 index 00000000000..ebe23a108bc --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/hipsease/fr.md @@ -0,0 +1,10 @@ +--- +title: "Aisance des hanches" +--- + +This option controls the amount of ease at your hips. + +Note that as a cargo skirt, we can't have too much ease or the skirt will slip down. + +Also note that there's an elasticated part of the waistband, and one would typically wear this with a belt. + diff --git a/markdown/org/docs/designs/naomiwu/options/hipsease/nl.md b/markdown/org/docs/designs/naomiwu/options/hipsease/nl.md new file mode 100644 index 00000000000..1256bbdf06f --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/hipsease/nl.md @@ -0,0 +1,10 @@ +--- +title: "Overwijdte heup" +--- + +This option controls the amount of ease at your hips. + +Note that as a cargo skirt, we can't have too much ease or the skirt will slip down. + +Also note that there's an elasticated part of the waistband, and one would typically wear this with a belt. + diff --git a/markdown/org/docs/designs/naomiwu/options/hipsease/uk.md b/markdown/org/docs/designs/naomiwu/options/hipsease/uk.md new file mode 100644 index 00000000000..f3045e0fc99 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/hipsease/uk.md @@ -0,0 +1,10 @@ +--- +title: "Π›Π΅Π³ΠΊΡ–ΡΡ‚ΡŒ стСгон" +--- + +This option controls the amount of ease at your hips. + +Note that as a cargo skirt, we can't have too much ease or the skirt will slip down. + +Also note that there's an elasticated part of the waistband, and one would typically wear this with a belt. + diff --git a/markdown/org/docs/designs/naomiwu/options/invertfly/de.md b/markdown/org/docs/designs/naomiwu/options/invertfly/de.md new file mode 100644 index 00000000000..2672b77018b --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/invertfly/de.md @@ -0,0 +1,10 @@ +--- +title: "Invert the side of the fly" +--- + +This option allows you to flip the front sides of the skirt so that the fly/button goes on the other side. + +The side at which the button goes is not functionally relevant, but some garment (typically tops) have the buttons on teh right side for menswear, and the left sife for womenswear. + +The reasons for this are historic, but what matters is that to people with gender presentation concerns, these little things can really matter. + diff --git a/markdown/org/docs/designs/naomiwu/options/invertfly/en.md b/markdown/org/docs/designs/naomiwu/options/invertfly/en.md new file mode 100644 index 00000000000..411e52ba447 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/invertfly/en.md @@ -0,0 +1,13 @@ +--- +title: "Invert the side of the fly" +--- + +This option allows you to flip the front sides of the skirt so that the fly/button goes on the other side. + +The side at which the button goes is not functionally relevant, but some +garment (typically tops) have the buttons on teh right side for menswear, and +the left sife for womenswear. + +The reasons for this are historic, but what matters is that to people with +gender presentation concerns, these little things can really matter. + diff --git a/markdown/org/docs/designs/naomiwu/options/invertfly/es.md b/markdown/org/docs/designs/naomiwu/options/invertfly/es.md new file mode 100644 index 00000000000..2672b77018b --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/invertfly/es.md @@ -0,0 +1,10 @@ +--- +title: "Invert the side of the fly" +--- + +This option allows you to flip the front sides of the skirt so that the fly/button goes on the other side. + +The side at which the button goes is not functionally relevant, but some garment (typically tops) have the buttons on teh right side for menswear, and the left sife for womenswear. + +The reasons for this are historic, but what matters is that to people with gender presentation concerns, these little things can really matter. + diff --git a/markdown/org/docs/designs/naomiwu/options/invertfly/fr.md b/markdown/org/docs/designs/naomiwu/options/invertfly/fr.md new file mode 100644 index 00000000000..2672b77018b --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/invertfly/fr.md @@ -0,0 +1,10 @@ +--- +title: "Invert the side of the fly" +--- + +This option allows you to flip the front sides of the skirt so that the fly/button goes on the other side. + +The side at which the button goes is not functionally relevant, but some garment (typically tops) have the buttons on teh right side for menswear, and the left sife for womenswear. + +The reasons for this are historic, but what matters is that to people with gender presentation concerns, these little things can really matter. + diff --git a/markdown/org/docs/designs/naomiwu/options/invertfly/nl.md b/markdown/org/docs/designs/naomiwu/options/invertfly/nl.md new file mode 100644 index 00000000000..2672b77018b --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/invertfly/nl.md @@ -0,0 +1,10 @@ +--- +title: "Invert the side of the fly" +--- + +This option allows you to flip the front sides of the skirt so that the fly/button goes on the other side. + +The side at which the button goes is not functionally relevant, but some garment (typically tops) have the buttons on teh right side for menswear, and the left sife for womenswear. + +The reasons for this are historic, but what matters is that to people with gender presentation concerns, these little things can really matter. + diff --git a/markdown/org/docs/designs/naomiwu/options/invertfly/uk.md b/markdown/org/docs/designs/naomiwu/options/invertfly/uk.md new file mode 100644 index 00000000000..2672b77018b --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/invertfly/uk.md @@ -0,0 +1,10 @@ +--- +title: "Invert the side of the fly" +--- + +This option allows you to flip the front sides of the skirt so that the fly/button goes on the other side. + +The side at which the button goes is not functionally relevant, but some garment (typically tops) have the buttons on teh right side for menswear, and the left sife for womenswear. + +The reasons for this are historic, but what matters is that to people with gender presentation concerns, these little things can really matter. + diff --git a/markdown/org/docs/designs/naomiwu/options/jseambend/de.md b/markdown/org/docs/designs/naomiwu/options/jseambend/de.md new file mode 100644 index 00000000000..df6b0c8d969 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/jseambend/de.md @@ -0,0 +1,8 @@ +--- +title: "J-Seam bend" +--- + +This option controls the curvature of the *J-seam*. + +A J-seam is that J-shaped seam at the fly. This option controls how bendy the J is. It serves no functional purpose, it's a matter of aesthetics. + diff --git a/markdown/org/docs/designs/naomiwu/options/jseambend/en.md b/markdown/org/docs/designs/naomiwu/options/jseambend/en.md new file mode 100644 index 00000000000..ce8bf90a1a6 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/jseambend/en.md @@ -0,0 +1,9 @@ +--- +title: "J-Seam bend" +--- + +This option controls the curvature of the *J-seam*. + +A J-seam is that J-shaped seam at the fly. This option controls how bendy the J is. +It serves no functional purpose, it's a matter of aesthetics. + diff --git a/markdown/org/docs/designs/naomiwu/options/jseambend/es.md b/markdown/org/docs/designs/naomiwu/options/jseambend/es.md new file mode 100644 index 00000000000..df6b0c8d969 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/jseambend/es.md @@ -0,0 +1,8 @@ +--- +title: "J-Seam bend" +--- + +This option controls the curvature of the *J-seam*. + +A J-seam is that J-shaped seam at the fly. This option controls how bendy the J is. It serves no functional purpose, it's a matter of aesthetics. + diff --git a/markdown/org/docs/designs/naomiwu/options/jseambend/fr.md b/markdown/org/docs/designs/naomiwu/options/jseambend/fr.md new file mode 100644 index 00000000000..df6b0c8d969 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/jseambend/fr.md @@ -0,0 +1,8 @@ +--- +title: "J-Seam bend" +--- + +This option controls the curvature of the *J-seam*. + +A J-seam is that J-shaped seam at the fly. This option controls how bendy the J is. It serves no functional purpose, it's a matter of aesthetics. + diff --git a/markdown/org/docs/designs/naomiwu/options/jseambend/nl.md b/markdown/org/docs/designs/naomiwu/options/jseambend/nl.md new file mode 100644 index 00000000000..df6b0c8d969 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/jseambend/nl.md @@ -0,0 +1,8 @@ +--- +title: "J-Seam bend" +--- + +This option controls the curvature of the *J-seam*. + +A J-seam is that J-shaped seam at the fly. This option controls how bendy the J is. It serves no functional purpose, it's a matter of aesthetics. + diff --git a/markdown/org/docs/designs/naomiwu/options/jseambend/uk.md b/markdown/org/docs/designs/naomiwu/options/jseambend/uk.md new file mode 100644 index 00000000000..df6b0c8d969 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/jseambend/uk.md @@ -0,0 +1,8 @@ +--- +title: "J-Seam bend" +--- + +This option controls the curvature of the *J-seam*. + +A J-seam is that J-shaped seam at the fly. This option controls how bendy the J is. It serves no functional purpose, it's a matter of aesthetics. + diff --git a/markdown/org/docs/designs/naomiwu/options/length/de.md b/markdown/org/docs/designs/naomiwu/options/length/de.md new file mode 100644 index 00000000000..62214feb45a --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/length/de.md @@ -0,0 +1,8 @@ +--- +title: "LΓ€nge" +--- + +This option controls the length of the cargo skirt. + +For those not familiar with Naomi Wu's dresscode: should not expect full coverage from the default length. + diff --git a/markdown/org/docs/designs/naomiwu/options/length/en.md b/markdown/org/docs/designs/naomiwu/options/length/en.md new file mode 100644 index 00000000000..e4112f23340 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/length/en.md @@ -0,0 +1,8 @@ +--- +title: "Length" +--- + +This option controls the length of the cargo skirt. + +For those not familiar with Naomi Wu's dresscode: should not expect full coverage from the default length. + diff --git a/markdown/org/docs/designs/naomiwu/options/length/es.md b/markdown/org/docs/designs/naomiwu/options/length/es.md new file mode 100644 index 00000000000..ed173df0431 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/length/es.md @@ -0,0 +1,8 @@ +--- +title: "Longitud" +--- + +This option controls the length of the cargo skirt. + +For those not familiar with Naomi Wu's dresscode: should not expect full coverage from the default length. + diff --git a/markdown/org/docs/designs/naomiwu/options/length/fr.md b/markdown/org/docs/designs/naomiwu/options/length/fr.md new file mode 100644 index 00000000000..de16f92304d --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/length/fr.md @@ -0,0 +1,8 @@ +--- +title: "Longeur" +--- + +This option controls the length of the cargo skirt. + +For those not familiar with Naomi Wu's dresscode: should not expect full coverage from the default length. + diff --git a/markdown/org/docs/designs/naomiwu/options/length/nl.md b/markdown/org/docs/designs/naomiwu/options/length/nl.md new file mode 100644 index 00000000000..789982ba61f --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/length/nl.md @@ -0,0 +1,8 @@ +--- +title: "Lengte" +--- + +This option controls the length of the cargo skirt. + +For those not familiar with Naomi Wu's dresscode: should not expect full coverage from the default length. + diff --git a/markdown/org/docs/designs/naomiwu/options/length/uk.md b/markdown/org/docs/designs/naomiwu/options/length/uk.md new file mode 100644 index 00000000000..d5a1f1ed1f4 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/length/uk.md @@ -0,0 +1,8 @@ +--- +title: "Π”ΠΎΠ²ΠΆΠΈΠ½Π°" +--- + +This option controls the length of the cargo skirt. + +For those not familiar with Naomi Wu's dresscode: should not expect full coverage from the default length. + diff --git a/markdown/org/docs/designs/naomiwu/options/mindartwidth/de.md b/markdown/org/docs/designs/naomiwu/options/mindartwidth/de.md new file mode 100644 index 00000000000..225a8646db7 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/mindartwidth/de.md @@ -0,0 +1,8 @@ +--- +title: "Minimal dart width" +--- + +This option controls the the minimal width below which darts will be ommitted in favor of shaping at the seams. + +It is here for easy of construction. If you do not like sewing darts, you can increase this option to remove them. + diff --git a/markdown/org/docs/designs/naomiwu/options/mindartwidth/en.md b/markdown/org/docs/designs/naomiwu/options/mindartwidth/en.md new file mode 100644 index 00000000000..225a8646db7 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/mindartwidth/en.md @@ -0,0 +1,8 @@ +--- +title: "Minimal dart width" +--- + +This option controls the the minimal width below which darts will be ommitted in favor of shaping at the seams. + +It is here for easy of construction. If you do not like sewing darts, you can increase this option to remove them. + diff --git a/markdown/org/docs/designs/naomiwu/options/mindartwidth/es.md b/markdown/org/docs/designs/naomiwu/options/mindartwidth/es.md new file mode 100644 index 00000000000..225a8646db7 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/mindartwidth/es.md @@ -0,0 +1,8 @@ +--- +title: "Minimal dart width" +--- + +This option controls the the minimal width below which darts will be ommitted in favor of shaping at the seams. + +It is here for easy of construction. If you do not like sewing darts, you can increase this option to remove them. + diff --git a/markdown/org/docs/designs/naomiwu/options/mindartwidth/fr.md b/markdown/org/docs/designs/naomiwu/options/mindartwidth/fr.md new file mode 100644 index 00000000000..225a8646db7 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/mindartwidth/fr.md @@ -0,0 +1,8 @@ +--- +title: "Minimal dart width" +--- + +This option controls the the minimal width below which darts will be ommitted in favor of shaping at the seams. + +It is here for easy of construction. If you do not like sewing darts, you can increase this option to remove them. + diff --git a/markdown/org/docs/designs/naomiwu/options/mindartwidth/nl.md b/markdown/org/docs/designs/naomiwu/options/mindartwidth/nl.md new file mode 100644 index 00000000000..225a8646db7 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/mindartwidth/nl.md @@ -0,0 +1,8 @@ +--- +title: "Minimal dart width" +--- + +This option controls the the minimal width below which darts will be ommitted in favor of shaping at the seams. + +It is here for easy of construction. If you do not like sewing darts, you can increase this option to remove them. + diff --git a/markdown/org/docs/designs/naomiwu/options/mindartwidth/uk.md b/markdown/org/docs/designs/naomiwu/options/mindartwidth/uk.md new file mode 100644 index 00000000000..225a8646db7 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/mindartwidth/uk.md @@ -0,0 +1,8 @@ +--- +title: "Minimal dart width" +--- + +This option controls the the minimal width below which darts will be ommitted in favor of shaping at the seams. + +It is here for easy of construction. If you do not like sewing darts, you can increase this option to remove them. + diff --git a/markdown/org/docs/designs/naomiwu/options/nl.md b/markdown/org/docs/designs/naomiwu/options/nl.md new file mode 100644 index 00000000000..9b11f73912c --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/nl.md @@ -0,0 +1,5 @@ +--- +title: "Aaron A-Shirt: Ontwerpopties" +--- + + diff --git a/markdown/org/docs/designs/naomiwu/options/seatease/de.md b/markdown/org/docs/designs/naomiwu/options/seatease/de.md new file mode 100644 index 00000000000..42e7928873c --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/seatease/de.md @@ -0,0 +1,8 @@ +--- +title: "Zugabe GesÀß" +--- + +This option controls the amount of ease at your seat (the fullest part of your bum). + +Note that as a cargo skirt, we can't have too much ease or all our cargo will be all over the place. + diff --git a/markdown/org/docs/designs/naomiwu/options/seatease/en.md b/markdown/org/docs/designs/naomiwu/options/seatease/en.md new file mode 100644 index 00000000000..d9f733debf0 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/seatease/en.md @@ -0,0 +1,8 @@ +--- +title: "Seat ease" +--- + +This option controls the amount of ease at your seat (the fullest part of your bum). + +Note that as a cargo skirt, we can't have too much ease or all our cargo will be all over the place. + diff --git a/markdown/org/docs/designs/naomiwu/options/seatease/es.md b/markdown/org/docs/designs/naomiwu/options/seatease/es.md new file mode 100644 index 00000000000..37b51a6c1eb --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/seatease/es.md @@ -0,0 +1,8 @@ +--- +title: "Holgura de asiento" +--- + +This option controls the amount of ease at your seat (the fullest part of your bum). + +Note that as a cargo skirt, we can't have too much ease or all our cargo will be all over the place. + diff --git a/markdown/org/docs/designs/naomiwu/options/seatease/fr.md b/markdown/org/docs/designs/naomiwu/options/seatease/fr.md new file mode 100644 index 00000000000..c23a0d45d7b --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/seatease/fr.md @@ -0,0 +1,8 @@ +--- +title: "Aisance d'assise" +--- + +This option controls the amount of ease at your seat (the fullest part of your bum). + +Note that as a cargo skirt, we can't have too much ease or all our cargo will be all over the place. + diff --git a/markdown/org/docs/designs/naomiwu/options/seatease/nl.md b/markdown/org/docs/designs/naomiwu/options/seatease/nl.md new file mode 100644 index 00000000000..70c0aafa2c8 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/seatease/nl.md @@ -0,0 +1,8 @@ +--- +title: "Overwijdte zitvlak" +--- + +This option controls the amount of ease at your seat (the fullest part of your bum). + +Note that as a cargo skirt, we can't have too much ease or all our cargo will be all over the place. + diff --git a/markdown/org/docs/designs/naomiwu/options/seatease/uk.md b/markdown/org/docs/designs/naomiwu/options/seatease/uk.md new file mode 100644 index 00000000000..326343bd9f1 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/seatease/uk.md @@ -0,0 +1,8 @@ +--- +title: "Π—Ρ€ΡƒΡ‡Π½Ρ–ΡΡ‚ΡŒ сидіння" +--- + +This option controls the amount of ease at your seat (the fullest part of your bum). + +Note that as a cargo skirt, we can't have too much ease or all our cargo will be all over the place. + diff --git a/markdown/org/docs/designs/naomiwu/options/uk.md b/markdown/org/docs/designs/naomiwu/options/uk.md new file mode 100644 index 00000000000..6b743db018b --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/uk.md @@ -0,0 +1,5 @@ +--- +title: "Aaron A-Shirt: Π’Π°Ρ€Ρ–Π°Π½Ρ‚ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Ρƒ" +--- + + diff --git a/markdown/org/docs/designs/naomiwu/options/waistbandwidth/de.md b/markdown/org/docs/designs/naomiwu/options/waistbandwidth/de.md new file mode 100644 index 00000000000..dec082b6a16 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/waistbandwidth/de.md @@ -0,0 +1,10 @@ +--- +title: "Breite des Taillenbundes" +--- + +This option controls the width of the waistband. + +A common reason to alter this is to accomodate the width of the belt you intent to wear it with. + +That being said, keep in mind that the belt loops are wider than the waistband. + diff --git a/markdown/org/docs/designs/naomiwu/options/waistbandwidth/en.md b/markdown/org/docs/designs/naomiwu/options/waistbandwidth/en.md new file mode 100644 index 00000000000..c4592a35d6e --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/waistbandwidth/en.md @@ -0,0 +1,10 @@ +--- +title: "Waist band width" +--- + +This option controls the width of the waistband. + +A common reason to alter this is to accomodate the width of the belt you intent to wear it with. + +That being said, keep in mind that the belt loops are wider than the waistband. + diff --git a/markdown/org/docs/designs/naomiwu/options/waistbandwidth/es.md b/markdown/org/docs/designs/naomiwu/options/waistbandwidth/es.md new file mode 100644 index 00000000000..b8be454fbc4 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/waistbandwidth/es.md @@ -0,0 +1,10 @@ +--- +title: "Anchura de la cinturilla" +--- + +This option controls the width of the waistband. + +A common reason to alter this is to accomodate the width of the belt you intent to wear it with. + +That being said, keep in mind that the belt loops are wider than the waistband. + diff --git a/markdown/org/docs/designs/naomiwu/options/waistbandwidth/fr.md b/markdown/org/docs/designs/naomiwu/options/waistbandwidth/fr.md new file mode 100644 index 00000000000..b7ffb4e113c --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/waistbandwidth/fr.md @@ -0,0 +1,10 @@ +--- +title: "Largeur de ceinture" +--- + +This option controls the width of the waistband. + +A common reason to alter this is to accomodate the width of the belt you intent to wear it with. + +That being said, keep in mind that the belt loops are wider than the waistband. + diff --git a/markdown/org/docs/designs/naomiwu/options/waistbandwidth/nl.md b/markdown/org/docs/designs/naomiwu/options/waistbandwidth/nl.md new file mode 100644 index 00000000000..8952b95daa1 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/waistbandwidth/nl.md @@ -0,0 +1,10 @@ +--- +title: "Breedte tailleband" +--- + +This option controls the width of the waistband. + +A common reason to alter this is to accomodate the width of the belt you intent to wear it with. + +That being said, keep in mind that the belt loops are wider than the waistband. + diff --git a/markdown/org/docs/designs/naomiwu/options/waistbandwidth/uk.md b/markdown/org/docs/designs/naomiwu/options/waistbandwidth/uk.md new file mode 100644 index 00000000000..bb7aca3ebab --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/waistbandwidth/uk.md @@ -0,0 +1,10 @@ +--- +title: "Π¨ΠΈΡ€ΠΈΠ½Π° пояса" +--- + +This option controls the width of the waistband. + +A common reason to alter this is to accomodate the width of the belt you intent to wear it with. + +That being said, keep in mind that the belt loops are wider than the waistband. + diff --git a/markdown/org/docs/designs/naomiwu/options/waistslant/de.md b/markdown/org/docs/designs/naomiwu/options/waistslant/de.md new file mode 100644 index 00000000000..c75c6a42e93 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/waistslant/de.md @@ -0,0 +1,8 @@ +--- +title: "Waist slant" +--- + +This option will draft a cargo skirt where the waist is slanted upwards towards the back. + +By default, the waist is perfectly straight, which is fine for people built like Naomi (which means, very skinny). If you have more curves, you will almost certainly find that you need a bit more rise in the back, and this option can provide that. + diff --git a/markdown/org/docs/designs/naomiwu/options/waistslant/en.md b/markdown/org/docs/designs/naomiwu/options/waistslant/en.md new file mode 100644 index 00000000000..6a49a519a5c --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/waistslant/en.md @@ -0,0 +1,9 @@ +--- +title: "Waist slant" +--- + +This option will draft a cargo skirt where the waist is slanted upwards towards the back. + +By default, the waist is perfectly straight, which is fine for people built like Naomi (which means, very skinny). +If you have more curves, you will almost certainly find that you need a bit more rise in the back, and this option can provide that. + diff --git a/markdown/org/docs/designs/naomiwu/options/waistslant/es.md b/markdown/org/docs/designs/naomiwu/options/waistslant/es.md new file mode 100644 index 00000000000..c75c6a42e93 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/waistslant/es.md @@ -0,0 +1,8 @@ +--- +title: "Waist slant" +--- + +This option will draft a cargo skirt where the waist is slanted upwards towards the back. + +By default, the waist is perfectly straight, which is fine for people built like Naomi (which means, very skinny). If you have more curves, you will almost certainly find that you need a bit more rise in the back, and this option can provide that. + diff --git a/markdown/org/docs/designs/naomiwu/options/waistslant/fr.md b/markdown/org/docs/designs/naomiwu/options/waistslant/fr.md new file mode 100644 index 00000000000..c75c6a42e93 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/waistslant/fr.md @@ -0,0 +1,8 @@ +--- +title: "Waist slant" +--- + +This option will draft a cargo skirt where the waist is slanted upwards towards the back. + +By default, the waist is perfectly straight, which is fine for people built like Naomi (which means, very skinny). If you have more curves, you will almost certainly find that you need a bit more rise in the back, and this option can provide that. + diff --git a/markdown/org/docs/designs/naomiwu/options/waistslant/nl.md b/markdown/org/docs/designs/naomiwu/options/waistslant/nl.md new file mode 100644 index 00000000000..c75c6a42e93 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/waistslant/nl.md @@ -0,0 +1,8 @@ +--- +title: "Waist slant" +--- + +This option will draft a cargo skirt where the waist is slanted upwards towards the back. + +By default, the waist is perfectly straight, which is fine for people built like Naomi (which means, very skinny). If you have more curves, you will almost certainly find that you need a bit more rise in the back, and this option can provide that. + diff --git a/markdown/org/docs/designs/naomiwu/options/waistslant/uk.md b/markdown/org/docs/designs/naomiwu/options/waistslant/uk.md new file mode 100644 index 00000000000..c75c6a42e93 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/options/waistslant/uk.md @@ -0,0 +1,8 @@ +--- +title: "Waist slant" +--- + +This option will draft a cargo skirt where the waist is slanted upwards towards the back. + +By default, the waist is perfectly straight, which is fine for people built like Naomi (which means, very skinny). If you have more curves, you will almost certainly find that you need a bit more rise in the back, and this option can provide that. + diff --git a/markdown/org/docs/designs/naomiwu/uk.md b/markdown/org/docs/designs/naomiwu/uk.md new file mode 100644 index 00000000000..d043b91d420 --- /dev/null +++ b/markdown/org/docs/designs/naomiwu/uk.md @@ -0,0 +1,5 @@ +--- +title: "Naomi Wu Cargo Skirt" +--- + + diff --git a/sites/shared/i18n/designs.mjs b/sites/shared/i18n/designs.mjs index 503a03e1fde..d6d0bdbc570 100644 --- a/sites/shared/i18n/designs.mjs +++ b/sites/shared/i18n/designs.mjs @@ -32,6 +32,7 @@ import { i18n as legend } from '@freesewing/legend' import { i18n as lucy } from '@freesewing/lucy' import { i18n as lunetius } from '@freesewing/lunetius' import { i18n as magde } from '@freesewing/magde' +import { i18n as naomiwu } from '@freesewing/naomiwu' import { i18n as noble } from '@freesewing/noble' import { i18n as octoplushy } from '@freesewing/octoplushy' import { i18n as onyx } from '@freesewing/onyx' @@ -90,6 +91,7 @@ export const designs = { lucy, lunetius, magde, + naomiwu, noble, octoplushy, onyx,