From 55deea97cfcd3e665d9d0a55e9b12d18dd33226b Mon Sep 17 00:00:00 2001 From: FreeSewing bot Date: Tue, 2 Jan 2024 20:20:00 +0100 Subject: [PATCH 01/46] feat: New showcase post bruce-with-a-flat-front-and-lengthened-legs by Natalia --- .../en.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 markdown/org/showcase/bruce-with-a-flat-front-and-lengthened-legs/en.md diff --git a/markdown/org/showcase/bruce-with-a-flat-front-and-lengthened-legs/en.md b/markdown/org/showcase/bruce-with-a-flat-front-and-lengthened-legs/en.md new file mode 100644 index 00000000000..1297299f196 --- /dev/null +++ b/markdown/org/showcase/bruce-with-a-flat-front-and-lengthened-legs/en.md @@ -0,0 +1,13 @@ +--- +title: "Bruce with a flat front and lengthened legs" +caption: "A flat-front Bruce" +date: 20240102 +intro: "This flat-front Bruce is a bit wider and with longer legs. They're the most comfy ever while still somewhat flattening the anatomy." +designs: ["bruce"] +maker: Natalia +--- + +These flat-front Bruces by Halbmoki, are a bit wider and with longer legs than their last version. They said these Bruce boxer briefs are the most comfy ever while still somewhat flattening the anatomy. Looks great! + +![On the body](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-bruce-with-a-flat-front-and-lengthened-legs-2/public "On the body") + From ecdcd5b453d28f777489a513626fdbc2d2734ba2 Mon Sep 17 00:00:00 2001 From: FreeSewing bot Date: Tue, 2 Jan 2024 20:30:00 +0100 Subject: [PATCH 02/46] feat: New showcase post a-charming-small-lucy-by-moderndragon by Natalia --- .../a-charming-small-lucy-by-moderndragon/en.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 markdown/org/showcase/a-charming-small-lucy-by-moderndragon/en.md diff --git a/markdown/org/showcase/a-charming-small-lucy-by-moderndragon/en.md b/markdown/org/showcase/a-charming-small-lucy-by-moderndragon/en.md new file mode 100644 index 00000000000..ccd8a22cb74 --- /dev/null +++ b/markdown/org/showcase/a-charming-small-lucy-by-moderndragon/en.md @@ -0,0 +1,11 @@ +--- +title: "A charming small Lucy by moderndragon" +caption: "A small Lucy pocket" +date: 20240102 +intro: "This small Lucy was moderndragon's very first FreeSewing make." +designs: ["lucy"] +maker: Natalia +--- + +This small Lucy pocket was moderndragon's very first FreeSewing make. We think the size, pattern placement, binding, and finishing are all very lovely! + From 229a93b13f70b75f4eb097f33c317f5f95fd28e9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Jan 2024 19:14:12 +0000 Subject: [PATCH 03/46] build(deps): bump i18next from 23.7.13 to 23.7.15 Bumps [i18next](https://github.com/i18next/i18next) from 23.7.13 to 23.7.15. - [Release notes](https://github.com/i18next/i18next/releases) - [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md) - [Commits](https://github.com/i18next/i18next/compare/v23.7.13...v23.7.15) --- updated-dependencies: - dependency-name: i18next dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- sites/lab/package.json | 2 +- sites/sde/package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/sites/lab/package.json b/sites/lab/package.json index cdb60ccd6c7..eefe5bc5ec2 100644 --- a/sites/lab/package.json +++ b/sites/lab/package.json @@ -36,7 +36,7 @@ "d3-drag": "3.0.0", "d3-selection": "3.0.0", "daisyui": "4.5.0", - "i18next": "23.7.13", + "i18next": "23.7.15", "lodash.get": "4.4.2", "lodash.orderby": "4.6.0", "lodash.set": "4.3.2", diff --git a/sites/sde/package.json b/sites/sde/package.json index 2fb34c8f2a1..9b448be536f 100644 --- a/sites/sde/package.json +++ b/sites/sde/package.json @@ -54,7 +54,7 @@ "echarts": "5.4.3", "echarts-for-react": "3.0.2", "file-saver": "2.0.5", - "i18next": "23.7.13", + "i18next": "23.7.15", "jotai": "2.6.1", "jotai-location": "0.5.2", "js-yaml": "4.1.0", diff --git a/yarn.lock b/yarn.lock index 23cda2c2ff3..5fa3010e47a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7195,10 +7195,10 @@ i18next-fs-backend@^2.3.1: resolved "https://registry.yarnpkg.com/i18next-fs-backend/-/i18next-fs-backend-2.3.1.tgz#0c7d2459ff4a039e2b3228131809fbc0e74ff1a8" integrity sha512-tvfXskmG/9o+TJ5Fxu54sSO5OkY6d+uMn+K6JiUGLJrwxAVfer+8V3nU8jq3ts9Pe5lXJv4b1N7foIjJ8Iy2Gg== -i18next@23.7.13: - version "23.7.13" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.7.13.tgz#2dda870cbf63e168e1d4eb8f6f700b5c26794a3d" - integrity sha512-DbCPlw6VmURSZa43iOnycxq9o15e+WuBWDBZ3aj+gQZcDz4sgnuKwrcwmP1n8gSSCwCN7CRFGTpnwTd93A16Mg== +i18next@23.7.15: + version "23.7.15" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.7.15.tgz#62d19a6edfef15e6ca7f94d0fc9dab9012db7787" + integrity sha512-WukNgiqkUgU7xSaY8k2B4nXNesD+O8O4ta5g344U5B6Ag7mG61A1EBcDmktFgc4aL447V0cmpjw5l18v58KUfg== dependencies: "@babel/runtime" "^7.23.2" From a78896a9a65113ddbe27204c6994ca9da3c4efed Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jan 2024 04:34:42 +0000 Subject: [PATCH 04/46] build(deps): bump @bugsnag/js from 7.22.2 to 7.22.3 Bumps [@bugsnag/js](https://github.com/bugsnag/bugsnag-js) from 7.22.2 to 7.22.3. - [Release notes](https://github.com/bugsnag/bugsnag-js/releases) - [Changelog](https://github.com/bugsnag/bugsnag-js/blob/next/CHANGELOG.md) - [Commits](https://github.com/bugsnag/bugsnag-js/compare/v7.22.2...v7.22.3) --- updated-dependencies: - dependency-name: "@bugsnag/js" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- sites/org/package.json | 2 +- yarn.lock | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/sites/org/package.json b/sites/org/package.json index 9e2ba74c8ca..12d704dde55 100644 --- a/sites/org/package.json +++ b/sites/org/package.json @@ -28,7 +28,7 @@ }, "peerDependencies": {}, "dependencies": { - "@bugsnag/js": "7.22.2", + "@bugsnag/js": "7.22.3", "@bugsnag/plugin-react": "7.19.0", "@mdx-js/mdx": "^3.0.0", "@mdx-js/react": "^3.0.0", diff --git a/yarn.lock b/yarn.lock index 23cda2c2ff3..0789ec09a46 100644 --- a/yarn.lock +++ b/yarn.lock @@ -855,10 +855,10 @@ resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz#923ca57e173c6b232bbbb07347b1be982f03e783" integrity sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A== -"@bugsnag/browser@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@bugsnag/browser/-/browser-7.21.0.tgz#ee623ffa57c0fe2e2e4644a24bfc2008f18f83ef" - integrity sha512-mJ6r6SXpts+hdSnDNmTR35lZ+95BthqXpgBrDwquDCoY++zQ4OuzrkA/HZYD/rfpdSpgb7lO+AAlD7qrd9IylA== +"@bugsnag/browser@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@bugsnag/browser/-/browser-7.22.3.tgz#123402db4cbc0e5ee4e7ac03222c0a1de1d48799" + integrity sha512-TWQSdsCqzxEVmaKzbtmqoBLWF58yjXi/ScC+6L5VNgSj+62jkIQuw5Evjs+7kLQX8WCnaG6XLiDmUJmPx6ZUrA== dependencies: "@bugsnag/core" "^7.19.0" @@ -878,18 +878,18 @@ resolved "https://registry.yarnpkg.com/@bugsnag/cuid/-/cuid-3.0.2.tgz#544f8e6e7e3768c8cb618ca5c5fb1eea6aacbb7e" integrity sha512-cIwzC93r3PQ/INeuwtZwkZIG2K8WWN0rRLZQhu+mr48Ay+i6sEki4GYfTsflse7hZ1BeDWrNb/Q9vgY3B31xHQ== -"@bugsnag/js@7.22.2": - version "7.22.2" - resolved "https://registry.yarnpkg.com/@bugsnag/js/-/js-7.22.2.tgz#4cd91c77e9e4657b8a952fad34eee40382753c81" - integrity sha512-HgKzjkwzMQKyokIFnyRMChONxM9AoR24Sk76tWcqIdFagE0bhnTgSn3qYT2bRVNODtWyQHiW6qjOOpgOM3Mjlw== +"@bugsnag/js@7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@bugsnag/js/-/js-7.22.3.tgz#a7cb4443e0e8820aada0e15e486ac58d1b9fe257" + integrity sha512-SAZEElVlmQgZBPLbTdMAyFD2Pp1mP4t3bv+GmDVGSgBi4W6doKQVk0J/K9f5+JGw8fEh9AJHRlyub3XnlGI6Zw== dependencies: - "@bugsnag/browser" "^7.21.0" - "@bugsnag/node" "^7.19.0" + "@bugsnag/browser" "^7.22.3" + "@bugsnag/node" "^7.22.3" -"@bugsnag/node@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@bugsnag/node/-/node-7.19.0.tgz#6a8e5d0f5e73a1d0bad19537def1a7ff65e19787" - integrity sha512-c4snyxx5d/fsMogmgehFBGc//daH6+4XCplia4zrEQYltjaQ+l8ud0dPx623DgJl/2j1+2zlRc7y7IHSd7Gm5w== +"@bugsnag/node@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@bugsnag/node/-/node-7.22.3.tgz#064b0ba332676481ab43fa46fdb56ecde91adb22" + integrity sha512-vDXu0mrduonyCjUkTp+zKSh1WHAtA2VjB49xK5s1f/HnTASiJvzUOQBRXrkqaj37sndYHUSMxUCPvLawyc75nA== dependencies: "@bugsnag/core" "^7.19.0" byline "^5.0.0" From aecb8b9e1fa44fbe362a0e0544ec129fbf5744f9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jan 2024 04:39:26 +0000 Subject: [PATCH 05/46] build(deps): bump axios from 1.6.3 to 1.6.4 Bumps [axios](https://github.com/axios/axios) from 1.6.3 to 1.6.4. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v1.6.3...v1.6.4) --- updated-dependencies: - dependency-name: axios dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- packages/new-design/package.json | 2 +- sites/sde/package.json | 2 +- yarn.lock | 18 +++++++++--------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/new-design/package.json b/packages/new-design/package.json index d74e0d1df2b..749fe9a7c6e 100644 --- a/packages/new-design/package.json +++ b/packages/new-design/package.json @@ -36,7 +36,7 @@ }, "peerDependencies": {}, "dependencies": { - "axios": "1.6.3", + "axios": "1.6.4", "chalk": "5.3.0", "execa": "8.0.1", "mustache": "4.2.0", diff --git a/sites/sde/package.json b/sites/sde/package.json index 2fb34c8f2a1..20f53f83d02 100644 --- a/sites/sde/package.json +++ b/sites/sde/package.json @@ -46,7 +46,7 @@ "@tailwindcss/nesting": "^0.0.0-insiders.565cd3e", "@tailwindcss/typography": "0.5.10", "autoprefixer": "10.4.16", - "axios": "1.6.3", + "axios": "1.6.4", "d3-dispatch": "3.0.1", "d3-drag": "3.0.0", "d3-selection": "3.0.0", diff --git a/yarn.lock b/yarn.lock index 23cda2c2ff3..58e4b1d4bf6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3366,12 +3366,12 @@ axe-core@^4.6.2: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.8.2.tgz#2f6f3cde40935825cf4465e3c1c9e77b240ff6ae" integrity sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g== -axios@1.6.3, axios@^1.5.1: - version "1.6.3" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.3.tgz#7f50f23b3aa246eff43c54834272346c396613f4" - integrity sha512-fWyNdeawGam70jXSVlKl+SUNVcL6j6W79CuSIPfi6HnDUmSCH6gyUys/HrqHeA/wU0Az41rRgean494d0Jb+ww== +axios@1.6.4, axios@^1.5.1: + version "1.6.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.4.tgz#184ee1f63d412caffcf30d2c50982253c3ee86e0" + integrity sha512-heJnIs6N4aa1eSthhN9M5ioILu8Wi8vmQW9iHQ9NUvfkJb0lEEDUiIdQNAuBtfUt3FxReaKdpQA5DbmMOqzF/A== dependencies: - follow-redirects "^1.15.0" + follow-redirects "^1.15.4" form-data "^4.0.0" proxy-from-env "^1.1.0" @@ -6112,10 +6112,10 @@ flatted@^3.2.9: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== -follow-redirects@^1.15.0: - version "1.15.3" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" - integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== +follow-redirects@^1.15.4: + version "1.15.4" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.4.tgz#cdc7d308bf6493126b17ea2191ea0ccf3e535adf" + integrity sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw== fontkit@^1.8.1: version "1.9.0" From 586aa5bfeacd53a94be0c30230ba90a3ef216965 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jan 2024 04:45:57 +0000 Subject: [PATCH 06/46] build(deps): bump @aws-sdk/client-sesv2 from 3.484.0 to 3.485.0 Bumps [@aws-sdk/client-sesv2](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-sesv2) from 3.484.0 to 3.485.0. - [Release notes](https://github.com/aws/aws-sdk-js-v3/releases) - [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-sesv2/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.485.0/clients/client-sesv2) --- updated-dependencies: - dependency-name: "@aws-sdk/client-sesv2" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- sites/backend/package.json | 2 +- yarn.lock | 912 ++++++++++++++++++------------------- 2 files changed, 457 insertions(+), 457 deletions(-) diff --git a/sites/backend/package.json b/sites/backend/package.json index 9487819977b..d4acc0a7eb3 100644 --- a/sites/backend/package.json +++ b/sites/backend/package.json @@ -27,7 +27,7 @@ "wbuild": "node build.mjs" }, "dependencies": { - "@aws-sdk/client-sesv2": "3.484.0", + "@aws-sdk/client-sesv2": "3.485.0", "@prisma/client": "5.7.1", "bcryptjs": "2.4.3", "cors": "2.8.5", diff --git a/yarn.lock b/yarn.lock index 23cda2c2ff3..5ae43f2f243 100644 --- a/yarn.lock +++ b/yarn.lock @@ -197,352 +197,352 @@ "@aws-sdk/util-utf8-browser" "^3.0.0" tslib "^1.11.1" -"@aws-sdk/client-sesv2@3.484.0": - version "3.484.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sesv2/-/client-sesv2-3.484.0.tgz#7a596a0fa44bc0e0cba675c54cfbabdb589c42b1" - integrity sha512-3tqzuqdcCw0lUSIBbbBooNPeINuDb4amcEvS0jeahVmbNOct1j0Mj1qnE5aAVRDxY8nvVdzluElQf70GLMg7mA== +"@aws-sdk/client-sesv2@3.485.0": + version "3.485.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sesv2/-/client-sesv2-3.485.0.tgz#9fdefbbed72fbd69be4d80348e87ea9c0d0624b1" + integrity sha512-/OEWoZrvcru3a+hRA4W5ozQxtTHcuP+21z/47pob9mppM2//FjXbidrwPbtkkvsWqBrH5wV6zt/OrUIKNEBT7g== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.484.0" - "@aws-sdk/core" "3.481.0" - "@aws-sdk/credential-provider-node" "3.484.0" - "@aws-sdk/middleware-host-header" "3.468.0" - "@aws-sdk/middleware-logger" "3.468.0" - "@aws-sdk/middleware-recursion-detection" "3.468.0" - "@aws-sdk/middleware-signing" "3.468.0" - "@aws-sdk/middleware-user-agent" "3.478.0" - "@aws-sdk/region-config-resolver" "3.484.0" - "@aws-sdk/types" "3.468.0" - "@aws-sdk/util-endpoints" "3.478.0" - "@aws-sdk/util-user-agent-browser" "3.468.0" - "@aws-sdk/util-user-agent-node" "3.470.0" - "@smithy/config-resolver" "^2.0.22" - "@smithy/core" "^1.2.1" - "@smithy/fetch-http-handler" "^2.3.1" - "@smithy/hash-node" "^2.0.17" - "@smithy/invalid-dependency" "^2.0.15" - "@smithy/middleware-content-length" "^2.0.17" - "@smithy/middleware-endpoint" "^2.2.3" - "@smithy/middleware-retry" "^2.0.25" - "@smithy/middleware-serde" "^2.0.15" - "@smithy/middleware-stack" "^2.0.9" - "@smithy/node-config-provider" "^2.1.8" - "@smithy/node-http-handler" "^2.2.1" - "@smithy/protocol-http" "^3.0.11" - "@smithy/smithy-client" "^2.2.0" - "@smithy/types" "^2.7.0" - "@smithy/url-parser" "^2.0.15" + "@aws-sdk/client-sts" "3.485.0" + "@aws-sdk/core" "3.485.0" + "@aws-sdk/credential-provider-node" "3.485.0" + "@aws-sdk/middleware-host-header" "3.485.0" + "@aws-sdk/middleware-logger" "3.485.0" + "@aws-sdk/middleware-recursion-detection" "3.485.0" + "@aws-sdk/middleware-signing" "3.485.0" + "@aws-sdk/middleware-user-agent" "3.485.0" + "@aws-sdk/region-config-resolver" "3.485.0" + "@aws-sdk/types" "3.485.0" + "@aws-sdk/util-endpoints" "3.485.0" + "@aws-sdk/util-user-agent-browser" "3.485.0" + "@aws-sdk/util-user-agent-node" "3.485.0" + "@smithy/config-resolver" "^2.0.23" + "@smithy/core" "^1.2.2" + "@smithy/fetch-http-handler" "^2.3.2" + "@smithy/hash-node" "^2.0.18" + "@smithy/invalid-dependency" "^2.0.16" + "@smithy/middleware-content-length" "^2.0.18" + "@smithy/middleware-endpoint" "^2.3.0" + "@smithy/middleware-retry" "^2.0.26" + "@smithy/middleware-serde" "^2.0.16" + "@smithy/middleware-stack" "^2.0.10" + "@smithy/node-config-provider" "^2.1.9" + "@smithy/node-http-handler" "^2.2.2" + "@smithy/protocol-http" "^3.0.12" + "@smithy/smithy-client" "^2.2.1" + "@smithy/types" "^2.8.0" + "@smithy/url-parser" "^2.0.16" "@smithy/util-base64" "^2.0.1" "@smithy/util-body-length-browser" "^2.0.1" "@smithy/util-body-length-node" "^2.1.0" - "@smithy/util-defaults-mode-browser" "^2.0.23" - "@smithy/util-defaults-mode-node" "^2.0.31" - "@smithy/util-endpoints" "^1.0.7" - "@smithy/util-retry" "^2.0.8" + "@smithy/util-defaults-mode-browser" "^2.0.24" + "@smithy/util-defaults-mode-node" "^2.0.32" + "@smithy/util-endpoints" "^1.0.8" + "@smithy/util-retry" "^2.0.9" "@smithy/util-utf8" "^2.0.2" tslib "^2.5.0" -"@aws-sdk/client-sso@3.484.0": - version "3.484.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.484.0.tgz#3fffe4229c0883286c08f60f1fc5d83f1a989e7d" - integrity sha512-eHKXDHqgPt99977hNissa1y/efwXZ9kg3EKPLK13b6VzTC8s0+Ih+YZemNE22ahw6SYnRiGglYdkdypJ/uPHkg== +"@aws-sdk/client-sso@3.485.0": + version "3.485.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.485.0.tgz#235ea86c53a7e62bfd3e400cb36334486978a1bd" + integrity sha512-apN2bEn0PZs0jD4jAfvwO3dlWqw9YIQJ6TAudM1bd3S5vzWqlBBcLfQpK6taHoQaI+WqgUWXLuOf7gRFbGXKPg== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/core" "3.481.0" - "@aws-sdk/middleware-host-header" "3.468.0" - "@aws-sdk/middleware-logger" "3.468.0" - "@aws-sdk/middleware-recursion-detection" "3.468.0" - "@aws-sdk/middleware-user-agent" "3.478.0" - "@aws-sdk/region-config-resolver" "3.484.0" - "@aws-sdk/types" "3.468.0" - "@aws-sdk/util-endpoints" "3.478.0" - "@aws-sdk/util-user-agent-browser" "3.468.0" - "@aws-sdk/util-user-agent-node" "3.470.0" - "@smithy/config-resolver" "^2.0.22" - "@smithy/core" "^1.2.1" - "@smithy/fetch-http-handler" "^2.3.1" - "@smithy/hash-node" "^2.0.17" - "@smithy/invalid-dependency" "^2.0.15" - "@smithy/middleware-content-length" "^2.0.17" - "@smithy/middleware-endpoint" "^2.2.3" - "@smithy/middleware-retry" "^2.0.25" - "@smithy/middleware-serde" "^2.0.15" - "@smithy/middleware-stack" "^2.0.9" - "@smithy/node-config-provider" "^2.1.8" - "@smithy/node-http-handler" "^2.2.1" - "@smithy/protocol-http" "^3.0.11" - "@smithy/smithy-client" "^2.2.0" - "@smithy/types" "^2.7.0" - "@smithy/url-parser" "^2.0.15" + "@aws-sdk/core" "3.485.0" + "@aws-sdk/middleware-host-header" "3.485.0" + "@aws-sdk/middleware-logger" "3.485.0" + "@aws-sdk/middleware-recursion-detection" "3.485.0" + "@aws-sdk/middleware-user-agent" "3.485.0" + "@aws-sdk/region-config-resolver" "3.485.0" + "@aws-sdk/types" "3.485.0" + "@aws-sdk/util-endpoints" "3.485.0" + "@aws-sdk/util-user-agent-browser" "3.485.0" + "@aws-sdk/util-user-agent-node" "3.485.0" + "@smithy/config-resolver" "^2.0.23" + "@smithy/core" "^1.2.2" + "@smithy/fetch-http-handler" "^2.3.2" + "@smithy/hash-node" "^2.0.18" + "@smithy/invalid-dependency" "^2.0.16" + "@smithy/middleware-content-length" "^2.0.18" + "@smithy/middleware-endpoint" "^2.3.0" + "@smithy/middleware-retry" "^2.0.26" + "@smithy/middleware-serde" "^2.0.16" + "@smithy/middleware-stack" "^2.0.10" + "@smithy/node-config-provider" "^2.1.9" + "@smithy/node-http-handler" "^2.2.2" + "@smithy/protocol-http" "^3.0.12" + "@smithy/smithy-client" "^2.2.1" + "@smithy/types" "^2.8.0" + "@smithy/url-parser" "^2.0.16" "@smithy/util-base64" "^2.0.1" "@smithy/util-body-length-browser" "^2.0.1" "@smithy/util-body-length-node" "^2.1.0" - "@smithy/util-defaults-mode-browser" "^2.0.23" - "@smithy/util-defaults-mode-node" "^2.0.31" - "@smithy/util-endpoints" "^1.0.7" - "@smithy/util-retry" "^2.0.8" + "@smithy/util-defaults-mode-browser" "^2.0.24" + "@smithy/util-defaults-mode-node" "^2.0.32" + "@smithy/util-endpoints" "^1.0.8" + "@smithy/util-retry" "^2.0.9" "@smithy/util-utf8" "^2.0.2" tslib "^2.5.0" -"@aws-sdk/client-sts@3.484.0": - version "3.484.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.484.0.tgz#57f84be8f0acf7b4fcbb666197282fcc1a04da97" - integrity sha512-psQxH0mYhTVvZhfca3s9NbXgnuOM8l+5LtF7fZBF5y4xaPpfAPicPWp6po69J3ynwyXi/MpHNXd/13d/L09TTA== +"@aws-sdk/client-sts@3.485.0": + version "3.485.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.485.0.tgz#fe40ba4bf65d8e513f48194ea7af6228eff6982a" + integrity sha512-PI4q36kVF0fpIPZyeQhrwwJZ6SRkOGvU3rX5Qn4b5UY5X+Ct1aLhqSX8/OB372UZIcnh6eSvERu8POHleDO7Jw== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/core" "3.481.0" - "@aws-sdk/credential-provider-node" "3.484.0" - "@aws-sdk/middleware-host-header" "3.468.0" - "@aws-sdk/middleware-logger" "3.468.0" - "@aws-sdk/middleware-recursion-detection" "3.468.0" - "@aws-sdk/middleware-user-agent" "3.478.0" - "@aws-sdk/region-config-resolver" "3.484.0" - "@aws-sdk/types" "3.468.0" - "@aws-sdk/util-endpoints" "3.478.0" - "@aws-sdk/util-user-agent-browser" "3.468.0" - "@aws-sdk/util-user-agent-node" "3.470.0" - "@smithy/config-resolver" "^2.0.22" - "@smithy/core" "^1.2.1" - "@smithy/fetch-http-handler" "^2.3.1" - "@smithy/hash-node" "^2.0.17" - "@smithy/invalid-dependency" "^2.0.15" - "@smithy/middleware-content-length" "^2.0.17" - "@smithy/middleware-endpoint" "^2.2.3" - "@smithy/middleware-retry" "^2.0.25" - "@smithy/middleware-serde" "^2.0.15" - "@smithy/middleware-stack" "^2.0.9" - "@smithy/node-config-provider" "^2.1.8" - "@smithy/node-http-handler" "^2.2.1" - "@smithy/protocol-http" "^3.0.11" - "@smithy/smithy-client" "^2.2.0" - "@smithy/types" "^2.7.0" - "@smithy/url-parser" "^2.0.15" + "@aws-sdk/core" "3.485.0" + "@aws-sdk/credential-provider-node" "3.485.0" + "@aws-sdk/middleware-host-header" "3.485.0" + "@aws-sdk/middleware-logger" "3.485.0" + "@aws-sdk/middleware-recursion-detection" "3.485.0" + "@aws-sdk/middleware-user-agent" "3.485.0" + "@aws-sdk/region-config-resolver" "3.485.0" + "@aws-sdk/types" "3.485.0" + "@aws-sdk/util-endpoints" "3.485.0" + "@aws-sdk/util-user-agent-browser" "3.485.0" + "@aws-sdk/util-user-agent-node" "3.485.0" + "@smithy/config-resolver" "^2.0.23" + "@smithy/core" "^1.2.2" + "@smithy/fetch-http-handler" "^2.3.2" + "@smithy/hash-node" "^2.0.18" + "@smithy/invalid-dependency" "^2.0.16" + "@smithy/middleware-content-length" "^2.0.18" + "@smithy/middleware-endpoint" "^2.3.0" + "@smithy/middleware-retry" "^2.0.26" + "@smithy/middleware-serde" "^2.0.16" + "@smithy/middleware-stack" "^2.0.10" + "@smithy/node-config-provider" "^2.1.9" + "@smithy/node-http-handler" "^2.2.2" + "@smithy/protocol-http" "^3.0.12" + "@smithy/smithy-client" "^2.2.1" + "@smithy/types" "^2.8.0" + "@smithy/url-parser" "^2.0.16" "@smithy/util-base64" "^2.0.1" "@smithy/util-body-length-browser" "^2.0.1" "@smithy/util-body-length-node" "^2.1.0" - "@smithy/util-defaults-mode-browser" "^2.0.23" - "@smithy/util-defaults-mode-node" "^2.0.31" - "@smithy/util-endpoints" "^1.0.7" - "@smithy/util-middleware" "^2.0.8" - "@smithy/util-retry" "^2.0.8" + "@smithy/util-defaults-mode-browser" "^2.0.24" + "@smithy/util-defaults-mode-node" "^2.0.32" + "@smithy/util-endpoints" "^1.0.8" + "@smithy/util-middleware" "^2.0.9" + "@smithy/util-retry" "^2.0.9" "@smithy/util-utf8" "^2.0.2" fast-xml-parser "4.2.5" tslib "^2.5.0" -"@aws-sdk/core@3.481.0": - version "3.481.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.481.0.tgz#e0ed1c1e8dc322237f81f0442ba0f8fbb20ef76f" - integrity sha512-UeyAc2FnWQDts81vPVBWKEj0WagYK4SVAgNfGcg6zCzzqsUG4unr4NPKQoca2L+XOU55yMCy+5l2K6R3YsFGKg== +"@aws-sdk/core@3.485.0": + version "3.485.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.485.0.tgz#3fdbd21d9619320f19c1074aeef91cf1498b94d8" + integrity sha512-Yvi80DQcbjkYCft471ClE3HuetuNVqntCs6eFOomDcrJaqdOFrXv2kJAxky84MRA/xb7bGlDGAPbTuj1ICputg== dependencies: - "@smithy/core" "^1.2.1" - "@smithy/protocol-http" "^3.0.11" + "@smithy/core" "^1.2.2" + "@smithy/protocol-http" "^3.0.12" "@smithy/signature-v4" "^2.0.0" - "@smithy/smithy-client" "^2.2.0" - "@smithy/types" "^2.7.0" + "@smithy/smithy-client" "^2.2.1" + "@smithy/types" "^2.8.0" tslib "^2.5.0" -"@aws-sdk/credential-provider-env@3.468.0": - version "3.468.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.468.0.tgz#4196d717d3f5485af863bd1fd84374ea3dcd6210" - integrity sha512-k/1WHd3KZn0EQYjadooj53FC0z24/e4dUZhbSKTULgmxyO62pwh9v3Brvw4WRa/8o2wTffU/jo54tf4vGuP/ZA== +"@aws-sdk/credential-provider-env@3.485.0": + version "3.485.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.485.0.tgz#ce61756d2d9f2eda86530c702a7572d88d592bfa" + integrity sha512-3XkFgwVU1XOB33dV7t9BKJ/ptdl2iS+0dxE7ecq8aqT2/gsfKmLCae1G17P8WmdD3z0kMDTvnqM2aWgUnSOkmg== dependencies: - "@aws-sdk/types" "3.468.0" + "@aws-sdk/types" "3.485.0" "@smithy/property-provider" "^2.0.0" - "@smithy/types" "^2.7.0" + "@smithy/types" "^2.8.0" tslib "^2.5.0" -"@aws-sdk/credential-provider-ini@3.484.0": - version "3.484.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.484.0.tgz#558cb307a61afdee942987cc9735969f3d272675" - integrity sha512-BbvU7seI0RPPwpujnz4LA1lC53Cj4BOSRpYYZbrxA6C7SzW0D/IQBZQP3JBbrxIhqewSROSsYGDjvYbyi5aDEw== +"@aws-sdk/credential-provider-ini@3.485.0": + version "3.485.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.485.0.tgz#0eabe34bf900f39cb0707415550dd1e05a899165" + integrity sha512-cFYF/Bdw7EnT4viSxYpNIv3IBkri/Yb+JpQXl8uDq7bfVJfAN5qZmK07vRkg08xL6TC4F41wshhMSAucGdTwIw== dependencies: - "@aws-sdk/credential-provider-env" "3.468.0" - "@aws-sdk/credential-provider-process" "3.468.0" - "@aws-sdk/credential-provider-sso" "3.484.0" - "@aws-sdk/credential-provider-web-identity" "3.468.0" - "@aws-sdk/types" "3.468.0" + "@aws-sdk/credential-provider-env" "3.485.0" + "@aws-sdk/credential-provider-process" "3.485.0" + "@aws-sdk/credential-provider-sso" "3.485.0" + "@aws-sdk/credential-provider-web-identity" "3.485.0" + "@aws-sdk/types" "3.485.0" "@smithy/credential-provider-imds" "^2.0.0" "@smithy/property-provider" "^2.0.0" "@smithy/shared-ini-file-loader" "^2.0.6" - "@smithy/types" "^2.7.0" + "@smithy/types" "^2.8.0" tslib "^2.5.0" -"@aws-sdk/credential-provider-node@3.484.0": - version "3.484.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.484.0.tgz#4b7373724fef95374717e3fc83587ed696c8adbb" - integrity sha512-Ylqej3FqRwUD3I7929k214LRH1bUz7f2hfV4ZqY7teM9hQC5Ov5SpVtOtLKNfgaaxAkhD2ffMNfmq8TAg824+g== +"@aws-sdk/credential-provider-node@3.485.0": + version "3.485.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.485.0.tgz#c856410144987e080ac2acc110f03ed5e25d8232" + integrity sha512-2DwzO2azkSzngifKDT61W/DL0tSzewuaFHiLJWdfc8Et3mdAQJ9x3KAj8u7XFpjIcGNqk7FiKjN+zeGUuNiEhA== dependencies: - "@aws-sdk/credential-provider-env" "3.468.0" - "@aws-sdk/credential-provider-ini" "3.484.0" - "@aws-sdk/credential-provider-process" "3.468.0" - "@aws-sdk/credential-provider-sso" "3.484.0" - "@aws-sdk/credential-provider-web-identity" "3.468.0" - "@aws-sdk/types" "3.468.0" + "@aws-sdk/credential-provider-env" "3.485.0" + "@aws-sdk/credential-provider-ini" "3.485.0" + "@aws-sdk/credential-provider-process" "3.485.0" + "@aws-sdk/credential-provider-sso" "3.485.0" + "@aws-sdk/credential-provider-web-identity" "3.485.0" + "@aws-sdk/types" "3.485.0" "@smithy/credential-provider-imds" "^2.0.0" "@smithy/property-provider" "^2.0.0" "@smithy/shared-ini-file-loader" "^2.0.6" - "@smithy/types" "^2.7.0" + "@smithy/types" "^2.8.0" tslib "^2.5.0" -"@aws-sdk/credential-provider-process@3.468.0": - version "3.468.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.468.0.tgz#770ed72db036c5d011445e5abf4a4bcc4424c486" - integrity sha512-OYSn1A/UsyPJ7Z8Q2cNhTf55O36shPmSsvOfND04nSfu1nPaR+VUvvsP7v+brhGpwC/GAKTIdGAo4blH31BS6A== +"@aws-sdk/credential-provider-process@3.485.0": + version "3.485.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.485.0.tgz#c15bddfba95ab83e96431d215ac5f6899900ade2" + integrity sha512-X9qS6ZO/rDKYDgWqD1YmSX7sAUUHax9HbXlgGiTTdtfhZvQh1ZmnH6wiPu5WNliafHZFtZT2W07kgrDLPld/Ug== dependencies: - "@aws-sdk/types" "3.468.0" + "@aws-sdk/types" "3.485.0" "@smithy/property-provider" "^2.0.0" "@smithy/shared-ini-file-loader" "^2.0.6" - "@smithy/types" "^2.7.0" + "@smithy/types" "^2.8.0" tslib "^2.5.0" -"@aws-sdk/credential-provider-sso@3.484.0": - version "3.484.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.484.0.tgz#3e639d45c674557c4d2505140ff2d031d2decab7" - integrity sha512-Fl7+YhrlU2icZkz18z9aj4SiWb2aQlWp5LsVqMfSzTlJFc9yPlD9e7F33gnL7kKLVSnAVxsr5v4y4pFC6FZUSw== +"@aws-sdk/credential-provider-sso@3.485.0": + version "3.485.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.485.0.tgz#43214c543b07fd034cda262c2aadd3502353495f" + integrity sha512-l0oC8GTrWh+LFQQfSmG1Jai1PX7Mhj9arb/CaS1/tmeZE0hgIXW++tvljYs/Dds4LGXUlaWG+P7BrObf6OyIXA== dependencies: - "@aws-sdk/client-sso" "3.484.0" - "@aws-sdk/token-providers" "3.484.0" - "@aws-sdk/types" "3.468.0" + "@aws-sdk/client-sso" "3.485.0" + "@aws-sdk/token-providers" "3.485.0" + "@aws-sdk/types" "3.485.0" "@smithy/property-provider" "^2.0.0" "@smithy/shared-ini-file-loader" "^2.0.6" - "@smithy/types" "^2.7.0" + "@smithy/types" "^2.8.0" tslib "^2.5.0" -"@aws-sdk/credential-provider-web-identity@3.468.0": - version "3.468.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.468.0.tgz#5befcb593d99a84e16af9e9f285f0d59ed42771f" - integrity sha512-rexymPmXjtkwCPfhnUq3EjO1rSkf39R4Jz9CqiM7OsqK2qlT5Y/V3gnMKn0ZMXsYaQOMfM3cT5xly5R+OKDHlw== +"@aws-sdk/credential-provider-web-identity@3.485.0": + version "3.485.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.485.0.tgz#5c6ac3b00e6bec8054610c6b12d0618aa64d0152" + integrity sha512-WpBFZFE0iXtnibH5POMEKITj/hR0YV5l2n9p8BEvKjdJ63s3Xke1RN20ZdIyKDaRDwj8adnKDgNPEnAKdS4kLw== dependencies: - "@aws-sdk/types" "3.468.0" + "@aws-sdk/types" "3.485.0" "@smithy/property-provider" "^2.0.0" - "@smithy/types" "^2.7.0" + "@smithy/types" "^2.8.0" tslib "^2.5.0" -"@aws-sdk/middleware-host-header@3.468.0": - version "3.468.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.468.0.tgz#6da7b19032e9afccea54fbf8aa10cccd2f817bcf" - integrity sha512-gwQ+/QhX+lhof304r6zbZ/V5l5cjhGRxLL3CjH1uJPMcOAbw9wUlMdl+ibr8UwBZ5elfKFGiB1cdW/0uMchw0w== +"@aws-sdk/middleware-host-header@3.485.0": + version "3.485.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.485.0.tgz#56989dcd67d775bbd7cb67e28048c6c4d38af48c" + integrity sha512-1mAUX9dQNGo2RIKseVj7SI/D5abQJQ/Os8hQ0NyVAyyVYF+Yjx5PphKgfhM5yoBwuwZUl6q71XPYEGNx7be6SA== dependencies: - "@aws-sdk/types" "3.468.0" - "@smithy/protocol-http" "^3.0.11" - "@smithy/types" "^2.7.0" + "@aws-sdk/types" "3.485.0" + "@smithy/protocol-http" "^3.0.12" + "@smithy/types" "^2.8.0" tslib "^2.5.0" -"@aws-sdk/middleware-logger@3.468.0": - version "3.468.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.468.0.tgz#a1883fb7ad8e156444d30689de4ab897357ef1d8" - integrity sha512-X5XHKV7DHRXI3f29SAhJPe/OxWRFgDWDMMCALfzhmJfCi6Jfh0M14cJKoC+nl+dk9lB+36+jKjhjETZaL2bPlA== +"@aws-sdk/middleware-logger@3.485.0": + version "3.485.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.485.0.tgz#d9d1a289321f2dd607c7f17c7407e280e2595ee4" + integrity sha512-O8IgJ0LHi5wTs5GlpI7nqmmSSagkVdd1shpGgQWY2h0kMSCII8CJZHBG97dlFFpGTvx5EDlhPNek7rl/6F4dRw== dependencies: - "@aws-sdk/types" "3.468.0" - "@smithy/types" "^2.7.0" + "@aws-sdk/types" "3.485.0" + "@smithy/types" "^2.8.0" tslib "^2.5.0" -"@aws-sdk/middleware-recursion-detection@3.468.0": - version "3.468.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.468.0.tgz#85b05636a5c2638bf9e15c8b6be17654757e1bf4" - integrity sha512-vch9IQib2Ng9ucSyRW2eKNQXHUPb5jUPCLA5otTW/8nGjcOU37LxQG4WrxO7uaJ9Oe8hjHO+hViE3P0KISUhtA== +"@aws-sdk/middleware-recursion-detection@3.485.0": + version "3.485.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.485.0.tgz#b93b0e616a18647640c874b4b2cc5e0257970741" + integrity sha512-ZeVNATGNFcqkWDut3luVszROTUzkU5u+rJpB/xmeMoenlDAjPRiHt/ca3WkI5wAnIJ1VSNGpD2sOFLMCH+EWag== dependencies: - "@aws-sdk/types" "3.468.0" - "@smithy/protocol-http" "^3.0.11" - "@smithy/types" "^2.7.0" + "@aws-sdk/types" "3.485.0" + "@smithy/protocol-http" "^3.0.12" + "@smithy/types" "^2.8.0" tslib "^2.5.0" -"@aws-sdk/middleware-signing@3.468.0": - version "3.468.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.468.0.tgz#d1b5a92c395f55063cfa72ee95e4921b16f4c515" - integrity sha512-s+7fSB1gdnnTj5O0aCCarX3z5Vppop8kazbNSZADdkfHIDWCN80IH4ZNjY3OWqaAz0HmR4LNNrovdR304ojb4Q== +"@aws-sdk/middleware-signing@3.485.0": + version "3.485.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.485.0.tgz#e252ded9110624b12004759475a8a4f07fad2bc8" + integrity sha512-41xzT2p1sOibhsLkdE5rwPJkNbBtKD8Gp36/ySfu0KE415wfXKacElSVxAaBw39/j7iSWDYqqybeEYbAzk+3GQ== dependencies: - "@aws-sdk/types" "3.468.0" + "@aws-sdk/types" "3.485.0" "@smithy/property-provider" "^2.0.0" - "@smithy/protocol-http" "^3.0.11" + "@smithy/protocol-http" "^3.0.12" "@smithy/signature-v4" "^2.0.0" - "@smithy/types" "^2.7.0" - "@smithy/util-middleware" "^2.0.8" + "@smithy/types" "^2.8.0" + "@smithy/util-middleware" "^2.0.9" tslib "^2.5.0" -"@aws-sdk/middleware-user-agent@3.478.0": - version "3.478.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.478.0.tgz#5b98d02ccaa8db880fb59096e5389960c4262fbe" - integrity sha512-Rec+nAPIzzwxgHPW+xqY6tooJGFOytpYg/xSRv8/IXl3xKGhmpMGs6gDWzmMBv/qy5nKTvLph/csNWJ98GWXCw== +"@aws-sdk/middleware-user-agent@3.485.0": + version "3.485.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.485.0.tgz#e05662015bd43c5051f71751b94db81b73c97c26" + integrity sha512-CddCVOn+OPQ0CcchketIg+WF6v+MDLAf3GOYTR2htUxxIm7HABuRd6R3kvQ5Jny9CV8gMt22G1UZITsFexSJlQ== dependencies: - "@aws-sdk/types" "3.468.0" - "@aws-sdk/util-endpoints" "3.478.0" - "@smithy/protocol-http" "^3.0.11" - "@smithy/types" "^2.7.0" + "@aws-sdk/types" "3.485.0" + "@aws-sdk/util-endpoints" "3.485.0" + "@smithy/protocol-http" "^3.0.12" + "@smithy/types" "^2.8.0" tslib "^2.5.0" -"@aws-sdk/region-config-resolver@3.484.0": - version "3.484.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.484.0.tgz#fb480b68a3c1b2bddf1c67eecf8b8966114179f7" - integrity sha512-qfYSwSIc9GasHFrJidydlQE433mB93d31dfypFWhrJPXRv1fhopO72NSfsY2WCcbaRkADc4AajLZFly4J96abw== +"@aws-sdk/region-config-resolver@3.485.0": + version "3.485.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.485.0.tgz#7a59541cc94e50451905da8e06459e7076615622" + integrity sha512-2FB2EQ0sIE+YgFqGtkE1lDIMIL6nYe6MkOHBwBM7bommadKIrbbr2L22bPZGs3ReTsxiJabjzxbuCAVhrpHmhg== dependencies: - "@smithy/node-config-provider" "^2.1.8" - "@smithy/types" "^2.7.0" + "@smithy/node-config-provider" "^2.1.9" + "@smithy/types" "^2.8.0" "@smithy/util-config-provider" "^2.1.0" - "@smithy/util-middleware" "^2.0.8" + "@smithy/util-middleware" "^2.0.9" tslib "^2.5.0" -"@aws-sdk/token-providers@3.484.0": - version "3.484.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.484.0.tgz#68ee9b3e99a0fac943963e81340fee555e10e3c9" - integrity sha512-9Eb7X0sNhJANfYCeEYWCvfeD4shMZEse3YUz5EALzbpzi/So56ZaeA/lWWeh0fkYiByq74eA2QkC/tXZkHw6EQ== +"@aws-sdk/token-providers@3.485.0": + version "3.485.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.485.0.tgz#f493039e4ca92330bc6fd9320ac883842436e820" + integrity sha512-kOXA1WKIVIFNRqHL8ynVZ3hCKLsgnEmGr2iDR6agDNw5fYIlCO/6N2xR6QdGcLTvUUbwOlz4OvKLUQnWMKAnnA== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/middleware-host-header" "3.468.0" - "@aws-sdk/middleware-logger" "3.468.0" - "@aws-sdk/middleware-recursion-detection" "3.468.0" - "@aws-sdk/middleware-user-agent" "3.478.0" - "@aws-sdk/region-config-resolver" "3.484.0" - "@aws-sdk/types" "3.468.0" - "@aws-sdk/util-endpoints" "3.478.0" - "@aws-sdk/util-user-agent-browser" "3.468.0" - "@aws-sdk/util-user-agent-node" "3.470.0" - "@smithy/config-resolver" "^2.0.22" - "@smithy/fetch-http-handler" "^2.3.1" - "@smithy/hash-node" "^2.0.17" - "@smithy/invalid-dependency" "^2.0.15" - "@smithy/middleware-content-length" "^2.0.17" - "@smithy/middleware-endpoint" "^2.2.3" - "@smithy/middleware-retry" "^2.0.25" - "@smithy/middleware-serde" "^2.0.15" - "@smithy/middleware-stack" "^2.0.9" - "@smithy/node-config-provider" "^2.1.8" - "@smithy/node-http-handler" "^2.2.1" + "@aws-sdk/middleware-host-header" "3.485.0" + "@aws-sdk/middleware-logger" "3.485.0" + "@aws-sdk/middleware-recursion-detection" "3.485.0" + "@aws-sdk/middleware-user-agent" "3.485.0" + "@aws-sdk/region-config-resolver" "3.485.0" + "@aws-sdk/types" "3.485.0" + "@aws-sdk/util-endpoints" "3.485.0" + "@aws-sdk/util-user-agent-browser" "3.485.0" + "@aws-sdk/util-user-agent-node" "3.485.0" + "@smithy/config-resolver" "^2.0.23" + "@smithy/fetch-http-handler" "^2.3.2" + "@smithy/hash-node" "^2.0.18" + "@smithy/invalid-dependency" "^2.0.16" + "@smithy/middleware-content-length" "^2.0.18" + "@smithy/middleware-endpoint" "^2.3.0" + "@smithy/middleware-retry" "^2.0.26" + "@smithy/middleware-serde" "^2.0.16" + "@smithy/middleware-stack" "^2.0.10" + "@smithy/node-config-provider" "^2.1.9" + "@smithy/node-http-handler" "^2.2.2" "@smithy/property-provider" "^2.0.0" - "@smithy/protocol-http" "^3.0.11" + "@smithy/protocol-http" "^3.0.12" "@smithy/shared-ini-file-loader" "^2.0.6" - "@smithy/smithy-client" "^2.2.0" - "@smithy/types" "^2.7.0" - "@smithy/url-parser" "^2.0.15" + "@smithy/smithy-client" "^2.2.1" + "@smithy/types" "^2.8.0" + "@smithy/url-parser" "^2.0.16" "@smithy/util-base64" "^2.0.1" "@smithy/util-body-length-browser" "^2.0.1" "@smithy/util-body-length-node" "^2.1.0" - "@smithy/util-defaults-mode-browser" "^2.0.23" - "@smithy/util-defaults-mode-node" "^2.0.31" - "@smithy/util-endpoints" "^1.0.7" - "@smithy/util-retry" "^2.0.8" + "@smithy/util-defaults-mode-browser" "^2.0.24" + "@smithy/util-defaults-mode-node" "^2.0.32" + "@smithy/util-endpoints" "^1.0.8" + "@smithy/util-retry" "^2.0.9" "@smithy/util-utf8" "^2.0.2" tslib "^2.5.0" -"@aws-sdk/types@3.468.0", "@aws-sdk/types@^3.222.0": - version "3.468.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.468.0.tgz#f97b34fc92a800d1d8b866f47693ae8f3d46517b" - integrity sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA== +"@aws-sdk/types@3.485.0", "@aws-sdk/types@^3.222.0": + version "3.485.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.485.0.tgz#9ffebb602bba4b6b75e2b037ee93a8735c06da3e" + integrity sha512-+QW32YQdvZRDOwrAQPo/qCyXoSjgXB6RwJwCwkd8ebJXRXw6tmGKIHaZqYHt/LtBymvnaBgBBADNa4+qFvlOFw== dependencies: - "@smithy/types" "^2.7.0" + "@smithy/types" "^2.8.0" tslib "^2.5.0" -"@aws-sdk/util-endpoints@3.478.0": - version "3.478.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.478.0.tgz#d39c5667f22a7cbd2af93cdd6d883d25ef84e374" - integrity sha512-u9Mcg3euGJGs5clPt9mBuhBjHiEKiD0PnfvArhfq9i+dcY5mbCq/i1Dezp3iv1fZH9xxQt7hPXDfSpt1yUSM6g== +"@aws-sdk/util-endpoints@3.485.0": + version "3.485.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.485.0.tgz#5982f40507c242f306ef6f4a53423ec3b1fe69c2" + integrity sha512-dTd642F7nJisApF8YjniqQ6U59CP/DCtar11fXf1nG9YNBCBsNNVw5ZfZb5nSNzaIdy27mQioWTCV18JEj1mxg== dependencies: - "@aws-sdk/types" "3.468.0" - "@smithy/util-endpoints" "^1.0.7" + "@aws-sdk/types" "3.485.0" + "@smithy/util-endpoints" "^1.0.8" tslib "^2.5.0" "@aws-sdk/util-locate-window@^3.0.0": @@ -552,24 +552,24 @@ dependencies: tslib "^2.5.0" -"@aws-sdk/util-user-agent-browser@3.468.0": - version "3.468.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.468.0.tgz#095caecb3fd75104ee38ae81ed78821de0f58e28" - integrity sha512-OJyhWWsDEizR3L+dCgMXSUmaCywkiZ7HSbnQytbeKGwokIhD69HTiJcibF/sgcM5gk4k3Mq3puUhGnEZ46GIig== +"@aws-sdk/util-user-agent-browser@3.485.0": + version "3.485.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.485.0.tgz#1f4523470a172a41614c3cbbae0dc1439594741d" + integrity sha512-QliWbjg0uOhGTcWgWTKPMY0SBi07g253DjwrCINT1auqDrdQPxa10xozpZExBYjAK2KuhYDNUzni127ae6MHOw== dependencies: - "@aws-sdk/types" "3.468.0" - "@smithy/types" "^2.7.0" + "@aws-sdk/types" "3.485.0" + "@smithy/types" "^2.8.0" bowser "^2.11.0" tslib "^2.5.0" -"@aws-sdk/util-user-agent-node@3.470.0": - version "3.470.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.470.0.tgz#b78605f336859d6c3b5f573cff931ce41f83a27d" - integrity sha512-QxsZ9iVHcBB/XRdYvwfM5AMvNp58HfqkIrH88mY0cmxuvtlIGDfWjczdDrZMJk9y0vIq+cuoCHsGXHu7PyiEAQ== +"@aws-sdk/util-user-agent-node@3.485.0": + version "3.485.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.485.0.tgz#4c9134149a58410c79ffec1514bae70bd342946c" + integrity sha512-QF+aQ9jnDlPUlFBxBRqOylPf86xQuD3aEPpOErR+50qJawVvKa94uiAFdvtI9jv6hnRZmuFsTj2rsyytnbAYBA== dependencies: - "@aws-sdk/types" "3.468.0" - "@smithy/node-config-provider" "^2.1.8" - "@smithy/types" "^2.7.0" + "@aws-sdk/types" "3.485.0" + "@smithy/node-config-provider" "^2.1.9" + "@smithy/types" "^2.8.0" tslib "^2.5.0" "@aws-sdk/util-utf8-browser@^3.0.0": @@ -2085,37 +2085,37 @@ resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz#5981a8db18b56ba38ef0efb7d995b12aa7b51918" integrity sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ== -"@smithy/abort-controller@^2.0.15": - version "2.0.15" - resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-2.0.15.tgz#fcec9193da8b86eef1eedc3e71139a99c061db32" - integrity sha512-JkS36PIS3/UCbq/MaozzV7jECeL+BTt4R75bwY8i+4RASys4xOyUS1HsRyUNSqUXFP4QyCz5aNnh3ltuaxv+pw== +"@smithy/abort-controller@^2.0.16": + version "2.0.16" + resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-2.0.16.tgz#31a86748e0c55a97ead1d179040160c6fc55ba1b" + integrity sha512-4foO7738k8kM9flMHu3VLabqu7nPgvIj8TB909S0CnKx0YZz/dcDH3pZ/4JHdatfxlZdKF1JWOYCw9+v3HVVsw== dependencies: - "@smithy/types" "^2.7.0" + "@smithy/types" "^2.8.0" tslib "^2.5.0" -"@smithy/config-resolver@^2.0.22": - version "2.0.22" - resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-2.0.22.tgz#c994a7d09d3c6f9e9a97a029db2ae16a8fbb0838" - integrity sha512-YuPjsLnq6I5ZQBTx6BL5NsCLtcLel5YIMf3gDeEa+GSCXn5mgRXm+8XO8HtjR3Xf69b88aY4c7bwKQQS2i8vtA== +"@smithy/config-resolver@^2.0.23": + version "2.0.23" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-2.0.23.tgz#45496bea277c00d52efcdf88a5f483b3d6a7e62d" + integrity sha512-XakUqgtP2YY8Mi+Nlif5BiqJgWdvfxJafSpOSQeCOMizu+PUhE4fBQSy6xFcR+eInrwVadaABNxoJyGUMn15ew== dependencies: - "@smithy/node-config-provider" "^2.1.8" - "@smithy/types" "^2.7.0" + "@smithy/node-config-provider" "^2.1.9" + "@smithy/types" "^2.8.0" "@smithy/util-config-provider" "^2.1.0" - "@smithy/util-middleware" "^2.0.8" + "@smithy/util-middleware" "^2.0.9" tslib "^2.5.0" -"@smithy/core@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@smithy/core/-/core-1.2.1.tgz#2ee9b9894f3b2ce5eac4010ea1a85874b446f203" - integrity sha512-f6cwmMuHo7RIw/c184NBd2rGeGvGIX6p55HSrG5jfR3qkNYo80PHRfhzkJMq1+mv1ZjI5p8NhenWMMkIRJR4tw== +"@smithy/core@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-1.2.2.tgz#9e10d6055f2a05c2c677737b9b0c4f7507a80c75" + integrity sha512-uLjrskLT+mWb0emTR5QaiAIxVEU7ndpptDaVDrTwwhD+RjvHhjIiGQ3YL5jKk1a5VSDQUA2RGkXvJ6XKRcz6Dg== dependencies: - "@smithy/middleware-endpoint" "^2.2.3" - "@smithy/middleware-retry" "^2.0.25" - "@smithy/middleware-serde" "^2.0.15" - "@smithy/protocol-http" "^3.0.11" - "@smithy/smithy-client" "^2.2.0" - "@smithy/types" "^2.7.0" - "@smithy/util-middleware" "^2.0.8" + "@smithy/middleware-endpoint" "^2.3.0" + "@smithy/middleware-retry" "^2.0.26" + "@smithy/middleware-serde" "^2.0.16" + "@smithy/protocol-http" "^3.0.12" + "@smithy/smithy-client" "^2.2.1" + "@smithy/types" "^2.8.0" + "@smithy/util-middleware" "^2.0.9" tslib "^2.5.0" "@smithy/credential-provider-imds@^2.0.0": @@ -2129,15 +2129,15 @@ "@smithy/url-parser" "^2.0.11" tslib "^2.5.0" -"@smithy/credential-provider-imds@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-2.1.4.tgz#126adf69eac333f23f8683edbfabdc2b3b2deb15" - integrity sha512-cwPJN1fa1YOQzhBlTXRavABEYRRchci1X79QRwzaNLySnIMJfztyv1Zkst0iZPLMnpn8+CnHu3wOHS11J5Dr3A== +"@smithy/credential-provider-imds@^2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-2.1.5.tgz#18e238067c0d9c5598a12fabb13ce1545554e691" + integrity sha512-VfvE6Wg1MUWwpTZFBnUD7zxvPhLY8jlHCzu6bCjlIYoWgXCDzZAML76IlZUEf45nib3rjehnFgg0s1rgsuN/bg== dependencies: - "@smithy/node-config-provider" "^2.1.8" - "@smithy/property-provider" "^2.0.16" - "@smithy/types" "^2.7.0" - "@smithy/url-parser" "^2.0.15" + "@smithy/node-config-provider" "^2.1.9" + "@smithy/property-provider" "^2.0.17" + "@smithy/types" "^2.8.0" + "@smithy/url-parser" "^2.0.16" tslib "^2.5.0" "@smithy/eventstream-codec@^2.0.11": @@ -2150,33 +2150,33 @@ "@smithy/util-hex-encoding" "^2.0.0" tslib "^2.5.0" -"@smithy/fetch-http-handler@^2.3.1": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-2.3.1.tgz#aa055db5bf4d78acec97abe6ef24283fa2c18430" - integrity sha512-6MNk16fqb8EwcYY8O8WxB3ArFkLZ2XppsSNo1h7SQcFdDDwIumiJeO6wRzm7iB68xvsOQzsdQKbdtTieS3hfSQ== +"@smithy/fetch-http-handler@^2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-2.3.2.tgz#930ee473b2a43d0bcf62c3b659f38122442ad514" + integrity sha512-O9R/OlnAOTsnysuSDjt0v2q6DcSvCz5cCFC/CFAWWcLyBwJDeFyGTCTszgpQTb19+Fi8uRwZE5/3ziAQBFeDMQ== dependencies: - "@smithy/protocol-http" "^3.0.11" - "@smithy/querystring-builder" "^2.0.15" - "@smithy/types" "^2.7.0" + "@smithy/protocol-http" "^3.0.12" + "@smithy/querystring-builder" "^2.0.16" + "@smithy/types" "^2.8.0" "@smithy/util-base64" "^2.0.1" tslib "^2.5.0" -"@smithy/hash-node@^2.0.17": - version "2.0.17" - resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-2.0.17.tgz#9ce5e3f137143e3658759d31a16e068ef94a14fc" - integrity sha512-Il6WuBcI1nD+e2DM7tTADMf01wEPGK8PAhz4D+YmDUVaoBqlA+CaH2uDJhiySifmuKBZj748IfygXty81znKhw== +"@smithy/hash-node@^2.0.18": + version "2.0.18" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-2.0.18.tgz#4bf4ec392b5d6715426338b6828e6b25cd939bd5" + integrity sha512-gN2JFvAgnZCyDN9rJgcejfpK0uPPJrSortVVVVWsru9whS7eQey6+gj2eM5ln2i6rHNntIXzal1Fm9XOPuoaKA== dependencies: - "@smithy/types" "^2.7.0" + "@smithy/types" "^2.8.0" "@smithy/util-buffer-from" "^2.0.0" "@smithy/util-utf8" "^2.0.2" tslib "^2.5.0" -"@smithy/invalid-dependency@^2.0.15": - version "2.0.15" - resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-2.0.15.tgz#7653490047bf0ab6042fb812adfbcce857aa2d06" - integrity sha512-dlEKBFFwVfzA5QroHlBS94NpgYjXhwN/bFfun+7w3rgxNvVy79SK0w05iGc7UAeC5t+D7gBxrzdnD6hreZnDVQ== +"@smithy/invalid-dependency@^2.0.16": + version "2.0.16" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-2.0.16.tgz#b32a6284ef4ce48129d00a6d63f977ec3e05befb" + integrity sha512-apEHakT/kmpNo1VFHP4W/cjfeP9U0x5qvfsLJubgp7UM/gq4qYp0GbqdE7QhsjUaYvEnrftRqs7+YrtWreV0wA== dependencies: - "@smithy/types" "^2.7.0" + "@smithy/types" "^2.8.0" tslib "^2.5.0" "@smithy/is-array-buffer@^2.0.0": @@ -2186,78 +2186,78 @@ dependencies: tslib "^2.5.0" -"@smithy/middleware-content-length@^2.0.17": - version "2.0.17" - resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-2.0.17.tgz#13479173a15d1cd4224e3e21071a27c66a74b653" - integrity sha512-OyadvMcKC7lFXTNBa8/foEv7jOaqshQZkjWS9coEXPRZnNnihU/Ls+8ZuJwGNCOrN2WxXZFmDWhegbnM4vak8w== +"@smithy/middleware-content-length@^2.0.18": + version "2.0.18" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-2.0.18.tgz#a3b13beb300290f5d0d48ace0f818e44261356fa" + integrity sha512-ZJ9uKPTfxYheTKSKYB+GCvcj+izw9WGzRLhjn8n254q0jWLojUzn7Vw0l4R/Gq7Wdpf/qmk/ptD+6CCXHNVCaw== dependencies: - "@smithy/protocol-http" "^3.0.11" - "@smithy/types" "^2.7.0" + "@smithy/protocol-http" "^3.0.12" + "@smithy/types" "^2.8.0" tslib "^2.5.0" -"@smithy/middleware-endpoint@^2.2.3": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-2.2.3.tgz#4069ab6e8d1b485bc0d2384b30f7b37096111ec2" - integrity sha512-nYfxuq0S/xoAjdLbyn1ixeVB6cyH9wYCMtbbOCpcCRYR5u2mMtqUtVjjPAZ/DIdlK3qe0tpB0Q76szFGNuz+kQ== +"@smithy/middleware-endpoint@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-2.3.0.tgz#135c30f38087ba52e692a73212854d0809ce1168" + integrity sha512-VsOAG2YQ8ykjSmKO+CIXdJBIWFo6AAvG6Iw95BakBTqk66/4BI7XyqLevoNSq/lZ6NgZv24sLmrcIN+fLDWBCg== dependencies: - "@smithy/middleware-serde" "^2.0.15" - "@smithy/node-config-provider" "^2.1.8" - "@smithy/shared-ini-file-loader" "^2.2.7" - "@smithy/types" "^2.7.0" - "@smithy/url-parser" "^2.0.15" - "@smithy/util-middleware" "^2.0.8" + "@smithy/middleware-serde" "^2.0.16" + "@smithy/node-config-provider" "^2.1.9" + "@smithy/shared-ini-file-loader" "^2.2.8" + "@smithy/types" "^2.8.0" + "@smithy/url-parser" "^2.0.16" + "@smithy/util-middleware" "^2.0.9" tslib "^2.5.0" -"@smithy/middleware-retry@^2.0.25": - version "2.0.25" - resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-2.0.25.tgz#ae948f4a1ad5968bc315f07df930a55c09ffe040" - integrity sha512-FXhafCPvx/9L9OgHJ3cdo/pD1f7ngC7DKsjDV2J7k6LO/Yl69POoBLk4sI1OZPUGc4dfxriENlTma9Nj1hI+IQ== +"@smithy/middleware-retry@^2.0.26": + version "2.0.26" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-2.0.26.tgz#894cf86b0f5bc742e09c52df8df4c2941fbd9883" + integrity sha512-Qzpxo0U5jfNiq9iD38U3e2bheXwvTEX4eue9xruIvEgh+UKq6dKuGqcB66oBDV7TD/mfoJi9Q/VmaiqwWbEp7A== dependencies: - "@smithy/node-config-provider" "^2.1.8" - "@smithy/protocol-http" "^3.0.11" - "@smithy/service-error-classification" "^2.0.8" - "@smithy/smithy-client" "^2.2.0" - "@smithy/types" "^2.7.0" - "@smithy/util-middleware" "^2.0.8" - "@smithy/util-retry" "^2.0.8" + "@smithy/node-config-provider" "^2.1.9" + "@smithy/protocol-http" "^3.0.12" + "@smithy/service-error-classification" "^2.0.9" + "@smithy/smithy-client" "^2.2.1" + "@smithy/types" "^2.8.0" + "@smithy/util-middleware" "^2.0.9" + "@smithy/util-retry" "^2.0.9" tslib "^2.5.0" uuid "^8.3.2" -"@smithy/middleware-serde@^2.0.15": - version "2.0.15" - resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-2.0.15.tgz#9deac4daad1f2a60d5c4e7097658f9ae2eb0a33f" - integrity sha512-FOZRFk/zN4AT4wzGuBY+39XWe+ZnCFd0gZtyw3f9Okn2CJPixl9GyWe98TIaljeZdqWkgrzGyPre20AcW2UMHQ== +"@smithy/middleware-serde@^2.0.16": + version "2.0.16" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-2.0.16.tgz#a127e7fa48c0106bd7a81e1ea27e7193cb08e701" + integrity sha512-5EAd4t30pcc4M8TSSGq7q/x5IKrxfXR5+SrU4bgxNy7RPHQo2PSWBUco9C+D9Tfqp/JZvprRpK42dnupZafk2g== dependencies: - "@smithy/types" "^2.7.0" + "@smithy/types" "^2.8.0" tslib "^2.5.0" -"@smithy/middleware-stack@^2.0.9": - version "2.0.9" - resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-2.0.9.tgz#60e51697c74258fac087bc739d940f524921a15f" - integrity sha512-bCB5dUtGQ5wh7QNL2ELxmDc6g7ih7jWU3Kx6MYH1h4mZbv9xL3WyhKHojRltThCB1arLPyTUFDi+x6fB/oabtA== +"@smithy/middleware-stack@^2.0.10": + version "2.0.10" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-2.0.10.tgz#fb7c660dcc921b61a77e6cb39ed3eada9ed38585" + integrity sha512-I2rbxctNq9FAPPEcuA1ntZxkTKOPQFy7YBPOaD/MLg1zCvzv21CoNxR0py6J8ZVC35l4qE4nhxB0f7TF5/+Ldw== dependencies: - "@smithy/types" "^2.7.0" + "@smithy/types" "^2.8.0" tslib "^2.5.0" -"@smithy/node-config-provider@^2.1.1", "@smithy/node-config-provider@^2.1.8": - version "2.1.8" - resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-2.1.8.tgz#8cab8f1172c8cd1146e7997292786909abcae763" - integrity sha512-+w26OKakaBUGp+UG+dxYZtFb5fs3tgHg3/QrRrmUZj+rl3cIuw840vFUXX35cVPTUCQIiTqmz7CpVF7+hdINdQ== +"@smithy/node-config-provider@^2.1.1", "@smithy/node-config-provider@^2.1.9": + version "2.1.9" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-2.1.9.tgz#2e9e5ee7c4412be6696a74b26f9ed2a66e2a5fb4" + integrity sha512-tUyW/9xrRy+s7RXkmQhgYkAPMpTIF8izK4orhHjNFEKR3QZiOCbWB546Y8iB/Fpbm3O9+q0Af9rpywLKJOwtaQ== dependencies: - "@smithy/property-provider" "^2.0.16" - "@smithy/shared-ini-file-loader" "^2.2.7" - "@smithy/types" "^2.7.0" + "@smithy/property-provider" "^2.0.17" + "@smithy/shared-ini-file-loader" "^2.2.8" + "@smithy/types" "^2.8.0" tslib "^2.5.0" -"@smithy/node-http-handler@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-2.2.1.tgz#23f6540e565edcae8c558a854fffde3d003451c0" - integrity sha512-8iAKQrC8+VFHPAT8pg4/j6hlsTQh+NKOWlctJBrYtQa4ExcxX7aSg3vdQ2XLoYwJotFUurg/NLqFCmZaPRrogw== +"@smithy/node-http-handler@^2.2.2": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-2.2.2.tgz#f9f8cd49f270bc50a0de8a4587bbdaae1c7c4e80" + integrity sha512-XO58TO/Eul/IBQKFKaaBtXJi0ItEQQCT+NI4IiKHCY/4KtqaUT6y/wC1EvDqlA9cP7Dyjdj7FdPs4DyynH3u7g== dependencies: - "@smithy/abort-controller" "^2.0.15" - "@smithy/protocol-http" "^3.0.11" - "@smithy/querystring-builder" "^2.0.15" - "@smithy/types" "^2.7.0" + "@smithy/abort-controller" "^2.0.16" + "@smithy/protocol-http" "^3.0.12" + "@smithy/querystring-builder" "^2.0.16" + "@smithy/types" "^2.8.0" tslib "^2.5.0" "@smithy/property-provider@^2.0.0", "@smithy/property-provider@^2.0.12": @@ -2268,45 +2268,45 @@ "@smithy/types" "^2.3.5" tslib "^2.5.0" -"@smithy/property-provider@^2.0.16": +"@smithy/property-provider@^2.0.17": + version "2.0.17" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-2.0.17.tgz#288475021613649811dc79a9fab4894be01cd069" + integrity sha512-+VkeZbVu7qtQ2DjI48Qwaf9fPOr3gZIwxQpuLJgRRSkWsdSvmaTCxI3gzRFKePB63Ts9r4yjn4HkxSCSkdWmcQ== + dependencies: + "@smithy/types" "^2.8.0" + tslib "^2.5.0" + +"@smithy/protocol-http@^3.0.12": + version "3.0.12" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-3.0.12.tgz#9f606efd191593f6dbde58fa822465b92b8afbca" + integrity sha512-Xz4iaqLiaBfbQpB9Hgi3VcZYbP7xRDXYhd8XWChh4v94uw7qwmvlxdU5yxzfm6ACJM66phHrTbS5TVvj5uQ72w== + dependencies: + "@smithy/types" "^2.8.0" + tslib "^2.5.0" + +"@smithy/querystring-builder@^2.0.16": version "2.0.16" - resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-2.0.16.tgz#0c15ea8a3e8c8e7012bf5877c79ce754f7d2c06e" - integrity sha512-28Ky0LlOqtEjwg5CdHmwwaDRHcTWfPRzkT6HrhwOSRS2RryAvuDfJrZpM+BMcrdeCyEg1mbcgIMoqTla+rdL8Q== + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-2.0.16.tgz#1a9a02b1fb938688cdab5e585cb7c62c8054bc41" + integrity sha512-Q/GsJT0C0mijXMRs7YhZLLCP5FcuC4797lYjKQkME5CZohnLC4bEhylAd2QcD3gbMKNjCw8+T2I27WKiV/wToA== dependencies: - "@smithy/types" "^2.7.0" - tslib "^2.5.0" - -"@smithy/protocol-http@^3.0.11": - version "3.0.11" - resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-3.0.11.tgz#a9ea712fe7cc3375378ac68d9168a7b6cd0b6f65" - integrity sha512-3ziB8fHuXIRamV/akp/sqiWmNPR6X+9SB8Xxnozzj+Nq7hSpyKdFHd1FLpBkgfGFUTzzcBJQlDZPSyxzmdcx5A== - dependencies: - "@smithy/types" "^2.7.0" - tslib "^2.5.0" - -"@smithy/querystring-builder@^2.0.15": - version "2.0.15" - resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-2.0.15.tgz#aa8c889bcaef274b8345be4ddabae3bfedf2cf33" - integrity sha512-e1q85aT6HutvouOdN+dMsN0jcdshp50PSCvxDvo6aIM57LqeXimjfONUEgfqQ4IFpYWAtVixptyIRE5frMp/2A== - dependencies: - "@smithy/types" "^2.7.0" + "@smithy/types" "^2.8.0" "@smithy/util-uri-escape" "^2.0.0" tslib "^2.5.0" -"@smithy/querystring-parser@^2.0.15": - version "2.0.15" - resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-2.0.15.tgz#46c8806a145f46636e4aee2a5d79e7ba68161a4c" - integrity sha512-jbBvoK3cc81Cj1c1TH1qMYxNQKHrYQ2DoTntN9FBbtUWcGhc+T4FP6kCKYwRLXyU4AajwGIZstvNAmIEgUUNTQ== +"@smithy/querystring-parser@^2.0.16": + version "2.0.16" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-2.0.16.tgz#90d9589539ffe8fb4864c8bf6f1f1c9def962a40" + integrity sha512-c4ueAuL6BDYKWpkubjrQthZKoC3L5kql5O++ovekNxiexRXTlLIVlCR4q3KziOktLIw66EU9SQljPXd/oN6Okg== dependencies: - "@smithy/types" "^2.7.0" + "@smithy/types" "^2.8.0" tslib "^2.5.0" -"@smithy/service-error-classification@^2.0.8": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-2.0.8.tgz#c9e421312a2def84da025c5efe6de06679c5be95" - integrity sha512-jCw9+005im8tsfYvwwSc4TTvd29kXRFkH9peQBg5R/4DD03ieGm6v6Hpv9nIAh98GwgYg1KrztcINC1s4o7/hg== +"@smithy/service-error-classification@^2.0.9": + version "2.0.9" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-2.0.9.tgz#4459433f6727f1b7e953a9bab189672b3b157224" + integrity sha512-0K+8GvtwI7VkGmmInPydM2XZyBfIqLIbfR7mDQ+oPiz8mIinuHbV6sxOLdvX1Jv/myk7XTK9orgt3tuEpBu/zg== dependencies: - "@smithy/types" "^2.7.0" + "@smithy/types" "^2.8.0" "@smithy/shared-ini-file-loader@^2.0.6": version "2.2.0" @@ -2316,12 +2316,12 @@ "@smithy/types" "^2.3.5" tslib "^2.5.0" -"@smithy/shared-ini-file-loader@^2.2.7": - version "2.2.7" - resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.2.7.tgz#4a3bd469703d02c3cc8e36dcba2238c06efa12cb" - integrity sha512-0Qt5CuiogIuvQIfK+be7oVHcPsayLgfLJGkPlbgdbl0lD28nUKu4p11L+UG3SAEsqc9UsazO+nErPXw7+IgDpQ== +"@smithy/shared-ini-file-loader@^2.2.8": + version "2.2.8" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.2.8.tgz#b5fa153d4920a3c740215c60ad1667972d67a164" + integrity sha512-E62byatbwSWrtq9RJ7xN40tqrRKDGrEL4EluyNpaIDvfvet06a/QC58oHw2FgVaEgkj0tXZPjZaKrhPfpoU0qw== dependencies: - "@smithy/types" "^2.7.0" + "@smithy/types" "^2.8.0" tslib "^2.5.0" "@smithy/signature-v4@^2.0.0": @@ -2338,32 +2338,32 @@ "@smithy/util-utf8" "^2.0.0" tslib "^2.5.0" -"@smithy/smithy-client@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-2.2.0.tgz#9865981a2f49dd0e9ef68193aebcd5654cdd7f00" - integrity sha512-C/bkNue5H5Obgl83SnlBt4v6VM68CqIjIELh3vAabud87xFYznLNKtj6Qb69Z+QOnLp9T+We++sEem/f2AHE+Q== +"@smithy/smithy-client@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-2.2.1.tgz#ed1aa11f36dae2ca9b3eabcbc498bcc96d79fdfd" + integrity sha512-SpD7FLK92XV2fon2hMotaNDa2w5VAy5/uVjP9WFmjGSgWM8pTPVkHcDl1yFs5Z8LYbij0FSz+DbCBK6i+uXXUA== dependencies: - "@smithy/middleware-endpoint" "^2.2.3" - "@smithy/middleware-stack" "^2.0.9" - "@smithy/protocol-http" "^3.0.11" - "@smithy/types" "^2.7.0" - "@smithy/util-stream" "^2.0.23" + "@smithy/middleware-endpoint" "^2.3.0" + "@smithy/middleware-stack" "^2.0.10" + "@smithy/protocol-http" "^3.0.12" + "@smithy/types" "^2.8.0" + "@smithy/util-stream" "^2.0.24" tslib "^2.5.0" -"@smithy/types@^2.3.5", "@smithy/types@^2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@smithy/types/-/types-2.7.0.tgz#6ed9ba5bff7c4d28c980cff967e6d8456840a4f3" - integrity sha512-1OIFyhK+vOkMbu4aN2HZz/MomREkrAC/HqY5mlJMUJfGrPRwijJDTeiN8Rnj9zUaB8ogXAfIOtZrrgqZ4w7Wnw== +"@smithy/types@^2.3.5", "@smithy/types@^2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-2.8.0.tgz#bdbaa0a54c9c3538d6c763c6f32d3e4f76fe0df9" + integrity sha512-h9sz24cFgt/W1Re22OlhQKmUZkNh244ApgRsUDYinqF8R+QgcsBIX344u2j61TPshsTz3CvL6HYU1DnQdsSrHA== dependencies: tslib "^2.5.0" -"@smithy/url-parser@^2.0.11", "@smithy/url-parser@^2.0.15": - version "2.0.15" - resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-2.0.15.tgz#878d9b61f9eac8834cb611cf1a8a0e5d9a48038c" - integrity sha512-sADUncUj9rNbOTrdDGm4EXlUs0eQ9dyEo+V74PJoULY4jSQxS+9gwEgsPYyiu8PUOv16JC/MpHonOgqP/IEDZA== +"@smithy/url-parser@^2.0.11", "@smithy/url-parser@^2.0.16": + version "2.0.16" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-2.0.16.tgz#25f860effe465acbbe61beb69b6def052878ee58" + integrity sha512-Wfz5WqAoRT91TjRy1JeLR0fXtkIXHGsMbgzKFTx7E68SrZ55TB8xoG+vm11Ru4gheFTMXjAjwAxv1jQdC+pAQA== dependencies: - "@smithy/querystring-parser" "^2.0.15" - "@smithy/types" "^2.7.0" + "@smithy/querystring-parser" "^2.0.16" + "@smithy/types" "^2.8.0" tslib "^2.5.0" "@smithy/util-base64@^2.0.1": @@ -2403,37 +2403,37 @@ dependencies: tslib "^2.5.0" -"@smithy/util-defaults-mode-browser@^2.0.23": - version "2.0.23" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.0.23.tgz#27bce42b7a55974ed4aff5b2b870256ce383613a" - integrity sha512-2u+7t7Wgz1jlfsf6il3pz6DIzyJHS3qrnNnmATICm00pQeqp2D4kUOYauOgKGIeKgVpwzzq8+hFQe749r3xR5w== +"@smithy/util-defaults-mode-browser@^2.0.24": + version "2.0.24" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.0.24.tgz#bfa8fa441db0d0d309c11d091ca9746f2b8e4797" + integrity sha512-TsP5mBuLgO2C21+laNG2nHYZEyUdkbGURv2tHvSuQQxLz952MegX95uwdxOY2jR2H4GoKuVRfdJq7w4eIjGYeg== dependencies: - "@smithy/property-provider" "^2.0.16" - "@smithy/smithy-client" "^2.2.0" - "@smithy/types" "^2.7.0" + "@smithy/property-provider" "^2.0.17" + "@smithy/smithy-client" "^2.2.1" + "@smithy/types" "^2.8.0" bowser "^2.11.0" tslib "^2.5.0" -"@smithy/util-defaults-mode-node@^2.0.31": - version "2.0.31" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.31.tgz#1b7dc36f695375cead8e8fa7de5e90c8bfcd0df8" - integrity sha512-ZwdjAJAFkkQQ4hdE8HOcxFAWC3GPFXQ3yQ8IBwHH5nQBlr9q+p5eRQ7Y8iRRORJe4vksR+NASRXZ+E81Us1aXQ== +"@smithy/util-defaults-mode-node@^2.0.32": + version "2.0.32" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.32.tgz#a0665ef2feed845de7825059072e312e22393698" + integrity sha512-d0S33dXA2cq1NyorVMroMrEtqKMr3MlyLITcfTBf9pXiigYiPMOtbSI7czHIfDbuVuM89Cg0urAgpt73QV9mPQ== dependencies: - "@smithy/config-resolver" "^2.0.22" - "@smithy/credential-provider-imds" "^2.1.4" - "@smithy/node-config-provider" "^2.1.8" - "@smithy/property-provider" "^2.0.16" - "@smithy/smithy-client" "^2.2.0" - "@smithy/types" "^2.7.0" + "@smithy/config-resolver" "^2.0.23" + "@smithy/credential-provider-imds" "^2.1.5" + "@smithy/node-config-provider" "^2.1.9" + "@smithy/property-provider" "^2.0.17" + "@smithy/smithy-client" "^2.2.1" + "@smithy/types" "^2.8.0" tslib "^2.5.0" -"@smithy/util-endpoints@^1.0.7": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-1.0.7.tgz#5a258ac7838dea085660060b515cd2d19f19a4bc" - integrity sha512-Q2gEind3jxoLk6hdKWyESMU7LnXz8aamVwM+VeVjOYzYT1PalGlY/ETa48hv2YpV4+YV604y93YngyzzzQ4IIA== +"@smithy/util-endpoints@^1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-1.0.8.tgz#10ec9b228e96fc67b42ed06dabdab118a5869532" + integrity sha512-l8zVuyZZ61IzZBYp5NWvsAhbaAjYkt0xg9R4xUASkg5SEeTT2meHOJwJHctKMFUXe4QZbn9fR2MaBYjP2119+w== dependencies: - "@smithy/node-config-provider" "^2.1.8" - "@smithy/types" "^2.7.0" + "@smithy/node-config-provider" "^2.1.9" + "@smithy/types" "^2.8.0" tslib "^2.5.0" "@smithy/util-hex-encoding@^2.0.0": @@ -2451,31 +2451,31 @@ "@smithy/types" "^2.3.5" tslib "^2.5.0" -"@smithy/util-middleware@^2.0.8": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-2.0.8.tgz#2ec1da1190d09b69512ce0248ebd5e819e3c8a92" - integrity sha512-qkvqQjM8fRGGA8P2ydWylMhenCDP8VlkPn8kiNuFEaFz9xnUKC2irfqsBSJrfrOB9Qt6pQsI58r3zvvumhFMkw== +"@smithy/util-middleware@^2.0.9": + version "2.0.9" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-2.0.9.tgz#54a372fa723ace66046cdf91439fb1648a246d5c" + integrity sha512-PnCnBJ07noMX1lMDTEefmxSlusWJUiLfrme++MfK5TD0xz8NYmakgoXy5zkF/16zKGmiwOeKAztWT/Vjk1KRIQ== dependencies: - "@smithy/types" "^2.7.0" + "@smithy/types" "^2.8.0" tslib "^2.5.0" -"@smithy/util-retry@^2.0.8": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-2.0.8.tgz#61f8db11e4fe60975cb9fb2eada173f5024a06f3" - integrity sha512-cQTPnVaVFMjjS6cb44WV2yXtHVyXDC5icKyIbejMarJEApYeJWpBU3LINTxHqp/tyLI+MZOUdosr2mZ3sdziNg== +"@smithy/util-retry@^2.0.9": + version "2.0.9" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-2.0.9.tgz#ef6d6e41bcc5df330b76cca913d5e637c70497fc" + integrity sha512-46BFWe9RqB6g7f4mxm3W3HlqknqQQmWHKlhoqSFZuGNuiDU5KqmpebMbvC3tjTlUkqn4xa2Z7s3Hwb0HNs5scw== dependencies: - "@smithy/service-error-classification" "^2.0.8" - "@smithy/types" "^2.7.0" + "@smithy/service-error-classification" "^2.0.9" + "@smithy/types" "^2.8.0" tslib "^2.5.0" -"@smithy/util-stream@^2.0.23": - version "2.0.23" - resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-2.0.23.tgz#468ad29913d091092317cfea2d8ac5b866326a07" - integrity sha512-OJMWq99LAZJUzUwTk+00plyxX3ESktBaGPhqNIEVab+53gLULiWN9B/8bRABLg0K6R6Xg4t80uRdhk3B/LZqMQ== +"@smithy/util-stream@^2.0.24": + version "2.0.24" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-2.0.24.tgz#fa896c8df828ce7758963b758c1f374407d812be" + integrity sha512-hRpbcRrOxDriMVmbya+Mv77VZVupxRAsfxVDKS54XuiURhdiwCUXJP0X1iJhHinuUf6n8pBF0MkG9C8VooMnWw== dependencies: - "@smithy/fetch-http-handler" "^2.3.1" - "@smithy/node-http-handler" "^2.2.1" - "@smithy/types" "^2.7.0" + "@smithy/fetch-http-handler" "^2.3.2" + "@smithy/node-http-handler" "^2.2.2" + "@smithy/types" "^2.8.0" "@smithy/util-base64" "^2.0.1" "@smithy/util-buffer-from" "^2.0.0" "@smithy/util-hex-encoding" "^2.0.0" From c07d36b6c5dac6e94c08bc52b070a0c6056d7a5d Mon Sep 17 00:00:00 2001 From: FreeSewing bot Date: Thu, 4 Jan 2024 14:59:04 +0100 Subject: [PATCH 07/46] feat: New showcase post lumira-leggings-with-cycling-chamois by Natalia --- .../lumira-leggings-with-cycling-chamois/en.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 markdown/org/showcase/lumira-leggings-with-cycling-chamois/en.md diff --git a/markdown/org/showcase/lumira-leggings-with-cycling-chamois/en.md b/markdown/org/showcase/lumira-leggings-with-cycling-chamois/en.md new file mode 100644 index 00000000000..c1f0b2f9705 --- /dev/null +++ b/markdown/org/showcase/lumira-leggings-with-cycling-chamois/en.md @@ -0,0 +1,13 @@ +--- +title: "Lumira leggings with cycling chamois" +caption: "This is Lumira's designer, Wouter, testing out his new leggings" +date: 20240104 +intro: "The Lumira leggings are designed with many options, including a waistband, optional gusset, and bulge option." +designs: ["lumira"] +maker: Natalia +--- + +The Lumira leggings are designed with many options, including a waistband, optional gusset, and bulge option. This particular version is with the cycling chamois, but the same design works for yoga leggings and anything in between too. We're all excited to fill our closets with Lumira variations! + +![Another view of Lumira](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-lumira-leggings-with-cycling-chamois-1/public "Another view of Lumira") + From 38d5c2f574884b3bc96674432670835d162dd31e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Jan 2024 04:58:42 +0000 Subject: [PATCH 08/46] build(deps-dev): bump @commitlint/cli from 18.4.3 to 18.4.4 Bumps [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) from 18.4.3 to 18.4.4. - [Release notes](https://github.com/conventional-changelog/commitlint/releases) - [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/cli/CHANGELOG.md) - [Commits](https://github.com/conventional-changelog/commitlint/commits/v18.4.4/@commitlint/cli) --- updated-dependencies: - dependency-name: "@commitlint/cli" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 194 +++++++++++++++++++++++++----------------------------- 1 file changed, 90 insertions(+), 104 deletions(-) diff --git a/yarn.lock b/yarn.lock index b14406057ed..193c13fb68f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -909,15 +909,15 @@ integrity sha512-htzFO1Zc57S8kgdRK9mLcPVTW1BY2ijfH7Dk2CeZmspTWKdKqSo1iwmqrq2WtRjFlo8aRZYgLX0wFrDXF/9DLA== "@commitlint/cli@^18.1.0": - version "18.4.3" - resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-18.4.3.tgz#5b6112035f2cb17b76244cde5f1587ab853c2365" - integrity sha512-zop98yfB3A6NveYAZ3P1Mb6bIXuCeWgnUfVNkH4yhIMQpQfzFwseadazOuSn0OOfTt0lWuFauehpm9GcqM5lww== + version "18.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-18.4.4.tgz#24bdb295f0e9e87dfe5371e9a16aacac92017c5d" + integrity sha512-Ro3wIo//fV3XiV1EkdpHog6huaEyNcUAVrSmtgKqYM5g982wOWmP4FXvEDFwRMVgz878CNBvvCc33dMZ5AQJ/g== dependencies: - "@commitlint/format" "^18.4.3" - "@commitlint/lint" "^18.4.3" - "@commitlint/load" "^18.4.3" - "@commitlint/read" "^18.4.3" - "@commitlint/types" "^18.4.3" + "@commitlint/format" "^18.4.4" + "@commitlint/lint" "^18.4.4" + "@commitlint/load" "^18.4.4" + "@commitlint/read" "^18.4.4" + "@commitlint/types" "^18.4.4" execa "^5.0.0" lodash.isfunction "^3.0.9" resolve-from "5.0.0" @@ -931,67 +931,66 @@ dependencies: conventional-changelog-conventionalcommits "^7.0.2" -"@commitlint/config-validator@^18.4.3": - version "18.4.3" - resolved "https://registry.yarnpkg.com/@commitlint/config-validator/-/config-validator-18.4.3.tgz#cf71d36383cd5241e3b74097e7110514d5d43860" - integrity sha512-FPZZmTJBARPCyef9ohRC9EANiQEKSWIdatx5OlgeHKu878dWwpyeFauVkhzuBRJFcCA4Uvz/FDtlDKs008IHcA== +"@commitlint/config-validator@^18.4.4": + version "18.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/config-validator/-/config-validator-18.4.4.tgz#b1f009e4a988156c938160b17a8a619403a47433" + integrity sha512-/QI8KIg/h7O0Eus36fPcEcO3QPBcdXuGfZeCF5m15k0EB2bcU8s6pHNTNEa6xz9PrAefHCL+yzRJj7w20T6Mow== dependencies: - "@commitlint/types" "^18.4.3" + "@commitlint/types" "^18.4.4" ajv "^8.11.0" -"@commitlint/ensure@^18.4.3": - version "18.4.3" - resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-18.4.3.tgz#1193a6418fe05edc8d5eff91f3129db345fa1d38" - integrity sha512-MI4fwD9TWDVn4plF5+7JUyLLbkOdzIRBmVeNlk4dcGlkrVA+/l5GLcpN66q9LkFsFv6G2X31y89ApA3hqnqIFg== +"@commitlint/ensure@^18.4.4": + version "18.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-18.4.4.tgz#5e142e489e32f6a22865cea05ca369a95a4b77a1" + integrity sha512-KjD19p6julB5WrQL+Cd8p+AePwpl1XzGAjB0jnuFMKWtji9L7ucCZUKDstGjlkBZGGzH/nvdB8K+bh5K27EVUg== dependencies: - "@commitlint/types" "^18.4.3" + "@commitlint/types" "^18.4.4" lodash.camelcase "^4.3.0" lodash.kebabcase "^4.1.1" lodash.snakecase "^4.1.1" lodash.startcase "^4.4.0" lodash.upperfirst "^4.3.1" -"@commitlint/execute-rule@^18.4.3": - version "18.4.3" - resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-18.4.3.tgz#4dca5412dc8fdeb4210432961f209d9eb65008f5" - integrity sha512-t7FM4c+BdX9WWZCPrrbV5+0SWLgT3kCq7e7/GhHCreYifg3V8qyvO127HF796vyFql75n4TFF+5v1asOOWkV1Q== +"@commitlint/execute-rule@^18.4.4": + version "18.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-18.4.4.tgz#ade986742c1944c8162a54288747e54a8c6146b5" + integrity sha512-a37Nd3bDQydtg9PCLLWM9ZC+GO7X5i4zJvrggJv5jBhaHsXeQ9ZWdO6ODYR+f0LxBXXNYK3geYXJrCWUCP8JEg== -"@commitlint/format@^18.4.3": - version "18.4.3" - resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-18.4.3.tgz#3478bc2980eb178e13881834e290f12362ec6357" - integrity sha512-8b+ItXYHxAhRAXFfYki5PpbuMMOmXYuzLxib65z2XTqki59YDQJGpJ/wB1kEE5MQDgSTQWtKUrA8n9zS/1uIDQ== +"@commitlint/format@^18.4.4": + version "18.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-18.4.4.tgz#51996ba0a7eac14f7f8991cff8700e4a2fd86ba7" + integrity sha512-2v3V5hVlv0R3pe7p66IX5F7cjeVvGM5JqITRIbBCFvGHPJ/CG74rjTkAu0RBEiIhlk3eOaLjVGq3d5falPkLBA== dependencies: - "@commitlint/types" "^18.4.3" + "@commitlint/types" "^18.4.4" chalk "^4.1.0" -"@commitlint/is-ignored@^18.4.3": - version "18.4.3" - resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-18.4.3.tgz#443e1791af9a13a62299c54f836ad25da42f2663" - integrity sha512-ZseOY9UfuAI32h9w342Km4AIaTieeFskm2ZKdrG7r31+c6zGBzuny9KQhwI9puc0J3GkUquEgKJblCl7pMnjwg== +"@commitlint/is-ignored@^18.4.4": + version "18.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-18.4.4.tgz#3fbf2a55a960ccf037e79ad4610091a693800680" + integrity sha512-rXWes9owKBTjfTr6Od7YlflRg4N+ngkOH+dUZhk0qL/XQb26mHz0EgVgdixMVBac1OsohRwJaLmVHX+5F6vfmg== dependencies: - "@commitlint/types" "^18.4.3" + "@commitlint/types" "^18.4.4" semver "7.5.4" -"@commitlint/lint@^18.4.3": - version "18.4.3" - resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-18.4.3.tgz#1c5a912c2c3785e21d499821c4b70c58ff9a2cfb" - integrity sha512-18u3MRgEXNbnYkMOWoncvq6QB8/90m9TbERKgdPqVvS+zQ/MsuRhdvHYCIXGXZxUb0YI4DV2PC4bPneBV/fYuA== +"@commitlint/lint@^18.4.4": + version "18.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-18.4.4.tgz#730b28a837ae26009645ed3b0a0858879c6daf23" + integrity sha512-SoyQstVxMY5Z4GnFRtRzy+NWYb+yVseXgir+7BxnpB59oH05C9XztRrhDw6OnkNeXhjINTpi1HLnuY7So+CaAQ== dependencies: - "@commitlint/is-ignored" "^18.4.3" - "@commitlint/parse" "^18.4.3" - "@commitlint/rules" "^18.4.3" - "@commitlint/types" "^18.4.3" + "@commitlint/is-ignored" "^18.4.4" + "@commitlint/parse" "^18.4.4" + "@commitlint/rules" "^18.4.4" + "@commitlint/types" "^18.4.4" -"@commitlint/load@^18.4.3": - version "18.4.3" - resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-18.4.3.tgz#de156698ddf6e9719ecc49159890834490f61bff" - integrity sha512-v6j2WhvRQJrcJaj5D+EyES2WKTxPpxENmNpNG3Ww8MZGik3jWRXtph0QTzia5ZJyPh2ib5aC/6BIDymkUUM58Q== +"@commitlint/load@^18.4.4": + version "18.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-18.4.4.tgz#1f73d1a11337c68b6cf990e111ca2a742d076041" + integrity sha512-RaDIa9qwOw2xRJ3Jr2DBXd14rmnHJIX2XdZF4kmoF1rgsg/+7cvrExLSUNAkQUNimyjCn1b/bKX2Omm+GdY0XQ== dependencies: - "@commitlint/config-validator" "^18.4.3" - "@commitlint/execute-rule" "^18.4.3" - "@commitlint/resolve-extends" "^18.4.3" - "@commitlint/types" "^18.4.3" - "@types/node" "^18.11.9" + "@commitlint/config-validator" "^18.4.4" + "@commitlint/execute-rule" "^18.4.4" + "@commitlint/resolve-extends" "^18.4.4" + "@commitlint/types" "^18.4.4" chalk "^4.1.0" cosmiconfig "^8.3.6" cosmiconfig-typescript-loader "^5.0.0" @@ -1000,70 +999,69 @@ lodash.uniq "^4.5.0" resolve-from "^5.0.0" -"@commitlint/message@^18.4.3": - version "18.4.3" - resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-18.4.3.tgz#1e0985ae7c751a620f01b2cfe8f0e875354805e2" - integrity sha512-ddJ7AztWUIoEMAXoewx45lKEYEOeOlBVWjk8hDMUGpprkuvWULpaXczqdjwVtjrKT3JhhN+gMs8pm5G3vB2how== +"@commitlint/message@^18.4.4": + version "18.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-18.4.4.tgz#811682a0d147a24e5c467acdb52071434df2b9f5" + integrity sha512-lHF95mMDYgAI1LBXveJUyg4eLaMXyOqJccCK3v55ZOEUsMPrDi8upqDjd/NmzWmESYihaOMBTAnxm+6oD1WoDQ== -"@commitlint/parse@^18.4.3": - version "18.4.3" - resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-18.4.3.tgz#f96515b0fa9b7a05dca52be8b214ab50eadfd9c9" - integrity sha512-eoH7CXM9L+/Me96KVcfJ27EIIbA5P9sqw3DqjJhRYuhaULIsPHFs5S5GBDCqT0vKZQDx0DgxhMpW6AQbnKrFtA== +"@commitlint/parse@^18.4.4": + version "18.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-18.4.4.tgz#5c8f515d4dbebe9b7ccfcd1701e58446e2bec6da" + integrity sha512-99G7dyn/OoyNWXJni0Ki0K3aJd01pEb/Im/Id6y4X7PN+kGOahjz2z/cXYYHn7xDdooqFVdiVrVLeChfgpWZ2g== dependencies: - "@commitlint/types" "^18.4.3" + "@commitlint/types" "^18.4.4" conventional-changelog-angular "^7.0.0" conventional-commits-parser "^5.0.0" -"@commitlint/read@^18.4.3": - version "18.4.3" - resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-18.4.3.tgz#269fb814bb914bf23c8719690bd01c9ad4a6c09a" - integrity sha512-H4HGxaYA6OBCimZAtghL+B+SWu8ep4X7BwgmedmqWZRHxRLcX2q0bWBtUm5FsMbluxbOfrJwOs/Z0ah4roP/GQ== +"@commitlint/read@^18.4.4": + version "18.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-18.4.4.tgz#7f6848edd3210bf82e6aaa0cd30e72e7e669e009" + integrity sha512-r58JbWky4gAFPea/CZmvlqP9Ehbs+8gSEUqhIJOojKzTc3xlxFnZUDVPcEnnaqzQEEoV6C69VW7xuzdcBlu/FQ== dependencies: - "@commitlint/top-level" "^18.4.3" - "@commitlint/types" "^18.4.3" - fs-extra "^11.0.0" + "@commitlint/top-level" "^18.4.4" + "@commitlint/types" "^18.4.4" git-raw-commits "^2.0.11" minimist "^1.2.6" -"@commitlint/resolve-extends@^18.4.3": - version "18.4.3" - resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-18.4.3.tgz#741c42381ea48f4624209bfc0da0a15b5fba75b5" - integrity sha512-30sk04LZWf8+SDgJrbJCjM90gTg2LxsD9cykCFeFu+JFHvBFq5ugzp2eO/DJGylAdVaqxej3c7eTSE64hR/lnw== +"@commitlint/resolve-extends@^18.4.4": + version "18.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-18.4.4.tgz#fa2975c856d77ea1931e0e3673cf20096eb3ecc7" + integrity sha512-RRpIHSbRnFvmGifVk21Gqazf1QF/yeP+Kkg/e3PlkegcOKd/FGOXp/Kx9cvSO2K7ucSn4GD/oBvgasFoy+NCAw== dependencies: - "@commitlint/config-validator" "^18.4.3" - "@commitlint/types" "^18.4.3" + "@commitlint/config-validator" "^18.4.4" + "@commitlint/types" "^18.4.4" import-fresh "^3.0.0" lodash.mergewith "^4.6.2" resolve-from "^5.0.0" resolve-global "^1.0.0" -"@commitlint/rules@^18.4.3": - version "18.4.3" - resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-18.4.3.tgz#2ae1f16ea1ede20e01ca81ad187fdc65ccc9a5f1" - integrity sha512-8KIeukDf45BiY+Lul1T0imSNXF0sMrlLG6JpLLKolkmYVQ6PxxoNOriwyZ3UTFFpaVbPy0rcITaV7U9JCAfDTA== +"@commitlint/rules@^18.4.4": + version "18.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-18.4.4.tgz#859e920a4f0053ae27e4cdd65f68e7576a5ab53f" + integrity sha512-6Uzlsnl/GljEI+80NWjf4ThOfR8NIsbm18IfXYuCEchlwMHSxiuYG4rHSK5DNmG/+MIo8eR5VdQ0gQyt7kWzAA== dependencies: - "@commitlint/ensure" "^18.4.3" - "@commitlint/message" "^18.4.3" - "@commitlint/to-lines" "^18.4.3" - "@commitlint/types" "^18.4.3" + "@commitlint/ensure" "^18.4.4" + "@commitlint/message" "^18.4.4" + "@commitlint/to-lines" "^18.4.4" + "@commitlint/types" "^18.4.4" execa "^5.0.0" -"@commitlint/to-lines@^18.4.3": - version "18.4.3" - resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-18.4.3.tgz#b6cac1eff3d93f0791791a9f8db7b13c6136a350" - integrity sha512-fy1TAleik4Zfru1RJ8ZU6cOSvgSVhUellxd3WZV1D5RwHZETt1sZdcA4mQN2y3VcIZsUNKkW0Mq8CM9/L9harQ== +"@commitlint/to-lines@^18.4.4": + version "18.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-18.4.4.tgz#546cf8d985459f3526359b6a63d7a5b421e1ed60" + integrity sha512-mwe2Roa59NCz/krniAdCygFabg7+fQCkIhXqBHw00XQ8Y7lw4poZLLxeGI3p3bLpcEOXdqIDrEGLwHmG5lBdwQ== -"@commitlint/top-level@^18.4.3": - version "18.4.3" - resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-18.4.3.tgz#f4c6fb8ab98de9240c3ed3e4b330d8c50a0fee3a" - integrity sha512-E6fJPBLPFL5R8+XUNSYkj4HekIOuGMyJo3mIx2PkYc3clel+pcWQ7TConqXxNWW4x1ugigiIY2RGot55qUq1hw== +"@commitlint/top-level@^18.4.4": + version "18.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-18.4.4.tgz#df69ffa49fdc4541d1f05e814352d575fb0f3b0d" + integrity sha512-PBwW1drgeavl9CadB7IPRUk6rkUP/O8jEkxjlC+ofuh3pw0bzJdAT+Kw7M1Yc9KtTb9xTaqUB8uvRtaybHa/tQ== dependencies: find-up "^5.0.0" -"@commitlint/types@^18.4.3": - version "18.4.3" - resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-18.4.3.tgz#bb50de49330ddff2adcc8ccabb840c8e660336b3" - integrity sha512-cvzx+vtY/I2hVBZHCLrpoh+sA0hfuzHwDc+BAFPimYLjJkpHnghQM+z8W/KyLGkygJh3BtI3xXXq+dKjnSWEmA== +"@commitlint/types@^18.4.4": + version "18.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-18.4.4.tgz#dae9e0ce6a6728a36b8982ff301af0170bbe0d38" + integrity sha512-/FykLtodD8gKs3+VNkAUwofu4LBHankclj+I8fB2jTRvG6PV7k/OUt4P+VbM7ip853qS4F0g7Z6hLNa6JeMcAQ== dependencies: chalk "^4.1.0" @@ -2705,13 +2703,6 @@ dependencies: undici-types "~5.25.1" -"@types/node@^18.11.9": - version "18.18.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.7.tgz#bb3a7068dc4ba421b6968f2a259298b3a4e129e8" - integrity sha512-bw+lEsxis6eqJYW8Ql6+yTqkE6RuFtsQPSe5JxXbqYRFQEER5aJA9a5UH9igqDWm3X4iLHIKOHlnAXLM4mi7uQ== - dependencies: - undici-types "~5.26.4" - "@types/normalize-package-data@^2.4.0": version "2.4.2" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.2.tgz#9b0e3e8533fe5024ad32d6637eb9589988b6fdca" @@ -6211,7 +6202,7 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-extra@^11.0.0, fs-extra@^11.1.0, fs-extra@^11.1.1: +fs-extra@^11.1.0, fs-extra@^11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== @@ -13661,11 +13652,6 @@ undici-types@~5.25.1: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.25.3.tgz#e044115914c85f0bcbb229f346ab739f064998c3" integrity sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA== -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - unherit@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/unherit/-/unherit-3.0.1.tgz#65b98bb7cb58cee755d7ec699a49e9e8ff172e23" From fbaf59409f1423373811836b19e4d6b11c683ff8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Jan 2024 05:04:04 +0000 Subject: [PATCH 09/46] build(deps-dev): bump @commitlint/config-conventional Bumps [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional) from 18.4.3 to 18.4.4. - [Release notes](https://github.com/conventional-changelog/commitlint/releases) - [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/CHANGELOG.md) - [Commits](https://github.com/conventional-changelog/commitlint/commits/v18.4.4/@commitlint/config-conventional) --- updated-dependencies: - dependency-name: "@commitlint/config-conventional" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index b14406057ed..b39e187e4fc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -925,9 +925,9 @@ yargs "^17.0.0" "@commitlint/config-conventional@^18.1.0": - version "18.4.3" - resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-18.4.3.tgz#8158e6bd874a86ff46a6424f45acd803bc5fef1b" - integrity sha512-729eRRaNta7JZF07qf6SAGSghoDEp9mH7yHU0m7ff0q89W97wDrWCyZ3yoV3mcQJwbhlmVmZPTkPcm7qiAu8WA== + version "18.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-18.4.4.tgz#ad9a4fc19a848821f01e79089ee01dc9ba71766b" + integrity sha512-Bz3sPQSboBN+Et/KyZrR+OJ3z9PrHDw7Bls0/hv94PmuHBtMq1dCGxS9XzTGzxeMNlytCC4kxF083tbhPljl3Q== dependencies: conventional-changelog-conventionalcommits "^7.0.2" From 49ae3bb0388ed27b5eba07d302f06d660e93be40 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Jan 2024 05:09:54 +0000 Subject: [PATCH 10/46] build(deps): bump next-i18next from 15.1.2 to 15.2.0 Bumps [next-i18next](https://github.com/i18next/next-i18next) from 15.1.2 to 15.2.0. - [Release notes](https://github.com/i18next/next-i18next/releases) - [Changelog](https://github.com/i18next/next-i18next/blob/master/CHANGELOG.md) - [Commits](https://github.com/i18next/next-i18next/compare/v15.1.2...v15.2.0) --- updated-dependencies: - dependency-name: next-i18next dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- sites/lab/package.json | 2 +- sites/sde/package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/sites/lab/package.json b/sites/lab/package.json index eefe5bc5ec2..142bfaeb8dd 100644 --- a/sites/lab/package.json +++ b/sites/lab/package.json @@ -41,7 +41,7 @@ "lodash.orderby": "4.6.0", "lodash.set": "4.3.2", "next": "14.0.4", - "next-i18next": "15.1.2", + "next-i18next": "15.2.0", "ora": "8.0.1", "react": "18.2.0", "react-copy-to-clipboard": "5.1.0", diff --git a/sites/sde/package.json b/sites/sde/package.json index cec9faa4fd2..212926feb8c 100644 --- a/sites/sde/package.json +++ b/sites/sde/package.json @@ -64,7 +64,7 @@ "lodash.set": "4.3.2", "mustache": "4.2.0", "next": "14.0.4", - "next-i18next": "15.1.2", + "next-i18next": "15.2.0", "pdfkit": "0.14.0", "postcss-for": "2.1.1", "react": "18.2.0", diff --git a/yarn.lock b/yarn.lock index b14406057ed..64f93bc1285 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10183,10 +10183,10 @@ nested-error-stacks@^2.0.0: resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz#26c8a3cee6cc05fbcf1e333cd2fc3e003326c0b5" integrity sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw== -next-i18next@15.1.2: - version "15.1.2" - resolved "https://registry.yarnpkg.com/next-i18next/-/next-i18next-15.1.2.tgz#3965f2c470b88763ded56b43f2a59c763354ef4b" - integrity sha512-HfGVe0TRba9b+9jU9w7DJmOXobV7PTFxEeTEBYom/7HhKbTCspLzxAfzfhdaQSlCIbCJmXNeQAoWzXQ5wffsmA== +next-i18next@15.2.0: + version "15.2.0" + resolved "https://registry.yarnpkg.com/next-i18next/-/next-i18next-15.2.0.tgz#96455f282b0dbd0319ce9647b3c319fb50258681" + integrity sha512-Rl5yZ4oGffsB0AjRykZ5PzNQ2M6am54MaMayldGmH/UKZisrIxk2SKEPJvaHhKlWe1qgdNi2FkodwK8sEjfEmg== dependencies: "@babel/runtime" "^7.23.2" "@types/hoist-non-react-statics" "^3.3.4" From 26da05ad9c03fa959d61bfad427a5640fe584575 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Jan 2024 05:13:14 +0000 Subject: [PATCH 11/46] build(deps-dev): bump postcss from 8.4.32 to 8.4.33 Bumps [postcss](https://github.com/postcss/postcss) from 8.4.32 to 8.4.33. - [Release notes](https://github.com/postcss/postcss/releases) - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss/compare/8.4.32...8.4.33) --- updated-dependencies: - dependency-name: postcss dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- sites/dev/package.json | 2 +- sites/lab/package.json | 2 +- sites/org/package.json | 2 +- yarn.lock | 8 ++++---- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/sites/dev/package.json b/sites/dev/package.json index 0090b33d4c2..605928d376c 100644 --- a/sites/dev/package.json +++ b/sites/dev/package.json @@ -61,7 +61,7 @@ "devDependencies": { "autoprefixer": "10.4.16", "js-yaml": "4.1.0", - "postcss": "8.4.32", + "postcss": "8.4.33", "remark-extract-frontmatter": "3.2.0", "remark-mdx-frontmatter": "4.0.0", "tailwindcss": "3.4.0", diff --git a/sites/lab/package.json b/sites/lab/package.json index eefe5bc5ec2..95078fbb0a2 100644 --- a/sites/lab/package.json +++ b/sites/lab/package.json @@ -62,7 +62,7 @@ "devDependencies": { "autoprefixer": "10.4.16", "js-yaml": "4.1.0", - "postcss": "8.4.32", + "postcss": "8.4.33", "remark-extract-frontmatter": "3.2.0", "remark-mdx-frontmatter": "4.0.0", "tailwindcss": "3.4.0", diff --git a/sites/org/package.json b/sites/org/package.json index 12d704dde55..f8bd2555cac 100644 --- a/sites/org/package.json +++ b/sites/org/package.json @@ -69,7 +69,7 @@ "devDependencies": { "autoprefixer": "10.4.16", "js-yaml": "4.1.0", - "postcss": "8.4.32", + "postcss": "8.4.33", "remark-extract-frontmatter": "3.2.0", "remark-mdx-frontmatter": "4.0.0", "tailwindcss": "3.4.0", diff --git a/yarn.lock b/yarn.lock index b14406057ed..7104f89166a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11362,10 +11362,10 @@ postcss@8.4.31: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@8.4.32, postcss@^8.4.23: - version "8.4.32" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.32.tgz#1dac6ac51ab19adb21b8b34fd2d93a86440ef6c9" - integrity sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw== +postcss@8.4.33, postcss@^8.4.23: + version "8.4.33" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.33.tgz#1378e859c9f69bf6f638b990a0212f43e2aaa742" + integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg== dependencies: nanoid "^3.3.7" picocolors "^1.0.0" From 7d125d687e0583ead05efec73ec811679ef8898e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Jan 2024 05:14:45 +0000 Subject: [PATCH 12/46] build(deps): bump web-worker from 1.2.0 to 1.3.0 Bumps [web-worker](https://github.com/developit/web-worker) from 1.2.0 to 1.3.0. - [Release notes](https://github.com/developit/web-worker/releases) - [Commits](https://github.com/developit/web-worker/compare/1.2.0...1.3.0) --- updated-dependencies: - dependency-name: web-worker dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- sites/sde/package.json | 2 +- sites/shared/package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/sites/sde/package.json b/sites/sde/package.json index cec9faa4fd2..f567bc3d378 100644 --- a/sites/sde/package.json +++ b/sites/sde/package.json @@ -85,7 +85,7 @@ "tailwindcss": "3.4.0", "tlds": "1.248.0", "use-local-storage-state": "19.1.0", - "web-worker": "1.2.0" + "web-worker": "1.3.0" }, "devDependencies": {}, "engines": { diff --git a/sites/shared/package.json b/sites/shared/package.json index 1a8be1c84cd..1265e6f6349 100644 --- a/sites/shared/package.json +++ b/sites/shared/package.json @@ -56,7 +56,7 @@ "to-vfile": "8.0.0", "unist-util-visit": "5.0.0", "use-local-storage-state": "19.1.0", - "web-worker": "1.2.0" + "web-worker": "1.3.0" }, "devDependencies": { "recursive-readdir": "^2.2.3", diff --git a/yarn.lock b/yarn.lock index b14406057ed..3a98cbbf3ea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14150,10 +14150,10 @@ web-namespaces@^2.0.0: resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692" integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== -web-worker@1.2.0, web-worker@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.2.0.tgz#5d85a04a7fbc1e7db58f66595d7a3ac7c9c180da" - integrity sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA== +web-worker@1.3.0, web-worker@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.3.0.tgz#e5f2df5c7fe356755a5fb8f8410d4312627e6776" + integrity sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA== webidl-conversions@^3.0.0: version "3.0.1" From 39183e50f2f6190f11fa0b48c2b79e0d2a70c431 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Jan 2024 05:16:52 +0000 Subject: [PATCH 13/46] build(deps): bump react-hotkeys-hook from 4.4.1 to 4.4.3 Bumps [react-hotkeys-hook](https://github.com/JohannesKlauss/react-keymap-hook) from 4.4.1 to 4.4.3. - [Release notes](https://github.com/JohannesKlauss/react-keymap-hook/releases) - [Changelog](https://github.com/JohannesKlauss/react-hotkeys-hook/blob/main/CHANGELOG.md) - [Commits](https://github.com/JohannesKlauss/react-keymap-hook/compare/v4.4.1...v4.4.3) --- updated-dependencies: - dependency-name: react-hotkeys-hook dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- sites/dev/package.json | 2 +- sites/lab/package.json | 2 +- sites/org/package.json | 2 +- sites/sde/package.json | 2 +- yarn.lock | 8 ++++---- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/sites/dev/package.json b/sites/dev/package.json index 0090b33d4c2..8e99725a78a 100644 --- a/sites/dev/package.json +++ b/sites/dev/package.json @@ -43,7 +43,7 @@ "react": "18.2.0", "react-copy-to-clipboard": "5.1.0", "react-dom": "18.2.0", - "react-hotkeys-hook": "4.4.1", + "react-hotkeys-hook": "4.4.3", "react-instantsearch-dom": "6.40.4", "react-instantsearch-hooks-web": "6.47.3", "react-swipeable": "7.0.1", diff --git a/sites/lab/package.json b/sites/lab/package.json index eefe5bc5ec2..e1ba0fd88f1 100644 --- a/sites/lab/package.json +++ b/sites/lab/package.json @@ -45,7 +45,7 @@ "ora": "8.0.1", "react": "18.2.0", "react-copy-to-clipboard": "5.1.0", - "react-hotkeys-hook": "4.4.1", + "react-hotkeys-hook": "4.4.3", "react-i18next": "13.5.0", "react-instantsearch-dom": "6.40.4", "react-swipeable": "7.0.1", diff --git a/sites/org/package.json b/sites/org/package.json index 12d704dde55..aa764aceab0 100644 --- a/sites/org/package.json +++ b/sites/org/package.json @@ -49,7 +49,7 @@ "next": "14.0.4", "ora": "8.0.1", "react-dropzone": "14.2.3", - "react-hotkeys-hook": "4.4.1", + "react-hotkeys-hook": "4.4.3", "react-instantsearch-dom": "6.40.4", "react-swipeable": "7.0.1", "react-timeago": "7.2.0", diff --git a/sites/sde/package.json b/sites/sde/package.json index cec9faa4fd2..0f163d56555 100644 --- a/sites/sde/package.json +++ b/sites/sde/package.json @@ -70,7 +70,7 @@ "react": "18.2.0", "react-dom": "18.2.0", "react-copy-to-clipboard": "5.1.0", - "react-hotkeys-hook": "4.4.1", + "react-hotkeys-hook": "4.4.3", "react-i18next": "13.5.0", "react-dropzone": "14.2.3", "react-swipeable": "7.0.1", diff --git a/yarn.lock b/yarn.lock index b14406057ed..69a03982ead 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11642,10 +11642,10 @@ react-fast-compare@^3.0.0: resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49" integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== -react-hotkeys-hook@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/react-hotkeys-hook/-/react-hotkeys-hook-4.4.1.tgz#1f7a7a1c9c21d4fa3280bf340fcca8fd77d81994" - integrity sha512-sClBMBioFEgFGYLTWWRKvhxcCx1DRznd+wkFHwQZspnRBkHTgruKIHptlK/U/2DPX8BhHoRGzpMVWUXMmdZlmw== +react-hotkeys-hook@4.4.3: + version "4.4.3" + resolved "https://registry.yarnpkg.com/react-hotkeys-hook/-/react-hotkeys-hook-4.4.3.tgz#719b7cdc989be067fca421ccb83daa86498f6e94" + integrity sha512-G6psp7OUm9xxY4G2vL48tBwWUVJLvD/PeInaPdPvqRJ8GoXBu6Djqr6WIw5gu1M0SbR1epNUlvpccxu2ZzmtFQ== react-i18next@13.5.0: version "13.5.0" From 602f4f2a6844746c1672c90a9e1b2b7f93d2322d Mon Sep 17 00:00:00 2001 From: joostdecock Date: Sat, 6 Jan 2024 11:50:17 +0100 Subject: [PATCH 14/46] Revert "chore: Hold back design for v3 release" This reverts commit f9de3f6990024e6c769b3fbdd5ae86f6c52e90a0. In doing so, this rescues the naomiwu design which was removed on purpose from one branch, but then that removal commit accidentally got merged in the branch where it was being kept. --- config/software/designs.json | 8 + designs/naomiwu/CHANGELOG.md | 9 + designs/naomiwu/README.md | 305 +++++++++++++ designs/naomiwu/build.mjs | 35 ++ designs/naomiwu/data.mjs | 4 + designs/naomiwu/i18n/de.json | 104 +++++ designs/naomiwu/i18n/en.json | 137 ++++++ designs/naomiwu/i18n/es.json | 104 +++++ designs/naomiwu/i18n/fr.json | 104 +++++ designs/naomiwu/i18n/index.mjs | 8 + designs/naomiwu/i18n/nl.json | 104 +++++ designs/naomiwu/i18n/uk.json | 104 +++++ designs/naomiwu/package.json | 73 ++++ designs/naomiwu/src/back-attachment-back.mjs | 162 +++++++ designs/naomiwu/src/back-attachment-flap.mjs | 140 ++++++ designs/naomiwu/src/back-attachment-front.mjs | 121 ++++++ designs/naomiwu/src/back-belt-loop.mjs | 136 ++++++ designs/naomiwu/src/back-pocket-flap.mjs | 93 ++++ designs/naomiwu/src/back-pocket.mjs | 132 ++++++ designs/naomiwu/src/back.mjs | 405 ++++++++++++++++++ designs/naomiwu/src/belt-loop.mjs | 127 ++++++ designs/naomiwu/src/fly-shield.mjs | 149 +++++++ .../naomiwu/src/front-attachment-facing.mjs | 138 ++++++ designs/naomiwu/src/front-attachment.mjs | 214 +++++++++ designs/naomiwu/src/front-base.mjs | 346 +++++++++++++++ designs/naomiwu/src/front-fly-side.mjs | 252 +++++++++++ designs/naomiwu/src/front-nofly-side.mjs | 201 +++++++++ designs/naomiwu/src/front-pocket-bag.mjs | 111 +++++ designs/naomiwu/src/front-pocket-facing.mjs | 100 +++++ designs/naomiwu/src/index.mjs | 94 ++++ designs/naomiwu/src/shared.mjs | 322 ++++++++++++++ designs/naomiwu/src/waistband.mjs | 377 ++++++++++++++++ designs/naomiwu/tests/shared.test.mjs | 20 + .../org/docs/designs/naomiwu/cutting/de.md | 26 ++ .../org/docs/designs/naomiwu/cutting/en.md | 26 ++ .../org/docs/designs/naomiwu/cutting/es.md | 26 ++ .../org/docs/designs/naomiwu/cutting/fr.md | 26 ++ .../org/docs/designs/naomiwu/cutting/nl.md | 26 ++ .../org/docs/designs/naomiwu/cutting/uk.md | 26 ++ markdown/org/docs/designs/naomiwu/de.md | 5 + markdown/org/docs/designs/naomiwu/en.md | 8 + markdown/org/docs/designs/naomiwu/es.md | 5 + .../org/docs/designs/naomiwu/fabric/de.md | 10 + .../org/docs/designs/naomiwu/fabric/en.md | 15 + .../org/docs/designs/naomiwu/fabric/es.md | 10 + .../org/docs/designs/naomiwu/fabric/fr.md | 10 + .../org/docs/designs/naomiwu/fabric/nl.md | 10 + .../org/docs/designs/naomiwu/fabric/uk.md | 10 + markdown/org/docs/designs/naomiwu/fr.md | 5 + .../docs/designs/naomiwu/instructions/de.md | 5 + .../docs/designs/naomiwu/instructions/en.md | 5 + .../docs/designs/naomiwu/instructions/es.md | 5 + .../docs/designs/naomiwu/instructions/fr.md | 5 + .../docs/designs/naomiwu/instructions/nl.md | 5 + .../docs/designs/naomiwu/instructions/uk.md | 5 + .../docs/designs/naomiwu/measurements/de.md | 5 + .../docs/designs/naomiwu/measurements/en.md | 5 + .../docs/designs/naomiwu/measurements/es.md | 5 + .../docs/designs/naomiwu/measurements/fr.md | 5 + .../docs/designs/naomiwu/measurements/nl.md | 5 + .../docs/designs/naomiwu/measurements/uk.md | 5 + markdown/org/docs/designs/naomiwu/needs/de.md | 23 + markdown/org/docs/designs/naomiwu/needs/en.md | 23 + markdown/org/docs/designs/naomiwu/needs/es.md | 23 + markdown/org/docs/designs/naomiwu/needs/fr.md | 23 + markdown/org/docs/designs/naomiwu/needs/nl.md | 23 + markdown/org/docs/designs/naomiwu/needs/uk.md | 23 + markdown/org/docs/designs/naomiwu/nl.md | 5 + markdown/org/docs/designs/naomiwu/notes/en.md | 61 +++ .../naomiwu/options/backattachmentdepth/de.md | 10 + .../naomiwu/options/backattachmentdepth/en.md | 11 + .../naomiwu/options/backattachmentdepth/es.md | 10 + .../naomiwu/options/backattachmentdepth/fr.md | 10 + .../naomiwu/options/backattachmentdepth/nl.md | 10 + .../naomiwu/options/backattachmentdepth/uk.md | 10 + .../backattachmentflapchamfersize/de.md | 14 + .../backattachmentflapchamfersize/en.md | 14 + .../backattachmentflapchamfersize/es.md | 14 + .../backattachmentflapchamfersize/fr.md | 14 + .../backattachmentflapchamfersize/nl.md | 14 + .../backattachmentflapchamfersize/uk.md | 14 + .../naomiwu/options/backattachmentwidth/de.md | 11 + .../naomiwu/options/backattachmentwidth/en.md | 12 + .../naomiwu/options/backattachmentwidth/es.md | 11 + .../naomiwu/options/backattachmentwidth/fr.md | 11 + .../naomiwu/options/backattachmentwidth/nl.md | 11 + .../naomiwu/options/backattachmentwidth/uk.md | 11 + .../options/backpocketchamfersize/de.md | 14 + .../options/backpocketchamfersize/en.md | 14 + .../options/backpocketchamfersize/es.md | 14 + .../options/backpocketchamfersize/fr.md | 14 + .../options/backpocketchamfersize/nl.md | 14 + .../options/backpocketchamfersize/uk.md | 14 + .../naomiwu/options/backpocketdepth/de.md | 8 + .../naomiwu/options/backpocketdepth/en.md | 8 + .../naomiwu/options/backpocketdepth/es.md | 8 + .../naomiwu/options/backpocketdepth/fr.md | 8 + .../naomiwu/options/backpocketdepth/nl.md | 8 + .../naomiwu/options/backpocketdepth/uk.md | 8 + .../naomiwu/options/beltloopwidth/de.md | 9 + .../naomiwu/options/beltloopwidth/en.md | 11 + .../naomiwu/options/beltloopwidth/es.md | 9 + .../naomiwu/options/beltloopwidth/fr.md | 9 + .../naomiwu/options/beltloopwidth/nl.md | 9 + .../naomiwu/options/beltloopwidth/uk.md | 9 + .../designs/naomiwu/options/dartlength/de.md | 10 + .../designs/naomiwu/options/dartlength/en.md | 10 + .../designs/naomiwu/options/dartlength/es.md | 10 + .../designs/naomiwu/options/dartlength/fr.md | 10 + .../designs/naomiwu/options/dartlength/nl.md | 10 + .../designs/naomiwu/options/dartlength/uk.md | 10 + .../designs/naomiwu/options/dartwidth/de.md | 10 + .../designs/naomiwu/options/dartwidth/en.md | 10 + .../designs/naomiwu/options/dartwidth/es.md | 10 + .../designs/naomiwu/options/dartwidth/fr.md | 10 + .../designs/naomiwu/options/dartwidth/nl.md | 10 + .../designs/naomiwu/options/dartwidth/uk.md | 10 + .../org/docs/designs/naomiwu/options/de.md | 5 + .../org/docs/designs/naomiwu/options/en.md | 5 + .../org/docs/designs/naomiwu/options/es.md | 5 + .../designs/naomiwu/options/flylength/de.md | 8 + .../designs/naomiwu/options/flylength/en.md | 8 + .../designs/naomiwu/options/flylength/es.md | 8 + .../designs/naomiwu/options/flylength/fr.md | 8 + .../designs/naomiwu/options/flylength/nl.md | 8 + .../designs/naomiwu/options/flylength/uk.md | 8 + .../designs/naomiwu/options/flywidth/de.md | 8 + .../designs/naomiwu/options/flywidth/en.md | 9 + .../designs/naomiwu/options/flywidth/es.md | 8 + .../designs/naomiwu/options/flywidth/fr.md | 8 + .../designs/naomiwu/options/flywidth/nl.md | 8 + .../designs/naomiwu/options/flywidth/uk.md | 8 + .../org/docs/designs/naomiwu/options/fr.md | 5 + .../options/frontattachmentchamfersize/de.md | 16 + .../options/frontattachmentchamfersize/en.md | 17 + .../options/frontattachmentchamfersize/es.md | 16 + .../options/frontattachmentchamfersize/fr.md | 16 + .../options/frontattachmentchamfersize/nl.md | 16 + .../options/frontattachmentchamfersize/uk.md | 16 + .../options/frontattachmentwidth/de.md | 9 + .../options/frontattachmentwidth/en.md | 10 + .../options/frontattachmentwidth/es.md | 9 + .../options/frontattachmentwidth/fr.md | 9 + .../options/frontattachmentwidth/nl.md | 9 + .../options/frontattachmentwidth/uk.md | 9 + .../designs/naomiwu/options/fronthalf/de.md | 8 + .../designs/naomiwu/options/fronthalf/en.md | 9 + .../designs/naomiwu/options/fronthalf/es.md | 8 + .../designs/naomiwu/options/fronthalf/fr.md | 8 + .../designs/naomiwu/options/fronthalf/nl.md | 8 + .../designs/naomiwu/options/fronthalf/uk.md | 8 + .../options/frontpocketopeningbend/de.md | 8 + .../options/frontpocketopeningbend/en.md | 8 + .../options/frontpocketopeningbend/es.md | 8 + .../options/frontpocketopeningbend/fr.md | 8 + .../options/frontpocketopeningbend/nl.md | 8 + .../options/frontpocketopeningbend/uk.md | 8 + .../options/frontpocketopeningdepth/de.md | 8 + .../options/frontpocketopeningdepth/en.md | 8 + .../options/frontpocketopeningdepth/es.md | 8 + .../options/frontpocketopeningdepth/fr.md | 8 + .../options/frontpocketopeningdepth/nl.md | 8 + .../options/frontpocketopeningdepth/uk.md | 8 + .../options/frontpocketopeningwidth/de.md | 10 + .../options/frontpocketopeningwidth/en.md | 14 + .../options/frontpocketopeningwidth/es.md | 10 + .../options/frontpocketopeningwidth/fr.md | 10 + .../options/frontpocketopeningwidth/nl.md | 10 + .../options/frontpocketopeningwidth/uk.md | 10 + .../designs/naomiwu/options/hipsease/de.md | 10 + .../designs/naomiwu/options/hipsease/en.md | 10 + .../designs/naomiwu/options/hipsease/es.md | 10 + .../designs/naomiwu/options/hipsease/fr.md | 10 + .../designs/naomiwu/options/hipsease/nl.md | 10 + .../designs/naomiwu/options/hipsease/uk.md | 10 + .../designs/naomiwu/options/invertfly/de.md | 10 + .../designs/naomiwu/options/invertfly/en.md | 13 + .../designs/naomiwu/options/invertfly/es.md | 10 + .../designs/naomiwu/options/invertfly/fr.md | 10 + .../designs/naomiwu/options/invertfly/nl.md | 10 + .../designs/naomiwu/options/invertfly/uk.md | 10 + .../designs/naomiwu/options/jseambend/de.md | 8 + .../designs/naomiwu/options/jseambend/en.md | 9 + .../designs/naomiwu/options/jseambend/es.md | 8 + .../designs/naomiwu/options/jseambend/fr.md | 8 + .../designs/naomiwu/options/jseambend/nl.md | 8 + .../designs/naomiwu/options/jseambend/uk.md | 8 + .../docs/designs/naomiwu/options/length/de.md | 8 + .../docs/designs/naomiwu/options/length/en.md | 8 + .../docs/designs/naomiwu/options/length/es.md | 8 + .../docs/designs/naomiwu/options/length/fr.md | 8 + .../docs/designs/naomiwu/options/length/nl.md | 8 + .../docs/designs/naomiwu/options/length/uk.md | 8 + .../naomiwu/options/mindartwidth/de.md | 8 + .../naomiwu/options/mindartwidth/en.md | 8 + .../naomiwu/options/mindartwidth/es.md | 8 + .../naomiwu/options/mindartwidth/fr.md | 8 + .../naomiwu/options/mindartwidth/nl.md | 8 + .../naomiwu/options/mindartwidth/uk.md | 8 + .../org/docs/designs/naomiwu/options/nl.md | 5 + .../designs/naomiwu/options/seatease/de.md | 8 + .../designs/naomiwu/options/seatease/en.md | 8 + .../designs/naomiwu/options/seatease/es.md | 8 + .../designs/naomiwu/options/seatease/fr.md | 8 + .../designs/naomiwu/options/seatease/nl.md | 8 + .../designs/naomiwu/options/seatease/uk.md | 8 + .../org/docs/designs/naomiwu/options/uk.md | 5 + .../naomiwu/options/waistbandwidth/de.md | 10 + .../naomiwu/options/waistbandwidth/en.md | 10 + .../naomiwu/options/waistbandwidth/es.md | 10 + .../naomiwu/options/waistbandwidth/fr.md | 10 + .../naomiwu/options/waistbandwidth/nl.md | 10 + .../naomiwu/options/waistbandwidth/uk.md | 10 + .../designs/naomiwu/options/waistslant/de.md | 8 + .../designs/naomiwu/options/waistslant/en.md | 9 + .../designs/naomiwu/options/waistslant/es.md | 8 + .../designs/naomiwu/options/waistslant/fr.md | 8 + .../designs/naomiwu/options/waistslant/nl.md | 8 + .../designs/naomiwu/options/waistslant/uk.md | 8 + markdown/org/docs/designs/naomiwu/uk.md | 5 + sites/shared/i18n/designs.mjs | 2 + 221 files changed, 6687 insertions(+) create mode 100644 designs/naomiwu/CHANGELOG.md create mode 100644 designs/naomiwu/README.md create mode 100644 designs/naomiwu/build.mjs create mode 100644 designs/naomiwu/data.mjs create mode 100644 designs/naomiwu/i18n/de.json create mode 100644 designs/naomiwu/i18n/en.json create mode 100644 designs/naomiwu/i18n/es.json create mode 100644 designs/naomiwu/i18n/fr.json create mode 100644 designs/naomiwu/i18n/index.mjs create mode 100644 designs/naomiwu/i18n/nl.json create mode 100644 designs/naomiwu/i18n/uk.json create mode 100644 designs/naomiwu/package.json create mode 100644 designs/naomiwu/src/back-attachment-back.mjs create mode 100644 designs/naomiwu/src/back-attachment-flap.mjs create mode 100644 designs/naomiwu/src/back-attachment-front.mjs create mode 100644 designs/naomiwu/src/back-belt-loop.mjs create mode 100644 designs/naomiwu/src/back-pocket-flap.mjs create mode 100644 designs/naomiwu/src/back-pocket.mjs create mode 100644 designs/naomiwu/src/back.mjs create mode 100644 designs/naomiwu/src/belt-loop.mjs create mode 100644 designs/naomiwu/src/fly-shield.mjs create mode 100644 designs/naomiwu/src/front-attachment-facing.mjs create mode 100644 designs/naomiwu/src/front-attachment.mjs create mode 100644 designs/naomiwu/src/front-base.mjs create mode 100644 designs/naomiwu/src/front-fly-side.mjs create mode 100644 designs/naomiwu/src/front-nofly-side.mjs create mode 100644 designs/naomiwu/src/front-pocket-bag.mjs create mode 100644 designs/naomiwu/src/front-pocket-facing.mjs create mode 100644 designs/naomiwu/src/index.mjs create mode 100644 designs/naomiwu/src/shared.mjs create mode 100644 designs/naomiwu/src/waistband.mjs create mode 100644 designs/naomiwu/tests/shared.test.mjs create mode 100644 markdown/org/docs/designs/naomiwu/cutting/de.md create mode 100644 markdown/org/docs/designs/naomiwu/cutting/en.md create mode 100644 markdown/org/docs/designs/naomiwu/cutting/es.md create mode 100644 markdown/org/docs/designs/naomiwu/cutting/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/cutting/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/cutting/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/de.md create mode 100644 markdown/org/docs/designs/naomiwu/en.md create mode 100644 markdown/org/docs/designs/naomiwu/es.md create mode 100644 markdown/org/docs/designs/naomiwu/fabric/de.md create mode 100644 markdown/org/docs/designs/naomiwu/fabric/en.md create mode 100644 markdown/org/docs/designs/naomiwu/fabric/es.md create mode 100644 markdown/org/docs/designs/naomiwu/fabric/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/fabric/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/fabric/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/instructions/de.md create mode 100644 markdown/org/docs/designs/naomiwu/instructions/en.md create mode 100644 markdown/org/docs/designs/naomiwu/instructions/es.md create mode 100644 markdown/org/docs/designs/naomiwu/instructions/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/instructions/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/instructions/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/measurements/de.md create mode 100644 markdown/org/docs/designs/naomiwu/measurements/en.md create mode 100644 markdown/org/docs/designs/naomiwu/measurements/es.md create mode 100644 markdown/org/docs/designs/naomiwu/measurements/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/measurements/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/measurements/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/needs/de.md create mode 100644 markdown/org/docs/designs/naomiwu/needs/en.md create mode 100644 markdown/org/docs/designs/naomiwu/needs/es.md create mode 100644 markdown/org/docs/designs/naomiwu/needs/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/needs/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/needs/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/notes/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backattachmentdepth/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backattachmentdepth/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backattachmentdepth/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backattachmentdepth/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backattachmentdepth/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backattachmentdepth/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backattachmentflapchamfersize/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backattachmentflapchamfersize/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backattachmentflapchamfersize/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backattachmentflapchamfersize/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backattachmentflapchamfersize/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backattachmentflapchamfersize/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backattachmentwidth/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backattachmentwidth/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backattachmentwidth/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backattachmentwidth/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backattachmentwidth/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backattachmentwidth/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backpocketchamfersize/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backpocketchamfersize/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backpocketchamfersize/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backpocketchamfersize/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backpocketchamfersize/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backpocketchamfersize/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backpocketdepth/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backpocketdepth/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backpocketdepth/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backpocketdepth/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backpocketdepth/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/backpocketdepth/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/options/beltloopwidth/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/beltloopwidth/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/beltloopwidth/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/beltloopwidth/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/beltloopwidth/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/beltloopwidth/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/options/dartlength/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/dartlength/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/dartlength/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/dartlength/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/dartlength/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/dartlength/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/options/dartwidth/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/dartwidth/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/dartwidth/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/dartwidth/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/dartwidth/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/dartwidth/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/options/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/flylength/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/flylength/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/flylength/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/flylength/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/flylength/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/flylength/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/options/flywidth/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/flywidth/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/flywidth/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/flywidth/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/flywidth/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/flywidth/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/options/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontattachmentchamfersize/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontattachmentchamfersize/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontattachmentchamfersize/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontattachmentchamfersize/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontattachmentchamfersize/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontattachmentchamfersize/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontattachmentwidth/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontattachmentwidth/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontattachmentwidth/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontattachmentwidth/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontattachmentwidth/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontattachmentwidth/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/options/fronthalf/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/fronthalf/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/fronthalf/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/fronthalf/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/fronthalf/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/fronthalf/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontpocketopeningbend/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontpocketopeningbend/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontpocketopeningbend/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontpocketopeningbend/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontpocketopeningbend/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontpocketopeningbend/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontpocketopeningdepth/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontpocketopeningdepth/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontpocketopeningdepth/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontpocketopeningdepth/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontpocketopeningdepth/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontpocketopeningdepth/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontpocketopeningwidth/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontpocketopeningwidth/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontpocketopeningwidth/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontpocketopeningwidth/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontpocketopeningwidth/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/frontpocketopeningwidth/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/options/hipsease/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/hipsease/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/hipsease/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/hipsease/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/hipsease/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/hipsease/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/options/invertfly/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/invertfly/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/invertfly/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/invertfly/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/invertfly/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/invertfly/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/options/jseambend/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/jseambend/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/jseambend/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/jseambend/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/jseambend/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/jseambend/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/options/length/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/length/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/length/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/length/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/length/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/length/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/options/mindartwidth/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/mindartwidth/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/mindartwidth/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/mindartwidth/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/mindartwidth/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/mindartwidth/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/options/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/seatease/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/seatease/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/seatease/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/seatease/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/seatease/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/seatease/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/options/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/options/waistbandwidth/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/waistbandwidth/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/waistbandwidth/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/waistbandwidth/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/waistbandwidth/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/waistbandwidth/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/options/waistslant/de.md create mode 100644 markdown/org/docs/designs/naomiwu/options/waistslant/en.md create mode 100644 markdown/org/docs/designs/naomiwu/options/waistslant/es.md create mode 100644 markdown/org/docs/designs/naomiwu/options/waistslant/fr.md create mode 100644 markdown/org/docs/designs/naomiwu/options/waistslant/nl.md create mode 100644 markdown/org/docs/designs/naomiwu/options/waistslant/uk.md create mode 100644 markdown/org/docs/designs/naomiwu/uk.md 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, From 9e5fbdf3ba43744c36e2825e984b76ca8a46507d Mon Sep 17 00:00:00 2001 From: joostdecock Date: Sat, 6 Jan 2024 11:57:11 +0100 Subject: [PATCH 15/46] chore: Updated dependencies --- config/dependencies.yaml | 28 ++-- config/software/designs.json | 2 + designs/naomiwu/CHANGELOG.md | 8 ++ designs/naomiwu/README.md | 232 +++++---------------------------- designs/naomiwu/data.mjs | 2 +- designs/naomiwu/package.json | 16 +-- sites/backend/package.json | 4 +- sites/org/hooks/use-design.mjs | 8 +- 8 files changed, 75 insertions(+), 225 deletions(-) diff --git a/config/dependencies.yaml b/config/dependencies.yaml index a98534f24e6..b72438928c5 100644 --- a/config/dependencies.yaml +++ b/config/dependencies.yaml @@ -88,11 +88,11 @@ jaeger: '@freesewing/plugin-bust': *freesewing new-design: _: - 'axios': &axios '1.6.2' + 'axios': &axios '1.6.4' 'chalk': '5.3.0' 'execa': '8.0.1' 'mustache': &mustache '4.2.0' - 'ora': &ora '7.0.1' + 'ora': &ora '8.0.1' 'prompts': '2.4.2' 'recursive-readdir': '2.2.3' noble: @@ -180,7 +180,7 @@ yuri: backend: _: - '@aws-sdk/client-sesv2': '3.478.0' + '@aws-sdk/client-sesv2': '3.485.0' '@prisma/client': &prisma '5.7.1' 'bcryptjs': '2.4.3' 'cors': '2.8.5' @@ -193,14 +193,14 @@ backend: 'passport': '0.7.0' 'passport-http': '0.3.0' 'passport-jwt': '4.0.1' - 'pino': '8.17.1' + 'pino': '8.17.2' 'qrcode': '1.5.3' 'swagger-ui-dist': '5.10.5' 'swagger-ui-express': '5.0.0' dev: 'chai': *chai 'chai-http': '4.4.0' - 'esbuild': '0.19.10' + 'esbuild': '0.19.11' 'mocha': *mocha 'mocha-steps': '1.3.0' 'nodemon': '3.0.2' @@ -214,7 +214,7 @@ dev: '@next/bundle-analyzer': &next '14.0.4' '@tailwindcss/typography': &tailwindTypography '0.5.10' 'algoliasearch': '4.22.0' - 'daisyui': &daisyui '4.4.23' + 'daisyui': &daisyui '4.5.0' 'lodash.get': *_get 'lodash.orderby': &_orderby '4.6.0' 'lodash.set': *_set @@ -222,7 +222,7 @@ dev: 'react': &react '18.2.0' 'react-copy-to-clipboard': &reactCopyToClipboard '5.1.0' 'react-dom': *react - 'react-hotkeys-hook': &reactHotkeysHook '4.4.1' + 'react-hotkeys-hook': &reactHotkeysHook '4.4.3' 'react-instantsearch-dom': &reactInstantsearchDom '6.40.4' 'react-instantsearch-hooks-web': '6.47.3' 'react-swipeable': &reactSwipeable '7.0.1' @@ -240,7 +240,7 @@ dev: dev: &nextSiteDevDependencies 'autoprefixer': &autoprefixer '10.4.16' 'js-yaml': &jsYaml '4.1.0' - 'postcss': &postcss '8.4.32' + 'postcss': &postcss '8.4.33' 'remark-extract-frontmatter': '3.2.0' 'remark-mdx-frontmatter': &mdxfrontmatter '4.0.0' 'tailwindcss': &tailwindcss '3.4.0' @@ -257,12 +257,12 @@ lab: 'd3-drag': &d3drag '3.0.0' 'd3-selection': &d3selection '3.0.0' 'daisyui': *daisyui - 'i18next': &i18next '23.7.11' + 'i18next': &i18next '23.7.15' 'lodash.get': *_get 'lodash.orderby': *_orderby 'lodash.set': *_set 'next': *next - 'next-i18next': &nextI18next '15.1.1' + 'next-i18next': &nextI18next '15.2.0' 'ora': *ora 'react': *react 'react-copy-to-clipboard': *reactCopyToClipboard @@ -284,7 +284,7 @@ lab: org: _: - '@bugsnag/js': &bugsnag 7.22.2 + '@bugsnag/js': &bugsnag 7.22.3 '@bugsnag/plugin-react': 7.19.0 '@mdx-js/mdx': *mdx '@mdx-js/react': *mdx @@ -296,12 +296,12 @@ org: 'daisyui': *daisyui 'echarts': &echarts 5.4.3 'echarts-for-react': &echartsReact 3.0.2 - 'jotai': &jotai '2.6.0' + 'jotai': &jotai '2.6.1' 'jotai-location': &jotai-location '0.5.2' 'lodash.get': *_get 'lodash.orderby': *_orderby 'lodash.set': *_set - 'luxon': '3.4.3' + 'luxon': '3.4.4' 'next': *next 'ora': *ora 'react-dropzone': &dropzone '14.2.3' @@ -366,7 +366,7 @@ shared: 'to-vfile': '8.0.0' 'unist-util-visit': *unist-util-visit 'use-local-storage-state': *use-local-storage-state - 'web-worker': &webworker '1.2.0' + 'web-worker': &webworker '1.3.0' dev: 'recursive-readdir': '^2.2.3' 'html-to-text': '^9.0.5' diff --git a/config/software/designs.json b/config/software/designs.json index f0bcdbb3042..3c1d790ee60 100644 --- a/config/software/designs.json +++ b/config/software/designs.json @@ -524,6 +524,8 @@ "code": "Joost De Cock", "design": ["Naomi Wu", "Joost De Cock"], "difficulty": 3, + "lab": false, + "org": false, "tags": ["bottoms", "skirts"], "techniques": ["button", "hem", "pocket", "lining"] }, diff --git a/designs/naomiwu/CHANGELOG.md b/designs/naomiwu/CHANGELOG.md index a9bb531063d..5a955e095a9 100644 --- a/designs/naomiwu/CHANGELOG.md +++ b/designs/naomiwu/CHANGELOG.md @@ -1,6 +1,14 @@ # Change log for: @freesewing/naomiwu +## 3.0.0 (2023-09-30) + +### Changed + + - All FreeSewing pacakges are now ESM only. + - All FreeSewing pacakges now use named exports. + - Dropped support for NodeJS 14. NodeJS 18 (LTS/hydrogen) or more recent is now required. + This is the **initial release**, and the start of this change log. diff --git a/designs/naomiwu/README.md b/designs/naomiwu/README.md index d54bfdef401..c08678bd7bf 100644 --- a/designs/naomiwu/README.md +++ b/designs/naomiwu/README.md @@ -22,7 +22,7 @@ All Contributors

