├── .gitignore ├── LICENSE ├── README.md ├── app.config.ts ├── examples ├── alien.svg ├── blocks.svg ├── boring1.png ├── boring2.png ├── boring3.png ├── bubbles.svg ├── camo.svg ├── childhood.svg ├── dots.svg ├── drawing1.png ├── drawing2.png ├── glass.svg ├── halftone.png ├── layers1.svg ├── layers2.svg ├── matrix.svg ├── mondrian.svg ├── neon.svg ├── quantum.svg ├── tile.png ├── ui2.png └── wood.svg ├── package.json ├── pnpm-lock.yaml ├── presets ├── Alien.js ├── Basic.js ├── Blocks.js ├── Bubbles.js ├── Camo.js ├── Circle.js ├── Dots.js ├── Drawing.js ├── Glass.js ├── Halftone.js ├── Layers.js ├── Minimal.js ├── Mondrian.js ├── Neon.js ├── Quantum.js ├── Tile.js └── Tutorial.js ├── public ├── favicon.svg ├── previewWorker.js ├── thumbnailWorker.js └── utils.js ├── src ├── app.css ├── app.tsx ├── coloris.css ├── components │ ├── Button.tsx │ ├── ButtonGroup.tsx │ ├── Collapsible.tsx │ ├── ColorInput.tsx │ ├── ContextMenu.tsx │ ├── Dialog.tsx │ ├── ErrorToasts.tsx │ ├── ImageInput.tsx │ ├── NumberInput.tsx │ ├── Select.tsx │ ├── SplitButton.tsx │ ├── Switch.tsx │ ├── TextInput.tsx │ ├── editor │ │ ├── AllowPasteDialog.tsx │ │ ├── CodeEditor.tsx │ │ ├── ParamsEditor.tsx │ │ ├── QrEditor.tsx │ │ └── Settings.tsx │ ├── preview │ │ └── QrPreview.tsx │ └── svg.tsx ├── entry-client.tsx ├── entry-server.tsx ├── global.d.ts ├── lib │ ├── QrContext.tsx │ ├── RenderContext.tsx │ ├── options.ts │ ├── params.ts │ ├── presets.ts │ └── util.ts └── routes │ ├── [...404].tsx │ ├── bugs.tsx │ └── index.tsx ├── tsconfig.json ├── uno.config.ts └── wrangler.toml /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | dist 3 | .solid 4 | .output 5 | .vercel 6 | .netlify 7 | .vinxi 8 | 9 | # Environment 10 | .env 11 | .env*.local 12 | 13 | # dependencies 14 | /node_modules 15 | 16 | # IDEs and editors 17 | /.idea 18 | .project 19 | .classpath 20 | *.launch 21 | .settings/ 22 | 23 | # Temp 24 | gitignore 25 | 26 | # System Files 27 | .DS_Store 28 | Thumbs.db 29 | 30 | # wrangler files 31 | .wrangler 32 | .dev.vars 33 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Kyle Zheng 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # qrframe 2 | 3 | code-based qr code generator 4 | 5 | Blatantly inspired by [QRBTF](https://qrbtf.com) and [Anthony Fu's QR Toolkit](https://qrcode.antfu.me). 6 | 7 | [Here's a post I wrote about crafting QR codes](https://kylezhe.ng/posts/crafting_qr_codes) that goes into deeper detail about how they work and ways to make them pretty. 8 | 9 | ## Examples 10 | 11 | > [!CAUTION] 12 | > These example QR codes may not be reliably scannable! Results may vary drastically based on device and scanner! 13 | 14 | This project is a tool to create designs! These are only examples! 15 | 16 |
Creative possibilities | 20 |||
---|---|---|
23 | |
25 |
26 | |
28 |
29 | |
31 |
34 | ![]() |
36 |
37 | |
39 |
40 | |
42 |
45 | |
47 |
48 | |
50 |
51 | |
53 |
56 | |
58 |
59 | |
61 |
62 | |
64 |
Import external libs, fetch external files, etc | 67 |
69 | ![]() |
71 |
72 | ![]() |
74 |
75 | ![]() |
77 |
Styles copied from QRBTF | 79 |||
82 | |
84 |
85 | |
87 |
88 | |
90 |
Boring options are available | 92 |||
95 | ![]() |
97 |
98 | ![]() |
100 |
101 | ![]() |
103 |
Using code you don't understand could be dangerous.
28 |29 | There are no secrets or passwords that can be leaked from this 30 | website, but any number of things could happen. The page may 31 | break, you could be redirected to another URL, or get absolutely 32 | memed on. 33 |
34 |35 | In case you need to delete a preset without running its code, you can right click on it. 36 |
37 |Do you accept these risks?
38 |