tournament-brackets-ui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.storybook/main.js +23 -0
- package/.storybook/preview.js +13 -0
- package/README.md +70 -0
- package/README.old.md +1 -0
- package/commands.txt +41 -0
- package/dist/esm/CollapsedLeft-B5z4pKZL.js +1042 -0
- package/dist/esm/CollapsedLeft-B5z4pKZL.js.map +1 -0
- package/dist/esm/CollapsedLeft-B6FNo8Dp.js +727 -0
- package/dist/esm/CollapsedLeft-B6FNo8Dp.js.map +1 -0
- package/dist/esm/CollapsedLeft-BB1dXff3.js +1215 -0
- package/dist/esm/CollapsedLeft-BB1dXff3.js.map +1 -0
- package/dist/esm/CollapsedLeft-BMZwFt9m.js +879 -0
- package/dist/esm/CollapsedLeft-BMZwFt9m.js.map +1 -0
- package/dist/esm/CollapsedLeft-BYfnV5-9.js +1228 -0
- package/dist/esm/CollapsedLeft-BYfnV5-9.js.map +1 -0
- package/dist/esm/CollapsedLeft-C3BOW8Vh.js +977 -0
- package/dist/esm/CollapsedLeft-C3BOW8Vh.js.map +1 -0
- package/dist/esm/CollapsedLeft-CBPTeMn9.js +922 -0
- package/dist/esm/CollapsedLeft-CBPTeMn9.js.map +1 -0
- package/dist/esm/CollapsedLeft-CNXxlyEt.js +887 -0
- package/dist/esm/CollapsedLeft-CNXxlyEt.js.map +1 -0
- package/dist/esm/CollapsedLeft-DN7qy7MO.js +961 -0
- package/dist/esm/CollapsedLeft-DN7qy7MO.js.map +1 -0
- package/dist/esm/CollapsedLeft-DO5DyVjM.js +870 -0
- package/dist/esm/CollapsedLeft-DO5DyVjM.js.map +1 -0
- package/dist/esm/CollapsedLeft-DP4ftgM6.js +796 -0
- package/dist/esm/CollapsedLeft-DP4ftgM6.js.map +1 -0
- package/dist/esm/CollapsedLeft-DQO8oQL_.js +800 -0
- package/dist/esm/CollapsedLeft-DQO8oQL_.js.map +1 -0
- package/dist/esm/CollapsedLeft-DXyWTNAC.js +1047 -0
- package/dist/esm/CollapsedLeft-DXyWTNAC.js.map +1 -0
- package/dist/esm/CollapsedLeft-DZGhG_-q.js +728 -0
- package/dist/esm/CollapsedLeft-DZGhG_-q.js.map +1 -0
- package/dist/esm/CollapsedLeft-bAhAurv-.js +908 -0
- package/dist/esm/CollapsedLeft-bAhAurv-.js.map +1 -0
- package/dist/esm/CollapsedLeft-hF26CY1G.js +1003 -0
- package/dist/esm/CollapsedLeft-hF26CY1G.js.map +1 -0
- package/dist/esm/CollapsedRight-1CTx2ozt.js +860 -0
- package/dist/esm/CollapsedRight-1CTx2ozt.js.map +1 -0
- package/dist/esm/CollapsedRight-2mcguPWm.js +715 -0
- package/dist/esm/CollapsedRight-2mcguPWm.js.map +1 -0
- package/dist/esm/CollapsedRight-BCLyZXf2.js +863 -0
- package/dist/esm/CollapsedRight-BCLyZXf2.js.map +1 -0
- package/dist/esm/CollapsedRight-C13Vq_e3.js +1293 -0
- package/dist/esm/CollapsedRight-C13Vq_e3.js.map +1 -0
- package/dist/esm/CollapsedRight-C3-pe8RB.js +799 -0
- package/dist/esm/CollapsedRight-C3-pe8RB.js.map +1 -0
- package/dist/esm/CollapsedRight-CPLDkLx5.js +678 -0
- package/dist/esm/CollapsedRight-CPLDkLx5.js.map +1 -0
- package/dist/esm/CollapsedRight-CdwTany1.js +1388 -0
- package/dist/esm/CollapsedRight-CdwTany1.js.map +1 -0
- package/dist/esm/CollapsedRight-DGOaJHqo.js +1123 -0
- package/dist/esm/CollapsedRight-DGOaJHqo.js.map +1 -0
- package/dist/esm/CollapsedRight-DH1HTBg_.js +1034 -0
- package/dist/esm/CollapsedRight-DH1HTBg_.js.map +1 -0
- package/dist/esm/CollapsedRight-D_0End0L.js +1013 -0
- package/dist/esm/CollapsedRight-D_0End0L.js.map +1 -0
- package/dist/esm/CollapsedRight-Da0UMNrq.js +1547 -0
- package/dist/esm/CollapsedRight-Da0UMNrq.js.map +1 -0
- package/dist/esm/CollapsedRight-DjoLogzE.js +916 -0
- package/dist/esm/CollapsedRight-DjoLogzE.js.map +1 -0
- package/dist/esm/CollapsedRight-DoOykWbk.js +1219 -0
- package/dist/esm/CollapsedRight-DoOykWbk.js.map +1 -0
- package/dist/esm/CollapsedRight-RCxUtg7-.js +1140 -0
- package/dist/esm/CollapsedRight-RCxUtg7-.js.map +1 -0
- package/dist/esm/CollapsedRight-U7cf6t10.js +946 -0
- package/dist/esm/CollapsedRight-U7cf6t10.js.map +1 -0
- package/dist/esm/CollapsedRight-WXy5eWFq.js +1177 -0
- package/dist/esm/CollapsedRight-WXy5eWFq.js.map +1 -0
- package/dist/esm/Expanded-BAxI7aFR.js +1540 -0
- package/dist/esm/Expanded-BAxI7aFR.js.map +1 -0
- package/dist/esm/Expanded-BCEVV7zK.js +1572 -0
- package/dist/esm/Expanded-BCEVV7zK.js.map +1 -0
- package/dist/esm/Expanded-BJtgsFxf.js +2474 -0
- package/dist/esm/Expanded-BJtgsFxf.js.map +1 -0
- package/dist/esm/Expanded-C8Bxoixp.js +1374 -0
- package/dist/esm/Expanded-C8Bxoixp.js.map +1 -0
- package/dist/esm/Expanded-CBu5Dj05.js +1838 -0
- package/dist/esm/Expanded-CBu5Dj05.js.map +1 -0
- package/dist/esm/Expanded-CDYmOWYL.js +1589 -0
- package/dist/esm/Expanded-CDYmOWYL.js.map +1 -0
- package/dist/esm/Expanded-CUg2EMDY.js +2242 -0
- package/dist/esm/Expanded-CUg2EMDY.js.map +1 -0
- package/dist/esm/Expanded-CZX_MCio.js +1406 -0
- package/dist/esm/Expanded-CZX_MCio.js.map +1 -0
- package/dist/esm/Expanded-CmtBl1ZS.js +1626 -0
- package/dist/esm/Expanded-CmtBl1ZS.js.map +1 -0
- package/dist/esm/Expanded-Co8V5jgl.js +2024 -0
- package/dist/esm/Expanded-Co8V5jgl.js.map +1 -0
- package/dist/esm/Expanded-D2_h7YPI.js +1032 -0
- package/dist/esm/Expanded-D2_h7YPI.js.map +1 -0
- package/dist/esm/Expanded-DFP1nUBY.js +1381 -0
- package/dist/esm/Expanded-DFP1nUBY.js.map +1 -0
- package/dist/esm/Expanded-DPFndGqw.js +1118 -0
- package/dist/esm/Expanded-DPFndGqw.js.map +1 -0
- package/dist/esm/Expanded-Jrq0Bh65.js +1739 -0
- package/dist/esm/Expanded-Jrq0Bh65.js.map +1 -0
- package/dist/esm/Expanded-RJigoSw3.js +1552 -0
- package/dist/esm/Expanded-RJigoSw3.js.map +1 -0
- package/dist/esm/Expanded-vqC8qzDP.js +1388 -0
- package/dist/esm/Expanded-vqC8qzDP.js.map +1 -0
- package/dist/esm/ExpandedBase-BUpZvswi.js +88 -0
- package/dist/esm/ExpandedBase-BUpZvswi.js.map +1 -0
- package/dist/esm/NameRow-B-GWjlou.js +50 -0
- package/dist/esm/NameRow-B-GWjlou.js.map +1 -0
- package/dist/esm/Team-CLk1m4Vj.js +25 -0
- package/dist/esm/Team-CLk1m4Vj.js.map +1 -0
- package/dist/esm/TeamsBase-moB9MaNw.js +44 -0
- package/dist/esm/TeamsBase-moB9MaNw.js.map +1 -0
- package/dist/esm/index.css +1 -0
- package/dist/esm/index.js +112 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/index.cjs +57871 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.css +1 -0
- package/package.json +87 -0
- package/public/favicon.ico +0 -0
- package/public/index.html +43 -0
- package/public/logo192.png +0 -0
- package/public/logo512.png +0 -0
- package/public/manifest.json +25 -0
- package/public/robots.txt +3 -0
- package/rollup.config.mjs +41 -0
- package/src/allocatePlayers.js +235 -0
- package/src/components/Facades/CollapsedLeft.jsx +26 -0
- package/src/components/Facades/CollapsedRight.jsx +27 -0
- package/src/components/Facades/Expanded.jsx +27 -0
- package/src/components/Individuals/08-Player/CollapsedLeft.jsx +340 -0
- package/src/components/Individuals/08-Player/CollapsedRight.jsx +276 -0
- package/src/components/Individuals/08-Player/Expanded.jsx +407 -0
- package/src/components/Individuals/09-Player/CollapsedLeft.jsx +386 -0
- package/src/components/Individuals/09-Player/CollapsedRight.jsx +343 -0
- package/src/components/Individuals/09-Player/Expanded.jsx +614 -0
- package/src/components/Individuals/10-Player/CollapsedLeft.jsx +315 -0
- package/src/components/Individuals/10-Player/CollapsedRight.jsx +367 -0
- package/src/components/Individuals/10-Player/Expanded.jsx +611 -0
- package/src/components/Individuals/11-Player/CollapsedLeft.jsx +352 -0
- package/src/components/Individuals/11-Player/CollapsedRight.jsx +412 -0
- package/src/components/Individuals/11-Player/Expanded.jsx +616 -0
- package/src/components/Individuals/12-Player/CollapsedLeft.jsx +396 -0
- package/src/components/Individuals/12-Player/CollapsedRight.jsx +451 -0
- package/src/components/Individuals/12-Player/Expanded.jsx +622 -0
- package/src/components/Individuals/13-Player/CollapsedLeft.jsx +426 -0
- package/src/components/Individuals/13-Player/CollapsedRight.jsx +490 -0
- package/src/components/Individuals/13-Player/Expanded.jsx +701 -0
- package/src/components/Individuals/14-Player/CollapsedLeft.jsx +458 -0
- package/src/components/Individuals/14-Player/CollapsedRight.jsx +509 -0
- package/src/components/Individuals/14-Player/Expanded.jsx +801 -0
- package/src/components/Individuals/16-Player/CollapsedLeft.jsx +514 -0
- package/src/components/Individuals/16-Player/CollapsedRight.jsx +608 -0
- package/src/components/Individuals/16-Player/Expanded.jsx +963 -0
- package/src/components/Individuals/stylesheet.module.css +360 -0
- package/src/components/NameRow.jsx +21 -0
- package/src/components/NameRowFillable.jsx +30 -0
- package/src/components/ScoreRow.jsx +29 -0
- package/src/components/ScoreRowFillable.jsx +64 -0
- package/src/components/Team.jsx +20 -0
- package/src/components/TeamFillable.jsx +25 -0
- package/src/components/Teams/08-Team/CollapsedLeft.jsx +304 -0
- package/src/components/Teams/08-Team/CollapsedRight.jsx +232 -0
- package/src/components/Teams/08-Team/Expanded.jsx +356 -0
- package/src/components/Teams/09-Team/CollapsedLeft.jsx +335 -0
- package/src/components/Teams/09-Team/CollapsedRight.jsx +282 -0
- package/src/components/Teams/09-Team/Expanded.jsx +486 -0
- package/src/components/Teams/10-Team/CollapsedLeft.jsx +269 -0
- package/src/components/Teams/10-Team/CollapsedRight.jsx +304 -0
- package/src/components/Teams/10-Team/Expanded.jsx +483 -0
- package/src/components/Teams/11-Team/CollapsedLeft.jsx +292 -0
- package/src/components/Teams/11-Team/CollapsedRight.jsx +335 -0
- package/src/components/Teams/11-Team/Expanded.jsx +491 -0
- package/src/components/Teams/12-Team/CollapsedLeft.jsx +328 -0
- package/src/components/Teams/12-Team/CollapsedRight.jsx +363 -0
- package/src/components/Teams/12-Team/Expanded.jsx +497 -0
- package/src/components/Teams/13-Team/CollapsedLeft.jsx +355 -0
- package/src/components/Teams/13-Team/CollapsedRight.jsx +399 -0
- package/src/components/Teams/13-Team/Expanded.jsx +569 -0
- package/src/components/Teams/14-Team/CollapsedLeft.jsx +382 -0
- package/src/components/Teams/14-Team/CollapsedRight.jsx +420 -0
- package/src/components/Teams/14-Team/Expanded.jsx +661 -0
- package/src/components/Teams/16-Team/CollapsedLeft.jsx +437 -0
- package/src/components/Teams/16-Team/CollapsedRight.jsx +496 -0
- package/src/components/Teams/16-Team/Expanded.jsx +795 -0
- package/src/components/Teams/stylesheet.module.css +300 -0
- package/src/components/_internal/ExpandedBase.jsx +60 -0
- package/src/components/_internal/TeamsBase.jsx +45 -0
- package/src/components/_internal/VariantFacade.jsx +26 -0
- package/src/index.js +3 -0
- package/src/scripts/convert-html-to-jsx.js +46 -0
- package/src/scripts/inject-players.js +45 -0
- package/src/scripts/scoreUtils.js +25 -0
- package/src/scripts/update-classnames.js +26 -0
- package/src/seeding.js +488 -0
- package/src/stories/Button.jsx +39 -0
- package/src/stories/Button.stories.js +49 -0
- package/src/stories/Configure.mdx +364 -0
- package/src/stories/Header.jsx +56 -0
- package/src/stories/Header.stories.js +29 -0
- package/src/stories/Individuals/08-Player/CollapsedLeft.stories.jsx +30 -0
- package/src/stories/Individuals/08-Player/CollapsedRight.stories.jsx +30 -0
- package/src/stories/Individuals/08-Player/Expanded.stories.jsx +30 -0
- package/src/stories/Individuals/09-Player/CollapsedLeft.stories.jsx +30 -0
- package/src/stories/Individuals/09-Player/CollapsedRight.stories.jsx +30 -0
- package/src/stories/Individuals/09-Player/Expanded.stories.jsx +30 -0
- package/src/stories/Individuals/10-Player/CollapsedLeft.stories.jsx +30 -0
- package/src/stories/Individuals/10-Player/CollapsedRight.stories.jsx +30 -0
- package/src/stories/Individuals/10-Player/Expanded.stories.jsx +30 -0
- package/src/stories/Individuals/11-Player/CollapsedLeft.stories.jsx +30 -0
- package/src/stories/Individuals/11-Player/CollapsedRight.stories.jsx +30 -0
- package/src/stories/Individuals/11-Player/Expanded.stories.jsx +30 -0
- package/src/stories/Individuals/12-Player/CollapsedLeft.stories.jsx +30 -0
- package/src/stories/Individuals/12-Player/CollapsedRight.stories.jsx +30 -0
- package/src/stories/Individuals/12-Player/Expanded.stories.jsx +30 -0
- package/src/stories/Individuals/13-Player/CollapsedLeft.stories.jsx +30 -0
- package/src/stories/Individuals/13-Player/CollapsedRight.stories.jsx +30 -0
- package/src/stories/Individuals/13-Player/Expanded.stories.jsx +30 -0
- package/src/stories/Individuals/14-Player/CollapsedLeft.stories.jsx +30 -0
- package/src/stories/Individuals/14-Player/CollapsedRight.stories.jsx +30 -0
- package/src/stories/Individuals/14-Player/Expanded.stories.jsx +30 -0
- package/src/stories/Individuals/16-Player/CollapsedLeft.stories.jsx +30 -0
- package/src/stories/Individuals/16-Player/CollapsedRight.stories.jsx +30 -0
- package/src/stories/Individuals/16-Player/Expanded.stories.jsx +30 -0
- package/src/stories/Page.jsx +69 -0
- package/src/stories/Page.stories.js +28 -0
- package/src/stories/Teams/08-Team/CollapsedLeft.stories.jsx +33 -0
- package/src/stories/Teams/08-Team/CollapsedRight.stories.jsx +33 -0
- package/src/stories/Teams/08-Team/Expanded.stories.jsx +33 -0
- package/src/stories/Teams/09-Team/CollapsedLeft.stories.jsx +33 -0
- package/src/stories/Teams/09-Team/CollapsedRight.stories.jsx +33 -0
- package/src/stories/Teams/09-Team/Expanded.stories.jsx +33 -0
- package/src/stories/Teams/10-Team/CollapsedLeft.stories.jsx +33 -0
- package/src/stories/Teams/10-Team/CollapsedRight.stories.jsx +33 -0
- package/src/stories/Teams/10-Team/Expanded.stories.jsx +33 -0
- package/src/stories/Teams/11-Team/CollapsedLeft.stories.jsx +33 -0
- package/src/stories/Teams/11-Team/CollapsedRight.stories.jsx +33 -0
- package/src/stories/Teams/11-Team/Expanded.stories.jsx +33 -0
- package/src/stories/Teams/12-Team/CollapsedLeft.stories.jsx +33 -0
- package/src/stories/Teams/12-Team/CollapsedRight.stories.jsx +33 -0
- package/src/stories/Teams/12-Team/Expanded.stories.jsx +33 -0
- package/src/stories/Teams/13-Team/CollapsedLeft.stories.jsx +33 -0
- package/src/stories/Teams/13-Team/CollapsedRight.stories.jsx +33 -0
- package/src/stories/Teams/13-Team/Expanded.stories.jsx +33 -0
- package/src/stories/Teams/14-Team/CollapsedLeft.stories.jsx +33 -0
- package/src/stories/Teams/14-Team/CollapsedRight.stories.jsx +33 -0
- package/src/stories/Teams/14-Team/Expanded.stories.jsx +33 -0
- package/src/stories/Teams/16-Team/CollapsedLeft.stories.jsx +33 -0
- package/src/stories/Teams/16-Team/CollapsedRight.stories.jsx +33 -0
- package/src/stories/Teams/16-Team/Expanded.stories.jsx +33 -0
- package/src/stories/assets/accessibility.png +0 -0
- package/src/stories/assets/accessibility.svg +1 -0
- package/src/stories/assets/addon-library.png +0 -0
- package/src/stories/assets/assets.png +0 -0
- package/src/stories/assets/avif-test-image.avif +0 -0
- package/src/stories/assets/context.png +0 -0
- package/src/stories/assets/discord.svg +1 -0
- package/src/stories/assets/docs.png +0 -0
- package/src/stories/assets/figma-plugin.png +0 -0
- package/src/stories/assets/github.svg +1 -0
- package/src/stories/assets/share.png +0 -0
- package/src/stories/assets/styling.png +0 -0
- package/src/stories/assets/testing.png +0 -0
- package/src/stories/assets/theming.png +0 -0
- package/src/stories/assets/tutorials.svg +1 -0
- package/src/stories/assets/youtube.svg +1 -0
- package/src/stories/button.css +30 -0
- package/src/stories/data/players.js +116 -0
- package/src/stories/data/teams.js +32 -0
- package/src/stories/header.css +32 -0
- package/src/stories/page.css +68 -0
package/dist/index.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.stylesheet-module_style0__4vv-5{mso-number-format:General;mso-rotate:0;mso-background-source:auto;mso-pattern:auto;mso-generic-font-family:auto;mso-font-charset:0;mso-protection:locked visible;mso-style-name:Normal;mso-style-id:0;border:none;color:#000;font-family:Arial;font-size:10pt;font-style:normal;font-weight:400;text-align:general;text-decoration:none;vertical-align:bottom;white-space:nowrap}.stylesheet-module_groupTitle__cnZQh{font-size:24pt;text-align:left}.stylesheet-module_groupTitle__cnZQh,.stylesheet-module_teamID__8R5Q4{mso-style-parent:style0;mso-font-charset:0;color:#000;font-family:Arial,sans-serif;font-weight:700;vertical-align:middle}.stylesheet-module_teamID__8R5Q4{border:.5pt solid #000;border-bottom:none;font-size:11pt;text-align:center}.stylesheet-module_teamIDExpanded__daaxG{border:.5pt solid #000;border-bottom:none;font-size:14pt;font-weight:700}.stylesheet-module_borderTop__GjThE,.stylesheet-module_teamIDExpanded__daaxG{mso-style-parent:style0;mso-font-charset:0;color:#000;font-family:Arial,sans-serif;text-align:center;vertical-align:middle}.stylesheet-module_borderTop__GjThE{border:none;border-top:.5pt solid #000;font-size:12pt}.stylesheet-module_borderRight__2n-71{font-size:12pt}.stylesheet-module_borderRightExpanded__z81mQ,.stylesheet-module_borderRight__2n-71{mso-style-parent:style0;mso-font-charset:0;border:none;border-right:.5pt solid #000;color:#000;font-family:Arial,sans-serif;text-align:center;vertical-align:middle}.stylesheet-module_borderBottom__cX-Er{border:none;border-bottom:.5pt solid #000}.stylesheet-module_borderBottom__cX-Er,.stylesheet-module_borderLeft__D3rWO{mso-style-parent:style0;mso-font-charset:0;color:#000;font-family:Arial,sans-serif;font-size:12pt;text-align:center;vertical-align:middle}.stylesheet-module_borderLeft__D3rWO{border:none;border-left:.5pt solid #000}.stylesheet-module_borderTopRight__5vUDq{border:.5pt solid #000;border-bottom:none;border-left:none}.stylesheet-module_borderRightLeft__eCQ8v,.stylesheet-module_borderTopRight__5vUDq{mso-style-parent:style0;mso-font-charset:0;color:#000;font-family:Arial,sans-serif;font-size:12pt;text-align:center;vertical-align:middle}.stylesheet-module_borderRightLeft__eCQ8v{border:.5pt solid #000;border-bottom:none;border-top:none}.stylesheet-module_borderBottomLeft__E5-V7{border:.5pt solid #000;border-right:none;border-top:none}.stylesheet-module_borderBottomLeft__E5-V7,.stylesheet-module_borderRightBottom__7utRO{mso-style-parent:style0;mso-font-charset:0;color:#000;font-family:Arial,sans-serif;font-size:12pt;text-align:center;vertical-align:middle}.stylesheet-module_borderRightBottom__7utRO{border:.5pt solid #000;border-left:none;border-top:none}.stylesheet-module_borderTopLeft__-plWL{border:.5pt solid #000;border-bottom:none;border-right:none}.stylesheet-module_borderRBL__rGbvM,.stylesheet-module_borderTopLeft__-plWL{mso-style-parent:style0;mso-font-charset:0;color:#000;font-family:Arial,sans-serif;font-size:12pt;text-align:center;vertical-align:middle}.stylesheet-module_borderRBL__rGbvM{border:.5pt solid #000;border-top:none}.stylesheet-module_borderTRL__NPCH-{border:.5pt solid #000;border-bottom:none;font-size:12pt}.stylesheet-module_borderTRL__NPCH-,.stylesheet-module_xl00__Sa7lD,.stylesheet-module_xl01__yLun6{mso-style-parent:style0;mso-font-charset:0;color:#000;font-family:Arial,sans-serif;text-align:center;vertical-align:middle}.stylesheet-module_xl01__yLun6{font-size:12pt}.stylesheet-module_inlineInput__1HFnX{border:none;box-sizing:border-box;font:inherit;height:100%;line-height:1;margin:0;overflow:hidden;padding:0;resize:none;text-align:center;width:100%}.stylesheet-module_inlineInput__1HFnX::placeholder{color:#aaa;opacity:1}.stylesheet-module_winnerNameInput__-vOjU{border:none;box-sizing:border-box;font:inherit;height:100%;line-height:1;margin:0;overflow:hidden;padding:0;resize:none;width:100%}.stylesheet-module_winnerNameInput__-vOjU::placeholder{color:#aaa;opacity:1}tr{mso-height-source:auto}col{mso-width-source:auto}br{mso-data-placement:same-cell}.stylesheet-module_style0__xVYkQ{mso-number-format:General;mso-rotate:0;mso-background-source:auto;mso-pattern:auto;mso-generic-font-family:auto;mso-font-charset:0;mso-protection:locked visible;mso-style-name:Normal;mso-style-id:0}.stylesheet-module_style0__xVYkQ,td{border:none;color:#000;font-family:Arial;font-size:10pt;font-style:normal;font-weight:400;text-align:general;text-decoration:none;vertical-align:bottom;white-space:nowrap}td{mso-style-parent:style0;mso-ignore:padding;mso-generic-font-family:auto;mso-font-charset:0;mso-number-format:General;mso-background-source:auto;mso-pattern:auto;mso-protection:locked visible;mso-rotate:0;padding-left:1px;padding-right:1px;padding-top:1px}.stylesheet-module_groupTitle__vRme1{mso-style-parent:style0;mso-font-charset:0;color:#000;font-family:Arial,sans-serif;font-size:24pt;font-weight:700;text-align:left;vertical-align:middle}.stylesheet-module_playerName__KN3ss{mso-style-parent:style0;mso-font-charset:0;font-family:Arial,sans-serif;font-size:11pt}.stylesheet-module_playerNameExpanded__eAMxo{mso-style-parent:style0;mso-font-charset:0;border:none;border-top:.5pt solid #000;font-family:Arial,sans-serif;font-size:12pt}.stylesheet-module_playerID__uAQs-{font-size:11pt}.stylesheet-module_playerIDExpanded__CvkVS,.stylesheet-module_playerID__uAQs-{mso-style-parent:style0;mso-font-charset:0;border:.5pt solid #000;border-bottom:none;color:#000;font-family:Arial,sans-serif;font-weight:700;text-align:center;vertical-align:middle}.stylesheet-module_playerIDExpanded__CvkVS{font-size:14pt}.stylesheet-module_borderTop__iS18j{border:none;border-top:.5pt solid #000}.stylesheet-module_borderRight__zdAOR,.stylesheet-module_borderTop__iS18j{mso-style-parent:style0;mso-font-charset:0;color:#000;font-family:Arial,sans-serif;font-size:12pt;text-align:center;vertical-align:middle}.stylesheet-module_borderRight__zdAOR{border:none;border-right:.5pt solid #000}.stylesheet-module_borderRightExpanded__dkqZu{border:none;border-right:.5pt solid #000}.stylesheet-module_borderBottom__JV2p7,.stylesheet-module_borderRightExpanded__dkqZu{mso-style-parent:style0;mso-font-charset:0;color:#000;font-family:Arial,sans-serif;text-align:center;vertical-align:middle}.stylesheet-module_borderBottom__JV2p7{border:none;border-bottom:.5pt solid #000;font-size:12pt}.stylesheet-module_borderLeft__VDozX{border:none;border-left:.5pt solid #000}.stylesheet-module_borderLeft__VDozX,.stylesheet-module_borderTopRight__9CpUi{mso-style-parent:style0;mso-font-charset:0;color:#000;font-family:Arial,sans-serif;font-size:12pt;text-align:center;vertical-align:middle}.stylesheet-module_borderTopRight__9CpUi{border:.5pt solid #000;border-bottom:none;border-left:none}.stylesheet-module_borderRightLeft__0L1PQ{border:.5pt solid #000;border-bottom:none;border-top:none;color:windowtext}.stylesheet-module_borderBottomLeft__Fdnez,.stylesheet-module_borderRightLeft__0L1PQ{mso-style-parent:style0;mso-font-charset:0;font-family:Arial,sans-serif;font-size:12pt;text-align:center;vertical-align:middle}.stylesheet-module_borderBottomLeft__Fdnez{border:.5pt solid #000;border-right:none;border-top:none;color:#000}.stylesheet-module_borderRightBottom__iuukU{border:.5pt solid #000;border-left:none;border-top:none}.stylesheet-module_borderRightBottom__iuukU,.stylesheet-module_borderTopLeft__tgc2M{mso-style-parent:style0;mso-font-charset:0;color:#000;font-family:Arial,sans-serif;font-size:12pt;text-align:center;vertical-align:middle}.stylesheet-module_borderTopLeft__tgc2M{border:.5pt solid #000;border-bottom:none;border-right:none}.stylesheet-module_borderRBL__FMBKa{border:.5pt solid #000;border-top:none}.stylesheet-module_borderRBL__FMBKa,.stylesheet-module_borderTRL__G0o55{mso-style-parent:style0;mso-font-charset:0;color:#000;font-family:Arial,sans-serif;font-size:12pt;text-align:center;vertical-align:middle}.stylesheet-module_borderTRL__G0o55{border:.5pt solid #000;border-bottom:none}.stylesheet-module_xl00__G5zsh,.stylesheet-module_xl01__GKWBv{mso-style-parent:style0;mso-font-charset:0;color:#000;font-family:Arial,sans-serif;text-align:center;vertical-align:middle}.stylesheet-module_xl01__GKWBv{font-size:12pt}.stylesheet-module_inlineInput__XBbXk{border:none;box-sizing:border-box;font:inherit;height:100%;line-height:1;margin:0;overflow:hidden;padding:0;resize:none;text-align:center;width:100%}.stylesheet-module_inlineInput__XBbXk::placeholder{color:#aaa;opacity:1}.stylesheet-module_winnerNameInput__glf1h{border:none;box-sizing:border-box;font:inherit;height:100%;line-height:1;margin:0;overflow:hidden;padding:0;resize:none;width:100%}.stylesheet-module_winnerNameInput__glf1h::placeholder{color:#aaa;opacity:1}.stylesheet-module_tooltipWrapper__RBrHE{display:inline-block;position:relative}.stylesheet-module_tooltip__U9AoH{background:#f5f5f5;border:1px solid #0000001a;border-radius:6px;bottom:100%;box-shadow:0 2px 6px #00000014;color:#333;font-size:12px;left:50%;line-height:1.2;opacity:0;padding:6px 10px;pointer-events:none;position:absolute;transform:translateX(-50%) translateY(-15px);transition:opacity .2s ease,visibility .2s ease;visibility:hidden;white-space:nowrap;z-index:10}.stylesheet-module_tooltip__U9AoH:after{border:8px solid #0000;border-top-color:#d3d3d3;content:"";left:50%;position:absolute;top:100%;transform:translateX(-50%)}.stylesheet-module_tooltipWrapper__RBrHE:focus-within .stylesheet-module_tooltip__U9AoH{opacity:1;visibility:visible}
|
package/package.json
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "tournament-brackets-ui",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "A React component library for rendering tournament brackets.",
|
|
5
|
+
"author": "Bella Huang",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"dependencies": {
|
|
8
|
+
"@testing-library/dom": "^10.4.0",
|
|
9
|
+
"@testing-library/jest-dom": "^6.6.3",
|
|
10
|
+
"@testing-library/react": "^16.3.0",
|
|
11
|
+
"@testing-library/user-event": "^13.5.0",
|
|
12
|
+
"form-data": "^4.0.4",
|
|
13
|
+
"react": "^18 || ^19",
|
|
14
|
+
"react-dom": "^18 || ^19",
|
|
15
|
+
"react-scripts": "5.0.1",
|
|
16
|
+
"web-vitals": "^2.1.4"
|
|
17
|
+
},
|
|
18
|
+
"scripts": {
|
|
19
|
+
"start": "react-scripts start",
|
|
20
|
+
"build": "react-scripts build",
|
|
21
|
+
"test": "react-scripts test",
|
|
22
|
+
"eject": "react-scripts eject",
|
|
23
|
+
"storybook": "storybook dev -p 6006",
|
|
24
|
+
"build-storybook": "storybook build",
|
|
25
|
+
"build-lib": "rollup -c"
|
|
26
|
+
},
|
|
27
|
+
"eslintConfig": {
|
|
28
|
+
"extends": [
|
|
29
|
+
"react-app",
|
|
30
|
+
"react-app/jest",
|
|
31
|
+
"plugin:storybook/recommended"
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
"browserslist": {
|
|
35
|
+
"production": [
|
|
36
|
+
">0.2%",
|
|
37
|
+
"not dead",
|
|
38
|
+
"not op_mini all"
|
|
39
|
+
],
|
|
40
|
+
"development": [
|
|
41
|
+
"last 1 chrome version",
|
|
42
|
+
"last 1 firefox version",
|
|
43
|
+
"last 1 safari version"
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@babel/core": "^7.28.4",
|
|
48
|
+
"@babel/preset-react": "^7.27.1",
|
|
49
|
+
"@rollup/plugin-babel": "^6.0.4",
|
|
50
|
+
"@rollup/plugin-commonjs": "^28.0.6",
|
|
51
|
+
"@rollup/plugin-node-resolve": "^16.0.1",
|
|
52
|
+
"@storybook/addon-essentials": "^8.6.12",
|
|
53
|
+
"@storybook/addon-interactions": "^8.6.12",
|
|
54
|
+
"@storybook/addon-onboarding": "^8.6.12",
|
|
55
|
+
"@storybook/blocks": "^8.6.12",
|
|
56
|
+
"@storybook/preset-create-react-app": "^8.6.12",
|
|
57
|
+
"@storybook/react": "^8.6.12",
|
|
58
|
+
"@storybook/react-webpack5": "^8.6.12",
|
|
59
|
+
"@storybook/test": "^8.6.12",
|
|
60
|
+
"ajv": "^8.16.0",
|
|
61
|
+
"ajv-keywords": "^5.1.0",
|
|
62
|
+
"eslint-plugin-storybook": "^0.12.0",
|
|
63
|
+
"htmltojsx": "^0.3.0",
|
|
64
|
+
"prop-types": "^15.8.1",
|
|
65
|
+
"rollup": "^4.50.0",
|
|
66
|
+
"rollup-plugin-babel": "^4.4.0",
|
|
67
|
+
"rollup-plugin-peer-deps-external": "^2.2.4",
|
|
68
|
+
"rollup-plugin-postcss": "^4.0.2",
|
|
69
|
+
"schema-utils": "^4.2.0",
|
|
70
|
+
"storybook": "^8.6.12",
|
|
71
|
+
"webpack": "^5.99.6"
|
|
72
|
+
},
|
|
73
|
+
"type": "module",
|
|
74
|
+
"main": "dist/index.cjs",
|
|
75
|
+
"module": "dist/esm/index.js",
|
|
76
|
+
"exports": {
|
|
77
|
+
".": {
|
|
78
|
+
"import": "./dist/esm/index.js",
|
|
79
|
+
"require": "./dist/index.cjs"
|
|
80
|
+
},
|
|
81
|
+
"./style.css": "./dist/style.css"
|
|
82
|
+
},
|
|
83
|
+
"peerDependencies": {
|
|
84
|
+
"react": "^18 || ^19",
|
|
85
|
+
"react-dom": "^18 || ^19"
|
|
86
|
+
}
|
|
87
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
7
|
+
<meta name="theme-color" content="#000000" />
|
|
8
|
+
<meta
|
|
9
|
+
name="description"
|
|
10
|
+
content="Web site created using create-react-app"
|
|
11
|
+
/>
|
|
12
|
+
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
|
|
13
|
+
<!--
|
|
14
|
+
manifest.json provides metadata used when your web app is installed on a
|
|
15
|
+
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
|
|
16
|
+
-->
|
|
17
|
+
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
|
|
18
|
+
<!--
|
|
19
|
+
Notice the use of %PUBLIC_URL% in the tags above.
|
|
20
|
+
It will be replaced with the URL of the `public` folder during the build.
|
|
21
|
+
Only files inside the `public` folder can be referenced from the HTML.
|
|
22
|
+
|
|
23
|
+
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
|
|
24
|
+
work correctly both with client-side routing and a non-root public URL.
|
|
25
|
+
Learn how to configure a non-root public URL by running `npm run build`.
|
|
26
|
+
-->
|
|
27
|
+
<title>React App</title>
|
|
28
|
+
</head>
|
|
29
|
+
<body>
|
|
30
|
+
<noscript>You need to enable JavaScript to run this app.</noscript>
|
|
31
|
+
<div id="root"></div>
|
|
32
|
+
<!--
|
|
33
|
+
This HTML file is a template.
|
|
34
|
+
If you open it directly in the browser, you will see an empty page.
|
|
35
|
+
|
|
36
|
+
You can add webfonts, meta tags, or analytics to this file.
|
|
37
|
+
The build step will place the bundled scripts into the <body> tag.
|
|
38
|
+
|
|
39
|
+
To begin the development, run `npm start` or `yarn start`.
|
|
40
|
+
To create a production bundle, use `npm run build` or `yarn build`.
|
|
41
|
+
-->
|
|
42
|
+
</body>
|
|
43
|
+
</html>
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"short_name": "React App",
|
|
3
|
+
"name": "Create React App Sample",
|
|
4
|
+
"icons": [
|
|
5
|
+
{
|
|
6
|
+
"src": "favicon.ico",
|
|
7
|
+
"sizes": "64x64 32x32 24x24 16x16",
|
|
8
|
+
"type": "image/x-icon"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"src": "logo192.png",
|
|
12
|
+
"type": "image/png",
|
|
13
|
+
"sizes": "192x192"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"src": "logo512.png",
|
|
17
|
+
"type": "image/png",
|
|
18
|
+
"sizes": "512x512"
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"start_url": ".",
|
|
22
|
+
"display": "standalone",
|
|
23
|
+
"theme_color": "#000000",
|
|
24
|
+
"background_color": "#ffffff"
|
|
25
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import peerDepsExternal from "rollup-plugin-peer-deps-external";
|
|
2
|
+
import resolve from "@rollup/plugin-node-resolve";
|
|
3
|
+
import commonjs from "@rollup/plugin-commonjs";
|
|
4
|
+
import babel from "@rollup/plugin-babel";
|
|
5
|
+
import postcss from "rollup-plugin-postcss";
|
|
6
|
+
|
|
7
|
+
export default [
|
|
8
|
+
{
|
|
9
|
+
input: "src/index.js",
|
|
10
|
+
external: [/^react($|\/)/, /^react-dom($|\/)/],
|
|
11
|
+
plugins: [
|
|
12
|
+
peerDepsExternal(),
|
|
13
|
+
resolve({ extensions: [".mjs", ".js", ".jsx", ".json"] }),
|
|
14
|
+
commonjs(),
|
|
15
|
+
postcss({
|
|
16
|
+
modules: true, // import stylesheet.module.css and use `styles.*`
|
|
17
|
+
extract: true, // emits dist/style.css
|
|
18
|
+
minimize: true,
|
|
19
|
+
}),
|
|
20
|
+
babel({
|
|
21
|
+
babelHelpers: "bundled",
|
|
22
|
+
extensions: [".js", ".jsx", ".mjs"],
|
|
23
|
+
exclude: /node_modules/,
|
|
24
|
+
presets: [["@babel/preset-react", { runtime: "automatic" }]],
|
|
25
|
+
}),
|
|
26
|
+
],
|
|
27
|
+
output: [
|
|
28
|
+
// ESM code-split directory (needed for React.lazy chunks)
|
|
29
|
+
{ dir: "dist/esm", format: "esm", sourcemap: true },
|
|
30
|
+
|
|
31
|
+
// CJS single file: inline all dynamic imports here
|
|
32
|
+
{
|
|
33
|
+
file: "dist/index.cjs",
|
|
34
|
+
format: "cjs",
|
|
35
|
+
sourcemap: true,
|
|
36
|
+
exports: "named",
|
|
37
|
+
inlineDynamicImports: true,
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
];
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
// Define a static map of bracket sizes to byes
|
|
2
|
+
export const BRACKET_BYES = {
|
|
3
|
+
8: 0,
|
|
4
|
+
9: 1,
|
|
5
|
+
10: 2,
|
|
6
|
+
11: 3,
|
|
7
|
+
12: 4,
|
|
8
|
+
13: 3,
|
|
9
|
+
14: 2,
|
|
10
|
+
16: 0,
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Pick bracket sizes (power-of-2 count, sizes in [8,9,10,11,12,13,14,16])
|
|
16
|
+
* summing to N participants.
|
|
17
|
+
*/
|
|
18
|
+
function pickBracketSizes(N) {
|
|
19
|
+
const ALLOWED = [8, 9, 10, 11, 12, 13, 14, 16];
|
|
20
|
+
const MIN = ALLOWED[0], MAX = ALLOWED[ALLOWED.length-1];
|
|
21
|
+
|
|
22
|
+
let count = 1;
|
|
23
|
+
while (count * MAX < N) count <<= 1;
|
|
24
|
+
|
|
25
|
+
if (N <= MIN * count) {
|
|
26
|
+
return Array(count).fill(MIN);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const base = Math.floor(N / count);
|
|
30
|
+
const sizes = Array(count).fill(Math.max(MIN, Math.min(MAX, base)));
|
|
31
|
+
let extra = N - sizes.reduce((sum, s) => sum + s, 0);
|
|
32
|
+
|
|
33
|
+
// round-robin distribute the extra slots
|
|
34
|
+
for (let i = 0; extra > 0; i = (i + 1) % count) {
|
|
35
|
+
if (sizes[i] < MAX) {
|
|
36
|
+
sizes[i]++;
|
|
37
|
+
extra--;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return sizes;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Given an array of player-objects, reorder them so that
|
|
45
|
+
* no two players from the same club are adjacent,
|
|
46
|
+
* using a simple greedy “take the largest club that isn’t last” strategy.
|
|
47
|
+
*/
|
|
48
|
+
function reorderBracketPlayers(players) {
|
|
49
|
+
// bucket by club
|
|
50
|
+
const buckets = players.reduce((acc,p) => {
|
|
51
|
+
(acc[p.club] = acc[p.club]||[]).push(p);
|
|
52
|
+
return acc;
|
|
53
|
+
}, {});
|
|
54
|
+
// turn into array of {club, list, count}
|
|
55
|
+
const clubs = Object.entries(buckets)
|
|
56
|
+
.map(([club, list]) => ({ club, list: list.slice(), count: list.length }));
|
|
57
|
+
|
|
58
|
+
const result = [];
|
|
59
|
+
let lastClub = null;
|
|
60
|
+
|
|
61
|
+
for (let i = 0; i < players.length; i++) {
|
|
62
|
+
// sort clubs by remaining count desc
|
|
63
|
+
clubs.sort((a,b) => b.count - a.count);
|
|
64
|
+
|
|
65
|
+
// pick the first with count>0 and club≠lastClub
|
|
66
|
+
let idx = clubs.findIndex(c => c.count > 0 && c.club !== lastClub);
|
|
67
|
+
if (idx === -1) {
|
|
68
|
+
// forced to pick the same club
|
|
69
|
+
idx = clubs.findIndex(c => c.count > 0);
|
|
70
|
+
}
|
|
71
|
+
const pick = clubs[idx];
|
|
72
|
+
result.push(pick.list.pop());
|
|
73
|
+
pick.count--;
|
|
74
|
+
lastClub = pick.club;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Main: allocate players into brackets, then reorder inside each bracket.
|
|
82
|
+
* @param {Array<{id:string,name:string,club:string}>} players
|
|
83
|
+
* @returns {Array<{ group:number, size:number, players:Array }>}
|
|
84
|
+
*/
|
|
85
|
+
function assignBrackets(players) {
|
|
86
|
+
const N = players.length;
|
|
87
|
+
const sizes = pickBracketSizes(N);
|
|
88
|
+
const bracketCount = sizes.length;
|
|
89
|
+
|
|
90
|
+
// group players by club size descending, for spreading
|
|
91
|
+
const byClub = players.reduce((acc,p) => {
|
|
92
|
+
(acc[p.club] = acc[p.club]||[]).push(p);
|
|
93
|
+
return acc;
|
|
94
|
+
}, {});
|
|
95
|
+
const clubLists = Object.values(byClub)
|
|
96
|
+
.sort((a,b) => b.length - a.length);
|
|
97
|
+
|
|
98
|
+
// initialize empty brackets
|
|
99
|
+
const brackets = sizes.map((sz,i) => ({
|
|
100
|
+
group: i+1,
|
|
101
|
+
size: sz,
|
|
102
|
+
players: []
|
|
103
|
+
}));
|
|
104
|
+
|
|
105
|
+
// 1) spread club-by-club across brackets
|
|
106
|
+
let bi = 0;
|
|
107
|
+
for (let clubPlayers of clubLists) {
|
|
108
|
+
for (let p of clubPlayers) {
|
|
109
|
+
// find next bracket with room
|
|
110
|
+
while (brackets[bi].players.length >= brackets[bi].size) {
|
|
111
|
+
bi = (bi + 1) % bracketCount;
|
|
112
|
+
}
|
|
113
|
+
brackets[bi].players.push(p);
|
|
114
|
+
bi = (bi + 1) % bracketCount;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// 2) reorder inside each bracket to avoid same-club adjacencies
|
|
119
|
+
for (let br of brackets) {
|
|
120
|
+
br.players = reorderBracketPlayers(br.players);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
return brackets;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
const divisionAPlayers = [
|
|
127
|
+
{ id: "P001", name: "Amina Yusuf", club: "TKC", bias: false },
|
|
128
|
+
{ id: "P002", name: "Hiroki Tanaka", club: "TKC", bias: false },
|
|
129
|
+
{ id: "P003", name: "Lucas Oliveira", club: "TKC", bias: true },
|
|
130
|
+
{ id: "P004", name: "Priya Singh", club: "TKC", bias: false },
|
|
131
|
+
{ id: "P005", name: "Li Wei", club: "TKC", bias: false },
|
|
132
|
+
{ id: "P006", name: "Jamal Thompson", club: "TKC", bias: false },
|
|
133
|
+
{ id: "P007", name: "Sofia García", club: "TKC", bias: true },
|
|
134
|
+
{ id: "P008", name: "Viktor Johansson", club: "TKC", bias: false },
|
|
135
|
+
{ id: "P009", name: "Zuri Ndlovu", club: "TKC", bias: false },
|
|
136
|
+
{ id: "P010", name: "Amara Diop", club: "TKC", bias: false },
|
|
137
|
+
{ id: "P011", name: "Kenji Watanabe", club: "TKC", bias: false },
|
|
138
|
+
{ id: "P012", name: "María Estévez", club: "TKC", bias: false },
|
|
139
|
+
{ id: "P013", name: "Oskar Lindgren", club: "TKC", bias: false },
|
|
140
|
+
{ id: "P014", name: "Aisha El-Sayed", club: "TKC", bias: false },
|
|
141
|
+
{ id: "P015", name: "Linh Tran", club: "TKC", bias: false },
|
|
142
|
+
{ id: "P016", name: "Diego Castillo", club: "ETO", bias: false },
|
|
143
|
+
{ id: "P017", name: "Fatima Al-Hassan", club: "ETO", bias: false },
|
|
144
|
+
{ id: "P018", name: "Olivia Montgomery", club: "ETO", bias: false },
|
|
145
|
+
{ id: "P019", name: "Thiago Oliveira", club: "ETO", bias: false },
|
|
146
|
+
{ id: "P020", name: "Zara Novak", club: "ETO", bias: false },
|
|
147
|
+
{ id: "P021", name: "Amina Yusuf", club: "ETO", bias: false },
|
|
148
|
+
{ id: "P022", name: "Hiroki Tanaka", club: "ETO", bias: true },
|
|
149
|
+
{ id: "P023", name: "Lucas Oliveira", club: "ETO", bias: false },
|
|
150
|
+
{ id: "P024", name: "Priya Singh", club: "ETO", bias: false },
|
|
151
|
+
{ id: "P025", name: "Li Wei", club: "ETO", bias: false },
|
|
152
|
+
{ id: "P026", name: "Jamal Thompson", club: "ETO", bias: false },
|
|
153
|
+
{ id: "P027", name: "Sofia García", club: "ETO", bias: false },
|
|
154
|
+
{ id: "P028", name: "Viktor Johansson", club: "UOT", bias: false },
|
|
155
|
+
{ id: "P029", name: "Zuri Ndlovu", club: "UOT", bias: true },
|
|
156
|
+
{ id: "P030", name: "Amara Diop", club: "UOT", bias: false },
|
|
157
|
+
{ id: "P031", name: "Kenji Watanabe", club: "UOT", bias: false },
|
|
158
|
+
{ id: "P032", name: "María Estévez", club: "UOT", bias: false },
|
|
159
|
+
{ id: "P033", name: "Oskar Lindgren", club: "UOT", bias: true },
|
|
160
|
+
{ id: "P034", name: "Aisha El-Sayed", club: "UOT", bias: false },
|
|
161
|
+
{ id: "P035", name: "Linh Tran", club: "UOT", bias: false },
|
|
162
|
+
{ id: "P036", name: "Diego Castillo", club: "UOT", bias: false },
|
|
163
|
+
{ id: "P037", name: "Fatima Al-Hassan", club: "UOT", bias: false },
|
|
164
|
+
{ id: "P038", name: "Olivia Montgomery", club: "UOT", bias: false },
|
|
165
|
+
{ id: "P039", name: "Thiago Oliveira", club: "JCC", bias: false },
|
|
166
|
+
{ id: "P040", name: "Zara Novak", club: "JCC", bias: false },
|
|
167
|
+
{ id: "P041", name: "Amina Yusuf", club: "JCC", bias: false },
|
|
168
|
+
{ id: "P042", name: "Hiroki Tanaka", club: "JCC", bias: false },
|
|
169
|
+
{ id: "P043", name: "Lucas Oliveira", club: "JCC", bias: false },
|
|
170
|
+
{ id: "P044", name: "Priya Singh", club: "JCC", bias: true },
|
|
171
|
+
{ id: "P045", name: "Li Wei", club: "JCC", bias: false },
|
|
172
|
+
{ id: "P046", name: "Jamal Thompson", club: "JCC", bias: false },
|
|
173
|
+
{ id: "P047", name: "Sofia García", club: "JCC", bias: false },
|
|
174
|
+
{ id: "P048", name: "Viktor Johansson", club: "JCC", bias: false },
|
|
175
|
+
{ id: "P049", name: "Zuri Ndlovu", club: "UWA", bias: false },
|
|
176
|
+
{ id: "P050", name: "Amara Diop", club: "UWA", bias: false },
|
|
177
|
+
{ id: "P051", name: "Kenji Watanabe", club: "UWA", bias: false },
|
|
178
|
+
{ id: "P052", name: "María Estévez", club: "UWA", bias: false },
|
|
179
|
+
{ id: "P053", name: "Oskar Lindgren", club: "UWA", bias: false },
|
|
180
|
+
{ id: "P054", name: "Aisha El-Sayed", club: "UWA", bias: false },
|
|
181
|
+
{ id: "P055", name: "Linh Tran", club: "UWA", bias: false },
|
|
182
|
+
{ id: "P056", name: "Diego Castillo", club: "UWA", bias: false },
|
|
183
|
+
{ id: "P057", name: "Fatima Al-Hassan", club: "UWA", bias: false },
|
|
184
|
+
{ id: "P058", name: "Olivia Montgomery", club: "UWA", bias: false },
|
|
185
|
+
{ id: "P059", name: "Thiago Oliveira", club: "TMU", bias: false },
|
|
186
|
+
{ id: "P060", name: "Zara Novak", club: "TMU", bias: false },
|
|
187
|
+
{ id: "P061", name: "Amina Yusuf", club: "TMU", bias: false },
|
|
188
|
+
{ id: "P062", name: "Hiroki Tanaka", club: "TMU", bias: false },
|
|
189
|
+
{ id: "P063", name: "Lucas Oliveira", club: "TMU", bias: false },
|
|
190
|
+
{ id: "P064", name: "Priya Singh", club: "TMU", bias: false },
|
|
191
|
+
{ id: "P065", name: "Li Wei", club: "TMU", bias: false },
|
|
192
|
+
{ id: "P066", name: "Jamal Thompson", club: "TMU", bias: false },
|
|
193
|
+
{ id: "P067", name: "Sofia García", club: "TMU", bias: false },
|
|
194
|
+
{ id: "P068", name: "Viktor Johansson", club: "MAR", bias: false },
|
|
195
|
+
{ id: "P069", name: "Zuri Ndlovu", club: "MAR", bias: false },
|
|
196
|
+
{ id: "P070", name: "Amara Diop", club: "MAR", bias: false },
|
|
197
|
+
{ id: "P071", name: "Kenji Watanabe", club: "MAR", bias: false },
|
|
198
|
+
{ id: "P072", name: "María Estévez", club: "MAR", bias: true },
|
|
199
|
+
{ id: "P073", name: "Oskar Lindgren", club: "MAR", bias: false },
|
|
200
|
+
{ id: "P074", name: "Aisha El-Sayed", club: "MAR", bias: false },
|
|
201
|
+
{ id: "P075", name: "Linh Tran", club: "MAR", bias: false },
|
|
202
|
+
{ id: "P076", name: "Diego Castillo", club: "MAR", bias: false },
|
|
203
|
+
{ id: "P077", name: "Fatima Al-Hassan", club: "ARC", bias: false },
|
|
204
|
+
{ id: "P078", name: "Olivia Montgomery", club: "ARC", bias: false },
|
|
205
|
+
{ id: "P079", name: "Thiago Oliveira", club: "ARC", bias: false },
|
|
206
|
+
{ id: "P080", name: "Zara Novak", club: "ARC", bias: false },
|
|
207
|
+
{ id: "P081", name: "Amina Yusuf", club: "ARC", bias: false },
|
|
208
|
+
{ id: "P082", name: "Hiroki Tanaka", club: "ARC", bias: false },
|
|
209
|
+
{ id: "P083", name: "Lucas Oliveira", club: "ARC", bias: false },
|
|
210
|
+
{ id: "P084", name: "Priya Singh", club: "ARC", bias: false },
|
|
211
|
+
{ id: "P085", name: "Li Wei", club: "ARC", bias: false },
|
|
212
|
+
{ id: "P086", name: "Jamal Thompson", club: "BLU", bias: false },
|
|
213
|
+
{ id: "P087", name: "Sofia García", club: "BLU", bias: false },
|
|
214
|
+
{ id: "P088", name: "Viktor Johansson", club: "BLU", bias: false },
|
|
215
|
+
{ id: "P089", name: "Zuri Ndlovu", club: "BLU", bias: false },
|
|
216
|
+
{ id: "P090", name: "Amara Diop", club: "BLU", bias: false },
|
|
217
|
+
{ id: "P091", name: "Kenji Watanabe", club: "BLU", bias: false },
|
|
218
|
+
{ id: "P092", name: "María Estévez", club: "BLU", bias: false },
|
|
219
|
+
{ id: "P093", name: "Oskar Lindgren", club: "BLU", bias: false },
|
|
220
|
+
{ id: "P094", name: "Aisha El-Sayed", club: "BLU", bias: false },
|
|
221
|
+
{ id: "P095", name: "Linh Tran", club: "GRN", bias: false },
|
|
222
|
+
{ id: "P096", name: "Diego Castillo", club: "GRN", bias: false },
|
|
223
|
+
{ id: "P097", name: "Fatima Al-Hassan", club: "GRN", bias: false },
|
|
224
|
+
{ id: "P098", name: "Olivia Montgomery", club: "GRN", bias: false },
|
|
225
|
+
{ id: "P099", name: "Thiago Oliveira", club: "GRN", bias: false },
|
|
226
|
+
{ id: "P100", name: "Zara Novak", club: "GRN", bias: false },
|
|
227
|
+
{ id: "P101", name: "Amina Yusuf", club: "GRN", bias: false },
|
|
228
|
+
{ id: "P102", name: "Hiroki Tanaka", club: "GRN", bias: false },
|
|
229
|
+
{ id: "P103", name: "Lucas Oliveira", club: "GRN", bias: false },
|
|
230
|
+
];
|
|
231
|
+
|
|
232
|
+
const divisionABrackets = assignBrackets(divisionAPlayers);
|
|
233
|
+
console.log("total players:", divisionAPlayers.length);
|
|
234
|
+
console.log(JSON.stringify(divisionABrackets, null, 2));
|
|
235
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { VariantFacade } from "../_internal/VariantFacade";
|
|
3
|
+
const registry = {
|
|
4
|
+
teams: {
|
|
5
|
+
8: React.lazy(() => import("../Teams/08-Team/CollapsedLeft")),
|
|
6
|
+
9: React.lazy(() => import("../Teams/09-Team/CollapsedLeft")),
|
|
7
|
+
10: React.lazy(() => import("../Teams/10-Team/CollapsedLeft")),
|
|
8
|
+
11: React.lazy(() => import("../Teams/11-Team/CollapsedLeft")),
|
|
9
|
+
12: React.lazy(() => import("../Teams/12-Team/CollapsedLeft")),
|
|
10
|
+
13: React.lazy(() => import("../Teams/13-Team/CollapsedLeft")),
|
|
11
|
+
14: React.lazy(() => import("../Teams/14-Team/CollapsedLeft")),
|
|
12
|
+
16: React.lazy(() => import("../Teams/16-Team/CollapsedLeft")),
|
|
13
|
+
},
|
|
14
|
+
individuals: {
|
|
15
|
+
8: React.lazy(() => import("../Individuals/08-Player/CollapsedLeft")),
|
|
16
|
+
9: React.lazy(() => import("../Individuals/09-Player/CollapsedLeft")),
|
|
17
|
+
10: React.lazy(() => import("../Individuals/10-Player/CollapsedLeft")),
|
|
18
|
+
11: React.lazy(() => import("../Individuals/11-Player/CollapsedLeft")),
|
|
19
|
+
12: React.lazy(() => import("../Individuals/12-Player/CollapsedLeft")),
|
|
20
|
+
13: React.lazy(() => import("../Individuals/13-Player/CollapsedLeft")),
|
|
21
|
+
14: React.lazy(() => import("../Individuals/14-Player/CollapsedLeft")),
|
|
22
|
+
16: React.lazy(() => import("../Individuals/16-Player/CollapsedLeft")),
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export default VariantFacade(registry, "CollapsedLeft");
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { VariantFacade } from "../_internal/VariantFacade";
|
|
3
|
+
|
|
4
|
+
const registry = {
|
|
5
|
+
teams: {
|
|
6
|
+
8: React.lazy(() => import("../Teams/08-Team/CollapsedRight")),
|
|
7
|
+
9: React.lazy(() => import("../Teams/09-Team/CollapsedRight")),
|
|
8
|
+
10: React.lazy(() => import("../Teams/10-Team/CollapsedRight")),
|
|
9
|
+
11: React.lazy(() => import("../Teams/11-Team/CollapsedRight")),
|
|
10
|
+
12: React.lazy(() => import("../Teams/12-Team/CollapsedRight")),
|
|
11
|
+
13: React.lazy(() => import("../Teams/13-Team/CollapsedRight")),
|
|
12
|
+
14: React.lazy(() => import("../Teams/14-Team/CollapsedRight")),
|
|
13
|
+
16: React.lazy(() => import("../Teams/16-Team/CollapsedRight")),
|
|
14
|
+
},
|
|
15
|
+
individuals: {
|
|
16
|
+
8: React.lazy(() => import("../Individuals/08-Player/CollapsedRight")),
|
|
17
|
+
9: React.lazy(() => import("../Individuals/09-Player/CollapsedRight")),
|
|
18
|
+
10: React.lazy(() => import("../Individuals/10-Player/CollapsedRight")),
|
|
19
|
+
11: React.lazy(() => import("../Individuals/11-Player/CollapsedRight")),
|
|
20
|
+
12: React.lazy(() => import("../Individuals/12-Player/CollapsedRight")),
|
|
21
|
+
13: React.lazy(() => import("../Individuals/13-Player/CollapsedRight")),
|
|
22
|
+
14: React.lazy(() => import("../Individuals/14-Player/CollapsedRight")),
|
|
23
|
+
16: React.lazy(() => import("../Individuals/16-Player/CollapsedRight")),
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export default VariantFacade(registry, "CollapsedRight");
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { VariantFacade } from "../_internal/VariantFacade";
|
|
3
|
+
|
|
4
|
+
const registry = {
|
|
5
|
+
teams: {
|
|
6
|
+
8: React.lazy(() => import("../Teams/08-Team/Expanded")),
|
|
7
|
+
9: React.lazy(() => import("../Teams/09-Team/Expanded")),
|
|
8
|
+
10: React.lazy(() => import("../Teams/10-Team/Expanded")),
|
|
9
|
+
11: React.lazy(() => import("../Teams/11-Team/Expanded")),
|
|
10
|
+
12: React.lazy(() => import("../Teams/12-Team/Expanded")),
|
|
11
|
+
13: React.lazy(() => import("../Teams/13-Team/Expanded")),
|
|
12
|
+
14: React.lazy(() => import("../Teams/14-Team/Expanded")),
|
|
13
|
+
16: React.lazy(() => import("../Teams/16-Team/Expanded")),
|
|
14
|
+
},
|
|
15
|
+
individuals: {
|
|
16
|
+
8: React.lazy(() => import("../Individuals/08-Player/Expanded")),
|
|
17
|
+
9: React.lazy(() => import("../Individuals/09-Player/Expanded")),
|
|
18
|
+
10: React.lazy(() => import("../Individuals/10-Player/Expanded")),
|
|
19
|
+
11: React.lazy(() => import("../Individuals/11-Player/Expanded")),
|
|
20
|
+
12: React.lazy(() => import("../Individuals/12-Player/Expanded")),
|
|
21
|
+
13: React.lazy(() => import("../Individuals/13-Player/Expanded")),
|
|
22
|
+
14: React.lazy(() => import("../Individuals/14-Player/Expanded")),
|
|
23
|
+
16: React.lazy(() => import("../Individuals/16-Player/Expanded")),
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export default VariantFacade(registry, "Expanded");
|