@batijs/features 0.0.599 → 0.0.600

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,576 +0,0 @@
1
- // src/features.ts
2
- var features = [
3
- // Vike
4
- {
5
- category: "Frontend Framework",
6
- label: "Vike",
7
- flag: "vike",
8
- image: "data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaGFtbWVyIiB3aWR0aD0iNDcuMjE3IiBoZWlnaHQ9IjQ3LjIxNyIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSItNTAgLTUwIDQ3LjIxNyA0Ny4yMTciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzAuMjksLTIxLjMpIj4KICA8ZyBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPgogICA8cGF0aCBkPSJtLTguNTExLTEwLjQ0OSAxLjEyNiA0LjA2NCAyLjcwNy0yLjc2NXoiIGZpbGw9IiNhYmFiYWIiLz4KICAgPHBhdGggZD0ibS0yLjI3My0yNC40OTYtNi4yMzggMTQuMDQ3IDMuODMzIDEuMjk5IDYuMjM4LTE0LjA0OHoiIGZpbGw9IiM5NDk0OTQiLz4KICAgPHBhdGggZD0ibS0yLjI3My0yNC40OTYgMy40NjUtMS4yMDQuMzY4IDIuNTAyeiIgZmlsbD0iI2FiYWJhYiIvPgogICA8cGF0aCBkPSJtMTcuNTExIDQuNjc0LTIuNzA3IDIuNzY2LTIyLjE4OS0xMy44MjUgMi43MDctMi43NjV6IiBmaWxsPSIjOTQ5NDk0Ii8+CiAgPC9nPgogIDxnIHN0cm9rZT0iIzgyODI4MiI+CiAgIDxwYXRoIGQ9Im0tMTAuNTI2IDIzLjcwNS0xLjE3IDIuNjM0IiBzdHJva2Utd2lkdGg9IjkuNiIvPgogICA8cGF0aCBkPSJtLTEzLjg5OSAyNi41MjhjLTEuODUxLTEuMTUzLTIuMzI2LTIuMTMzLTEuMDg3LTIuMjM5IDEuMjQtLjEwNiAzLjY0My43MDkgNS40OTQgMS44NjIgMS44NSAxLjE1MyAyLjMyNiAyLjEzMiAxLjA4NiAyLjIzOC0xLjIzOS4xMDYtMy42NDItLjcwOC01LjQ5My0xLjg2MSIgZmlsbD0iIzgyODI4MiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CiAgIDxwYXRoIGQ9Im0tMTIuNzMgMjMuODk0YzEuODUxIDEuMTUzIDQuMjU1IDEuOTY3IDUuNDk0IDEuODYxcy43NjQtMS4wODUtMS4wODctMi4yMzhjLTEuODUtMS4xNTMtNC4yNTQtMS45NjctNS40OTMtMS44NjEtMS4yNC4xMDYtLjc2NCAxLjA4NSAxLjA4NiAyLjIzOCIgZmlsbD0iIzgyODI4MiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CiAgPC9nPgogIDxnIHN0cm9rZT0iIzdhN2E3YSI+CiAgIDxwYXRoIGQ9Im0tOS44NDQgMjIuMTY5LS4zOS44NzgiIHN0cm9rZS13aWR0aD0iOS4xIi8+CiAgIDxwYXRoIGQ9Im0tMTIuNDM3IDIzLjIzNWMtMS44NTEtMS4xNTMtMi4zMjYtMi4xMzItMS4wODctMi4yMzggMS4yNC0uMTA2IDMuNjQzLjcwOCA1LjQ5NCAxLjg2MSAxLjg1IDEuMTUzIDIuMzI2IDIuMTMzIDEuMDg2IDIuMjM5LTEuMjM5LjEwNi0zLjY0Mi0uNzA5LTUuNDkzLTEuODYyIiBmaWxsPSIjN2E3YTdhIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iLjUiLz4KICAgPHBhdGggZD0ibS0xMi4wNDcgMjIuMzU3YzEuODUgMS4xNTMgNC4yNTQgMS45NjggNS40OTMgMS44NjIgMS4yNC0uMTA2Ljc2NC0xLjA4Ni0xLjA4Ny0yLjIzOS0xLjg1LTEuMTUzLTQuMjU0LTEuOTY3LTUuNDkzLTEuODYxcy0uNzY0IDEuMDg1IDEuMDg3IDIuMjM4IiBmaWxsPSIjN2E3YTdhIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iLjUiLz4KICA8L2c+CiAgPGcgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj4KICAgPHBhdGggZD0ibS0xNi43MS05Ljc0OCA4LjE5OS0uNzAxIDEuMTI2IDQuMDY0LTguMTk5LjcwMXoiIGZpbGw9IiM5NDk0OTQiLz4KICAgPHBhdGggZD0ibTIzLjc0OS05LjM3My02LjIzOCAxNC4wNDctMjIuMTg5LTEzLjgyNCA2LjIzOC0xNC4wNDh6IiBmaWxsPSIjNzU3NTc1Ii8+CiAgIDxwYXRoIGQ9Im0xMC4yNzEtMTYuMDczIDMuNzUxIDMuNTM0Yy4wNjIuMDU4LjA4My4xNTYuMDUyLjIzOGwtMS45NSA1LjEyOGMtLjA0Ni4xMjEtLjE4LjE1My0uMjY4LjA2NWwtMS4wMjQtMS4wM2MtLjA5NS0uMDk2LS4yNDItLjA0OC0uMjc1LjA5MWwtLjUxNiAyLjE1MmMtLjAzNC4xNDUtLjE5MS4xOS0uMjg0LjA4MiAwIDAtLjYwNi0uNjk2LS42MDYtLjY5Ni0uMDk0LS4xMDgtLjI1LS4wNjMtLjI4NS4wODJsLS44MDMgMy4zODRjLS4wNS4yMTItLjMxNy4xNzgtLjMzNi0uMDQzbC0uMDE0LS4xNDdzLjA1OC05Ljg5Mi4wNTgtOS44OTJjLjAwMS0uMTY1LjE2NS0uMjUzLjI3Ny0uMTQ4bDEuMDc3IDEuMDA5Yy4xMDEuMDk1LjI1LjAzNC4yNzQtLjExMWwuNTk3LTMuNTg3Yy4wMjUtLjE0Ni4xNzQtLjIwNi4yNzUtLjExMXoiIGZpbGw9IiNmYmJmMjgiIHN0cm9rZT0iI2ZiYmYyOCIgc3Ryb2tlLXdpZHRoPSIuNiIvPgogICA8cGF0aCBkPSJtLTE2LjcxLTkuNzQ4IDguMTk5LS43MDEgNi4yMzgtMTQuMDQ3LTguMTk5LjcwMXoiIGZpbGw9IiM3NTc1NzUiLz4KICA8L2c+CiAgPHBhdGggZD0ibS0xLjc1NCAzLjk1MS03Ljk5MiAxNy45OTgiIHN0cm9rZT0iIzkxNTEyYiIgc3Ryb2tlLXdpZHRoPSI4LjYiLz4KICA8ZyBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPgogICA8cGF0aCBkPSJtLTExLjk1IDIyLjEzOGMtMS44NTEtMS4xNTMtMi4zMjYtMi4xMzItMS4wODctMi4yMzggMS4yNC0uMTA2IDMuNjQzLjcwOCA1LjQ5NCAxLjg2MXMyLjMyNiAyLjEzMiAxLjA4NyAyLjIzOGMtMS4yNC4xMDYtMy42NDMtLjcwOC01LjQ5NC0xLjg2MSIgZmlsbD0iIzkxNTEyYiIvPgogICA8cGF0aCBkPSJtLTMuOTU4IDQuMTM5YzEuODUxIDEuMTUzIDQuMjU0IDEuOTY4IDUuNDk0IDEuODYyIDEuMjM5LS4xMDYuNzY0LTEuMDg2LTEuMDg3LTIuMjM5cy00LjI1NC0xLjk2Ny01LjQ5My0xLjg2MWMtMS4yNC4xMDYtLjc2NCAxLjA4NSAxLjA4NiAyLjIzOCIgZmlsbD0iIzkxNTEyYiIvPgogICA8cGF0aCBkPSJtMS4xOTItMjUuNy4zNjggMi41MDIgMjIuMTg5IDEzLjgyNS0uMzY4LTIuNTAzeiIgZmlsbD0iIzk0OTQ5NCIvPgogICA8cGF0aCBkPSJtLTEwLjQ3Mi0yMy43OTUgOC4xOTktLjcwMSAzLjQ2NS0xLjIwNC04LjE5OS43MDF6IiBmaWxsPSIjOTQ5NDk0Ii8+CiAgPC9nPgogIDxnIHN0cm9rZT0iIzZlNmU2ZSI+CiAgIDxwYXRoIGQ9Im0tLjQ4NyAxLjA5Ny0xLjE3IDIuNjM0IiBzdHJva2Utd2lkdGg9IjkuMSIvPgogICA8cGF0aCBkPSJtLTMuODYgMy45MmMtMS44NTEtMS4xNTMtMi4zMjYtMi4xMzItMS4wODctMi4yMzhzMy42NDMuNzA4IDUuNDkzIDEuODYxYzEuODUxIDEuMTUzIDIuMzI3IDIuMTMyIDEuMDg3IDIuMjM4LTEuMjM5LjEwNi0zLjY0My0uNzA4LTUuNDkzLTEuODYxIiBmaWxsPSIjNmU2ZTZlIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iLjUiLz4KICAgPHBhdGggZD0ibS0yLjY5MSAxLjI4NmMxLjg1MSAxLjE1MyA0LjI1NCAxLjk2NyA1LjQ5NCAxLjg2MSAxLjIzOS0uMTA2Ljc2NC0xLjA4NS0xLjA4Ny0yLjIzOHMtNC4yNTQtMS45NjctNS40OTMtMS44NjFjLTEuMjQuMTA2LS43NjQgMS4wODUgMS4wODYgMi4yMzgiIGZpbGw9IiM2ZTZlNmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIuNSIvPgogIDwvZz4KICA8ZyBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPgogICA8cGF0aCBkPSJtMTguMjY5IDYuMjM2LTMuNDY1IDEuMjA0IDIuNzA3LTIuNzY2eiIgZmlsbD0iI2FiYWJhYiIvPgogICA8cGF0aCBkPSJtMTQuODA0IDcuNDQtOC4xOTkuNzAxLTIyLjE4OS0xMy44MjUgOC4xOTktLjcwMXoiIGZpbGw9IiM3NTc1NzUiLz4KICAgPHBhdGggZD0ibS0xNi43MS05Ljc0OCAxLjEyNiA0LjA2NC0uMzY3LTIuNTAyeiIgZmlsbD0iI2FiYWJhYiIvPgogICA8cGF0aCBkPSJtMjQuNTA3LTcuODEyLTYuMjM4IDE0LjA0OC0uNzU4LTEuNTYyIDYuMjM4LTE0LjA0N3oiIGZpbGw9IiM5NDk0OTQiLz4KICAgPHBhdGggZD0ibS0xMC40NzItMjMuNzk1LTYuMjM4IDE0LjA0Ny43NTkgMS41NjIgNi4yMzctMTQuMDQ4eiIgZmlsbD0iIzk0OTQ5NCIvPgogICA8cGF0aCBkPSJtMjQuNTA3LTcuODEyLTEuMTI2LTQuMDY0LjM2OCAyLjUwM3oiIGZpbGw9IiNhYmFiYWIiLz4KICAgPHBhdGggZD0ibTIzLjM4MS0xMS44NzYtOC4xOTkuNzAxLTIyLjE4OS0xMy44MjQgOC4xOTktLjcwMXoiIGZpbGw9IiM3NTc1NzUiLz4KICAgPHBhdGggZD0ibS0xMC40NzItMjMuNzk1IDMuNDY1LTEuMjA0LTIuNzA3IDIuNzY1eiIgZmlsbD0iI2FiYWJhYiIvPgogICA8cGF0aCBkPSJtMTguMjY5IDYuMjM2LTguMTk5LjcwMS0zLjQ2NSAxLjIwNCA4LjE5OS0uNzAxeiIgZmlsbD0iIzk0OTQ5NCIvPgogICA8cGF0aCBkPSJtLTE1Ljk1MS04LjE4Ni4zNjcgMi41MDIgMjIuMTg5IDEzLjgyNS0uMzY3LTIuNTAzeiIgZmlsbD0iIzk0OTQ5NCIvPgogICA8cGF0aCBkPSJtMTguMjY5IDYuMjM2LTguMTk5LjcwMSA2LjIzOC0xNC4wNDggOC4xOTktLjcwMXoiIGZpbGw9IiM3NTc1NzUiLz4KICAgPHBhdGggZD0ibS05LjcxNC0yMi4yMzQtNi4yMzcgMTQuMDQ4IDIyLjE4OSAxMy44MjQgNi4yMzctMTQuMDQ3eiIgZmlsbD0iIzc1NzU3NSIvPgogICA8cGF0aCBkPSJtMi41NDUtMTIuNzktNC41ODMtMS42NTljLS4wNzYtLjAyNy0uMTU2LjAwOC0uMTk1LjA4NSAwIDAtMi40NjMgNC44MDgtMi40NjMgNC44MDgtLjA1OC4xMTQtLjAwNS4yNjMuMTA3LjI5OGwxLjI5Ni40MTZjLjEyMi4wMzkuMTcxLjIxLjA5My4zMjEgMCAwLTEuMjA1IDEuNzIyLTEuMjA1IDEuNzIyLS4wODEuMTE2LS4wMjQuMjk0LjEwNS4zMjVsLjgyNy4xOTZjLjEyOC4wMzEuMTg2LjIwOS4xMDQuMzI1IDAgMC0xLjg5OSAyLjcwMS0xLjg5OSAyLjcwMS0uMTE4LjE2OS4wNTYuNDEuMjIuMzA0bC4xMS0uMDcgNi44NDktNS42NjFjLjExNS0uMDk1LjA4My0uMzA0LS4wNTQtLjM1NGwtMS4zMTItLjQ4Yy0uMTIzLS4wNDUtLjE2NS0uMjI0LS4wNzgtLjMzMSAwIDAgMi4xNTctMi42MTUgMi4xNTctMi42MTUuMDg3LS4xMDYuMDQ1LS4yODYtLjA3OS0uMzMxeiIgZmlsbD0iI2ZiYmYyOCIgc3Ryb2tlPSIjZmJiZjI4IiBzdHJva2Utd2lkdGg9Ii42Ii8+CiAgIDxwYXRoIGQ9Im0yNC41MDctNy44MTItOC4xOTkuNzAxLTEuMTI2LTQuMDY0IDguMTk5LS43MDF6IiBmaWxsPSIjOTQ5NDk0Ii8+CiAgIDxwYXRoIGQ9Im0xNS4xODItMTEuMTc1LTIuNzA3IDIuNzY2LTIyLjE4OS0xMy44MjUgMi43MDctMi43NjV6IiBmaWxsPSIjOTQ5NDk0Ii8+CiAgIDxwYXRoIGQ9Im0xMC4wNyA2LjkzNy0zLjQ2NSAxLjIwNC0uMzY3LTIuNTAzeiIgZmlsbD0iI2FiYWJhYiIvPgogICA8cGF0aCBkPSJtMTYuMzA4LTcuMTExLTYuMjM4IDE0LjA0OC0zLjgzMi0xLjI5OSA2LjIzNy0xNC4wNDd6IiBmaWxsPSIjOTQ5NDk0Ii8+CiAgIDxwYXRoIGQ9Im0xNi4zMDgtNy4xMTEtMS4xMjYtNC4wNjQtMi43MDcgMi43NjZ6IiBmaWxsPSIjYWJhYmFiIi8+CiAgPC9nPgogPC9nPgo8L3N2Zz4K",
9
- url: "https://vike.dev",
10
- tagline: "Flexible, lean, reliable, community-driven, fast Vite-based frontend framework",
11
- repo: "vikejs/vike",
12
- links: [
13
- {
14
- label: "Docs",
15
- href: "https://vike.dev"
16
- },
17
- {
18
- label: "FAQ",
19
- href: "https://vike.dev/faq"
20
- }
21
- ],
22
- invisibleCli: true,
23
- readonly: true
24
- },
25
- // UI Framework
26
- {
27
- category: "UI Framework",
28
- label: "React",
29
- flag: "react",
30
- image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxLjEzZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjU2IDIyOCI+PHBhdGggZmlsbD0iIzAwRDhGRiIgZD0iTTIxMC40ODMgNzMuODI0YTE3MS40OSAxNzEuNDkgMCAwIDAtOC4yNC0yLjU5N2MuNDY1LTEuOS44OTMtMy43NzcgMS4yNzMtNS42MjFjNi4yMzgtMzAuMjgxIDIuMTYtNTQuNjc2LTExLjc2OS02Mi43MDhjLTEzLjM1NS03LjctMzUuMTk2LjMyOS01Ny4yNTQgMTkuNTI2YTE3MS4yMyAxNzEuMjMgMCAwIDAtNi4zNzUgNS44NDhhMTU1Ljg2NiAxNTUuODY2IDAgMCAwLTQuMjQxLTMuOTE3QzEwMC43NTkgMy44MjkgNzcuNTg3LTQuODIyIDYzLjY3MyAzLjIzM0M1MC4zMyAxMC45NTcgNDYuMzc5IDMzLjg5IDUxLjk5NSA2Mi41ODhhMTcwLjk3NCAxNzAuOTc0IDAgMCAwIDEuODkyIDguNDhjLTMuMjguOTMyLTYuNDQ1IDEuOTI0LTkuNDc0IDIuOThDMTcuMzA5IDgzLjQ5OCAwIDk4LjMwNyAwIDExMy42NjhjMCAxNS44NjUgMTguNTgyIDMxLjc3OCA0Ni44MTIgNDEuNDI3YTE0NS41MiAxNDUuNTIgMCAwIDAgNi45MjEgMi4xNjVhMTY3LjQ2NyAxNjcuNDY3IDAgMCAwLTIuMDEgOS4xMzhjLTUuMzU0IDI4LjItMS4xNzMgNTAuNTkxIDEyLjEzNCA1OC4yNjZjMTMuNzQ0IDcuOTI2IDM2LjgxMi0uMjIgNTkuMjczLTE5Ljg1NWExNDUuNTY3IDE0NS41NjcgMCAwIDAgNS4zNDItNC45MjNhMTY4LjA2NCAxNjguMDY0IDAgMCAwIDYuOTIgNi4zMTRjMjEuNzU4IDE4LjcyMiA0My4yNDYgMjYuMjgyIDU2LjU0IDE4LjU4NmMxMy43MzEtNy45NDkgMTguMTk0LTMyLjAwMyAxMi40LTYxLjI2OGExNDUuMDE2IDE0NS4wMTYgMCAwIDAtMS41MzUtNi44NDJjMS42Mi0uNDggMy4yMS0uOTc0IDQuNzYtMS40ODhjMjkuMzQ4LTkuNzIzIDQ4LjQ0My0yNS40NDMgNDguNDQzLTQxLjUyYzAtMTUuNDE3LTE3Ljg2OC0zMC4zMjYtNDUuNTE3LTM5Ljg0NFptLTYuMzY1IDcwLjk4NGMtMS40LjQ2My0yLjgzNi45MS00LjMgMS4zNDVjLTMuMjQtMTAuMjU3LTcuNjEyLTIxLjE2My0xMi45NjMtMzIuNDMyYzUuMTA2LTExIDkuMzEtMjEuNzY3IDEyLjQ1OS0zMS45NTdjMi42MTkuNzU4IDUuMTYgMS41NTcgNy42MSAyLjRjMjMuNjkgOC4xNTYgMzguMTQgMjAuMjEzIDM4LjE0IDI5LjUwNGMwIDkuODk2LTE1LjYwNiAyMi43NDMtNDAuOTQ2IDMxLjE0Wm0tMTAuNTE0IDIwLjgzNGMyLjU2MiAxMi45NCAyLjkyNyAyNC42NCAxLjIzIDMzLjc4N2MtMS41MjQgOC4yMTktNC41OSAxMy42OTgtOC4zODIgMTUuODkzYy04LjA2NyA0LjY3LTI1LjMyLTEuNC00My45MjctMTcuNDEyYTE1Ni43MjYgMTU2LjcyNiAwIDAgMS02LjQzNy01Ljg3YzcuMjE0LTcuODg5IDE0LjQyMy0xNy4wNiAyMS40NTktMjcuMjQ2YzEyLjM3Ni0xLjA5OCAyNC4wNjgtMi44OTQgMzQuNjcxLTUuMzQ1YTEzNC4xNyAxMzQuMTcgMCAwIDEgMS4zODYgNi4xOTNaTTg3LjI3NiAyMTQuNTE1Yy03Ljg4MiAyLjc4My0xNC4xNiAyLjg2My0xNy45NTUuNjc1Yy04LjA3NS00LjY1Ny0xMS40MzItMjIuNjM2LTYuODUzLTQ2Ljc1MmExNTYuOTIzIDE1Ni45MjMgMCAwIDEgMS44NjktOC40OTljMTAuNDg2IDIuMzIgMjIuMDkzIDMuOTg4IDM0LjQ5OCA0Ljk5NGM3LjA4NCA5Ljk2NyAxNC41MDEgMTkuMTI4IDIxLjk3NiAyNy4xNWExMzQuNjY4IDEzNC42NjggMCAwIDEtNC44NzcgNC40OTJjLTkuOTMzIDguNjgyLTE5Ljg4NiAxNC44NDItMjguNjU4IDE3Ljk0Wk01MC4zNSAxNDQuNzQ3Yy0xMi40ODMtNC4yNjctMjIuNzkyLTkuODEyLTI5Ljg1OC0xNS44NjNjLTYuMzUtNS40MzctOS41NTUtMTAuODM2LTkuNTU1LTE1LjIxNmMwLTkuMzIyIDEzLjg5Ny0yMS4yMTIgMzcuMDc2LTI5LjI5M2MyLjgxMy0uOTggNS43NTctMS45MDUgOC44MTItMi43NzNjMy4yMDQgMTAuNDIgNy40MDYgMjEuMzE1IDEyLjQ3NyAzMi4zMzJjLTUuMTM3IDExLjE4LTkuMzk5IDIyLjI0OS0xMi42MzQgMzIuNzkyYTEzNC43MTggMTM0LjcxOCAwIDAgMS02LjMxOC0xLjk3OVptMTIuMzc4LTg0LjI2Yy00LjgxMS0yNC41ODctMS42MTYtNDMuMTM0IDYuNDI1LTQ3Ljc4OWM4LjU2NC00Ljk1OCAyNy41MDIgMi4xMTEgNDcuNDYzIDE5LjgzNWExNDQuMzE4IDE0NC4zMTggMCAwIDEgMy44NDEgMy41NDVjLTcuNDM4IDcuOTg3LTE0Ljc4NyAxNy4wOC0yMS44MDggMjYuOTg4Yy0xMi4wNCAxLjExNi0yMy41NjUgMi45MDgtMzQuMTYxIDUuMzA5YTE2MC4zNDIgMTYwLjM0MiAwIDAgMS0xLjc2LTcuODg3Wm0xMTAuNDI3IDI3LjI2OGEzNDcuOCAzNDcuOCAwIDAgMC03Ljc4NS0xMi44MDNjOC4xNjggMS4wMzMgMTUuOTk0IDIuNDA0IDIzLjM0MyA0LjA4Yy0yLjIwNiA3LjA3Mi00Ljk1NiAxNC40NjUtOC4xOTMgMjIuMDQ1YTM4MS4xNTEgMzgxLjE1MSAwIDAgMC03LjM2NS0xMy4zMjJabS00NS4wMzItNDMuODYxYzUuMDQ0IDUuNDY1IDEwLjA5NiAxMS41NjYgMTUuMDY1IDE4LjE4NmEzMjIuMDQgMzIyLjA0IDAgMCAwLTMwLjI1Ny0uMDA2YzQuOTc0LTYuNTU5IDEwLjA2OS0xMi42NTIgMTUuMTkyLTE4LjE4Wk04Mi44MDIgODcuODNhMzIzLjE2NyAzMjMuMTY3IDAgMCAwLTcuMjI3IDEzLjIzOGMtMy4xODQtNy41NTMtNS45MDktMTQuOTgtOC4xMzQtMjIuMTUyYzcuMzA0LTEuNjM0IDE1LjA5My0yLjk3IDIzLjIwOS0zLjk4NGEzMjEuNTI0IDMyMS41MjQgMCAwIDAtNy44NDggMTIuODk3Wm04LjA4MSA2NS4zNTJjLTguMzg1LS45MzYtMTYuMjkxLTIuMjAzLTIzLjU5My0zLjc5M2MyLjI2LTcuMyA1LjA0NS0xNC44ODUgOC4yOTgtMjIuNmEzMjEuMTg3IDMyMS4xODcgMCAwIDAgNy4yNTcgMTMuMjQ2YzIuNTk0IDQuNDggNS4yOCA4Ljg2OCA4LjAzOCAxMy4xNDdabTM3LjU0MiAzMS4wM2MtNS4xODQtNS41OTItMTAuMzU0LTExLjc3OS0xNS40MDMtMTguNDMzYzQuOTAyLjE5MiA5Ljg5OS4yOSAxNC45NzguMjljNS4yMTggMCAxMC4zNzYtLjExNyAxNS40NTMtLjM0M2MtNC45ODUgNi43NzQtMTAuMDE4IDEyLjk3LTE1LjAyOCAxOC40ODZabTUyLjE5OC01Ny44MTdjMy40MjIgNy44IDYuMzA2IDE1LjM0NSA4LjU5NiAyMi41MmMtNy40MjIgMS42OTQtMTUuNDM2IDMuMDU4LTIzLjg4IDQuMDcxYTM4Mi40MTcgMzgyLjQxNyAwIDAgMCA3Ljg1OS0xMy4wMjZhMzQ3LjQwMyAzNDcuNDAzIDAgMCAwIDcuNDI1LTEzLjU2NVptLTE2Ljg5OCA4LjEwMWEzNTguNTU3IDM1OC41NTcgMCAwIDEtMTIuMjgxIDE5LjgxNWEzMjkuNCAzMjkuNCAwIDAgMS0yMy40NDQuODIzYy03Ljk2NyAwLTE1LjcxNi0uMjQ4LTIzLjE3OC0uNzMyYTMxMC4yMDIgMzEwLjIwMiAwIDAgMS0xMi41MTMtMTkuODQ2aC4wMDFhMzA3LjQxIDMwNy40MSAwIDAgMS0xMC45MjMtMjAuNjI3YTMxMC4yNzggMzEwLjI3OCAwIDAgMSAxMC44OS0yMC42MzdsLS4wMDEuMDAxYTMwNy4zMTggMzA3LjMxOCAwIDAgMSAxMi40MTMtMTkuNzYxYzcuNjEzLS41NzYgMTUuNDItLjg3NiAyMy4zMS0uODc2SDEyOGM3LjkyNiAwIDE1Ljc0My4zMDMgMjMuMzU0Ljg4M2EzMjkuMzU3IDMyOS4zNTcgMCAwIDEgMTIuMzM1IDE5LjY5NWEzNTguNDg5IDM1OC40ODkgMCAwIDEgMTEuMDM2IDIwLjU0YTMyOS40NzIgMzI5LjQ3MiAwIDAgMS0xMSAyMC43MjJabTIyLjU2LTEyMi4xMjRjOC41NzIgNC45NDQgMTEuOTA2IDI0Ljg4MSA2LjUyIDUxLjAyNmMtLjM0NCAxLjY2OC0uNzMgMy4zNjctMS4xNSA1LjA5Yy0xMC42MjItMi40NTItMjIuMTU1LTQuMjc1LTM0LjIzLTUuNDA4Yy03LjAzNC0xMC4wMTctMTQuMzIzLTE5LjEyNC0yMS42NC0yNy4wMDhhMTYwLjc4OSAxNjAuNzg5IDAgMCAxIDUuODg4LTUuNGMxOC45LTE2LjQ0NyAzNi41NjQtMjIuOTQxIDQ0LjYxMi0xOC4zWk0xMjggOTAuODA4YzEyLjYyNSAwIDIyLjg2IDEwLjIzNSAyMi44NiAyMi44NnMtMTAuMjM1IDIyLjg2LTIyLjg2IDIyLjg2cy0yMi44Ni0xMC4yMzUtMjIuODYtMjIuODZzMTAuMjM1LTIyLjg2IDIyLjg2LTIyLjg2WiIvPjwvc3ZnPg==",
31
- url: "https://react.dev",
32
- spectrum: "beaten_path",
33
- tagline: "The library for web and native user interfaces",
34
- repo: "facebook/react",
35
- selected: true,
36
- links: [
37
- {
38
- label: "Learn",
39
- href: "https://react.dev/learn"
40
- },
41
- {
42
- label: "Docs",
43
- href: "https://react.dev/reference/react"
44
- }
45
- ]
46
- },
47
- {
48
- category: "UI Framework",
49
- label: "Vue",
50
- flag: "vue",
51
- image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxLjE2ZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjU2IDIyMSI+PHBhdGggZmlsbD0iIzQxQjg4MyIgZD0iTTIwNC44IDBIMjU2TDEyOCAyMjAuOEwwIDBoOTcuOTJMMTI4IDUxLjJMMTU3LjQ0IDBoNDcuMzZaIi8+PHBhdGggZmlsbD0iIzQxQjg4MyIgZD0ibTAgMGwxMjggMjIwLjhMMjU2IDBoLTUxLjJMMTI4IDEzMi40OEw1MC41NiAwSDBaIi8+PHBhdGggZmlsbD0iIzM1NDk1RSIgZD0iTTUwLjU2IDBMMTI4IDEzMy4xMkwyMDQuOCAwaC00Ny4zNkwxMjggNTEuMkw5Ny45MiAwSDUwLjU2WiIvPjwvc3ZnPg==",
52
- url: "https://vuejs.org",
53
- tagline: "The Progressive JavaScript Framework",
54
- repo: "vuejs/core",
55
- links: [
56
- {
57
- label: "Quick start",
58
- href: "https://vuejs.org/guide/quick-start.html"
59
- },
60
- {
61
- label: "Examples",
62
- href: "https://vuejs.org/examples/#hello-world"
63
- },
64
- {
65
- label: "API",
66
- href: "https://vuejs.org/api/"
67
- }
68
- ]
69
- },
70
- {
71
- category: "UI Framework",
72
- label: "SolidJS",
73
- flag: "solid",
74
- image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxLjA4ZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIyNTYgMjM5IDI1NiAyMzkiPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0ibG9nb3NTb2xpZGpzSWNvbjAiIHgxPSIyNy41IiB4Mj0iMTUyIiB5MT0iMyIgeTI9IjYzLjUiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQ5LjU2IDIzMy4xMikgc2NhbGUoMS42MTAwNikiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9Ii4xIiBzdG9wLWNvbG9yPSIjNzZiM2UxIi8+PHN0b3Agb2Zmc2V0PSIuMyIgc3RvcC1jb2xvcj0iI2RjZjJmZCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzc2YjNlMSIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJsb2dvc1NvbGlkanNJY29uMSIgeDE9Ijk1LjgiIHgyPSI3NCIgeTE9IjMyLjYiIHkyPSIxMDUuMiIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgyNDkuNTYgMjMzLjEyKSBzY2FsZSgxLjYxMDA2KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzc2YjNlMSIvPjxzdG9wIG9mZnNldD0iLjUiIHN0b3AtY29sb3I9IiM0Mzc3YmIiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMxZjNiNzciLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0ibG9nb3NTb2xpZGpzSWNvbjIiIHgxPSIxOC40IiB4Mj0iMTQ0LjMiIHkxPSI2NC4yIiB5Mj0iMTQ5LjgiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQ5LjU2IDIzMy4xMikgc2NhbGUoMS42MTAwNikiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMzMTVhYTkiLz48c3RvcCBvZmZzZXQ9Ii41IiBzdG9wLWNvbG9yPSIjNTE4YWM4Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzE1YWE5Ii8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImxvZ29zU29saWRqc0ljb24zIiB4MT0iNzUuMiIgeDI9IjI0LjQiIHkxPSI3NC41IiB5Mj0iMjYwLjgiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQ5LjU2IDIzMy4xMikgc2NhbGUoMS42MTAwNikiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM0Mzc3YmIiLz48c3RvcCBvZmZzZXQ9Ii41IiBzdG9wLWNvbG9yPSIjMWEzMzZiIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMWEzMzZiIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggZmlsbD0iIzc2YjNlMSIgZD0iTTUxMiAyODkuNDcycy04NS4zMzMtNjIuNzkxLTE1MS4zNDctNDguMzAxbC00LjgyOSAxLjYxYy05LjY2IDMuMjIxLTE3LjcxMSA4LjA1LTIyLjU0MiAxNC40OTFsLTMuMjE5IDQuODI5bC0yNC4xNTIgNDEuODYybDQxLjg2MyA4LjA1MWMxNy43MSAxMS4yNyA0MC4yNTEgMTYuMTAxIDYxLjE4MiAxMS4yN2w3NC4wNjMgMTQuNDkxTDUxMiAyODkuNDcyWiIvPjxwYXRoIGZpbGw9InVybCgjbG9nb3NTb2xpZGpzSWNvbjApIiBkPSJNNTEyIDI4OS40NzJzLTg1LjMzMy02Mi43OTEtMTUxLjM0Ny00OC4zMDFsLTQuODI5IDEuNjFjLTkuNjYgMy4yMjEtMTcuNzExIDguMDUtMjIuNTQyIDE0LjQ5MWwtMy4yMTkgNC44MjlsLTI0LjE1MiA0MS44NjJsNDEuODYzIDguMDUxYzE3LjcxIDExLjI3IDQwLjI1MSAxNi4xMDEgNjEuMTgyIDExLjI3bDc0LjA2MyAxNC40OTFMNTEyIDI4OS40NzJaIiBvcGFjaXR5PSIuMyIvPjxwYXRoIGZpbGw9IiM1MThhYzgiIGQ9Im0zMzMuMjgyIDI4OS40NzJsLTYuNDM5IDEuNjExYy0yNy4zNzEgOC4wNS0zNS40MjEgMzMuODExLTIwLjkzMiA1Ni4zNTJjMTYuMTAxIDIwLjkzMSA0OS45MTMgMzIuMjAxIDc3LjI4NCAyNC4xNTFsOTkuODI0LTMzLjgxMXMtODUuMzM0LTYyLjc5Mi0xNDkuNzM3LTQ4LjMwM1oiLz48cGF0aCBmaWxsPSJ1cmwoI2xvZ29zU29saWRqc0ljb24xKSIgZD0ibTMzMy4yODIgMjg5LjQ3MmwtNi40MzkgMS42MTFjLTI3LjM3MSA4LjA1LTM1LjQyMSAzMy44MTEtMjAuOTMyIDU2LjM1MmMxNi4xMDEgMjAuOTMxIDQ5LjkxMyAzMi4yMDEgNzcuMjg0IDI0LjE1MWw5OS44MjQtMzMuODExcy04NS4zMzQtNjIuNzkyLTE0OS43MzctNDguMzAzWiIgb3BhY2l0eT0iLjMiLz48cGF0aCBmaWxsPSJ1cmwoI2xvZ29zU29saWRqc0ljb24yKSIgZD0iTTQ2NS4zMDggMzYxLjkyNWMtMTguNDM5LTIzLjAzNi00OS4wMDgtMzIuNTg4LTc3LjI4My0yNC4xNWwtOTkuODIzIDMyLjIwMUwyNTYgNDI2LjMyOGwxODAuMzI3IDMwLjU5MmwzMi4yMDEtNTcuOTYzYzYuNDQxLTExLjI3MSA0LjgzMS0yNC4xNS0zLjIyLTM3LjAzMloiLz48cGF0aCBmaWxsPSJ1cmwoI2xvZ29zU29saWRqc0ljb24zKSIgZD0iTTQzMy4xMDYgNDE4LjI3N2MtMTguNDM5LTIzLjAzNi00OS4wMDYtMzIuNTg4LTc3LjI4Mi0yNC4xNUwyNTYgNDI2LjMyOHM4NS4zMzMgNjQuNDAyIDE1MS4zNDYgNDguMzAzbDQuODMtMS42MTJjMjcuMzcxLTguMDQ5IDM3LjAzMS0zMy44MSAyMC45My01NC43NDJaIi8+PC9zdmc+",
75
- url: "https://www.solidjs.com",
76
- spectrum: "bleeding_edge",
77
- tagline: "Simple and performant reactivity for building user interfaces",
78
- repo: "solidjs/solid",
79
- links: [
80
- {
81
- label: "Getting started",
82
- href: "https://www.solidjs.com/guides/getting-started"
83
- },
84
- {
85
- label: "Examples",
86
- href: "https://www.solidjs.com/examples"
87
- },
88
- {
89
- label: "API",
90
- href: "https://www.solidjs.com/docs/latest/api"
91
- }
92
- ]
93
- },
94
- // CSS
95
- {
96
- category: "CSS",
97
- label: "TailwindCSS",
98
- flag: "tailwindcss",
99
- image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxLjY3ZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjU2IDE1NCI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJsb2dvc1RhaWx3aW5kY3NzSWNvbjAiIHgxPSItMi43NzglIiB4Mj0iMTAwJSIgeTE9IjMyJSIgeTI9IjY3LjU1NiUiPjxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiMyMjk4QkQiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwRUQ3QjUiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cGF0aCBmaWxsPSJ1cmwoI2xvZ29zVGFpbHdpbmRjc3NJY29uMCkiIGQ9Ik0xMjggMEM5My44NjcgMCA3Mi41MzMgMTcuMDY3IDY0IDUxLjJDNzYuOCAzNC4xMzMgOTEuNzMzIDI3LjczMyAxMDguOCAzMmM5LjczNyAyLjQzNCAxNi42OTcgOS40OTkgMjQuNDAxIDE3LjMxOEMxNDUuNzUxIDYyLjA1NyAxNjAuMjc1IDc2LjggMTkyIDc2LjhjMzQuMTMzIDAgNTUuNDY3LTE3LjA2NyA2NC01MS4yYy0xMi44IDE3LjA2Ny0yNy43MzMgMjMuNDY3LTQ0LjggMTkuMmMtOS43MzctMi40MzQtMTYuNjk3LTkuNDk5LTI0LjQwMS0xNy4zMThDMTc0LjI0OSAxNC43NDMgMTU5LjcyNSAwIDEyOCAwWk02NCA3Ni44QzI5Ljg2NyA3Ni44IDguNTMzIDkzLjg2NyAwIDEyOGMxMi44LTE3LjA2NyAyNy43MzMtMjMuNDY3IDQ0LjgtMTkuMmM5LjczNyAyLjQzNCAxNi42OTcgOS40OTkgMjQuNDAxIDE3LjMxOEM4MS43NTEgMTM4Ljg1NyA5Ni4yNzUgMTUzLjYgMTI4IDE1My42YzM0LjEzMyAwIDU1LjQ2Ny0xNy4wNjcgNjQtNTEuMmMtMTIuOCAxNy4wNjctMjcuNzMzIDIzLjQ2Ny00NC44IDE5LjJjLTkuNzM3LTIuNDM0LTE2LjY5Ny05LjQ5OS0yNC40MDEtMTcuMzE4QzExMC4yNDkgOTEuNTQzIDk1LjcyNSA3Ni44IDY0IDc2LjhaIi8+PC9zdmc+",
100
- url: "https://tailwindcss.com",
101
- spectrum: "beaten_path",
102
- tagline: "Rapidly build modern websites without ever leaving your HTML",
103
- repo: "tailwindlabs/tailwindcss",
104
- links: [
105
- {
106
- label: "Docs",
107
- href: "https://tailwindcss.com/docs/installation"
108
- }
109
- ]
110
- },
111
- {
112
- category: "CSS",
113
- label: "Compiled",
114
- flag: "compiled-css",
115
- image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAFf0lEQVR4nLSaXWzbVBvHz3OOncRJnY926vp27Uu7Tm3Vsi7hsxpDRahjrMAFEqsYlAk6IQECpF2ttEwwGBLccAE3fAmhCfEhJK4AiQ+BGGKirJuYhoRg68pKV5bSZCEfrpPYMXLSpE5iJ3ZyciRfxD5+nud3nuc5/9ouc/fjh1Ajhgxc09Kmx76QCL+5Y/WNMbu0Mt8IP7gRRtXxj/uuo0lb560y8fauuseONcpPQwDW2I6BqGv46fzvhGNon8i0DzbCV0MAQvyeFxBgpnACEAnzo9ON8EUdQGTa+wTH4L2l5+Pc0HiSae2h7Y86wNWmkUMIdOwCZkL87hna/qgCyMDxcaf/QaPrcS4wQTsLVAGizuvHFWCbDCcAZkP8nc/T9EkVIMb5x6vNiXP+/SLTPkDLJzUAGTiXaOsaqToREAm57zhCyy81AMHWvQsBtpuZu64LVLJADUC0b91penI2C3uP0vBLD4DdErAyP8EN3rfGdgzV65caQJpp7bN6z9Wm2w/X65cKgIIAScTzf6v30VBnKgASuLwIsMPyjRTUmU4GsM1d671xLvCQyLRZLr/8oAKQAYep7VN3qFlw167OVABAScn13F+PLlACkBL1GahdnakAMBkhXK+NXBas94JlgEi6ZehvsXNMUQA2jKTSkFkLWrVVNGp8arMEEJW8vScje0+djo58fjY2/JqibFyzSavnrTovHXHO/4BVXbAEsCBuPwyY2DDG6LK47cmLwsAT+Wu29PKvVmzpjhp0wTSAIPOdQalnAgCj7IEB/S5c96paUup1R2pprpaYS4fVpzbTAAupwDMIGBtgjDAGpGYBMLGfS+x8U+0HLnXhRM1Ra0f2qc18FkwBJDKe7mCmbxJng1cD3zgSmZbhS2L/pF0KnidS5EJdwa8PK+psCuBP6cYjCBh7Lujc6mth5pOBY3KG5ZrEc5/WHT2yps5VARIZX88q6psoDTp/qL9l4NoWU/0HeeHMB1QALKhzVYC/lJtnAAibX31t4AUYwOhyevApLnXpLJu+QqWZzapzRQBB8V4Tgv4Jo9LJB6/+TiJ3b0jesssXP/E6FQCT6lwRYBkPTyFMWKPSKT2/Im3b7xbmPiTyvwtUCEyosyGAiDwdIXztI0aB51d/4zygkNJ1DyhS2hf7/hUqACbU2RBgmdwyhXBu58Ga8ikEDtos5HpDAldnQvH1eBM/vkfk2BIVgirqrAsggrcjzO44qA2utOZLM5PPTkxpuwmjdNIX+/ZlKgBV1FkX4Ipt5FnAjKNazeudF1DLdtWGN3HybSLR6gXjd6plACLe1B2x+Sd1gwa9oIu3VhH5tuYMp1PNsa9fpAJQ4Z1qGUDQcds0rO88heDUstEtHShrbAm7NudteYTZ40SK1P1ndnYY6EIRgIg3dUUd/gNFwYFRves3tvb1Okay3Bz75iUqAAbqXASw6hqdzv29vx4c6DdqGZAmOwizRGvTI8y+z0iRP6gQ6GShAJAkrd0xZ+Bh/T3eXAOrBwNyotiBmoWvnqMCoPPFswAQ4ken1NovXVH9oMGwsW0grJQ69QizH7Pplfqf2FC5OmcBUqS5Pe4MHMg1K6my0pUb246iF8t9Koov/h1Fdd54p5oFCPO7pxAQB4C65aoHyX7mNax3w8bGyImCv+g5dQtzHzFShM6/G2jUGadI8/+izhseLboOCOECiEHpGGSHlxd/0POJkSz5KO5IeXXGIX7PjLr6uqBqRrKrTQwbWwvDKaE5hxJeNHKq6gIjhX+jQrCuzjjO7bi/4jzQguiXVf5cS/rMO5VsZXek6JfUPrPGOf8+7BZOvYsQqvpytrg/SNkuxWWCPzUn545Xs+NZO/0Jl5z/rN7gFYQyvPDzW/8FAAD//wWcstmJqV1FAAAAAElFTkSuQmCC",
116
- url: "https://compiledcssinjs.com",
117
- tagline: "A familiar and performant compile time CSS-in-JS library for React.",
118
- repo: "atlassian-labs/compiled",
119
- links: [
120
- {
121
- label: "Docs",
122
- href: "https://compiledcssinjs.com/docs/"
123
- }
124
- ]
125
- },
126
- // UI Component Libraries
127
- {
128
- category: "UI Component Libraries",
129
- label: "daisyUI",
130
- flag: "daisyui",
131
- dependsOn: ["tailwindcss"],
132
- image: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nMzInIGhlaWdodD0nMzInIHZpZXdCb3g9JzAgMCA0MTUgNDE1JyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxyZWN0IHg9JzgyLjUnIHk9JzI5MCcgd2lkdGg9JzI1MCcgaGVpZ2h0PScxMjUnIHJ4PSc2Mi41JyBmaWxsPScjMUFEMUE1Jz48L3JlY3Q+PGNpcmNsZSBjeD0nMjA3LjUnIGN5PScxMzUnIHI9JzEzMCcgZmlsbD0nYmxhY2snIGZpbGwtb3BhY2l0eT0nLjMnPjwvY2lyY2xlPjxjaXJjbGUgY3g9JzIwNy41JyBjeT0nMTM1JyByPScxMjUnIGZpbGw9J3doaXRlJz48L2NpcmNsZT48Y2lyY2xlIGN4PScyMDcuNScgY3k9JzEzNScgcj0nNTYnIGZpbGw9JyNGRjk5MDMnPjwvY2lyY2xlPjwvc3ZnPg==",
133
- url: "https://daisyui.com",
134
- tagline: "The most popular component library for Tailwind CSS",
135
- repo: "saadeghi/daisyui",
136
- links: [
137
- {
138
- label: "Docs",
139
- href: "https://daisyui.com/docs/use/"
140
- }
141
- ]
142
- },
143
- {
144
- category: "UI Component Libraries",
145
- label: "shadcn/ui",
146
- flag: "shadcn-ui",
147
- dependsOn: ["tailwindcss", "react"],
148
- image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBjbGFzcz0iaC02IHctNiI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgyNTZ2MjU2SDB6Ii8+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxNiIgZD0ibTIwOCAxMjgtODAgODBtNjQtMTY4TDQwIDE5MiIvPjwvc3ZnPg==",
149
- url: "https://ui.shadcn.com",
150
- tagline: "Beautifully designed components that you can copy and paste into your apps.",
151
- repo: "shadcn-ui/ui",
152
- links: [
153
- {
154
- label: "Docs",
155
- href: "https://ui.shadcn.com/docs"
156
- }
157
- ]
158
- },
159
- {
160
- category: "UI Component Libraries",
161
- label: "Mantine",
162
- flag: "mantine",
163
- dependsOn: ["react"],
164
- image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAxNjMgMTYzIj48cGF0aCBmaWxsPSIjMzM5QUYwIiBkPSJNMTYyLjE2MiA4MS41YzAtNDUuMDExLTM2LjMwMS04MS41LTgxLjA4LTgxLjVDMzYuMzAxIDAgMCAzNi40ODkgMCA4MS41IDAgMTI2LjUxIDM2LjMwMSAxNjMgODEuMDgxIDE2M3M4MS4wODEtMzYuNDkgODEuMDgxLTgxLjUiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNNjUuOTgzIDQzLjA0OWE2LjIzIDYuMjMgMCAwIDAtLjMzNiA2Ljg4NCA2LjEgNi4xIDAgMCAwIDEuNjE4IDEuNzg2YzkuNDQ0IDcuMDM2IDE0Ljg2NiAxNy43OTQgMTQuODY2IDI5LjUycy01LjQyMiAyMi40ODQtMTQuODY2IDI5LjUyYTYuMiA2LjIgMCAwIDAtMS42MTYgMS43ODYgNi4yIDYuMiAwIDAgMC0uNjk0IDQuNjkzIDYuMiA2LjIgMCAwIDAgMS4wMjggMi4xODYgNi4xNSA2LjE1IDAgMCAwIDYuNDU3IDIuMzE5IDYuMiA2LjIgMCAwIDAgMi4xNzctMS4wMzUgNTAgNTAgMCAwIDAgNy45NDctNy4zOWgxNy40OTNjMy40MDYgMCA2LjE3NC0yLjc3MiA2LjE3NC02LjE5NHMtMi43NjItNi4xOTQtNi4xNzQtNi4xOTRoLTkuNjU1YTQ5LjIgNDkuMiAwIDAgMCA0LjA3MS0xOS42OSA0OS4yIDQ5LjIgMCAwIDAtNC4wNy0xOS42OTJoOS42NmMzLjQwNiAwIDYuMTczLTIuNzcxIDYuMTczLTYuMTk0cy0yLjc2Mi02LjE5My02LjE3My02LjE5M0g4Mi41NzRhNTAgNTAgMCAwIDAtNy45NTItNy4zOTcgNi4xNSA2LjE1IDAgMCAwLTQuNTc4LTEuMTUzIDYuMiA2LjIgMCAwIDAtNC4wNTUgMi40Mzh6Ii8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNTYuMjM2IDc5LjM5MWE5LjMgOS4zIDAgMCAxIC42MzItMy42MDggOS4zIDkuMyAwIDAgMSAxLjk2Ny0zLjA3NyA5LjEgOS4xIDAgMCAxIDIuOTk0LTIuMDYzIDkuMDYgOS4wNiAwIDAgMSA3LjEwMyAwIDkuMTUgOS4xNSAwIDAgMSAyLjk5NSAyLjA2MyA5LjMgOS4zIDAgMCAxIDEuOTY3IDMuMDc3IDkuMzQgOS4zNCAwIDAgMS0yLjEyNSAxMC4wMDMgOS4xIDkuMSAwIDAgMS02LjM4OCAyLjYzIDkuMSA5LjEgMCAwIDEtNi4zOS0yLjYzIDkuMyA5LjMgMCAwIDEtMi43NTUtNi4zOTUiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==",
165
- url: "https://mantine.dev",
166
- tagline: "A fully featured React components library.",
167
- repo: "mantinedev/mantine",
168
- links: [
169
- {
170
- label: "Docs",
171
- href: "https://mantine.dev/getting-started/"
172
- }
173
- ]
174
- },
175
- // Auth
176
- {
177
- category: "Auth",
178
- label: "Auth.js",
179
- flag: "authjs",
180
- image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0iIzg4ODg4OCIgZD0ibTUwLjAyNyAxMC40NTlsLS4wMTgtLjAzMmwtMzMuNjA2IDE5LjQwNGwuMDc2LjEzMnYyMi44OTNoLjAxNGMuMjg2IDE5LjExMSAxNC44NTkgMzQuNzU1IDMzLjUxOSAzNi43MThjMTguNjYtMS45NjIgMzMuMjM0LTE3LjYwNiAzMy41MTktMzYuNzE4VjI5Ljk1M2wuMDY2LS4xMTRsLTMzLjU3LTE5LjM4em0tLjAxNSA2OS4wOTdWNTEuNjc3SDI2LjQzNVYzNS42NTFMNTAuMDEyIDIyLjA0djI5LjYzN2gyMy41NjN2MS4xNzloLjAxN2MtLjI3OCAxMy41OTMtMTAuNDM5IDI0Ljc5OC0yMy41OCAyNi43eiIvPjwvc3ZnPg==",
181
- url: "https://authjs.dev",
182
- spectrum: "bleeding_edge",
183
- tagline: "Authentication for the Web",
184
- repo: "nextauthjs/next-auth",
185
- links: [
186
- {
187
- label: "Getting started",
188
- href: "https://authjs.dev/getting-started/introduction"
189
- },
190
- {
191
- label: "API",
192
- href: "https://authjs.dev/reference"
193
- }
194
- ]
195
- },
196
- {
197
- category: "Auth",
198
- label: "Auth0",
199
- flag: "auth0",
200
- image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIwLjllbSIgaGVpZ2h0PSIxZW0iIHZpZXdCb3g9IjAgMCAyNTYgMjg1Ij48cGF0aCBkPSJNMjIwLjQxMiAwaC05Mi40MTVsMjguNTYyIDg5LjAwNmg5Mi40MTZsLTc0Ljc3IDUzLjA3N2wyOC41NyA4OS41MTFjNDguMTI4LTM1LjA2IDYzLjg1NC04OC4xMiA0Ni4yMDgtMTQyLjU4OEwyMjAuNDEzIDBaTTcuMDE4IDg5LjAwNmg5Mi40MTZMMTI3Ljk5NyAwSDM1LjU4OUw3LjAxOSA4OS4wMDZjLTE3LjY1NSA1NC40NjgtMS45MiAxMDcuNTI5IDQ2LjIwNyAxNDIuNTg4bDI4LjU2My04OS41MWwtNzQuNzctNTMuMDc4Wm00Ni4yMDggMTQyLjU4OGw3NC43NyA1Mi45N2w3NC43Ny01Mi45N2wtNzQuNzctNTMuODQ3bC03NC43NyA1My44NDdaIi8+PC9zdmc+",
201
- url: "https://auth0.com",
202
- tagline: "Secure access for everyone. But not just anyone.",
203
- repo: "nextauthjs/next-auth",
204
- links: [
205
- {
206
- label: "Auth0 doc",
207
- href: "https://auth0.com/docs"
208
- },
209
- {
210
- label: "Auth.js auth0 provider doc",
211
- href: "https://authjs.dev/reference/core/providers/auth0"
212
- }
213
- ]
214
- },
215
- // RPC
216
- {
217
- category: "Data fetching",
218
- label: "Telefunc",
219
- flag: "telefunc",
220
- image: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDcuMDIiIGhlaWdodD0iNDcuMDIiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDQ3LjAyIDQ3LjAyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPGNpcmNsZSBjeD0iMjMuNTEiIGN5PSIyMy41MSIgcj0iMjEuOTUiIGZpbGw9IiNmN2UwMTgiIHN0cm9rZT0iIzMxMzQzZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzLjEyIiBzdHlsZT0icGFpbnQtb3JkZXI6bm9ybWFsIi8+CiA8ZyB0cmFuc2Zvcm09Im1hdHJpeCguOTU1MDMgMCAwIC45NTUwMyAuMzQ0MDUgMS4wMTE3KSIgZmlsbD0iIzMxMzQzZCIgc2hhcGUtcmVuZGVyaW5nPSJhdXRvIj4KICA8cGF0aCBkPSJtMjEuODA0IDEzLjkxMyA2LjQzMzMgOS42NDU4LTYuNDMzMyA5LjY0NDFoNS44ODI0bDMuNDkzLTUuMjM1MiAzLjQ5MTMgNS4yMzUyaDUuODgyNGwtMTIuODY3LTE5LjI5eiIgY29sb3I9IiMwMDAwMDAiIGNvbG9yLXJlbmRlcmluZz0iYXV0byIgZG9taW5hbnQtYmFzZWxpbmU9ImF1dG8iIGltYWdlLXJlbmRlcmluZz0iYXV0byIgc29saWQtY29sb3I9IiMwMDAwMDAiIHN0eWxlPSJmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO2ZvbnQtdmFyaWFudC1hbHRlcm5hdGVzOm5vcm1hbDtmb250LXZhcmlhbnQtY2Fwczpub3JtYWw7Zm9udC12YXJpYW50LWxpZ2F0dXJlczpub3JtYWw7Zm9udC12YXJpYW50LW51bWVyaWM6bm9ybWFsO2ZvbnQtdmFyaWFudC1wb3NpdGlvbjpub3JtYWw7aXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsO3NoYXBlLXBhZGRpbmc6MDt0ZXh0LWRlY29yYXRpb24tY29sb3I6IzAwMDAwMDt0ZXh0LWRlY29yYXRpb24tbGluZTpub25lO3RleHQtZGVjb3JhdGlvbi1zdHlsZTpzb2xpZDt0ZXh0LWluZGVudDowO3RleHQtb3JpZW50YXRpb246bWl4ZWQ7dGV4dC10cmFuc2Zvcm06bm9uZTt3aGl0ZS1zcGFjZTpub3JtYWwiLz4KICA8cGF0aCBkPSJtMTQuODgyIDEzLjkxMyA2LjQzMzMgOS42NDU4LTYuNDMzMyA5LjY0NDFoNS44ODI0YzIuMDg1NS0zLjI5MTEgNC4wNDUyLTYuMjk1OSA2LjIyMjEtOS45NjE4bC02LjIyMjEtOS4zMjgxeiIgY29sb3I9IiMwMDAwMDAiIGNvbG9yLXJlbmRlcmluZz0iYXV0byIgZG9taW5hbnQtYmFzZWxpbmU9ImF1dG8iIGZpbGwtb3BhY2l0eT0iLjU3MzE1IiBpbWFnZS1yZW5kZXJpbmc9ImF1dG8iIHNvbGlkLWNvbG9yPSIjMDAwMDAwIiBzdHlsZT0iZm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDtmb250LXZhcmlhbnQtYWx0ZXJuYXRlczpub3JtYWw7Zm9udC12YXJpYW50LWNhcHM6bm9ybWFsO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1udW1lcmljOm5vcm1hbDtmb250LXZhcmlhbnQtcG9zaXRpb246bm9ybWFsO2lzb2xhdGlvbjphdXRvO21peC1ibGVuZC1tb2RlOm5vcm1hbDtzaGFwZS1wYWRkaW5nOjA7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiMwMDAwMDA7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb24tc3R5bGU6c29saWQ7dGV4dC1pbmRlbnQ6MDt0ZXh0LW9yaWVudGF0aW9uOm1peGVkO3RleHQtdHJhbnNmb3JtOm5vbmU7d2hpdGUtc3BhY2U6bm9ybWFsIi8+CiAgPHBhdGggZD0ibTcuOTYwNCAxMy45MTMgNi40MzMzIDkuNjQ1OC02LjQzMzMgOS42NDQxaDUuODgyNGMyLjA4NTUtMy4yOTExIDQuMDQ1Mi02LjI5NTkgNi4yMjIxLTkuOTYxOGwtNi4yMjIxLTkuMzI4MXoiIGNvbG9yPSIjMDAwMDAwIiBjb2xvci1yZW5kZXJpbmc9ImF1dG8iIGRvbWluYW50LWJhc2VsaW5lPSJhdXRvIiBmaWxsLW9wYWNpdHk9Ii4yNzY1NSIgaW1hZ2UtcmVuZGVyaW5nPSJhdXRvIiBzb2xpZC1jb2xvcj0iIzAwMDAwMCIgc3R5bGU9ImZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYW50LWFsdGVybmF0ZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtbGlnYXR1cmVzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWw7Zm9udC12YXJpYW50LXBvc2l0aW9uOm5vcm1hbDtpc29sYXRpb246YXV0bzttaXgtYmxlbmQtbW9kZTpub3JtYWw7c2hhcGUtcGFkZGluZzowO3RleHQtZGVjb3JhdGlvbi1jb2xvcjojMDAwMDAwO3RleHQtZGVjb3JhdGlvbi1saW5lOm5vbmU7dGV4dC1kZWNvcmF0aW9uLXN0eWxlOnNvbGlkO3RleHQtaW5kZW50OjA7dGV4dC1vcmllbnRhdGlvbjptaXhlZDt0ZXh0LXRyYW5zZm9ybTpub25lO3doaXRlLXNwYWNlOm5vcm1hbCIvPgogPC9nPgo8L3N2Zz4K",
221
- url: "https://telefunc.com",
222
- tagline: "Remote Functions. Instead of API",
223
- repo: "brillout/telefunc",
224
- spectrum: "bleeding_edge"
225
- },
226
- {
227
- category: "Data fetching",
228
- label: "tRPC",
229
- flag: "trpc",
230
- image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIwLjg0ZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjU2IDMwNSI+PHBhdGggZmlsbD0iIzM5OENDQiIgZD0iTTI4LjU3IDI0NC40ODRoMjEuOTgydjExLjE1M0gyOC41NzF2MjUuMzA4YTE2Ljg4IDE2Ljg4IDAgMCAwIC43MzggNS4zNjRhOC4xNTIgOC4xNTIgMCAwIDAgMi4wODggMy40YTcuODE1IDcuODE1IDAgMCAwIDMuMyAxLjg1MWMxLjIzNS4zMyAyLjUwNC41MSAzLjc4LjUzNmwuNTQ3LjAwMmMxLjE1IDAgMi4zMzggMCAzLjU2My0uMTYybC43MjctLjA5bDEuNDA5LS4xNmMuNDYxLS4wNTQuOTE1LS4xMTMgMS4zNjYtLjE4OGwuNjYtLjEwNWwxLjI0LS4xODRjLjQwMS0uMDYuNzktLjEyNCAxLjE3NS0uMTk5bC45MTgtLjE4NGwuNDI3LS4wOWwuNzktLjE3NmwuMzY2LS4wODdsMS40NzYgMTAuMzlhMTguNTA1IDE4LjUwNSAwIDAgMS0zLjc1MiAxLjZhMzUuOSAzNS45IDAgMCAxLTQuNTEzIDEuMTEzYy0xLjYuMy0zLjI2NC41MjYtNS4wMDIuNjg4YTU0LjI4IDU0LjI4IDAgMCAxLTUuMDg5LjIzOGEyOC4zOTYgMjguMzk2IDAgMCAxLTguNzUyLTEuMjVhMTYuODMgMTYuODMgMCAwIDEtNi43MjctNC4wMDJhMTcuMzQzIDE3LjM0MyAwIDAgMS00LjMwMi02Ljg1MmEyOS4xOTYgMjkuMTk2IDAgMCAxLTEuNTI1LTEwLjAwM3YtMjYuNzU4SDB2LTExLjE1M2gxMy40NDF2LTE0LjQxN2gxNS4xM3YxNC40MTdabTUzLjg4IDI5LjI3MXYyOS42MDlINjcuMTU2di03OS4yMzZoMjYuNjJhNDIuNTIgNDIuNTIgMCAwIDEgMTEuOTE2IDEuNTVhMjYuNjcgMjYuNjcgMCAwIDEgOS4xNCA0LjU1MmExOS44OCAxOS44OCAwIDAgMSA1Ljc5IDcuNTAyYTI0LjU3IDI0LjU3IDAgMCAxIDIuMDUgMTAuMzRhMjYuNzIgMjYuNzIgMCAwIDEtMS4wMTIgNy42NGEyMC4zMzEgMjAuMzMxIDAgMCAxLTcuNDAzIDEwLjgwNGEzMC4wOTYgMzAuMDk2IDAgMCAxLTUuOTAxIDMuNDg4bDE3LjAzIDMyLjY5N3YuNzEzaC0xNi40NDNMOTQuMDQgMjczLjc1NUg4Mi40NVptLjAxMi0xMi40MjhoMTEuMzE1YTE3Ljg2OCAxNy44NjggMCAwIDAgNi4yNTItMWExMC44NjYgMTAuODY2IDAgMCAwIDQuMzktMi45MTRhMTAuNTI4IDEwLjUyOCAwIDAgMCAyLjExMi0zLjU4OWMuNDQ4LTEuMzU4LjY5Mi0yLjc3NS43MjMtNC4yMDNsLjAwMi0uNTM2YTE1LjEwNCAxNS4xMDQgMCAwIDAtLjk1LTUuNTc2YTkuODY1IDkuODY1IDAgMCAwLTIuODUtNC4wMDFhMTIuMDY2IDEyLjA2NiAwIDAgMC00LjE0LTIuMTc2YTE5LjE0MyAxOS4xNDMgMCAwIDAtNC45Ny0uNzZsLTExLjg4NC0uMDAzdjI0Ljc1OFptNjcuODQ1IDQyLjAzN0gxMzUuMDR2LTc5LjIzNmgyNy4wOTVhMzQuNDEgMzQuNDEgMCAwIDEgMTEuNzAzIDEuODc2YTI2LjYzMyAyNi42MzMgMCAwIDEgOC45MjggNS4yMDFhMjMuMzA3IDIzLjMwNyAwIDAgMSA1LjYyNyA4LjA1M2EyNi4zNTggMjYuMzU4IDAgMCAxIDEuOTg4IDkuNzIzdi42NjdhMjQuMTcgMjQuMTcgMCAwIDEtMS45ODggOS44NTNhMjIuNTA3IDIyLjUwNyAwIDAgMS01LjYyNyA3Ljc3N2EyNi4zNyAyNi4zNyAwIDAgMS04Ljk2NSA1LjE3N2EzNC43MjMgMzQuNzIzIDAgMCAxLTExLjcwNCAxLjg1aC0xMS44MDNsLjAxMyAyOS4wNTlabTAtNDEuNDYyaDExLjgwM2ExNS4wMDQgMTUuMDA0IDAgMCAwIDUuNjY0LS45ODhhMTEuNTUzIDExLjU1MyAwIDAgMCA0LjAyNi0yLjY2M2ExMS4xNzggMTEuMTc4IDAgMCAwIDIuMzY0LTMuODg5Yy41My0xLjQ3Ni44LTMuMDMzLjgtNC42MDFhMTYuMzY3IDE2LjM2NyAwIDAgMC0uOC01LjE2NGExMS45NjYgMTEuOTY2IDAgMCAwLTIuMzY0LTQuMjAyYTExLjU5IDExLjU5IDAgMCAwLTQuMDI2LTIuODI1YTE0LjI2NyAxNC4yNjcgMCAwIDAtNS42NjQtMS4wMzhoLTExLjgwM3YyNS4zN1ptMTAzLjA0MiAyNy40MmEyNS4zMDcgMjUuMzA3IDAgMCAxLTUuOTAyIDguMTY1YTI2LjA0NSAyNi4wNDUgMCAwIDEtOC44MTUgNS4yMDJhMzMuNjQ3IDMzLjY0NyAwIDAgMS0xMC41NTggMS44MTRsLS43Ny0uMDAxYTMwLjc1OSAzMC43NTkgMCAwIDEtOS4wNTMtMS4yNWEyNS4zNDUgMjUuMzQ1IDAgMCAxLTcuNTAyLTMuNjc3YTI1LjcwNyAyNS43MDcgMCAwIDEtNS40MTQtNS4zODlhMzMuNjcyIDMzLjY3MiAwIDAgMS00LjAwMS02Ljk2NGE0MS41NzUgNDEuNTc1IDAgMCAxLTIuNDEzLTguMzc4YTUzLjQwOCA1My40MDggMCAwIDEtLjg1MS05LjY5di0xMC42NjZhNTMuNDMgNTMuNDMgMCAwIDEgLjc2My05LjExNWEzOS40MTEgMzkuNDExIDAgMCAxIDEuOTUtNy4xNjFsLjMzOC0uODY2YTMwLjQwOSAzMC40MDkgMCAwIDEgNC41NzctOC4wNTNhMjkuMjcxIDI5LjI3MSAwIDAgMSA2LjQxNC01Ljk3NmEyNi4xNTggMjYuMTU4IDAgMCAxIDcuMDUyLTMuMTg5YTI5LjEwOCAyOS4xMDggMCAwIDEgNy40OC0xLjExbC43Ni0uMDAzYTMzLjc2IDMzLjc2IDAgMCAxIDExLjYxNiAxLjg1YTIzLjc1NyAyMy43NTcgMCAwIDEgMTQuMzQyIDEzLjY1NWEzNy40MTEgMzcuNDExIDAgMCAxIDIuNjEzIDExLjE1M2gtMTUuMjNjLS4wOS0yLjEyLS40NDItNC4yMi0xLjA1LTYuMjUyYTEyLjM1NCAxMi4zNTQgMCAwIDAtMi40MjUtNC40NjNhMTAuNDE2IDEwLjQxNiAwIDAgMC00LjA1Mi0yLjYzOWExNi43MyAxNi43MyAwIDAgMC01LjgwMS0uOWExNC4yNDIgMTQuMjQyIDAgMCAwLTMuMzUxLjM4OGMtMSAuMjQzLTEuOTU5LjYyNi0yLjg1MSAxLjEzN2ExMS4zMjggMTEuMzI4IDAgMCAwLTMuNzUxIDMuNzUyYTIxLjk2OSAyMS45NjkgMCAwIDAtMi41MDEgNS42MzlhMzQuMDEgMzQuMDEgMCAwIDAtMS4wMjUgNS41MjZhNTguNzY3IDU4Ljc2NyAwIDAgMC0uMzI1IDYuNTAydjEwLjc2NmE2MS4yOCA2MS4yOCAwIDAgMCAuNTEyIDguNDY1YTI4LjkyIDI4LjkyIDAgMCAwIDEuNiA2LjUwMmExNS45OTIgMTUuOTkyIDAgMCAwIDEuODI2IDMuMzc2Yy42NjcuOTYgMS40ODcgMS44MDQgMi40MjYgMi41YTEwLjAwMyAxMC4wMDMgMCAwIDAgMy4yODggMS42YTE0LjU2IDE0LjU2IDAgMCAwIDQuMDUyLjUyNmExNy45MTggMTcuOTE4IDAgMCAwIDUuMzg5LS43NjNhMTAuMzAzIDEwLjMwMyAwIDAgMCA0LjA4OC0yLjRhMTEuMjUzIDExLjI1MyAwIDAgMCAyLjY2NC00LjE5YTIwLjk2OSAyMC45NjkgMCAwIDAgMS4yNS02LjE1SDI1NmEzMC4zOTYgMzAuMzk2IDAgMCAxLTIuNjUgMTAuNzI3Wk0xODYuMzggOTIuNDAybDM4LjQ4NiAyMi4yMnY0NC40NjJsLTM4LjQ4NiAyMi4yMmwtMTcuMDg1LTkuODgxbC00MS41NDUgMjMuOTg0bC00MS4yOTYtMjMuODQ3bC0xNi44NDYgOS43NDNsLTM4LjQ4Ni0yMi4yNTZWMTE0LjYybDM4LjQ4Ni0yMi4yMTlsMzguNDg2IDIyLjIydjQ0LjQyNWwtMTEuNjQzIDYuNzMzbDMxLjI5OSAxOC4wNzRsMzEuNTQ4LTE4LjIxMmwtMTEuNDA1LTYuNTk1VjExNC42MmwzOC40ODctMjIuMjE5Wk0xNTcuODk2IDEyNi4ydjI3LjEybDIzLjQ4MiAxMy41NTV2LTI3LjEyTDE1Ny44OTYgMTI2LjJabTU2Ljk2Ny0uMDM3bC0yMy40ODIgMTMuNTU0djI3LjE1OGwyMy40ODItMTMuNTkydi0yNy4xMlptLTE3My43MzggMHYyNy4xMmwyMy40ODEgMTMuNTU0di0yNy4xMmwtMjMuNDgxLTEzLjU1NFptNTYuOTY2IDBMNzQuNjEgMTM5LjcxNnYyNy4xMmwyMy40ODItMTMuNTU0di0yNy4xMlptODguMjg5LTIyLjE4MmwtMjMuNDgyIDEzLjU1NGwyMy40ODIgMTMuNTY3bDIzLjQ4MS0xMy41NjdsLTIzLjQ4MS0xMy41NTRabS0xMTYuNzcyLS4wMzdsLTIzLjQ4MiAxMy41OTFsMjMuNDgyIDEzLjUzbDIzLjQ4Mi0xMy41M2wtMjMuNDgyLTEzLjU5MVptMTkuMTQzLTY4LjkydjExLjU0bC0zNS42MSAyMC41N3YzNC43NzJsLTEwLjAwMyA1Ljc3N1Y2MS4zNTVMODguNzUgMzUuMDIzWk0xMjcuMjM3IDBsMzguNTEyIDIyLjIxOXYxMi4yMTlsNDYuNjEzIDI2LjkxN3Y0Ni4wMzlsLTEwLjAwMy01Ljc3N1Y2Ny4xMzJsLTM2LjYxLTIxLjE0MXYyMC42NjZsLTM4LjQ4NyAyMi4yMTlsLTM4LjQ4Ni0yMi4yMTlWMjIuMjE5TDEyNy4yMzcgMFpNOTguNzggMzMuNzZ2MjcuMTJsMjMuNDU3IDEzLjU1NFY0Ny4zMjZMOTguNzc5IDMzLjc2Wm01Ni45NDIgMGwtMjMuNDU3IDEzLjU2NnYyNy4wOTZMMTU1LjcyIDYwLjg4VjMzLjc2Wm0tMjguNDg0LTIyLjIwN0wxMDMuNzggMjUuMTA3bDIzLjQ1NyAxMy41NTRsMjMuNDgyLTEzLjU1NGwtMjMuNDgyLTEzLjU1NFoiLz48L3N2Zz4=",
231
- url: "https://trpc.io",
232
- spectrum: "beaten_path",
233
- tagline: "End-to-end typesafe APIs made easy",
234
- repo: "trpc/trpc",
235
- links: [
236
- {
237
- label: "Getting started",
238
- href: "https://trpc.io/docs/getting-started"
239
- },
240
- {
241
- label: "Docs",
242
- href: "https://trpc.io/docs"
243
- }
244
- ]
245
- },
246
- {
247
- category: "Data fetching",
248
- label: "ts-rest",
249
- flag: "ts-rest",
250
- image: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nMTE2JyBoZWlnaHQ9JzExNScgdmlld0JveD0nMCAwIDExNiAxMTUnIGZpbGw9J25vbmUnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+PGcgY2xpcC1wYXRoPSd1cmwoI2NsaXAwXzEzXzIwKSc+PHJlY3Qgd2lkdGg9JzExNicgaGVpZ2h0PScxMTYnIHJ4PScyNicgZmlsbD0nIzkzMzNFQScvPjxwYXRoIGQ9J002Mi40ODcgNTkuOTU2Nkw5NS4xMTY2IDYwLjEyNjJMOTUuMTQ5MyA1My44MjEyTDYyLjUxOTggNTMuNjUxN0w2Mi40ODcgNTkuOTU2NlpNNjIuNTg2MyA0MC44NDY5TDk1LjIxNTkgNDEuMDE2NEw5NS4yNDkzIDM0LjU4MTVMNjIuNjE5NyAzNC40MTJMNjIuNTg2MyA0MC44NDY5Wk02Mi40MTY4IDczLjQ3NjVMOTUuMDQ2MyA3My42NDZMOTUuMDEyOSA4MC4wODA5TDYyLjM4MzMgNzkuOTExNEw2Mi40MTY4IDczLjQ3NjVaJyBmaWxsPSd3aGl0ZScvPjxwYXRoIGQ9J000Ni4wNiA2NC45MkM1Mi4zIDYyLjU4IDU1Ljg3NSA1Ny41MSA1NS44NzUgNTAuNTU1QzU1Ljg3NSA0MC41NDUgNDguNTk1IDM0LjUgMzYuNyAzNC41SDE4LjVWNDAuOTM1SDM2LjQ0QzQ0LjMwNSA0MC45MzUgNDguNCA0NC40NDUgNDguNCA1MC41NTVDNDguNCA1Ni42IDQ0LjMwNSA2MC4xNzUgMzYuNDQgNjAuMTc1SDE4LjVWODBIMjUuOTFWNjYuNDhIMzYuN0MzNy40OCA2Ni40OCAzOC4zMjUgNjYuNDggMzkuMDQgNjYuNDE1TDQ4LjU5NSA4MEg1Ni42NTVMNDYuMDYgNjQuOTJaJyBmaWxsPSd3aGl0ZScvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9J2NsaXAwXzEzXzIwJz48cmVjdCB3aWR0aD0nMTE2JyBoZWlnaHQ9JzExNScgZmlsbD0nd2hpdGUnLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz4=",
251
- url: "https://ts-rest.com",
252
- tagline: "Incrementally adoptable type-safety for your new and existing APIs",
253
- repo: "ts-rest/ts-rest",
254
- links: [
255
- {
256
- label: "Quickstart",
257
- href: "https://ts-rest.com/docs/quickstart"
258
- },
259
- {
260
- label: "Docs",
261
- href: "https://ts-rest.com/docs/intro"
262
- }
263
- ]
264
- },
265
- // Server
266
- {
267
- category: "Server",
268
- label: "Hono",
269
- flag: "hono",
270
- image: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgd2lkdGg9IjUwMHB4IiBoZWlnaHQ9IjUwMHB4IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjAuOTkzIiBmaWxsPSIjZmY1YjExIiBkPSJNIDI1Ny41LDAuNSBDIDI1OC44MjIsMC4zMzAwMzQgMjU5Ljk4OSwwLjY2MzM2OCAyNjEsMS41QyAyOTguMTkzLDQ2Ljg5MzYgMzMzLjE5Myw5My44OTM2IDM2NiwxNDIuNUMgMzkwLjI4OSwxNzkuMDY5IDQxMC45NTUsMjE3LjczNSA0MjgsMjU4LjVDIDQ1NS4yMjEsMzMxLjEwNCA0NDEuMDU0LDM5NC4yNzEgMzg1LjUsNDQ4QyAzMzYuODkyLDQ4OS4wODIgMjgwLjg5Miw1MDUuMDgyIDIxNy41LDQ5NkMgMTQxLjcyNyw0ODAuNTUxIDkwLjIyNjUsNDM2LjcxOCA2MywzNjQuNUMgNTUuOTA4MSwzNDAuOTg5IDUzLjU3NDgsMzE2Ljk4OSA1NiwyOTIuNUMgNjAuMDM4NCwyNTAuMzQ3IDcwLjAzODQsMjA5LjY4IDg2LDE3MC41QyA5Mi42NTA5LDE1NC41MTQgMTAxLjMxOCwxMzkuODQ4IDExMiwxMjYuNUMgMTIwLjcxNSwxMzYuODggMTI5LjA0OCwxNDcuNTQ3IDEzNywxNTguNUMgMTQwLjY4MiwxNjIuMzQ5IDE0NC41MTUsMTY2LjAxNiAxNDguNSwxNjkuNUMgMTc4LjkxNywxMDkuMTM2IDIxNS4yNTEsNTIuODAyOCAyNTcuNSwwLjUgWiIvPjwvZz4KPGc+PHBhdGggc3R5bGU9Im9wYWNpdHk6MSIgZmlsbD0iI2ZmOTc1OCIgZD0iTSAyNTAuNSw4MS41IEMgMjg3LjE5MywxMjQuMDYgMzIwLjM2LDE2OS4zOTMgMzUwLDIxNy41QyAzNTkuMjkzLDIzMy40MTggMzY2Ljk1OSwyNTAuMDg1IDM3MywyNjcuNUMgMzg1LjU4NCwzMTcuMDA4IDM3Mi4wODQsMzU3Ljg0MiAzMzIuNSwzOTBDIDI5NC4yMTYsNDE2LjkzOSAyNTIuMjE2LDQyNC45MzkgMjA2LjUsNDE0QyAxNTcuMjAxLDM5OC43MDIgMTI4LjcwMSwzNjUuNTM1IDEyMSwzMTQuNUMgMTE5LjEzMSwyOTguNDA5IDEyMC43OTgsMjgyLjc0MiAxMjYsMjY3LjVDIDEzMy40MTgsMjQ4LjY2MyAxNDIuNDE4LDIzMC42NjMgMTUzLDIxMy41QyAxNjMsMTk4LjgzMyAxNzMsMTg0LjE2NyAxODMsMTY5LjVDIDIwNS43MTYsMTQwLjI5IDIyOC4yMTYsMTEwLjk1NyAyNTAuNSw4MS41IFoiLz48L2c+Cjwvc3ZnPgo=",
271
- url: "https://hono.dev",
272
- tagline: "Fast, lightweight, built on web standards. Support for any JavaScript runtime.",
273
- repo: "honojs/hono",
274
- links: [
275
- {
276
- label: "Getting started",
277
- href: "https://hono.dev/top"
278
- },
279
- {
280
- label: "API",
281
- href: "https://hono.dev/api/hono"
282
- }
283
- ]
284
- },
285
- {
286
- category: "Server",
287
- label: "h3",
288
- flag: "h3",
289
- image: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE3LjQyIDEzLjUxQzE3LjQyIDEzLjUxIDI0LjY2MjUgMS45MDc0OCAyNC44Mjc1IDEuNjE3NDhDMjQuOTkyNSAxLjMyNzQ4IDI1LjAyNzUgMC43OTQ5ODMgMjQuNTcyNSAwLjc5NDk4M0MyNC4xMTc1IDAuNzk0OTgzIDEyLjgzNSAxMi4zMTI1IDEyLjgzNSAxMi4zMTI1TDQuODIyNSAxNy4wNjI1QzQuODIyNSAxNy4wNjI1IDQuMjg1IDE3LjM5MjUgNC4zNjc1IDE3LjgwNUM0LjQ1IDE4LjIxNzUgNC44MSAxOC4yMzUgNC45NzUgMTguMjM1QzUuMTQgMTguMjM1IDEzLjY4NzUgMTguMTkgMTQuMTg1IDE4LjE3NUMxNC44MDI1IDE4LjE1NzUgMTQuNjUgMTkuMDM1IDE0LjY1IDE5LjAzNUw5LjI0IDI3LjU0QzkuMjQgMjcuNTQgNi44Nzc1IDMwLjgxIDYuODc3NSAzMS4wMzI1QzYuODc3NSAzMS4zNiA3LjI3MjUgMzEuNTIyNSA3LjY0IDMxLjMwMjVDNy45MjUgMzEuMTMyNSAyNi4zNSAxNS41MiAyNy4xNjI1IDE0LjQ0NzVDMjcuMzgyNSAxNC4xNTUgMjcuNDk1IDEzLjM4NSAyNi41ODc1IDEzLjM4NUMyNS42OCAxMy4zODUgMTguNDUyNSAxNS40OSAxOC40NTI1IDE1LjQ5TDE3LjQyIDEzLjUxWiIgZmlsbD0iI0ZFQjgwNCIvPgo8cGF0aCBkPSJNMTYuMTUyNSAxMi41ODc1QzE1LjkzIDEyLjg5MjUgMTUuODcgMTMuNDAyNSAxNi4zNSAxMy40MzI1QzE2LjgyNzUgMTMuNDYgMjYuNTg3NSAxMy4zODc1IDI2LjU4NzUgMTMuMzg3NUMyNi41ODc1IDEzLjM4NzUgMTkuNjE1IDE5Ljc5NSAxNy41MDUgMjEuNzA3NUMxNS4zOTUgMjMuNjIgOC40MDc1MSAyOS44MTUgNy45Mzc1MSAzMC4yNTI1QzcuNDc3NTEgMzAuNjgyNSA3LjA2MDAxIDMxLjA3NzUgNi44OTAwMSAzMS4wMjI1QzYuODYyNTEgMzEuMDE1IDYuODI3NTEgMzAuODY3NSA3LjQ4NTAxIDI5Ljc4NUM4LjA4NTAxIDI4Ljc5NzUgMTMuODQ1IDE5LjE0NSAxNC4wNyAxOC43OEMxNC4yOTUgMTguNDE1IDE0LjQ5MjUgMTguMTA1IDE0LjYwNSAxNy45MzVDMTQuNzE3NSAxNy43NjUgMTUuMDgyNSAxNi44Mzc1IDE0LjMyMjUgMTYuODM3NUMxMy41NjI1IDE2LjgzNzUgNC44MjI1MSAxNy4wNjI1IDQuODIyNTEgMTcuMDYyNUM0LjgyMjUxIDE3LjA2MjUgMTAuODYgMTEuOTQgMTIuNjA1IDEwLjU2MjVDMTQuMzUgOS4xODQ5OCAyNC4yNCAwLjc5NDk4MyAyNC41NzI1IDAuNzk0OTgzQzI0LjkwNSAwLjc5NDk4MyAxNi4zNzc1IDEyLjI4IDE2LjE1MjUgMTIuNTg3NVoiIGZpbGw9IiNGRkM5MjciLz4KPHBhdGggZD0iTTE1Ljg2MjUgMTcuNjg3NUMxNi4zMTI1IDE3LjA0IDE2Ljc1NSAxNi45OTI1IDE3LjAyMjUgMTcuMTUyNUMxNy4zNjc1IDE3LjM2IDE3LjQwMjUgMTcuODM3NSAxNi45Njc1IDE4LjQxNUMxNi4yODI1IDE5LjMzIDExLjI0NzUgMjYuMDY3NSAxMS4wNTUgMjYuMzA1QzEwLjY5IDI2Ljc1NSAxMC4xNTI1IDI2LjU1NzUgMTAuNTAyNSAyNS45MDVDMTAuNzk1IDI1LjM2NSAxNS4zOTc1IDE4LjM1NzUgMTUuODYyNSAxNy42ODc1Wk04LjcwNzQ5IDE2LjM3MjVDNy44NDQ5OSAxNi45NSA3LjA0MjQ5IDE2LjA4NzUgNy42MTk5OSAxNS40NTVDOC4xOTc0OSAxNC44MjI1IDExLjk4NzUgMTEuNjY3NSAxMi43NTUgMTEuMDE1QzEzLjUyMjUgMTAuMzYyNSAxOC4wMDI1IDYuNDY1IDE4LjM1IDYuMTg1QzE4LjgxIDUuODE1IDE5LjA5NSA2LjE5IDE4LjgwNSA2LjU3NUMxOC41MTc1IDYuOTYgMTUuMzUgMTAuMTI1IDEzLjk1MjUgMTEuNDFDMTIuODcyNSAxMi40MDUgOS41Mjc0OSAxNS44MjI1IDguNzA3NDkgMTYuMzcyNVoiIGZpbGw9IiNGRkU1NjciLz4KPC9zdmc+",
290
- url: "https://github.com/unjs/h3",
291
- tagline: "Minimal H(TTP) framework built for high performance and portability",
292
- repo: "unjs/h3"
293
- },
294
- {
295
- category: "Server",
296
- label: "Express",
297
- flag: "express",
298
- url: "https://expressjs.com",
299
- spectrum: "beaten_path",
300
- tagline: "Fast, unopinionated, minimalist web framework for Node.js",
301
- repo: "expressjs/express",
302
- links: [
303
- {
304
- label: "Getting started",
305
- href: "https://expressjs.com/en/starter/installing.html"
306
- },
307
- {
308
- label: "API",
309
- href: "https://expressjs.com/en/4x/api.html"
310
- }
311
- ]
312
- },
313
- {
314
- category: "Server",
315
- label: "Fastify",
316
- flag: "fastify",
317
- image: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nODQ5JyBoZWlnaHQ9JzU0NScgdmlld0JveD0nMCAwIDg0OSA1NDUnIGZpbGw9J25vbmUnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+PHBhdGggZD0nTTgyMi4xOCA3Ny4zMkw4NDguOSA4LjExTDg0Ny43NSAzLjgzTDU4My40MSA3My40OEM2MTEuNTUgMzIuNyA2MDEuOSAwIDYwMS45IDBDNjAxLjkgMCA1MTcuNDkgNTMuOTEgNDUzLjY0IDUyLjQ5QzM4OS43OSA1MS4wNyAzNjkuMjMgMzQuMDUgMjcxLjMzIDY1LjI2QzE3My40MyA5Ni40NyAxNDUuNzcgMTkyLjI2IDExNy40IDIxMi44MUM4OS4wMyAyMzMuMzYgMCAzMDAuNDIgMCAzMDAuNDJMMC4xOTAwMDIgMzAxLjYyTDgwLjQ1IDI3Ni4wNkM4MC40NSAyNzYuMDYgNTguNDUgMjk2LjgxIDExLjY4IDM1OS44M0MxMS42OCAzNTkuODMgMTAuODYgMzU5LjA4IDkuNSAzNTcuODNMOS41NyAzNTguMjZDOS41NyAzNTguMjYgNDcuMTcgNDE1LjcyIDg0LjA2IDQwNS4wOEM4OC4zNzQ0IDQwMy43MzkgOTIuNTU1NSA0MDIuMDAxIDk2LjU1IDM5OS44OUMxMTEuNCA0MDguMTYgMTMwLjc5IDQxNi4yOSAxNTIuMiA0MTguNTNDMTQyLjU2OCA0MDcuMTIgMTMzLjY4OSAzOTUuMDk0IDEyNS42MiAzODIuNTNMMTM1LjYyIDM3Ni4wMkwxMzQuMDYgMzc3LjE0TDE2NC42MyAzODguMzZMMTYxLjIzIDM1OS42TDE2MS41MyAzNTkuNDFMMTkxLjUzIDM3MC40MUwxODcuNzkgMzQ0LjI4QzE5MS41OSAzNDIuMjggMTk1LjQgMzQwLjQxIDE5OS4xOSAzMzguNjVMMjMwLjU1IDIyMC4yNkwzNjAuMDEgMTMxLjk0TDM0OS43MyAxNTcuODNDMzIzLjQ3IDIyMi4zOSAyNzQuMTcgMjM3LjYgMjc0LjE3IDIzNy42TDI1My42IDI0NS40QzIzOC4yOSAyNjMuNDkgMjMxLjg2IDI2Ny45NCAyMjYuNiAzMjguNjVDMjM4LjkzIDMyNS41NCAyNTAuNzIgMzI0LjgyIDI2MS40IDMyNy42NUMzMTYuNzMgMzQyLjU1IDMzNS44OSA0MDkuMjMgMzIwLjk5IDQyNy42NUMzMTcuMjYgNDMyLjI3IDMwOC4zOCA0NDAuMTcgMjk3LjE3IDQ0OS40MkgyNzQuNzJMMjc0LjQzIDQ2Ny42MUwyNzIuMTIgNDY5LjQxSDI0OS4yOEwyNDguOTkgNDg3LjE2QzI0Ni45OSA0ODguNyAyNDQuOTkgNDkwLjIxIDI0Mi45OSA0OTEuNjhDMjIxLjUyIDQ5Mi4xMyAxOTQuMzQgNDczLjQxIDE5NC4zNCA0NzMuNDFDMTk0LjM0IDQ5MC40MSAyMDguNTMgNTE2LjY4IDIwOC41MyA1MTYuNjhMMjExLjA0IDUxNS40NkwyMDguODkgNTE3LjAzQzIwOC44OSA1MTcuMDMgMjY2LjM1IDU1NS4zNCAzMDIuNTIgNTQxLjE1QzMzNC43MiA1MjguNiA0MTcuOTkgNDYyLjk3IDQ4OS44OCA0MzEuOUw3MDcuNDIgMzc0LjZMNzM2LjExIDMwMC4yOUw1NzAuMzMgMzQzLjk1VjI3Ny4xOUw3NjQuOCAyMjUuOTVMNzkzLjQ5IDE1MS42TDU3MC4zMyAyMTAuNFYxNDMuNjhMODIyLjE4IDc3LjMyWk00MjcuMzYgMjE4Ljc5TDQ3OC45OCAyMDUuMTlMNDc5LjY3IDIwNy43OEw0NjMuNTUgMjQ5LjVMNDEwLjA3IDI2My42TDQyNy4zNiAyMTguNzlaTTQ0NS4xOCAzMDguMDlMMzkxLjY4IDMyMi4xOUw0MDguOTcgMjc3LjM4TDQ2MC41NSAyNjMuNzhMNDYxLjI0IDI2Ni4zN0w0NDUuMTggMzA4LjA5Wk01MTQuODkgMjkzLjA5TDQ2MS4zOCAzMDcuMTlMNDc4LjY4IDI2Mi4zOUw1MzAuMyAyNDguNzhMNTMwLjk5IDI1MS4zN0w1MTQuODkgMjkzLjA5WicgZmlsbD0nIzIxNUZGNicvPjwvc3ZnPgo=",
318
- url: "https://fastify.dev",
319
- tagline: "Fast and low overhead web framework, for Node.js",
320
- repo: "fastify/fastify",
321
- links: [
322
- {
323
- label: "Getting started",
324
- href: "https://fastify.dev/docs/latest/Guides/Getting-Started/"
325
- },
326
- {
327
- label: "API",
328
- href: "https://fastify.dev/docs/latest/Reference/"
329
- }
330
- ]
331
- },
332
- // Database
333
- {
334
- category: "Database",
335
- label: "Drizzle",
336
- flag: "drizzle",
337
- image: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgd2lkdGg9IjI4MHB4IiBoZWlnaHQ9IjI4MHB4IiBzdHlsZT0ic2hhcGUtcmVuZGVyaW5nOmdlb21ldHJpY1ByZWNpc2lvbjsgdGV4dC1yZW5kZXJpbmc6Z2VvbWV0cmljUHJlY2lzaW9uOyBpbWFnZS1yZW5kZXJpbmc6b3B0aW1pemVRdWFsaXR5OyBmaWxsLXJ1bGU6ZXZlbm9kZDsgY2xpcC1ydWxlOmV2ZW5vZGQiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KPGc+PHBhdGggc3R5bGU9Im9wYWNpdHk6MSIgZmlsbD0iIzAwMDAwMCIgZD0iTSAtMC41LC0wLjUgQyA5Mi44MzMzLC0wLjUgMTg2LjE2NywtMC41IDI3OS41LC0wLjVDIDI3OS41LDkyLjgzMzMgMjc5LjUsMTg2LjE2NyAyNzkuNSwyNzkuNUMgMTg2LjE2NywyNzkuNSA5Mi44MzMzLDI3OS41IC0wLjUsMjc5LjVDIC0wLjUsMTg2LjE2NyAtMC41LDkyLjgzMzMgLTAuNSwtMC41IFoiLz48L2c+CjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiNjMWYyNGQiIGQ9Ik0gMTMzLjUsODQuNSBDIDE0Mi44MTQsODIuNzI2OSAxNDYuNjQ3LDg2LjM5MzUgMTQ1LDk1LjVDIDEzNS45MDYsMTEyLjAyOCAxMjYuNTcyLDEyOC4zNjIgMTE3LDE0NC41QyAxMTEuMjQ5LDE0OS45ODQgMTA2LjI0OSwxNDkuMzE3IDEwMiwxNDIuNUMgMTAxLjMzMywxNDAuODMzIDEwMS4zMzMsMTM5LjE2NyAxMDIsMTM3LjVDIDExMS41NDcsMTE5LjA0MSAxMjIuMDQ3LDEwMS4zNzUgMTMzLjUsODQuNSBaIi8+PC9nPgo8Zz48cGF0aCBzdHlsZT0ib3BhY2l0eToxIiBmaWxsPSIjYzBmMTRkIiBkPSJNIDIyMy41LDg0LjUgQyAyMzMuNTM5LDgzLjY5NzIgMjM3LjAzOSw4OC4wMzA1IDIzNCw5Ny41QyAyMjUuMzQ3LDExMi44MDEgMjE2LjY4MSwxMjguMTM1IDIwOCwxNDMuNUMgMjAzLjM4NywxNDkuNzM3IDE5OC4zODcsMTUwLjA3MSAxOTMsMTQ0LjVDIDE5MS41NzgsMTQxLjk3IDE5MS4yNDUsMTM5LjMwMyAxOTIsMTM2LjVDIDIwMC41MiwxMjIuNzk0IDIwOC41MiwxMDguNzk0IDIxNiw5NC41QyAyMTguMjg5LDkwLjg4MTIgMjIwLjc4OSw4Ny41NDc5IDIyMy41LDg0LjUgWiIvPjwvZz4KPGc+PHBhdGggc3R5bGU9Im9wYWNpdHk6MSIgZmlsbD0iI2MwZjE0ZCIgZD0iTSA3NS41LDEyMC41IEMgODMuOTg4NSwxMTkuNjE4IDg3LjgyMTgsMTIzLjI4NSA4NywxMzEuNUMgNzcuOTA1NywxNDguMDI4IDY4LjU3MjQsMTY0LjM2MiA1OSwxODAuNUMgNTYuMDQ1MywxODQuMjc3IDUyLjIxMiwxODUuNDQzIDQ3LjUsMTg0QyA0My44Njk3LDE4MC45NSA0Mi43MDMsMTc3LjExNyA0NCwxNzIuNUMgNTMsMTU2LjUgNjIsMTQwLjUgNzEsMTI0LjVDIDcyLjM5NjgsMTIyLjkzIDczLjg5NjgsMTIxLjU5NiA3NS41LDEyMC41IFoiLz48L2c+CjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiNjMWYyNGQiIGQ9Ik0gMTY1LjUsMTIwLjUgQyAxNzQuMTY0LDExOS4zMzIgMTc3Ljk5NywxMjIuOTk5IDE3NywxMzEuNUMgMTY3LjQxNCwxNDcuNjcxIDE1OC4wOCwxNjQuMDA0IDE0OSwxODAuNUMgMTQ2LjM5OCwxODQuMjEyIDE0Mi44OTgsMTg1LjM3OCAxMzguNSwxODRDIDEzMy45MzEsMTgxLjQ1OSAxMzIuNDMxLDE3Ny42MjUgMTM0LDE3Mi41QyAxNDMuNTcyLDE1Ni4zNjIgMTUyLjkwNiwxNDAuMDI4IDE2MiwxMjMuNUMgMTYzLjE0NSwxMjIuMzY0IDE2NC4zMTIsMTIxLjM2NCAxNjUuNSwxMjAuNSBaIi8+PC9nPgo8L3N2Zz4K",
338
- url: "https://orm.drizzle.team/",
339
- tagline: "Headless TypeScript ORM that feels like SPA with SSR",
340
- repo: "drizzle-team/drizzle-orm",
341
- links: [
342
- {
343
- label: "Docs & Getting started",
344
- href: "https://orm.drizzle.team/docs/overview"
345
- }
346
- ]
347
- },
348
- {
349
- category: "Database",
350
- label: "SQLite",
351
- flag: "sqlite",
352
- image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMTI4IDEyOCI+Cgk8ZGVmcz4KCQk8bGluZWFyR3JhZGllbnQgaWQ9ImRldmljb25TcWxpdGUwIiB4MT0iLTE1LjYxNSIgeDI9Ii02Ljc0MSIgeTE9Ii05LjEwOCIgeTI9Ii05LjEwOCIgZ3JhZGllbnRUcmFuc2Zvcm09InJvdGF0ZSg5MCAtOTAuNDg2IDY0LjYzNClzY2FsZSg5LjI3MTIpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CgkJCTxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzk1ZDdmNCIgLz4KCQkJPHN0b3Agb2Zmc2V0PSIuOTIiIHN0b3AtY29sb3I9IiMwZjdmY2MiIC8+CgkJCTxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzBmN2ZjYyIgLz4KCQk8L2xpbmVhckdyYWRpZW50PgoJPC9kZWZzPgoJPHBhdGggZmlsbD0iIzBiN2ZjYyIgZD0iTTY5LjUgOTkuMTc2Yy0uMDU5LS43My0uMDk0LTEuMi0uMDk0LTEuMlM2Ny4yIDgzLjA4NyA2NC41NyA3OC42NDJjLS40MTQtLjcwNy4wNDMtMy41OTQgMS4yMDctNy44OGMuNjggMS4xNjkgMy41NCA2LjE5MiA0LjExOCA3LjgxYy42NDggMS44MjQuNzggMi4zNDcuNzggMi4zNDdzLTEuNTctOC4wODItNC4xNDQtMTIuNzk3YTE2MiAxNjIgMCAwIDEgMi4wMDQtNi4yNjVjLjk3MyAxLjcxIDMuMzEzIDUuODU5IDMuODI4IDcuM2MuMTAyLjI5My4xOTIuNTQzLjI3Ljc3NGwuMDc0LS40MTRjLS41OS0yLjUwNC0xLjc1LTYuODYtMy4zMzYtMTAuMDgyYzMuNTItMTguMzI4IDE1LjUzMS00Mi44MjQgMjcuODQtNTMuNzU0SDE2LjljLTUuMzg3IDAtOS43ODkgNC40MDYtOS43ODkgOS43ODl2ODguNTdjMCA1LjM4MyA0LjQwNiA5Ljc4OSA5Ljc5IDkuNzg5aDUyLjg5N2ExMTkgMTE5IDAgMCAxLS4yOTctMTQuNjUyIiAvPgoJPHBhdGggZmlsbD0idXJsKCNkZXZpY29uU3FsaXRlMCkiIGQ9Ik02NS43NzcgNzAuNzYyYy42OCAxLjE2OCAzLjU0IDYuMTg4IDQuMTE3IDcuODA5Yy42NDkgMS44MjQuNzgxIDIuMzQ3Ljc4MSAyLjM0N3MtMS41Ny04LjA4Mi00LjE0NC0xMi43OTdhMTY1IDE2NSAwIDAgMSAyLjAwNC02LjI3Yy44ODcgMS41NjcgMi45MjIgNS4xNjkgMy42NTIgNi44NzJsLjA4Mi0uOTYxYy0uNjQ4LTIuNDk2LTEuNjMzLTUuNzY2LTIuODk4LTguMzI4YzMuMjQyLTE2Ljg3MSAxMy42OC0zOC45NyAyNC45MjYtNTAuODk4SDE2Ljg5OWE2Ljk0IDYuOTQgMCAwIDAtNi45MzQgNi45MzN2ODIuMTFjMTcuNTI3LTYuNzMxIDM4LjY2NC0xMi44OCA1Ni44NTUtMTIuNjE0Yy0uNjcyLTIuNjA1LTEuNDQxLTQuOTYtMi4yNS02LjMyNGMtLjQxNC0uNzA3LjA0My0zLjU5NyAxLjIwNy03Ljg3OSIgLz4KCTxwYXRoIGZpbGw9IiMwMDM5NTYiIGQ9Ik0xMTUuOTUgMi43ODFjLTUuNS00LjkwNi0xMi4xNjQtMi45MzMtMTguNzM0IDIuODk5YTQ0IDQ0IDAgMCAwLTIuOTE0IDIuODU5Yy0xMS4yNSAxMS45MjYtMjEuNjg0IDM0LjAyMy0yNC45MjYgNTAuODk1YzEuMjYyIDIuNTYzIDIuMjUgNS44MzIgMi44OTQgOC4zMjhjLjE2OC42NC4zMiAxLjI0Mi40NDIgMS43NTRjLjI4NSAxLjIwNy40MzcgMS45OTYuNDM3IDEuOTk2cy0uMTAxLS4zODMtLjUxNS0xLjU4MmMtLjA3OC0uMjMtLjE2OC0uNDg0LS4yNy0uNzczYTggOCAwIDAgMC0uMTcyLS40MzRjLS43MzQtMS43MDMtMi43NjUtNS4zMDUtMy42NTYtNi44NjdjLS43NjIgMi4yNS0xLjQzNyA0LjM2LTIuMDA0IDYuMjY1YzIuNTc4IDQuNzE1IDQuMTQ5IDEyLjc5NyA0LjE0OSAxMi43OTdzLS4xMzctLjUyMy0uNzgyLTIuMzQ3Yy0uNTc4LTEuNjIxLTMuNDQxLTYuNjQtNC4xMTctNy44MDljLTEuMTY0IDQuMjgxLTEuNjI1IDcuMTcyLTEuMjA3IDcuODhjLjgwOSAxLjM2MiAxLjU3NCAzLjcyMiAyLjI1IDYuMzIzYzEuNTI0IDUuODY3IDIuNTg2IDEzLjAxMiAyLjU4NiAxMy4wMTJzLjAzMS40NjkuMDk0IDEuMmExMTkgMTE5IDAgMCAwIC4yOTcgMTQuNjUxYy41MDQgNi4xMSAxLjQ1MyAxMS4zNjMgMi42NjQgMTQuMTcybC44MjgtLjQ0OWMtMS43ODEtNS41MzUtMi41MDQtMTIuNzkzLTIuMTg4LTIxLjE1NmMuNDgtMTIuNzkzIDMuNDIyLTI4LjIxNSA4Ljg1Ni00NC4yODljOS4xOTEtMjQuMjcgMjEuOTM4LTQzLjczOCAzMy42MDItNTMuMDM1Yy0xMC42MzMgOS42MDItMjUuMDIzIDQwLjY4NC0yOS4zMzIgNTIuMTk1Yy00LjgyIDEyLjg5MS04LjIzOCAyNC45ODQtMTAuMzAxIDM2LjU3NGMzLjU1LTEwLjg2MyAxNS4wNDctMTUuNTMgMTUuMDQ3LTE1LjUzczUuNjM3LTYuOTU4IDEyLjIyNy0xNi44ODhjLTMuOTUuOTAzLTEwLjQzIDIuNDQyLTEyLjU5OCAzLjM1MmMtMy4yIDEuMzQ0LTQuMDY3IDEuOC00LjA2NyAxLjhzMTAuMzcxLTYuMzEyIDE5LjI3LTkuMTcxYzEyLjIzNC0xOS4yNyAyNS41NjItNDYuNjQ4IDEyLjE0MS01OC42MjEiIC8+Cjwvc3ZnPg==",
353
- url: "https://www.sqlite.org/",
354
- tagline: "SQLite is a C-language library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine",
355
- repo: "sqlite/sqlite",
356
- links: [
357
- {
358
- label: "better-sqlite3: API",
359
- href: "https://github.com/WiseLibs/better-sqlite3/blob/master/docs/api.md"
360
- },
361
- {
362
- label: "D1: Getting started",
363
- href: "https://developers.cloudflare.com/d1/get-started/"
364
- }
365
- ]
366
- },
367
- {
368
- category: "Database",
369
- label: "Kysely",
370
- flag: "kysely",
371
- image: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nMTMyJyBoZWlnaHQ9JzEzMicgdmlld0JveD0nMCAwIDEzMiAxMzInIGZpbGw9J25vbmUnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+PGcgY2xpcC1wYXRoPSd1cmwoI2NsaXAwXzhfMyknPjxyZWN0IHg9JzInIHk9JzInIHdpZHRoPScxMjgnIGhlaWdodD0nMTI4JyByeD0nMTYnIGZpbGw9J3doaXRlJy8+PHBhdGggZD0nTTQxLjI5ODMgMTA5VjIzLjkwOTFINDYuNDkxOFY3My4zMUg0Ny4wNzM1TDkxLjk0NTcgMjMuOTA5MUg5OC44NDI3TDYxLjkwNjIgNjQuMTY5NEw5OC41MTAzIDEwOUg5Mi4wMjg4TDU4LjU4MjQgNjcuOTA4N0w0Ni40OTE4IDgxLjI4NzNWMTA5SDQxLjI5ODNaJyBmaWxsPSdibGFjaycvPjwvZz48cmVjdCB4PScyJyB5PScyJyB3aWR0aD0nMTI4JyBoZWlnaHQ9JzEyOCcgcng9JzE2JyBzdHJva2U9JyMxMjEyMTInIHN0cm9rZS13aWR0aD0nNCcvPjxkZWZzPjxjbGlwUGF0aCBpZD0nY2xpcDBfOF8zJz48cmVjdCB4PScyJyB5PScyJyB3aWR0aD0nMTI4JyBoZWlnaHQ9JzEyOCcgcng9JzE2JyBmaWxsPSd3aGl0ZScvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPgo=",
372
- url: "https://kysely.dev/",
373
- tagline: "The type-safe SQL query builder for TypeScript",
374
- repo: "kysely-org/kysely",
375
- links: [
376
- {
377
- label: "Docs & Getting started",
378
- href: "https://kysely.dev/docs/getting-started"
379
- }
380
- ]
381
- },
382
- {
383
- category: "Database",
384
- label: "Prisma",
385
- flag: "prisma",
386
- image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIwLjgzZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjU2IDMxMCI+PHBhdGggZD0iTTI1NC4zMTMgMjM1LjUxOUwxNDggOS43NDlBMTcuMDYzIDE3LjA2MyAwIDAgMCAxMzMuNDczLjAzN2ExNi44NyAxNi44NyAwIDAgMC0xNS41MzMgOC4wNTJMMi42MzMgMTk0Ljg0OGExNy40NjUgMTcuNDY1IDAgMCAwIC4xOTMgMTguNzQ3TDU5LjIgMzAwLjg5NmExOC4xMyAxOC4xMyAwIDAgMCAyMC4zNjMgNy40ODlsMTYzLjU5OS00OC4zOTJhMTcuOTI5IDE3LjkyOSAwIDAgMCAxMS4yNi05LjcyMmExNy41NDIgMTcuNTQyIDAgMCAwLS4xMDEtMTQuNzZsLS4wMDguMDA4Wm0tMjMuODAyIDkuNjgzbC0xMzguODIzIDQxLjA1Yy00LjIzNSAxLjI2LTguMy0yLjQxMS03LjQxOS02LjY4NWw0OS41OTgtMjM3LjQ4NGMuOTI3LTQuNDQzIDcuMDYzLTUuMTQ3IDkuMDAzLTEuMDM1bDkxLjgxNCAxOTQuOTczYTYuNjMgNi42MyAwIDAgMS00LjE4IDkuMThoLjAwN1oiLz48L3N2Zz4=",
387
- url: "https://www.prisma.io",
388
- spectrum: "beaten_path",
389
- tagline: "Next-generation Node.js and TypeScript ORM",
390
- repo: "prisma/prisma",
391
- links: [
392
- {
393
- label: "Getting started",
394
- href: "https://www.prisma.io/docs/getting-started"
395
- },
396
- {
397
- label: "Docs",
398
- href: "https://www.prisma.io/docs"
399
- }
400
- ]
401
- },
402
- // Analytics
403
- {
404
- category: "Analytics",
405
- label: "Plausible.io",
406
- flag: "plausible.io",
407
- image: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjBweCIgaGVpZ2h0PSIyMHB4IiB2aWV3Qm94PSIwIDAgMjAgMjAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+bG9nbzwvdGl0bGU+CiAgICA8ZGVmcz4KICAgICAgICA8cmFkaWFsR3JhZGllbnQgY3g9Ijc5LjEzMDUyNjMlIiBjeT0iODcuNjQ0ODE1OCUiIGZ4PSI3OS4xMzA1MjYzJSIgZnk9Ijg3LjY0NDgxNTglIiByPSI5Ni45ODk3NzYzJSIgaWQ9InJhZGlhbEdyYWRpZW50LTEiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjQ0MEU2IiBvZmZzZXQ9IjAlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiM1NjYxQjMiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvcmFkaWFsR3JhZGllbnQ+CiAgICAgICAgPHJhZGlhbEdyYWRpZW50IGN4PSIxLjUwNjEwNDU3ZS0wNSUiIGN5PSIzMC4yMTk4OTQxJSIgZng9IjEuNTA2MTA0NTdlLTA1JSIgZnk9IjMwLjIxOTg5NDElIiByPSI2Mi4yNjg4NzczJSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwwLjMwMjE5OSksc2NhbGUoMS4wMDAwMDAsMC43MjI1MTkpLHJvdGF0ZSg2MS43MzQ1MjIpLHRyYW5zbGF0ZSgtMC4wMDAwMDAsLTAuMzAyMTk5KSIgaWQ9InJhZGlhbEdyYWRpZW50LTIiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjNjU3NENEIiBzdG9wLW9wYWNpdHk9IjAuNSIgb2Zmc2V0PSIwJSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjNjU3NENEIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L3JhZGlhbEdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9ImxvZ28iPgogICAgICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlIiB4PSIwIiB5PSIwIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiPjwvcmVjdD4KICAgICAgICAgICAgPGcgaWQ9IkJpdG1hcCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMi41MzEwMTcsIDAuMDQ5NjI4KSIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNy40Njg5ODMsIDkuOTY3NTIzKSBzY2FsZSgtMSwgMSkgcm90YXRlKC0xODAuMDAwMDAwKSB0cmFuc2xhdGUoLTcuNDY4OTgzLCAtOS45Njc1MjMpIHRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsIiBmaWxsPSJ1cmwoI3JhZGlhbEdyYWRpZW50LTEpIiBjeD0iNy40Njg5ODI2NCIgY3k9IjEyLjQ2NjA2MjciIHI9IjcuNDY4OTgyNjQiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik02LjE4ODU4NTYyLDE5Ljg1MTExNjYgQzQuNjQ1MTYxMywxOS41ODMxMjY2IDMuMzQ0OTEzMTgsMTguOTI4MDM5NyAyLjI2Nzk5MDEsMTcuODc1OTMwNSBDMS4xNjEyOTAzNCwxNi43OTQwNDQ3IDAuNDc2NDI2ODE4LDE1LjUzMzQ5ODggMC4xNDM5MjA2MTUsMTMuOTYwMjk3OCBMMC4wMjk3NzY2OTQsMTMuNDI0MzE3NiBMMC4wMTQ4ODgzNTY2LDYuNzE0NjQwMTkgTDEuOTE2MDAwMDNlLTA4LC00LjkyOTM5MDIzZS0xNiBMMC4xMzg5NTc4MzYsLTQuOTI5MzkwMjNlLTE2IEMwLjIxODM2MjMwMiwtNC45MjkzOTAyM2UtMTYgMC40NzE0NjQwNCwwLjAyNDgxMzg5NTggMC42OTk3NTE4OCwwLjA0OTYyNzc5MTYgQzIuNjUwMTI0MDgsMC4yODc4NDExOTEgNC4zMDc2OTIzMiwxLjQ2ODk4MjYzIDUuMjEwOTE4MTQsMy4yNjA1NDU5MSBDNS40MzkyMDU5OCwzLjcxNzEyMTU5IDUuNjAyOTc3NjgsNC4yNDMxNzYxNyA1LjcxNzEyMTYsNC44OTgyNjMwMyBDNS44MTE0MTQ0Miw1LjQ1NDA5NDI5IDUuODE2Mzc3Miw1LjYzNzcxNzEzIDUuODAxNDg4ODYsOC41MzU5ODAxNSBMNS43ODY2MDA1MiwxMS41ODgwODkzIEw1LjkwNTcwNzIyLDExLjg4NTg1NjEgQzYuMDY5NDc4OTIsMTIuMjkyODA0IDYuNTIxMDkxODQsMTIuNzQ0NDE2OSA2LjkyODAzOTcyLDEyLjkwODE4ODYgTDcuMjI1ODA2NDgsMTMuMDI3Mjk1MyBMMTAuMDA0OTYyOCwxMy4wMzIyNTgxIEMxMS41MzM0OTg4LDEzLjAzMjI1ODEgMTIuODczNDQ5MiwxMy4wNTIxMDkyIDEyLjk3NzY2NzUsMTMuMDcxOTYwMyBDMTMuNDY0MDE5OSwxMy4xNjYyNTMxIDEzLjk4NTExMTcsMTMuNTczMjAxIDE0LjE5MzU0ODQsMTQuMDI0ODEzOSBDMTQuMjUzMTAxOCwxNC4xNDg4ODM0IDE0LjMzMjUwNjIsMTQuMzkyMDU5NiAxNC4zNjcyNDU3LDE0LjU1NTgzMTMgQzE0LjQyMTgzNjIsMTQuODI4Nzg0MSAxNC40MTY4NzM1LDE0LjkwMzIyNTggMTQuMzM3NDY5LDE1LjIxMDkxODEgQzE0LjA4OTMzLDE2LjEyNDA2OTUgMTMuMjE1ODgwOSwxNy4zODk1NzgyIDEyLjMyMjU4MDcsMTguMTI5MDMyMyBDMTEuMzEwMTczNywxOC45Njc3NDE5IDEwLjE5MzU0ODQsMTkuNTI4NTM2IDguOTg3NTkzMDgsMTkuODExNDE0NCBDOC4zNTIzNTczNCwxOS45NTUzMzUgNi45MTMxNTEzOCwxOS45ODAxNDg5IDYuMTg4NTg1NjIsMTkuODUxMTE2NiBaIiBpZD0iUGF0aCIgZmlsbD0idXJsKCNyYWRpYWxHcmFkaWVudC0yKSI+PC9wYXRoPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=",
408
- url: "https://plausible.io",
409
- tagline: "Easy to use and privacy-friendly Google Analytics alternative",
410
- repo: "plausible/analytics"
411
- },
412
- {
413
- category: "Analytics",
414
- label: "Google Analytics",
415
- flag: "google-analytics",
416
- image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIwLjkxZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjU2IDI4NCI+PHBhdGggZmlsbD0iI0Y5QUIwMCIgZD0iTTI1Ni4wMDMgMjQ3LjkzM2EzNS4yMjQgMzUuMjI0IDAgMCAxLTM5LjM3NiAzNS4xNjFjLTE4LjA0NC0yLjY3LTMxLjI2Ni0xOC4zNzEtMzAuODI2LTM2LjYwNlYzNi44NDVDMTg1LjM2NSAxOC41OTEgMTk4LjYyIDIuODgxIDIxNi42ODcuMjRhMzUuMjIxIDM1LjIyMSAwIDAgMSAzOS4zMTYgMzUuMTZ2MjEyLjUzM1oiLz48cGF0aCBmaWxsPSIjRTM3NDAwIiBkPSJNMzUuMTAxIDIxMy4xOTNjMTkuMzg2IDAgMzUuMTAxIDE1LjcxNiAzNS4xMDEgMzUuMTAxYzAgMTkuMzg2LTE1LjcxNSAzNS4xMDEtMzUuMTAxIDM1LjEwMVMwIDI2Ny42OCAwIDI0OC4yOTVjMC0xOS4zODYgMTUuNzE1LTM1LjEwMiAzNS4xMDEtMzUuMTAyWm05Mi4zNTgtMTA2LjM4N2MtMTkuNDc3IDEuMDY4LTM0LjU5IDE3LjQwNi0zNC4xMzcgMzYuOTA4djk0LjI4NWMwIDI1LjU4OCAxMS4yNTkgNDEuMTIyIDI3Ljc1NSA0NC40MzNhMzUuMTYxIDM1LjE2MSAwIDAgMCA0Mi4xNDYtMzQuNTZWMTQyLjA4OWEzNS4yMjIgMzUuMjIyIDAgMCAwLTM1Ljc2NC0zNS4yODJaIi8+PC9zdmc+",
417
- url: "https://analytics.google.com/"
418
- },
419
- {
420
- category: "Analytics",
421
- label: "Segment",
422
- flag: "segment",
423
- image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIwLjk3ZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjU2IDI2NSI+PHBhdGggZmlsbD0iIzRGQjU4QiIgZD0ibTIzMy41NiAxNDEuOTI3bC4xNy4wMTNsMTcuODkyIDEuODdhNC45MjcgNC45MjcgMCAwIDEgMy4yMjUgMS43MDdsLjEzMy4xNjNsLS4xNy4wODVhNC45MyA0LjkzIDAgMCAxIDEuMDIgMy43NGExMzMuMjcyIDEzMy4yNzIgMCAwIDEtNDEuNjA0IDgxLjA4M2ExMjguODYgMTI4Ljg2IDAgMCAxLTg3LjYyOSAzNC4zOGExMjcuNDg4IDEyNy40ODggMCAwIDEtNDYuMTU2LTguNTdsLS44MDItLjMxMmE0LjcxNiA0LjcxNiAwIDAgMS0yLjY4Ni0yLjUzM2wtLjA3Ny0uMTg3YTQuODkxIDQuODkxIDAgMCAxLS4wODMtMy42Nmw3LjA2Mi0xNy4yM2E0Ljg0NiA0Ljg0NiAwIDAgMSA2LjExOC0yLjc5OWwuMTYzLjA2YzM2LjA5NyAxMy45MzkgNzYuOTggNi4wODkgMTA1LjM0OS0yMC4yMjdhMTA0LjQ1NSAxMDQuNDU1IDAgMCAwIDMyLjg5MS02My4zMmE0LjkzIDQuOTMgMCAwIDEgNS4wMTMtNC4yN2wuMTcuMDA3Wm0tMTkwLjA4IDY0LjMxbC4yNTEtLjAwMmwuMjUzLjAwMmM4LjEyLjA5MyAxNC42NTggNi42NTkgMTQuNzQ2IDE0Ljc0OXYuMjUzYzAgLjA4NCAwIC4xNjgtLjAwMi4yNTJjLS4xNDEgOC4yODQtNi45NyAxNC44ODYtMTUuMjU0IDE0Ljc0NWMtOC4yODQtLjE0MS0xNC44ODUtNi45Ny0xNC43NDUtMTUuMjU0Yy4xMzktOC4xMTUgNi42OTUtMTQuNjE1IDE0Ljc1LTE0Ljc0NVpNNC45MyAxNDcuMDgyaDE0Ni4zMTZhNC45NzMgNC45NzMgMCAwIDEgNC45MjggNC44NDRsLjAwMi4xNzF2MTguMzE2YTQuOTc0IDQuOTc0IDAgMCAxLTQuNzYgNS4wMWwtLjE3LjAwNUg0LjkzQTQuOTc1IDQuOTc1IDAgMCAxIDAgMTcwLjU4NHYtMTguNjU5YTQuOTc1IDQuOTc1IDAgMCAxIDQuNzU1LTQuODM4bC4xNzUtLjAwNVpNMTY5LjU2IDcuMzExYTQuOTc0IDQuOTc0IDAgMCAxIDIuODQ4IDIuNjM1YTUuMDk2IDUuMDk2IDAgMCAxIDAgMy44NjdsLTYuMzc1IDE2Ljk5OWE0Ljg0NSA0Ljg0NSAwIDAgMS02LjE2MiAyLjk3NEExMDEuMjI4IDEwMS4yMjggMCAwIDAgNjIuMTMgNTEuMjUyYTEwNS4yNjcgMTA1LjI2NyAwIDAgMC0zNC41MDcgNTQuOTlhNC45MyA0LjkzIDAgMCAxLTQuNzYgMy42OThoLTEuMTA1TDQuMjUgMTA1LjczM2E0Ljg4NiA0Ljg4NiAwIDAgMS0zLjEwMy0yLjI5NWgtLjA4NUE0LjkyOSA0LjkyOSAwIDAgMSAuNTEgOTkuNTdhMTMzLjM5MyAxMzMuMzkzIDAgMCAxIDQ0LjQxLTcwLjIwNEM3OS43MzkuNyAxMjcuMDE5LTcuNjY2IDE2OS41NiA3LjMxMVptLTY0LjgwNyA3My40MzRIMjUxLjA3YTQuOTcyIDQuOTcyIDAgMCAxIDQuOTIyIDQuNjdsLjAwOC4xNzR2MTguMzE3YTQuOTczIDQuOTczIDAgMCAxLTQuNzYgNS4wMWwtLjE3LjAwNUgxMDQuNzU0YTQuOTcyIDQuOTcyIDAgMCAxLTQuODg2LTQuODQybC0uMDAyLS4xNzNWODUuNzU5YTQuOTcyIDQuOTcyIDAgMCAxIDQuNzE1LTUuMDA4bC4xNzMtLjAwNlptMTAxLjU3Mi01NS44ODNsLjI1Mi0uMDAybC4yNTMuMDAyYzguMTIuMDkzIDE0LjY1OCA2LjY1OSAxNC43NDYgMTQuNzQ4di4yNTNjMCAuMDg1IDAgLjE3LS4wMDIuMjUzYy0uMTQgOC4yODQtNi45NyAxNC44ODUtMTUuMjU0IDE0Ljc0NGMtOC4yODQtLjE0LTE0Ljg4NS02Ljk3LTE0Ljc0NC0xNS4yNTNjLjEzOC04LjExNiA2LjY5NC0xNC42MTYgMTQuNzQ5LTE0Ljc0NVoiLz48L3N2Zz4=",
424
- url: "https://segment.com",
425
- disabled: true
426
- },
427
- // Hosting
428
- {
429
- category: "Hosting",
430
- label: "Cloudflare",
431
- flag: "cloudflare",
432
- image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyLjE5ZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjU2IDExNyI+PHBhdGggZmlsbD0iI2ZiYWQ0MSIgZD0iTTIwNS41MiA1MC44MTNjLS44NTggMC0xLjcwNS4wMy0yLjU1MS4wNThxLS4yMDcuMDEyLS4zOTguMDk0YTEuNDIgMS40MiAwIDAgMC0uOTIuOTk0bC0zLjYyOCAxMi42NzJjLTEuNTY1IDUuNDQ5LS45ODMgMTAuNDggMS42NDYgMTQuMTc0YzIuNDEgMy40MTYgNi40MiA1LjQyMSAxMS4yODkgNS42NTVsMTkuNjc5IDEuMTk0Yy41ODUuMDMgMS4wOTIuMzEyIDEuNC43NzZhMS45MiAxLjkyIDAgMCAxIC4yIDEuNjkyYTIuNSAyLjUgMCAwIDEtMi4xMzQgMS42NjJsLTIwLjQ0OCAxLjE5M2MtMTEuMTEuNTE1LTIzLjA2MiA5LjU4LTI3LjI1NSAyMC42MzNsLTEuNDc0IDMuOWExLjA5MiAxLjA5MiAwIDAgMCAuOTY3IDEuNDloNzAuNDI1YTEuODcgMS44NyAwIDAgMCAxLjgxLTEuMzY1QTUxLjIgNTEuMiAwIDAgMCAyNTYgMTAxLjgyOGMwLTI4LjE2LTIyLjU4Mi01MC45ODQtNTAuNDQ5LTUwLjk4NCIvPjxwYXRoIGZpbGw9IiNmNjgyMWYiIGQ9Im0xNzQuNzgyIDExNS4zNjJsMS4zMDMtNC41ODNjMS41NjgtNS40NDkuOTg3LTEwLjQ4LTEuNjM5LTE0LjE3M2MtMi40MTgtMy40MTctNi40MjQtNS40MjItMTEuMjk2LTUuNjU2bC05Mi4zMTItMS4xOTNhMS44MiAxLjgyIDAgMCAxLTEuNDU5LS43NzZhMS45MiAxLjkyIDAgMCAxLS4yMDMtMS42OTNhMi41IDIuNSAwIDAgMSAyLjE1NC0xLjY2Mmw5My4xNzMtMS4xOTNjMTEuMDYzLS41MTEgMjMuMDE1LTkuNTggMjcuMjA4LTIwLjYzM2w1LjMxMy0xNC4wNGMuMjE0LS41OTYuMjctMS4yMzguMTU2LTEuODZDMTkxLjEyNiAyMC41MSAxNjYuOTEgMCAxMzcuOTYgMEMxMTEuMjY5IDAgODguNjI2IDE3LjQwMyA4MC41IDQxLjU5NmEyNyAyNyAwIDAgMC0xOS4xNTYtNS4zNTlDNDguNTQ5IDM3LjUyNCAzOC4yNSA0Ny45NDYgMzYuOTc5IDYwLjg4YTI3LjkgMjcuOSAwIDAgMCAuNzAyIDkuNjQyQzE2Ljc3MyA3MS4xNDUgMCA4OC40NTQgMCAxMDkuNzI2YzAgMS45MjMuMTM3IDMuODE4LjQxMyA1LjY2N2MuMTE1Ljg5Ny44NzkgMS41NyAxLjc4MyAxLjU2OGgxNzAuNDhhMi4yMiAyLjIyIDAgMCAwIDIuMTA2LTEuNjMiLz48L3N2Zz4=",
433
- url: "https://developers.cloudflare.com/",
434
- tagline: "Create full-stack applications that are instantly deployed to the Cloudflare global network",
435
- repo: "cloudflare/workers-sdk",
436
- links: [
437
- {
438
- label: "Docs",
439
- href: "https://developers.cloudflare.com/workers/"
440
- },
441
- {
442
- label: "Vike integration",
443
- href: "https://vike.dev/cloudflare"
444
- }
445
- ]
446
- },
447
- {
448
- category: "Hosting",
449
- label: "Vercel",
450
- flag: "vercel",
451
- image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxLjE2ZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjU2IDIyMiI+PHBhdGggZD0ibTEyOCAwbDEyOCAyMjEuNzA1SDB6Ii8+PC9zdmc+",
452
- url: "https://vercel.com",
453
- tagline: "Develop with your favorite tools. Launch globally, instantly. Keep pushing",
454
- repo: "vercel/vercel",
455
- links: [
456
- {
457
- label: "Guides",
458
- href: "https://vercel.com/guides"
459
- },
460
- {
461
- label: "Docs",
462
- href: "https://vercel.com/docs"
463
- }
464
- ]
465
- },
466
- {
467
- category: "Hosting",
468
- label: "Netlify",
469
- flag: "netlify",
470
- image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxLjE0ZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjU2IDIyNiI+PHBhdGggZmlsbD0iIzA1QkRCQSIgZD0iTTY5LjE4MSAxODguMDg3aC0yLjQxN2wtMTIuMDY1LTEyLjA2NXYtMi40MTdsMTguNDQ0LTE4LjQ0NGgxMi43NzhsMS43MDQgMS43MDR2MTIuNzc4ek01NC42OTkgNTEuNjI4di0yLjQxN2wxMi4wNjUtMTIuMDY1aDIuNDE3TDg3LjYyNSA1NS41OXYxMi43NzhsLTEuNzA0IDEuNzA0SDczLjE0M3oiLz48cGF0aCBmaWxsPSIjMDE0ODQ3IiBkPSJNMTYwLjkwNiAxNDkuMTk4aC0xNy41NTJsLTEuNDY2LTEuNDY2di00MS4wODljMC03LjMxLTIuODczLTEyLjk3Ni0xMS42ODktMTMuMTc0Yy00LjUzNy0uMTE5LTkuNzI3IDAtMTUuMjc0LjIxOGwtLjgzMy44NTJ2NTMuMTczbC0xLjQ2NiAxLjQ2Nkg5NS4wNzRsLTEuNDY2LTEuNDY2di03MC4xOWwxLjQ2Ni0xLjQ2N2gzOS41MDNjMTUuMzU0IDAgMjcuNzk1IDEyLjQ0MSAyNy43OTUgMjcuNzk1djQzLjg4MmwtMS40NjYgMS40NjZaIi8+PHBhdGggZmlsbD0iIzA1QkRCQSIgZD0iTTcxLjY3NyAxMjIuODg5SDEuNDY2TDAgMTIxLjQyM1YxMDMuODNsMS40NjYtMS40NjZoNzAuMjExbDEuNDY2IDEuNDY2djE3LjU5M3ptMTgyLjg1NyAwaC03MC4yMTFsLTEuNDY2LTEuNDY2VjEwMy44M2wxLjQ2Ni0xLjQ2Nmg3MC4yMTFMMjU2IDEwMy44M3YxNy41OTN6TTExNy44NzYgNTQuMTI0VjEuNDY2TDExOS4zNDIgMGgxNy41OTNsMS40NjYgMS40NjZ2NTIuNjU4bC0xLjQ2NiAxLjQ2NmgtMTcuNTkzem0wIDE2OS42NjN2LTUyLjY1OGwxLjQ2Ni0xLjQ2NmgxNy41OTNsMS40NjYgMS40NjZ2NTIuNjU4bC0xLjQ2NiAxLjQ2NWgtMTcuNTkzeiIvPjwvc3ZnPg==",
471
- url: "https://www.netlify.com",
472
- disabled: true
473
- },
474
- {
475
- category: "Hosting",
476
- label: "AWS",
477
- flag: "aws",
478
- image: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iODBweCIgaGVpZ2h0PSI4MHB4IiB2aWV3Qm94PSIwIDAgODAgODAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDY0ICg5MzUzNykgLSBodHRwczovL3NrZXRjaC5jb20gLS0+CiAgICA8dGl0bGU+SWNvbi1BcmNoaXRlY3R1cmUvNjQvQXJjaF9BV1MtQ2xvdWQtRGV2ZWxvcG1lbnQtS2l0XzY0PC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGRlZnM+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIwJSIgeTE9IjEwMCUiIHgyPSIxMDAlIiB5Mj0iMCUiIGlkPSJsaW5lYXJHcmFkaWVudC0xIj4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzJFMjdBRCIgb2Zmc2V0PSIwJSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjNTI3RkZGIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGcgaWQ9Ikljb24tQXJjaGl0ZWN0dXJlLzY0L0FyY2hfQVdTLUNsb3VkLURldmVsb3BtZW50LUtpdF82NCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ikljb24tQXJjaGl0ZWN0dXJlLUJHLzY0L0RldmVsb3Blci1Ub29scyIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0xKSI+CiAgICAgICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGUiIHg9IjAiIHk9IjAiIHdpZHRoPSI4MCIgaGVpZ2h0PSI4MCI+PC9yZWN0PgogICAgICAgIDwvZz4KICAgICAgICA8cGF0aCBkPSJNNjgsMzkuMzA1NTI0OSBDNjgsNDYuMjM0NzA3OCA2My4yNjYyNDk1LDQ4Ljc3NjA0MTMgNjAuNDQ1MjU1OSw0OS42NzQ4MDU2IEw1OS44NDU3MjAzLDQ3Ljc2ODMwNTYgQzYyLjY1OTc2NTcsNDYuODcyNTQwNSA2Ni4wMTQ3ODI4LDQ0LjY3NzExNjIgNjYuMDE0NzgyOCwzOS4zMDU1MjQ5IEM2Ni4wMTQ3ODI4LDMyLjUxNDMwNTggNjAuNDU2MTc0NiwzMC44MTg3NTA1IDU4LjA2Njk2NTYsMzAuNDA0ODU5IEM1Ny41MzM5MzQ4LDMwLjMxMjg4MzEgNTcuMTczNjE3OSwyOS44MDgwMTU1IDU3LjI1MzAyNjYsMjkuMjcwMTU2NiBMNTcuMjUzMDI2NiwyOS4yNzAxNTY2IEM1Ny4wMTY3ODU3LDI2LjE3NTk2OCA1NS41Nzc1MDMyLDIzLjk1MDU1MTYgNTMuMzkwNzg2NSwyMy4zMDY3MjA0IEM1MS41NzQzMTI3LDIyLjc3Mjg2MDQgNDkuNjIyODQ0MiwyMy40ODA2NzQ4IDQ4LjQyNTc1ODIsMjUuMTE0MjQ2NCBDNDguMjA4Mzc2OSwyNS40MTExNjg2IDQ3Ljg0MTExMTcsMjUuNTYyMTI5IDQ3LjQ4MDc5NDgsMjUuNTA5MTQyOSBDNDcuMTE3NSwyNS40NTUxNTcgNDYuODEzNzYxOCwyNS4yMDIyMjM0IDQ2LjY5MTY3MSwyNC44NTMzMTQ5IEM0NS44NjY4MTMyLDIyLjUwMzkzMSA0NC42NzE3MTI0LDIwLjUyNzQ0OTMgNDMuMTQwMTE3MywxOC45Nzg4NTU0IEM0MS4yNjAxMTY2LDE3LjA3OTM1MzUgMzYuMTAyNTIyMywxMi45OTQ0MjQ4IDI4LjgxMjgwNDcsMTYuMTAxNjA5OSBDMjQuNjAzMTUxNSwxNy44OTcxMzkxIDIxLjMwNTcwNTcsMjMuMDY5NzgyNiAyMS4zMDU3MDU3LDI3Ljg3NjUyMjEgQzIxLjMwNTcwNTcsMjguNDExMzgxOCAyMS4zMzc0NjkyLDI4Ljk1MDI0MDUgMjEuNDAwOTk2MiwyOS40NzkxMDE4IEMyMS40NTk1NjAxLDI5Ljk3Njk3MTIgMjEuMTQyOTE3OSwzMC40NDE4NDkzIDIwLjY2MDUxMDEsMzAuNTY1ODE2OCBDMTguMTY3MDc3MywzMS4yMDY2NDg4IDEzLjk4NTIxNzIsMzMuMTgyMTMwNyAxMy45ODUyMTcyLDM5LjIyMTU0NjkgQzEzLjk4NTIxNzIsMzkuNDE3NDk1NSAxMy45OTAxODAzLDM5LjYwOTQ0NTIgMTQuMDAwMTA2NCwzOS43OTgzOTU2IEMxNC4xODY3MTY4LDQzLjY4NjM3NiAxNy4wMjc1NjI2LDQ3LjAyNjUwMDEgMjAuOTEwNjQ3NSw0Ny45MjMyNjUgTDIwLjQ2NTk1ODgsNDkuODcxNzU0IEMxNS43MjEyODk3LDQ4Ljc3NTA0MTYgMTIuMjQ2MTY2OSw0NC42NzQxMTcgMTIuMDE2ODc0MywzOS44OTgzNjk0IEMxMi4wMDQ5NjMsMzkuNjgwNDI2NiAxMiwzOS40NTI0ODY0IDEyLDM5LjIyMTU0NjkgQzEyLDMyLjMxNDM1ODMgMTYuNjM3NDY3NCwyOS43NjcwMjYzIDE5LjM1MjI1MiwyOC44NjkyNjE3IEMxOS4zMzE0MDcyLDI4LjUzODM0ODUgMTkuMzIwNDg4NSwyOC4yMDY0MzU1IDE5LjMyMDQ4ODUsMjcuODc2NTIyMSBDMTkuMzIwNDg4NSwyMi4yMzQwMDE4IDIzLjA2ODU3ODYsMTYuMzgwNTM2OCAyOC4wMzk1NjI1LDE0LjI2MDA5MjkgQzMzLjg2NDE4OTksMTEuNzc0NzQ0NiA0MC4wMzYyMzAyLDEzLjAxMTQyMDMgNDQuNTQ1NjUxMSwxNy41NjcyMjU2IEM0NS45NDgyMDcxLDE4Ljk4NDg1MzggNDcuMDk3NjQ3OSwyMC43MDQ0MDI5IDQ3Ljk3NDEyMTMsMjIuNjk0ODgwOSBDNDkuNjQyNjk2NCwyMS4yODIyNTEzIDUxLjg0OTI2NTMsMjAuNzcwMzg1NiA1My45NDc2Mzk5LDIxLjM4ODIyMzYgQzU2LjgyNjIwNDksMjIuMjM1MDAxNSA1OC43NTI4NTgyLDI0LjkwNjMwMSA1OS4xODI2NTc3LDI4LjU5NDMzMzggQzYxLjk5ODY4ODMsMjkuMjU3MTYgNjgsMzEuNTgwNTUwNyA2OCwzOS4zMDU1MjQ5IEw2OCwzOS4zMDU1MjQ5IFogTTU2Ljg5ODY2NTMsNjEuMzEzNzUzNCBMNDkuOTYzMzA4OSw2NS4xOTk3MzQzIEw0OS45NjMzMDg5LDU2LjU1NDAwMTYgTDU2Ljg5ODY2NTMsNTIuNjEyMDM1NCBMNTYuODk4NjY1Myw2MS4zMTM3NTM0IFogTTM5LjAwNzg4NzcsNjEuMjg4NzYgTDMyLjA4NzQyMDUsNjUuMjc2NzE0MiBMMzIuMDg3NDIwNSw1Ni41MjAwMTA1IEwzOS4wMDc4ODc3LDUyLjU5MDA0MTEgTDM5LjAwNzg4NzcsNjEuMjg4NzYgWiBNMzEuMDkxODM0LDU0Ljc5MDQ2NDEgTDI0LjE2OTM4MTYsNTAuOTA1NDgyOSBMMzEuMTAzNzQ1Myw0Ny4wMjA1MDE3IEwzNy45NzE2MDQzLDUwLjg4MjQ4ODkgTDMxLjA5MTgzNCw1NC43OTA0NjQxIFogTTIzLjEyMTE4NjksNTIuNjA2MDM2OSBMMzAuMTAyMjAzMiw1Ni41MjQwMDk1IEwzMC4xMDIyMDMyLDY1LjI4MTcxMjggTDIzLjEyMTE4NjksNjEuMjg2NzYwNSBMMjMuMTIxMTg2OSw1Mi42MDYwMzY5IFogTTQwLjAyOTI4MiwzMi4wNTM0MjY3IEw0Ni45MTEwMzc1LDM1Ljg5ODQxODQgTDQwLjAwMDQ5NjMsMzkuNzYzNDA0OCBMMzMuMTQ0NTQ4NiwzNS45MTg0MTMxIEw0MC4wMjkyODIsMzIuMDUzNDI2NyBaIE00Mi4wMzIzNjYxLDUwLjg4NDQ4ODQgTDQ4Ljk1NDgxODYsNDcuMDA0NTA1OSBMNTUuODY1MzU5Nyw1MC45MDM0ODM0IEw0OC45NzA3MDAzLDU0LjgyMjQ1NTcgTDQyLjAzMjM2NjEsNTAuODg0NDg4NCBaIE00MC45OTMxMDQ5LDUyLjU4OTA0MTQgTDQ3Ljk3ODA5MTcsNTYuNTU0MDAxNiBMNDcuOTc4MDkxNyw2NS4xOTk3MzQzIEw0MC45OTMxMDQ5LDYxLjI4MDc2MjEgTDQwLjk5MzEwNDksNTIuNTg5MDQxNCBaIE00Ny45NjQxOTUyLDQ1LjI3MTk2MDIgTDQwLjk5MzEwNDksNDkuMTc3OTM1OSBMNDAuOTkzMTA0OSw0MS40OTQ5NTA3IEw0Ny45NjQxOTUyLDM3LjU5Njk3MjkgTDQ3Ljk2NDE5NTIsNDUuMjcxOTYwMiBaIE0zMi4wOTczNDY1LDM3LjYxODk2NzIgTDM5LjAwNzg4NzcsNDEuNDkzOTUxIEwzOS4wMDc4ODc3LDQ5LjE3NDkzNjcgTDMyLjA5NzM0NjUsNDUuMjg4OTU1OCBMMzIuMDk3MzQ2NSwzNy42MTg5NjcyIFogTTU4LjM5MTU0ODYsNTAuMDM2NzEwNyBDNTguMzg2NTg1Niw1MC4wMzM3MTE1IDU4LjM4MDYzLDUwLjAzMjcxMTggNTguMzc1NjY2OSw1MC4wMjk3MTI2IEw1OC4zNzY2NTk1LDUwLjAyNzcxMzEgTDQ5Ljk0OTQxMjQsNDUuMjczOTU5NyBMNDkuOTQ5NDEyNCwzNS44OTg0MTg0IEM0OS45NDk0MTI0LDM1LjU0MzUxMTQgNDkuNzYzNzk0NiwzNS4yMTY1OTcyIDQ5LjQ2MDA1NjQsMzUuMDM2NjQ0NCBDNDkuNDUyMTE1NSwzNS4wMzI2NDU0IDQ5LjQ0NTE2NzIsMzUuMDMwNjQ1OSA0OS40MzcyMjY0LDM1LjAyNjY0NyBMNDkuNDM5MjExNiwzNS4wMjM2NDc4IEw0MC41MTA2OTcxLDMwLjAzNTk1NTggQzQwLjIwODk0NDEsMjkuODY4OTk5NSAzOS44NDM2NjQxLDI5Ljg2ODk5OTUgMzkuNTQ1ODgxNiwzMC4wMzY5NTU1IEwzMC42MjIzMzAxLDM1LjA0NTY0MiBMMzAuNjIzMzIyOCwzNS4wNDc2NDE1IEMzMC42MTYzNzQ1LDM1LjA1MTY0MDQgMzAuNjA4NDMzNiwzNS4wNTI2NDAyIDMwLjYwMTQ4NTQsMzUuMDU2NjM5MSBDMzAuMjk4NzM5NywzNS4yMzY1OTE5IDMwLjExMjEyOTMsMzUuNTY0NTA1OSAzMC4xMTIxMjkzLDM1LjkxODQxMzEgTDMwLjExMjEyOTMsNDUuMjg2OTU2MyBMMjEuNjQ2MTcwNSw1MC4wMzA3MTIzIEwyMS42NDgxNTU3LDUwLjAzMjcxMTggQzIxLjY0MDIxNDgsNTAuMDM2NzEwNyAyMS42MzIyNzQsNTAuMDM4NzEwMiAyMS42MjUzMjU3LDUwLjA0MjcwOTIgQzIxLjMyMjU4MDEsNTAuMjIxNjYyMiAyMS4xMzU5Njk3LDUwLjU1MDU3NiAyMS4xMzU5Njk3LDUwLjkwNDQ4MzIgTDIxLjEzNTk2OTcsNjEuODY4NjA3OSBDMjEuMTM1OTY5Nyw2Mi4yMjg1MTM1IDIxLjMyNzU0MzEsNjIuNTYwNDI2NSAyMS42MzgyMjk2LDYyLjczNzM4MDEgTDMwLjU5NjUyMjMsNjcuODY1MDM1NCBMMzAuNjA0NDYzMiw2Ny44NzAwMzQxIEwzMC42MDQ0NjMyLDY3Ljg2OTAzNDMgQzMwLjc1NzMyNDksNjcuOTU2MDExNSAzMC45MjYwNjg0LDY4IDMxLjA5NDgxMTgsNjggQzMxLjI2NDU0NzksNjggMzEuNDM1Mjc2Niw2Ny45NTYwMTE1IDMxLjU4ODEzODMsNjcuODY4MDM0NiBMNDAuMDA3NDQ0Niw2My4wMTYzMDY5IEw0OC40ODgyOTI1LDY3Ljc3NDA1OTMgTDQ4LjQ4OTI4NTEsNjcuNzcxMDYgQzQ4LjYzOTE2OSw2Ny44NTUwMzggNDguODAzOTQyMSw2Ny45MDAwMjYyIDQ4Ljk3MDcwMDMsNjcuOTAwMDI2MiBDNDkuMTM2NDY2LDY3LjkwMDAyNjIgNDkuMzAzMjI0Miw2Ny44NTgwMzcyIDQ5LjQ1MzEwODEsNjcuNzc0MDU5MyBMNTguMzc0Njc0Myw2Mi43NzUzNzAxIEM1OC42ODkzMzEyLDYyLjU5ODQxNjUgNTguODgzODgyNSw2Mi4yNjQ1MDQxIDU4Ljg4Mzg4MjUsNjEuOTAxNTk5MyBMNTguODgzODgyNSw1MC45MDA0ODQyIEM1OC44ODM4ODI1LDUwLjU0NDU3NzUgNTguNjk3MjcyMSw1MC4yMTY2NjM1IDU4LjM5MTU0ODYsNTAuMDM2NzEwNyBMNTguMzkxNTQ4Niw1MC4wMzY3MTA3IFoiIGlkPSJBV1MtQ2xvdWQtRGV2ZWxvcG1lbnQtS2l0X0ljb25fNjRfU3F1aWQiIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4KICAgIDwvZz4KPC9zdmc+",
479
- url: "https://aws.amazon.com",
480
- tagline: "Deploy to AWS Lambda with Infrastructure as Code with the AWS CDK",
481
- repo: "aws/aws-cdk",
482
- links: [
483
- {
484
- label: "Docs",
485
- href: "https://github.com/aws/aws-cdk"
486
- }
487
- ]
488
- },
489
- // Linter
490
- {
491
- category: "Linter",
492
- label: "ESLint",
493
- flag: "eslint",
494
- image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxLjE0ZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjU2IDIyNSI+PHBhdGggZmlsbD0iIzgwODBGMiIgZD0ibTc3Ljk2NSA4MC41NjhsNDguNTctMjguMDQyYTMuOTI5IDMuOTI5IDAgMCAxIDMuOTMgMGw0OC41NyAyOC4wNDJBMy45MzIgMy45MzIgMCAwIDEgMTgxIDgzLjk3MXY1Ni4wODRjMCAxLjQwMy0uNzUgMi43LTEuOTY1IDMuNDAzbC00OC41NyAyOC4wNDJhMy45MjkgMy45MjkgMCAwIDEtMy45MyAwbC00OC41Ny0yOC4wNDJBMy45MzEgMy45MzEgMCAwIDEgNzYgMTQwLjA1NVY4My45N2MuMDAxLTEuNDA0Ljc1LTIuNyAxLjk2NS0zLjQwMyIvPjxwYXRoIGZpbGw9IiM0QjMyQzMiIGQ9Ik0yNTQuNDE3IDEwNy40MTdMMTk2LjMyMyA2LjM1QzE5NC4yMTMgMi42OTYgMTkwLjMxNSAwIDE4Ni4wOTUgMEg2OS45MDZjLTQuMjIgMC04LjEyIDIuNjk2LTEwLjIzIDYuMzVMMS41ODMgMTA3LjE5NGMtMi4xMSAzLjY1NS0yLjExIDguMjY4IDAgMTEuOTIzbDU4LjA5MyAxMDAuMjM5YzIuMTEgMy42NTQgNi4wMSA1LjUyMiAxMC4yMyA1LjUyMmgxMTYuMTg4YzQuMjIgMCA4LjExOS0xLjgxMiAxMC4yMjgtNS40NjdsNTguMDk0LTEwMC40MDJjMi4xMTItMy42NTMgMi4xMTItNy45MzggMC0xMS41OTJabS00OC4xMDUgNDguNmMwIDEuNDg1LS44OTQgMi44Ni0yLjE4MiAzLjYwNGwtNzMuOTk5IDQyLjY5M2E0LjIxIDQuMjEgMCAwIDEtNC4xODYgMGwtNzQuMDU2LTQyLjY5M2MtMS4yODctLjc0NC0yLjE4OC0yLjExOC0yLjE4OC0zLjYwNVY3MC42MjhjMC0xLjQ4Ny44ODgtMi44NiAyLjE3Ni0zLjYwNGw3My45OTUtNDIuNjk0YTQuMjAyIDQuMjAyIDAgMCAxIDQuMTg1IDBsNzQuMDYgNDIuNjk0YzEuMjg5Ljc0NCAyLjE5NSAyLjExNyAyLjE5NSAzLjYwNHY4NS4zODhaIi8+PC9zdmc+",
495
- url: "https://eslint.org",
496
- tagline: "Find and fix problems in your JavaScript code",
497
- repo: "eslint/eslint",
498
- links: [
499
- {
500
- label: "Docs",
501
- href: "https://eslint.org/docs/latest/"
502
- }
503
- ]
504
- },
505
- {
506
- category: "Linter",
507
- label: "Prettier",
508
- flag: "prettier",
509
- image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjU2IDI1NiI+PHJlY3Qgd2lkdGg9IjI0LjM4MSIgaGVpZ2h0PSIxMi4xOSIgeD0iMTgyLjg1NyIgeT0iNDguNzYyIiBmaWxsPSIjNTZCM0I0IiByeD0iNSIvPjxyZWN0IHdpZHRoPSI3My4xNDMiIGhlaWdodD0iMTIuMTkiIHk9IjI0My44MSIgZmlsbD0iI0VBNUU1RSIgcng9IjUiLz48cmVjdCB3aWR0aD0iNDguNzYyIiBoZWlnaHQ9IjEyLjE5IiB4PSIxNDYuMjg2IiB5PSIxNDYuMjg2IiBmaWxsPSIjQkY4NUJGIiByeD0iNSIvPjxyZWN0IHdpZHRoPSI2MC45NTIiIGhlaWdodD0iMTIuMTkiIHg9IjczLjE0MyIgeT0iMTQ2LjI4NiIgZmlsbD0iI0VBNUU1RSIgcng9IjUiLz48cmVjdCB3aWR0aD0iNjAuOTUyIiBoZWlnaHQ9IjEyLjE5IiB5PSIxNDYuMjg2IiBmaWxsPSIjNTZCM0I0IiByeD0iNSIvPjxyZWN0IHdpZHRoPSI3My4xNDMiIGhlaWdodD0iMTIuMTkiIHk9IjE5NS4wNDgiIGZpbGw9IiNCRjg1QkYiIHJ4PSI1Ii8+PHJlY3Qgd2lkdGg9IjczLjE0MyIgaGVpZ2h0PSIxMi4xOSIgeT0iOTcuNTI0IiBmaWxsPSIjQkY4NUJGIiByeD0iNSIvPjxyZWN0IHdpZHRoPSIxMzQuMDk1IiBoZWlnaHQ9IjEyLjE5IiB4PSI2MC45NTIiIHk9IjI0LjM4MSIgZmlsbD0iI0Y3QkEzRSIgcng9IjUiLz48cmVjdCB3aWR0aD0iNDguNzYyIiBoZWlnaHQ9IjEyLjE5IiB5PSIyNC4zODEiIGZpbGw9IiNFQTVFNUUiIHJ4PSI1Ii8+PHJlY3Qgd2lkdGg9IjI0LjM4MSIgaGVpZ2h0PSIxMi4xOSIgeD0iNDguNzYyIiB5PSIyMTkuNDI5IiBmaWxsPSIjRjdCQTNFIiByeD0iNSIvPjxyZWN0IHdpZHRoPSIyNC4zODEiIGhlaWdodD0iMTIuMTkiIHg9IjQ4Ljc2MiIgeT0iNzMuMTQzIiBmaWxsPSIjNTZCM0I0IiByeD0iNSIvPjxyZWN0IHdpZHRoPSIzNi41NzEiIGhlaWdodD0iMTIuMTkiIHk9IjIxOS40MjkiIGZpbGw9IiM1NkIzQjQiIHJ4PSI1Ii8+PHJlY3Qgd2lkdGg9IjM2LjU3MSIgaGVpZ2h0PSIxMi4xOSIgeT0iNzMuMTQzIiBmaWxsPSIjRjdCQTNFIiByeD0iNSIvPjxyZWN0IHdpZHRoPSIyNC4zODEiIGhlaWdodD0iMTIuMTkiIHg9IjE1OC40NzYiIHk9IjIxOS40MjkiIGZpbGw9IiNEMEQ0RDgiIG9wYWNpdHk9Ii41IiByeD0iNSIvPjxyZWN0IHdpZHRoPSI2MC45NTIiIGhlaWdodD0iMTIuMTkiIHg9Ijg1LjMzMyIgeT0iMjE5LjQyOSIgZmlsbD0iI0QwRDREOCIgb3BhY2l0eT0iLjUiIHJ4PSI1Ii8+PHJlY3Qgd2lkdGg9IjYwLjk1MiIgaGVpZ2h0PSIxMi4xOSIgeD0iMTk1LjA0OCIgeT0iMjE5LjQyOSIgZmlsbD0iI0QwRDREOCIgb3BhY2l0eT0iLjUiIHJ4PSI1Ii8+PHJlY3Qgd2lkdGg9IjEwOS43MTQiIGhlaWdodD0iMTIuMTkiIHg9Ijk3LjUyNCIgeT0iMTIxLjkwNSIgZmlsbD0iIzU2QjNCNCIgcng9IjUiLz48cmVjdCB3aWR0aD0iNDguNzYyIiBoZWlnaHQ9IjEyLjE5IiB4PSIzNi41NzEiIHk9IjEyMS45MDUiIGZpbGw9IiNGN0JBM0UiIHJ4PSI1Ii8+PHJlY3Qgd2lkdGg9IjI0LjM4MSIgaGVpZ2h0PSIxMi4xOSIgeT0iMTIxLjkwNSIgZmlsbD0iI0VBNUU1RSIgcng9IjUiLz48cmVjdCB3aWR0aD0iNjAuOTUyIiBoZWlnaHQ9IjEyLjE5IiB4PSIxMDkuNzE0IiB5PSI0OC43NjIiIGZpbGw9IiNCRjg1QkYiIHJ4PSI1Ii8+PHJlY3Qgd2lkdGg9Ijk3LjUyNCIgaGVpZ2h0PSIxMi4xOSIgeT0iNDguNzYyIiBmaWxsPSIjNTZCM0I0IiByeD0iNSIvPjxyZWN0IHdpZHRoPSIxMjEuOTA1IiBoZWlnaHQ9IjEyLjE5IiB4PSIzNi41NzEiIHk9IjE3MC42NjciIGZpbGw9IiNGN0JBM0UiIHJ4PSI1Ii8+PHJlY3Qgd2lkdGg9IjI0LjM4MSIgaGVpZ2h0PSIxMi4xOSIgeT0iMTcwLjY2NyIgZmlsbD0iI0JGODVCRiIgcng9IjUiLz48cmVjdCB3aWR0aD0iNzMuMTQzIiBoZWlnaHQ9IjEyLjE5IiB4PSIxNDYuMjg2IiB5PSI3My4xNDMiIGZpbGw9IiNFQTVFNUUiIHJ4PSI1Ii8+PHJlY3Qgd2lkdGg9IjczLjE0MyIgaGVpZ2h0PSIxMi4xOSIgeD0iMTQ2LjI4NiIgeT0iOTcuNTI0IiBmaWxsPSIjRjdCQTNFIiByeD0iNSIvPjxyZWN0IHdpZHRoPSIxNTguNDc2IiBoZWlnaHQ9IjEyLjE5IiBmaWxsPSIjNTZCM0I0IiByeD0iNSIvPjxyZWN0IHdpZHRoPSI4NS4zMzMiIGhlaWdodD0iMTIuMTkiIHg9IjE3MC42NjciIGZpbGw9IiNEMEQ0RDgiIG9wYWNpdHk9Ii41IiByeD0iNSIvPjxyZWN0IHdpZHRoPSIzNi41NzEiIGhlaWdodD0iMTIuMTkiIHg9IjE3MC42NjciIHk9IjE3MC42NjciIGZpbGw9IiNEMEQ0RDgiIG9wYWNpdHk9Ii41IiByeD0iNSIvPjxyZWN0IHdpZHRoPSIzNi41NzEiIGhlaWdodD0iMTIuMTkiIHg9IjIxOS40MjkiIHk9IjE3MC42NjciIGZpbGw9IiNEMEQ0RDgiIG9wYWNpdHk9Ii41IiByeD0iNSIvPjxyZWN0IHdpZHRoPSI0OC43NjIiIGhlaWdodD0iMTIuMTkiIHg9IjIwNy4yMzgiIHk9IjE0Ni4yODYiIGZpbGw9IiNEMEQ0RDgiIG9wYWNpdHk9Ii41IiByeD0iNSIvPjxyZWN0IHdpZHRoPSI0OC43NjIiIGhlaWdodD0iMTIuMTkiIHg9IjIwNy4yMzgiIHk9IjI0LjM4MSIgZmlsbD0iI0QwRDREOCIgb3BhY2l0eT0iLjUiIHJ4PSI1Ii8+PHJlY3Qgd2lkdGg9IjM2LjU3MSIgaGVpZ2h0PSIxMi4xOSIgeD0iMjE5LjQyOSIgeT0iMTIxLjkwNSIgZmlsbD0iI0QwRDREOCIgb3BhY2l0eT0iLjUiIHJ4PSI1Ii8+PHJlY3Qgd2lkdGg9IjM2LjU3MSIgaGVpZ2h0PSIxMi4xOSIgeD0iMjE5LjQyOSIgeT0iNDguNzYyIiBmaWxsPSIjRDBENEQ4IiBvcGFjaXR5PSIuNSIgcng9IjUiLz48cmVjdCB3aWR0aD0iMjQuMzgxIiBoZWlnaHQ9IjEyLjE5IiB4PSIyMzEuNjE5IiB5PSI3My4xNDMiIGZpbGw9IiNEMEQ0RDgiIG9wYWNpdHk9Ii41IiByeD0iNSIvPjxyZWN0IHdpZHRoPSIyNC4zODEiIGhlaWdodD0iMTIuMTkiIHg9IjIzMS42MTkiIHk9Ijk3LjUyNCIgZmlsbD0iI0QwRDREOCIgb3BhY2l0eT0iLjUiIHJ4PSI1Ii8+PHJlY3Qgd2lkdGg9IjEyMS45MDUiIGhlaWdodD0iMTIuMTkiIHg9IjEzNC4wOTUiIHk9IjE5NS4wNDgiIGZpbGw9IiNEMEQ0RDgiIG9wYWNpdHk9Ii41IiByeD0iNSIvPjxyZWN0IHdpZHRoPSIzNi41NzEiIGhlaWdodD0iMTIuMTkiIHg9Ijg1LjMzMyIgeT0iMTk1LjA0OCIgZmlsbD0iI0QwRDREOCIgb3BhY2l0eT0iLjUiIHJ4PSI1Ii8+PHJlY3Qgd2lkdGg9IjczLjE0MyIgaGVpZ2h0PSIxMi4xOSIgeD0iMTgyLjg1NyIgeT0iMjQzLjgxIiBmaWxsPSIjRDBENEQ4IiBvcGFjaXR5PSIuNSIgcng9IjUiLz48cmVjdCB3aWR0aD0iODUuMzMzIiBoZWlnaHQ9IjEyLjE5IiB4PSI4NS4zMzMiIHk9IjI0My44MSIgZmlsbD0iI0QwRDREOCIgb3BhY2l0eT0iLjUiIHJ4PSI1Ii8+PHJlY3Qgd2lkdGg9IjQ4Ljc2MiIgaGVpZ2h0PSIxMi4xOSIgeD0iODUuMzMzIiB5PSI3My4xNDMiIGZpbGw9IiNEMEQ0RDgiIG9wYWNpdHk9Ii41IiByeD0iNSIvPjxyZWN0IHdpZHRoPSI0OC43NjIiIGhlaWdodD0iMTIuMTkiIHg9Ijg1LjMzMyIgeT0iOTcuNTI0IiBmaWxsPSIjRDBENEQ4IiBvcGFjaXR5PSIuNSIgcng9IjUiLz48L3N2Zz4=",
510
- url: "https://prettier.io",
511
- tagline: "An opinionated code formatter",
512
- repo: "prettier/prettier",
513
- links: [
514
- {
515
- label: "Docs",
516
- href: "https://prettier.io/docs/en/"
517
- }
518
- ]
519
- },
520
- {
521
- category: "Linter",
522
- label: "Biome",
523
- flag: "biome",
524
- image: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAnLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4nICdodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQnPjxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2ZXJzaW9uPScxLjEnIHdpZHRoPSc0OHB4JyBoZWlnaHQ9JzQ4cHgnIHN0eWxlPSdzaGFwZS1yZW5kZXJpbmc6Z2VvbWV0cmljUHJlY2lzaW9uOyB0ZXh0LXJlbmRlcmluZzpnZW9tZXRyaWNQcmVjaXNpb247IGltYWdlLXJlbmRlcmluZzpvcHRpbWl6ZVF1YWxpdHk7IGZpbGwtcnVsZTpldmVub2RkOyBjbGlwLXJ1bGU6ZXZlbm9kZCcgeG1sbnM6eGxpbms9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnPjxnPjxwYXRoIHN0eWxlPSdvcGFjaXR5OjEnIGZpbGw9JyNlNWIxMWMnIGQ9J00gMzEuNSw0MS41IEMgMjguODMzMyw0MS41IDI2LjE2NjcsNDEuNSAyMy41LDQxLjVDIDIzLjUsMzguODMzMyAyMy41LDM2LjE2NjcgMjMuNSwzMy41QyAyNS4yNjQ2LDMyLjUzODYgMjcuMjY0NiwzMi4yMDUzIDI5LjUsMzIuNUMgMjkuNzczMywzMC41NDkgMjkuMTA2NiwyOS4wNDkgMjcuNSwyOEMgMjMuODQ4NCwyNy41MDE0IDIwLjE4MTcsMjcuMzM0NyAxNi41LDI3LjVDIDE2LjUsMzIuNSAxNi41LDM3LjUgMTYuNSw0Mi41QyAxMy4xNjY3LDQyLjUgOS44MzMzMyw0Mi41IDYuNSw0Mi41QyA2LjUsMzQuNSA2LjUsMjYuNSA2LjUsMTguNUMgMTMuNSwxOC41IDIwLjUsMTguNSAyNy41LDE4LjVDIDI4LjU4NjIsMTguMzggMjkuMjUyOCwxNy43MTMzIDI5LjUsMTYuNUMgMjkuNDU3MywxNS41ODM2IDI5LjEyMzksMTQuOTE2OSAyOC41LDE0LjVDIDIxLjQ5MjEsMTQuNjY2MyAxNC40OTIxLDE0LjQ5OTYgNy41LDE0QyA2LjU0OTQ4LDEwLjk0MzMgNi4yMTYxNCw3Ljc3NjU5IDYuNSw0LjVDIDE0Ljg0LDQuMzMzNiAyMy4xNzMzLDQuNTAwMjcgMzEuNSw1QyAzOS44NjA5LDkuMjUxNDYgNDEuNTI3NSwxNS4yNTE1IDM2LjUsMjNDIDQxLjc1NiwyOC41OTM1IDQxLjc1NiwzNC4yNjAyIDM2LjUsNDBDIDM0Ljk3NTEsNDEuMDA4NiAzMy4zMDg0LDQxLjUwODYgMzEuNSw0MS41IFonLz48L2c+PGc+PHBhdGggc3R5bGU9J29wYWNpdHk6MC42ODInIGZpbGw9JyM5MjhlMzYnIGQ9J00gMjguNSwxNC41IEMgMjkuMTIzOSwxNC45MTY5IDI5LjQ1NzMsMTUuNTgzNiAyOS41LDE2LjVDIDI5LjI1MjgsMTcuNzEzMyAyOC41ODYyLDE4LjM4IDI3LjUsMTguNUMgMjguMjM0MSwxNy4yOTIxIDI4LjU2NzQsMTUuOTU4NyAyOC41LDE0LjUgWicvPjwvZz48Zz48cGF0aCBzdHlsZT0nb3BhY2l0eTowLjc1OCcgZmlsbD0nI2M0YTMyMycgZD0nTSAyMy41LDMzLjUgQyAyMy41LDM2LjE2NjcgMjMuNSwzOC44MzMzIDIzLjUsNDEuNUMgMjYuMTY2Nyw0MS41IDI4LjgzMzMsNDEuNSAzMS41LDQxLjVDIDI4LjcxMzEsNDIuNDc2NyAyNS43MTMxLDQyLjgxIDIyLjUsNDIuNUMgMjIuMTksMzkuMjg2OSAyMi41MjMzLDM2LjI4NjkgMjMuNSwzMy41IFonLz48L2c+PC9zdmc+Cg==",
525
- url: "https://biomejs.dev",
526
- spectrum: "bleeding_edge"
527
- },
528
- {
529
- category: "Linter",
530
- label: "Oxlint",
531
- flag: "oxlint",
532
- image: "data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQwIDI0MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2EpIj4KPHBhdGggZD0iTTIwIDIwaDIwMHYyMDBIMjB6IiBmaWxsPSIjOTFFREU5Ii8+CjxwYXRoIGQ9Ik0yMjkgMjIzSDEzdi00My41czE5LjE4LTE1LjggMjguNS0xNi41YzExLjg0LS44OSAxNC43OCAzLjYgMjYuNSA1LjUgMTIuMzMgMiAyMC4yNS0xMC45IDMyLjUtOC41IDEyLjUgMi40NCAyOC42NyAxMS44NiAzOSAxMS41IDIxLjg0LS43NiAyMC41NS00Ljg3IDM4LjUtMSA3LjYzIDEuNjUgMTUuNzctMTQuNDIgMjguNS0xMiA2LjQ1IDEuMjIgMjIuNSAyLjUgMjIuNSAyLjV2NjJaIiBmaWxsPSIjNDhBQ0JBIi8+CjxwYXRoIGQ9Ik0yMjIgMjIzSDEwdi00MHMxOS42OC0xMC44IDI5LTExLjVjMTEuODQtLjg5IDE0LjI4IDcuOTMgMjYgOS44NCAxMi4zMyAyIDE2Ljc1LTEwLjI0IDI5LTcuODQgMTIuNSAyLjQ0IDIyLjY3IDE0LjM2IDMzIDE0IDIxLjg0LS43NiAyMy4wNS0xMS4zNyA0MS03LjUgNy42MyAxLjY1IDkuNSA1LjUgMjcuNSAxLjM0UzIyMiAxODMgMjIyIDE4M3Y0MFoiIGZpbGw9IiMyQjNDNUEiLz4KPC9nPgo8cGF0aCBkPSJNMTI3LjAyIDQyLjQ5YTE3IDE3IDAgMSAwLTE0LjA0IDBMMTEyLjU1IDU1aC0uMDVsLTIzLjczIDEuNzlhMyAzIDAgMCAwLTIuNzcgM3Y2LjQzYTMgMyAwIDAgMCAyLjc3IDNMMTEyIDcxbC0xLjEgNDEuNzdjLS4zNCAxMi42MS0yLjQgMjguMDctMTQuNzEgMzAuNzctMS4zNy4zLTIuNzcuNDYtNC4xOS40Ni03LjM5IDAtMTUuOTEtOS4xLTIxLjM3LTE4LjQyYTYyLjcgNjIuNyAwIDAgMSA2LjY0LTIuNDRjMS4zLS40IDEuNTUtMi4yMi40Mi0yLjk3LTguMTgtNS40LTE0LjY3LTEyLjY3LTE4LjY1LTIxLjA2LS41NS0xLjE2LTIuMi0xLjI0LTIuNzUtLjA5YTY1LjA3IDY1LjA3IDAgMCAwLTMuNTIgOSA2Mi40IDYyLjQgMCAwIDAtMi4wOCAyNy42NGwuMS42Yy4yIDEuMiAxLjY4IDEuNjMgMi41Ni43OGE1NS40MyA1NS40MyAwIDAgMSA1LjIzLTQuNDdDNjguNjMgMTY0LjIgMTAyLjIyIDE4MCAxMjAgMTgwYzE3Ljc5IDAgNTEuMzktMTUuODIgNjEuNDItNDcuNDVhNTUuMzggNTUuMzggMCAwIDEgNS4yNCA0LjQ4Yy44Ny44NSAyLjM3LjQyIDIuNTYtLjc4bC4wNS0uMzIuMDQtLjI3YTYyLjU3IDYyLjU3IDAgMCAwLTIuMDctMjcuNjMgNjUuMjEgNjUuMjEgMCAwIDAtMy41LTljLS41NC0xLjE1LTIuMi0xLjA2LTIuNzQuMS0zLjk3IDguMzgtMTAuNDMgMTUuNjQtMTguNTcgMjEuMDQtMS4xMy43NS0uODcgMi41Ny40MyAyLjk3YTYxLjk4IDYxLjk4IDAgMCAxIDYuNTMgMi40MWMtNS40NiA5LjM0LTE0IDE4LjQ1LTIxLjM5IDE4LjQ1YTE5LjQgMTkuNCAwIDAgMS00LjE4LS40NmMtMTIuMzMtMi43LTE0LjM4LTE4LjE2LTE0LjcyLTMwLjc3TDEyOCA3MWwyMy4yMy0xLjc5YTMgMyAwIDAgMCAyLjc3LTIuOTl2LTYuNDRhMyAzIDAgMCAwLTIuNzctMi45OUwxMjcuNSA1NWgtLjA1bC0uNDMtMTIuNTFaTTEzMCAyN2ExMCAxMCAwIDEgMS0yMCAwIDEwIDEwIDAgMCAxIDIwIDBaIiBmaWxsPSIjRkY5MTVDIiBzdHJva2U9IiMyQjNDNUEiIHN0cm9rZS13aWR0aD0iOCIgcGFpbnQtb3JkZXI9InN0cm9rZSIvPgo8cGF0aCBkPSJNODYgNjcuMTVhMiAyIDAgMCAwIDEuODUgMkwxMTIgNzFsNi42My02LjYzYS44LjggMCAwIDAtLjU2LTEuMzdIODZ2NC4xNVpNMTgyLjEyIDk4LjgxYS45LjkgMCAwIDEgMS41Ny4xIDY1LjI2IDY1LjI2IDAgMCAxIDMuNTUgOS4xMiA2Mi41NyA2Mi41NyAwIDAgMSAxLjk4IDI4LjIyYy0uMiAxLjItMS42OSAxLjYzLTIuNTcuNzhhNTYuNjkgNTYuNjkgMCAwIDAtMTEuMDktOC4zNiAxLjU1IDEuNTUgMCAwIDEtLjY0LTEuOThjMy4zNy03LjU4IDUuODUtMTYuNjcgNy4wNS0yNy40N2EuOTQuOTQgMCAwIDEgLjE1LS40WiIgZmlsbD0iIzhBMzgwRiIvPgo8cGF0aCBkPSJtMTI3IDQyIC41IDEzLTUuODIgNS40M2ExIDEgMCAwIDEtMS42OC0uNzNWNDJoN1ptNTcgNzhjLTQgNDAtNDQgNjAtNjQgNjBWNjQuNWExLjUgMS41IDAgMCAxIDEuNS0xLjVIMTU0djMuMjlhMyAzIDAgMCAxLTIuNyAyLjk4TDEyOCA3MWwxLjEgNDEuNzdjLjM0IDEyLjYxIDIuMzcgMjguMSAxNC43IDMwLjc4YTE5IDE5IDAgMCAwIDQuMTMuNDUgNSA1IDAgMCAwLTMuNjUgMS42MmMtNC44NyA1LjgtMTAuNCAxMS42NC0xOC41NyAxNC4yOCAyMS41IDEgNTEuMS0xMy42MyA1Ni4yOS02MC45bDIgMjFaIiBmaWxsPSIjOEEzODBGIi8+CjxwYXRoIGQ9Ik0xMjIgMzkuOWMtMS4xLjExLTIgMS0yIDIuMXMuOSAyLjAxIDIgMS44OGExNyAxNyAwIDAgMCAxMC4wMi00Ljg2QTE3IDE3IDAgMCAwIDEzNyAyNy4wOGEuMDguMDggMCAwIDAtLjA4LS4wOC4wOC4wOCAwIDAgMC0uMDguMDdDMTM1Ljc5IDMzLjggMTI5LjY3IDM5LjEgMTIyIDM5LjlaIiBmaWxsPSIjOEEzODBGIi8+CjxjbGlwUGF0aCBpZD0iYSI+CjxyZWN0IHg9IjIwIiB5PSIyMCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHJ4PSIxMDAiLz4KPC9jbGlwUGF0aD4KPC9zdmc+Cg==",
533
- url: "https://oxc.rs/docs/guide/usage/linter.html",
534
- spectrum: "bleeding_edge"
535
- },
536
- // Error tracking
537
- {
538
- category: "Error tracking",
539
- label: "Sentry",
540
- flag: "sentry",
541
- image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxLjEzZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjU2IDIyNyI+PHBhdGggZmlsbD0iIzM2MkQ1OSIgZD0iTTE0OC4zNjggMTIuNDAzYTIzLjkzNSAyMy45MzUgMCAwIDAtNDEuMDAzIDBMNzMuNjQgNzAuMTY1YzUyLjQyNiAyNi4xNzQgODcuMDUgNzguMTc3IDkwLjk3NSAxMzYuNjQyaC0yMy42NzljLTMuOTE4LTUwLjExMy0zNC4wNjEtOTQuNDEtNzkuMjM4LTExNi40NDhsLTMxLjIxMyA1My45N2E4MS41OTUgODEuNTk1IDAgMCAxIDQ3LjMwNyA2Mi4zNzVoLTU0LjM4YTMuODk1IDMuODk1IDAgMCAxLTMuMTc4LTUuNjlsMTUuMDY5LTI1LjYyNmE1NS4wNDYgNTUuMDQ2IDAgMCAwLTE3LjIyMS05LjczOEwzLjE2NyAxOTEuMjc3YTIzLjI2OSAyMy4yNjkgMCAwIDAgOC42NjIgMzEuOTgyYTIzLjg4NCAyMy44ODQgMCAwIDAgMTEuNTgzIDMuMDc1aDc0LjQ3MWE5OS40MzIgOTkuNDMyIDAgMCAwLTQxLjAwMy04OC43MmwxMS44NC0yMC41YzM1LjY3OSAyNC41MDQgNTUuNzU0IDY2LjAzOCA1Mi43OSAxMDkuMjJoNjMuMDk0YzIuOTktNjUuNDMtMjkuMDQ3LTEyNy41MTItODQuMTA3LTE2Mi45ODZsMjMuOTM1LTQxLjAwMmEzLjk0NyAzLjk0NyAwIDAgMSA1LjM4Mi0xLjM4NGMyLjcxNiAxLjQ4NiAxMDMuOTkzIDE3OC4yMDggMTA1Ljg5IDE4MC4yNThhMy44OTUgMy44OTUgMCAwIDEtMy40ODYgNS43OTJoLTI0LjM5NmMuMzA3IDYuNTI2LjMwNyAxMy4wMzUgMCAxOS41MjhoMjQuNDk5QTIzLjUyOCAyMy41MjggMCAwIDAgMjU2IDIwMi45MWEyMy4wMTUgMjMuMDE1IDAgMCAwLTMuMTc4LTExLjY4NUwxNDguMzY4IDEyLjQwM1oiLz48L3N2Zz4=",
542
- url: "https://sentry.io"
543
- },
544
- {
545
- category: "Error tracking",
546
- label: "Logrocket",
547
- flag: "logrocket",
548
- image: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAuMDAgMC4wMCAxMTQ2LjAwIDE3ODMuMDAiPgo8cGF0aCBmaWxsPSIjNzE1MmExIiBkPSIKICBNIDM3Mi4yNCAxMjc5Ljc3CiAgUSAzNDYuNTQgMTI5OC44OCAzMjIuMTggMTMxOS42OAogIEMgMjkyLjkwIDEzNDQuNjYgMjYzLjgwIDEzNjkuNzYgMjM0LjEzIDEzOTQuMjkKICBDIDIwMi45MyAxNDIwLjA5IDE3NS40MyAxNDU1LjExIDEzMC4zNCAxNDQ3LjYyCiAgQyAxMDEuNDYgMTQ0Mi44MyA3NS4xMCAxNDIzLjM2IDY4LjE3IDEzOTMuOTYKICBDIDQ3LjM2IDEzMDUuNzggMjYuNDMgMTIxNy42MiA2LjQ0IDExMjkuMjUKICBRIDMuNjAgMTExNi42OCAyLjU1IDExMDkuNjQKICBDIC04Ljg3IDEwMzIuNDMgMjMuMTAgOTU1LjU1IDgzLjQ3IDkwNi44OQogIFEgMTM0Ljk3IDg2NS4zOCAxODcuNTMgODI1LjIxCiAgQyAxOTEuNDkgODIyLjE4IDE5My4yMSA4MTkuMDYgMTkyLjkxIDgxNC4yNQogIEMgMTc5LjY3IDYwMy40MyAyNDguMjYgMzk5LjYwIDM2MS40NiAyMjQuMjAKICBDIDM4My43MiAxODkuNjkgNDA4LjY2IDE1Ni40NyA0MzUuMDcgMTIzLjU3CiAgQyA0NzMuODUgNzUuMjQgNTE3LjU1IDMyLjM2IDU3MC42NiAwLjYwCiAgQSAwLjgxIDAuODAgLTQ1LjMgMCAxIDU3MS41MCAwLjU5CiAgQyA2NDguNjkgNDYuMTcgNzA1LjA0IDExNi4wMCA3NTYuNzcgMTg4LjU0CiAgUSA3NjIuODYgMTk3LjA3IDc2OC4yMSAyMDQuOTUKICBDIDg4OS44MiAzODQuMTEgOTY0LjI0IDYwMC4xNyA5NDkuNTkgODE4LjczCiAgQSAwLjk5IDAuOTggMjEuNSAwIDAgOTQ5Ljk1IDgxOS41NQogIEMgOTkyLjA4IDg1My4zOSAxMDM4LjgyIDg4OC43OSAxMDcyLjIxIDkxNy4wMwogIFEgMTA4OC4xMCA5MzAuNDYgMTEwMy42MyA5NTIuMzQKICBRIDExNDYuNzYgMTAxMy4wOSAxMTQ1LjI5IDEwODcuMjQKICBDIDExNDUuMDIgMTEwMS4wNiAxMTQyLjgyIDExMTQuMTUgMTEzOS42OCAxMTI5LjQ4CiAgQyAxMTIxLjQzIDEyMTguNzMgMTEwMi4yMSAxMzE1LjQ2IDEwODMuOTMgMTM5Ni45MwogIEMgMTA3My41NCAxNDQzLjIwIDEwMTMuNzMgMTQ2My4wMiA5NzQuNjAgMTQ0Mi4xMwogIFEgOTY4LjY2IDE0MzguOTYgOTU4LjcwIDE0MzAuODMKICBDIDg5Ni40OCAxMzc5Ljk2IDgzNC42MiAxMzI4LjcwIDc3Mi40OSAxMjc3Ljg5CiAgQSAwLjg1IDAuODQgNDMuMyAwIDAgNzcxLjM4IDEyNzcuOTIKICBDIDcxOS4xMSAxMzI1LjgyIDY1Mi4zMyAxMzU0Ljg4IDU4MS40NSAxMzU3LjY4CiAgQyA1MDUuMTMgMTM2MC42OSA0MzAuMjkgMTMzMC43MyAzNzMuMTQgMTI3OS44MQogIEEgMC43MSAwLjcxIDAuMCAwIDAgMzcyLjI0IDEyNzkuNzcKICBaCiAgTSA0MDkuOTcgNTkyLjcwCiAgQyA0MjEuNDggNjg1LjIxIDUwNy45OSA3NDIuODggNTk5LjI0IDcyOC40NgogIEMgNjM1LjgyIDcyMi42OCA2NjguMDcgNzA1LjQ4IDY5Mi45NCA2NzguNDQKICBDIDc1MC40OCA2MTUuODUgNzQ2LjQ4IDUyMC4yNiA2ODQuMTkgNDYyLjU1CiAgUSA2MzkuMjEgNDIwLjg5IDU3Ni4wMSA0MTguNjEKICBDIDQ4MC42NyA0MTUuMTggMzk3Ljg4IDQ5NS40NSA0MDkuOTcgNTkyLjcwCiAgWiIKLz4KPGVsbGlwc2UgZmlsbD0iIzcxNTJhMSIgY3g9IjAuMDAiIGN5PSIwLjAwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1NjkuODYsNTc2LjU1KSByb3RhdGUoLTAuMSkiIHJ4PSI3OS41MCIgcnk9Ijc2LjQ1Ii8+CjxwYXRoIGZpbGw9IiM3MTUyYTEiIGQ9IgogIE0gNDYyLjgzIDE2MTkuNzkKICBBIDAuNzAgMC43MCAwLjAgMCAwIDQ2MS43MiAxNjE5LjYyCiAgUSA0NDguMTIgMTYzMy4wMCA0MzQuMzYgMTY0Ni4zNgogIFEgNDIwLjc0IDE2NTkuNTcgNDEzLjQ0IDE2NjUuMTkKICBDIDM5NC4yMCAxNjc5Ljk5IDM1OS43NCAxNjY3LjIxIDM1NC43NyAxNjQzLjI1CiAgUSAzNTQuMDYgMTYzOS44MyAzNTQuMDIgMTYzMy4yMQogIFEgMzUzLjUwIDE1NTIuNTQgMzU0LjA4IDE0NzEuODcKICBRIDM1NC4xNCAxNDYyLjk2IDM1NS41NiAxNDU4LjQzCiAgUSAzNTguMzEgMTQ0OS42OSAzNjUuMTYgMTQ0My45MAogIFEgMzg3LjA4IDE0MjUuMzggNDEyLjEyIDE0MzguMDgKICBDIDUwOS4xMSAxNDg3LjI5IDYzMi4zMyAxNDg2LjE0IDcyOS41MyAxNDM4LjUzCiAgUSA3MzYuNjkgMTQzNS4wMiA3NDEuMDEgMTQzNC4xMAogIEMgNzU4Ljk2IDE0MzAuMjcgNzgwLjcyIDE0MzkuNTggNzg2LjY1IDE0NTguMTQKICBRIDc4OC4yMCAxNDYzLjAwIDc4OC4yOCAxNDc0LjUzCiAgUSA3ODkuMDMgMTU5Mi4yMyA3ODguMzAgMTYzOS43NQogIFEgNzg4LjI2IDE2NDIuNjIgNzg2LjQ4IDE2NDcuMzkKICBDIDc3OS4xOCAxNjY3LjA2IDc1Mi4wNSAxNjc3LjQwIDczMy4zNyAxNjY3Ljc4CiAgQyA3MjguMTkgMTY2NS4xMSA3MjEuNTYgMTY1OS4wMCA3MTcuNjkgMTY1NS4zMQogIFEgNjk4Ljg2IDE2MzcuMzkgNjgwLjI4IDE2MTkuMzYKICBBIDAuNTAgMC41MCAwLjAgMCAwIDY3OS40OSAxNjE5LjQ5CiAgQyA2NTUuODUgMTY2NC42MSA2MzIuODkgMTcxMC4yMCA2MDguNzcgMTc1NS4xMwogIFEgNjAyLjU0IDE3NjYuNzQgNjAyLjM3IDE3NjYuOTkKICBDIDU5MC4yNCAxNzg1LjQzIDU1OS41NiAxNzg2LjkyIDU0NC4yNSAxNzcxLjg5CiAgUSA1NDAuODcgMTc2OC41OCA1MzYuNDIgMTc2MC4yNwogIEMgNTExLjQ0IDE3MTMuNjUgNDg3LjU5IDE2NjYuNDQgNDYyLjgzIDE2MTkuNzkKICBaIgovPgo8L3N2Zz4K",
549
- url: "https://logrocket.com",
550
- disabled: true
551
- },
552
- // Tooling
553
- {
554
- category: "Tooling",
555
- label: "Storybook",
556
- flag: "storybook",
557
- image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDY0IDY0Ij48dGl0bGU+aWNvbi1zdG9yeWJvb2stc3F1YXJlPC90aXRsZT48ZGVmcz48cGF0aCBpZD0icGF0aC0xIiBkPSJNMS45NDY0OTk1NSw1Ny4xMzA5NDcyIEwwLjAwMjI1OTczMTE2LDUuOTU0NzY2NjMgQy0wLjA2MTk1MDg4MzMsNC4yNjQ2MTgxNCAxLjI0OTkyMjg4LDIuODMyMjM2OTcgMi45NTg3MTUxOSwyLjcyNjczNDE4IEw0Ny4wMjI2NTM4LDAuMDA2MTc2Mjg0OTEgQzQ4Ljc2MjAwMDUsLTAuMTAxMjEyOTYgNTAuMjYwMTQ1OCwxLjIwNDYyOTggNTAuMzY4ODU1LDIuOTIyODU3NzEgQzUwLjM3Mjk1MDUsMi45ODc1OTM5MSA1MC4zNzUsMy4wNTI0NDA2MyA1MC4zNzUsMy4xMTczMDMxNSBMNTAuMzc1LDU4Ljg4MjgwMjggQzUwLjM3NSw2MC42MDQzODMxIDQ4Ljk2MjIyOTYsNjIgNDcuMjE5NDg5NCw2MiBDNDcuMTcyMjc3Niw2MiA0Ny4xMjUwNzIxLDYxLjk5ODk1MzQgNDcuMDc3OTA4LDYxLjk5Njg2MDYgTDQuOTU4MjA5MDQsNjAuMTI4MDk5NyBDMy4zMTc4MTMzMyw2MC4wNTUzMTg5IDIuMDA4MDgyMDMsNTguNzUxOTE4IDEuOTQ2NDk5NTUsNTcuMTMwOTQ3MiBaIi8+PC9kZWZzPjxnIGlkPSJpY29uLXN0b3J5Ym9vay1zcXVhcmUiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiPjxnIGlkPSJpY29uIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg3LjAwMDAwMCwgMS4wMDAwMDApIj48cGF0aCBpZD0iQ29tYmluZWQtU2hhcGUiIGZpbGw9IiNGRjQ3ODUiIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTUwLjM2ODg1NSwyLjkyMjg1NzcxIEM1MC4zNzI5NTA1LDIuOTg3NTkzOTEgNTAuMzc1LDMuMDUyNDQwNjMgNTAuMzc1LDMuMTE3MzAzMTUgTDUwLjM3NSw1OC44ODI4MDI4IEM1MC4zNzUsNjAuNjA0MzgzMSA0OC45NjIyMjk2LDYyIDQ3LjIxOTQ4OTQsNjIgQzQ3LjE3MjI3NzYsNjIgNDcuMTI1MDcyMSw2MS45OTg5NTM0IDQ3LjA3NzkwOCw2MS45OTY4NjA2IEw0Ljk1ODIwOTA0LDYwLjEyODA5OTcgQzMuMzE3ODEzMzMsNjAuMDU1MzE4OSAyLjAwODA4MjAzLDU4Ljc1MTkxOCAxLjk0NjQ5OTU1LDU3LjEzMDk0NzIgTDAuMDAyMjU5NzMxMTYsNS45NTQ3NjY2MyBDLTAuMDYxOTUwODgzMyw0LjI2NDYxODE0IDEuMjQ5OTIyODgsMi44MzIyMzY5NyAyLjk1ODcxNTE5LDIuNzI2NzM0MTggTDM3LjQ5OSwwLjU5NCBMMzcuMTk4MTMyNCw3LjYyMDc4NzY2IEMzNy4xOTQ3MjI3LDcuNzAxNzk2NjQgMzcuMjEyODIyNCw3Ljc4MTc4NzMxIDM3LjI0OTk4NjksNy44NTMwNTUyNSBMMzcuMjkzNDE1OCw3LjkyMTEzMDI2IEMzNy40NTA1Mjk2LDguMTI1NzM2MzcgMzcuNzQ1ODAwMiw4LjE2NTc4Mjg4IDM3Ljk1MjkyMDksOC4wMTA1NzY3IEwzNy45NTI5MjA5LDguMDEwNTc2NyBMNDAuNzE1ODE5NSw1Ljk0MDE5Njc4IEw0My4wNDkzOTY1LDcuNzU2MTg1MzcgQzQzLjEzNjgzODgsNy44MjQyMzI3OSA0My4yNDU4NjM0LDcuODU5NDY1ODQgNDMuMzU3MTEwNiw3Ljg1NTYyODEzIEM0My42MTY5MjEzLDcuODQ2NjY1NTMgNDMuODIwMTg0NCw3LjYzMTMzOTEgNDMuODExMTExNSw3LjM3NDY4MzE2IEw0My44MTExMTE1LDcuMzc0NjgzMTYgTDQzLjU1LDAuMjIgTDQ3LjAyMjY1MzgsMC4wMDYxNzYyODQ5MSBDNDguNzYyMDAwNSwtMC4xMDEyMTI5NiA1MC4yNjAxNDU4LDEuMjA0NjI5OCA1MC4zNjg4NTUsMi45MjI4NTc3MSBaIi8+PG1hc2sgaWQ9Im1hc2stMiIgZmlsbD0iI2ZmZiI+PHVzZSB4bGluazpocmVmPSIjcGF0aC0xIi8+PC9tYXNrPjxwYXRoIGlkPSJTIiBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iIGQ9Ik0yOC45MzM4Mzc0LDIzLjQ4MTQzMzEgQzI4LjkzMzgzNzQsMjQuNjk0ODAyOCAzNy4xMzAwNTExLDI0LjExMzI2NjQgMzguMjMwMzIwNiwyMy4yNjA5NTc4IEMzOC4yMzAzMjA2LDE0Ljk5ODE5OTUgMzMuNzg0MTc2NCwxMC42NTYyNSAyNS42NDI1MzU5LDEwLjY1NjI1IEMxNy41MDA4OTUyLDEwLjY1NjI1IDEyLjkzOTI2NjgsMTUuMDY1NzU0MiAxMi45MzkyNjY4LDIxLjY4MDAxNCBDMTIuOTM5MjY2OCwzMy4xOTk4NDk5IDI4LjUyOTY0MjQsMzMuNDIwMzI1MSAyOC41Mjk2NDI0LDM5LjcwMzg3MiBDMjguNTI5NjQyNCw0MS40Njc2NzQ1IDI3LjY2MzUxMDUsNDIuNTE0OTMyMyAyNS43NTgwMjAxLDQyLjUxNDkzMjMgQzIzLjI3NTEwODQsNDIuNTE0OTMyMyAyMi4yOTM0OTIyLDQxLjI1MDQ2OTIgMjIuNDA4OTc2NSwzNi45NTEyMDA0IEMyMi40MDg5NzY1LDM2LjAxODUzMDQgMTIuOTM5MjY2OCwzNS43Mjc3NjIxIDEyLjY1MDU1NjEsMzYuOTUxMjAwNCBDMTEuOTE1MzgxMiw0Ny4zNjk4NTkxIDE4LjQyNDc2OTMsNTAuMzc1IDI1Ljg3MzUwNDQsNTAuMzc1IEMzMy4wOTEyNzA5LDUwLjM3NSAzOC43NSw0Ni41Mzg2MDY5IDM4Ljc1LDM5LjU5MzYzNDEgQzM4Ljc1LDI3LjI0NzAxNTkgMjIuOTI4NjU1NiwyNy41Nzc3Mjg5IDIyLjkyODY1NTYsMjEuNDU5NTM4NyBDMjIuOTI4NjU1NiwxOC45NzkxOTEyIDI0Ljc3NjQwMzksMTguNjQ4NDc4MyAyNS44NzM1MDQ0LDE4LjY0ODQ3ODMgQzI3LjAyODM0NywxOC42NDg0NzgzIDI5LjEwNzA2MzgsMTguODUxNDUxMyAyOC45MzM4Mzc0LDIzLjQ4MTQzMzEgWiIgbWFzaz0idXJsKCNtYXNrLTIpIi8+PHBhdGggaWQ9ImJvb2ttYXJrIiBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iIGQ9Ik0zNi44MTI5MTY5LDcuMjc0MDYxMDYgTDM3LjEyMTUyMzMsMC4zNjY4MTQ5NzQgTDQzLjMyNjE1MDMsMCBMNDMuNTkzNDUwMyw3LjAzMjIyNjUzIEM0My42MDI3NTMxLDcuMjg0NDI5NDMgNDMuMzk0MzM5OSw3LjQ5NjAxOTkxIDQzLjEyNzk0NjQsNy41MDQ4MjcgQzQzLjAxMzg4MDQsNy41MDg1OTgxMiA0Mi45MDIwOTM1LDcuNDczOTc2MzcgNDIuODEyNDM1Niw3LjQwNzEwOTU5IEw0MC40MTk3MzIzLDUuNjIyNjI4ODEgTDM3LjU4NjgyOTYsNy42NTcwODcxOCBDMzcuMzc0NDYxMSw3LjgwOTYwMDUgMzcuMDcxNzA5Miw3Ljc3MDI0ODggMzYuOTEwNjE0Niw3LjU2OTE5MjY2IEMzNi44NDI4MDE4LDcuNDg0NTU4MDQgMzYuODA4MjU1NSw3LjM4MDE5OSAzNi44MTI5MTY5LDcuMjc0MDYxMDYgWiIgbWFzaz0idXJsKCNtYXNrLTIpIi8+PC9nPjwvZz48L3N2Zz4=",
558
- url: "https://storybook.js.org",
559
- tagline: "Build, test & document components",
560
- repo: "storybookjs/storybook",
561
- links: [
562
- {
563
- label: "Docs",
564
- href: "https://storybook.js.org/docs"
565
- }
566
- ]
567
- }
568
- ];
569
- var flags = features.map((f) => f.flag);
570
- var cliFlags = features.filter((f) => !f.invisibleCli).map((f) => f.flag);
571
-
572
- export {
573
- features,
574
- flags,
575
- cliFlags
576
- };