diff --git a/.all-contributorsrc b/.all-contributorsrc index 41c806935fa..f73044c57ab 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -1005,7 +1005,17 @@ "contributions": [ "code" ] + }, + { + "login": "trentonTrama", + "name": "Trent Trama", + "avatar_url": "https://avatars.githubusercontent.com/u/41126812?v=4", + "profile": "https://github.com/trentonTrama", + "contributions": [ + "code" + ] } ], - "skipCi": true + "skipCi": true, + "commitType": "docs" } diff --git a/.github/workflows/dependabot-sync.yml b/.github/workflows/dependabot-sync.yml index 0706705a3cb..fb5c444ab17 100644 --- a/.github/workflows/dependabot-sync.yml +++ b/.github/workflows/dependabot-sync.yml @@ -35,7 +35,7 @@ jobs: - name: Reconfigure run: node --experimental-json-modules --no-warnings ./scripts/reconfigure.mjs - name: Bootstrap - run: npx lerna bootstrap + run: yarn install - name: Commit Changes run: | git add . diff --git a/.github/workflows/lint.all.yml b/.github/workflows/lint.all.yml index 5b36c52984e..7eb729022fe 100644 --- a/.github/workflows/lint.all.yml +++ b/.github/workflows/lint.all.yml @@ -33,10 +33,8 @@ jobs: key: node_modules-${{ hashFiles('yarn.lock') }} - name: Install dependencies if: steps.cache_node_modules.outputs.cache-hit != 'true' - run: npx lerna bootstrap + run: yarn install env: CI: true - - name: Buil all - run: yarn buildall - name: Run eslint run: npm run lint diff --git a/.github/workflows/lint.diff.yml b/.github/workflows/lint.diff.yml index 7a60fc67af6..1e14639cc7e 100644 --- a/.github/workflows/lint.diff.yml +++ b/.github/workflows/lint.diff.yml @@ -39,14 +39,11 @@ jobs: key: node_modules-${{ hashFiles('yarn.lock') }} - name: Install dependencies if: steps.cache_node_modules.outputs.cache-hit != 'true' - run: npx lerna bootstrap + run: yarn install env: CI: true - name: Buil all run: yarn buildall - # Why are we prebuilding packages? - #- name: Prebuild Packages - # run: npx lerna run prebuild - name: Run eslint run: | changed_files="$(git diff --name-only origin/${{ github.base_ref }})" diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml index 32aa60c6d22..fc05cc8657e 100644 --- a/.github/workflows/playwright.yml +++ b/.github/workflows/playwright.yml @@ -25,7 +25,7 @@ name: Playwright Tests # key: node_modules-${{ hashFiles('yarn.lock') }} # - name: Install dependencies # if: steps.cache_node_modules.outputs.cache-hit != 'true' -# run: npx lerna bootstrap +# run: yarn install # - name: Install Playwright Browsers # run: yarn playwright install --with-deps # - name: Run Playwright tests diff --git a/.github/workflows/tests.all.yml b/.github/workflows/tests.all.yml index f59058331f7..4bf08eafdc3 100644 --- a/.github/workflows/tests.all.yml +++ b/.github/workflows/tests.all.yml @@ -41,7 +41,7 @@ jobs: key: node_modules-${{ hashFiles('yarn.lock') }} - name: Install dependencies if: steps.cache_node_modules.outputs.cache-hit != 'true' - run: npx lerna bootstrap + run: yarn install env: CI: true - name: Run all tests diff --git a/.github/workflows/tests.new-design.yml b/.github/workflows/tests.new-design.yml index afe7b7641eb..9958921bfd5 100644 --- a/.github/workflows/tests.new-design.yml +++ b/.github/workflows/tests.new-design.yml @@ -1,81 +1,81 @@ name: Test new-design -on: - push: - branches: - - develop - pull_request: - branches: - - develop -jobs: - shared_setup: - runs-on: ubuntu-latest - outputs: - files: ${{ steps.diff.outputs.files }} - steps: - - name: Fetch PR base ref - uses: actions/checkout@v3 - with: - ref: ${{ github.base_ref }} - - name: Checkout PR ref - uses: actions/checkout@v3 - with: - ref: ${{ github.ref }} - - name: Diff for relevant files - id: diff - run: echo "files=$(git diff --shortstat origin/${{github.base_ref}} sites/shared sites/lab/components packages/new-design packages/core plugins)" >> "$GITHUB_OUTPUT" - - uses: actions/setup-node@v3 - if: steps.diff.outputs.files - with: - node-version: 18 - - name: Cache node modules - uses: actions/cache@v3 - if: steps.diff.outputs.files - id: cache_node_modules - with: - # caching node_modules - path: '**/node_modules' - key: node_modules-${{ hashFiles('yarn.lock') }} - lookup-only: true - - name: Install dependencies - if: steps.diff.outputs.files && steps.cache_node_modules.outputs.cache-hit != 'true' - run: npx lerna bootstrap - env: - CI: true - - test: - if: needs.shared_setup.outputs.files - needs: shared_setup - timeout-minutes: 60 - runs-on: ubuntu-latest - strategy: - matrix: - template: - - scratch - - tutorial - - bent - steps: - - name: Checkout PR ref - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 18 - - name: Cache node modules - uses: actions/cache/restore@v3 - id: cache_node_modules - with: - # caching node_modules - path: '**/node_modules' - key: node_modules-${{ hashFiles('yarn.lock') }} - - name: Prebuild i18n - run: yarn i18n-only - working-directory: ./packages/new-design - - name: Generate Design - run: | - cd ../ - TEMPLATE=${{ matrix.template }} NAME=test${{ matrix.template }} node ${{ github.workspace }}/packages/new-design/scripts/generate-from-cli.mjs - - name: Install Playwright Browsers - run: yarn playwright install --with-deps - working-directory: ../test${{ matrix.template }} - - name: Run Playwright tests - run: yarn playwright test - working-directory: ../test${{ matrix.template }} + #on: + # push: + # branches: + # - develop + # pull_request: + # branches: + # - develop + #jobs: + # shared_setup: + # runs-on: ubuntu-latest + # outputs: + # files: ${{ steps.diff.outputs.files }} + # steps: + # - name: Fetch PR base ref + # uses: actions/checkout@v3 + # with: + # ref: ${{ github.base_ref }} + # - name: Checkout PR ref + # uses: actions/checkout@v3 + # with: + # ref: ${{ github.ref }} + # - name: Diff for relevant files + # id: diff + # run: echo "files=$(git diff --shortstat origin/${{github.base_ref}} sites/shared sites/lab/components packages/new-design packages/core plugins)" >> "$GITHUB_OUTPUT" + # - uses: actions/setup-node@v3 + # if: steps.diff.outputs.files + # with: + # node-version: 18 + # - name: Cache node modules + # uses: actions/cache@v3 + # if: steps.diff.outputs.files + # id: cache_node_modules + # with: + # # caching node_modules + # path: '**/node_modules' + # key: node_modules-${{ hashFiles('yarn.lock') }} + # lookup-only: true + # - name: Install dependencies + # if: steps.diff.outputs.files && steps.cache_node_modules.outputs.cache-hit != 'true' + # run: yarn install + # env: + # CI: true + # + # test: + # if: needs.shared_setup.outputs.files + # needs: shared_setup + # timeout-minutes: 60 + # runs-on: ubuntu-latest + # strategy: + # matrix: + # template: + # - scratch + # - tutorial + # - bent + # steps: + # - name: Checkout PR ref + # uses: actions/checkout@v3 + # - uses: actions/setup-node@v3 + # with: + # node-version: 18 + # - name: Cache node modules + # uses: actions/cache/restore@v3 + # id: cache_node_modules + # with: + # # caching node_modules + # path: '**/node_modules' + # key: node_modules-${{ hashFiles('yarn.lock') }} + # - name: Prebuild i18n + # run: yarn i18n-only + # working-directory: ./packages/new-design + # - name: Generate Design + # run: | + # cd ../ + # TEMPLATE=${{ matrix.template }} NAME=test${{ matrix.template }} node ${{ github.workspace }}/packages/new-design/scripts/generate-from-cli.mjs + # - name: Install Playwright Browsers + # run: yarn playwright install --with-deps + # working-directory: ../test${{ matrix.template }} + # - name: Run Playwright tests + # run: yarn playwright test + # working-directory: ../test${{ matrix.template }} diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index b3d5ab3b254..c17eb1db307 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -104,46 +104,47 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/README.md b/README.md index fdf34328c3b..42d59fe6720 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/config/dependencies.yaml b/config/dependencies.yaml index e0fd028812e..6278305e403 100644 --- a/config/dependencies.yaml +++ b/config/dependencies.yaml @@ -192,7 +192,7 @@ yuri: backend: _: - '@aws-sdk/client-sesv2': '3.348.0' + '@aws-sdk/client-sesv2': '3.352.0' '@prisma/client': &prisma '4.15.0' 'bcryptjs': '2.4.3' 'cors': '2.8.5' @@ -212,8 +212,8 @@ backend: 'swagger-ui-express': '4.6.3' dev: 'chai': *chai - 'chai-http': '4.3.0' - 'esbuild': '0.17.19' + 'chai-http': '4.4.0' + 'esbuild': '0.18.2' 'mocha': *mocha 'mocha-steps': '1.3.0' 'nodemon': '2.0.22' @@ -225,10 +225,10 @@ dev: '@mdx-js/mdx': *mdx '@mdx-js/react': *mdx '@mdx-js/runtime': &mdxRuntime '2.0.0-next.9' - '@next/bundle-analyzer': &next '13.4.4' + '@next/bundle-analyzer': &next '13.4.6' '@tailwindcss/typography': &tailwindTypography '0.5.9' - 'algoliasearch': '4.17.1' - 'daisyui': &daisyui '3.0.3' + 'algoliasearch': '4.17.2' + 'daisyui': &daisyui '3.1.0' 'lodash.get': *_get 'lodash.orderby': &_orderby '4.6.0' 'lodash.set': *_set @@ -276,7 +276,7 @@ lab: '@mdx-js/react': *mdx '@mdx-js/runtime': *mdxRuntime '@tailwindcss/typography': *tailwindTypography - 'algoliasearch': &algoliasearch '4.17.1' + 'algoliasearch': &algoliasearch '4.17.2' 'd3-dispatch': '3.0.1' 'd3-drag': '3.0.0' 'd3-selection': '3.0.0' @@ -345,6 +345,7 @@ org: sanity: _: '@sanity/vision': &sanity '3.12.0' + 'easymde': '2.16.0' 'react': *react 'react-dom': *react 'react-is': *react @@ -356,12 +357,12 @@ sanity: 'eslint': *eslint 'prettier': '2.8.8' 'typescript': '5.1.3' - '@sanity/cli': '3.12.0' + '@sanity/cli': '3.12.1' shared: _: '@headlessui/react': *headlessUiReact - '@next/mdx': '13.4.4' + '@next/mdx': '13.4.6' '@resvg/resvg-js': '2.4.1' '@tailwindcss/typography': *tailwindTypography 'Buffer': '0.0.0' @@ -373,6 +374,7 @@ shared: 'file-saver': '2.0.5' 'front-matter': '4.0.2' 'highlight.js': '11.8.0' + 'github-slugger': '2.0.0' 'jotai': '2.1.1' 'jotai-location': '0.5.1' 'lodash.clonedeep': '4.5.0' @@ -380,7 +382,7 @@ shared: 'lodash.unset': *_unset 'lodash.get': *_get 'mdast-util-toc': '6.1.1' - 'mermaid': '10.2.2' + 'mermaid': '10.2.3' 'pdfkit': '0.13.0' 'postcss-for': '2.1.1' 'react': *react diff --git a/config/scripts.yaml b/config/scripts.yaml index 0f9b1f1fc2b..1210e5a9e6f 100644 --- a/config/scripts.yaml +++ b/config/scripts.yaml @@ -33,6 +33,7 @@ new-design: wbuild: '!' lint: "npx eslint 'lib/*.mjs'" mbuild: '!' + prebuild: 'node ./prebuild.mjs' test: '!' testci: '!' vbuild: '!' diff --git a/designs/aaron/README.md b/designs/aaron/README.md index d0c99784448..ec1a219f414 100644 --- a/designs/aaron/README.md +++ b/designs/aaron/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/albert/README.md b/designs/albert/README.md index 67f0acb73c7..b85a791cd9d 100644 --- a/designs/albert/README.md +++ b/designs/albert/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/bee/README.md b/designs/bee/README.md index b7e7335934e..0c24ec9877c 100644 --- a/designs/bee/README.md +++ b/designs/bee/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/bella/README.md b/designs/bella/README.md index 8a831f9a307..e487a4f94a7 100644 --- a/designs/bella/README.md +++ b/designs/bella/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/benjamin/README.md b/designs/benjamin/README.md index 3ca66139db2..fef0414dd2b 100644 --- a/designs/benjamin/README.md +++ b/designs/benjamin/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/bent/README.md b/designs/bent/README.md index 48d348c2cbb..211b2a0e00a 100644 --- a/designs/bent/README.md +++ b/designs/bent/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/bob/README.md b/designs/bob/README.md index db69c9e655b..3cdc56fe729 100644 --- a/designs/bob/README.md +++ b/designs/bob/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/breanna/README.md b/designs/breanna/README.md index 6596b077d30..29ccc0c50b6 100644 --- a/designs/breanna/README.md +++ b/designs/breanna/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/brian/README.md b/designs/brian/README.md index e3a89ef3bc1..5af6dc9569d 100644 --- a/designs/brian/README.md +++ b/designs/brian/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/bruce/README.md b/designs/bruce/README.md index 28b82ce727e..145ea42a4fd 100644 --- a/designs/bruce/README.md +++ b/designs/bruce/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/carlita/README.md b/designs/carlita/README.md index ea8ede1e1fc..0caa2ae545f 100644 --- a/designs/carlita/README.md +++ b/designs/carlita/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/carlton/README.md b/designs/carlton/README.md index 506f59c8c0f..9a24cfe3c77 100644 --- a/designs/carlton/README.md +++ b/designs/carlton/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/cathrin/README.md b/designs/cathrin/README.md index d8aa68d0960..9dd3249dcb0 100644 --- a/designs/cathrin/README.md +++ b/designs/cathrin/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/charlie/README.md b/designs/charlie/README.md index c951f892774..d95fb0e1d98 100644 --- a/designs/charlie/README.md +++ b/designs/charlie/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/cornelius/README.md b/designs/cornelius/README.md index bf2c84f0cf4..9b6ddd27bb9 100644 --- a/designs/cornelius/README.md +++ b/designs/cornelius/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/diana/README.md b/designs/diana/README.md index cc37f81b772..8ee517e6e4c 100644 --- a/designs/diana/README.md +++ b/designs/diana/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/examples/README.md b/designs/examples/README.md index e58342a30c2..4a53908245a 100644 --- a/designs/examples/README.md +++ b/designs/examples/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/florence/README.md b/designs/florence/README.md index c0377b9c4fb..0b856a05d30 100644 --- a/designs/florence/README.md +++ b/designs/florence/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/florent/README.md b/designs/florent/README.md index ce79643027f..7951a09ed89 100644 --- a/designs/florent/README.md +++ b/designs/florent/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/hi/README.md b/designs/hi/README.md index c59cff09a5f..864657a5c4a 100644 --- a/designs/hi/README.md +++ b/designs/hi/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/holmes/README.md b/designs/holmes/README.md index d8a7e9b4e09..e099875924d 100644 --- a/designs/holmes/README.md +++ b/designs/holmes/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/hortensia/README.md b/designs/hortensia/README.md index fd2091a8a34..e59dae118dd 100644 --- a/designs/hortensia/README.md +++ b/designs/hortensia/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/huey/README.md b/designs/huey/README.md index f189031d783..28b93a6c744 100644 --- a/designs/huey/README.md +++ b/designs/huey/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/hugo/README.md b/designs/hugo/README.md index a2adf6af49e..9ff557c3e03 100644 --- a/designs/hugo/README.md +++ b/designs/hugo/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/jaeger/README.md b/designs/jaeger/README.md index b9c720c5537..acc785d8238 100644 --- a/designs/jaeger/README.md +++ b/designs/jaeger/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/legend/README.md b/designs/legend/README.md index 508bd8c0d14..c7d39cb4c33 100644 --- a/designs/legend/README.md +++ b/designs/legend/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/lucy/README.md b/designs/lucy/README.md index 6a615097f5a..7be9e47fd39 100644 --- a/designs/lucy/README.md +++ b/designs/lucy/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/lunetius/README.md b/designs/lunetius/README.md index b070748becf..7aedc3702f7 100644 --- a/designs/lunetius/README.md +++ b/designs/lunetius/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/magde/README.md b/designs/magde/README.md index d2bccbad639..39ee2824639 100644 --- a/designs/magde/README.md +++ b/designs/magde/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/noble/README.md b/designs/noble/README.md index ea6c202929d..1e98ebdcc10 100644 --- a/designs/noble/README.md +++ b/designs/noble/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/octoplushy/README.md b/designs/octoplushy/README.md index c6e97eb805c..aa3de3543ce 100644 --- a/designs/octoplushy/README.md +++ b/designs/octoplushy/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/paco/README.md b/designs/paco/README.md index 144bd44e2dc..172d621b128 100644 --- a/designs/paco/README.md +++ b/designs/paco/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/penelope/README.md b/designs/penelope/README.md index 7f398ee3ef5..123ec805a9b 100644 --- a/designs/penelope/README.md +++ b/designs/penelope/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/plugintest/README.md b/designs/plugintest/README.md index 9a574a30d3f..fca7aba69f2 100644 --- a/designs/plugintest/README.md +++ b/designs/plugintest/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/rendertest/README.md b/designs/rendertest/README.md index 62635ce7023..0f9a5a63932 100644 --- a/designs/rendertest/README.md +++ b/designs/rendertest/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/sandy/README.md b/designs/sandy/README.md index 42a27b1cb5a..dc87491d0a4 100644 --- a/designs/sandy/README.md +++ b/designs/sandy/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/shin/README.md b/designs/shin/README.md index 2d7aa8a40c1..b5477baf484 100644 --- a/designs/shin/README.md +++ b/designs/shin/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/simon/README.md b/designs/simon/README.md index 2e98bea2de5..0a7fd172240 100644 --- a/designs/simon/README.md +++ b/designs/simon/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/simone/README.md b/designs/simone/README.md index 627172ac26d..b754e2e6e8f 100644 --- a/designs/simone/README.md +++ b/designs/simone/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/sven/README.md b/designs/sven/README.md index 0a5b25fd3a1..6a305c84398 100644 --- a/designs/sven/README.md +++ b/designs/sven/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/tamiko/README.md b/designs/tamiko/README.md index 204e3a6f628..fde2da52b0f 100644 --- a/designs/tamiko/README.md +++ b/designs/tamiko/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/teagan/README.md b/designs/teagan/README.md index 213ccba1fa4..1fe03d72b28 100644 --- a/designs/teagan/README.md +++ b/designs/teagan/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/tiberius/README.md b/designs/tiberius/README.md index b631d011b2f..c7ac59f2b38 100644 --- a/designs/tiberius/README.md +++ b/designs/tiberius/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/titan/README.md b/designs/titan/README.md index 907f78f29b9..61a00ee9739 100644 --- a/designs/titan/README.md +++ b/designs/titan/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/trayvon/README.md b/designs/trayvon/README.md index 49ba7433e21..382cf467af6 100644 --- a/designs/trayvon/README.md +++ b/designs/trayvon/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/tutorial/README.md b/designs/tutorial/README.md index 87bf2c188c1..52de9280933 100644 --- a/designs/tutorial/README.md +++ b/designs/tutorial/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/unice/README.md b/designs/unice/README.md index 3eabbc72701..406f2e8c2f7 100644 --- a/designs/unice/README.md +++ b/designs/unice/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/ursula/README.md b/designs/ursula/README.md index 6975e6c147d..393be66e00f 100644 --- a/designs/ursula/README.md +++ b/designs/ursula/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/wahid/README.md b/designs/wahid/README.md index 89f0d3019f3..9679338157d 100644 --- a/designs/wahid/README.md +++ b/designs/wahid/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/walburga/README.md b/designs/walburga/README.md index 6132aa3569a..d884ccd3bfb 100644 --- a/designs/walburga/README.md +++ b/designs/walburga/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/waralee/README.md b/designs/waralee/README.md index b66c96fb343..04609f80080 100644 --- a/designs/waralee/README.md +++ b/designs/waralee/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/designs/yuri/README.md b/designs/yuri/README.md index bd65da11766..24a2a078d46 100644 --- a/designs/yuri/README.md +++ b/designs/yuri/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/markdown/dev/guides/content/en.md b/markdown/dev/guides/content/en.md new file mode 100644 index 00000000000..127c95c4340 --- /dev/null +++ b/markdown/dev/guides/content/en.md @@ -0,0 +1,3 @@ +--- +title: Content guides +--- diff --git a/markdown/dev/guides/content/mdx/en.md b/markdown/dev/guides/content/mdx/en.md new file mode 100644 index 00000000000..3a4dd133915 --- /dev/null +++ b/markdown/dev/guides/content/mdx/en.md @@ -0,0 +1,5 @@ +--- +title: MDX Guide +--- + +Explain MDX content diff --git a/markdown/dev/guides/content/sanity/en.md b/markdown/dev/guides/content/sanity/en.md new file mode 100644 index 00000000000..0816e8fd903 --- /dev/null +++ b/markdown/dev/guides/content/sanity/en.md @@ -0,0 +1,70 @@ +--- +title: Sanity Content Guide +--- + +FreeSewing uses Sanity content needs to be edited/written by non-technical contributors, +and for images uploaded by users, such as for their profile image and so on. + + + +You can manage FreeSewing's Sanity content at +[cms.freesewing.org](https://cms.freesewing.org/) + + +By *content that needs to be edited/written by non-technical contributors* we mean: + +- Newsletter posts +- Blog posts in all languages +- Showcase posts in all languages + +## Why we use Sanity + +The (historical) reason that we use a (headless) CMS for this lies with **the +showcase posts**. Our documentation is still hosted in git as MDX, and +historically this was also the case for our blog posts and showcase posts. + +However, while documentation is written by contributors who are familiar with +how we work, and blog posts are typically written by Joost, showcase posts are +often provided by users of the site for whom submitting a pull request is a +steep learning curve. + +So for this reason, we started using an external CMS to host the showcase +posts. And, since blog posts and showcase posts are so similar, we decided to +use this platform for both. Later, we added newsletter content to this list +because this too is sometimes provided by people not so familiar with the git +workflow. + +Prior to version 3, we used a self-hosted version of +[Strapi](https://strapi.io/) for this. And while that did what we needed, +self-hosting adds workload to people and our backend systems, so it's not +without its drawbacks. Then, with the release of Strapi v4, they dropped +support for MongoDB, which was the database we are using, so we were stuck on +v3 of Strapi. + +So for FreeSewing v3 we started looking for alternatives, and after trying +various solutions Sanity came out as the best solution for our needs. It's a +SaaS solution -- which is nice because it means we don't have to host anything +-- but the flip side of the coin is that as a communal open source project, we +obviously cannot afford it. + +Fortunately for us, the same reasons that mean we don't have any money also +mean that Sanity took pity on us, and they agreed to waive their fees and let +us use their service free of charge. So, Sanity is now a FreeSewing sponsor, +and since everything is in place already, we also use them to host user images +because honestly it's a really nice service. + +## How to manage Sanity content + +As Sanity is a headless CMS, you essentially have to talk to the API to manage +your content. + +Fear not though, we don't expect you to do that. The Sanity Studio is a +web-based frontend that allows you to manage the content in a web environment, +and we have an instance of it deployed at https://cms.freeseiwng.org/ that is +pre-configured to manage FreeSewing's content. + +## For developers + +If you're looking to learn more about how to interact with the Sanity API, +please refer to [the Sanity reference documentation](/reference/sites/sanity). + diff --git a/markdown/dev/guides/en.md b/markdown/dev/guides/en.md index c2e9ac72182..46e3fd8b018 100644 --- a/markdown/dev/guides/en.md +++ b/markdown/dev/guides/en.md @@ -5,7 +5,9 @@ order: zbb You can find a list of all FreeSewing guides below: - +## Main sections + + @@ -19,3 +21,8 @@ guides take more time to explain in-depth what is being done and why. For more details, refer to [How we structure our documentation](/guides/docs). + +## Full list + + + diff --git a/markdown/dev/howtos/en.md b/markdown/dev/howtos/en.md index 146ec4e59ea..52ebf3078c2 100644 --- a/markdown/dev/howtos/en.md +++ b/markdown/dev/howtos/en.md @@ -5,7 +5,9 @@ order: zcc You can find a list of all FreeSewing hotwtos below: - +## Main sections + + @@ -19,3 +21,8 @@ guides take more time to explain in-depth what is being done and why. For more details, refer to [How we structure our documentation](/guides/docs). + +## Full list + + + diff --git a/markdown/dev/reference/api/en.md b/markdown/dev/reference/api/en.md index 22e71c3ee43..f9fb71d4d66 100644 --- a/markdown/dev/reference/api/en.md +++ b/markdown/dev/reference/api/en.md @@ -74,6 +74,7 @@ The following named exports are **utility methods**: | `lineIntersectsCircle` | See the [lineIntersectsCircle](/reference/api/utils/lineintersectscircle) documentation | | `lineIntersectsCurve` | See the [lineIntersectsCurve](/reference/api/utils/lineintersectscurve) documentation | | `linesIntersect` | See the [linesIntersect](/reference/api/utils/linesintersect) documentation | +| `mergeOptions` | See the [mergeOptions](/reference/api/utils/mergeoptions) documentation | | `pctBasedOn` | See the [pctBasedOn](/reference/api/utils/pctbasedon) documentation | | `pointOnBeam` | See the [pointOnBeam](/reference/api/utils/pointonbeam) documentation | | `pointOnCurve` | See the [pointOnCurve](/reference/api/utils/pointoncurve) documentation | diff --git a/markdown/dev/reference/api/part/config/options/pct/toabs/en.md b/markdown/dev/reference/api/part/config/options/pct/toabs/en.md index 3b20d5df34a..f32d3dbf4ff 100644 --- a/markdown/dev/reference/api/part/config/options/pct/toabs/en.md +++ b/markdown/dev/reference/api/part/config/options/pct/toabs/en.md @@ -17,16 +17,23 @@ The `toAbs` property should hold a function with the following signature: ```js -function toAbs(percentage, settings) { +function toAbs(percentage, settings, mergeOptions) { // return value in millimeter here } ``` The first parameter is the percentage value provided by the user (for example `0.5` for `50%`). + The second parameter holds the pattern's [settings](/reference/settings) object which holds -- among other things -- the measurements provided by the user. +The third parameter should be the return value of +[utils.mergeOptions()](/reference/api/utils/mergeoptions), which provides an +object with all option values populated. Although this parameter is not +required for simple values based on measurements, it is often required when the +result depends on several options. + ## Example In our example above, let's say that the `chestEase` option is diff --git a/markdown/dev/reference/api/utils/mergeoptions/en.md b/markdown/dev/reference/api/utils/mergeoptions/en.md new file mode 100644 index 00000000000..e38a054f3a5 --- /dev/null +++ b/markdown/dev/reference/api/utils/mergeoptions/en.md @@ -0,0 +1,27 @@ +--- +title: utils.mergeOptions() +--- + +The `utils.mergeOptions()` function merges the user-provided options with the +options from the pattern configuration. + +## Signature + +```js +float deg2rad(object settings, object optionsConfig) +``` + +## Notes + +Typically the only options that are passed as part of settings to the pattern +are those that differ from the defaults. This means that if you want to check +an option outside a draft method, you need to check whether the option is set, +and if it's not get the default value from the pattern config. Furthermore, +where the default is stored and whether or not it should be further transformed +depends on the option type. + +This method exists to facilitate this. You pass it the user-provided settings, +and the pattern config options key, and it will return an object where all +options are populated with the user-provided values, or their defaults if the +user did not provide any input. + diff --git a/markdown/dev/reference/sites/en.md b/markdown/dev/reference/sites/en.md new file mode 100644 index 00000000000..6240b657dd9 --- /dev/null +++ b/markdown/dev/reference/sites/en.md @@ -0,0 +1,5 @@ +--- +title: Sites +--- + + diff --git a/markdown/dev/reference/sites/sanity/en.md b/markdown/dev/reference/sites/sanity/en.md new file mode 100644 index 00000000000..f987e29b566 --- /dev/null +++ b/markdown/dev/reference/sites/sanity/en.md @@ -0,0 +1,64 @@ +--- +title: Sanity +--- + +FreeSewing uses [Sanity](https://www.sanity.io/) -- a headless CMS, or a SaaS +platform for structure content -- to host various types of content. + +For background information, please refer to [the Sanity content +guide](/guides/content/sanity). + +## Content schema + +The Sanity content scheme is stored in `sites/sanity/schema` in our monorepo. + +## Datasets + +We use two datasets: + +- `site-data` holds blog and showcase posts in all languages, as well as + newsletter editions. This dataset is publicly avaialble. +- `user-data` holds images uploaded by users, such as for their account image, + or measurements set image. This dataset is not publicly available. + +## Sanity studio + +The `sites/sanity` folder holds an instance of Sanity Studio -- the frontend to +manage the content -- preconfigured to work with our content. This site is +published at https://cms.freesewing.org/ where editors can work on our content. + +### Authentication + +To be able to use the Sanity Studio with FreeSewing's data, you need to be +added as an editor. Sanity supports using your GitHub account to authenticate, +so if you want to become an editor, you can ask joost to grant you access. + +### Local development + +After setting up the monorepo with `yarn kickstart` in the root folder, change your working directoy to `sites/sanity` and run `yarn dev`: + +```sh +git clone git@github.com:freesewing/freesewing.git +cd freesewing +yarn kickstart +cd sites/sanity +yarn dev +``` + +The Sanity Studio UI will open at http://localhost:3333 + + +This instance is setup to work with our production data. + + +## Sanity API + +The following data is required to interact with Sanity: + +- Project ID: `hl5bw8cj` +- Dataset: `site-content` + +With that and [the API reference +documentation](https://www.sanity.io/docs/reference) you should be able to get +started. + diff --git a/markdown/dev/training/en.md b/markdown/dev/training/en.md index 722c833dd58..09c6183be82 100644 --- a/markdown/dev/training/en.md +++ b/markdown/dev/training/en.md @@ -3,4 +3,6 @@ title: Training order: zzz --- +FreeSewing has created the following training materials: + diff --git a/markdown/dev/tutorials/en.md b/markdown/dev/tutorials/en.md index 0c2b84de34d..336a7930bfc 100644 --- a/markdown/dev/tutorials/en.md +++ b/markdown/dev/tutorials/en.md @@ -5,7 +5,8 @@ order: zaa You can find a list of all FreeSewing tutorials below: - +## Main sections + @@ -16,3 +17,7 @@ Tutorials are lessons that take you by the hand through a series of steps to com For more details, refer to [How we structure our documentation](/guides/docs). + +## Full list + + diff --git a/package.json b/package.json index 4b07d2b6c93..a349d119cd6 100644 --- a/package.json +++ b/package.json @@ -16,15 +16,15 @@ "tips": "node scripts/help.mjs", "lab": "cd sites/lab && yarn start", "lab-debug": "cd sites/lab && yarn start-debug", - "kickstart": "npx lerna bootstrap && yarn reconfigure && yarn buildall && yarn prepare && yarn tips", - "kickstart:windows": "npx lerna bootstrap && yarn wbuildall && yarn prepare && yarn tips", + "kickstart": "npx yarn install && yarn reconfigure && yarn buildall && yarn prepare && yarn tips", + "kickstart:windows": "npx yarn install && yarn wbuildall && yarn prepare && yarn tips", "cleanall": "lerna run clean", "test": "lerna run test", "e2e": "lerna run e2e", "prettier": "npx prettier --write 'config/*' 'config/**/*' 'packages/**/src/*.mjs' 'packages/i18n/src/locales/**/*.*' 'packages/**/tests/*.mjs'", "reconfigure": "all-contributors generate && node --experimental-json-modules --no-warnings scripts/reconfigure.mjs", "prerelease": "lerna version --no-git-tag-version --no-push && yarn reconfigure && yarn buildall", - "buildall": "npm run reconfigure && lerna run cibuild_step0 && lerna run cibuild_step1 && lerna run cibuild_step2 && lerna run cibuild_step3 && lerna run cibuild_step4 && lerna run cibuild_step5 && lerna run cibuild_step6 && lerna run cibuild_step7", + "buildall": "lerna run cibuild_step0 && lerna run cibuild_step1 && lerna run cibuild_step2 && lerna run cibuild_step3 && lerna run cibuild_step4 && lerna run cibuild_step5 && lerna run cibuild_step6 && lerna run cibuild_step7", "build": "yarn buildall", "wbuild": "yarn wbuildall", "testall": "node scripts/testall.js", @@ -43,7 +43,7 @@ "checkdocs": "remark markdown --quiet --frail", "strapi:translate": "node scripts/strapi-en-to-other.mjs", "fixdocs": "remark markdown --quiet --frail --output", - "wbuildall": "npm run reconfigure && lerna run wcibuild_step0 && lerna run wcibuild_step1 && lerna run wcibuild_step2 && lerna run wcibuild_step3 && lerna run wcibuild_step4 && lerna run wcibuild_step5 && lerna run wcibuild_step6 && lerna run wcibuild_step7", + "wbuildall": "lerna run wcibuild_step0 && lerna run wcibuild_step1 && lerna run wcibuild_step2 && lerna run wcibuild_step3 && lerna run wcibuild_step4 && lerna run wcibuild_step5 && lerna run wcibuild_step6 && lerna run wcibuild_step7", "prepare": "husky install" }, "repository": { @@ -76,7 +76,7 @@ "chalk": "^4.1.0", "codecov": "^3.8.3", "cross-env": "^7.0.2", - "esbuild": "^0.17.2", + "esbuild": "^0.18.2", "esbuild-plugin-yaml": "^0.0.1", "eslint": "^8.23.1", "eslint-config-next": "^13.0.6", diff --git a/packages/core/README.md b/packages/core/README.md index 0b18f248104..0c5cb3f39ac 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/packages/core/src/index.mjs b/packages/core/src/index.mjs index 072fa9a30e6..a0449636904 100644 --- a/packages/core/src/index.mjs +++ b/packages/core/src/index.mjs @@ -27,6 +27,7 @@ import { lineIntersectsCurve, linesIntersect, mergeI18n, + mergeOptions, pctBasedOn, pointOnBeam, pointOnCurve, @@ -72,6 +73,7 @@ export { lineIntersectsCurve, linesIntersect, mergeI18n, + mergeOptions, pctBasedOn, pointOnBeam, pointOnCurve, diff --git a/packages/core/src/pattern/index.mjs b/packages/core/src/pattern/index.mjs index 0959e55272d..5f1fd1f19e5 100644 --- a/packages/core/src/pattern/index.mjs +++ b/packages/core/src/pattern/index.mjs @@ -314,7 +314,11 @@ Pattern.prototype.__init = function () { // Merges default options with user provided ones this.__loadOptionDefaults() - this.store.log.info(`Pattern initialized. Draft order is: ${this.config.draftOrder.join(', ')}`) + this.store.log.info( + `Pattern initialized. Draft order is: ${this.config.draftOrder + .map((item) => `\`${item}\``) + .join(', ')}` + ) this.__runHooks('postInit') this.__initialized = true @@ -372,7 +376,7 @@ Pattern.prototype.__runHooks = function (hookName, data = false) { if (data === false) data = this let hooks = this.plugins.hooks[hookName] if (hooks.length > 0) { - this.store.log.debug(`Running \`${hookName}\` hooks`) + this.store.log.debug(`🪝 Running \`${hookName}\` hooks`) for (let hook of hooks) { hook.method(data, hook.data) } diff --git a/packages/core/src/pattern/pattern-drafter.mjs b/packages/core/src/pattern/pattern-drafter.mjs index 02161b11871..c75669f6036 100644 --- a/packages/core/src/pattern/pattern-drafter.mjs +++ b/packages/core/src/pattern/pattern-drafter.mjs @@ -1,6 +1,6 @@ import { PatternDraftQueue } from './pattern-draft-queue.mjs' import { Part } from '../part.mjs' -import { __macroName } from '../utils.mjs' +import { __macroName, mergeOptions } from '../utils.mjs' /** * A class to handle drafting a pattern @@ -26,9 +26,9 @@ PatternDrafter.prototype.draft = function () { this.pattern.setStores[set] = this.pattern.__createSetStore() this.__useSet(set) - this.activeStore.log.debug(`Initialized store for set ${set}`) + this.activeStore.log.debug(`🗃️ Initialized store for set \`${set}\``) this.pattern.__runHooks('preSetDraft') - this.activeStore.log.debug(`📐 Drafting pattern for set ${set}`) + this.activeStore.log.debug(`📐 Drafting pattern for set \`${set}\``) // Create parts container this.pattern.parts[set] = {} @@ -69,7 +69,7 @@ PatternDrafter.prototype.draftPartForSet = function (partName, set) { const configPart = this.pattern.config.parts?.[partName] if (typeof configPart?.draft !== 'function') { this.activeStore.log.error( - `Unable to draft pattern part __${partName}__. Part.draft() is not callable` + `Unable to draft pattern part \`${partName}\`. Part.draft() is not callable` ) return } @@ -84,7 +84,7 @@ PatternDrafter.prototype.draftPartForSet = function (partName, set) { if (typeof result === 'undefined') { this.activeStore.log.error( - `Result of drafting part ${partName} was undefined. Did you forget to return the part?` + `Result of drafting part \`${partName}\` was undefined. Did you forget to return the part?` ) } else { // hide if necessary @@ -95,7 +95,7 @@ PatternDrafter.prototype.draftPartForSet = function (partName, set) { } return result } catch (err) { - this.activeStore.log.error([`Unable to draft part \`${partName}\` (set ${set})`, err]) + this.activeStore.log.error([`Unable to draft part \`${partName}\` (set \`${set}\`)`, err]) } } @@ -112,14 +112,14 @@ PatternDrafter.prototype.__createPartForSet = function (partName, set = 0) { throw new Error('malicious attempt at altering Object.prototype. Stopping action') } // Create parts - this.activeStore.log.debug(`📦 Creating part \`${partName}\` (set ${set})`) + this.activeStore.log.debug(`📦 Creating part \`${partName}\` (set \`${set}\`)`) this.pattern.parts[set][partName] = this.pattern.parts[set][partName] || this.__createPartWithContext(partName, set) // Handle inject/inheritance const parent = this.pattern.config.inject[partName] if (typeof parent === 'string') { - this.activeStore.log.debug(`Creating part \`${partName}\` from part \`${parent}\``) + this.activeStore.log.debug(`🪆 Creating part \`${partName}\` from part \`${parent}\``) try { this.pattern.parts[set][partName].__inject(this.pattern.parts[set][parent]) } catch (err) { @@ -174,18 +174,26 @@ PatternDrafter.prototype.__createPartWithContext = function (name, set) { PatternDrafter.prototype.__loadAbsoluteOptionsSet = function (set) { for (const optionName in this.pattern.settings[set].options) { const option = this.pattern.config.options[optionName] - if ( - typeof option !== 'undefined' && - typeof option.snap !== 'undefined' && - option.toAbs instanceof Function - ) { - this.pattern.settings[set].absoluteOptions[optionName] = this.__snappedPercentageOption( - optionName, - set - ) - this.pattern.setStores[set].log.debug( - `🧲 Snapped __${optionName}__ to \`${this.pattern.settings[set].absoluteOptions[optionName]}\` for set __${set}__` - ) + if (typeof option !== 'undefined' && option.toAbs instanceof Function) { + if (typeof option.snap !== 'undefined') { + this.pattern.settings[set].absoluteOptions[optionName] = this.__snappedPercentageOption( + optionName, + set + ) + this.pattern.setStores[set].log.debug( + `🧲 Snapped __${optionName}__ to \`${this.pattern.settings[set].absoluteOptions[optionName]}\` for set __${set}__` + ) + } else { + const abs = option.toAbs( + this.pattern.settings[set].options[optionName], + this.pattern.settings[set], + mergeOptions(this.pattern.settings[set], this.pattern.config.options) + ) + this.pattern.settings[set].absoluteOptions[optionName] = abs + this.pattern.setStores[set].log.debug( + `🧮 Absolute value of \`${optionName}\` option is \`${abs}\` for set __${set}__` + ) + } } } @@ -202,7 +210,11 @@ PatternDrafter.prototype.__loadAbsoluteOptionsSet = function (set) { */ PatternDrafter.prototype.__snappedPercentageOption = function (optionName, set) { const conf = this.pattern.config.options[optionName] - const abs = conf.toAbs(this.pattern.settings[set].options[optionName], this.pattern.settings[set]) + const abs = conf.toAbs( + this.pattern.settings[set].options[optionName], + this.pattern.settings[set], + mergeOptions(this.pattern.settings[set], this.pattern.config.options) + ) // Handle units-specific config - Side-step immutability for the snap conf let snapConf = conf.snap if (!Array.isArray(snapConf) && snapConf.metric && snapConf.imperial) diff --git a/packages/core/src/store.mjs b/packages/core/src/store.mjs index 4dd1811a477..1b8244a6ae2 100644 --- a/packages/core/src/store.mjs +++ b/packages/core/src/store.mjs @@ -46,7 +46,7 @@ export function Store(methods = []) { for (const [path, method] of methods) { if (avoid.indexOf(path) !== -1) { - this.log.warning(`You cannot overwrite store.${path}()`) + this.log.warning(`You cannot overwrite \`store.${path}()\``) } else set(this, path, method) } @@ -66,9 +66,9 @@ export function Store(methods = []) { Store.prototype.extend = function (methods) { for (const [path, method] of methods) { if (avoid.indexOf(path) !== -1) { - this.log.warning(`You cannot overwrite store.${path}()`) + this.log.warning(`You cannot overwrite \`store.${path}()\``) } else { - this.log.info(`Extending store with ${path}`) + this.log.info(`Extending store with \`${path}\``) set(this, path, (...args) => method(this, ...args)) } } diff --git a/packages/core/src/utils.mjs b/packages/core/src/utils.mjs index 41ea5cd0883..6eff986b2b0 100644 --- a/packages/core/src/utils.mjs +++ b/packages/core/src/utils.mjs @@ -469,6 +469,29 @@ export function mergeI18n(designs, options) { return i18n } +/** + * Helper method to merge passed in options with default options from the pattern config + * + * @param {object} settings - The settings passed to the pattern + * @param {object} optionsConfig - The pattern's options config + * @return {object} result - An object with the merged options and their values + */ +export function mergeOptions(settings, optionsConfig) { + const merged = typeof settings.options === 'undefined' ? {} : { ...settings.option } + for (const [key, option] of Object.entries(optionsConfig)) { + if (typeof option === 'object') { + if (typeof option.pct !== 'undefined') merged[key] = option.pct / 100 + else if (typeof option.mm !== 'undefined') merged[key] = option.mm + else if (typeof option.deg !== 'undefined') merged[key] = option.deg + else if (typeof option.count !== 'undefined') merged[key] = option.count + else if (typeof option.bool !== 'undefined') merged[key] = option.bool + else if (typeof option.dflt !== 'undefined') merged[key] = option.dflt + } else merged[key] = option + } + + return merged +} + /** * Helper method to calculate abolute option value based on a measurement * diff --git a/packages/core/tests/pattern-other.test.mjs b/packages/core/tests/pattern-other.test.mjs index 514f712f893..af250145c3d 100644 --- a/packages/core/tests/pattern-other.test.mjs +++ b/packages/core/tests/pattern-other.test.mjs @@ -31,7 +31,7 @@ describe('Pattern', () => { pattern.draft() expect(pattern.setStores[0].logs.error.length).to.equal(1) expect(pattern.setStores[0].logs.error[0]).to.equal( - 'Unable to draft pattern part __test__. Part.draft() is not callable' + 'Unable to draft pattern part `test`. Part.draft() is not callable' ) }) @@ -45,7 +45,7 @@ describe('Pattern', () => { pattern.draft() expect(pattern.setStores[0].logs.error.length).to.equal(1) expect(pattern.setStores[0].logs.error[0]).to.equal( - 'Result of drafting part test was undefined. Did you forget to return the part?' + 'Result of drafting part `test` was undefined. Did you forget to return the part?' ) }) @@ -156,7 +156,7 @@ describe('Pattern', () => { const pattern = new design() pattern.draft().render() expect(pattern.setStores[0].logs.error.length).to.equal(1) - expect(pattern.setStores[0].logs.error[0][0]).to.equal('Unable to draft part `test` (set 0)') + expect(pattern.setStores[0].logs.error[0][0]).to.equal('Unable to draft part `test` (set `0`)') }) it('Handle layout object', () => { diff --git a/packages/core/tests/store.test.mjs b/packages/core/tests/store.test.mjs index 33a3d6536f9..fb45fb932d4 100644 --- a/packages/core/tests/store.test.mjs +++ b/packages/core/tests/store.test.mjs @@ -77,14 +77,14 @@ describe('Store', () => { it('Should log a warning when trying to extend a protected method via the constructor', () => { const store = new Store([['get', () => false]]) expect(store.logs.warning.length).to.equal(1) - expect(store.logs.warning[0]).to.equal('You cannot overwrite store.get()') + expect(store.logs.warning[0]).to.equal('You cannot overwrite `store.get()`') }) it('Should log a warning when trying to extend a protected method via the extend', () => { const store = new Store() store.extend([['get', () => false]]) expect(store.logs.warning.length).to.equal(1) - expect(store.logs.warning[0]).to.equal('You cannot overwrite store.get()') + expect(store.logs.warning[0]).to.equal('You cannot overwrite `store.get()`') }) it('Should extend the store with a new method via the constructor', () => { diff --git a/packages/i18n/README.md b/packages/i18n/README.md index 7c4556d171f..867d20c1bd9 100644 --- a/packages/i18n/README.md +++ b/packages/i18n/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/packages/models/README.md b/packages/models/README.md index 385a5a3c6d1..b09a48d913e 100644 --- a/packages/models/README.md +++ b/packages/models/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/packages/new-design/README.md b/packages/new-design/README.md index ed7ff97fadb..1ef9beda99e 100644 --- a/packages/new-design/README.md +++ b/packages/new-design/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/packages/new-design/lib/utils.mjs b/packages/new-design/lib/utils.mjs index 424f1996957..08bb47b153c 100644 --- a/packages/new-design/lib/utils.mjs +++ b/packages/new-design/lib/utils.mjs @@ -8,7 +8,7 @@ import prompts from 'prompts' import { oraPromise } from 'ora' import { execa } from 'execa' import axios from 'axios' -import { fileURLToPath } from 'url' +import { fileURLToPath, pathToFileURL } from 'url' // Current working directory let filename @@ -439,7 +439,7 @@ export const createEnvironment = async (choices) => { shared: (await rdir(config.source.shared)).map((file) => relative(config.source.shared, file)), } - config.templateData = await import(config.source.templateData) + config.templateData = await import(pathToFileURL(config.source.templateData)) // does this base have parts with a lot of attending config? config.complexParts = typeof config.templateData.parts[0] === 'object' diff --git a/packages/new-design/package.json b/packages/new-design/package.json index b4dd7054c83..8c56ff7ab24 100644 --- a/packages/new-design/package.json +++ b/packages/new-design/package.json @@ -26,6 +26,9 @@ "tips": "node ../../scripts/help.mjs", "lint": "npx eslint 'lib/*.mjs'", "i18n-only": "SITE=\"new-design/shared\" node ../../sites/shared/prebuild/i18n-only.mjs", + "prebuild": "node ./prebuild.mjs", + "precibuild_step6": "node ./prebuild.mjs", + "prewbuild": "node ./prebuild.mjs", "cibuild_step6": "node build.mjs", "wbuild": "node build.mjs", "wcibuild_step6": "node build.mjs" diff --git a/packages/new-design/prebuild.mjs b/packages/new-design/prebuild.mjs new file mode 100644 index 00000000000..28ed4e65c66 --- /dev/null +++ b/packages/new-design/prebuild.mjs @@ -0,0 +1,13 @@ +import path from 'path' +import fs from 'fs' + +// Avoid symlink so Windows users don't complain +const copyThese = [ + { + from: ['..', '..', 'scripts', 'banner.mjs'], + to: ['lib', 'banner.mjs'], + }, +] +for (const cp of copyThese) { + fs.copyFile(path.resolve(...cp.from), path.resolve(...cp.to), () => null) +} diff --git a/packages/prettier-config/README.md b/packages/prettier-config/README.md index 52adc63b553..072ec376757 100644 --- a/packages/prettier-config/README.md +++ b/packages/prettier-config/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/packages/react-components/README.md b/packages/react-components/README.md index 350e3999662..436f6fade31 100644 --- a/packages/react-components/README.md +++ b/packages/react-components/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/packages/react-components/src/index.mjs b/packages/react-components/src/index.mjs index 04c7d646d50..a5d18224b06 100644 --- a/packages/react-components/src/index.mjs +++ b/packages/react-components/src/index.mjs @@ -1,4 +1,5 @@ // Components +// Pattern import { Pattern as PatternComponent } from './pattern/index.mjs' import { Svg as SvgComponent } from './pattern/svg.mjs' import { Defs as DefsComponent } from './pattern/defs.mjs' @@ -12,6 +13,8 @@ import { Grid as GridComponent } from './pattern/grid.mjs' import { Text as TextComponent, TextOnPath as TextOnPathComponent } from './pattern/text.mjs' // Pattern Utils import { getProps, withinPartBounds, getId, translateStrings } from './pattern/utils.mjs' +// PatternXray +import { PatternXray as PatternXrayComponent } from './pattern-xray/index.mjs' /* * Export all components as named exports @@ -28,6 +31,7 @@ export const Snippet = SnippetComponent export const Grid = GridComponent export const Text = TextComponent export const TextOnPath = TextOnPathComponent +export const PatternXray = PatternXrayComponent /* * Export pattern utils diff --git a/packages/react-components/src/pattern-xray/index.mjs b/packages/react-components/src/pattern-xray/index.mjs new file mode 100644 index 00000000000..1754b025b86 --- /dev/null +++ b/packages/react-components/src/pattern-xray/index.mjs @@ -0,0 +1,71 @@ +// eslint-disable-next-line no-unused-vars +import React, { forwardRef } from 'react' +import { defaultPatternComponents } from '../pattern/index.mjs' +// Components that can be swizzled +import { PointXray } from './point.mjs' +import { PathXray } from './path.mjs' +/* + * Allow people to swizzle these components + */ +export const defaultPatternXrayComponents = { + ...defaultPatternComponents, + Point: PointXray, + Path: PathXray, +} + +export const PatternXray = forwardRef( + ( + { + renderProps = false, + t = (string) => string, + components = {}, + children = false, + className = 'freesewing pattern', + }, + ref + ) => { + if (!renderProps) return null + + // Merge default and swizzled components + components = { + ...defaultPatternXrayComponents, + ...components, + } + + const { Svg, Defs, Stack, Group } = components + + const optionalProps = {} + if (className) optionalProps.className = className + + return ( + + + + + {children + ? children + : Object.keys(renderProps.stacks).map((stackName) => ( + + ))} + + + ) + } +) + +PatternXray.displayName = 'PatternXray' diff --git a/packages/react-components/src/pattern-xray/path.mjs b/packages/react-components/src/pattern-xray/path.mjs new file mode 100644 index 00000000000..6623dc2b9db --- /dev/null +++ b/packages/react-components/src/pattern-xray/path.mjs @@ -0,0 +1,44 @@ +// Components +import { Path } from '../pattern/path.mjs' +import { getProps } from '../pattern/utils.mjs' + +const coords = (point) => `${point.x},${point.y}` + +const Cp = ({ at }) => ( + +) + +const Xray = ({ path }) => { + const output = [] + let prev + let i = 0 + for (const op of path.ops) { + if (op.type === 'curve') { + output.push( + , + , + + ) + } + prev = op + i++ + } + output.push( + + ) + + return output +} + +export const PathXray = ({ stackName, pathName, part, path, settings, components, t }) => ( + <> + + + +) diff --git a/packages/react-components/src/pattern-xray/point.mjs b/packages/react-components/src/pattern-xray/point.mjs new file mode 100644 index 00000000000..040b036b2a3 --- /dev/null +++ b/packages/react-components/src/pattern-xray/point.mjs @@ -0,0 +1,19 @@ +// Components +import { Point } from '../pattern/point.mjs' +import { withinPartBounds } from '../pattern/utils.mjs' + +export const PointXray = ({ stackName, pointName, part, point, settings, components, t }) => { + // Don't include parts outside the part bounding box + if (!withinPartBounds(point, part)) return null + return ( + <> + + + + ) +} diff --git a/packages/react-components/src/pattern/index.mjs b/packages/react-components/src/pattern/index.mjs index 54fdc41b0ea..652a59637cd 100644 --- a/packages/react-components/src/pattern/index.mjs +++ b/packages/react-components/src/pattern/index.mjs @@ -16,7 +16,7 @@ import { Circle as DefaultCircle } from './circle.mjs' /* * Allow people to swizzle these components */ -const defaultComponents = { +export const defaultPatternComponents = { Svg: DefaultSvg, Defs: DefaultDefs, Group: DefaultGroup, @@ -46,7 +46,7 @@ export const Pattern = forwardRef( // Merge default and swizzled components components = { - ...defaultComponents, + ...defaultPatternComponents, ...components, } diff --git a/packages/react-components/src/pattern/text.mjs b/packages/react-components/src/pattern/text.mjs index 6c4e41aa8ab..29c3ccbfb68 100644 --- a/packages/react-components/src/pattern/text.mjs +++ b/packages/react-components/src/pattern/text.mjs @@ -39,7 +39,9 @@ export const TextOnPath = ({ path, pathId, t }) => { startOffset: '0%', } const translated = translateStrings(t, path.attributes.text) - const align = path.attributes.list['data-text-class'].join(' ') + const align = path.attributes.list['data-text-class'] + ? path.attributes.list['data-text-class'].join(' ') + : false if (align && align.indexOf('center') > -1) textPathProps.startOffset = '50%' else if (align && align.indexOf('right') > -1) textPathProps.startOffset = '100%' diff --git a/packages/rehype-highlight-lines/README.md b/packages/rehype-highlight-lines/README.md index 40d5d33ec0e..9807b6c6cc1 100644 --- a/packages/rehype-highlight-lines/README.md +++ b/packages/rehype-highlight-lines/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/packages/rehype-jargon/README.md b/packages/rehype-jargon/README.md index 55b200f5946..034ce49e573 100644 --- a/packages/rehype-jargon/README.md +++ b/packages/rehype-jargon/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/packages/snapseries/README.md b/packages/snapseries/README.md index b167fd9d422..dfe40794856 100644 --- a/packages/snapseries/README.md +++ b/packages/snapseries/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/plugins/plugin-annotations/README.md b/plugins/plugin-annotations/README.md index 8757a4bd2d0..57c64ae826a 100644 --- a/plugins/plugin-annotations/README.md +++ b/plugins/plugin-annotations/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/plugins/plugin-bundle/README.md b/plugins/plugin-bundle/README.md index af2693e0477..4dd39d034c2 100644 --- a/plugins/plugin-bundle/README.md +++ b/plugins/plugin-bundle/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/plugins/plugin-bust/README.md b/plugins/plugin-bust/README.md index 0929dcc6676..83bb914ecc3 100644 --- a/plugins/plugin-bust/README.md +++ b/plugins/plugin-bust/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/plugins/plugin-flip/README.md b/plugins/plugin-flip/README.md index fa44db5ebdd..49ecf5abbe7 100644 --- a/plugins/plugin-flip/README.md +++ b/plugins/plugin-flip/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/plugins/plugin-gore/README.md b/plugins/plugin-gore/README.md index ed021d4e67d..e46ba47242a 100644 --- a/plugins/plugin-gore/README.md +++ b/plugins/plugin-gore/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/plugins/plugin-i18n/README.md b/plugins/plugin-i18n/README.md index 64c0275863d..0ec183f1bad 100644 --- a/plugins/plugin-i18n/README.md +++ b/plugins/plugin-i18n/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/plugins/plugin-measurements/README.md b/plugins/plugin-measurements/README.md index 53459c01232..e1475d1d64f 100644 --- a/plugins/plugin-measurements/README.md +++ b/plugins/plugin-measurements/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/plugins/plugin-mirror/README.md b/plugins/plugin-mirror/README.md index 82698bb27ba..b80fa8e4795 100644 --- a/plugins/plugin-mirror/README.md +++ b/plugins/plugin-mirror/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/plugins/plugin-round/README.md b/plugins/plugin-round/README.md index 834cb1ced16..3efa326d4d3 100644 --- a/plugins/plugin-round/README.md +++ b/plugins/plugin-round/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/plugins/plugin-sprinkle/README.md b/plugins/plugin-sprinkle/README.md index a2e3212d80c..2703173bf69 100644 --- a/plugins/plugin-sprinkle/README.md +++ b/plugins/plugin-sprinkle/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/plugins/plugin-svgattr/README.md b/plugins/plugin-svgattr/README.md index 8343cdad453..0173cfc3cb8 100644 --- a/plugins/plugin-svgattr/README.md +++ b/plugins/plugin-svgattr/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/plugins/plugin-theme/README.md b/plugins/plugin-theme/README.md index 5d66d86ef9e..b651873fe97 100644 --- a/plugins/plugin-theme/README.md +++ b/plugins/plugin-theme/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/plugins/plugin-timing/README.md b/plugins/plugin-timing/README.md index 88a3e57a8bc..e32657eead5 100644 --- a/plugins/plugin-timing/README.md +++ b/plugins/plugin-timing/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/plugins/plugin-versionfree-svg/README.md b/plugins/plugin-versionfree-svg/README.md index 64c9795a709..25bd13d5f42 100644 --- a/plugins/plugin-versionfree-svg/README.md +++ b/plugins/plugin-versionfree-svg/README.md @@ -22,7 +22,7 @@ All Contributors

Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 📖 💻 + Trent Trama
Trent Trama

