├── .gitignore ├── .npmrc ├── .prettierrc ├── .vscode └── settings.json ├── CONTRIBUTING.md ├── LICENSE.md ├── README.md ├── apps ├── docs │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── app │ │ ├── favicon.ico │ │ ├── globals.css │ │ ├── layout.tsx │ │ ├── page.module.css │ │ └── page.tsx │ ├── next-env.d.ts │ ├── next.config.js │ ├── package.json │ ├── public │ │ ├── circles.svg │ │ ├── next.svg │ │ ├── turborepo.svg │ │ └── vercel.svg │ └── tsconfig.json └── web │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── content │ ├── changelog │ │ ├── 2022-12-02.md │ │ ├── 2022-12-07.md │ │ ├── 2022-12-18.md │ │ ├── 2022-12-24.md │ │ ├── 2022-12-27.md │ │ ├── 2022-12-30.md │ │ ├── 2023-01-01.md │ │ ├── 2023-01-05.md │ │ ├── 2023-01-06.md │ │ ├── 2023-01-10.md │ │ ├── 2023-01-12.md │ │ ├── 2023-01-17.md │ │ ├── 2023-01-21.md │ │ ├── 2023-02-09.md │ │ ├── 2023-02-13.md │ │ ├── 2023-02-28.md │ │ ├── 2023-03-03.md │ │ ├── 2023-03-08.md │ │ ├── 2023-03-09.md │ │ ├── 2023-03-16.md │ │ ├── 2023-03-21.md │ │ ├── 2023-03-22.md │ │ ├── 2023-03-27.md │ │ ├── 2023-03-29.md │ │ ├── 2023-03-30.md │ │ ├── 2023-04-10.md │ │ ├── 2023-04-18.md │ │ ├── 2023-04-19.md │ │ ├── 2023-04-29.md │ │ ├── 2023-05-08.md │ │ ├── 2023-05-17.md │ │ ├── 2023-05-22.md │ │ ├── 2023-05-23.md │ │ ├── 2023-05-26.md │ │ ├── 2023-05-29.md │ │ ├── 2023-05-30.md │ │ ├── 2023-06-08.md │ │ ├── 2023-06-11.md │ │ ├── 2023-06-12.md │ │ ├── 2023-06-15.md │ │ ├── 2023-06-17.md │ │ ├── 2023-06-24.md │ │ ├── 2023-06-28.md │ │ ├── 2023-07-10.md │ │ ├── 2023-07-11.md │ │ ├── 2023-07-17.md │ │ ├── 2023-07-19.md │ │ ├── 2023-07-20.md │ │ ├── 2023-07-23.md │ │ ├── 2023-08-03.md │ │ ├── 2023-08-18.md │ │ ├── 2023-08-22.md │ │ ├── 2023-08-24.md │ │ ├── 2023-09-05.md │ │ ├── 2023-09-06.md │ │ ├── 2023-09-11.md │ │ └── 2023-09-13.md │ ├── design │ │ ├── colors.mdx │ │ ├── components │ │ │ ├── avatar.mdx │ │ │ ├── badge.mdx │ │ │ ├── button.mdx │ │ │ ├── card.mdx │ │ │ ├── checkbox.mdx │ │ │ ├── dialog.mdx │ │ │ ├── dropdown.mdx │ │ │ ├── input.mdx │ │ │ ├── kbd.mdx │ │ │ ├── label.mdx │ │ │ ├── message.mdx │ │ │ ├── note.mdx │ │ │ ├── popover.mdx │ │ │ ├── radio.mdx │ │ │ ├── scroller.mdx │ │ │ ├── select.mdx │ │ │ ├── separator.mdx │ │ │ ├── slider.mdx │ │ │ ├── switch.mdx │ │ │ ├── tabs.mdx │ │ │ ├── textarea.mdx │ │ │ ├── toast.mdx │ │ │ ├── toolbar.mdx │ │ │ └── tooltip.mdx │ │ ├── index.mdx │ │ ├── layout │ │ │ └── flex.mdx │ │ ├── spacing.mdx │ │ └── typography.mdx │ ├── docs │ │ ├── calculations │ │ │ ├── range.md │ │ │ └── reload.md │ │ ├── faq │ │ │ ├── assets │ │ │ │ ├── front_hip_mod.jpg │ │ │ │ ├── reload_graph.png │ │ │ │ ├── side_ads_mod.jpg │ │ │ │ └── side_hip_mod.jpg │ │ │ └── index.md │ │ ├── features │ │ │ ├── compare.md │ │ │ ├── roll-editor.md │ │ │ └── search.md │ │ └── index.md │ ├── explorer │ │ └── categories.json │ └── posts │ │ ├── 2022-11-21.md │ │ ├── 2022-12-02.md │ │ ├── 2022-12-07.md │ │ ├── 2022-12-18.md │ │ ├── 2022-12-27.md │ │ └── 2023-04-18.md │ ├── contentlayer.config.ts │ ├── drizzle.config.ts │ ├── next-env.d.ts │ ├── next.config.js │ ├── package.json │ ├── public │ ├── circles.svg │ ├── next.svg │ ├── turborepo.svg │ └── vercel.svg │ ├── src │ ├── app │ │ ├── (blog) │ │ │ ├── changelog │ │ │ │ └── [slug] │ │ │ │ │ └── page.tsx │ │ │ └── posts │ │ │ │ └── [slug] │ │ │ │ └── page.tsx │ │ ├── (docs) │ │ │ ├── design │ │ │ │ └── [[...slug]] │ │ │ │ │ ├── client.tsx │ │ │ │ │ ├── design-sidebar-config.ts │ │ │ │ │ ├── mdxComponents.tsx │ │ │ │ │ └── page.tsx │ │ │ ├── docs │ │ │ │ └── [[...slug]] │ │ │ │ │ ├── docs-sidebar-config.ts │ │ │ │ │ └── page.tsx │ │ │ ├── layout.module.scss │ │ │ ├── layout.tsx │ │ │ ├── pager.tsx │ │ │ ├── sidebar.tsx │ │ │ └── toc.tsx │ │ ├── (explorer) │ │ │ └── weapons │ │ │ │ └── page.tsx │ │ ├── (home) │ │ │ ├── Home.module.scss │ │ │ ├── blog-section.tsx │ │ │ ├── home.tsx │ │ │ ├── page.module.scss │ │ │ ├── page.tsx │ │ │ └── trending-section.tsx │ │ ├── client.tsx │ │ ├── favicon.ico │ │ ├── globals.css │ │ ├── layout.tsx │ │ └── site-layout.tsx │ ├── components │ │ ├── Nav │ │ │ ├── Nav.module.scss │ │ │ └── index.tsx │ │ └── SearchBar │ │ │ └── index.tsx │ └── lib │ │ ├── api │ │ └── destinyManifest.ts │ │ └── database │ │ ├── index.ts │ │ ├── queries │ │ └── items.ts │ │ └── schemas │ │ └── schema.ts │ ├── tsconfig.json │ └── vercel.json ├── package.json ├── packages ├── eslint-config-custom │ ├── README.md │ ├── library.js │ ├── next.js │ ├── package.json │ └── react-internal.js ├── oracle-engine │ ├── README.md │ ├── oracle_engine.d.ts │ ├── oracle_engine.js │ ├── oracle_engine_bg.wasm │ ├── oracle_engine_bg.wasm.d.ts │ └── package.json ├── tsconfig │ ├── base.json │ ├── nextjs.json │ ├── package.json │ └── react-library.json └── ui │ ├── .eslintrc.js │ ├── README.md │ ├── components │ ├── Avatar │ │ ├── Avatar.module.scss │ │ ├── Avatar.tsx │ │ └── index.ts │ ├── Badge │ │ ├── Badge.module.scss │ │ ├── Badge.tsx │ │ └── index.ts │ ├── Button │ │ ├── Button.module.scss │ │ ├── Button.tsx │ │ └── index.ts │ ├── Card │ │ ├── Card.module.scss │ │ ├── Card.tsx │ │ └── index.tsx │ ├── Checkbox │ │ ├── Checkbox.module.scss │ │ ├── Checkbox.tsx │ │ └── index.ts │ ├── CodeBlock │ │ ├── CodeBlock.module.scss │ │ ├── CodeBlock.tsx │ │ └── index.ts │ ├── Container │ │ ├── Container.module.scss │ │ ├── Container.tsx │ │ └── index.tsx │ ├── Dialog │ │ ├── Dialog.module.scss │ │ ├── Dialog.tsx │ │ └── index.ts │ ├── Drawer │ │ ├── Drawer.module.scss │ │ ├── Drawer.tsx │ │ └── index.ts │ ├── DropdownMenu │ │ ├── Dropdown.module.scss │ │ ├── Dropdown.tsx │ │ └── index.ts │ ├── Flex │ │ ├── Flex.module.scss │ │ ├── Flex.tsx │ │ └── index.tsx │ ├── Heading │ │ ├── Heading.module.scss │ │ ├── Heading.tsx │ │ └── index.tsx │ ├── IconButton │ │ ├── IconButton.module.scss │ │ ├── IconButton.tsx │ │ └── index.ts │ ├── Input │ │ ├── Input.module.scss │ │ ├── Input.tsx │ │ └── index.ts │ ├── KBD │ │ ├── KBD.module.scss │ │ ├── KBD.tsx │ │ └── index.ts │ ├── Label │ │ ├── Label.module.scss │ │ ├── Label.tsx │ │ └── index.ts │ ├── Message │ │ ├── Message.module.scss │ │ ├── Message.tsx │ │ └── index.ts │ ├── Note │ │ ├── Note.module.scss │ │ ├── Note.tsx │ │ └── index.ts │ ├── Popover │ │ ├── Popover.module.scss │ │ ├── Popover.tsx │ │ └── index.ts │ ├── RadioGroup │ │ ├── RadioGroup.module.scss │ │ ├── RadioGroup.tsx │ │ └── index.ts │ ├── Scroller │ │ ├── Scroller.module.scss │ │ ├── Scroller.tsx │ │ └── index.ts │ ├── Select │ │ ├── Select.module.scss │ │ ├── Select.tsx │ │ └── index.ts │ ├── Separator │ │ ├── Separator.module.scss │ │ ├── Separator.tsx │ │ └── index.ts │ ├── Skeleton │ │ ├── Skeleton.module.scss │ │ ├── Skeleton.tsx │ │ └── index.ts │ ├── Slider │ │ ├── Slider.module.scss │ │ ├── Slider.tsx │ │ └── index.ts │ ├── Switch │ │ ├── Switch.module.scss │ │ ├── Switch.tsx │ │ └── index.ts │ ├── Tabs │ │ ├── Tabs.module.scss │ │ ├── Tabs.tsx │ │ └── index.ts │ ├── Textarea │ │ ├── Textarea.module.scss │ │ ├── Textarea.tsx │ │ └── index.ts │ ├── Theme │ │ └── index.tsx │ ├── Toast │ │ ├── Toast.demo.tsx │ │ ├── Toast.module.scss │ │ ├── Toast.tsx │ │ ├── Toaster.tsx │ │ ├── index.ts │ │ └── useToast.ts │ ├── ToggleButton │ │ ├── ToggleButton.module.scss │ │ ├── ToggleButton.tsx │ │ └── index.ts │ ├── Toolbar │ │ ├── Toolbar.module.scss │ │ ├── Toolbar.tsx │ │ └── index.ts │ ├── Tooltip │ │ ├── Tooltip.module.scss │ │ ├── Tooltip.tsx │ │ └── index.ts │ ├── index.tsx │ └── sharedProps.ts │ ├── demos │ ├── ColorPalette │ │ ├── ColorPalette.module.scss │ │ ├── ColorPalette.tsx │ │ └── index.ts │ ├── ComponentPreview │ │ ├── ComponentPreview.module.scss │ │ ├── ComponentPreview.tsx │ │ └── index.ts │ ├── SpacingDemo │ │ ├── SpacingDemo.module.scss │ │ ├── SpacingDemo.tsx │ │ └── index.ts │ ├── TypographyScale │ │ ├── TypographyScale.module.scss │ │ ├── TypographyScale.tsx │ │ └── index.ts │ └── index.tsx │ ├── design-system │ ├── colors.scss │ ├── globals.scss │ ├── spacing.scss │ ├── tokens-old.css │ ├── tokens.scss │ └── typography.scss │ ├── global.d.ts │ ├── index.tsx │ ├── package.json │ ├── tsconfig.json │ ├── turbo │ └── generators │ │ ├── config.ts │ │ └── templates │ │ ├── component.hbs │ │ └── scss_module.hbs │ └── utils │ ├── cn.ts │ ├── copyToClipboard.ts │ └── index.ts ├── pnpm-lock.yaml ├── pnpm-workspace.yaml ├── scripts ├── buildManifestCache │ └── index.js ├── generate │ ├── componentTemplates.js │ └── index.js └── reverse-proxy.js ├── tsconfig.json └── turbo.json /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | node_modules 5 | .pnp 6 | .pnp.js 7 | 8 | # testing 9 | coverage 10 | 11 | # next.js 12 | .next/ 13 | out/ 14 | build 15 | 16 | # misc 17 | .DS_Store 18 | *.pem 19 | 20 | # debug 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | 25 | # local env files 26 | .env 27 | .env.local 28 | .env.development.local 29 | .env.test.local 30 | .env.production.local 31 | 32 | # turbo 33 | .turbo 34 | 35 | # vercel 36 | .vercel 37 | 38 | # contentlayer 39 | .contentlayer 40 | synced/**/* -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | auto-install-peers = true 2 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 80, 3 | "semi": true, 4 | "arrowParens": "always", 5 | "singleQuote": false, 6 | "bracketSameLine": false, 7 | "bracketSpacing": true, 8 | "trailingComma": "es5" 9 | } 10 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "eslint.workingDirectories": [ 3 | { 4 | "mode": "auto" 5 | } 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # D2Foundry Software Licensing 2 | 3 | Copyright 2022-2023 gothfemme 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License") and the Commons Clause License Condition; you may not use this file except in compliance with the License. You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. 10 | 11 | ## Commons Clause License Condition 12 | 13 | The Software is provided to you by the Licensor under the License, as defined below, subject to the following condition. 14 | 15 | Without limiting other conditions in the License, the grant of rights under the License will not include, and the License does not grant to you, the right to Sell the Software. 16 | 17 | For purposes of the foregoing, “Sell” means practicing any or all of the rights granted to you under the License to provide to third parties, for a fee or other consideration, a product or service that consists, entirely or substantially, of the Software or the functionality of the Software. Any license notice or attribution required by the License must also include this Commons Cause License Condition notice. 18 | 19 | For purposes of the clause above, the “Licensor” is gothfemme, the “License” is the Apache License, Version 2.0, and the Software is the D2Foundry software provided with this notice. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Foundry 2 | 3 | Foundry is an advanced weapon roll explorer and buildcrafting tool for Destiny 2. 4 | 5 | ## Getting Started 6 | 7 | ### Develop 8 | 9 | To develop all apps and packages, run the following command from the top level directory: 10 | 11 | ``` 12 | pnpm dev 13 | ``` 14 | 15 | 16 | ### Build 17 | 18 | To build all apps and packages, run the following command from the top level directory: 19 | 20 | ``` 21 | pnpm build 22 | ``` 23 | 24 | ### Apps and Packages 25 | 26 | - `web`: Foundry NextJS web app 27 | - `docs`: a scaffolded Next app right now 28 | - `ui`: our component library 29 | - `eslint-config-custom`: `eslint` configurations (includes `eslint-config-next` and `eslint-config-prettier`) 30 | - `tsconfig`: `tsconfig.json`s used throughout the monorepo 31 | 32 | ### Utilities 33 | 34 | This Turborepo has some additional tools already setup for you: 35 | 36 | - [TypeScript](https://www.typescriptlang.org/) for static type checking 37 | - [ESLint](https://eslint.org/) for code linting 38 | - [Prettier](https://prettier.io) for code formatting 39 | 40 | ## Contribute 41 | 42 | Please refer to the [CONTRIBUTING.md](./CONTRIBUTING.md) file for information about how to get involved. We welcome issues, questions, and pull requests. 43 | 44 | 45 | ## License 46 | 47 | This project is licensed under the terms of the Apache 2.0 License with Common Clause License Conditions. Please refer to [LICENSE](LICENSE.md) for the full terms. 48 | 49 | -------------------------------------------------------------------------------- /apps/docs/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: ["custom/next"], 3 | }; 4 | -------------------------------------------------------------------------------- /apps/docs/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | 27 | # local env files 28 | .env.local 29 | .env.development.local 30 | .env.test.local 31 | .env.production.local 32 | 33 | # vercel 34 | .vercel 35 | -------------------------------------------------------------------------------- /apps/docs/README.md: -------------------------------------------------------------------------------- 1 | ## Getting Started 2 | 3 | First, run the development server: 4 | 5 | ```bash 6 | yarn dev 7 | ``` 8 | 9 | Open [http://localhost:3001](http://localhost:3001) with your browser to see the result. 10 | 11 | You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. 12 | 13 | To create [API routes](https://nextjs.org/docs/app/building-your-application/routing/router-handlers) add an `api/` directory to the `app/` directory with a `route.ts` file. For individual endpoints, create a subfolder in the `api` directory, like `api/hello/route.ts` would map to [http://localhost:3001/api/hello](http://localhost:3001/api/hello). 14 | 15 | ## Learn More 16 | 17 | To learn more about Next.js, take a look at the following resources: 18 | 19 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. 20 | - [Learn Next.js](https://nextjs.org/learn/foundations/about-nextjs) - an interactive Next.js tutorial. 21 | 22 | You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! 23 | 24 | ## Deploy on Vercel 25 | 26 | The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_source=github.com&utm_medium=referral&utm_campaign=turborepo-readme) from the creators of Next.js. 27 | 28 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. 29 | -------------------------------------------------------------------------------- /apps/docs/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d2foundry/foundry/11b597a2fd5badafbef08d67ea344ce3dae5344d/apps/docs/app/favicon.ico -------------------------------------------------------------------------------- /apps/docs/app/globals.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --max-width: 1100px; 3 | --border-radius: 12px; 4 | --font-mono: ui-monospace, Menlo, Monaco, "Cascadia Mono", "Segoe UI Mono", 5 | "Roboto Mono", "Oxygen Mono", "Ubuntu Monospace", "Source Code Pro", 6 | "Fira Mono", "Droid Sans Mono", "Courier New", monospace; 7 | 8 | --foreground-rgb: 255, 255, 255; 9 | --background-start-rgb: 0, 0, 0; 10 | --background-end-rgb: 0, 0, 0; 11 | 12 | --callout-rgb: 20, 20, 20; 13 | --callout-border-rgb: 108, 108, 108; 14 | --card-rgb: 100, 100, 100; 15 | --card-border-rgb: 200, 200, 200; 16 | 17 | --glow-conic: conic-gradient( 18 | from 180deg at 50% 50%, 19 | #2a8af6 0deg, 20 | #a853ba 180deg, 21 | #e92a67 360deg 22 | ); 23 | } 24 | 25 | * { 26 | box-sizing: border-box; 27 | padding: 0; 28 | margin: 0; 29 | } 30 | 31 | html, 32 | body { 33 | max-width: 100vw; 34 | overflow-x: hidden; 35 | } 36 | 37 | body { 38 | color: rgb(var(--foreground-rgb)); 39 | background: linear-gradient( 40 | to bottom, 41 | transparent, 42 | rgb(var(--background-end-rgb)) 43 | ) 44 | rgb(var(--background-start-rgb)); 45 | } 46 | 47 | a { 48 | color: inherit; 49 | text-decoration: none; 50 | } 51 | -------------------------------------------------------------------------------- /apps/docs/app/layout.tsx: -------------------------------------------------------------------------------- 1 | import "./globals.css"; 2 | import type { Metadata } from "next"; 3 | import { Inter } from "next/font/google"; 4 | 5 | const inter = Inter({ subsets: ["latin"] }); 6 | 7 | export const metadata: Metadata = { 8 | title: "Create Turborepo", 9 | description: "Generated by create turbo", 10 | }; 11 | 12 | export default function RootLayout({ 13 | children, 14 | }: { 15 | children: React.ReactNode; 16 | }): JSX.Element { 17 | return ( 18 | 19 | {children} 20 | 21 | ); 22 | } 23 | -------------------------------------------------------------------------------- /apps/docs/next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/basic-features/typescript for more information. 6 | -------------------------------------------------------------------------------- /apps/docs/next.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | reactStrictMode: true, 3 | transpilePackages: ["@foundry/ui"], 4 | }; 5 | -------------------------------------------------------------------------------- /apps/docs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@foundry/docs", 3 | "version": "1.0.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev --port 3001", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint" 10 | }, 11 | "dependencies": { 12 | "next": "^13.5.3", 13 | "react": "^18.2.0", 14 | "react-dom": "^18.2.0", 15 | "@foundry/ui": "workspace:*" 16 | }, 17 | "devDependencies": { 18 | "@next/eslint-plugin-next": "^13.4.19", 19 | "@types/node": "^17.0.12", 20 | "@types/react": "^18.0.22", 21 | "@types/react-dom": "^18.0.7", 22 | "@foundry/eslint-config-custom": "workspace:*", 23 | "@foundry/tsconfig": "workspace:*", 24 | "typescript": "^4.5.3" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /apps/docs/public/circles.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /apps/docs/public/next.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/docs/public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/docs/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@foundry/tsconfig/nextjs.json", 3 | "compilerOptions": { 4 | "plugins": [{ "name": "next" }] 5 | }, 6 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], 7 | "exclude": ["node_modules"] 8 | } 9 | -------------------------------------------------------------------------------- /apps/web/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: ["custom/next"], 3 | }; 4 | -------------------------------------------------------------------------------- /apps/web/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | 27 | # local env files 28 | .env.local 29 | .env.development.local 30 | .env.test.local 31 | .env.production.local 32 | 33 | # vercel 34 | .vercel 35 | 36 | # contentlayer 37 | .contentlayer 38 | .synced 39 | synced 40 | sqlite.db 41 | -------------------------------------------------------------------------------- /apps/web/README.md: -------------------------------------------------------------------------------- 1 | ## Getting Started 2 | 3 | First, run the development server: 4 | 5 | ```bash 6 | yarn dev 7 | ``` 8 | 9 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. 10 | 11 | You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. 12 | 13 | To create [API routes](https://nextjs.org/docs/app/building-your-application/routing/router-handlers) add an `api/` directory to the `app/` directory with a `route.ts` file. For individual endpoints, create a subfolder in the `api` directory, like `api/hello/route.ts` would map to [http://localhost:3000/api/hello](http://localhost:3000/api/hello). 14 | 15 | ## Learn More 16 | 17 | To learn more about Next.js, take a look at the following resources: 18 | 19 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. 20 | - [Learn Next.js](https://nextjs.org/learn/foundations/about-nextjs) - an interactive Next.js tutorial. 21 | 22 | You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! 23 | 24 | ## Deploy on Vercel 25 | 26 | The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_source=github.com&utm_medium=referral&utm_campaign=turborepo-readme) from the creators of Next.js. 27 | 28 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. 29 | -------------------------------------------------------------------------------- /apps/web/content/changelog/2022-12-02.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Search filters' 3 | slug: '2022-12-02' 4 | excerpt: 'Added search filter feature' 5 | date: '2022-12-02T15:00:00-05:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | * Added filters and support for text-based logical queries to search 11 | * Supports querying for `weapon`, `frame`, `trait`, `rpm`, `energy`, `ammo`, `rarity`, `sunset` 12 | * Added recent searches 13 | * Improved rendering of search results when there are a large number of matches 14 | * Greatly increased limit for matches returned as a result 15 | * Added keyboard commands (`cmd+k`/`ctrl+k`) for quickly toggling search 16 | * You can still hit `Esc` to close it 17 | * Further improved load time for search on repeat visits 18 | * Changed search to now take up the entire screen at mobile screen widths 19 | * Added a cancel button for closing search in this view 20 | * Added separate pages for blog posts 21 | -------------------------------------------------------------------------------- /apps/web/content/changelog/2022-12-07.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Range in meters' 3 | slug: '2022-12-07' 4 | excerpt: 'Added calculator for Damage Falloff Start Distance' 5 | date: '2022-12-07T15:00:00-05:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | - **Added calculator for Damage Falloff Start Distance** 10 | - The range, in meters, at which the weapon should start experiencing damage drop-off 11 | - Added a hero image for the new Season, as the home page could use some color 12 | - Adjusted some of the logic with search, particularly as it pertains to showing recent searches and the various suggestion types 13 | - Fixed an issue with empty and loading states for search not displaying 14 | - Fixed an issue where focus would return to the start of the document upon tabbing out of the search bar 15 | - Improved search list navigation performance 16 | - Made the search bar background a bit darker 17 | - Adjusted maximum width of the site's main column so it doesn't get too wide on your giant gamer monitor 18 | - Adjusted styles for masterworked weapon icons 19 | - Performance improvements, bug fixes, etc -------------------------------------------------------------------------------- /apps/web/content/changelog/2022-12-18.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Weapon compare' 3 | slug: '2022-12-18' 4 | excerpt: 'Added weapon compare feature, enhanced trait support' 5 | date: '2022-12-18T15:00:00-05:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | - Added compare feature 11 | - Added a placeholder for REDACTED section 12 | - Added support for enhanced traits + their bonuses 13 | - Added an indicator for crafted weapons 14 | - Added a helper tooltip to the above, as well as ammo and energy icons 15 | - Added ability to remove recent searches 16 | - Added ability to copy a DIM wishlist item to your clipboard 17 | - Fixed some rounding errors 18 | - Actually fixed the Search loading state this time, I promise 19 | - Bug fixes, performance improvements, etc etc etc -------------------------------------------------------------------------------- /apps/web/content/changelog/2022-12-24.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Exotic Catalyst Support' 3 | slug: '2022-12-24' 4 | excerpt: 'Added support for exotic catalysts' 5 | date: '2022-12-24T15:00:00-05:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Additions 11 | 12 | - Added support for exotic catalysts 13 | -------------------------------------------------------------------------------- /apps/web/content/changelog/2022-12-30.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'New search filters and mobile updates' 3 | slug: '2022-12-30' 4 | excerpt: 'Added new search filters, mobile search improvements' 5 | date: '2022-12-30T12:00:00-05:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Additions 11 | 12 | - Added 3 new filters to Search 13 | - `season` 14 | - `adept` 15 | - `craftable` 16 | - Added "expand" option for Filter keyword suggestions 17 | - Added animation for Search dropdown when it changes height 18 | - Added footer with helper text to Search at desktop sizes 19 | - Added preview/placeholder text to Search input when option is highlighted 20 | - Added custom styles for scrollbars 21 | 22 | ## Modifications 23 | 24 | - Increased size of Search suggestion options at mobile screen sizes 25 | - Updated styles of Search for better visual distinction between elements on mobile 26 | - Removed native mobile autocorrect/autocomplete for Search input 27 | - Changed behavior of Filter keyword suggestions to not present options that were already selected and that can't be combined through boolean AND logic 28 | - Changed display of Filter value suggestions to include quotation marks for options with spaces 29 | - Changed search option headings to stick to top of scroll container 30 | - Updated styles of Settings Dropdown to more closely match Search 31 | - Moved some pixels 32 | 33 | ## Fixes 34 | 35 | - Fixed an issue due to static generation where changing between different screen sizes would result in mobile/desktop styles to get mashed together for Search 36 | - Fixed an issue where several movement-based animations were still playing when users had system settings to prefer reduced motion 37 | - Fixed an issue where the cmd/ctrl+k prompt was too translucent 38 | -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-01-01.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Small fix for FOUT' 3 | slug: '2023-01-01' 4 | excerpt: 'Site loading improvements' 5 | date: '2023-01-01T12:00:00-05:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Fixes 11 | 12 | - Fixed a flash of unstyled content on several of our pages 13 | - Improved webfont loading 14 | -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-01-05.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Weapon page overhaul' 3 | slug: '2023-01-05' 4 | excerpt: 'Weapon page overhaul' 5 | date: '2023-01-05T20:00:00-05:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Modifications 11 | 12 | - The styling and layout for the weapon page has completely been redone. 13 | - There's honestly too much here to list. 14 | 15 | ## Removals 16 | 17 | - Screenshot mode has temporarily been disabled due to the new layout. It will return. 18 | -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-01-06.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Bump perk info' 3 | slug: '2023-01-06' 4 | excerpt: 'Bump perk info, search improvements' 5 | date: '2023-01-06T16:58:00-05:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Modifications 11 | 12 | - Community Perk info has been bumped to the latest available. 13 | 14 | ## Fixes 15 | 16 | - Fixed an issue preventing search filter autocomplete suggestions from properly filtering down to only possible options 17 | - the filters should filter 18 | - Improved Search animation performance 19 | - Fixed some jank with the smoothness of transitions between search result hits 20 | - Improved search performance when typing 21 | - Fixed an issue with vertical spacing for the Roll Editor's stat grid on mobile 22 | -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-01-10.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Crafted perk level' 3 | slug: '2023-01-10' 4 | excerpt: 'Add level requirements for crafted weapon perks, compare fixes' 5 | date: '2023-01-10T11:51:00-05:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Additions 11 | 12 | - Added banner to Perk Tooltip with level requirements on crafted weapons 13 | - Added option to Compare items to pin to the left 14 | 15 | ## Modifications 16 | 17 | - Slightly changed styling of Compare header 18 | - Added extra padding to bottom of Compare horizontal scroll container 19 | 20 | ## Fixes 21 | 22 | - Fixed an issue with bonuses from enhanced traits + masterwork not applying on Compare 23 | - Applied a stopgap for an issue with crafted masterwork/enhanced intrinsic bonuses applying +3 rather than +2 24 | - This should functionally work as expected now 25 | - An update will come at some point in the future to actually base these bonuses off enhanced intrinsics rather than masterworks as we currently do 26 | -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-01-12.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Screenshot Mode lives' 3 | slug: '2023-01-12' 4 | excerpt: 'Screenshot Mode returns, continued Weapon Page enhancements' 5 | date: '2023-01-12T23:08:00-05:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | Hi! Going to start structuring these slightly differently to be scoped to the sections where changes/additions/fixes occurred. 11 | 12 | ## Weapon Page/Roll Editor 13 | 14 | - Added "back" Screenshot Mode 15 | - It pops up in a modal now, it's not interactive, it works landscape at mobile, no, you cannot currently download it as an image 16 | - Please enjoy 17 | - Added button to copy page permalink to clipboard 18 | - Moved Compare button to header 19 | - Changed the layout of the Roll Editor a bit, moved weapon metadata into a details pane to the right at desktop 20 | - Started refining some components and animations 21 | 22 | ## Compare 23 | 24 | - Made the header text smaller 25 | -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-01-17.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Add Revision Zero to crafted' 3 | slug: '2023-01-17' 4 | excerpt: 'Add Revision Zero to crafted weapon list' 5 | date: '2023-01-17T16:08:00-05:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Data 11 | 12 | - Added Revision Zero to crafted weapons list 13 | 14 | ## Weapon Page 15 | 16 | - Fixed an issue with the item tier banner in the Details Panel screenshot overlapping the site header 17 | -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-01-21.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Stat bug fixes, Revision Zero Intrinsic' 3 | slug: '2023-01-21' 4 | excerpt: 'Included stats from Hunters Trace IV for Revision Zero, stat bar bug fixes' 5 | date: '2023-01-21T14:44:00-05:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Data 11 | 12 | - Revision Zero 13 | - Automatically included bonus stats from Hunter's Trace IV until I have the time to support crafted Intrinsic selection. 14 | - Added Damage Falloff data 15 | - The Manticore 16 | - Added Damage Falloff data 17 | - Long Arm 18 | - Added Damage Falloff data 19 | - Machine Guns 20 | - Added Damage Falloff data 21 | 22 | ## Weapon Page 23 | 24 | - Stats 25 | - Simplified the stat bar display. This is mainly because it's been a major cause of headaches trying to fit in more complex combinations of positive + negative values into that space, and I'd rather spend my time on other things right now. 26 | - No longer shows the Masterwork or Mod bonus as separate from the red/green delta bar. 27 | - We now will only show the red/green delta bars. 28 | - The stat number will still show as gold or blue depending on if a Masterwork or Mod is affecting that stat. 29 | - Fixed an issue with delta value for Magazine not showing the right number. 30 | - Fixed an issue with stat values not updating properly on Safari. 31 | - Changed the way animations for stat bar growth are handled. 32 | - Screenshot Mode 33 | - Fixed an issue with enhanced traits not displaying 34 | - Adjusted text drop shadow 35 | -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-02-09.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Weapon sources, new search filters (source, foundry, slot)' 3 | slug: '2023-02-09' 4 | excerpt: 'Weapon sources, new search filters (source, foundry, slot)' 5 | date: '2023-02-09T18:21:00-05:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Data 11 | 12 | - Updated Range data for: 13 | - SMGs 14 | - Pulse Rifles 15 | 16 | ## Weapon Page 17 | 18 | - Added display for weapon sources 19 | 20 | ## Compare 21 | 22 | - Fixed an issue with ADS Damage Falloff for Fusion Rifles being calculated incorrectly on Compare 23 | 24 | ## Search 25 | 26 | - Added filters for `source`, `foundry`, and `slot` 27 | 28 | -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-02-13.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Bump Community Perk info, bug fixes' 3 | slug: '2023-02-13' 4 | excerpt: 'Bump Community Perk info, bug fixes' 5 | date: '2023-02-13T16:45:00-05:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Data 11 | 12 | - Updated to latest Community Perk info from [Clarity](https://www.d2clarity.com) 13 | 14 | ## Weapon Page 15 | 16 | - Fixed an issue with numbers within Community Perk info for Elemental Capacitor sometimes concatenating themselves repeatedly within the description on click 17 | - Fixed an issue with hover states for panel tabs overflowing 18 | 19 | -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-02-28.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Add conditional perk effect activation, new suite of calculators' 3 | slug: '2023-02-28' 4 | excerpt: 'Add conditional perk effect activation, new suite of calculators' 5 | date: '2023-02-28T12:30:00-05:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Weapon Page 11 | 12 | - Added the ability to select and activate conditional perk effects (such as Surplus, Rampage, Slideshot, etc.). 13 | - These will affect the stats displayed in both the Basic Stat section as well as our new advanced stat calculator sections 14 | - Added advanced stat calculators and data for 15 | - PVP Weapon Damage Profile 16 | - Crit, Body damage, crit multiplier, RPM 17 | - TTK 18 | - Optimal and Body Shot TTK, shows Resilience breakpoint bands 19 | - Range/Damage Falloff 20 | - Still shows Hip-Fire and ADS Damage falloff start 21 | - Added chart for showing damage vs distance, which takes in both the current damage profile as well as your current range falloff start/end 22 | - Handling 23 | - Ready, ADS, Stow times 24 | - Ammo and Reload 25 | - More accurate calculations for Magazine 26 | - Added Reserves and Reload Time 27 | - Moved items from weapon dropdown to a toolbar (randomize, reset, enhance) 28 | - Added ability to select Enhanced Intrinsics rather than Masterworks for crafted weapons 29 | 30 | ## Compare 31 | 32 | - Added support for new stat calculations to Compare 33 | - Added the ability for Compare sessions to persist between page loads and sync between tabs 34 | - Styling improvements 35 | - Changed the animation for the floating Compare link 36 | 37 | ## Home Page 38 | 39 | - Updated styles for Lightfall -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-03-03.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Fixes for Perpetual Motion, Elemental Capacitor (Strand), Adagio, Pulse Monitor' 3 | slug: '2023-03-03' 4 | excerpt: 'Fixes for Perpetual Motion, Elemental Capacitor (Strand), Adagio, Pulse Monitor' 5 | date: '2023-03-03T19:00:00-05:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Calculator 11 | 12 | - Corrects active stat bumps for: 13 | - Elemental Capacitor (Strand) 14 | - Perpetual Motion 15 | - Fixes an issue with Pulse Monitor's Handling stat bump not displaying 16 | - Fixes an issue with Adagio applying Range stat bump when inactive -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-03-08.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Adds Keep Away support, updates Frenzy stats' 3 | slug: '2023-03-08' 4 | excerpt: 'Adds Keep Away support, updates Frenzy stats' 5 | date: '2023-03-08T19:00:00-05:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Calculator 11 | 12 | - Adds support for Keep Away 13 | - Updates Frenzy stat values to newest collected data 14 | - Undocumented change from 2 days ago -- fixed an issue with Ravenous Beast's damage multipliers -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-03-09.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Adds Field Tested support, additional calculator fixes' 3 | slug: '2023-03-09' 4 | excerpt: 'Adds Field Tested support, additional calculator fixes' 5 | date: '2023-03-09T15:00:00-05:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Calculator 11 | 12 | - Adds support for Field Tested 13 | - Fixes an issue with Sleight of Hand 14 | - Fixes an issue with formulas not being found for Adaptive Glaives -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-03-16.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Performance improvements, RoN craftables, bug fixes' 3 | slug: '2023-03-16' 4 | excerpt: 'Performance improvements, RoN craftables, bug fixes' 5 | date: '2023-03-16T15:00:00-05:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Calculator 11 | 12 | - Fixed an issue where Overflow would not increase Mag size when active 13 | - Undocumented changes from 2 days ago: 14 | - Fixed an issue with Lightweight Sidearm RPM being incorrect 15 | - Fixed an issue with Threat Detector not applying to ADS 16 | 17 | ## Weapon Page 18 | 19 | - General performance improvements when changing between selections 20 | - Fixed an issue where Magazine stat in Basic Stat section would cap at 100 21 | 22 | ## Data 23 | 24 | - Added RoN weapons as craftable 25 | - Added RoN as source to Search -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-03-21.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Add Kickstart, calculator fixes' 3 | slug: '2023-03-21' 4 | excerpt: 'Add Kickstart, calculator fixes' 5 | date: '2023-03-21T14:00:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Calculator 11 | 12 | - Adds Kickstart perk support 13 | - Fixed an issue where Rangefinder wouldn't scale properly on Fusion rifles 14 | - Fixed an issue where Successful Warmup wouldn't apply 15 | - Fixed an issue where Charge Time and Draw Time masterworks wouldn't apply bonuses for their stats in the Damage Profile section on Fusion Rifles or Bows respectively 16 | 17 | ## Roll Editor 18 | 19 | - Added clarification to Damage Profile data section that it is PVP-specific 20 | - PVE Damage will come in the near future! -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-03-22.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Adds settings for Screenshot Mode, and styling tweaks' 3 | slug: '2023-03-22' 4 | excerpt: 'Adds settings for Screenshot Mode, and styling tweaks' 5 | date: '2023-03-22T22:13:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Screenshot Mode 11 | 12 | - Styles have been updated to match the UI changes from Lightfall 13 | - Added a Settings popover within Screenshot Mode. You can now configure: 14 | - Displayed Power Level 15 | - Showing all Origin Traits, Activity Trackers, Infusion Socket, and Lock Icon 16 | - Damage Falloff, Handling Times, Reload Time display 17 | 18 | 19 | ## Roll Editor 20 | 21 | - Fixed an issue where the base Intrinsic for Revision Zero and Vexcalibur would cause a client-side exception when selected 22 | - Fixed an issue where visual stat values could go below 0 23 | -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-03-27.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Added option to hide perk effect badges, fixes for Compare' 3 | slug: '2023-03-27' 4 | excerpt: 'Added option to hide perk effect badges, fixes for Compare' 5 | date: '2023-03-27T18:00:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Roll Editor 11 | 12 | - Added an option to hide perk effect badges 13 | 14 | ## Compare 15 | 16 | - Fixed an issue that would prevent adding a weapon roll to Compare when it had the same perks as a previously added roll, but with different perk effect values 17 | - Added perk effect badge display to the column header 18 | - **Note:** If you had a Compare session active from before these changes, you'll need to re-add those rolls to be able to see the badges 19 | 20 | -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-03-29.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Flinch Resist calculations, Armor Mod support' 3 | slug: '2023-03-29' 4 | excerpt: 'Flinch Resist calculations, Armor Mod support' 5 | date: '2023-03-29T20:32:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Roll Editor 11 | 12 | - Adds Flinch Resist calculations for all weapon families that support them 13 | - Thank you @harm from the Discord for adding it to the calculator! 14 | - Adds Resilience field to new Flinch Resist section 15 | - Adds Armor Mod section and support for Targeting, Dexterity, Loader, Unflinching, Reserves, and Weapon Surge armor mods 16 | 17 | ## Calculator 18 | 19 | - Fixed an issue with Drang and Traveler's Chosen being given the wrong Damage Profile 20 | - Fixed an issue with Bow reloads working opposite as expected 21 | 22 | ## Compare 23 | 24 | - Adds Flinch Resist display 25 | -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-03-30.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Just a couple of bug fixes' 3 | slug: '2023-03-30' 4 | excerpt: 'Just a couple of bug fixes' 5 | date: '2023-03-30T20:10:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Roll Editor 11 | 12 | - Some of the new crafted weapons included extraneous Enhanced Intrinsics from the API for stats that don't exist on the weapon? These have been filtered out now. 13 | - Fixed an issue where the select menu for Resilience in the Flinch Resist section could lay out underneath the page footer 14 | 15 | ## Calculator 16 | 17 | - Fixed an issue where Charge Time and Draw Time Enhanced Intrinsics would not apply for advanced stats 18 | - Fixed an issue where the Reload Speed stat bonus for Loader mods wouldn't display 19 | -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-04-18.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'PWA (Add to Home Screen) Support!' 3 | slug: '2023-04-18' 4 | excerpt: 'PWA (Add to Home Screen) Support!' 5 | date: '2023-04-18T20:10:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## General 11 | 12 | - You can now download Foundry as a Progressive Web App using your supported mobile or desktop browsers! 13 | - I think I added a toast that should pop up when updates are available when you've downloaded the app but we'll see -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-04-19.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Adds timestamps for weapon formulas, curated rolls' 3 | slug: '2023-04-19' 4 | excerpt: 'Adds timestamps for weapon formulas, curated rolls' 5 | date: '2023-04-19T13:45:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Weapon Page 11 | 12 | - At the bottom of the page, added a section that displays when our weapon formulas were last updated. 13 | - These are the formulas specific to whatever weapon you're currently viewing, so you should be able to know if something's up to date after a game patch went out. 14 | - Adds support for curated rolls. -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-04-29.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Adds Documentation Center, new navigation menu' 3 | slug: '2023-04-29' 4 | excerpt: 'Adds Documentation Center, new navigation menu' 5 | date: '2023-04-29T15:25:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## General 11 | 12 | - Added a navigation menu to the top nav 13 | - More stuff to arrive there soon! 14 | - Added a new Help & Documentation center 15 | - You can contribute to these docs on our [GitHub](https://github.com/d2foundry/hot-metal) -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-05-08.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Perk updates, RoN Adept enhancing, fixes' 3 | slug: '2023-05-08' 4 | excerpt: 'Perk updates, RoN Adept enhancing, fixes' 5 | date: '2023-05-08T12:30:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Roll Editor 11 | 12 | - Adds support for Harmonic Resonance, Memento Mori, Field Tested 13 | - Updates Handling numbers for Threat Detector 14 | - Fixed an issue with Level 1 Masterworks mysteriously showing up 15 | - Fixed an issue where Ambush would not increase Damage Falloff Start 16 | - Adds support for enhancing Adept Root of Nightmares weapons -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-05-17.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Couple small fixes, hide retired perks option' 3 | slug: '2023-05-17' 4 | excerpt: 'Couple small fixes, hide retired perks option' 5 | date: '2023-05-17T12:30:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Roll Editor 11 | 12 | - Added an option in the "..." menu in the Perk Section to hide retired perks 13 | - Added support for Enhanced Intrinsics on Adept RoN weapons 14 | - Fixed an issue where some retired perks would show the enhanced perk treatment when "Enhance" is active 15 | 16 | ## Screenshot Mode 17 | 18 | - Added the Masterwork gold bar in stat display -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-05-22.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'PvE Damage, Compare refresh, perk multi-select' 3 | slug: '2023-05-22' 4 | excerpt: 'PvE Damage, Compare refresh, perk multi-select' 5 | date: '2023-05-22T21:30:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Roll Editor 11 | 12 | - Added an option to toggle between PvP and PvE values 13 | - TTK will hide when PvE is selected 14 | - Added a popover for changing Encounter data for PvE 15 | - Some basic activity presets have been added -- more to come 16 | - Added an option to toggle between "Single select" and "Multi select" for perks. 17 | - If you multi select perks, a max of 3 per column will now show in Screenshot Mode 18 | - That's all you can really do with it currently more applications for this to come soon! 19 | 20 | ## Compare 21 | 22 | - Changed up the UI a bit to work with the design system and to make scrolling a bit more natural on all screen sizes 23 | - Added a back button to return to the previous page 24 | - Changed table sections to be collapsible 25 | - When hovering the weapon column header, added a button to "Collapse" the header and have the weapon cards take up less space 26 | - This should hopefully make it more usable on Mobile landscape 27 | -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-05-23.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Season of the Deep update' 3 | slug: '2023-05-23' 4 | excerpt: 'Season of the Deep update' 5 | date: '2023-05-23T20:30:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Roll Editor 11 | 12 | - Weapon Sandbox changes should be live (750 SMGs, PvE Sniper Buff, etc) 13 | - Updated exotic armor values with new changes 14 | - Added formulas for seasonal Exotic 15 | - General support for new stuff in the season 16 | - Fixed a couple bugs with PvE damage and perk multi select 17 | -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-05-26.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Enhanced Bipod fix' 3 | slug: '2023-05-26' 4 | excerpt: 'Enhanced Bipod fix' 5 | date: '2023-05-26T18:30:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Roll Editor 11 | 12 | - Fixed an issue where Enhanced Bipod would combine the negative bonuses from both the normal and enhanced version due to both being provided from the Bungie API 13 | - Fixed an issue where the community research sections would have too much spacing between line breaks 14 | - Fixed an issue where the recoil direction display in Screenshot Mode wouldn't scale correctly at smaller screen sizes 15 | - Changed the roll toolbar to wrap at smaller screen sizes since the horizontal scroll wasn't super clear -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-05-29.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Magazine and Bug Fixes' 3 | slug: '2023-05-29' 4 | excerpt: 'Magazine and Bug Fixes' 5 | date: '2023-05-29T14:30:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Roll Editor 11 | - Updated Magazine formulas for the following weapon subfamilies to be more accurate: 12 | - Adaptive/Omolon Adaptive Burst Sidearms 13 | - Aggressive Burst Sidearms 14 | - Aggressive Burst Pulse Rifles 15 | - Vigilance Wing 16 | - Fixed an issue where the Flinch Resist section wouldn't get opened by the "Expand all" Option 17 | - Fixed links to some icons that broke with the latest Manifest 18 | - Fixed an issue that would cause text in Community Research section to not wrap correctly -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-05-30.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Add Collective Action, Rapid-Fire Glaive, other fixes' 3 | slug: '2023-05-30' 4 | excerpt: 'Add Collective Action, Rapid-Fire Glaive, other fixes' 5 | date: '2023-05-30T21:30:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Roll Editor 11 | 12 | - Adds Collective Action 13 | - Adds Rapid-Fire Glaive support 14 | - Adds No Backup Plans Damage changes 15 | - Adds Triton Vice 16 | - Updates data on Loader Mods, Impulse Amplifier, and Dragon Shadow 17 | - Fixes an issue where stow wasn't capping correctly 18 | 19 | ## Compare 20 | 21 | - Fixes an issue where Charge/Draw Time delta colors weren't flipped -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-06-08.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Adds Preferences menu' 3 | slug: '2023-06-08' 4 | excerpt: 'Adds Preferences menu' 5 | date: '2023-06-08T12:30:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## General 11 | 12 | - Adds a Preferences menu, accessible from the hamburger nav in the top right 13 | - Adds option for defaulting Roll Editor to PVE 14 | - Adds option for showing thousands separator 15 | - Adds options for changing character used for thousands + decimal separators 16 | - More settings to come soon! -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-06-11.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Fixes styles for Dark Reader users, performance improvements' 3 | slug: '2023-06-11' 4 | excerpt: 'Fixes styles for Dark Reader users, performance improvements' 5 | date: '2023-06-11T13:00:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## General 11 | 12 | - Should now disable Dark Reader on the site by default for folks that use that extension, as we're currently dark mode only and their styles cause a bunch of visual errors. 13 | - Updated the templating of some of our Open Graph metadata 14 | 15 | ## Roll Editor 16 | 17 | - Improves performance of advanced stat rendering 18 | - Improves page loading performance 19 | - Hides certian accordion sections at a weapon family level when they're not needed 20 | - Tooltips for advanced stats should now respect user settings for thousands and decimal separators 21 | - Fixed an issue where Point of the Stag was missing its Masterwork -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-06-12.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Adds appearance preferences for contrast level' 3 | slug: '2023-06-12' 4 | excerpt: 'Adds appearance preferences for contrast level' 5 | date: '2023-06-12T15:30:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## General 11 | 12 | - You can now choose from 3 theme contrast levels under Preferences > Appearance 13 | - "Soft" is a lower contrast mode, with a lighter gray background and text 14 | - "Medium" is the default theme 15 | - "Hard" is most similar to our older theme, a black background with off-white text. Good if you prefer a more contrast-y experience or are using an OLED/AMOLED screen 16 | - More improvemnts/refinements to these will come in the future, but they should be ready for use! 17 | 18 | ## Roll Editor 19 | 20 | - Fixed urls for a few buff icons that broke with the Season update -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-06-15.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Collective Action update, bug fixes' 3 | slug: '2023-06-15' 4 | excerpt: 'Collective Action update, bug fixes' 5 | date: '2023-06-15T13:18:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Roll Editor 11 | 12 | - Updates Collective Action damage values following Bungie's nerf 13 | - Adds Trench Barrel support 14 | - Fixes an issue where Lightweight Bows' PvE damage bonus was unintentionally left at `6.9x` 15 | - Woops! -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-06-17.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Adds Bipod support, bug fixes' 3 | slug: '2023-06-17' 4 | excerpt: 'Adds Bipod support, bug fixes' 5 | date: '2023-06-17T16:30:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Roll Editor 11 | 12 | - Adds support for the perk Bipod 13 | - Fixes an issue with Trinity Ghoul's TTK not simulating correctly 14 | - Fixes an issue with single mag weapon body TTK not simulating correctly 15 | - Fixes an issue with the draw time multiplier for Archer's Tempo on Leviathan's Breath 16 | - Fixes an issue with Sturm's damage buff being flipped for PVE and PVP 17 | - Fixes Fourth Horseman's catalyst mag buff and its Broadside trait 18 | - Fixes an issue with Lucky Pants' damage stacking in PvE 19 | 20 | ## Compare 21 | 22 | - Fixes an issue preventing adding multiple rolls of the same weapon with different exotic armor configurations to Compare -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-06-24.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Bug fixes for Charge Time MW/Intrinsics' 3 | slug: '2023-06-24' 4 | excerpt: 'Bug fixes for Charge Time MW/Intrinsics' 5 | date: '2023-06-24T11:30:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Roll Editor 11 | 12 | - Fixes an issue where Charge Time Masterworks, Intrinsics, and Adept Mods would not affect the Charge Time stat in Damage Profile 13 | - Fixes an issue where Ager's Scepter Catalyst and Intrinsic were doubling certain effects -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-06-28.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Search style tweaks' 3 | slug: '2023-06-28' 4 | excerpt: 'Search style tweaks' 5 | date: '2023-06-28T13:30:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Search 11 | 12 | - Moves Search into a Dialog to create a more "focused" view. 13 | - Both Search and the Weapon pages already have a lot going on visually, so this helps give a bit more space for Search to breathe. 14 | - Additionally, this resolves an issue with the Search menu where if it was the last element focused, you leave the window, and then click back into the window to refocus -- it would reopen and could result in accidentally clicking on one of the search results and going to that page. Now it'll stay open if you leave the page, and also won't randomly re-open on window focus 15 | - Refined some of the styles and animations for Search to better fit with our design system. 16 | 17 | ## General 18 | 19 | - Adds a custom scroll area to the site's layout. 20 | - This looks nicer, and also resolves an issue with the layout shifting when certain modal elements (such as our Select, Dialog, etc) removed the scroll bar. 21 | 22 | ## Roll Editor 23 | 24 | - Fixes a 1px layout shift on switching between Single/Multi Select 25 | - Fixes an issue with Bipod's reserve bonus not applying 26 | 27 | ## Documentation Center 28 | 29 | - Fixes an issue with the Table of Contents not scrolling to the section 30 | - Hides the redundant top level link in the Table of Contents 31 | - Adds Forward/Back bottom navigation buttons to child doc pages -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-07-10.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Graviton Lance update, data corrections, bug fixes' 3 | slug: '2023-07-10' 4 | excerpt: 'Graviton Lance update, data corrections, bug fixes' 5 | date: '2023-07-10T13:30:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | 11 | ## Roll Editor 12 | 13 | - Graviton Lance's data has been updated to match Bungie's tuning from last patch 14 | - Added proper support for Recombination 15 | - Updated Trace Rifle flinch resistance to match Bungie's tuning 16 | - Added the `40%` damage buff vs. minors for Exotic Primaries 17 | - Fixed an issue where Markov Chain was using PVP damage % in PVE 18 | - Added Enhanced Keep Away's additional stat bonuses 19 | - Fixed an issue where Enhanced Lasting Impression had the incorrect Blast Radius value -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-07-11.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Adds support for The Navigator' 3 | slug: '2023-07-11' 4 | excerpt: 'Adds support for The Navigator' 5 | date: '2023-07-11T12:30:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | 11 | ## Roll Editor 12 | 13 | - Adds support for The Navigator 14 | - Fixes an issue with Graviton Lance's mag size 15 | - Adds support for Bad Juju's String of Curses 16 | - Adds Vorpal Weapon to Graviton Lance's Catalyst 17 | - Note that right now there's won't be mention of it in the tooltip 18 | - Adds the `+25` Airborne Effectiveness bonus to Precision Frame Hand Cannons. 19 | - Corrects the damage formula for Lorentz Driver and Arbalest 20 | - Fixes a floating point error with 140 HC Damage -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-07-17.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Bug fixes, etc' 3 | slug: '2023-07-17' 4 | excerpt: 'Bug fixes, etc' 5 | date: '2023-07-17T16:35:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | 11 | ## Roll Editor 12 | 13 | - Corrects the damage + TTK for Graviton Lance 14 | - Corrects Drang's mag size scaling 15 | - Separates internal Handling stats for ready/ads/stow, so Quickdraw will now correctly indicate only ready is affected 16 | - Fixed an issue with Resevoir Burst having a toggle activation despite currently being always active 17 | - Fixed an issue with Sanguine Alchemy giving buff to kinetic weapons 18 | - Updated data for the scalar in Accelerated Coils 19 | - Updated data for Enhanced Trench Barrel -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-07-19.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Controlled Burst support, Graviton Lance PvE update, Target Lock PvP nerf' 3 | slug: '2023-07-19' 4 | excerpt: 'Controlled Burst support, Graviton Lance PvE buff, Target Lock PvP nerf' 5 | date: '2023-07-19T16:45:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | 11 | ## Roll Editor 12 | 13 | - Updates Graviton Lance's PvE damage following its buff 14 | - Updates data for Target Lock following its PvP nerf 15 | - Fixes an issue with Envious Assassin's Magazine bonus per stack 16 | - Adds support for Controlled Burst 17 | - Hid the weapon page for Y1 Legend of Acrius, it's broken anyway -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-07-20.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Add weapon type + season display to Search, Unsated Hunger, Discord, Invisible Hand support' 3 | slug: '2023-07-20' 4 | excerpt: 'Add weapon type + season display to Search, Unsated Hunger, Discord, Invisible Hand support' 5 | date: '2023-07-20T16:45:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Search 11 | 12 | - Now filters out retired versions of weapons 13 | - Added a display for weapon types and season to result items 14 | 15 | ## Roll Editor 16 | 17 | - Adds support for Unsated Hunger, Discord, and Invisible Hand 18 | - Corrects data on Revision Zero's 2-burst RPM -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-07-23.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Phase Mag support, bug fixes' 3 | slug: '2023-07-23' 4 | excerpt: 'Phase Mag support, bug fixes' 5 | date: '2023-07-23T15:45:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Roll Editor 11 | 12 | - Adds support for Phase Mag 13 | - Fixes an issue with Glaive's Shield Time delta % indicator having flipped logic -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-08-03.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Support for Merciless, Vex Mythoclast alternate fire, The Queensbreaker' 3 | slug: '2023-08-03' 4 | excerpt: 'Support for Merciless, Vex Mythoclast alternate fire, The Queensbreaker' 5 | date: '2023-08-03T13:36:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Roll Editor 11 | 12 | - Adds support for Merciless' Impetus trait 13 | - Adds support for Vex Mythoclast's alternate fire mode 14 | - Adds support for The Queensbreaker's Marksman Sights and Combat Sights -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-08-18.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Changes Credits page to About & Contributors' 3 | slug: '2023-08-18' 4 | excerpt: 'Changes Credits page to About & Contributors' 5 | date: '2023-08-18T19:05:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## General 11 | 12 | - Changed Credits page to be About & Contributors. 13 | - Added our new team members! 14 | - Added some info about the site 15 | - Added About & Contributors to the Hamburger Menu 16 | - Reticulated some splines -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-08-22.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Season 22 Preliminary Update' 3 | slug: '2023-08-22' 4 | excerpt: 'Season 22 Preliminary Update' 5 | date: '2023-08-22T11:32:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Roll Editor 11 | 12 | - S22 Changes: 13 | - ADS Damage Falloff has been updated per Bungie's values 14 | - Changes Hunter Trace, Memento Mori, Rangefinder 15 | - Touch of Malice PvE buff 16 | - Bipod Damage Buff 17 | - Le Monarque Damage Profile Change 18 | - Hand Cannon PvE buff, Aggressive Sidearm Damage 19 | - Vex Mythoclast changed to 360RPM 20 | - Fixes an issue with Legend of Acrius' Catalyst not givving Trench Barrel 21 | - Corrects Vex Alt mode charge time 22 | - Corrects Wish-Ender damage profile 23 | - Updates data for Trace Rifles 24 | - Fixes an issue with Triton Vice not working. -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-08-24.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Adds Cassoid and Nadir foundry, bug fixes' 3 | slug: '2023-08-24' 4 | excerpt: 'Adds Cassoid and Nadir foundry, bug fixes' 5 | date: '2023-08-24T13:40:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Search 11 | 12 | - Reenabled retired versions of guns showing in search now that you can tell which is which :-) 13 | - Now shows which year Event weapons come from, in addition to Season numbers for non-event weapons 14 | - Adds Cassoid and Nadir to `foundry:` search filter -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-09-05.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Additional Season 22 changes, perk support, bug fixes' 3 | slug: '2023-09-05' 4 | excerpt: 'Additional Season 22 changes, perk support, bug fixes' 5 | date: '2023-09-05T13:05:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Search 11 | 12 | - fix: Red War weapons now have correct season tag and no longer show under `season: drifter` 13 | 14 | ## Roll Editor 15 | 16 | - fix: now shows "__ formula not implemented for this weapon" in the timestamps rather than the unix epoch 17 | - fix: Chaperone and Duality didn't have ADS mult 18 | - data: Adept Charge Time no longer affects Fusions 19 | - adds support for the traits: 20 | - Precision Instrument 21 | - Loose Change 22 | - High Ground 23 | - Enlightened Action 24 | - Head Rush 25 | - handling value is unknown at time of implementing 26 | - adds support for the exotic armor: 27 | - Knucklehead Radar 28 | - Foetracers' rework 29 | - fix: Precision Instrument 30 | - bungie: dual speed receiver doesn't have ads mult 31 | - bungie: hand cannon reload formula 32 | -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-09-06.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Adds Icefall Mantle support, bug fixes' 3 | slug: '2023-09-06' 4 | excerpt: 'Adds Icefall Mantle support, bug fixes' 5 | date: '2023-09-06T11:49:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Roll Editor 11 | 12 | - adds support for the exotic armor: 13 | - Icefall Mantle x4 Surge Buff 14 | - fixes an issue with TTK simulations causing perks like Target Lock and Precision Instrument to result in slightly less than optimal Optimal TTK. 15 | -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-09-11.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Sword Logic support, bug fixes' 3 | slug: '2023-09-11' 4 | excerpt: 'Sword Logic support, bug fixes' 5 | date: '2023-09-11T19:30:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Roll Editor 11 | 12 | - adds: Sword Logic perk support 13 | - Fixes an issue with perk option values not carrying over when toggling on and off enhanced 14 | - Fixes an issue with abilities, armor, etc getting wiped when toggling on and off enhanced -------------------------------------------------------------------------------- /apps/web/content/changelog/2023-09-13.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Warden's Law support, Sword Logic Fixes 3 | slug: '2023-09-13' 4 | excerpt: Warden's Law support, Sword Logic Fixes 5 | date: '2023-09-13T21:48:00-04:00' 6 | author: 7 | name: gothfemme 8 | --- 9 | 10 | ## Roll Editor 11 | 12 | - Adjusts Sword Logic PVP data after new findings 13 | - Adds support for Warden's Law -------------------------------------------------------------------------------- /apps/web/content/design/components/avatar.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Avatar 3 | description: An image element with a fallback for representing the user. 4 | --- 5 | 6 | 7 | 8 | 12 | GF 13 | 14 | 15 | 16 | ## Usage 17 | 18 | ```tsx 19 | import { Avatar, AvatarImage, AvatarFallback } from "@foundry-ui/Avatar"; 20 | ``` 21 | 22 | ```tsx 23 | 24 | 25 | GF 26 | 27 | ``` 28 | 29 | ## Examples 30 | 31 | ### Fallback 32 | 33 | 34 | 35 | GF 36 | 37 | 38 | -------------------------------------------------------------------------------- /apps/web/content/design/components/badge.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Badge 3 | description: Displays a badge. 4 | --- 5 | 6 | 7 | Badge 8 | 9 | 10 | ## Usage 11 | 12 | ```tsx 13 | import { Badge } from "@foundry-ui/Badge"; 14 | ``` 15 | 16 | ```tsx 17 | Badge 18 | ``` 19 | 20 | ## Examples 21 | 22 | ### Default 23 | 24 | 25 | New 26 | 27 | 28 | ### Patrons 29 | 30 | 31 | Supporter 32 | Pro 33 | VIP 34 | 35 | 36 | -------------------------------------------------------------------------------- /apps/web/content/design/components/button.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Button 3 | description: Displays a button input. 4 | --- 5 | 6 | 7 | 8 | 9 | 10 | ## Usage 11 | 12 | ```tsx 13 | import { Button } from "@foundry-ui/Button"; 14 | ``` 15 | 16 | ```tsx 17 | 18 | ``` 19 | 20 | ## Examples 21 | 22 | ### Primary 23 | 24 | 25 | 26 | 27 | 28 | ### Secondary 29 | 30 | 31 | 32 | 33 | 34 | ### Outline 35 | 36 | 37 | 38 | 39 | 40 | ### Ghost 41 | 42 | 43 | 44 | 45 | 46 | ### Destructive 47 | 48 | 49 | 50 | 51 | 52 | ### With Icon 53 | 54 | 55 | 59 | 60 | -------------------------------------------------------------------------------- /apps/web/content/design/components/card.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Card 3 | description: Displays a card. 4 | --- 5 | 6 | 7 | 8 | 9 | Card 10 | Hello! This is a card. 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | ## Usage 31 | 32 | ```tsx 33 | import { 34 | Card, 35 | CardHeader, 36 | CardDescription, 37 | CardTitle, 38 | CardContent, 39 | CardFooter, 40 | } from "@foundry/ui/components"; 41 | ``` 42 | 43 | ```tsx 44 | 45 | 46 | 47 | Card 48 | Hello! This is a card. 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | ``` 67 | -------------------------------------------------------------------------------- /apps/web/content/design/components/checkbox.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Checkbox 3 | description: A control that allows the user to toggle between checked and not checked. 4 | --- 5 | 6 | 7 |
10 | 11 | 12 | 13 |
14 |
15 | 16 | ## Usage 17 | 18 | ```tsx 19 | import { Checkbox } from "@foundry-ui/Checkbox"; 20 | ``` 21 | 22 | ```tsx 23 | 24 | ``` 25 | 26 | ## Examples 27 | 28 | ### Disabled 29 | 30 | 31 |
34 | 35 | 36 |
37 |
38 | -------------------------------------------------------------------------------- /apps/web/content/design/components/dropdown.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Dropdown Menu 3 | description: Displays a menu to the user—such as a set of actions or functions—triggered by a button. 4 | --- 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | Profile 13 | Billing 14 | Team 15 | Subscription 16 | 17 | 18 | 19 | 20 | ## Usage 21 | 22 | ```tsx 23 | import { 24 | DropdownMenu, 25 | DropdownMenuContent, 26 | DropdownMenuItem, 27 | DropdownMenuTrigger, 28 | } from "@foundry-ui/DropdownMenu"; 29 | ``` 30 | 31 | ```tsx 32 | 33 | Open 34 | 35 | Profile 36 | Billing 37 | Team 38 | Subscription 39 | 40 | 41 | ``` 42 | -------------------------------------------------------------------------------- /apps/web/content/design/components/input.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Input 3 | description: Displays a form input field. 4 | --- 5 | 6 | 7 |
14 | 15 |
16 |
17 | 18 | ## Usage 19 | 20 | ```tsx 21 | import { Input } from "@foundry-ui/Input"; 22 | ``` 23 | 24 | ```tsx 25 | 26 | ``` 27 | 28 | ## Examples 29 | 30 | ### Default 31 | 32 | 33 |
40 | 41 |
42 |
43 | 44 | ### Disabled 45 | 46 | 47 |
54 | 55 |
56 |
57 | 58 | ### Sizes 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | ### With label 69 | 70 | 71 |
78 | 79 | 80 |
81 |
82 | -------------------------------------------------------------------------------- /apps/web/content/design/components/kbd.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Keyboard Input 3 | description: Display keyboard input that triggers an action. 4 | --- 5 | 6 | 7 |
8 | 9 | K 10 |
11 |
12 | 13 | ## Usage 14 | 15 | ```tsx 16 | import { KBD } from "@foundry-ui/KBD"; 17 | ``` 18 | 19 | ```tsx 20 | <> 21 | 22 | K 23 | 24 | ``` 25 | 26 | ## Examples 27 | 28 | ### Modifiers 29 | 30 | 31 |
32 | 33 | 34 | 35 | 36 |
37 |
38 | 39 | ### Combination 40 | 41 | 42 |
43 | 44 | P 45 | 46 |
47 |
48 | 49 | ### Small 50 | 51 | 52 |
53 | / 54 |
55 |
56 | -------------------------------------------------------------------------------- /apps/web/content/design/components/label.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Label 3 | description: Renders an accessible label associated with controls. 4 | --- 5 | 6 | 7 |
14 | 15 | 16 |
17 |
18 | 19 | ## Usage 20 | 21 | ```tsx 22 | import { Label } from "@foundry-ui/Label"; 23 | ``` 24 | 25 | ```tsx 26 | 27 | ``` 28 | -------------------------------------------------------------------------------- /apps/web/content/design/components/message.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Message 3 | description: Display structured text that requires attention or provides additional information. 4 | --- 5 | 6 | 7 | 11 | 12 | 13 | ## Usage 14 | 15 | ```tsx 16 | import { Message } from "@foundry-ui/Message"; 17 | ``` 18 | 19 | ```tsx 20 | 24 | ``` 25 | -------------------------------------------------------------------------------- /apps/web/content/design/components/note.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Note 3 | description: Display succinct text that requires attention or provides additional information. 4 | --- 5 | 6 | 7 | I'm a note. 8 | 9 | 10 | ## Usage 11 | 12 | ```tsx 13 | import { Note } from "@foundry-ui/Note"; 14 | ``` 15 | 16 | ```tsx 17 | I'm a note. 18 | ``` 19 | -------------------------------------------------------------------------------- /apps/web/content/design/components/popover.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Popover 3 | description: Displays rich content in a portal, triggered by a button. 4 | --- 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | Edit 13 |
20 |
28 | 29 | 30 |
31 |
39 | 40 | 46 |
47 |
48 |
49 |
50 |
51 | 52 | ## Usage 53 | 54 | ```tsx 55 | import { 56 | Popover, 57 | PopoverTrigger, 58 | PopoverTitle, 59 | PopoverContent, 60 | } from "@foundry-ui/Popover"; 61 | ``` 62 | 63 | ```tsx 64 | 65 | 66 | 67 | 68 | 69 | Title 70 |
The content for the popover.
71 |
72 |
73 | ``` 74 | -------------------------------------------------------------------------------- /apps/web/content/design/components/radio.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Radio Group 3 | description: A set of checkable buttons—known as radio buttons—where no more than one of the buttons can be checked at a time. 4 | --- 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | ## Usage 17 | 18 | ```tsx 19 | import { RadioGroup, RadioGroupItem } from "@foundry-ui/RadioGroup"; 20 | ``` 21 | 22 | ```tsx 23 | 24 | 25 | 26 | 27 | 28 | ``` 29 | -------------------------------------------------------------------------------- /apps/web/content/design/components/scroller.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Scroller 3 | description: Augments native scroll functionality for custom, cross-browser styling. 4 | --- 5 | 6 | 7 | 15 |
16 |

24 | <>Tags 25 |

26 | {Array.from({ length: 50 }) 27 | .map((_, i, a) => `v1.2.0-beta.${a.length - i}`) 28 | .map((tag) => ( 29 |
37 | {tag} 38 |
39 | ))} 40 |
41 | 42 |
43 |
44 | 45 | ## Usage 46 | 47 | ```tsx 48 | import { Scroller } from "@foundry-ui/Scroller"; 49 | ``` 50 | 51 | ```tsx 52 | 53 | 54 | {items.map((item) => ( 55 | {item.name} 56 | ))} 57 | 58 | 59 | ``` 60 | -------------------------------------------------------------------------------- /apps/web/content/design/components/separator.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Separator 3 | description: Visually or semantically separates content. 4 | --- 5 | 6 | 7 |
8 |
16 |

17 | <>Foundry Combat Systems 18 |

19 |

20 | <>Advanced Arms and Armament Explorer. 21 |

22 |
23 | 24 |
34 |
Weapons
35 | 36 |
Builds
37 | 38 |
Guides
39 |
40 |
41 |
42 | 43 | ## Usage 44 | 45 | ```tsx 46 | import { Separator } from "@foundry-ui/Separator"; 47 | ``` 48 | 49 | ```tsx 50 | 51 | ``` 52 | -------------------------------------------------------------------------------- /apps/web/content/design/components/switch.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Switch 3 | description: A control that allows the user to toggle between checked and not checked. 4 | --- 5 | 6 | 7 |
10 | 11 | 12 |
13 |
14 | 15 | ## Usage 16 | 17 | ```tsx 18 | import { Switch } from "@foundry-ui/Switch"; 19 | ``` 20 | 21 | ```tsx 22 | 23 | ``` 24 | -------------------------------------------------------------------------------- /apps/web/content/design/components/tabs.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Tabs 3 | description: A set of layered sections of content—known as tab panels—that are displayed one at a time. 4 | --- 5 | 6 | 7 | 8 | 9 | Account 10 | Password 11 | 12 | 13 | <>Make changes to your account here. 14 | 15 | Change your password here. 16 | 17 | 18 | 19 | ## Usage 20 | 21 | ```tsx 22 | import { Tabs, TabsList, TabsTrigger, TabsContent } from "@foundry-ui/Tabs"; 23 | ``` 24 | 25 | ```tsx 26 | 27 | 28 | Account 29 | Password 30 | 31 | Make changes to your account here. 32 | Change your password here. 33 | 34 | ``` 35 | -------------------------------------------------------------------------------- /apps/web/content/design/components/toast.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Toast 3 | description: A succinct message that is displayed temporarily. 4 | --- 5 | 6 | 7 | 8 | 9 | 10 | ## Usage 11 | 12 | ```tsx 13 | import { useToast } from "@foundry-ui/Toast"; 14 | ``` 15 | 16 | ```tsx {2,7-10} 17 | export const ToastDemo = () => { 18 | const { toast } = useToast(); 19 | 20 | return ( 21 | 31 | ); 32 | }; 33 | ``` 34 | 35 | ## Examples 36 | 37 | ### With action 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /apps/web/content/design/components/tooltip.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Tooltip 3 | description: A popup that displays non-essential information related to an element when the element receives keyboard focus or the mouse hovers over it. 4 | --- 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | ## Usage 13 | 14 | ```tsx 15 | import { Tooltip } from "@foundry-ui/Tooltip"; 16 | ``` 17 | 18 | ```tsx 19 | 20 | 21 | 22 | ``` 23 | -------------------------------------------------------------------------------- /apps/web/content/design/index.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Introduction 3 | description: The home of Foundry's design system for building beautiful user interfaces. 4 | --- 5 | 6 | Hello, and welcome! 7 | -------------------------------------------------------------------------------- /apps/web/content/design/layout/flex.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Flex 3 | description: A Flex layout container. 4 | --- 5 | 6 | 7 | 8 |
I'm a flex child
9 |
I'm a 2nd flex child
10 |
11 |
12 | 13 | ## Usage 14 | 15 | ```tsx 16 | import { Flex } from "@foundry/ui/components"; 17 | ``` 18 | 19 | ```tsx 20 | 21 |
I'm a flex child
22 |
I'm a 2nd flex child
23 |
24 | ``` 25 | -------------------------------------------------------------------------------- /apps/web/content/design/spacing.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Spacing 3 | description: Our spacing system for building complex interfaces. 4 | --- 5 | 6 | The scale is built around an 8x8 pixel grid. One spacing unit is equal to `0.5rem`, which translates to `8px` by default in common browsers. The values are proportional, so 16 is twice as much spacing as 8. 7 | 8 | ## Scale 9 | 10 | 11 | 12 | ## Usage 13 | 14 | ```scss 15 | .element { 16 | display: flex; 17 | align-items: center; 18 | height: var(--spacing-5); 19 | margin-block: var(--spacing-2); 20 | padding-inline: var(--spacing-1-half); 21 | } 22 | ``` 23 | -------------------------------------------------------------------------------- /apps/web/content/design/typography.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Typography 3 | description: Our styles for type. 4 | --- 5 | 6 | ## Primary Typeface 7 | 8 | We use **Neue Haas Grotesk Text** everywhere across Foundry's UI. 9 | 10 | 11 |
12 |
23 | {`abcdefghijklmnopqrstuvwxyz`} 24 |
25 | 26 |
36 | {`abcdefghijklmnopqrstuvwxyz`} 37 |
38 | 39 |
49 | {`123456789.`} 50 |
51 | 52 |
62 | {`⌘⌥⇧⌃⌅⌫↩⎋ 63 | !?@#%{}()45° 2/5`} 64 |
65 | 66 |
67 |
68 | 69 | ## Scale 70 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /apps/web/content/docs/calculations/reload.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Reload 3 | description: Learn more about how we test and calculate weapon reload 4 | --- 5 | 6 | ## How we calculate reload speed 7 | 8 | Reloading is a sequence of events that goes button (animation start) -> receive ammo -> able to fire. To get reload times only button press -> weapon firing is needed and therefore that is what we do. We use an automated script that fires, hits reload and holds down fire (with full auto on) until it shoots and then times that. 9 | 10 | Reload formulas aren't actually quadratic as many think they are, they can be more appropriately and accurately represented by piecewise-linear functions. All that means is they can consist of one or more linear functions stitched together. 11 | 12 | ![Reload Formula Graph](https://raw.githubusercontent.com/oh-yes-0-fps/hot-metal/main/docs/faq/assets/reload_graph.png) 13 | -------------------------------------------------------------------------------- /apps/web/content/docs/faq/assets/front_hip_mod.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d2foundry/foundry/11b597a2fd5badafbef08d67ea344ce3dae5344d/apps/web/content/docs/faq/assets/front_hip_mod.jpg -------------------------------------------------------------------------------- /apps/web/content/docs/faq/assets/reload_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d2foundry/foundry/11b597a2fd5badafbef08d67ea344ce3dae5344d/apps/web/content/docs/faq/assets/reload_graph.png -------------------------------------------------------------------------------- /apps/web/content/docs/faq/assets/side_ads_mod.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d2foundry/foundry/11b597a2fd5badafbef08d67ea344ce3dae5344d/apps/web/content/docs/faq/assets/side_ads_mod.jpg -------------------------------------------------------------------------------- /apps/web/content/docs/faq/assets/side_hip_mod.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d2foundry/foundry/11b597a2fd5badafbef08d67ea344ce3dae5344d/apps/web/content/docs/faq/assets/side_hip_mod.jpg -------------------------------------------------------------------------------- /apps/web/content/docs/faq/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Frequently Asked Questions 3 | description: Learn more about Foundry with these frequently asked questions 4 | --- 5 | 6 |
7 | Why is the Magazine stat on X weapon slightly off? 8 | 9 | The Magazine stat we get from Bungie's API has a documented history of being inaccurate to what's in game. We do our best to account for these discrepancies, but expect the numbers to occasionally be a bit off. 10 | 11 |
12 | 13 |
14 | Why is X new perk info not showing correctly/infomation incorrect? 15 | 16 | Whenever a new perk is added, it takes time for us to properly implement it. Some perks are easier than others, but they all require some amount of time to be added. In addition, some time may be required to test the perk to get accurate values as well. We appreciate your patience! 17 | 18 | If an older perk is having issues please feel free to look in the support channel in our discord, and if needed, open a new thread. 19 | 20 |
21 | 22 |
23 | How is damage calculated? 24 | 25 | The short answer is that we use formulas and base values from Mossy (Discord: mossy.max // Reddit: u/LegoWitch) 26 | 27 | They wrote a [reddit write-up](https://www.reddit.com/r/DestinyTheGame/comments/umnoex/exhaustive_breakdown_of_every_outgoing_damage/) where they answer a lot of questions pertaining to damage with topics ranging from comparing damage across different activites to how damage scales due the rank of the enenmy being hit. 28 | 29 | A direct link to their spreadsheet can be [found here](https://docs.google.com/spreadsheets/d/1b57Hb8m1L3daFfUckQQqvvN6VOpD03KEssvQLMFpC5I/edit#gid=1386975095) if you prefer that medium. 30 | 31 | In time we would like to have this information more readily available within our docs, but for now, we can only point you towards those links. 32 | 33 |
34 | -------------------------------------------------------------------------------- /apps/web/content/docs/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Introduction 3 | description: Foundry is an advanced weapon roll explorer and buildcrafting tool for Destiny 4 | --- 5 | 6 | Foundry is an advanced weapon roll explorer and buildcrafting tool for Destiny 2. 7 | -------------------------------------------------------------------------------- /apps/web/content/explorer/categories.json: -------------------------------------------------------------------------------- 1 | { 2 | "categories": [ 3 | { "name": "Weapons", "slug": "weapons", "count": 11, "parent": null }, 4 | { "name": "Perks", "slug": "perks", "count": 12, "parent": null }, 5 | { 6 | "name": "Exotic Armor", 7 | "slug": "exotic-armor", 8 | "count": 10, 9 | "parent": null 10 | }, 11 | { 12 | "name": "Weapon Mods", 13 | "slug": "weapon-mods", 14 | "count": 10, 15 | "parent": null 16 | }, 17 | { "name": "Armor Mods", "slug": "armor-mods", "count": 10, "parent": null }, 18 | { 19 | "name": "Exotic Weapons", 20 | "slug": "exotic", 21 | "count": 11, 22 | "parent": "weapons" 23 | }, 24 | { 25 | "name": "Hunter", 26 | "slug": "hunter", 27 | "count": 11, 28 | "parent": "exotic-armor" 29 | }, 30 | { "name": "Titan", "slug": "titan", "count": 11, "parent": "exotic-armor" }, 31 | { 32 | "name": "Warlock", 33 | "slug": "warlock", 34 | "count": 11, 35 | "parent": "exotic-armor" 36 | }, 37 | { 38 | "name": "Weapon Perks", 39 | "slug": "weapon", 40 | "count": 12, 41 | "parent": "perks" 42 | }, 43 | { 44 | "name": "Intrinsic Traits", 45 | "slug": "intrinsic", 46 | "count": 12, 47 | "parent": "perks" 48 | }, 49 | { 50 | "name": "Origin Traits", 51 | "slug": "origin", 52 | "count": 12, 53 | "parent": "perks" 54 | } 55 | ] 56 | } 57 | -------------------------------------------------------------------------------- /apps/web/content/posts/2022-11-21.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: '2022-11-21' 3 | excerpt: '// The one about Community Perk information.' 4 | date: '2022-11-21T18:00:00-05:00' 5 | author: 6 | name: gothfemme 7 | --- 8 | 9 | 10 | Hello Guardians, 11 | 12 | Thank you for using FOUNDRY and for your patience as I get things up and running. 13 | 14 | With this latest release, you can expect a few changes to make your experience more delightful, including: 15 | 16 | * Community Perk information, provided from our friends at{" "} [Clarity](https://www.d2clarity.com) 17 | * Added Tooltip stat displays for perks, barrels, mags, sights, etc 18 | * Added Recoil Direction semi-circle stat display 19 | * Adjustments to the display of stat bar deltas when both positive and negative effects are applied 20 | * Selected mod stat deltas will now display in a separate color 21 | * Added ammo type icons 22 | * Moved toggle for "Screenshot mode" to the newly added weapon overflow dropdown menu 23 | * Added an option to clear selections to the weapon overflow dropdown menu 24 | * Performance improvements surrounding image optimization and page stability while loading 25 | * Adjustments to how the search dropdown toggles at mobile screen widths 26 | * Added permalink functionality for rolls 27 | * Fixed an issue with curated rolls not displaying in screenshot mode 28 | * Fixed background images being unruly 29 | * Fixed an issue with site hydration when visiting from a permalink 30 | * Improved search performance on startup 31 | * Improved search performance with short queries 32 | * Added loading bar for page transitions 33 | * Styling tweaks and additional bug fixes 34 | 35 | I am still working on getting communication channels (Discord, Twitter, etc) set up specifically for this project, but if you would like to leave any feedback or suggestions, please feel free to drop me a line at my [Twitter](https://twitter.com/gothfemme). 36 | 37 | -- Kat 38 | -------------------------------------------------------------------------------- /apps/web/content/posts/2022-12-07.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: '2022-12-07' 3 | excerpt: '// The one about Range, in meters.' 4 | date: '2022-12-07T00:38:00-05:00' 5 | author: 6 | name: gothfemme 7 | --- 8 | 9 | Hello Guardians, 10 | 11 | A few minor updates have gone out since the last post, but wanted to highlight the latest addition first and foremost. 12 | 13 | ## Calculated Range 14 | 15 | Weapon pages will now show the Damage Falloff Start Distance for both Hip-Fire and ADS, for weapon types we have data on. 16 | 17 | It should work as you might expect, including with Rangefinder. So go check out some of the new weapons from this Season and try it out! 18 | 19 | There's definitely a ton more work for me to do around stat display, calculators, and the likes, but I wanted to get quickly get this out as I know it's important to folks for comparing weapons. 20 | 21 | ## Discord 22 | 23 | We now have a Discord, please join if you'd like to give any feedback, get additional updates, or just talk about the game. I post previews of what I'm working on and would enjoy getting more people's thoughts on things. [You can join our Discord here.](https://discord.gg/dzW2DZBBQH) 24 | 25 | Thanks again for using the site! 26 | 27 | -- Kat 28 | -------------------------------------------------------------------------------- /apps/web/content/posts/2022-12-27.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Home for the Holidays' 3 | excerpt: '// The one about the new home page.' 4 | date: '2022-12-27T18:00:00-05:00' 5 | author: 6 | name: gothfemme 7 | --- 8 | 9 | Hello Guardians, 10 | 11 | Hope you're all having a happy and healthy Dawning season. You may have noticed things look a little different over here. 12 | 13 | Initially I started off this chunk of work with the intention to just give the home page a bit of a makeover, as well as to sort out the organization of some site-specific pages like the changelog, etc. This... then ballooned into a much larger project of further refining parts of the site's UI, and well, here we are! 14 | 15 | Let me know what you all think about the upgrades, especially on mobile! 16 | 17 | Keeping this one short and sweet. Thanks again for using the site, and a huge thanks to all the folks who have been giving me their feedback. 18 | 19 | – Kat 20 | -------------------------------------------------------------------------------- /apps/web/content/posts/2023-04-18.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Updates, updates, updates!' 3 | excerpt: '// That time I forgot to update the blog for 4 months.' 4 | date: '2023-04-18T20:37:00-04:00' 5 | author: 6 | name: gothfemme 7 | --- 8 | 9 | Hello Guardians, 10 | 11 | It has been quite some time! Obviously still here considering the updates keep rolling out, and I hope you all have been enjoying the new features and have been cooking up some spicy god rolls. I owe you all a more proper blog post at... some point in the future. When the inspiration strikes me? But for now here's a quick recap of everything's that's launched in the past couple months: 12 | 13 | - A weapon page UI that can scale with all we're adding 14 | - A whole bunch of calculators 15 | - TTK, Damage Falloff, Handling, Reload, Flinch Resist and more! 16 | - These live in the accordion section and update while you select perks 17 | - Selectable Perk effects 18 | - Preview your weapon's performance and stats at different stack levels! 19 | - See all our cool calculators update in real time! 20 | - A revamped Screenshot Mode 21 | - It looks like in-game! 22 | - There's a settings menu in the top right that lets you change some display options 23 | - Lots of new search filters 24 | - I really like the `trait_1` and `trait_2` ones for finding the perfect combos 25 | - You can now download the site as an app (If you dare) 26 | - You can find the "Add to Home Screen" or "Download as app" button in your browser to get a slightly more focused version of Foundry! 27 | 28 | 29 | Cool! That's it for this one. 30 | 31 | – Kat 32 | -------------------------------------------------------------------------------- /apps/web/drizzle.config.ts: -------------------------------------------------------------------------------- 1 | import type { Config } from "drizzle-kit"; 2 | 3 | export default { 4 | out: "./src/lib/database/drizzle", 5 | schema: "./src/lib/database/schemas/schema.ts", 6 | driver: "better-sqlite", 7 | dbCredentials: { 8 | url: "./src/lib/database/sqlite.db", 9 | }, 10 | } satisfies Config; 11 | -------------------------------------------------------------------------------- /apps/web/next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/basic-features/typescript for more information. 6 | -------------------------------------------------------------------------------- /apps/web/next.config.js: -------------------------------------------------------------------------------- 1 | const { withContentlayer } = require("next-contentlayer"); 2 | const nextConfig = { 3 | reactStrictMode: true, 4 | transpilePackages: ["@foundry/ui"], 5 | }; 6 | module.exports = withContentlayer(nextConfig); 7 | -------------------------------------------------------------------------------- /apps/web/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@foundry/web", 3 | "version": "1.0.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint" 10 | }, 11 | "dependencies": { 12 | "@foundry/search": "github:d2foundry/search.git", 13 | "@foundry/ui": "workspace:*", 14 | "@radix-ui/react-icons": "^1.1.1", 15 | "@react-spring/web": "^9.6.1", 16 | "@types/mdx": "^2.0.7", 17 | "better-sqlite3": "^8.6.0", 18 | "bungie-api-ts": "^5.0.0", 19 | "contentlayer": "^0.3.4", 20 | "date-fns": "^2.30.0", 21 | "drizzle-orm": "^0.28.6", 22 | "next": "^13.5.3", 23 | "next-contentlayer": "^0.3.4", 24 | "react": "^18.2.0", 25 | "react-dom": "^18.2.0", 26 | "react-scroll": "^1.8.9", 27 | "server-only": "^0.0.1" 28 | }, 29 | "devDependencies": { 30 | "@foundry/eslint-config-custom": "workspace:*", 31 | "@foundry/tsconfig": "workspace:*", 32 | "@next/eslint-plugin-next": "^13.4.19", 33 | "@types/node": "^17.0.12", 34 | "@types/react": "^18.0.22", 35 | "@types/react-dom": "^18.0.7", 36 | "drizzle-kit": "^0.19.13", 37 | "typescript": "^4.5.3" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /apps/web/public/circles.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /apps/web/public/next.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/web/public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/web/src/app/(blog)/changelog/[slug]/page.tsx: -------------------------------------------------------------------------------- 1 | import { format, parseISO } from "date-fns"; 2 | import { allChangelogs } from "contentlayer/generated"; 3 | 4 | export const generateStaticParams = async () => 5 | allChangelogs.map((post) => ({ slug: post.url })); 6 | 7 | export const generateMetadata = ({ params }: { params: { slug: string } }) => { 8 | const post = allChangelogs.find((post) => post.url === params.slug); 9 | if (!post) throw new Error(`Post not found for slug: ${params.slug}`); 10 | return { title: post.title }; 11 | }; 12 | 13 | const ChangelogPage = ({ params }: { params: { slug: string } }) => { 14 | const post = allChangelogs.find((post) => post.url === params.slug); 15 | if (!post) throw new Error(`Post not found for slug: ${params.slug}`); 16 | 17 | return ( 18 |
19 |
20 | 23 |

{post.title}

24 |
25 |
29 |
30 | ); 31 | }; 32 | 33 | export default ChangelogPage; 34 | -------------------------------------------------------------------------------- /apps/web/src/app/(blog)/posts/[slug]/page.tsx: -------------------------------------------------------------------------------- 1 | import { format, parseISO } from "date-fns"; 2 | import { allPosts } from "contentlayer/generated"; 3 | 4 | export const generateStaticParams = async () => 5 | allPosts.map((post) => ({ slug: post.url })); 6 | 7 | export const generateMetadata = ({ params }: { params: { slug: string } }) => { 8 | const post = allPosts.find((post) => post.url === params.slug); 9 | if (!post) throw new Error(`Post not found for slug: ${params.slug}`); 10 | return { title: post.title }; 11 | }; 12 | 13 | const PostPage = ({ params }: { params: { slug: string } }) => { 14 | const post = allPosts.find((post) => post.url === params.slug); 15 | if (!post) throw new Error(`Post not found for slug: ${params.slug}`); 16 | 17 | return ( 18 |
19 |
20 | 23 |

{post.title}

24 |
25 |
29 |
30 | ); 31 | }; 32 | 33 | export default PostPage; 34 | -------------------------------------------------------------------------------- /apps/web/src/app/(docs)/design/[[...slug]]/client.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | import { DesignDoc } from "contentlayer/generated"; 3 | import { useMDXComponent } from "next-contentlayer/hooks"; 4 | 5 | import { mdxComponents } from "./mdxComponents"; 6 | 7 | export function Client({ doc }: { doc: DesignDoc }) { 8 | const MDXContent = useMDXComponent(doc.body.code); 9 | 10 | return ( 11 |
12 | 13 |
14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /apps/web/src/app/(docs)/design/[[...slug]]/page.tsx: -------------------------------------------------------------------------------- 1 | import { allDesignDocs } from "contentlayer/generated"; 2 | 3 | import { notFound } from "next/navigation"; 4 | 5 | import { Client } from "./client"; 6 | import { DocsPager } from "../../pager"; 7 | 8 | interface DocPageProps { 9 | params: { 10 | slug: string[]; 11 | }; 12 | } 13 | 14 | async function getDocFromParams({ params }: DocPageProps) { 15 | const slug = params.slug?.join("/") || ""; 16 | const doc = allDesignDocs.find((doc) => doc.slugAsParams === slug); 17 | 18 | if (!doc) { 19 | null; 20 | } 21 | 22 | return doc; 23 | } 24 | 25 | export async function generateStaticParams() { 26 | return allDesignDocs.map((doc) => ({ 27 | slug: doc.slugAsParams.split("/"), 28 | })); 29 | } 30 | 31 | export default async function Page({ params }: { params: { slug: string[] } }) { 32 | // Find the post for the current page. 33 | const doc = await getDocFromParams({ params }); 34 | 35 | // 404 if the doc does not exist. 36 | if (!doc) { 37 | notFound(); 38 | } 39 | 40 | return ( 41 |
42 | 43 | 44 |
45 | ); 46 | } 47 | -------------------------------------------------------------------------------- /apps/web/src/app/(docs)/docs/[[...slug]]/docs-sidebar-config.ts: -------------------------------------------------------------------------------- 1 | export const DOCS_SIDEBAR_CONFIG = [ 2 | { 3 | title: "Calculations", 4 | items: [ 5 | { 6 | title: "Range", 7 | href: "/docs/calculations/range", 8 | items: [], 9 | }, 10 | { 11 | title: "Reload", 12 | href: "/docs/calculations/reload", 13 | items: [], 14 | }, 15 | ], 16 | }, 17 | { 18 | title: "FAQ", 19 | href: "/docs/faq", 20 | items: [], 21 | }, 22 | { 23 | title: "Features", 24 | items: [ 25 | { 26 | title: "Compare", 27 | href: "/docs/features/compare", 28 | items: [], 29 | }, 30 | { 31 | title: "Roll Editor", 32 | href: "/docs/features/roll-editor", 33 | items: [], 34 | }, 35 | { 36 | title: "Search", 37 | href: "/docs/features/search", 38 | items: [], 39 | }, 40 | ] 41 | } 42 | ] -------------------------------------------------------------------------------- /apps/web/src/app/(docs)/docs/[[...slug]]/page.tsx: -------------------------------------------------------------------------------- 1 | import { allDocs } from "contentlayer/generated"; 2 | import { notFound } from "next/navigation"; 3 | import { DocsPager } from "../../pager"; 4 | 5 | 6 | interface DocPageProps { 7 | params: { 8 | slug: string[]; 9 | }; 10 | } 11 | 12 | async function getDocFromParams({ params }: DocPageProps) { 13 | const slug = params.slug?.join("/") || ""; 14 | const doc = allDocs.find((doc) => doc.slugAsParams === slug); 15 | 16 | if (!doc) { 17 | null; 18 | } 19 | 20 | return doc; 21 | } 22 | 23 | export async function generateStaticParams() { 24 | return allDocs.map((doc) => ({ 25 | slug: doc.slugAsParams.split("/"), 26 | })); 27 | } 28 | 29 | export default async function Page({ params }: { params: { slug: string[] } }) { 30 | // Find the post for the current page. 31 | const doc = await getDocFromParams({ params }); 32 | 33 | // 404 if the doc does not exist. 34 | if (!doc) { 35 | notFound(); 36 | } 37 | 38 | return ( 39 |
40 |
41 |
42 |

{doc.title}

43 |
44 |
48 |
49 | 50 |
51 | ); 52 | } 53 | 54 | -------------------------------------------------------------------------------- /apps/web/src/app/(docs)/layout.module.scss: -------------------------------------------------------------------------------- 1 | .inner { 2 | display: flex; 3 | flex-direction: column; 4 | width: 100%; 5 | max-width: var(--page-width); 6 | min-height: 100vh; 7 | margin: 0 auto; 8 | // background-color: var(--appBg); 9 | 10 | @media (width >= 768px) { 11 | gap: var(--spacing-2); 12 | flex-direction: row; 13 | } 14 | } 15 | 16 | .container { 17 | width: 100%; 18 | // background-color: var(--appBg); 19 | } 20 | -------------------------------------------------------------------------------- /apps/web/src/app/(docs)/layout.tsx: -------------------------------------------------------------------------------- 1 | import { Container, Flex } from "@foundry/ui/components"; 2 | import { DocsSidebarNav } from "./sidebar"; 3 | import styles from "./layout.module.scss"; 4 | 5 | export default function Layout({ 6 | children, 7 | }: { 8 | children: React.ReactNode; 9 | }): JSX.Element { 10 | return ( 11 | 12 | 13 | 14 | {children} 15 | 16 | {/* */} 17 | 18 | ); 19 | } 20 | -------------------------------------------------------------------------------- /apps/web/src/app/(explorer)/weapons/page.tsx: -------------------------------------------------------------------------------- 1 | import { Flex } from "@foundry/ui/components"; 2 | import { getDestinyWeapons } from "@/lib/database/queries/items"; 3 | import { Metadata } from "next"; 4 | import { explorerCategory } from "contentlayer/generated"; 5 | 6 | export const metadata: Metadata = { 7 | title: "weapons // FOUNDRY", 8 | }; 9 | export default async function Page() { 10 | const allDestinyWeapons = await getDestinyWeapons(); 11 | 12 | const slicedWeapons = allDestinyWeapons?.slice(0, 20) || []; 13 | return ( 14 |
15 |

Weapons

16 | 17 | {explorerCategory.categories?.map((cat) => cat.name)} 18 | 19 | {slicedWeapons?.map((v) => ( 20 |
{`${v.displayProperties.name}`}
21 | ))} 22 |
23 |
24 |
25 | ); 26 | } 27 | -------------------------------------------------------------------------------- /apps/web/src/app/(home)/Home.module.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d2foundry/foundry/11b597a2fd5badafbef08d67ea344ce3dae5344d/apps/web/src/app/(home)/Home.module.scss -------------------------------------------------------------------------------- /apps/web/src/app/(home)/home.tsx: -------------------------------------------------------------------------------- 1 | // "use client"; 2 | import React from "react"; 3 | 4 | // import Image from "next/image"; 5 | // import Link from "next/link"; 6 | 7 | // import { 8 | // ArrowRightIcon, 9 | // HeartFilledIcon, 10 | // InfoCircledIcon, 11 | // } from "@radix-ui/react-icons"; 12 | // import { cn } from "@foundry/ui/utils"; 13 | 14 | import styles from "./Home.module.scss"; 15 | import { BlogSection, ChangelogSection } from "./blog-section"; 16 | import { Flex } from "@foundry/ui/components"; 17 | 18 | // import { cn } from "@utils/ui"; 19 | 20 | const SEASON_NAME_TEXT = "Season of the Witch"; 21 | const TAGLINE = `Your companion to Destiny 2 weapons and perks.`; 22 | 23 | const CURRENT_YEAR_NUMBER = 6; 24 | const CURRENT_SEASON_NUMBER = 22; 25 | 26 | // interface HomeProps { 27 | // allPosts: PostType[]; 28 | // allChangelogPosts: PostType[]; 29 | // // heroImage: { 30 | // // src: string; 31 | // // blurDataUrl: string; 32 | // // }; 33 | // trendingWeapons: TrendingWeapons; 34 | // currentSeasonWeapons: FoundryWeaponSearchItem[]; 35 | // } 36 | // const showNightlyAtom = atom(false); 37 | 38 | export function Home() { 39 | // const { weeklyItems, dailyItems } = await getTrendingWeapons(); 40 | return ( 41 | 42 |
43 |
44 | {/* */} 45 | {TAGLINE} 46 |
47 | 48 | 49 | 50 | 51 |
52 | ); 53 | } 54 | -------------------------------------------------------------------------------- /apps/web/src/app/(home)/page.tsx: -------------------------------------------------------------------------------- 1 | import { Metadata } from "next"; 2 | import { Home } from "./home"; 3 | 4 | // const dayInMs = 5 | // 1000 * // second in ms 6 | // 60 * // to minutes 7 | // 60 * // to hours 8 | // 24; // to day 9 | 10 | export const metadata: Metadata = { 11 | title: "home // FOUNDRY", 12 | }; 13 | export default async function Page() { 14 | return ; 15 | } 16 | -------------------------------------------------------------------------------- /apps/web/src/app/(home)/trending-section.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d2foundry/foundry/11b597a2fd5badafbef08d67ea344ce3dae5344d/apps/web/src/app/(home)/trending-section.tsx -------------------------------------------------------------------------------- /apps/web/src/app/client.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { TooltipProvider } from "@foundry/ui/components"; 4 | 5 | export function Client({ children }: { children: React.ReactNode }) { 6 | return {children}; 7 | } 8 | -------------------------------------------------------------------------------- /apps/web/src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d2foundry/foundry/11b597a2fd5badafbef08d67ea344ce3dae5344d/apps/web/src/app/favicon.ico -------------------------------------------------------------------------------- /apps/web/src/app/globals.css: -------------------------------------------------------------------------------- 1 | * { 2 | box-sizing: border-box; 3 | padding: 0; 4 | margin: 0; 5 | } 6 | 7 | html, 8 | body { 9 | max-width: 100vw; 10 | overflow-x: hidden; 11 | } 12 | 13 | body { 14 | background: var(--color-gray-base); 15 | font-size: 16px; 16 | font-family: var(--font-text); 17 | color: var(--color-gray-text-contrast); 18 | } 19 | 20 | a { 21 | color: inherit; 22 | text-decoration: none; 23 | } 24 | -------------------------------------------------------------------------------- /apps/web/src/app/layout.tsx: -------------------------------------------------------------------------------- 1 | import "./globals.css"; 2 | import "@foundry/ui/styles.scss"; 3 | import type { Metadata } from "next"; 4 | import { Inter } from "next/font/google"; 5 | import { SiteLayout } from "./site-layout"; 6 | import { Client } from "./client"; 7 | 8 | // const inter = Inter({ subsets: ["latin"] }); 9 | 10 | export const metadata: Metadata = { 11 | title: "Foundry", 12 | description: 13 | "an advanced weapon roll explorer and buildcrafting tool for Destiny 2.", 14 | applicationName: "Foundry", 15 | appleWebApp: { 16 | capable: true, 17 | statusBarStyle: "black", 18 | title: "Foundry", 19 | }, 20 | viewport: { 21 | width: "device-width", 22 | initialScale: 1, 23 | }, 24 | }; 25 | 26 | export default function RootLayout({ 27 | children, 28 | }: { 29 | children: React.ReactNode; 30 | }): JSX.Element { 31 | return ( 32 | 33 | 34 | 38 | 39 | 40 | 41 | 42 | {children} 43 | 44 | 45 | 46 | ); 47 | } 48 | -------------------------------------------------------------------------------- /apps/web/src/app/site-layout.tsx: -------------------------------------------------------------------------------- 1 | import { Flex } from "@foundry/ui/components"; 2 | import { Nav } from "@/components/Nav"; 3 | 4 | export function SiteLayout({ children }: { children: React.ReactNode }) { 5 | return ( 6 | 7 |