#### 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 repository is the FreeSewing *monorepo* holding all FreeSewing's websites, documentation, designs, plugins, and other NPM packages. This folder holds: @freesewing/naomiwu @@ -86,11 +78,11 @@ npm run tips 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. +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 +If you're a developer, the FreeSewing documentation lives at [freesewing.dev](https://freesewing.dev/). +The FreeSewing [core library](https://freesewing.dev/reference/api/) is a *batteries-included* toolbox +for parametric design of sewing patterns. But FreeSewing also provides a range of [plugins](https://freesewing.dev/reference/plugins/) that further extend the functionality of the platform. @@ -100,33 +92,43 @@ If you have NodeJS installed, you can try it right now by running: 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/). +Getting started guides are available for: +- [Linux](https://freesewing.dev/tutorials/getting-started-linux/) +- [MacOS](https://freesewing.dev/tutorials/getting-started-mac/) +- [Windows](https://freesewing.dev/tutorials/getting-started-windows/) -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. +The [pattern design tutorial](https://freesewing.dev/tutorials/pattern-design/) will +show you how to create your first parametric design. ## Support FreeSewing: Become a patron 🥰 -FreeSewing is an open source project run by a community, -and financially supported by our patrons. +FreeSewing is an open source project maintained by Joost De Cock and financially supported by the FreeSewing patrons. -If you feel what we do is worthwhile, and you can spend a few coind without +If you feel FreeSewing is worthwhile, and you can spend a few coins 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/) +**Official channels** + + - 💻 Makers website: [FreeSewing.org](https://freesewing.org) + - 💻 Developers website: [FreeSewing.dev](https://freesewing.dev) + - ✅ [Support](https://github.com/freesewing/freesewing/issues/new/choose), + [Issues](https://github.com/freesewing/freesewing/issues) & + [Discussions](https://github.com/freesewing/freesewing/discussions) on + [GitHub](https://github.com/freesewing/freesewing) + +**Social media** + - 🐦 Twitter: [@freesewing_org](https://twitter.com/freesewing_org) - 📷 Instagram: [@freesewing_org](https://instagram.com/freesewing_org) +**Places the FreeSewing community hangs out** + + - 💬 [Discord](https://discord.freesewing.org/) + - 💬 [Facebook](https://www.facebook.com/groups/627769821272714/) + - 💬 [Reddit](https://www.reddit.com/r/freesewing/) + ## License: MIT 🤓 © [Joost De Cock](https://github.com/joostdecock). @@ -134,172 +136,8 @@ See [the license file](https://github.com/freesewing/freesewing/blob/develop/LIC ## 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! +For [Support](https://github.com/freesewing/freesewing/issues/new/choose), +please use the [Issues](https://github.com/freesewing/freesewing/issues) & +[Discussions](https://github.com/freesewing/freesewing/discussions) on +[GitHub](https://github.com/freesewing/freesewing). diff --git a/designs/naomiwu/data.mjs b/designs/naomiwu/data.mjs index abd297fc31e..fee3c2864bc 100644 --- a/designs/naomiwu/data.mjs +++ b/designs/naomiwu/data.mjs @@ -1,4 +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 version = '3.1.0' export const data = { name, version } diff --git a/designs/naomiwu/package.json b/designs/naomiwu/package.json index 9809abbc853..dfd928fbfb4 100644 --- a/designs/naomiwu/package.json +++ b/designs/naomiwu/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/naomiwu", - "version": "3.0.0-alpha.10", + "version": "3.1.0", "description": "A FreeSewing pattern for Naomi Wu's signature cargo skirt", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -49,14 +49,14 @@ "wbuild:all": "yarn wbuild" }, "peerDependencies": { - "@freesewing/core": "3.0.0-alpha.10" + "@freesewing/core": "3.1.0" }, "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" + "chai": "4.3.10", + "@freesewing/models": "3.1.0", + "@freesewing/plugin-timing": "3.1.0" }, "files": [ "dist/*", @@ -64,10 +64,10 @@ ], "publishConfig": { "access": "public", - "tag": "next" + "tag": "latest" }, "engines": { - "node": "18", - "npm": "9" + "node": ">=18", + "npm": ">=9" } } diff --git a/sites/backend/package.json b/sites/backend/package.json index d4acc0a7eb3..1eb98cca622 100644 --- a/sites/backend/package.json +++ b/sites/backend/package.json @@ -26,6 +26,7 @@ "vbuild": "VERBOSE=1 node build.mjs", "wbuild": "node build.mjs" }, + "peerDependencies": {}, "dependencies": { "@aws-sdk/client-sesv2": "3.485.0", "@prisma/client": "5.7.1", @@ -54,9 +55,6 @@ "nodemon": "3.0.2", "prisma": "5.7.1" }, - "peerDependencies": { - "sharp": "^0.33.1" - }, "engines": { "node": ">=18", "npm": ">=9" diff --git a/sites/org/hooks/use-design.mjs b/sites/org/hooks/use-design.mjs index 95fead2e6b8..2f3fed01065 100644 --- a/sites/org/hooks/use-design.mjs +++ b/sites/org/hooks/use-design.mjs @@ -1,3 +1,7 @@ +/* + * This file is auto-generated. + * Any manual changes will be overwritten. + */ import { Aaron as aaron } from '@freesewing/aaron' import { Albert as albert } from '@freesewing/albert' import { Bee as bee } from '@freesewing/bee' @@ -24,7 +28,6 @@ import { Huey as huey } from '@freesewing/huey' import { Hugo as hugo } from '@freesewing/hugo' import { Jaeger as jaeger } from '@freesewing/jaeger' import { Lucy as lucy } from '@freesewing/lucy' -import { Lumira as lumira } from '@freesewing/lumira' import { Lunetius as lunetius } from '@freesewing/lunetius' import { Noble as noble } from '@freesewing/noble' import { Octoplushy as octoplushy } from '@freesewing/octoplushy' @@ -49,6 +52,7 @@ import { Walburga as walburga } from '@freesewing/walburga' import { Waralee as waralee } from '@freesewing/waralee' import { Yuri as yuri } from '@freesewing/yuri' import { Otis as otis } from '@freesewing/otis' +import { Lumira as lumira } from '@freesewing/lumira' const designs = { aaron, @@ -77,7 +81,6 @@ const designs = { hugo, jaeger, lucy, - lumira, lunetius, noble, octoplushy, @@ -102,6 +105,7 @@ const designs = { waralee, yuri, otis, + lumira, } export const useDesign = (design) => (designs[design] ? designs[design] : false) From c06a18e06e67145733398a82d6a55e3a1e7d79ce Mon Sep 17 00:00:00 2001 From: joostdecock Date: Sat, 6 Jan 2024 17:54:11 +0100 Subject: [PATCH 16/46] feat: Support notes in title macro This started out as a fix for #5753 after I felt the approach in #5760 was not the best way to handle this. The problem lies in the way the cutlist data is added to the pattern by the title plugin. The whole cutlist thing was added by a less experienced contributor, and they were a little too focussed on what they were trying to accomplish, rather than keeping an eye on the big picture. In this case, a bunch of points get added to the part to anchor all of the text for the cutlist. This causes problems when inheriting parts because points are added per material, and now we don't know what materials were used and how to remove these points. I appreciate @woutervdub effort to resolve this in #5760 but as I mentioned above, I don't love the approach. Rather than finding a clever way to remove these points, I am of the opinion that they should never have been added in the first place. Specifically, all we are doing is adding one or more lines of text. The idea that you need multiple points for this is an incorrect assumption, and therein lies the root of this problem. So, this refactor adds support to the title macro for 'notes'. These notes will be added below the title. The cutlist info is now just prepended to the notes. So it stops being something 'special' (which it never should have been) and instead just behaves like other text that is placed on the part by the title macro. The only flanking measure required to make this happen was to add support for nested arrays in handling text. This way, you can pass a nested array to concatenate strings in such a way that each part will still be individually translated. And as all text in FreeSewing, to force a linebreak, you just use "\n" as The Dark Lord intended. --- config/changelog.yaml | 12 ++ .../react-components/src/pattern/utils.mjs | 3 +- plugins/plugin-annotations/src/title.mjs | 154 ++++++++---------- plugins/plugin-i18n/src/index.mjs | 41 +++-- 4 files changed, 109 insertions(+), 101 deletions(-) diff --git a/config/changelog.yaml b/config/changelog.yaml index c5de1986208..f2366ced630 100644 --- a/config/changelog.yaml +++ b/config/changelog.yaml @@ -1,6 +1,18 @@ Unreleased: Added: + Added: + plugin-annotations: + - The `title` macro now takes a `notes` and `classes.notes` as its config, allowing you to add notes + - The `classes.cutlist` config is removed from the title plugin, cutlist info is now included as notes + plugin-i18n: + - This plugin now supports translation of nested arrays of strings, giving you more flexibility to concatenate translated parts of strings + react-components: + - This Pattern component now supports translation of nested arrays of strings, giving you more flexibility to concatenate translated parts of strings + + Removed: + - The `classes.cutlist` config is removed from the title plugin, cutlist info is now included as notes + 3.1.0: date: 2023-12-26 Added: diff --git a/packages/react-components/src/pattern/utils.mjs b/packages/react-components/src/pattern/utils.mjs index 2445c91ccc9..fde6a025584 100644 --- a/packages/react-components/src/pattern/utils.mjs +++ b/packages/react-components/src/pattern/utils.mjs @@ -71,7 +71,8 @@ export const getId = ({ export const translateStrings = (t, list) => { let translated = '' for (const string of list) { - if (string) translated += t(string.toString()).replace(/"/g, '"') + ' ' + if (Array.isArray(string)) translated += translateStrings(t, string) + else if (string) translated += t(string.toString()).replace(/"/g, '"') + ' ' } return translated diff --git a/plugins/plugin-annotations/src/title.mjs b/plugins/plugin-annotations/src/title.mjs index 79af07f8031..d8ae7083809 100644 --- a/plugins/plugin-annotations/src/title.mjs +++ b/plugins/plugin-annotations/src/title.mjs @@ -1,3 +1,6 @@ +const capitalize = (string) => + typeof string === 'string' ? string.charAt(0).toUpperCase() + string.slice(1) : '' + /* * Defaults for the title macro */ @@ -12,10 +15,10 @@ const macroDefaults = { rotation: 0, scale: 1, title: 'plugin-annotations:noName', + notes: false, classes: { - cutlist: 'text-md fill-current', + notes: 'text-md fill-current', date: 'text-sm fill-current', - for: 'fill-current font-bold', name: 'fill-note', nr: 'text-4xl fill-note font-bold', title: 'text-lg fill-current font-bold', @@ -74,9 +77,8 @@ const title = function (config, { Point, points, scale, locale, store, part, log /* * Get the list of IDs - * Initialize the verticle cadence */ - const ids = store.generateMacroIds(['cutlist', 'date', 'for', 'name', 'nr', 'title'], mc.id) + const ids = store.generateMacroIds(['nr', 'date', 'title', 'name', 'notes'], mc.id) let shift = mc.dy @@ -93,6 +95,24 @@ const title = function (config, { Point, points, scale, locale, store, part, log store.set(['partNumbers', part.name], mc.nr) } else delete ids.nr + /* + * Title: date + */ + points[ids.date] = mc.at + .shift(-90, shift / 2) + .addText( + new Date().toLocaleString(locale || 'en', { + weekday: 'long', + year: 'numeric', + month: 'short', + day: 'numeric', + }), + `${mc.classes.date} ${mc.align}` + ) + .attr('data-text-transform', transform) + .attr('data-render-always', 1) // Render even when outside the part bounding box + shift += mc.dy + /* * Title: title */ @@ -100,18 +120,39 @@ const title = function (config, { Point, points, scale, locale, store, part, log points[ids.title] = mc.at .clone() .shift(-90, shift) - .attr('data-text', mc.title, mc.append ? false : true) - .attr('data-text-class', `${mc.classes.title} ${mc.align}`) .attr('data-text-transform', transform) .attr('data-render-always', 1) // Render even when outside the part bounding box + if (mc.append) points[ids.title].addText(mc.title, `${mc.classes.title} ${mc.align}`) + else points[ids.title].setText(mc.title, `${mc.classes.title} ${mc.align}`) shift += mc.dy store.set(['partTitles', part.name], mc.title) } else delete ids.title /* - * Title: cutlist + * Title: name */ + points[ids.name] = mc.at + .clone() + .shift(-90, shift) + .addText( + `FreeSewing ${capitalize( + (store.data?.name || 'plugin-annotations:noName').replace('@freesewing/', '') + )} v${store.data?.version || 'plugin-annotations:noVersion'} ( `, + + `${mc.classes.name} ${mc.align}` + ) + .addText(store.data?.for ? store.data.for : 'ephemeral') + .addText(' )') + .attr('data-text-transform', transform) + .attr('data-render-always', 1) // Render even when outside the part bounding box + shift += mc.dy + + /* + * Title: notes + */ + const notes = [] if (mc.cutlist) { + points[ids.notes] = mc.at.clone().shift(-90, shift) /* * Get cutlist instructions from the store, only proceed if the list is available */ @@ -123,92 +164,37 @@ const title = function (config, { Point, points, scale, locale, store, part, log for (const [material, instructions] of Object.entries(partCutlist.materials)) { instructions.forEach(({ cut, identical, onBias, onFold }, c) => { /* - * Create point - */ - const id = `${ids.cutlist}_${material}_${c}` - ids[`cutlist_${material}_${c}`] = id - points[id] = mc.at - .clone() - .shift(-90, shift) - .attr('data-text', 'plugin-annotations:cut') - .attr('data-text-class', `${mc.classes.cutlist} ${mc.align}`) - .attr('data-text-transform', transform) - .attr('data-render-always', 1) // Render even when outside the part bounding box - .addText(cut) - shift += mc.dy - - /* - * Add instructions if parts are mirrored - */ - if (!identical && cut > 1) points[id].addText('plugin-annotations:mirrored') - - /* - * Add instructions if parts are cut on fold + * Concat line */ + notes.push('plugin-annotations:cut') + notes.push(cut) + if (!identical && cut > 1) notes.push('plugin-annotations:mirrored') if (onFold) - points[id].addText( - onBias ? 'plugin-annotations:onFoldAndBias' : 'plugin-annotations:onFold' - ) + notes.push(onBias ? 'plugin-annotations:onFoldAndBias' : 'plugin-annotations:onFold') + else if (onBias) notes.push('plugin-annotations:onBias') + notes.push('plugin-annotations:from', 'plugin-annotations:' + material) /* - * Add instructions if parts on on bias - */ else if (onBias) points[id].addText('plugin-annotations:onBias') - - /* - * Add 'from' (material) text + * Force a line break between materials */ - points[id].addText('plugin-annotations:from').addText('plugin-annotations:' + material) + notes.push('\n') }) } } - } else delete ids.cutlist - - /* - * Title: Design name - */ - points[ids.name] = mc.at - .clone() - .shift(-90, shift) - .attr( - 'data-text', - `${(store.data?.name || 'plugin-annotations:noName').replace('@freesewing/', '')} v${ - store.data?.version || 'plugin-annotations:noVersion' - }` - ) - .attr('data-text-class', `${mc.classes.name} ${mc.align}`) - .attr('data-text-transform', transform) - .attr('data-render-always', 1) // Render even when outside the part bounding box - shift += mc.dy - - /* - * Title: For (measurements set) - */ - if (store.data.for) { - points[ids.for] = mc.at - .shift(-90, shift) - .attr('data-text', `(${store.data.for})`) - .attr('data-text-class', `${mc.classes.for} ${mc.align}`) + } + if (mc.notes) { + if (Array.isArray(notes)) notes.push(...mc.notes) + else notes.push(mc.notes) + } + if (notes.length > 0) { + /* + * Add all text on a single point + */ + points[ids.notes] + .addText(notes, `${mc.classes.notes} ${mc.align}`) .attr('data-text-transform', transform) .attr('data-render-always', 1) // Render even when outside the part bounding box - shift += mc.dy - } else delete ids.for - - /* - * Title: Date - */ - points[ids.date] = mc.at - .shift(-90, shift) - .attr( - 'data-text', - new Date().toLocaleString(locale || 'en', { - weekday: 'long', - year: 'numeric', - month: 'short', - day: 'numeric', - }) - ) - .attr('data-text-class', `${mc.classes.date} ${mc.align}`) - .attr('data-text-transform', transform) - .attr('data-render-always', 1) // Render even when outside the part bounding box + .attr('data-text-lineheight', mc.dy) + } else delete ids.cutlist /* * Store all IDs in the store so we can remove this macro with rmtitle diff --git a/plugins/plugin-i18n/src/index.mjs b/plugins/plugin-i18n/src/index.mjs index 6bee18b6ebc..2943dc54019 100644 --- a/plugins/plugin-i18n/src/index.mjs +++ b/plugins/plugin-i18n/src/index.mjs @@ -1,25 +1,34 @@ import { name, version } from '../data.mjs' +const translate = (locale, text, t, pattern) => { + let translated = '' + /* + * Call oneself recursively if text is an array + */ + if (Array.isArray(text)) + return text.map((string) => translate(locale, string, t, pattern)).join(' ') + + if (t instanceof Function) return t(text, locale) + else if (typeof t[locale] === 'object') return t[locale][text] || text + else { + const msg = + "No translation method or object was passed to the i18n plugin. This plugin won't do anything without that" + if (pattern?.store?.log?.warn) { + if (!pattern.store.get(['plugins', 'plugin-i18n', 'missingMethodWarning'])) { + pattern.store.set(['plugins', 'plugin-i18n', 'missingMethodWarning'], true) + pattern.store.log.warn(msg) + } + } else console.log(msg) + + return text + } +} + export const plugin = { name, version, hooks: { - insertText: (locale, text, t, pattern) => { - if (t instanceof Function) return t(text, locale) - else if (typeof t[locale] === 'object') return t[locale][text] || text - else { - const msg = - "No translation method or object was passed to the i18n plugin. This plugin won't do anything without that" - if (pattern?.store?.log?.warn) { - if (!pattern.store.get(['plugins', 'plugin-i18n', 'missingMethodWarning'])) { - pattern.store.set(['plugins', 'plugin-i18n', 'missingMethodWarning'], true) - pattern.store.log.warn(msg) - } - } else console.log(msg) - - return text - } - }, + insertText: (locale, text, t, pattern) => translate(locale, text, t, pattern), }, } From d8ae8827a70325a2f55241c544e82eac09f653d9 Mon Sep 17 00:00:00 2001 From: FreeSewing bot Date: Sat, 6 Jan 2024 22:14:44 +0100 Subject: [PATCH 17/46] feat: New showcase post hand-stitched-teagans-by-vili-with-explanation-of-the-stitches by Natalia --- .../en.md | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 markdown/org/showcase/hand-stitched-teagans-by-vili-with-explanation-of-the-stitches/en.md diff --git a/markdown/org/showcase/hand-stitched-teagans-by-vili-with-explanation-of-the-stitches/en.md b/markdown/org/showcase/hand-stitched-teagans-by-vili-with-explanation-of-the-stitches/en.md new file mode 100644 index 00000000000..4b7f93d4af0 --- /dev/null +++ b/markdown/org/showcase/hand-stitched-teagans-by-vili-with-explanation-of-the-stitches/en.md @@ -0,0 +1,41 @@ +--- +title: "Hand-stitched Teagans by Vili, with explanation of the stitches" +caption: "A hand-stitched Teagan" +date: 20240106 +intro: "The FreeSewing community enjoyed following Vili's explorations of different hand stitch options on the Teagan t-shirt!" +designs: ["teagan"] +maker: Natalia +--- + +The FreeSewing community enjoyed following Vili's explorations of different hand stitch options on the Teagan t-shirt! Hand-stitching stretch fabrics is rather unusual and presented challenges, but we think the result looks great. + +Read on for more descriptions and photos of Vili's process. + +![1st Side](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-hand-stitched-teagans-by-vili-with-explanation-of-the-stitches-1/public "1st Side") + +![2nd Front](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-hand-stitched-teagans-by-vili-with-explanation-of-the-stitches-2/public "2nd Front") + +![2nd Side](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-hand-stitched-teagans-by-vili-with-explanation-of-the-stitches-4/public "2nd Side") + +![Another view](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-hand-stitched-teagans-by-vili-with-explanation-of-the-stitches-5/public "Another view") + +![Another view](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-hand-stitched-teagans-by-vili-with-explanation-of-the-stitches-6/public "Another view") + +The maker shared: + +> My first idea was to use a blanket stitch, honestly can't remember where I got this idea. This didn't work very well, as you either had to leave the stitches loose, allowing the seam to gape, or pull it tight making the seam bulky. + +![Blanket stitch](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-hand-stitched-teagans-by-vili-with-explanation-of-the-stitches-7/public "Blanket stitch") + +> The second idea was to do a fine/short stitch length herringbone stitch. This worked well, and allows the fabric to stretch as much as it would without the stitch! It does use a bunch of thread done this way, and is laborious, but it works. + +![Herringbone](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-hand-stitched-teagans-by-vili-with-explanation-of-the-stitches-8/public "Herringbone") + +> My last experiment, and the stitch I'm going to be using for this from now on, is the humble backstitch! It's more efficient than the herringbone, and works just as well for parts that don't need a lot of stretch. Aside from the blanket stitch, the edges were left unfinished, which has worked out fine. + +![Backstitch](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-hand-stitched-teagans-by-vili-with-explanation-of-the-stitches-9/public "Backstitch") + +> For hemming, I tried both a herringbone with every other stitch being super long (there are other ways of course) and a backstitch. The herringbone works, but I preferred the look of the backstitch. It should be noted that a hand-sewn backstitch has a lot more stretch than a machine-sewn straight stitch, so it's worth testing and seeing if it could work for you, even when some strech is needed! + +![Hem backstitch](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-hand-stitched-teagans-by-vili-with-explanation-of-the-stitches-9/public "Hem backstitch") + From 3626efc2f26dbabc98f2b04b50fb664f817940f3 Mon Sep 17 00:00:00 2001 From: FreeSewing bot Date: Sat, 6 Jan 2024 22:21:32 +0100 Subject: [PATCH 18/46] feat: New showcase post simon-by-lasermonkey12-feat-hand-sewn-buttonholes by Natalia --- .../en.md | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 markdown/org/showcase/simon-by-lasermonkey12-feat-hand-sewn-buttonholes/en.md diff --git a/markdown/org/showcase/simon-by-lasermonkey12-feat-hand-sewn-buttonholes/en.md b/markdown/org/showcase/simon-by-lasermonkey12-feat-hand-sewn-buttonholes/en.md new file mode 100644 index 00000000000..44086d65ff7 --- /dev/null +++ b/markdown/org/showcase/simon-by-lasermonkey12-feat-hand-sewn-buttonholes/en.md @@ -0,0 +1,23 @@ +--- +title: "Simon by lasermonkey12, feat. hand-sewn buttonholes" +caption: "Don't miss the details on this great-looking Simon" +date: 20240106 +intro: "This Simon shirt features hand-sewn buttonholes and a home-patterned tower placket." +designs: ["simon"] +maker: Natalia +--- + +This Simon shirt by maker lasermonkey12 features hand-sewn buttonholes and a home-patterned tower placket. + +She shared that this version has hand-sewn buttonholes and a home-patterned tower placket. The detail photos below include the accent fabric for placket, inside undercollar and inside cuffs because it's fun! + +![Details](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-simon-by-lasermonkey12-feat-hand-sewn-buttonholes-2/public "Details") + +![Details](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-simon-by-lasermonkey12-feat-hand-sewn-buttonholes-3/public "Details") + +![Details](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-simon-by-lasermonkey12-feat-hand-sewn-buttonholes-4/public "Details") + +![Details](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-simon-by-lasermonkey12-feat-hand-sewn-buttonholes-1/public "Details") + +These photos were shared by lasermonkey12 on [Discord](https://discord.freesewing.org/), and have been reposted here with permission. + From 52c5eb5077c9c944fb19fd5a97af4d51103d293c Mon Sep 17 00:00:00 2001 From: FreeSewing bot Date: Sat, 6 Jan 2024 22:26:16 +0100 Subject: [PATCH 19/46] feat: New showcase post xl-octoplushy-by-lasermonkey12 by Natalia --- .../xl-octoplushy-by-lasermonkey12/en.md | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 markdown/org/showcase/xl-octoplushy-by-lasermonkey12/en.md diff --git a/markdown/org/showcase/xl-octoplushy-by-lasermonkey12/en.md b/markdown/org/showcase/xl-octoplushy-by-lasermonkey12/en.md new file mode 100644 index 00000000000..704efbd33be --- /dev/null +++ b/markdown/org/showcase/xl-octoplushy-by-lasermonkey12/en.md @@ -0,0 +1,21 @@ +--- +title: "XL Octoplushy by lasermonkey12" +caption: "Octoplushy, stuffing in progress" +date: 20240106 +intro: "Not sure what to do with your scraps? Let us introduce the best idea ever: an XL Octoplushy." +designs: ["octoplushy"] +maker: Natalia +--- + +Not sure what to do with your scraps? Let us introduce the best idea ever: an XL Octoplushy. This was made by lasermonkey12 who shared on [Discord](https://discord.freesewing.org/) and granted us permission to repost here. She notes that this Octoplushy is stuffed with scraps and is not full yet, thus the zipper. + +![Details](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-xl-octoplushy-by-lasermonkey12-1/public "Details") + +![Details](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-xl-octoplushy-by-lasermonkey12-2/public "Details") + +![Details](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-xl-octoplushy-by-lasermonkey12-3/public "Details") + +![Details](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-xl-octoplushy-by-lasermonkey12-4/public "Details") + +![Details](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-xl-octoplushy-by-lasermonkey12-5/public "Details") + From 31871b3f12d4a9aea77757415b40646db8f637bf Mon Sep 17 00:00:00 2001 From: FreeSewing bot Date: Sat, 6 Jan 2024 22:30:38 +0100 Subject: [PATCH 20/46] feat: New showcase post surprise-giant-hi-by-lasermonkey12 by Natalia --- .../surprise-giant-hi-by-lasermonkey12/en.md | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 markdown/org/showcase/surprise-giant-hi-by-lasermonkey12/en.md diff --git a/markdown/org/showcase/surprise-giant-hi-by-lasermonkey12/en.md b/markdown/org/showcase/surprise-giant-hi-by-lasermonkey12/en.md new file mode 100644 index 00000000000..1f61083ebc9 --- /dev/null +++ b/markdown/org/showcase/surprise-giant-hi-by-lasermonkey12/en.md @@ -0,0 +1,21 @@ +--- +title: "Surprise-giant Hi by lasermonkey12" +caption: "A hilariously large Hi" +date: 20240106 +intro: "Bet you can't guess how small this Hi shark packed down." +designs: ["hi"] +maker: Natalia +--- + +Bet you can't guess how small this Hi shark packed down. Maker lasermonkey12 shared: + +> i asked a friend if i could send him an empty plushie with a zipper installed and have him stuff it. he did not expect me to make it this large (and i intentionally packed it as small as possible) + +Best. Delivery. Ever. + +![Another view](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-surprise-giant-hi-by-lasermonkey12-1/public "Another view") + +![Flat Hi](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-surprise-giant-hi-by-lasermonkey12-2/public "Flat Hi") + +![Packed Hi](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-surprise-giant-hi-by-lasermonkey12-3/public "Packed Hi") + From 568b1183ad90470d4f3e63568023ae123278ef33 Mon Sep 17 00:00:00 2001 From: FreeSewing bot Date: Sat, 6 Jan 2024 22:32:44 +0100 Subject: [PATCH 21/46] feat: New showcase post 100percent-full-sandy-by-lasermonkey12 by Natalia --- .../100percent-full-sandy-by-lasermonkey12/en.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 markdown/org/showcase/100percent-full-sandy-by-lasermonkey12/en.md diff --git a/markdown/org/showcase/100percent-full-sandy-by-lasermonkey12/en.md b/markdown/org/showcase/100percent-full-sandy-by-lasermonkey12/en.md new file mode 100644 index 00000000000..55e80acee8a --- /dev/null +++ b/markdown/org/showcase/100percent-full-sandy-by-lasermonkey12/en.md @@ -0,0 +1,11 @@ +--- +title: "100% full Sandy by lasermonkey12" +caption: "We love the dotty fabric" +date: 20240106 +intro: "This Sandy circle skirt is a full circle." +designs: ["sandy"] +maker: Natalia +--- + +This Sandy circle skirt by maker lasermonkey12 is a 100% circle. We love the choice of fun fabric for this cute skirt! + From 3c28f3c7733b5180f07500e58f4155c9dea82e94 Mon Sep 17 00:00:00 2001 From: FreeSewing bot Date: Sat, 6 Jan 2024 22:36:47 +0100 Subject: [PATCH 22/46] feat: New showcase post sleeveless-simon-by-lasermonkey12 by Natalia --- .../showcase/sleeveless-simon-by-lasermonkey12/en.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 markdown/org/showcase/sleeveless-simon-by-lasermonkey12/en.md diff --git a/markdown/org/showcase/sleeveless-simon-by-lasermonkey12/en.md b/markdown/org/showcase/sleeveless-simon-by-lasermonkey12/en.md new file mode 100644 index 00000000000..f646ed6933a --- /dev/null +++ b/markdown/org/showcase/sleeveless-simon-by-lasermonkey12/en.md @@ -0,0 +1,11 @@ +--- +title: "Sleeveless Simon by lasermonkey12" +caption: "A sleeveless Simon shirt" +date: 20240106 +intro: "Maker lasermonkey12 has made lots of great Simon shirts, including this sleeveless one." +designs: ["simon"] +maker: Natalia +--- + +Maker lasermonkey12 has made lots of great Simon shirts, including this sleeveless one. We love the fresh look, well-suited for hot weather! This was shared on [Discord](https://discord.freesewing.org/) and is reposted here with permission. + From d8845bbae9adb2cbef3e3dd75958438036b37c26 Mon Sep 17 00:00:00 2001 From: FreeSewing bot Date: Sat, 6 Jan 2024 22:40:14 +0100 Subject: [PATCH 23/46] feat: New showcase post a-squid-friend-for-octopus by Natalia --- .../org/showcase/a-squid-friend-for-octopus/en.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 markdown/org/showcase/a-squid-friend-for-octopus/en.md diff --git a/markdown/org/showcase/a-squid-friend-for-octopus/en.md b/markdown/org/showcase/a-squid-friend-for-octopus/en.md new file mode 100644 index 00000000000..4c249bc2a4d --- /dev/null +++ b/markdown/org/showcase/a-squid-friend-for-octopus/en.md @@ -0,0 +1,11 @@ +--- +title: "A squid friend for octopus" +caption: "This sweet blue creature was made as a buddy for the XL Octoplushy." +date: 20240106 +intro: "That Octoplushy is a squid (variant)!" +designs: ["octoplushy"] +maker: Natalia +--- + +That Octoplushy is a squid (variant)! lasermonkey12 made this blue squid as a friend for her previous octopus version. + From 1264104d80bf8723e5c53100f9315e732ea3a167 Mon Sep 17 00:00:00 2001 From: FreeSewing bot Date: Sat, 6 Jan 2024 22:42:47 +0100 Subject: [PATCH 24/46] feat: New showcase post a-delightfully-drapey-teagan-by-lasermonkey12 by Natalia --- .../en.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 markdown/org/showcase/a-delightfully-drapey-teagan-by-lasermonkey12/en.md diff --git a/markdown/org/showcase/a-delightfully-drapey-teagan-by-lasermonkey12/en.md b/markdown/org/showcase/a-delightfully-drapey-teagan-by-lasermonkey12/en.md new file mode 100644 index 00000000000..a00510832ee --- /dev/null +++ b/markdown/org/showcase/a-delightfully-drapey-teagan-by-lasermonkey12/en.md @@ -0,0 +1,11 @@ +--- +title: "A delightfully drapey Teagan by lasermonkey12" +caption: "This Teagan t-shirt has lovely drape." +date: 20240106 +intro: "Maker lasermonkey12 shared this very wearable Teagan tee." +designs: ["teagan"] +maker: Natalia +--- + +Maker lasermonkey12 shared this very wearable Teagan tee. The dotty fabric is the festive cousin of the one she used for her Sandy circle skirt, also viewable in a separate showcase post. This was shared on our [Discord](https://discord.freesewing.org/) and has been reposted here with permission. + From 4bcbce06e2f32c3ec5a32e5b8baf45c681be8277 Mon Sep 17 00:00:00 2001 From: FreeSewing bot Date: Sat, 6 Jan 2024 22:46:09 +0100 Subject: [PATCH 25/46] feat: New showcase post two-short-sleeved-simons-by-lasermonkey12 by Natalia --- .../two-short-sleeved-simons-by-lasermonkey12/en.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 markdown/org/showcase/two-short-sleeved-simons-by-lasermonkey12/en.md diff --git a/markdown/org/showcase/two-short-sleeved-simons-by-lasermonkey12/en.md b/markdown/org/showcase/two-short-sleeved-simons-by-lasermonkey12/en.md new file mode 100644 index 00000000000..cb43f0e86a8 --- /dev/null +++ b/markdown/org/showcase/two-short-sleeved-simons-by-lasermonkey12/en.md @@ -0,0 +1,13 @@ +--- +title: "Two short-sleeved Simons by lasermonkey12" +caption: "A cheerful yellow Simon shirt" +date: 20240106 +intro: "lasermonkey12 shortened the sleeves on these two Simon shirts." +designs: ["simon"] +maker: Natalia +--- + +lasermonkey12 shortened the sleeves on these two Simon shirts. I've cheated by putting them together in a single showcase post. Love this variation! Great stitch details and fabric choices. + +![The second shirt](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-two-short-sleeved-simons-by-lasermonkey12-1/public "The second shirt") + From 43929ff8479490aafbfe9591bc792eaef73c38ae Mon Sep 17 00:00:00 2001 From: FreeSewing bot Date: Sat, 6 Jan 2024 22:50:53 +0100 Subject: [PATCH 26/46] feat: New showcase post florent-lined-with-lasermonkey12s-favorite-dr-seuss-book by Natalia --- .../en.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 markdown/org/showcase/florent-lined-with-lasermonkey12s-favorite-dr-seuss-book/en.md diff --git a/markdown/org/showcase/florent-lined-with-lasermonkey12s-favorite-dr-seuss-book/en.md b/markdown/org/showcase/florent-lined-with-lasermonkey12s-favorite-dr-seuss-book/en.md new file mode 100644 index 00000000000..5267818518b --- /dev/null +++ b/markdown/org/showcase/florent-lined-with-lasermonkey12s-favorite-dr-seuss-book/en.md @@ -0,0 +1,13 @@ +--- +title: "Florent lined with lasermonkey12's favorite Dr Seuss book" +caption: "lasermonkey12 looks great in this Florent flat cap" +date: 20240106 +intro: "Don't miss the sweet lining fabric on this Florent flat cap." +designs: ["florent"] +maker: Natalia +--- + +Don't miss the sweet lining fabric on this Florent flat cap. Maker lasermonkey12 lined it with her favorite Dr Seuss book: + +![Dr Seuss lining detail](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-florent-lined-with-lasermonkey12s-favorite-dr-seuss-book-1/public "Dr Seuss lining detail") + From 0e8bb8dc1dc2ac2d07fbea2c25b696f2f0ddd2a9 Mon Sep 17 00:00:00 2001 From: FreeSewing bot Date: Sat, 6 Jan 2024 22:55:51 +0100 Subject: [PATCH 27/46] feat: New showcase post a-simone-sandy-mashup-with-a-handkerchief-hem-by-rockerkitten by Natalia --- .../en.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 markdown/org/showcase/a-simone-sandy-mashup-with-a-handkerchief-hem-by-rockerkitten/en.md diff --git a/markdown/org/showcase/a-simone-sandy-mashup-with-a-handkerchief-hem-by-rockerkitten/en.md b/markdown/org/showcase/a-simone-sandy-mashup-with-a-handkerchief-hem-by-rockerkitten/en.md new file mode 100644 index 00000000000..d6d0c1cc592 --- /dev/null +++ b/markdown/org/showcase/a-simone-sandy-mashup-with-a-handkerchief-hem-by-rockerkitten/en.md @@ -0,0 +1,15 @@ +--- +title: "A Simone + Sandy mashup with a handkerchief hem by RockerKitten" +caption: "The front view of this Simone + Sandy dress" +date: 20240106 +intro: "RockerKitten combined Simone and Sandy to make this gorgeous dress." +designs: ["simone", "sandy"] +maker: Natalia +--- + +RockerKitten combined Simone and Sandy to make this gorgeous dress. We enjoyed following their progress on [Discord](https://discord.freesewing.org/), from inspo pic to final result! RK has really dialed in their FreeSewing measurements and options, with a fantastic result. + +![Side view](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-a-simone-sandy-mashup-with-a-handkerchief-hem-by-rockerkitten-1/public "Side view") + +This was made by RockerKitten, [@rockerkitten on Instagram](https://www.instagram.com/rockerkitten/), and has been shared here with permission. + From d1fff726fa1f1a47b13dd4ba19166f6496386160 Mon Sep 17 00:00:00 2001 From: FreeSewing bot Date: Sat, 6 Jan 2024 22:57:36 +0100 Subject: [PATCH 28/46] feat: New showcase post a-wearable-sandy-muslin by Natalia --- markdown/org/showcase/a-wearable-sandy-muslin/en.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 markdown/org/showcase/a-wearable-sandy-muslin/en.md diff --git a/markdown/org/showcase/a-wearable-sandy-muslin/en.md b/markdown/org/showcase/a-wearable-sandy-muslin/en.md new file mode 100644 index 00000000000..c886522e8e0 --- /dev/null +++ b/markdown/org/showcase/a-wearable-sandy-muslin/en.md @@ -0,0 +1,13 @@ +--- +title: "A wearable Sandy muslin" +caption: "Sandy "muslin" but also wearable" +date: 20240106 +intro: "Sometimes simple is perfect! RockerKitten made this Sandy skirt as a wearable muslin." +designs: ["sandy"] +maker: Natalia +--- + +Sometimes simple is perfect! RockerKitten made this Sandy skirt as a wearable muslin. We think this looks wonderfully wearable -- the perfect piece for lots of outfits. + +This was made by RockerKitten, [@rockerkitten on Instagram](https://www.instagram.com/rockerkitten/), and has been shared here with permission. + From 0a19caa4174afa9d174a8d54b61073ea444ad6e9 Mon Sep 17 00:00:00 2001 From: nataliasayang Date: Sat, 6 Jan 2024 23:03:19 +0100 Subject: [PATCH 29/46] feat: New showcase post a-very-modified-yuri by Natalia --- .../org/showcase/a-very-modified-yuri/en.md | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 markdown/org/showcase/a-very-modified-yuri/en.md diff --git a/markdown/org/showcase/a-very-modified-yuri/en.md b/markdown/org/showcase/a-very-modified-yuri/en.md new file mode 100644 index 00000000000..a67e1ba4f6f --- /dev/null +++ b/markdown/org/showcase/a-very-modified-yuri/en.md @@ -0,0 +1,24 @@ +--- +title: "A very modified Yuri" +caption: "Yuri robe, now with pockets" +date: 20240106 +intro: "RockerKitten modified Yuri to make this cozy and cute robe." +designs: ["yuri"] +maker: Natalia +--- + +RockerKitten modified Yuri to make this cozy and cute robe. They changed the neck line, lengthened the front hood, and made the whole thing floor length. They shared: + +> it was exactly the type of hood I wanted, and the perfect base. I hate drafting sleeve caps and armscyes so that's what I use the most of 😄 +I was really really really happy that the hood fit lol. I NEVER find hoods that fit + +Yay! Love the way they took Yuri's base design and made it their own. + +![A work in progress view](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-a-very-modified-yuri-1/public "A work in progress view") + +![A work in progress view](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-a-very-modified-yuri-2/public "A work in progress view") + +![A work in progress view](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-a-very-modified-yuri-3/public "A work in progress view") + +This was made by RockerKitten, [@rockerkitten on Instagram](https://www.instagram.com/rockerkitten/), and has been shared here with permission. + From 852064c4fd6e97c8b476ad2a6fe052e666aeb8be Mon Sep 17 00:00:00 2001 From: nataliasayang Date: Sat, 6 Jan 2024 23:11:24 +0100 Subject: [PATCH 30/46] feat: New showcase post the-bella-block-by-rockerkitten by Natalia --- .../the-bella-block-by-rockerkitten/en.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 markdown/org/showcase/the-bella-block-by-rockerkitten/en.md diff --git a/markdown/org/showcase/the-bella-block-by-rockerkitten/en.md b/markdown/org/showcase/the-bella-block-by-rockerkitten/en.md new file mode 100644 index 00000000000..602b538edc5 --- /dev/null +++ b/markdown/org/showcase/the-bella-block-by-rockerkitten/en.md @@ -0,0 +1,15 @@ +--- +title: "The Bella block by RockerKitten" +caption: "A muslin of Bella" +date: 20240106 +intro: "The Bella block is what brought RockerKitten to FreeSewing -- and we couldn't be more grateful that she found us!" +designs: ["bella"] +maker: Natalia +--- + +The Bella block is what brought RockerKitten to FreeSewing -- and we couldn't be more grateful that she found us! She has dialed in her preferences and measurements to find her ideal fit. This is one of her muslins. + +RockerKitten graciously shares tips, encouragement, and advice with folks on [Discord](https://discord.freesewing.org/). Come join the discussion over there if you're interested in trying FreeSewing's blocks! + +This was made by RockerKitten, [@rockerkitten on Instagram](https://www.instagram.com/rockerkitten/), and has been shared here with permission. + From e7470f0f401a86f3834a628bfaaee736d73917a3 Mon Sep 17 00:00:00 2001 From: nataliasayang Date: Sat, 6 Jan 2024 23:14:44 +0100 Subject: [PATCH 31/46] feat: New showcase post rockerkittens-simone-muslin-with-a-few-modifications by Natalia --- .../en.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 markdown/org/showcase/rockerkittens-simone-muslin-with-a-few-modifications/en.md diff --git a/markdown/org/showcase/rockerkittens-simone-muslin-with-a-few-modifications/en.md b/markdown/org/showcase/rockerkittens-simone-muslin-with-a-few-modifications/en.md new file mode 100644 index 00000000000..4bc71470409 --- /dev/null +++ b/markdown/org/showcase/rockerkittens-simone-muslin-with-a-few-modifications/en.md @@ -0,0 +1,19 @@ +--- +title: "RockerKitten's Simone muslin with a few modifications" +caption: "RockerKitten sewed this muslin of the Simone shirt" +date: 20240106 +intro: "RockerKitten sewed this muslin of the Simone shirt with a few mods." +designs: ["simone"] +maker: Natalia +--- + +RockerKitten sewed this muslin of the Simone shirt with a few mods. + +![Another view](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-rockerkittens-simone-muslin-with-a-few-modifications-1/public "Another view") + +![Another view](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-rockerkittens-simone-muslin-with-a-few-modifications-2/public "Another view") + +![Details](https://imagedelivery.net/ouSuR9yY1bHt-fuAokSA5Q/showcase-rockerkittens-simone-muslin-with-a-few-modifications-3/public "Details") + +This was made by RockerKitten, [@rockerkitten on Instagram](https://www.instagram.com/rockerkitten/), and has been shared here with permission. + From 66b8bf3a062d98e931f9511b27008148175edec0 Mon Sep 17 00:00:00 2001 From: joostdecock Date: Sun, 7 Jan 2024 15:52:50 +0100 Subject: [PATCH 32/46] fix(plugin-annotations): Typo on var name --- plugins/plugin-annotations/src/title.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/plugin-annotations/src/title.mjs b/plugins/plugin-annotations/src/title.mjs index d8ae7083809..3dd0e4f5cd2 100644 --- a/plugins/plugin-annotations/src/title.mjs +++ b/plugins/plugin-annotations/src/title.mjs @@ -182,7 +182,7 @@ const title = function (config, { Point, points, scale, locale, store, part, log } } if (mc.notes) { - if (Array.isArray(notes)) notes.push(...mc.notes) + if (Array.isArray(mc.notes)) notes.push(...mc.notes) else notes.push(mc.notes) } if (notes.length > 0) { From dfa4c0f509686a6e3f03946590b006a13aa03f71 Mon Sep 17 00:00:00 2001 From: joostdecock Date: Sun, 7 Jan 2024 15:53:44 +0100 Subject: [PATCH 33/46] fix: Structure of changelog --- config/changelog.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/changelog.yaml b/config/changelog.yaml index f2366ced630..dfc6786f6b0 100644 --- a/config/changelog.yaml +++ b/config/changelog.yaml @@ -1,5 +1,4 @@ Unreleased: - Added: Added: plugin-annotations: @@ -10,7 +9,8 @@ Unreleased: react-components: - This Pattern component now supports translation of nested arrays of strings, giving you more flexibility to concatenate translated parts of strings - Removed: + Removed: + plugin-annotations: - The `classes.cutlist` config is removed from the title plugin, cutlist info is now included as notes 3.1.0: From 0d45d22447a86a619a75571cd95943cf292f76f5 Mon Sep 17 00:00:00 2001 From: joostdecock Date: Sun, 7 Jan 2024 16:06:48 +0100 Subject: [PATCH 34/46] chore: Updated title unit tests --- plugins/plugin-annotations/src/title.mjs | 9 +-- .../plugin-annotations/tests/title.test.mjs | 71 +++++++++++++++++-- 2 files changed, 70 insertions(+), 10 deletions(-) diff --git a/plugins/plugin-annotations/src/title.mjs b/plugins/plugin-annotations/src/title.mjs index 3dd0e4f5cd2..28731e227b1 100644 --- a/plugins/plugin-annotations/src/title.mjs +++ b/plugins/plugin-annotations/src/title.mjs @@ -16,6 +16,7 @@ const macroDefaults = { scale: 1, title: 'plugin-annotations:noName', notes: false, + brand: 'FreeSewing', classes: { notes: 'text-md fill-current', date: 'text-sm fill-current', @@ -135,14 +136,14 @@ const title = function (config, { Point, points, scale, locale, store, part, log .clone() .shift(-90, shift) .addText( - `FreeSewing ${capitalize( + `${mc.brand} ${capitalize( (store.data?.name || 'plugin-annotations:noName').replace('@freesewing/', '') - )} v${store.data?.version || 'plugin-annotations:noVersion'} ( `, + )} v${store.data?.version || 'plugin-annotations:noVersion'} (`, `${mc.classes.name} ${mc.align}` ) .addText(store.data?.for ? store.data.for : 'ephemeral') - .addText(' )') + .addText(')') .attr('data-text-transform', transform) .attr('data-render-always', 1) // Render even when outside the part bounding box shift += mc.dy @@ -162,7 +163,7 @@ const title = function (config, { Point, points, scale, locale, store, part, log * Iterate over materials */ for (const [material, instructions] of Object.entries(partCutlist.materials)) { - instructions.forEach(({ cut, identical, onBias, onFold }, c) => { + instructions.forEach(({ cut, identical, onBias, onFold }) => { /* * Concat line */ diff --git a/plugins/plugin-annotations/tests/title.test.mjs b/plugins/plugin-annotations/tests/title.test.mjs index 83e82e4364a..65cca5c89dd 100644 --- a/plugins/plugin-annotations/tests/title.test.mjs +++ b/plugins/plugin-annotations/tests/title.test.mjs @@ -39,12 +39,12 @@ describe('Title Plugin Tests', () => { expect(p.attributes.get('data-text')).to.equal('unitTest') expect(p.attributes.get('data-text-class')).to.equal('text-lg fill-current font-bold left') expect(p.attributes.get('data-text-x')).to.equal('-12') - expect(p.attributes.get('data-text-y')).to.equal('-26') + expect(p.attributes.get('data-text-y')).to.equal('-18') p = pattern.parts[0].test.points.__macro_title_title_name - expect(p.attributes.get('data-text')).to.equal('testPattern v99') + expect(p.attributes.get('data-text')).to.equal('FreeSewing TestPattern v99 ( ephemeral )') expect(p.attributes.get('data-text-class')).to.equal('fill-note left') expect(p.attributes.get('data-text-x')).to.equal('-12') - expect(p.attributes.get('data-text-y')).to.equal('-18') + expect(p.attributes.get('data-text-y')).to.equal('-10') p = pattern.parts[0].test.points.__macro_title_title_date expect(p.attributes.get('data-text')).to.include(', 202') }) @@ -117,12 +117,12 @@ describe('Title Plugin Tests', () => { expect(p.attributes.get('data-text')).to.equal('unitTest') expect(p.attributes.get('data-text-class')).to.equal('text-lg fill-current font-bold left') expect(p.attributes.get('data-text-x')).to.equal('-12') - expect(p.attributes.get('data-text-y')).to.equal('-26') + expect(p.attributes.get('data-text-y')).to.equal('-18') p = pattern.parts[0].test.points.__macro_title_foo_name - expect(p.attributes.get('data-text')).to.equal('testPattern v99') + expect(p.attributes.get('data-text')).to.equal('FreeSewing TestPattern v99 ( ephemeral )') expect(p.attributes.get('data-text-class')).to.equal('fill-note left') expect(p.attributes.get('data-text-x')).to.equal('-12') - expect(p.attributes.get('data-text-y')).to.equal('-18') + expect(p.attributes.get('data-text-y')).to.equal('-10') }) it('Should run the title macro with custom alignment', () => { @@ -209,4 +209,63 @@ describe('Title Plugin Tests', () => { ) expect(p.__macro_title_title_name.attributes.get('data-text-class')).to.equal('fill-note left') }) + + it('Should run the title macro with notes', () => { + const notes = 'These are the notes\nHere are some more notes' + const part = { + name: 'test', + draft: ({ points, Point, macro, part }) => { + points.anchor = new Point(-12, -34) + macro('title', { + at: points.anchor, + nr: 3, + title: 'unitTest', + notes, + }) + + return part + }, + plugins: [annotationsPlugin], + } + // Note that we're not loading core plugins but the local plugin + const Pattern = new Design({ + data: { name: 'testPattern', version: 99 }, + parts: [part], + noCorePlugins: true, + }) + const pattern = new Pattern() + pattern.draft().render() + let p = pattern.parts[0].test.points.__macro_title_title_notes + expect(p.attributes.get('data-text')).to.equal(notes) + }) + + it('Should run the title macro with a custom brand', () => { + const brand = 'Bazooka Patterns' + const part = { + name: 'test', + draft: ({ points, Point, macro, part }) => { + points.anchor = new Point(-12, -34) + macro('title', { + at: points.anchor, + nr: 3, + title: 'unitTest', + brand, + id: 'foo', + }) + + return part + }, + plugins: [annotationsPlugin], + } + // Note that we're not loading core plugins but the local plugin + const Pattern = new Design({ + data: { name: 'testPattern', version: 99 }, + parts: [part], + noCorePlugins: true, + }) + const pattern = new Pattern() + pattern.draft().render() + let p = pattern.parts[0].test.points.__macro_title_foo_name + expect(p.attributes.get('data-text')).to.equal(`${brand} TestPattern v99 ( ephemeral )`) + }) }) From d9741254a95c76f4d5e50670cd7a3fe61ff96598 Mon Sep 17 00:00:00 2001 From: joostdecock Date: Sun, 7 Jan 2024 16:26:31 +0100 Subject: [PATCH 35/46] chore(sites): imprive inline code styling --- sites/shared/styles/globals.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sites/shared/styles/globals.css b/sites/shared/styles/globals.css index b0085bddae5..de9991c7819 100644 --- a/sites/shared/styles/globals.css +++ b/sites/shared/styles/globals.css @@ -73,10 +73,10 @@ @apply pl-2 lg:pl-4 list-decimal list-inside text-base-content; } .mdx code { - @apply bg-neutral-content px-2 rounded text-neutral font-mono font-bold; + @apply bg-base-300 px-1.5 text-base-content font-mono font-medium bg-opacity-10 py-0.5 border-base-content rounded border; } .mdx pre code { - @apply bg-inherit; + @apply bg-inherit border-0; } .mdx a.heading-autolink { color: currentColor; From 2d37cc6ee5bf6fcae6cecdbfe73aca6964ef796e Mon Sep 17 00:00:00 2001 From: joostdecock Date: Sun, 7 Jan 2024 16:33:38 +0100 Subject: [PATCH 36/46] chore(sites): Improved tabbed example mdx component --- sites/shared/components/tabs.mjs | 41 +++++++++++++++----------------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/sites/shared/components/tabs.mjs b/sites/shared/components/tabs.mjs index 98c17e5f73e..445c89f3996 100644 --- a/sites/shared/components/tabs.mjs +++ b/sites/shared/components/tabs.mjs @@ -32,28 +32,25 @@ export const Tabs = ({ tabs = '', active = 0, children, withModal = false }) => }` return withModal && activeTab === tabId ? ( -

+ ) : (