💻 Tríona
Tríona

📖 - Unmutual
Unmutual

📖 + Unmutual
Unmutual

📖 Wouter van Wageningen
Wouter van Wageningen

💻 🎨 🔧 amysews
amysews

📖 anna-puk
anna-puk

💻 beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

📖 biou
biou

💻 - bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 + bobgeorgethe3rd
bobgeorgethe3rd

💻 📖 🎨 brmlyklr
brmlyklr

📖 chri5b
chri5b

💻 ⚠️ dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

💬 econo202
econo202

📖 ericamattos
ericamattos

🌍 - fightingrabbit
fightingrabbit

💻 + fightingrabbit
fightingrabbit

💻 gaylyndie
gaylyndie

📖 grimlokason
grimlokason

💻 hellgy
hellgy

🎨 jackseye
jackseye

📖 marckiesel
marckiesel

🌍 marpants
marpants

💻 - mergerg
mergerg

📖 + mergerg
mergerg

📖 mesil
mesil

🐛 starfetch
starfetch

💻 📖 🌍 🎨 timorl
timorl

💻 ttimearl
ttimearl

🖋 tuesgloomsday
tuesgloomsday

📖 valadaptive
valadaptive

💻 - viocky
viocky

🌍 + viocky
viocky

🌍 woolishboy
woolishboy

💻 yc
yc

🌍 diff --git a/scripts/reconfigure.mjs b/scripts/reconfigure.mjs index 63be87d2041..99f6e24de76 100644 --- a/scripts/reconfigure.mjs +++ b/scripts/reconfigure.mjs @@ -99,7 +99,9 @@ fs.writeFileSync(path.join(repo.path, 'CHANGELOG.md'), changelog('global')) // Step 5: Generate build script for published software log.write(chalk.blueBright('Generating buildall node script...')) const buildSteps = buildOrder.map((step, i) => `lerna run cibuild_step${i}`) -const buildAllCommand = 'npm run reconfigure && ' + buildSteps.join(' && ') +// Can we skip reconfigure? +//const buildAllCommand = 'npm run reconfigure && ' + buildSteps.join(' && ') +const buildAllCommand = buildSteps.join(' && ') const newRootPkgJson = { ...rootPackageJson } newRootPkgJson.scripts.buildall = buildAllCommand newRootPkgJson.scripts.wbuildall = buildAllCommand.replace(/cibuild/g, 'wcibuild') diff --git a/sites/backend/package.json b/sites/backend/package.json index 8463cd31cf5..ffd52eeee13 100644 --- a/sites/backend/package.json +++ b/sites/backend/package.json @@ -28,7 +28,7 @@ }, "peerDependencies": {}, "dependencies": { - "@aws-sdk/client-sesv2": "3.348.0", + "@aws-sdk/client-sesv2": "3.352.0", "@prisma/client": "4.15.0", "bcryptjs": "2.4.3", "cors": "2.8.5", @@ -49,8 +49,8 @@ }, "devDependencies": { "chai": "4.3.7", - "chai-http": "4.3.0", - "esbuild": "0.17.19", + "chai-http": "4.4.0", + "esbuild": "0.18.2", "mocha": "10.2.0", "mocha-steps": "1.3.0", "nodemon": "2.0.22", diff --git a/sites/dev/hooks/use-navigation.mjs b/sites/dev/hooks/use-navigation.mjs index e6cfcc485e9..d3e896910a8 100644 --- a/sites/dev/hooks/use-navigation.mjs +++ b/sites/dev/hooks/use-navigation.mjs @@ -78,7 +78,7 @@ const sitePages = () => { } export const useNavigation = (params = {}) => { - const { path = [], locale = 'en' } = params + const { locale = 'en' } = params const nav = { ...pbn[locale], ...sitePages() } // Make top-level documentation entries appear in b-list for (const page of ['tutorials', 'guides', 'howtos', 'reference', 'training']) { diff --git a/sites/dev/package.json b/sites/dev/package.json index c4631d32012..ef478a5363d 100644 --- a/sites/dev/package.json +++ b/sites/dev/package.json @@ -33,14 +33,14 @@ "@mdx-js/mdx": "2.3.0", "@mdx-js/react": "2.3.0", "@mdx-js/runtime": "2.0.0-next.9", - "@next/bundle-analyzer": "13.4.4", + "@next/bundle-analyzer": "13.4.6", "@tailwindcss/typography": "0.5.9", - "algoliasearch": "4.17.1", - "daisyui": "3.0.3", + "algoliasearch": "4.17.2", + "daisyui": "3.1.0", "lodash.get": "4.4.2", "lodash.orderby": "4.6.0", "lodash.set": "4.3.2", - "next": "13.4.4", + "next": "13.4.6", "react": "18.2.0", "react-copy-to-clipboard": "5.1.0", "react-dom": "18.2.0", @@ -61,7 +61,7 @@ "devDependencies": { "@playwright/test": "^1.32.3", "autoprefixer": "10.4.14", - "eslint-config-next": "13.4.4", + "eslint-config-next": "13.4.6", "js-yaml": "4.1.0", "postcss": "8.4.24", "playwright": "^1.32.3", diff --git a/sites/dev/pages/[...slug].mjs b/sites/dev/pages/[...slug].mjs index 976fa92275f..a4a59ee81c9 100644 --- a/sites/dev/pages/[...slug].mjs +++ b/sites/dev/pages/[...slug].mjs @@ -10,7 +10,7 @@ import { PageWrapper, ns } from 'shared/components/wrappers/page.mjs' import { Spinner } from 'shared/components/spinner.mjs' import { components } from 'shared/components/mdx/index.mjs' import { MdxWrapper } from 'shared/components/wrappers/mdx.mjs' -//import { TocWrapper } from 'shared/components/wrappers/toc.mjs' +import { Toc } from 'shared/components/mdx/toc.mjs' /* * This page is auto-generated by the prebuild script. @@ -55,10 +55,9 @@ const DocsPage = ({ page, slug }) => { {frontmatter.title} - FreeSewing.dev

- {false && frontmatter.toc && ( + {frontmatter.toc && frontmatter.toc.length > 0 && (
- {/* FIXME: Implement toc plugin to add it to the frontmatter */} - {/* */} +
)} {MDX} diff --git a/sites/lab/components/header/index.mjs b/sites/lab/components/header/index.mjs index ef9ef307a0d..fc9975cc04d 100644 --- a/sites/lab/components/header/index.mjs +++ b/sites/lab/components/header/index.mjs @@ -22,7 +22,7 @@ import { ModalThemePicker, ns as themeNs } from 'shared/components/modal/theme-p import { ModalLocalePicker, ns as localeNs } from 'shared/components/modal/locale-picker.mjs' import { ModalMenu } from 'site/components/navigation/modal-menu.mjs' -import { NavButton, NavSpacer, colors } from 'shared/components/workbench/header.mjs' +import { NavButton, NavSpacer, colors } from 'shared/components/header.mjs' export const ns = ['header', 'sections', ...themeNs, ...localeNs] diff --git a/sites/lab/hooks/use-navigation.mjs b/sites/lab/hooks/use-navigation.mjs index 8c813c7ce5d..8528e91ae92 100644 --- a/sites/lab/hooks/use-navigation.mjs +++ b/sites/lab/hooks/use-navigation.mjs @@ -1,6 +1,4 @@ -import get from 'lodash.get' import { useTranslation } from 'next-i18next' -import orderBy from 'lodash.orderby' import { freeSewingConfig as conf } from 'shared/config/freesewing.config.mjs' import { useAccount } from 'shared/hooks/use-account.mjs' import { designs } from 'shared/config/designs.mjs' @@ -104,43 +102,9 @@ const sitePages = (t = false, control = 99) => { return pages } -const createCrumbs = (path, nav) => - path.map((crumb, i) => { - const entry = get(nav, path.slice(0, i + 1), { t: 'no-title', s: path.join('/') }) - const val = { t: entry.t, s: entry.s } - if (entry.o) val.o = entry.o - - return val - }) - -const createSections = (nav) => { - const sections = {} - for (const slug of Object.keys(nav)) { - const entry = nav[slug] - const val = { t: entry.t, s: entry.s } - if (entry.o) val.o = entry.o - if (!entry.h) sections[slug] = val - } - - return orderBy(sections, ['o', 't']) -} - -export const useNavigation = ({ path }) => { +export const useNavigation = () => { const { t } = useTranslation(ns) const { account } = useAccount() - const nav = sitePages(t, account?.control) - - // Create crumbs array - const crumbs = createCrumbs(path, nav) - const sections = createSections(nav) - - return { - crumbs, - sections, - slug: path.join('/'), - nav: path.length > 1 ? get(nav, path[0]) : path.length === 0 ? sections : nav[path[0]], - title: crumbs.length > 0 ? crumbs.slice(-1)[0].t : '', - siteNav: nav, - } + return sitePages(t, account.control) } diff --git a/sites/lab/package.json b/sites/lab/package.json index 303b5115d75..9b0ad50b37c 100644 --- a/sites/lab/package.json +++ b/sites/lab/package.json @@ -34,16 +34,16 @@ "@mdx-js/react": "2.3.0", "@mdx-js/runtime": "2.0.0-next.9", "@tailwindcss/typography": "0.5.9", - "algoliasearch": "4.17.1", + "algoliasearch": "4.17.2", "d3-dispatch": "3.0.1", "d3-drag": "3.0.0", "d3-selection": "3.0.0", - "daisyui": "3.0.3", + "daisyui": "3.1.0", "i18next": "22.5.1", "lodash.get": "4.4.2", "lodash.orderby": "4.6.0", "lodash.set": "4.3.2", - "next": "13.4.4", + "next": "13.4.6", "next-i18next": "13.3.0", "react": "18.2.0", "react-copy-to-clipboard": "5.1.0", @@ -65,7 +65,7 @@ "devDependencies": { "@playwright/test": "^1.32.3", "autoprefixer": "10.4.14", - "eslint-config-next": "13.4.4", + "eslint-config-next": "13.4.6", "js-yaml": "4.1.0", "postcss": "8.4.24", "playwright": "^1.32.3", diff --git a/sites/org/components/header/index.mjs b/sites/org/components/header/index.mjs index da396feea39..74f8fa30360 100644 --- a/sites/org/components/header/index.mjs +++ b/sites/org/components/header/index.mjs @@ -14,7 +14,7 @@ import { UserIcon, ThemeIcon, I18nIcon, - MeasureIcon, + MeasieIcon, PageIcon, PlusIcon, } from 'shared/components/icons.mjs' @@ -54,7 +54,7 @@ const NavIcons = ({ setModal, setSearch }) => { color={colors[3]} extraClasses="hidden lg:flex" > - + { - const { title, crumbs } = useContext(NavigationContext) + const { crumbs } = useContext(NavigationContext) return (
@@ -15,8 +15,8 @@ export const DocsLayout = ({ children = [], pageTitle = false }) => {
{pageTitle && (
- -

{pageTitle ? pageTitle : title}

+ +

{pageTitle}

)}
{children}
diff --git a/sites/org/package.json b/sites/org/package.json index 7e81317837b..a2e01091375 100644 --- a/sites/org/package.json +++ b/sites/org/package.json @@ -35,14 +35,14 @@ "@mdx-js/react": "2.3.0", "@mdx-js/runtime": "2.0.0-next.9", "@tailwindcss/typography": "0.5.9", - "algoliasearch": "4.17.1", + "algoliasearch": "4.17.2", "react-copy-to-clipboard": "5.1.0", - "daisyui": "3.0.3", + "daisyui": "3.1.0", "lodash.get": "4.4.2", "lodash.orderby": "4.6.0", "lodash.set": "4.3.2", "luxon": "3.3.0", - "next": "13.4.4", + "next": "13.4.6", "react-dropzone": "14.2.3", "react-hotkeys-hook": "4.4.0", "react-instantsearch-dom": "6.40.0", @@ -64,7 +64,7 @@ "devDependencies": { "@playwright/test": "^1.32.3", "autoprefixer": "10.4.14", - "eslint-config-next": "13.4.4", + "eslint-config-next": "13.4.6", "js-yaml": "4.1.0", "postcss": "8.4.24", "playwright": "^1.32.3", diff --git a/sites/org/pages/curate/index.mjs b/sites/org/pages/curate/index.mjs index cb61566b5a3..549cd436336 100644 --- a/sites/org/pages/curate/index.mjs +++ b/sites/org/pages/curate/index.mjs @@ -6,7 +6,7 @@ import { useTranslation } from 'next-i18next' // Components import { PageWrapper, ns as pageNs } from 'shared/components/wrappers/page.mjs' import { ChoiceLink } from 'shared/components/choice-link.mjs' -import { MeasureIcon } from 'shared/components/icons.mjs' +import { MeasieIcon } from 'shared/components/icons.mjs' import { ns as authNs } from 'shared/components/wrappers/auth/index.mjs' // Translation namespaces used on this page @@ -36,7 +36,7 @@ const CuratorPage = ({ page }) => {
} + icon={} href="/curate/sets" > {t('sets:curateCuratedSets')} diff --git a/sites/org/pages/docs/[...slug].mjs b/sites/org/pages/docs/[...slug].mjs index 71599d78430..164055b37b5 100644 --- a/sites/org/pages/docs/[...slug].mjs +++ b/sites/org/pages/docs/[...slug].mjs @@ -10,7 +10,7 @@ import { PageWrapper, ns } from 'shared/components/wrappers/page.mjs' import { Spinner } from 'shared/components/spinner.mjs' import { components } from 'shared/components/mdx/index.mjs' import { MdxWrapper } from 'shared/components/wrappers/mdx.mjs' -//import { TocWrapper } from 'shared/components/wrappers/toc.mjs' +import { Toc } from 'shared/components/mdx/toc.mjs' /* * PLEASE READ THIS BEFORE YOU TRY TO REFACTOR THIS PAGE @@ -64,10 +64,9 @@ export const Page = ({ page, frontmatter, slug, locale, MDX }) => (
- {false && frontmatter.toc && ( + {frontmatter.toc && frontmatter.toc.length > 0 && (
- {/* FIXME: Implement toc plugin to add it to the frontmatter */} - {/* */} +
)} {MDX} @@ -106,7 +105,7 @@ const FrDocsPage = ({ page, slug }) => { import(`../../../../markdown/org/${slug}/fr.md`).then((mod) => { setFrontmatter(mod.frontmatter) const Component = mod.default - setMDX() + setMDX() }) } loadMDX() @@ -126,7 +125,7 @@ const EsDocsPage = ({ page, slug }) => { import(`../../../../markdown/org/${slug}/es.md`).then((mod) => { setFrontmatter(mod.frontmatter) const Component = mod.default - setMDX() + setMDX() }) } loadMDX() @@ -146,7 +145,7 @@ const DeDocsPage = ({ page, slug }) => { import(`../../../../markdown/org/${slug}/de.md`).then((mod) => { setFrontmatter(mod.frontmatter) const Component = mod.default - setMDX() + setMDX() }) } loadMDX() @@ -166,7 +165,7 @@ const NlDocsPage = ({ page, slug }) => { import(`../../../../markdown/org/${slug}/nl.md`).then((mod) => { setFrontmatter(mod.frontmatter) const Component = mod.default - setMDX() + setMDX() }) } loadMDX() diff --git a/sites/org/pages/docs/index.mjs b/sites/org/pages/docs/index.mjs index d551d8a0749..22fcdf187a0 100644 --- a/sites/org/pages/docs/index.mjs +++ b/sites/org/pages/docs/index.mjs @@ -19,11 +19,11 @@ const DocsHomePage = ({ page, slug, locale }) => { import(`../../../../markdown/org/docs/${locale}.md`).then((mod) => { setFrontmatter(mod.frontmatter) const Component = mod.default - setMDX() + setMDX() }) } loadMDX() - }, [slug]) + }, [slug, locale]) return } diff --git a/sites/org/pages/new/index.mjs b/sites/org/pages/new/index.mjs index 6906813a0ba..f14c2b60208 100644 --- a/sites/org/pages/new/index.mjs +++ b/sites/org/pages/new/index.mjs @@ -6,7 +6,7 @@ import { useAccount } from 'shared/hooks/use-account.mjs' // Components import { PageWrapper, ns as pageNs } from 'shared/components/wrappers/page.mjs' import { ChoiceLink } from 'shared/components/choice-link.mjs' -import { KeyIcon, MeasureIcon, DesignIcon, PageIcon, PluginIcon } from 'shared/components/icons.mjs' +import { KeyIcon, MeasieIcon, DesignIcon, PageIcon, PluginIcon } from 'shared/components/icons.mjs' // Translation namespaces used on this page // Note that we include the account namespace here for the 'new' keyword @@ -39,7 +39,7 @@ const NewIndexPage = ({ page }) => { } + icon={} href="/new/set" > {t('setNewInfo')} diff --git a/sites/org/pages/new/pattern/[design]/[type]/[id].mjs b/sites/org/pages/new/pattern/[design]/[type]/[id].mjs index b8120dd8988..cf5991f5083 100644 --- a/sites/org/pages/new/pattern/[design]/[type]/[id].mjs +++ b/sites/org/pages/new/pattern/[design]/[type]/[id].mjs @@ -10,7 +10,6 @@ import { nsMerge } from 'shared/utils.mjs' import { PageWrapper, ns as pageNs } from 'shared/components/wrappers/page.mjs' import { Workbench, ns as wbNs } from 'shared/components/workbench/index.mjs' import { WorkbenchLayout } from 'site/components/layouts/workbench.mjs' -import { Null } from 'shared/components/null.mjs' import { DynamicOrgDocs as DynamicDocs } from 'site/components/dynamic-org-docs.mjs' import { VagueError, ns as errorNs } from 'shared/components/errors/vague.mjs' @@ -64,7 +63,7 @@ const NewDesignFromSetPage = ({ page, id, design, type }) => { const baseSettings = set?.measies ? { measurements: set.measies } : null return ( - + ) diff --git a/sites/sanity/package.json b/sites/sanity/package.json index 46b6b200607..6d9bf8ce494 100644 --- a/sites/sanity/package.json +++ b/sites/sanity/package.json @@ -21,6 +21,7 @@ "peerDependencies": {}, "dependencies": { "@sanity/vision": "3.12.0", + "easymde": "2.16.0", "react": "18.2.0", "react-dom": "18.2.0", "react-is": "18.2.0", @@ -33,7 +34,7 @@ "eslint": "8.42.0", "prettier": "2.8.8", "typescript": "5.1.3", - "@sanity/cli": "3.12.0" + "@sanity/cli": "3.12.1" }, "engines": { "node": ">=16.0.0", diff --git a/sites/sanity/sanity.config.js b/sites/sanity/sanity.config.js index a0cd6ca7902..75738f64d97 100644 --- a/sites/sanity/sanity.config.js +++ b/sites/sanity/sanity.config.js @@ -3,17 +3,19 @@ import { deskTool } from 'sanity/desk' import { visionTool } from '@sanity/vision' import { markdownSchema } from 'sanity-plugin-markdown' import { schemaTypes } from './schemas' +import { capitalize } from '../shared/utils.mjs' -export default defineConfig({ - name: 'default', - title: 'FreeSewing', - - projectId: 'hl5bw8cj', - dataset: 'production', - - plugins: [deskTool(), visionTool(), markdownSchema()], - - schema: { - types: schemaTypes, - }, -}) +export default defineConfig( + ['site-content', 'user-content'].map((dataset) => ({ + name: dataset, + title: `FreeSewing ${dataset + .split('-') + .map((word) => capitalize(word)) + .join(' ')}`, + projectId: 'hl5bw8cj', + dataset, + basePath: `/${dataset}`, + plugins: [deskTool(), visionTool(), markdownSchema()], + schema: { types: schemaTypes }, + })) +) diff --git a/sites/sanity/schemas/avatar.js b/sites/sanity/schemas/avatar.js index 953d0284c05..8867015bd93 100644 --- a/sites/sanity/schemas/avatar.js +++ b/sites/sanity/schemas/avatar.js @@ -5,25 +5,8 @@ export const userimg = { fields: [ { name: 'recordid', - type: 'number', - title: 'User ID', - }, - { - name: 'img', - type: 'image', - title: 'Image', - }, - ], -} -export const personimg = { - name: `personimg`, - type: 'document', - title: `Person Image`, - fields: [ - { - name: 'recordid', - type: 'number', - title: 'Person ID', + type: 'string', + title: 'Image ID', }, { name: 'img', diff --git a/sites/sanity/schemas/blog.js b/sites/sanity/schemas/blog.js index 4773eb417e3..ac6d103ee10 100644 --- a/sites/sanity/schemas/blog.js +++ b/sites/sanity/schemas/blog.js @@ -1,7 +1,7 @@ export const blogSchemaBuilder = (lang) => ({ name: `blog${lang}`, type: 'document', - title: `Blog ${lang.toUpperCase()}`, + title: `Blog ${lang.toUpperCase()}`, fields: [ { name: 'title', @@ -19,7 +19,7 @@ export const blogSchemaBuilder = (lang) => ({ title: 'Slug', options: { source: 'title', - } + }, }, { name: 'date', @@ -49,7 +49,7 @@ export const blogSchemaBuilder = (lang) => ({ { name: 'author', title: 'Author', - type: 'string', - } - ] + type: 'number', + }, + ], }) diff --git a/sites/sanity/schemas/index.js b/sites/sanity/schemas/index.js index 60a008a4841..92d58a7b30b 100644 --- a/sites/sanity/schemas/index.js +++ b/sites/sanity/schemas/index.js @@ -1,4 +1,4 @@ -import { userimg, personimg } from './avatar.js' +import { userimg } from './avatar.js' import { blogSchemaBuilder } from './blog.js' import { showcaseSchemaBuilder } from './showcase.js' import { newsletter } from './newsletter.js' @@ -7,7 +7,6 @@ const languages = ['en', 'es', 'fr', 'nl', 'de'] export const schemaTypes = [ userimg, - personimg, newsletter, ...languages.map((lang) => blogSchemaBuilder(lang)), ...languages.map((lang) => showcaseSchemaBuilder(lang)), diff --git a/sites/sanity/schemas/showcase.js b/sites/sanity/schemas/showcase.js index 7c1a1a09931..e1b47c6b599 100644 --- a/sites/sanity/schemas/showcase.js +++ b/sites/sanity/schemas/showcase.js @@ -1,7 +1,7 @@ export const showcaseSchemaBuilder = (lang) => ({ name: `showcase${lang}`, type: 'document', - title: `Showcase ${lang.toUpperCase()}`, + title: `Showcase ${lang.toUpperCase()}`, fields: [ { name: 'title', @@ -14,7 +14,7 @@ export const showcaseSchemaBuilder = (lang) => ({ title: 'Slug', options: { source: 'title', - } + }, }, { name: 'date', @@ -35,7 +35,7 @@ export const showcaseSchemaBuilder = (lang) => ({ name: 'image', title: 'Image', type: 'array', - of: [{type: 'image'}] + of: [{ type: 'image' }], }, { name: 'caption', @@ -45,7 +45,7 @@ export const showcaseSchemaBuilder = (lang) => ({ { name: 'maker', title: 'Maker', - type: 'string', - } - ] + type: 'number', + }, + ], }) diff --git a/sites/sanity/scripts/export-strapi.mjs b/sites/sanity/scripts/export-strapi.mjs index 4bd856ce935..640b3cf8ecf 100644 --- a/sites/sanity/scripts/export-strapi.mjs +++ b/sites/sanity/scripts/export-strapi.mjs @@ -1,6 +1,5 @@ import fs from 'fs' import axios from 'axios' -import { strapiHost } from '../../shared/config/freesewing.mjs' import { unified } from 'unified' import remarkParser from 'remark-parse' import remarkCompiler from 'remark-stringify' @@ -9,6 +8,8 @@ import remarkFrontmatterExtractor from 'remark-extract-frontmatter' import yaml from 'yaml' import { remarkIntroPlugin } from '../../shared/mdx/remark-intro-plugin.mjs' +const strapiHost = 'https://posts.freesewing.org' + /* * Helper method to extract the intro from a Strapi post * @@ -70,7 +71,7 @@ const transformBlogPost = async (p, lang) => { for (const field of asIs) post[field] = p[field] post.intro = p.intro || p.title post.date = p.date - post.author = 'joost' + post.author = 1 post.image = { _type: 'image', _sanityAsset: `image@https://posts.freesewing.org${p.image.url}`, @@ -111,7 +112,7 @@ const transformShowcasePost = async (p, lang) => { for (const field of asIs) post[field] = p[field] post.intro = p.intro || p.title post.date = p.date - post.maker = 'joost' + post.maker = 1 post.image = [ { _type: 'image', diff --git a/sites/sanity/scripts/import-sanity.sh b/sites/sanity/scripts/import-sanity.sh index 77884e3252e..3d81a0f3b03 100755 --- a/sites/sanity/scripts/import-sanity.sh +++ b/sites/sanity/scripts/import-sanity.sh @@ -1,12 +1,12 @@ #!/bin/bash -sanity dataset import ./export/blogen.ndjson production -sanity dataset import ./export/bloges.ndjson production -sanity dataset import ./export/blogde.ndjson production -sanity dataset import ./export/blognl.ndjson production -sanity dataset import ./export/blogfr.ndjson production -sanity dataset import ./export/showcaseen.ndjson production -sanity dataset import ./export/showcasees.ndjson production -sanity dataset import ./export/showcasede.ndjson production -sanity dataset import ./export/showcasenl.ndjson production -sanity dataset import ./export/showcasefr.ndjson production -sanity dataset import ./export/newsletter.ndjson production +sanity dataset import ./export/blogen.ndjson site-content +sanity dataset import ./export/bloges.ndjson site-content +sanity dataset import ./export/blogde.ndjson site-content +sanity dataset import ./export/blognl.ndjson site-content +sanity dataset import ./export/blogfr.ndjson site-content +sanity dataset import ./export/showcaseen.ndjson site-content +sanity dataset import ./export/showcasees.ndjson site-content +sanity dataset import ./export/showcasede.ndjson site-content +sanity dataset import ./export/showcasenl.ndjson site-content +sanity dataset import ./export/showcasefr.ndjson site-content +sanity dataset import ./export/newsletter.ndjson site-content diff --git a/sites/shared/components/account/sets.mjs b/sites/shared/components/account/sets.mjs index 7a84df26252..fe62cc568da 100644 --- a/sites/shared/components/account/sets.mjs +++ b/sites/shared/components/account/sets.mjs @@ -727,7 +727,7 @@ const EditMeasurementsSet = (props) => {
{filterMeasurements().map((m) => ( - + ))}
) diff --git a/sites/shared/components/icons.mjs b/sites/shared/components/icons.mjs index 97387a0f622..e78fc968ebb 100644 --- a/sites/shared/components/icons.mjs +++ b/sites/shared/components/icons.mjs @@ -163,6 +163,16 @@ export const DesktopIcon = (props) => ( ) +export const DetailIcon = (props) => ( + + + + +) + export const DiscordIcon = (props) => ( @@ -274,6 +284,13 @@ export const I18nIcon = (props) => ( ) +export const IncludeIcon = (props) => ( + + + + +) + export const InstagramIcon = (props) => ( @@ -305,9 +322,15 @@ export const LinkIcon = (props) => ( ) -export const MeasureIcon = (props) => ( - - +export const MarginIcon = (props) => ( + + + +) + +export const MeasieIcon = (props) => ( + + ) @@ -385,6 +408,16 @@ export const PageSizeIcon = (props) => ( ) +export const PaperlessIcon = (props) => ( + + + + +) + export const PluginIcon = (props) => ( @@ -415,12 +448,33 @@ export const RightIcon = (props) => ( ) +export const RocketIcon = (props) => ( + + + +) + export const RssIcon = (props) => ( ) +export const SaIcon = (props) => ( + + + + +) + +export const ScaleIcon = (props) => ( + + + + + +) + export const SearchIcon = (props) => ( @@ -487,7 +541,11 @@ export const TwitterIcon = (props) => ( export const UnitsIcon = (props) => ( - + + ) diff --git a/sites/shared/components/mdx/docs-title.mjs b/sites/shared/components/mdx/docs-helpers.mjs similarity index 94% rename from sites/shared/components/mdx/docs-title.mjs rename to sites/shared/components/mdx/docs-helpers.mjs index 32726946730..9a4dbd83175 100644 --- a/sites/shared/components/mdx/docs-title.mjs +++ b/sites/shared/components/mdx/docs-helpers.mjs @@ -13,7 +13,7 @@ const getPage = { } export const DocsTitle = ({ slug, className = '', site = 'org' }) => { - const { siteNav } = useNavigation() + const siteNav = useNavigation() const page = getPage[site](slug, siteNav) return page ? {page.t} : null diff --git a/sites/shared/components/mdx/index.mjs b/sites/shared/components/mdx/index.mjs index ce4e4c513a0..b7a66fffc0b 100644 --- a/sites/shared/components/mdx/index.mjs +++ b/sites/shared/components/mdx/index.mjs @@ -8,7 +8,7 @@ import { TabbedExample as Example } from './tabbed-example.mjs' import { HttpMethod, HttpStatusCode } from './http.mjs' import { ControlTip } from '../control/tip.mjs' import { Legend } from './legend.mjs' -import { DocsTitle, DocsLink } from './docs-title.mjs' +import { DocsTitle, DocsLink } from './docs-helpers.mjs' import { V3Wip } from '../v3-wip.mjs' export const components = (site = 'org') => { @@ -21,6 +21,7 @@ export const components = (site = 'org') => { ReadMore: (props) => , Related: (props) => , Tip: (props) => , + Tldr: (props) => , Warning: (props) => , YouTube, pre: (props) => , diff --git a/sites/shared/components/mdx/legend.mjs b/sites/shared/components/mdx/legend.mjs index dc49fddf90e..6b813983088 100644 --- a/sites/shared/components/mdx/legend.mjs +++ b/sites/shared/components/mdx/legend.mjs @@ -1,5 +1,5 @@ import { Legend as LegendDesign } from '@freesewing/legend' -import { Example } from './tabbed-example.mjs' +import { TabbedExample as Example } from './tabbed-example.mjs' export const Legend = ({ caption = false, part = '', children = null }) => { const settings = { diff --git a/sites/shared/components/mdx/read-more.mjs b/sites/shared/components/mdx/read-more.mjs index f7defccdb2d..d8ee0a0e883 100644 --- a/sites/shared/components/mdx/read-more.mjs +++ b/sites/shared/components/mdx/read-more.mjs @@ -43,7 +43,7 @@ export const ReadMore = ({ pretty = false, }) => { const { slug } = useContext(NavigationContext) - const { siteNav } = useNavigation() + const siteNav = useNavigation() // Deal with recurse not being a number if (recurse && recurse !== true) { diff --git a/sites/shared/components/mdx/tabbed-example.mjs b/sites/shared/components/mdx/tabbed-example.mjs index 7337815b4e5..33b127e61f8 100644 --- a/sites/shared/components/mdx/tabbed-example.mjs +++ b/sites/shared/components/mdx/tabbed-example.mjs @@ -4,11 +4,8 @@ import { pluginBundle } from '@freesewing/plugin-bundle' import { pluginFlip } from '@freesewing/plugin-flip' import { pluginGore } from '@freesewing/plugin-gore' import { Design } from '@freesewing/core' -// import { Svg } from 'pkgs/react-components/src/index.mjs' -//import { Defs } from '../workbench/pattern/defs' -//import { Stack } from '../workbench/pattern/stack' -// import { useState } from 'react' import yaml from 'js-yaml' +import { Pattern, PatternXray } from '@freesewing/react-components' // Get code from children export const asText = (reactEl) => { @@ -21,47 +18,8 @@ export const asText = (reactEl) => { return '' } -// The actual example -export const Example = ({ - patternProps, - // settings, - // showInfo, - // xray = false, -}) => { - // const [ui, setUi] = useState({ renderer: 'react', xray: { enabled: xray } }) - - if (patternProps.logs.pattern.error.length > 0 || patternProps.logs.sets[0].error.length > 0) - return ( -
-
{patternProps.logs.pattern.error.join('\n')}
-
{patternProps.logs.sets[0].error.join('\n')}
-
- ) - - return null - - // FIXME - - //return ( - // - // - // - // - // {Object.keys(patternProps.stacks).map((stackName) => ( - // - // ))} - // - // - //) -} - -// Returns a FreeSewing draft based on code in children -const buildExample = (children, settings = { margin: 5 }, tutorial = false, paperless = false) => { +// Returns a FreeSewing pattern based on code in children +const buildPattern = (children, settings = { margin: 5 }, tutorial = false, paperless = false) => { let code = asText(children) // FIXME: Refactor to not use eval let draft @@ -98,6 +56,28 @@ const buildExample = (children, settings = { margin: 5 }, tutorial = false, pape return new design(settings) } +// Handles display of pattern in mormal or xray mode +const ShowPattern = ({ renderProps, logs, mode = 'normal' }) => { + if (!renderProps) return null + + if (logs.pattern.error.length > 0 || logs.sets[0].error.length > 0) + return ( +
+
fixme: Errors logged. Please implement log view
+
+ ) + + if (mode === 'xray') + return ( + <> +

xray

+ + + ) + + return +} + // Wrapper component dealing with the tabs and code view export const TabbedExample = ({ children, @@ -115,13 +95,17 @@ export const TabbedExample = ({ } else settings = { margin: 5 } if (withHead) settings.measurements = { head: 300 } - const draft = buildExample(children, settings, tutorial, paperless) + const pattern = buildPattern(children, settings, tutorial, paperless) - if (!draft.sample) return null + // Check that it's a valid pattern + if (!pattern.sample) return null - const patternProps = settings.sample - ? draft.sample().getRenderProps() - : draft.draft().getRenderProps() + const patternProps = { + renderProps: settings.sample + ? pattern.sample().getRenderProps() + : pattern.draft().getRenderProps(), + logs: pattern.getLogs(), + } if (tutorial && !previewFirst) return ( @@ -129,10 +113,10 @@ export const TabbedExample = ({ {children} - + - + {caption && ( @@ -147,11 +131,11 @@ export const TabbedExample = ({
- + {children} - + {caption && ( diff --git a/sites/shared/components/mdx/toc.mjs b/sites/shared/components/mdx/toc.mjs new file mode 100644 index 00000000000..fcc54c5affc --- /dev/null +++ b/sites/shared/components/mdx/toc.mjs @@ -0,0 +1,59 @@ +import { useTranslation } from 'next-i18next' +import { scrollTo } from 'shared/utils.mjs' + +export const ns = ['docs'] + +const Spacer = () =>      + +export const Toc = ({ toc = [], wrap = false }) => { + const { t } = useTranslation(ns) + if (toc.length < 1) return null + const ul = ( + + ) + + return ( + <> + + {wrap ? ( + + ) : ( + ul + )} + + ) +} diff --git a/sites/shared/components/navigation/primary.mjs b/sites/shared/components/navigation/primary.mjs index 8d5a3cd2c38..875b3a04423 100644 --- a/sites/shared/components/navigation/primary.mjs +++ b/sites/shared/components/navigation/primary.mjs @@ -9,7 +9,7 @@ import { RssIcon, ShowcaseIcon, UserIcon, - MeasureIcon, + MeasieIcon, PageIcon, CodeIcon, I18nIcon, @@ -41,7 +41,7 @@ export const icons = { docs: (className = '') => , showcase: (className = '') => , community: (className = '') => , - sets: (className = '') => , + sets: (className = '') => , patterns: (className = '') => , // Lab diff --git a/sites/shared/components/pattern/manage.mjs b/sites/shared/components/pattern/manage.mjs index 423ccdb9c95..f3ce25a8041 100644 --- a/sites/shared/components/pattern/manage.mjs +++ b/sites/shared/components/pattern/manage.mjs @@ -19,7 +19,7 @@ import { OkIcon, NoIcon, DesignIcon, - MeasureIcon, + MeasieIcon, } from 'shared/components/icons.mjs' import { capitalize } from 'shared/utils.mjs' import Link from 'next/link' @@ -102,7 +102,7 @@ export const ManagePattern = ({ id = false }) => { {pattern.design} - }> + }> { >
- {type} + + {type === 'tldr' ? 'TL;DR' : type} + {type === 'comment' && ( <> diff --git a/sites/shared/components/workbench/header.mjs b/sites/shared/components/workbench/header.mjs index 72faafc323a..d28dfa8c802 100644 --- a/sites/shared/components/workbench/header.mjs +++ b/sites/shared/components/workbench/header.mjs @@ -1,8 +1,6 @@ // Hooks -import { useContext } from 'react' +import { useState } from 'react' import { useTranslation } from 'next-i18next' -// Context -import { ModalContext } from 'shared/context/modal-context.mjs' // Components import { BeakerIcon, @@ -10,134 +8,156 @@ import { CodeIcon, CutIcon, HelpIcon, - HomeIcon, - MenuIcon, OptionsIcon, PrintIcon, UploadIcon, + RightIcon, + LeftIcon, + DocsIcon, + SearchIcon, + MeasieIcon, } from 'shared/components/icons.mjs' -import { Ribbon } from 'shared/components/ribbon.mjs' import Link from 'next/link' -import { ModalMenu } from 'site/components/navigation/modal-menu.mjs' -import { NavButton, NavSpacer, colors } from 'shared/components/header.mjs' export const ns = ['workbench', 'sections'] -const NavIcons = ({ setModal, setView, view }) => { +export const NavButton = ({ + href, + label, + children, + onClick = false, + active = false, + extraClasses = 'bg-neutral text-neutral-content hover:bg-secondary hover:text-secondary-content', +}) => { + const className = `w-full flex flex-row items-center px-4 py-2 ${extraClasses} ${ + active ? 'text-secondary' : '' + }` + const span = {label} + + return onClick ? ( + + ) : ( + + {span} + {children} + + ) +} + +const NavIcons = ({ setView, setDense, dense, view }) => { const { t } = useTranslation(['header']) - const iconSize = 'h-6 w-6 lg:h-12 lg:w-12' + const iconSize = 'h-6 w-6 grow-0' return ( <> setModal()} - label={t('workbench:menu')} - color={colors[0]} + onClick={() => setDense(!dense)} + label={t('workbench:viewMenu')} + extraClasses="text-success bg-neutral hover:bg-success hover:text-neutral" > - + {dense ? ( + + ) : ( + + )} - setView('draft')} - label={t('workbench:draft')} - color={colors[1]} + label={t('workbench:configurePattern')} active={view === 'draft'} > + setView('measies')} + label={t('workbench:measies')} + active={view === 'measies'} + > + + setView('test')} - label={t('workbench:test')} - color={colors[2]} - extraClasses="hidden lg:flex" + label={t('workbench:testPattern')} + active={view === 'test'} > setView('print')} label={t('workbench:printLayout')} - color={colors[3]} - extraClasses="hidden lg:flex" + active={view === 'print'} > setView('cut')} label={t('workbench:cutLayout')} - color={colors[4]} - extraClasses="hidden lg:flex" + active={view === 'cut'} > - setView('save')} - label={t('workbench:save')} - color={colors[5]} - extraClasses="hidden lg:flex" + label={t('workbench:savePattern')} + active={view === 'save'} > setView('export')} - label={t('workbench:export')} - color={colors[6]} - extraClasses="hidden lg:flex" + label={t('workbench:exportPattern')} + active={view === 'export'} > setView('edit')} - label={t('workbench:edit')} - color={colors[7]} - extraClasses="hidden lg:flex" + label={t('workbench:editSettings')} + active={view === 'edit'} > - setView('logs')} + label={t('workbench:patternLogs')} + active={view === 'logs'} > - + - - + setView('inspect')} + label={t('workbench:patternInspector')} + active={view === 'inspect'} + > + + + + ) } -export const WorkbenchHeader = ({ view, setView, update }) => { - const { setModal } = useContext(ModalContext) +export const WorkbenchHeader = ({ view, setView }) => { + const [dense, setDense] = useState(true) return ( ) } diff --git a/sites/shared/components/workbench/index.mjs b/sites/shared/components/workbench/index.mjs index bf8f5269487..e5bff615bba 100644 --- a/sites/shared/components/workbench/index.mjs +++ b/sites/shared/components/workbench/index.mjs @@ -3,6 +3,7 @@ import { useEffect, useState } from 'react' import { useTranslation } from 'next-i18next' import { useView } from 'shared/hooks/use-view.mjs' import { useAccount } from 'shared/hooks/use-account.mjs' +import { useControlState } from 'shared/components/account/control.mjs' // Dependencies import { pluginTheme } from '@freesewing/plugin-theme' import { pluginI18n } from '@freesewing/plugin-i18n' @@ -19,7 +20,9 @@ import { CutView, ns as cutNs } from 'shared/components/workbench/views/cut/inde import { EditView, ns as editNs } from './views/edit/index.mjs' import { TestView, ns as testNs } from 'shared/components/workbench/views/test/index.mjs' import { ExportView, ns as exportNs } from 'shared/components/workbench/views/exporting/index.mjs' - +import { LogView, ns as logNs } from 'shared/components/workbench/views/logs/index.mjs' +import { InspectView, ns as inspectNs } from 'shared/components/workbench/views/inspect/index.mjs' +import { MeasiesView, ns as measiesNs } from 'shared/components/workbench/views/measies/index.mjs' export const ns = [ 'account', 'workbench', @@ -30,6 +33,9 @@ export const ns = [ ...editNs, ...testNs, ...exportNs, + ...logNs, + ...inspectNs, + ...measiesNs, ] const defaultUi = { @@ -43,15 +49,19 @@ const views = { export: ExportView, edit: EditView, test: TestView, + logs: LogView, + inspect: InspectView, + measies: MeasiesView, } -const draftViews = ['draft'] +const draftViews = ['draft', 'inspect'] export const Workbench = ({ design, Design, baseSettings, DynamicDocs, from }) => { // Hooks const { t, i18n } = useTranslation(ns) const { language } = i18n const { account } = useAccount() + const controlState = useControlState() // State const [view, setView] = useView() @@ -69,6 +79,28 @@ export const Workbench = ({ design, Design, baseSettings, DynamicDocs, from }) = const update = { settings: (path, val) => setSettings(objUpdate({ ...settings }, path, val)), ui: (path, val) => setUi(objUpdate({ ...ui }, path, val)), + toggleSa: () => { + const sa = settings.samm || (account.imperial ? 15.3125 : 10) + if (settings.sabool) + setSettings( + objUpdate({ ...settings }, [ + [['sabool'], 0], + [['sa'], 0], + [['samm'], sa], + ]) + ) + else { + const sa = settings.samm || (account.imperial ? 15.3125 : 10) + setSettings( + objUpdate({ ...settings }, [ + [['sabool'], 1], + [['sa'], sa], + [['samm'], sa], + ]) + ) + } + }, + setControl: controlState.update, } // Don't bother without a Design @@ -87,6 +119,7 @@ export const Workbench = ({ design, Design, baseSettings, DynamicDocs, from }) = const viewProps = { account, design, + view, setView, update, settings, @@ -127,6 +160,9 @@ export const Workbench = ({ design, Design, baseSettings, DynamicDocs, from }) = // Draft the pattern or die trying try { pattern.draft() + const errors = [...pattern.store.logs.error] + for (const store of pattern.setStores) errors.push(...store.logs.error) + if (errors.length > 0) setView('logs') } catch (error) { console.log(error) setError({JSON.stringify(error)}) @@ -138,9 +174,11 @@ export const Workbench = ({ design, Design, baseSettings, DynamicDocs, from }) = } return ( - <> - - {viewContent} - +
+
+ +
+
{viewContent}
+
) } diff --git a/sites/shared/components/workbench/menus/core-settings/config.mjs b/sites/shared/components/workbench/menus/core-settings/config.mjs index 4e5387ab160..79d43a1f856 100644 --- a/sites/shared/components/workbench/menus/core-settings/config.mjs +++ b/sites/shared/components/workbench/menus/core-settings/config.mjs @@ -1,4 +1,14 @@ import { measurementAsMm } from 'shared/utils.mjs' +import { + SaIcon, + ScaleIcon, + PaperlessIcon, + I18nIcon, + UnitsIcon, + DetailIcon, + IncludeIcon, + MarginIcon, +} from 'shared/components/icons.mjs' export const defaultSamm = (units, inMm = true) => { const dflt = units === 'metric' ? 1 : 0.5 @@ -23,7 +33,7 @@ export const loadSettingsConfig = ({ 1: 'yes', }, dflt: 0, - emoji: '✂️', + icon: SaIcon, }, samm: sabool ? { @@ -32,6 +42,7 @@ export const loadSettingsConfig = ({ max: units === 'metric' ? 2.5 : 2, dflt: defaultSamm(units, false), step: units === 'metric' ? 0.1 : 0.125, + icon: SaIcon, } : false, paperless: { @@ -46,7 +57,7 @@ export const loadSettingsConfig = ({ 1: 'yes', }, dflt: 0, - emoji: '🌲', + icon: PaperlessIcon, }, locale: { control: 3, // Show when control > 2 @@ -66,7 +77,7 @@ export const loadSettingsConfig = ({ fr: 'fr.t', nl: 'nl.t', }, - emoji: '🇺🇳', + icon: I18nIcon, }, units: { control: 1, // Show when control > 2 @@ -80,7 +91,7 @@ export const loadSettingsConfig = ({ metric: 'metric', imperial: 'imperial', }, - emoji: '📐', + icon: UnitsIcon, }, complete: { control: 4, // Show when control > 3 @@ -94,14 +105,14 @@ export const loadSettingsConfig = ({ 0: 'no', 1: 'yes', }, - emoji: '🔎', + icon: DetailIcon, }, only: { control: 4, // Show when control > 3 dflt: false, list: parts, parts, - emoji: '🛍️', + icon: IncludeIcon, }, scale: { control: 4, // Show when control > 3 @@ -109,7 +120,7 @@ export const loadSettingsConfig = ({ max: 5, dflt: 1, step: 0.1, - emoji: '🪆', + icon: ScaleIcon, }, margin: { control: 4, // Show when control > 3 @@ -117,6 +128,6 @@ export const loadSettingsConfig = ({ max: 2.5, dflt: units === 'metric' ? 0.2 : 0.125, step: units === 'metric' ? 0.1 : 0.125, - emoji: '🔲', + icon: MarginIcon, }, }) diff --git a/sites/shared/components/workbench/menus/design-options/index.mjs b/sites/shared/components/workbench/menus/design-options/index.mjs index 770f4a3f517..6829d5707dd 100644 --- a/sites/shared/components/workbench/menus/design-options/index.mjs +++ b/sites/shared/components/workbench/menus/design-options/index.mjs @@ -90,7 +90,7 @@ export const DesignOptions = ({ name: 'design-options:designOptions', language, ns: menuNs, - passProps: { settings }, + passProps: { settings, patternConfig }, updateFunc: (name, value) => update.settings(['options', ...name], value), }} /> diff --git a/sites/shared/components/workbench/menus/design-options/inputs.mjs b/sites/shared/components/workbench/menus/design-options/inputs.mjs index fc8c244f8b4..7e3d306aef2 100644 --- a/sites/shared/components/workbench/menus/design-options/inputs.mjs +++ b/sites/shared/components/workbench/menus/design-options/inputs.mjs @@ -1,4 +1,5 @@ import { formatMm } from 'shared/utils.mjs' +import { mergeOptions } from '@freesewing/core' import { BoolInput, ConstantInput, @@ -16,7 +17,13 @@ const PctOptionInput = (props) => {
{config.toAbs && settings.measurements - ? formatMm(config.toAbs(currentOrDefault, settings)) + ? formatMm( + config.toAbs( + currentOrDefault, + settings, + mergeOptions(settings, props.patternConfig.options) + ) + ) : ' '}
diff --git a/sites/shared/components/workbench/menus/design-options/values.mjs b/sites/shared/components/workbench/menus/design-options/values.mjs index dd935ea3867..c1f2f1909b1 100644 --- a/sites/shared/components/workbench/menus/design-options/values.mjs +++ b/sites/shared/components/workbench/menus/design-options/values.mjs @@ -1,14 +1,19 @@ import { formatMm, formatPercentage } from 'shared/utils.mjs' import { ListValue, HighlightedValue, PlainValue, BoolValue } from '../shared/values' +import { mergeOptions } from '@freesewing/core' /** Displays the current percentatge value, and the absolute value if configured */ -export const PctOptionValue = ({ config, current, settings, changed }) => { +export const PctOptionValue = ({ config, current, settings, changed, patternConfig }) => { const val = changed ? current : config.pct / 100 return ( {formatPercentage(val)} - {config.toAbs && settings.measurements ? ` | ${formatMm(config.toAbs(val, settings))}` : null} + {config.toAbs && settings.measurements + ? ` | ${formatMm( + config.toAbs(val, settings, mergeOptions(settings, patternConfig.options)) + )}` + : null} ) } diff --git a/sites/shared/components/workbench/menus/shared/menu-item.mjs b/sites/shared/components/workbench/menus/shared/menu-item.mjs index 4f4330f8fe3..752f92750f2 100644 --- a/sites/shared/components/workbench/menus/shared/menu-item.mjs +++ b/sites/shared/components/workbench/menus/shared/menu-item.mjs @@ -23,12 +23,10 @@ export const wasChanged = (current, config) => { * @param {Boolean} options.open is the menu item open? * @param {String} options.emoji the emoji icon of the menu item */ -export const ItemTitle = ({ name, t, current = null, open = false, emoji = '' }) => ( +export const ItemTitle = ({ name, t, current = null, open = false, emoji = '', Icon = false }) => (
- - - {emoji} - + + {Icon ? : {emoji}} {t([`${name}.t`, name])} {current} @@ -134,7 +132,13 @@ export const MenuItem = ({ } // props to pass to the ItemTitle - const titleProps = { name, t, current: , emoji: config.emoji } + const titleProps = { + name, + t, + current: , + emoji: config.emoji, + Icon: config.icon, + } return ( { - return null - // FIXME - /* - if (!attr || !attr.list || Object.keys(attr.list).length < 1) return null - - return ( -
  • -
    - - - - Attributes - - - -
      - {Object.keys(attr.list).map((at) => ( -
    • -
      - - - - {at} - - - -
        - {attr.list[at].map((val) => ( -
      • - - - {val === true ? t('app.yes') : val} - -
      • - ))} -
      -
      -
    • - ))} -
    -
    -
  • - ) - */ -} diff --git a/sites/shared/components/workbench/menus/ui-settings/config.mjs b/sites/shared/components/workbench/menus/ui-settings/config.mjs index 369438238ee..2654732e700 100644 --- a/sites/shared/components/workbench/menus/ui-settings/config.mjs +++ b/sites/shared/components/workbench/menus/ui-settings/config.mjs @@ -1,10 +1,13 @@ -export const loadSettingsConfig = (settings) => { +import { RocketIcon, ControlIcon } from 'shared/components/icons.mjs' + +export const loadSettingsConfig = () => { const uiSettings = { control: { control: 1, // Show when control > 0 emoji: '🖥️', list: [1, 2, 3, 4, 5], choiceTitles: {}, + icon: ControlIcon, }, renderer: { control: 4, // Show when control > 3 @@ -18,21 +21,7 @@ export const loadSettingsConfig = (settings) => { svg: 'SVG', }, dflt: 'react', - emoji: '🚀', - }, - inspect: settings.renderer !== 'svg' && { - control: 4, // Show when control > 3 - list: [0, 1], - choiceTitles: { - 0: 'inspectNo', - 1: 'inspectYes', - }, - valueTitles: { - 0: 'no', - 1: 'yes', - }, - dflt: 0, - emoji: '🔬', + icon: RocketIcon, }, } diff --git a/sites/shared/components/workbench/menus/ui-settings/index.mjs b/sites/shared/components/workbench/menus/ui-settings/index.mjs index 591bcb27f8b..d1dea11413d 100644 --- a/sites/shared/components/workbench/menus/ui-settings/index.mjs +++ b/sites/shared/components/workbench/menus/ui-settings/index.mjs @@ -13,13 +13,13 @@ const UiSetting = ({ name, control, ...rest }) => ( 3} + allowToggle={!['control', 'view'].includes(name) && control > 3} control={control} /> ) -export const UiSettings = ({ update, ui, control, language, DynamicDocs }) => { - const settingsConfig = loadSettingsConfig(ui) +export const UiSettings = ({ update, ui, control, language, DynamicDocs, view, setView }) => { + const settingsConfig = loadSettingsConfig() return ( { name: 'uiSettings', ns, updateFunc: update.ui, + passProps: { view, setView }, }} /> ) diff --git a/sites/shared/components/workbench/menus/ui-settings/inputs.mjs b/sites/shared/components/workbench/menus/ui-settings/inputs.mjs index 0b7223b692c..0c467df0e19 100644 --- a/sites/shared/components/workbench/menus/ui-settings/inputs.mjs +++ b/sites/shared/components/workbench/menus/ui-settings/inputs.mjs @@ -1,4 +1,4 @@ -import { ListInput, BoolInput } from '../shared/inputs' +import { ListInput } from '../shared/inputs' import { useControlState } from 'shared/components/account/control.mjs' export const ControlSettingInput = (props) => { @@ -17,6 +17,5 @@ export const ControlSettingInput = (props) => { export const inputs = { renderer: ListInput, - inspect: BoolInput, control: ControlSettingInput, } diff --git a/sites/shared/components/workbench/menus/ui-settings/log.mjs b/sites/shared/components/workbench/menus/ui-settings/log.mjs deleted file mode 100644 index b6029be7cc1..00000000000 --- a/sites/shared/components/workbench/menus/ui-settings/log.mjs +++ /dev/null @@ -1,38 +0,0 @@ -//import { Chevron } from 'shared/components/navigation/primary.mjs' - -export const ConsoleLog = (props) => null -// FIXME -/* - ( -
  • -
    - - - - console.log() - - - -
      - {['designConfig', 'patternConfig', 'gist', 'draft', 'renderProps'].map((it) => ( -
    • - { - if (it === 'designConfig') return console.log(props.design.designConfig) - if (it === 'patternConfig') return console.log(props.design.patternConfig) - if (it === 'renderProps') return console.log(props.draft.getRenderProps()) - return console.log(props[it]) - }} - > - - - {it} - - -
    • - ))} -
    -
    -
  • -) -*/ diff --git a/sites/shared/components/workbench/menus/ui-settings/path-ops.mjs b/sites/shared/components/workbench/menus/ui-settings/path-ops.mjs deleted file mode 100644 index 824504745f0..00000000000 --- a/sites/shared/components/workbench/menus/ui-settings/path-ops.mjs +++ /dev/null @@ -1,71 +0,0 @@ -//import { Chevron } from 'shared/components/navigation/primary' -//import { XrayPoint } from './point' -// -//const MoveLine = ({ op }) => -//const Curve = ({ op }) => null -/* - ['cp1', 'cp2', 'to'].map((pnt) => ( -
  • -
    - - - - {pnt} - - - - -
    -
  • - )) -*/ -//const XrayPathOp = ({ op }) => null -/* - * ( -
  • - {op.type === 'close' ? ( - - - {op.type} - - ) : ( -
    - - - - {op.type} - To - - - -
      {op.type === 'curve' ? : }
    -
    - )} -
  • -) -*/ -export const XrayPathOps = ({ ops = false }) => null -/* - * { - if (!ops || ops.length < 1) return null - - return ( -
  • -
    - - - - path.ops - - - -
      - {ops.map((op) => ( - - ))} -
    -
    -
  • - ) -} -*/ diff --git a/sites/shared/components/workbench/menus/ui-settings/path.mjs b/sites/shared/components/workbench/menus/ui-settings/path.mjs deleted file mode 100644 index 22c0fc66087..00000000000 --- a/sites/shared/components/workbench/menus/ui-settings/path.mjs +++ /dev/null @@ -1,35 +0,0 @@ -//import { formatMm } from 'shared/utils.mjs' -//import { XrayAttributes } from './attributes.mjs' -//import { XrayPathOps } from './path-ops.mjs' - -export const XrayPath = ({ pathName, partName, draft, units }) => null -/*{ - const path = draft?.parts?.[partName]?.paths?.[pathName] - - if (!path) return null - return ( -
      - -
    • - - - path.render = - {JSON.stringify(path.render)} - -
    • -
    • - - - path.length() = - - -
    • - -
    - ) -} -*/ diff --git a/sites/shared/components/workbench/menus/ui-settings/point.mjs b/sites/shared/components/workbench/menus/ui-settings/point.mjs deleted file mode 100644 index 8b60c41e740..00000000000 --- a/sites/shared/components/workbench/menus/ui-settings/point.mjs +++ /dev/null @@ -1,23 +0,0 @@ -//import { round } from 'shared/utils' -//import { XrayAttributes } from './attributes' - -export const XrayPoint = ({ pointName, partName, draft, t }) => null -/*{ - const point = draft?.parts?.[partName]?.points?.[pointName] - - return point ? ( -
      - {['x', 'y'].map((coord) => ( -
    • - - - {coord} = - {round(point[coord])} - -
    • - ))} - -
    - ) : null -} -*/ diff --git a/sites/shared/components/workbench/menus/ui-settings/reset.mjs b/sites/shared/components/workbench/menus/ui-settings/reset.mjs deleted file mode 100644 index f452ec76864..00000000000 --- a/sites/shared/components/workbench/menus/ui-settings/reset.mjs +++ /dev/null @@ -1,18 +0,0 @@ -//import { useTranslation } from 'next-i18next' - -export const XrayReset = (props) => null -/*{ - const { t } = useTranslation(['app']) - - return ( -
  • - props.updateGist(['_state', 'xray'], { enabled: true })}> - - - {t(`reset`)} - - -
  • - ) -} -*/ diff --git a/sites/shared/components/workbench/menus/ui-settings/ui-settings.en.yaml b/sites/shared/components/workbench/menus/ui-settings/ui-settings.en.yaml index e22b2251407..6913c5aa938 100644 --- a/sites/shared/components/workbench/menus/ui-settings/ui-settings.en.yaml +++ b/sites/shared/components/workbench/menus/ui-settings/ui-settings.en.yaml @@ -16,3 +16,28 @@ inspectYes.t: Enable the inspector inspectYes.d: With the pattern inspector enabled and the React rendering engine selected, we will add interactivity to the pattern to allow you to inspect the various elements that make up the pattern. no: No yes: Yes +draft: Draft +test: Test +print: Print layout +cut: Cut Layout +save: Save +export: Export +edit: Edit +draft.t: Draft your pattern +draft.d: Launches FreeSewing flagship pattern editor, where you can tweak your pattern to your heart's desire +test.t: Test your pattern +test.d: See how your pattern adapts to changes in options, or measurements +print.t: Print Layout +print.d: Allows you to arrange your pattern pieces so you can printing your pattern on as little pages as possible +cut.t: Cutting layout +cut.d: Allows you to arrange your pattern pieces so you can determine exactly how much fabric you need to make it. +save.t: Save your pattern +save.d: Save the current pattern to your FreeSewing account +export.t: Export your pattern +export.d: Allows you to export this pattern to a variety of formats +logs.t: Pattern logs +logs.d: Allows you to browse the pattern logs to see what exactly happened while drafting this pattern +edit.t: Hand-edit the pattern settings +edit.d: This allows you to hand-edit the pattern settings, giving you full control over how your pattern will be drafted +view: View +view.d: These are the various views you can pick from. Includes those views available via the navigation bar or menu, and some additional ones diff --git a/sites/shared/components/workbench/menus/ui-settings/values.mjs b/sites/shared/components/workbench/menus/ui-settings/values.mjs index ff06473fd28..1cdc672cd14 100644 --- a/sites/shared/components/workbench/menus/ui-settings/values.mjs +++ b/sites/shared/components/workbench/menus/ui-settings/values.mjs @@ -3,6 +3,5 @@ import { ListValue } from '../shared/values.mjs' export const values = { renderer: ListValue, - inspect: ListValue, control: ({ control }) => , } diff --git a/sites/shared/components/workbench/views/draft/index.mjs b/sites/shared/components/workbench/views/draft/index.mjs index f9fc013b641..91345786bb4 100644 --- a/sites/shared/components/workbench/views/draft/index.mjs +++ b/sites/shared/components/workbench/views/draft/index.mjs @@ -1,11 +1,83 @@ -import { useState } from 'react' import { PanZoomPattern as ShowPattern } from 'shared/components/workbench/pan-zoom-pattern.mjs' -import { InspectorPattern } from './inspector/pattern.mjs' import { DraftMenu, ns as menuNs } from './menu.mjs' -import { objUpdate } from 'shared/utils.mjs' +import { + PaperlessIcon, + SaIcon, + RocketIcon, + BulletIcon, + UnitsIcon, + DetailIcon, +} from 'shared/components/icons.mjs' export const ns = menuNs +const IconButton = ({ Icon, onClick, dflt = true }) => ( + +) + +const Spacer = () => | + +export const DraftViewHeader = ({ update, settings, ui, control }) => { + return ( +
    +
    + update.toggleSa()} + /> + update.settings(['paperless'], !settings.paperless)} + /> + + update.settings( + ['complete'], + typeof settings.complete === 'undefined' ? 0 : settings.complete ? 0 : 1 + ) + } + /> + + } + dflt={settings.units !== 'imperial'} + onClick={() => + update.settings(['units'], settings.units === 'imperial' ? 'metric' : 'imperial') + } + /> +
    + +
    + {[1, 2, 3, 4, 5].map((score) => ( + + ))} +
    + +
    + update.ui(['renderer'], ui.renderer === 'react' ? 'svg' : 'react')} + /> +
    +
    + ) +} + export const DraftView = ({ design, pattern, @@ -16,38 +88,9 @@ export const DraftView = ({ language, account, DynamicDocs, + setView, + view, }) => { - // State for inspector - const [inspect, setInspect] = useState({ - show: {}, - reveal: {}, - }) - const inspector = { - show: (data) => { - const newInspect = { ...inspect } - newInspect.show[data.id] = data - setInspect(newInspect) - }, - hide: (id) => { - const newInspect = { ...inspect } - delete newInspect.show[id] - delete newInspect.reveal[id] - setInspect(newInspect) - }, - reveal: (id) => { - const newInspect = { ...inspect } - if (newInspect.reveal[id]) delete newInspect.reveal[id] - else newInspect.reveal[id] = 1 - setInspect(newInspect) - }, - update: (path, val) => { - const newInspect = objUpdate({ ...inspect }, path, val) - setInspect(newInspect) - }, - data: inspect, - pattern: pattern, - } - let output = null let renderProps = false if (ui.renderer === 'svg') { @@ -59,32 +102,39 @@ export const DraftView = ({ } } else { renderProps = pattern.getRenderProps() - output = ui.inspect ? ( - - ) : ( - - ) + output = } return ( -
    -
    {output}
    -
    - +
    + +
    +
    {output}
    +
    + +
    ) diff --git a/sites/shared/components/workbench/views/draft/menu.mjs b/sites/shared/components/workbench/views/draft/menu.mjs index 67f6db81f81..ff685193adc 100644 --- a/sites/shared/components/workbench/views/draft/menu.mjs +++ b/sites/shared/components/workbench/views/draft/menu.mjs @@ -7,9 +7,8 @@ import { ns as coreMenuNs, } from 'shared/components/workbench/menus/core-settings/index.mjs' import { UiSettings, ns as uiNs } from 'shared/components/workbench/menus/ui-settings/index.mjs' -import { Inspector, ns as inspectorNs } from './inspector/menu.mjs' -export const ns = [...coreMenuNs, ...designMenuNs, ...uiNs, inspectorNs] +export const ns = [...coreMenuNs, ...designMenuNs, ...uiNs] export const DraftMenu = ({ design, @@ -20,8 +19,8 @@ export const DraftMenu = ({ language, account, DynamicDocs, - inspector = false, - renderProps, + view, + setView, }) => { const control = account.control const menuProps = { @@ -37,10 +36,9 @@ export const DraftMenu = ({ return ( ) } diff --git a/sites/shared/components/workbench/views/inspect/index.mjs b/sites/shared/components/workbench/views/inspect/index.mjs new file mode 100644 index 00000000000..bc4e5169de8 --- /dev/null +++ b/sites/shared/components/workbench/views/inspect/index.mjs @@ -0,0 +1,96 @@ +import { useState } from 'react' +import { PanZoomPattern as ShowPattern } from 'shared/components/workbench/pan-zoom-pattern.mjs' +import { InspectorPattern } from './inspector/pattern.mjs' +import { DraftMenu, ns as menuNs } from './menu.mjs' +import { objUpdate } from 'shared/utils.mjs' + +export const ns = menuNs + +export const DraftView = ({ + design, + pattern, + patternConfig, + settings, + ui, + update, + language, + account, + DynamicDocs, + setView, + view, +}) => { + // State for inspector + const [inspect, setInspect] = useState({ + show: {}, + reveal: {}, + }) + + const inspector = { + show: (data) => { + const newInspect = { ...inspect } + newInspect.show[data.id] = data + setInspect(newInspect) + }, + hide: (id) => { + const newInspect = { ...inspect } + delete newInspect.show[id] + delete newInspect.reveal[id] + setInspect(newInspect) + }, + reveal: (id) => { + const newInspect = { ...inspect } + if (newInspect.reveal[id]) delete newInspect.reveal[id] + else newInspect.reveal[id] = 1 + setInspect(newInspect) + }, + update: (path, val) => { + const newInspect = objUpdate({ ...inspect }, path, val) + setInspect(newInspect) + }, + data: inspect, + pattern: pattern, + } + + let output = null + let renderProps = false + if (ui.renderer === 'svg') { + try { + const __html = pattern.render() + output =
    + } catch (err) { + console.log(err) + } + } else { + renderProps = pattern.getRenderProps() + output = ui.inspect ? ( + + ) : ( + + ) + } + + return ( +
    +
    {output}
    +
    + +
    +
    + ) +} diff --git a/sites/shared/components/workbench/views/draft/inspector/menu.mjs b/sites/shared/components/workbench/views/inspect/inspector/menu.mjs similarity index 88% rename from sites/shared/components/workbench/views/draft/inspector/menu.mjs rename to sites/shared/components/workbench/views/inspect/inspector/menu.mjs index 3a8896e96da..52e81b6ca52 100644 --- a/sites/shared/components/workbench/views/draft/inspector/menu.mjs +++ b/sites/shared/components/workbench/views/inspect/inspector/menu.mjs @@ -106,8 +106,12 @@ const StackFinder = ({ renderProps, inspector, t }) => { return ( <>
    - + {orderBy(all.stacks, ['label'], ['asc']).map((stack) => ( @@ -116,8 +120,12 @@ const StackFinder = ({ renderProps, inspector, t }) => { ))} - + {orderBy(all.paths, ['label'], ['asc']).map((path) => ( @@ -126,8 +134,12 @@ const StackFinder = ({ renderProps, inspector, t }) => { ))} - + {orderBy(all.points, ['label'], ['asc']).map((point) => ( diff --git a/sites/shared/components/workbench/views/draft/inspector/path.mjs b/sites/shared/components/workbench/views/inspect/inspector/path.mjs similarity index 96% rename from sites/shared/components/workbench/views/draft/inspector/path.mjs rename to sites/shared/components/workbench/views/inspect/inspector/path.mjs index 9dc8188bdfd..b551c0537b4 100644 --- a/sites/shared/components/workbench/views/draft/inspector/path.mjs +++ b/sites/shared/components/workbench/views/inspect/inspector/path.mjs @@ -21,11 +21,13 @@ const Op = ({ op, len, i }) => ( const Ops = ({ ops, path }) => ( - - - - - + + + + + + + {path.ops.map((op, i) => { diff --git a/sites/shared/components/workbench/views/draft/inspector/pattern.mjs b/sites/shared/components/workbench/views/inspect/inspector/pattern.mjs similarity index 100% rename from sites/shared/components/workbench/views/draft/inspector/pattern.mjs rename to sites/shared/components/workbench/views/inspect/inspector/pattern.mjs diff --git a/sites/shared/components/workbench/views/draft/inspector/point.mjs b/sites/shared/components/workbench/views/inspect/inspector/point.mjs similarity index 100% rename from sites/shared/components/workbench/views/draft/inspector/point.mjs rename to sites/shared/components/workbench/views/inspect/inspector/point.mjs diff --git a/sites/shared/components/workbench/views/draft/inspector/shared.mjs b/sites/shared/components/workbench/views/inspect/inspector/shared.mjs similarity index 100% rename from sites/shared/components/workbench/views/draft/inspector/shared.mjs rename to sites/shared/components/workbench/views/inspect/inspector/shared.mjs diff --git a/sites/shared/components/workbench/views/draft/inspector/stack.mjs b/sites/shared/components/workbench/views/inspect/inspector/stack.mjs similarity index 100% rename from sites/shared/components/workbench/views/draft/inspector/stack.mjs rename to sites/shared/components/workbench/views/inspect/inspector/stack.mjs diff --git a/sites/shared/components/workbench/views/inspect/menu.mjs b/sites/shared/components/workbench/views/inspect/menu.mjs new file mode 100644 index 00000000000..e0bcf8292e3 --- /dev/null +++ b/sites/shared/components/workbench/views/inspect/menu.mjs @@ -0,0 +1,48 @@ +import { + DesignOptions, + ns as designMenuNs, +} from 'shared/components/workbench/menus/design-options/index.mjs' +import { + CoreSettings, + ns as coreMenuNs, +} from 'shared/components/workbench/menus/core-settings/index.mjs' +import { UiSettings, ns as uiNs } from 'shared/components/workbench/menus/ui-settings/index.mjs' +import { Inspector, ns as inspectorNs } from './inspector/menu.mjs' + +export const ns = [...coreMenuNs, ...designMenuNs, ...uiNs, inspectorNs] + +export const DraftMenu = ({ + design, + patternConfig, + settings, + ui, + update, + language, + account, + DynamicDocs, + inspector = false, + renderProps, + view, + setView, +}) => { + const control = account.control + const menuProps = { + design, + patternConfig, + settings, + update, + language, + account, + DynamicDocs, + control, + } + + return ( + + ) +} diff --git a/sites/shared/components/workbench/views/logs/errors.mjs b/sites/shared/components/workbench/views/logs/errors.mjs new file mode 100644 index 00000000000..aa126ccf9ae --- /dev/null +++ b/sites/shared/components/workbench/views/logs/errors.mjs @@ -0,0 +1,131 @@ +import { useState } from 'react' +import Markdown from 'react-markdown' + +// If these vars are missing, we suspect they are not desctructured in the draft method +const knownVars = [ + 'sa', + 'Path', + 'Point', + 'Snippet', + 'paths', + 'points', + 'snippets', + 'absoluteOptions', + 'complete', + 'measurements', + 'options', + 'paperless', + 'sa', + 'scale', + 'context', + 'getId', + 'hide', + 'log', + 'macro', + 'setHidden', + 'store', + 'unhide', + 'units', + 'utils', + 'Bezier', + 'part', +] + +// Make it easy to suppress escapint in i18next +const interpolation = { escapeValue: false } + +// Extend this method if you want to handle other things than errors +export const analyzeDraftLogLine = ({ type, line, t }) => { + if (type === 'error' && line.stack) return + + return null +} + +// Helper component to toggle the stack trace +const ShowStackButton = ({ setDetails, details, t, txt = 'clickHereForStackTrace' }) => ( + +) + +// This explains how the error is likely do to restructuring +const NotDestructured = ({ missing, setDetails, details, t }) => ( +
    + {t('notDestructured', { missing })} +
    + + {t('seeLinkOrClick', { + link: `[${t('theDraftMethodDocs')}](https://freesewing.dev/reference/api/part/draft)`, + click: '', + interpolation, + })} + + +
    +) + +// This explains a var is undefined in the design +const DesignsVarUndefined = ({ missing, err, t }) => ( +
    + + {t('designVarUndefined', { + missing, + file: err.stack.split('\n')[0].split('/designs/').pop(), + interpolation, + })} + +
    +) + +// Some other var not being defined +const OtherVarUndefined = ({ details, setDetails, missing, err, t }) => ( +
    + {t('otherVarUndefined', { missing, interpolation })} +
    + + {t('checkForDetailsOrClick', { + file: err.stack[0], + click: '', + interpolation, + })} + + +
    +) + +// Component that displays an error log line +const DraftError = ({ err, t }) => { + const [details, setDetails] = useState(false) + const data = [] + const stack = err.stack.split('\n') + // Leave this here, it's intentional. We log the error to you can inpect it. + console.log(err) + + if (err.name === 'ReferenceError') { + if (err.message.includes('is not defined')) { + const missing = err.message.split(' ').shift() + if (stack[0].includes('/designs/')) { + data.push() + if (knownVars.includes(missing)) + data.push() + } else data.push() + } + } + + return ( + <> + {data} + {t('alsoLogged')} + {details ? ( + <> +
    {t('stackTrace')}
    +
      + {stack.map((line, i) => ( +
    1. {line}
    2. + ))} +
    + + ) : null} + + ) +} diff --git a/sites/shared/components/workbench/views/logs/index.mjs b/sites/shared/components/workbench/views/logs/index.mjs new file mode 100644 index 00000000000..281ebc447e1 --- /dev/null +++ b/sites/shared/components/workbench/views/logs/index.mjs @@ -0,0 +1,89 @@ +import { useTranslation } from 'next-i18next' +import { analyzeDraftLogLine } from './errors.mjs' +import Markdown from 'react-markdown' + +export const ns = ['logs'] + +const colors = { + error: 'error', + warning: 'warning', + info: 'secondary', + debug: 'base', +} + +const DraftLogEntry = ({ type, line, t }) => { + // Some lines are arrays, handle each entry individually + if (Array.isArray(line)) + return line.reverse().map((l, key) => ) + + let title = 'Unsure how to treat this error' + const data = [] + + // Simple error string + if (typeof line === 'string') title = line + if (typeof line === 'object') { + data.push(analyzeDraftLogLine({ type, line, t })) + title = line.toString() + } + + return ( +
    +
    +
    + {type} + | + + {title} + +
    +
    {data}
    +
    +
    + ) +} + +const DraftLogs = ({ type, t, lines = [] }) => + lines.length > 0 ? ( + <> +

    {t(type)}

    + {lines.reverse().map((line, key) => ( + + ))} + + ) : null + +const extractLogs = (pattern) => { + const logs = {} + for (const type of ['error', 'warning', 'info', 'debug']) { + logs[type] = [...pattern.store.logs[type]] + for (const store of pattern.setStores) logs[type].push(...store.logs[type]) + } + + return logs +} + +export const LogView = ({ pattern, settings }) => { + const { t } = useTranslation(ns) + + try { + pattern.draft(settings) + } catch (err) { + console.log(err) + } + const logs = extractLogs(pattern) + + return ( +
    +

    {t('logs')}

    + {Object.entries(logs).map(([type, lines], key) => ( + + ))} +
    + ) +} diff --git a/sites/shared/components/workbench/views/logs/logs.en.yaml b/sites/shared/components/workbench/views/logs/logs.en.yaml new file mode 100644 index 00000000000..bd679d458ed --- /dev/null +++ b/sites/shared/components/workbench/views/logs/logs.en.yaml @@ -0,0 +1,13 @@ +logs: Logs +error: Error messages +warning: Warning messages +info: Info messages +debug: Debug messages +seeLinkOrClick: See { link } or { click } +notDestructured: This most likely means that `{ missing }` was not desctructured as a draft method parameter. +designVarUndefined: We were unable to draft this pattern because `{ missing }` is undefined in `{ file }` +otherVarUndefined: The `{ missing }` variable is undefined. +checkForDetailsOrClick: Check `{ file }` for details or { click }. +stacktrace: Stack trace +alsoLogged: We have also logged this error to the console of your browser so you can inpect it further. +clickHereForStackTrace: click here to show the stack trace diff --git a/sites/shared/components/workbench/views/measies/index.mjs b/sites/shared/components/workbench/views/measies/index.mjs new file mode 100644 index 00000000000..91a0137ddbd --- /dev/null +++ b/sites/shared/components/workbench/views/measies/index.mjs @@ -0,0 +1,7 @@ +export const ns = ['wbmeasies'] + +export const MeasiesView = () => ( +
    +

    fixme: Implement measies view

    +
    +) diff --git a/sites/shared/components/workbench/views/test/index.mjs b/sites/shared/components/workbench/views/test/index.mjs index 01346065cc1..f2a167b6330 100644 --- a/sites/shared/components/workbench/views/test/index.mjs +++ b/sites/shared/components/workbench/views/test/index.mjs @@ -1,6 +1,7 @@ import { useTranslation } from 'next-i18next' import { PanZoomPattern } from 'shared/components/workbench/pan-zoom-pattern.mjs' import { TestMenu, ns as menuNs } from './menu.mjs' +import { DraftViewHeader } from '../draft/index.mjs' export const ns = menuNs @@ -24,26 +25,36 @@ export const TestView = ({ const title = t('testThing', { design, thing: t(settings.sample?.[settings.sample.type]) }) return ( -
    -
    -

    {title}

    - -
    -
    - +
    + +
    +
    +

    {title}

    + +
    +
    + +
    ) diff --git a/sites/shared/components/workbench/views/test/measurements.mjs b/sites/shared/components/workbench/views/test/measurements.mjs index a97ac4d988a..0ff925001b8 100644 --- a/sites/shared/components/workbench/views/test/measurements.mjs +++ b/sites/shared/components/workbench/views/test/measurements.mjs @@ -1,5 +1,5 @@ import { WorkbenchMenu } from 'shared/components/workbench/menus/shared/index.mjs' -import { MeasureIcon } from 'shared/components/icons.mjs' +import { MeasieIcon } from 'shared/components/icons.mjs' import { SampleItem } from './options.mjs' export const ns = ['measurements', 'test-view', 'workbench'] @@ -22,7 +22,7 @@ export const TestMeasurements = ({ control: account.control, DynamicDocs, getDocsPath, - Icon: MeasureIcon, + Icon: MeasieIcon, Item: SampleItem, name: 'measurements', language, diff --git a/sites/shared/components/workbench/workbench.en.yaml b/sites/shared/components/workbench/workbench.en.yaml index 04908b30170..52eb3766e64 100644 --- a/sites/shared/components/workbench/workbench.en.yaml +++ b/sites/shared/components/workbench/workbench.en.yaml @@ -21,3 +21,13 @@ showMovableButtons: Buttons partInfo: Pattern part info pathInfo: Path info part: Pattern part +draftPattern: Draft pattern +testPattern: Test pattern +savePattern: Save pattern +exportPattern: Export pattern +editSettings: Edit configuration +patternLogs: Pattern logs +patternInspector: Pattern Inspector +docs: Documentation +configurePattern: Configure pattern +measies: Measurements diff --git a/sites/shared/components/wrappers/toc.mjs b/sites/shared/components/wrappers/toc.mjs deleted file mode 100644 index c543a83d780..00000000000 --- a/sites/shared/components/wrappers/toc.mjs +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This is used to wrap a Table of Contents (toc) as returned - * from the mdxLoader method (see shared/mdx/loader.js) - * It is NOT for wrapping plain markdown/mdx - */ -import { useState, useEffect, Fragment } from 'react' - -// See: https://mdxjs.com/guides/mdx-on-demand/ -import { run } from '@mdx-js/mdx' -import * as runtime from 'react/jsx-runtime' - -export const TocWrapper = ({ toc }) => { - const [mdxModule, setMdxModule] = useState() - - useEffect(() => { - // This is a workaround to keep prettier and eslint - // from fighting over syntax - async function prettierEslintPeaceDeal() { - setMdxModule(await run(toc, runtime)) - } - prettierEslintPeaceDeal() - }, [toc]) - - // React component for MDX content - const MdxContent = mdxModule ? mdxModule.default : Fragment - // Don't render an empty toc - const children = typeof MdxContent === 'function' ? MdxContent().props.children : false - - return children ? ( -
    - {mdxModule && } -
    - ) : null -} diff --git a/sites/shared/config/next.mjs b/sites/shared/config/next.mjs index 1d1206365c8..94dee520f7f 100644 --- a/sites/shared/config/next.mjs +++ b/sites/shared/config/next.mjs @@ -6,7 +6,7 @@ import remarkMdxFrontmatter from 'remark-mdx-frontmatter' import remarkGfm from 'remark-gfm' import remarkCopyLinkedFiles from 'remark-copy-linked-files' //import { remarkIntroPlugin } from './remark-intro-plugin.mjs' -//import mdxPluginToc from './mdx-plugin-toc.mjs' +import mdxPluginToc from '../mdx/mdx-plugin-toc.mjs' import smartypants from 'remark-smartypants' // Rehype plugins we want to use import rehypeHighlight from 'rehype-highlight' @@ -46,6 +46,7 @@ const getMdxConfig = ({ site, jargon }) => ({ }, ], //[remarkIntroPlugin, { intro }], + mdxPluginToc, ], rehypePlugins: [ [rehypeJargon, { jargon, transform: jargonTransform }], @@ -187,7 +188,7 @@ const config = ({ site, jargon = {} }) => { ) } // Load these from source, rather than compiled package - for (const pkg of ['core', 'i18n', 'models', 'snapseries']) { + for (const pkg of ['core', 'i18n', 'models', 'snapseries', 'react-components']) { config.resolve.alias[`@freesewing/${pkg}`] = path.resolve( `../../packages/${pkg}/src/index.mjs` ) diff --git a/sites/shared/config/tailwind-force.html b/sites/shared/config/tailwind-force.html index 5e268cf6a8b..1cc439af693 100644 --- a/sites/shared/config/tailwind-force.html +++ b/sites/shared/config/tailwind-force.html @@ -103,3 +103,5 @@
    TypeToCp1Cp2Length
    TypeToCp1Cp2Length