[READ-ONLY] Mirror of https://github.com/flo-bit/bluesky-website-generator. bluesky-website-generator.vercel.app
0

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'main' into cloudflar_pages

author
Florian
committer
GitHub
date (May 5, 2025, 2:06 AM +0200) commit c1af3107 parent cc2afb94
+1611 -82
+8 -1
package.json
··· 51 51 "@atproto/oauth-client-node": "^0.2.16", 52 52 "@atproto/syntax": "^0.4.0", 53 53 "@fuxui/base": "^0.0.7", 54 + "@fuxui/colors": "^0.1.7", 54 55 "@fuxui/social": "^0.0.9", 55 56 "@libsql/client": "^0.14.0", 56 57 "@oslojs/encoding": "^1.1.0", 57 - "drizzle-orm": "^0.40.0" 58 + "@tiptap/core": "^2.11.9", 59 + "@tiptap/extension-image": "^2.11.9", 60 + "@tiptap/extension-link": "^2.11.9", 61 + "@tiptap/extension-placeholder": "^2.11.9", 62 + "@tiptap/starter-kit": "^2.11.9", 63 + "drizzle-orm": "^0.40.0", 64 + "open-graph-scraper": "^6.10.0" 58 65 } 59 66 }
+731
pnpm-lock.yaml
··· 20 20 '@fuxui/base': 21 21 specifier: ^0.0.7 22 22 version: 0.0.7(svelte@5.28.2)(tailwindcss@4.1.5) 23 + '@fuxui/colors': 24 + specifier: ^0.1.7 25 + version: 0.1.7(svelte@5.28.2)(tailwindcss@4.1.5) 23 26 '@fuxui/social': 24 27 specifier: ^0.0.9 25 28 version: 0.0.9(svelte@5.28.2)(tailwindcss@4.1.5) ··· 29 32 '@oslojs/encoding': 30 33 specifier: ^1.1.0 31 34 version: 1.1.0 35 + '@tiptap/core': 36 + specifier: ^2.11.9 37 + version: 2.11.9(@tiptap/pm@2.11.9) 38 + '@tiptap/extension-image': 39 + specifier: ^2.11.9 40 + version: 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) 41 + '@tiptap/extension-link': 42 + specifier: ^2.11.9 43 + version: 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9) 44 + '@tiptap/extension-placeholder': 45 + specifier: ^2.11.9 46 + version: 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9) 47 + '@tiptap/starter-kit': 48 + specifier: ^2.11.9 49 + version: 2.11.9 32 50 drizzle-orm: 33 51 specifier: ^0.40.0 34 52 version: 0.40.1(@libsql/client@0.14.0)(gel@2.1.0) 53 + open-graph-scraper: 54 + specifier: ^6.10.0 55 + version: 6.10.0 35 56 devDependencies: 36 57 '@eslint/compat': 37 58 specifier: ^1.2.5 ··· 668 689 svelte: '>=5' 669 690 tailwindcss: '>=3' 670 691 692 + '@fuxui/colors@0.1.7': 693 + resolution: {integrity: sha512-nudN3g26OgPXxRJK20QQ9DzVls1uIHS06mPAv+1feBCwXN44E4q6UF0CjuKPV27pq3itxFPkgnX7r2PTidc5WQ==, tarball: https://registry.npmjs.org/@fuxui/colors/-/colors-0.1.7.tgz} 694 + peerDependencies: 695 + svelte: '>=5' 696 + tailwindcss: '>=3' 697 + 671 698 '@fuxui/social@0.0.9': 672 699 resolution: {integrity: sha512-fWvXr0B+vUKX4sU+fymeLxpO2Z5/BR4ix+iCq/zdX3wpERJqr228+btU9SVnNllVjulspdnnrrrPJcIioNZBIw==, tarball: https://registry.npmjs.org/@fuxui/social/-/social-0.0.9.tgz} 673 700 peerDependencies: ··· 798 825 799 826 '@polka/url@1.0.0-next.29': 800 827 resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==, tarball: https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz} 828 + 829 + '@remirror/core-constants@3.0.0': 830 + resolution: {integrity: sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==, tarball: https://registry.npmjs.org/@remirror/core-constants/-/core-constants-3.0.0.tgz} 801 831 802 832 '@rollup/rollup-android-arm-eabi@4.40.1': 803 833 resolution: {integrity: sha512-kxz0YeeCrRUHz3zyqvd7n+TVRlNyTifBsmnmNPtk3hQURUyG9eAB+usz6DAwagMusjx/zb3AjvDUvhFGDAexGw==, tarball: https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.1.tgz} ··· 1036 1066 peerDependencies: 1037 1067 vite: ^5.2.0 || ^6 1038 1068 1069 + '@texel/color@1.1.10': 1070 + resolution: {integrity: sha512-0du+jhP68nvdXGoS/dxAyqkmWWzsogtU3chygmNf/u4QtDIbG1e5OfcVIWfx29B5ANCLEDOPEQIvOhrvwhlORg==, tarball: https://registry.npmjs.org/@texel/color/-/color-1.1.10.tgz} 1071 + 1072 + '@tiptap/core@2.11.9': 1073 + resolution: {integrity: sha512-UZSxQLLyJst47xep3jlyKM6y1ebZnmvbGsB7njBVjfxf5H+4yFpRJwwNqrBHM/vyU55LCtPChojqaYC1wXLf6g==, tarball: https://registry.npmjs.org/@tiptap/core/-/core-2.11.9.tgz} 1074 + peerDependencies: 1075 + '@tiptap/pm': ^2.7.0 1076 + 1077 + '@tiptap/extension-blockquote@2.11.9': 1078 + resolution: {integrity: sha512-muGiVb5k86wF01ehbtT5oh1bxwcI0yQo47y9Sso7Jlvd06GW6Ur3X2aJwtKZsV0uPTFliKKLR6DhtLJE1AaR4g==, tarball: https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.11.9.tgz} 1079 + peerDependencies: 1080 + '@tiptap/core': ^2.7.0 1081 + 1082 + '@tiptap/extension-bold@2.11.9': 1083 + resolution: {integrity: sha512-VUwiKOBr2gFxI098hICgfkeCQqkFZXVFLxKMvu/ohwmuTV412cxtYJZikhN0JuINUjBt+LX1zk72BJ8q2C9puA==, tarball: https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.11.9.tgz} 1084 + peerDependencies: 1085 + '@tiptap/core': ^2.7.0 1086 + 1087 + '@tiptap/extension-bullet-list@2.11.9': 1088 + resolution: {integrity: sha512-H9n0ShHVFc+UNZCui/wplDdVoi4MYVFWB1GFOhHSiSe4CCGNW6qftjI7c0NPR7Bhmzga1fraJR5W5H/qCtoPLA==, tarball: https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.11.9.tgz} 1089 + peerDependencies: 1090 + '@tiptap/core': ^2.7.0 1091 + 1092 + '@tiptap/extension-code-block@2.11.9': 1093 + resolution: {integrity: sha512-brwvt/SdP65DpchPv5rkhjEjjIIgE1+9ySw8kCTiyXWUrmZA0kK/iwp5zPpHfsoWT8Sa9+fh2uraVZGOF9Dcqw==, tarball: https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.11.9.tgz} 1094 + peerDependencies: 1095 + '@tiptap/core': ^2.7.0 1096 + '@tiptap/pm': ^2.7.0 1097 + 1098 + '@tiptap/extension-code@2.11.9': 1099 + resolution: {integrity: sha512-RbTdzWk6F1+EsThT2Sj4eQHgkXO3NfFdeNZ/V+t9invJm7duqhprMT0G1aEaSxGvr3rjbdeuwYpSsEeV3Wrw+A==, tarball: https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.11.9.tgz} 1100 + peerDependencies: 1101 + '@tiptap/core': ^2.7.0 1102 + 1103 + '@tiptap/extension-document@2.11.9': 1104 + resolution: {integrity: sha512-lkrCkMDDLtaPvMljw7vfvwnNZmZTy4uIfbkLdF3BkaV4XAHMVfoOzSbq0uRaTgUSLH8Fv0L1B6Nwol4OYnzI3w==, tarball: https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.11.9.tgz} 1105 + peerDependencies: 1106 + '@tiptap/core': ^2.7.0 1107 + 1108 + '@tiptap/extension-dropcursor@2.11.9': 1109 + resolution: {integrity: sha512-LqWEaAWyJ3eUrafgKT4UCIvDqhth1cX976dQcAOPg5POmldZ8KgZTeEYZl7AYpzFS++HlTIwJ8PMOu29/g+l+g==, tarball: https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.11.9.tgz} 1110 + peerDependencies: 1111 + '@tiptap/core': ^2.7.0 1112 + '@tiptap/pm': ^2.7.0 1113 + 1114 + '@tiptap/extension-gapcursor@2.11.9': 1115 + resolution: {integrity: sha512-IFdprIzeDAck0r4mS55ad6tts/AHyLg83jk2jbcy+f7CMGDpoVW8R10ORl8LD8kJBxnC/TqBsbr44mQJtxzDog==, tarball: https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.11.9.tgz} 1116 + peerDependencies: 1117 + '@tiptap/core': ^2.7.0 1118 + '@tiptap/pm': ^2.7.0 1119 + 1120 + '@tiptap/extension-hard-break@2.11.9': 1121 + resolution: {integrity: sha512-S2IfkK+dlX+59KWuUHgtTEjLVsOTEQFt6Kng/lNqKY8G46gujY6L3EDqtPibxs63B+KKOHHOlKShcYZKWzWvvw==, tarball: https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.11.9.tgz} 1122 + peerDependencies: 1123 + '@tiptap/core': ^2.7.0 1124 + 1125 + '@tiptap/extension-heading@2.11.9': 1126 + resolution: {integrity: sha512-Z84Vbw26bnMyIyZ7hc8/xXDD5uAcr4GA1zs0HPs4Er9wROOqkZnlgE54LaObXn2YbMKuDZ24cmCU8LFy0etN+w==, tarball: https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.11.9.tgz} 1127 + peerDependencies: 1128 + '@tiptap/core': ^2.7.0 1129 + 1130 + '@tiptap/extension-history@2.11.9': 1131 + resolution: {integrity: sha512-DqA9tGPqmt5EmREGW2Wg3vc+Qb6rBeSmuHeQ9R4M4dYJYSh2gBheunBNnerQlZDj9Dk4H8NGgAz2YLrAkSlxSA==, tarball: https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.11.9.tgz} 1132 + peerDependencies: 1133 + '@tiptap/core': ^2.7.0 1134 + '@tiptap/pm': ^2.7.0 1135 + 1136 + '@tiptap/extension-horizontal-rule@2.11.9': 1137 + resolution: {integrity: sha512-7UhwRZPA3ykKTat4ooY/GzGO4wy9040vzsnev+189BHIMvxe4I483B1v3sUBvUJrFf8z0+iWulJx3zoTskieoA==, tarball: https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.11.9.tgz} 1138 + peerDependencies: 1139 + '@tiptap/core': ^2.7.0 1140 + '@tiptap/pm': ^2.7.0 1141 + 1142 + '@tiptap/extension-image@2.11.9': 1143 + resolution: {integrity: sha512-1MD2FUzRMz+OSm+y2nQY1CjVynAA0qBAyJwt+T4YefzmxwYrklqCoeLz9a+bK7GxlhSxByGNK5w9aa5oPmKFXA==, tarball: https://registry.npmjs.org/@tiptap/extension-image/-/extension-image-2.11.9.tgz} 1144 + peerDependencies: 1145 + '@tiptap/core': ^2.7.0 1146 + 1147 + '@tiptap/extension-italic@2.11.9': 1148 + resolution: {integrity: sha512-xLQW6OtOwTEOkyvEX0jQcbm4kfjl1uOLMJ5daHolCR3DiEDWoxYrZrs2lt467nf5Sz4/50MQqGuZw8pVfWWxqg==, tarball: https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.11.9.tgz} 1149 + peerDependencies: 1150 + '@tiptap/core': ^2.7.0 1151 + 1152 + '@tiptap/extension-link@2.11.9': 1153 + resolution: {integrity: sha512-gi1UonACmQ/T81QdpIociNEIFPr9h6CKoMxfdZgYRrVWMsZuANuXooSjL8d8OirzWkPHxmbhEMyWjcTAV+HYgw==, tarball: https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.11.9.tgz} 1154 + peerDependencies: 1155 + '@tiptap/core': ^2.7.0 1156 + '@tiptap/pm': ^2.7.0 1157 + 1158 + '@tiptap/extension-list-item@2.11.9': 1159 + resolution: {integrity: sha512-57VO0Joe8WEEz2ypxY64TYx4KenFaqYnhrTLsWUvlearpBXbTFc8IaI/rdLubgJlEE5Q3e+NirCyQSLCE8a2Zg==, tarball: https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.11.9.tgz} 1160 + peerDependencies: 1161 + '@tiptap/core': ^2.7.0 1162 + 1163 + '@tiptap/extension-ordered-list@2.11.9': 1164 + resolution: {integrity: sha512-jLRn0L6nRJ/yp3JEVuk1elc11XPSF4lDTQdj45EMSgxMoHU13LF9MZm2H2jwLXPpBflB/MVJtt9Nd2XzOPTGcw==, tarball: https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.11.9.tgz} 1165 + peerDependencies: 1166 + '@tiptap/core': ^2.7.0 1167 + 1168 + '@tiptap/extension-paragraph@2.11.9': 1169 + resolution: {integrity: sha512-smoxsfujsPJ9GVXG03QqM7yBwVfaLQa0l8VHPXaJUIjjvSpG1g8WlaxC46JB4Ba4W9KlrkPt1fdEpNcelRwcmw==, tarball: https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.11.9.tgz} 1170 + peerDependencies: 1171 + '@tiptap/core': ^2.7.0 1172 + 1173 + '@tiptap/extension-placeholder@2.11.9': 1174 + resolution: {integrity: sha512-bUlvLKjLK4TUf3XKWZpReuIxMPvXfhKrtzxLnE2RJerHpLjiACliqVwMN0XJ3JyEW0DwBax6tSH0jlBSo4c4Vg==, tarball: https://registry.npmjs.org/@tiptap/extension-placeholder/-/extension-placeholder-2.11.9.tgz} 1175 + peerDependencies: 1176 + '@tiptap/core': ^2.7.0 1177 + '@tiptap/pm': ^2.7.0 1178 + 1179 + '@tiptap/extension-strike@2.11.9': 1180 + resolution: {integrity: sha512-YFZ/Mjv/wA13oO8wEK4DVw6zSuYfEz4NLF6EA2mMo8N6UUSrBFEWiGE3pHBysIwcRXTaUzzGoYN+lohbmpHwBQ==, tarball: https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.11.9.tgz} 1181 + peerDependencies: 1182 + '@tiptap/core': ^2.7.0 1183 + 1184 + '@tiptap/extension-text-style@2.11.9': 1185 + resolution: {integrity: sha512-lB3uJBRiRYTCxtNeEF70IiwzGFfAU69xvsHpQowJU357lZsTj/QPRQt8Blu48qIoUAJGU00vGRTLae6X9myMMw==, tarball: https://registry.npmjs.org/@tiptap/extension-text-style/-/extension-text-style-2.11.9.tgz} 1186 + peerDependencies: 1187 + '@tiptap/core': ^2.7.0 1188 + 1189 + '@tiptap/extension-text@2.11.9': 1190 + resolution: {integrity: sha512-OGjdsXN+d3UZFQZ+r+ozX20G7BcHWCGkn9XZUVItJwzpNa9x4EiPsKCJVk17jVFRAsAHdMBcsBRdErzdO6/Hrg==, tarball: https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.11.9.tgz} 1191 + peerDependencies: 1192 + '@tiptap/core': ^2.7.0 1193 + 1194 + '@tiptap/pm@2.11.9': 1195 + resolution: {integrity: sha512-hhonYVcL3fRkWyiCFJQ7HHXtmFviwnof8VDRFX1vm69GskGeqUTJUFR+1as2hZYekHe5rO4FZUm1dlETDWTnzQ==, tarball: https://registry.npmjs.org/@tiptap/pm/-/pm-2.11.9.tgz} 1196 + 1197 + '@tiptap/starter-kit@2.11.9': 1198 + resolution: {integrity: sha512-UUx5t1PrwR+KVOjTkmGC1duOq6Ubz/fsetI1OieyegMT/2J1wkFFP1w3NFZarj5jo0GLBt3GMlBwS9GY8cJUxQ==, tarball: https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.11.9.tgz} 1199 + 1039 1200 '@types/cookie@0.6.0': 1040 1201 resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==, tarball: https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz} 1041 1202 ··· 1044 1205 1045 1206 '@types/json-schema@7.0.15': 1046 1207 resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, tarball: https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz} 1208 + 1209 + '@types/linkify-it@5.0.0': 1210 + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==, tarball: https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz} 1211 + 1212 + '@types/markdown-it@14.1.2': 1213 + resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==, tarball: https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz} 1214 + 1215 + '@types/mdurl@2.0.0': 1216 + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==, tarball: https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz} 1047 1217 1048 1218 '@types/node@22.15.3': 1049 1219 resolution: {integrity: sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==, tarball: https://registry.npmjs.org/@types/node/-/node-22.15.3.tgz} ··· 1152 1322 resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==, tarball: https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz} 1153 1323 engines: {node: '>=18'} 1154 1324 1325 + boolbase@1.0.0: 1326 + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==, tarball: https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz} 1327 + 1155 1328 brace-expansion@1.1.11: 1156 1329 resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, tarball: https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz} 1157 1330 ··· 1184 1357 chalk@4.1.2: 1185 1358 resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, tarball: https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz} 1186 1359 engines: {node: '>=10'} 1360 + 1361 + chardet@2.1.0: 1362 + resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==, tarball: https://registry.npmjs.org/chardet/-/chardet-2.1.0.tgz} 1363 + 1364 + cheerio-select@2.1.0: 1365 + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==, tarball: https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz} 1366 + 1367 + cheerio@1.0.0: 1368 + resolution: {integrity: sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==, tarball: https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz} 1369 + engines: {node: '>=18.17'} 1187 1370 1188 1371 chokidar@4.0.3: 1189 1372 resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==, tarball: https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz} ··· 1230 1413 resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==, tarball: https://registry.npmjs.org/cors/-/cors-2.8.5.tgz} 1231 1414 engines: {node: '>= 0.10'} 1232 1415 1416 + crelt@1.0.6: 1417 + resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==, tarball: https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz} 1418 + 1233 1419 cross-spawn@7.0.6: 1234 1420 resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==, tarball: https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz} 1235 1421 engines: {node: '>= 8'} 1422 + 1423 + css-select@5.1.0: 1424 + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==, tarball: https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz} 1425 + 1426 + css-what@6.1.0: 1427 + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==, tarball: https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz} 1428 + engines: {node: '>= 6'} 1236 1429 1237 1430 cssesc@3.0.0: 1238 1431 resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==, tarball: https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz} ··· 1276 1469 1277 1470 devalue@5.1.1: 1278 1471 resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==, tarball: https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz} 1472 + 1473 + dom-serializer@2.0.0: 1474 + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==, tarball: https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz} 1475 + 1476 + domelementtype@2.3.0: 1477 + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==, tarball: https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz} 1478 + 1479 + domhandler@5.0.3: 1480 + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==, tarball: https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz} 1481 + engines: {node: '>= 4'} 1482 + 1483 + domutils@3.2.2: 1484 + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==, tarball: https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz} 1279 1485 1280 1486 drizzle-kit@0.30.6: 1281 1487 resolution: {integrity: sha512-U4wWit0fyZuGuP7iNmRleQyK2V8wCuv57vf5l3MnG4z4fzNTjY/U13M8owyQ5RavqvqxBifWORaR3wIUzlN64g==, tarball: https://registry.npmjs.org/drizzle-kit/-/drizzle-kit-0.30.6.tgz} ··· 1384 1590 resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==, tarball: https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz} 1385 1591 engines: {node: '>= 0.8'} 1386 1592 1593 + encoding-sniffer@0.2.0: 1594 + resolution: {integrity: sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==, tarball: https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz} 1595 + 1387 1596 enhanced-resolve@5.18.1: 1388 1597 resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==, tarball: https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz} 1389 1598 engines: {node: '>=10.13.0'} 1599 + 1600 + entities@4.5.0: 1601 + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==, tarball: https://registry.npmjs.org/entities/-/entities-4.5.0.tgz} 1602 + engines: {node: '>=0.12'} 1603 + 1604 + entities@6.0.0: 1605 + resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==, tarball: https://registry.npmjs.org/entities/-/entities-6.0.0.tgz} 1606 + engines: {node: '>=0.12'} 1390 1607 1391 1608 env-paths@3.0.0: 1392 1609 resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==, tarball: https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz} ··· 1645 1862 hls.js@1.6.2: 1646 1863 resolution: {integrity: sha512-rx+pETSCJEDThm/JCm8CuadcAC410cVjb1XVXFNDKFuylaayHk1+tFxhkjvnMDAfqsJHxZXDAJ3Uc2d5xQyWlQ==, tarball: https://registry.npmjs.org/hls.js/-/hls.js-1.6.2.tgz} 1647 1864 1865 + htmlparser2@9.1.0: 1866 + resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==, tarball: https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz} 1867 + 1648 1868 http-errors@2.0.0: 1649 1869 resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==, tarball: https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz} 1650 1870 engines: {node: '>= 0.8'} ··· 1822 2042 resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==, tarball: https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz} 1823 2043 engines: {node: '>=10'} 1824 2044 2045 + linkify-it@5.0.0: 2046 + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==, tarball: https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz} 2047 + 2048 + linkifyjs@4.2.0: 2049 + resolution: {integrity: sha512-pCj3PrQyATaoTYKHrgWRF3SJwsm61udVh+vuls/Rl6SptiDhgE7ziUIudAedRY9QEfynmM7/RmLEfPUyw1HPCw==, tarball: https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.2.0.tgz} 2050 + 1825 2051 loadjs@4.3.0: 1826 2052 resolution: {integrity: sha512-vNX4ZZLJBeDEOBvdr2v/F+0aN5oMuPu7JTqrMwp+DtgK+AryOlpy6Xtm2/HpNr+azEa828oQjOtWsB6iDtSfSQ==, tarball: https://registry.npmjs.org/loadjs/-/loadjs-4.3.0.tgz} 1827 2053 ··· 1847 2073 magic-string@0.30.17: 1848 2074 resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==, tarball: https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz} 1849 2075 2076 + markdown-it@14.1.0: 2077 + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==, tarball: https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz} 2078 + hasBin: true 2079 + 1850 2080 math-intrinsics@1.1.0: 1851 2081 resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==, tarball: https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz} 1852 2082 engines: {node: '>= 0.4'} 2083 + 2084 + mdurl@2.0.0: 2085 + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==, tarball: https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz} 1853 2086 1854 2087 media-typer@1.1.0: 1855 2088 resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==, tarball: https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz} ··· 1921 2154 resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==, tarball: https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz} 1922 2155 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1923 2156 2157 + nth-check@2.1.1: 2158 + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==, tarball: https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz} 2159 + 1924 2160 number-flow@0.5.7: 1925 2161 resolution: {integrity: sha512-P83Y9rBgN3Xpz5677YDNtuQHZpIldw6WXeWRg0+edrfFthhV7QqRdABas5gtu07QPLvbA8XhfO69rIvbKRzYIg==, tarball: https://registry.npmjs.org/number-flow/-/number-flow-0.5.7.tgz} 1926 2162 ··· 1939 2175 once@1.4.0: 1940 2176 resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, tarball: https://registry.npmjs.org/once/-/once-1.4.0.tgz} 1941 2177 2178 + open-graph-scraper@6.10.0: 2179 + resolution: {integrity: sha512-JTuaO/mWUPduYCIQvunmsQnfGpSRFUTEh4k5cW2KOafJxTm3Z99z25/c1oO9QnIh2DK7ol5plJAq3EUVy+5xyw==, tarball: https://registry.npmjs.org/open-graph-scraper/-/open-graph-scraper-6.10.0.tgz} 2180 + engines: {node: '>=18.0.0'} 2181 + 1942 2182 optionator@0.9.4: 1943 2183 resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==, tarball: https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz} 1944 2184 engines: {node: '>= 0.8.0'} 2185 + 2186 + orderedmap@2.1.1: 2187 + resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==, tarball: https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz} 1945 2188 1946 2189 p-limit@3.1.0: 1947 2190 resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, tarball: https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz} ··· 1954 2197 parent-module@1.0.1: 1955 2198 resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, tarball: https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz} 1956 2199 engines: {node: '>=6'} 2200 + 2201 + parse5-htmlparser2-tree-adapter@7.1.0: 2202 + resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==, tarball: https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz} 2203 + 2204 + parse5-parser-stream@7.1.2: 2205 + resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==, tarball: https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz} 2206 + 2207 + parse5@7.3.0: 2208 + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==, tarball: https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz} 1957 2209 1958 2210 parseurl@1.3.3: 1959 2211 resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==, tarball: https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz} ··· 2098 2350 promise-limit@2.7.0: 2099 2351 resolution: {integrity: sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==, tarball: https://registry.npmjs.org/promise-limit/-/promise-limit-2.7.0.tgz} 2100 2352 2353 + prosemirror-changeset@2.2.1: 2354 + resolution: {integrity: sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==, tarball: https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.2.1.tgz} 2355 + 2356 + prosemirror-collab@1.3.1: 2357 + resolution: {integrity: sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==, tarball: https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz} 2358 + 2359 + prosemirror-commands@1.7.1: 2360 + resolution: {integrity: sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==, tarball: https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.7.1.tgz} 2361 + 2362 + prosemirror-dropcursor@1.8.2: 2363 + resolution: {integrity: sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==, tarball: https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.2.tgz} 2364 + 2365 + prosemirror-gapcursor@1.3.2: 2366 + resolution: {integrity: sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==, tarball: https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz} 2367 + 2368 + prosemirror-history@1.4.1: 2369 + resolution: {integrity: sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ==, tarball: https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.4.1.tgz} 2370 + 2371 + prosemirror-inputrules@1.5.0: 2372 + resolution: {integrity: sha512-K0xJRCmt+uSw7xesnHmcn72yBGTbY45vm8gXI4LZXbx2Z0jwh5aF9xrGQgrVPu0WbyFVFF3E/o9VhJYz6SQWnA==, tarball: https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.5.0.tgz} 2373 + 2374 + prosemirror-keymap@1.2.3: 2375 + resolution: {integrity: sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==, tarball: https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.3.tgz} 2376 + 2377 + prosemirror-markdown@1.13.2: 2378 + resolution: {integrity: sha512-FPD9rHPdA9fqzNmIIDhhnYQ6WgNoSWX9StUZ8LEKapaXU9i6XgykaHKhp6XMyXlOWetmaFgGDS/nu/w9/vUc5g==, tarball: https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.13.2.tgz} 2379 + 2380 + prosemirror-menu@1.2.5: 2381 + resolution: {integrity: sha512-qwXzynnpBIeg1D7BAtjOusR+81xCp53j7iWu/IargiRZqRjGIlQuu1f3jFi+ehrHhWMLoyOQTSRx/IWZJqOYtQ==, tarball: https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.5.tgz} 2382 + 2383 + prosemirror-model@1.25.1: 2384 + resolution: {integrity: sha512-AUvbm7qqmpZa5d9fPKMvH1Q5bqYQvAZWOGRvxsB6iFLyycvC9MwNemNVjHVrWgjaoxAfY8XVg7DbvQ/qxvI9Eg==, tarball: https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.25.1.tgz} 2385 + 2386 + prosemirror-schema-basic@1.2.4: 2387 + resolution: {integrity: sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ==, tarball: https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.4.tgz} 2388 + 2389 + prosemirror-schema-list@1.5.1: 2390 + resolution: {integrity: sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==, tarball: https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.5.1.tgz} 2391 + 2392 + prosemirror-state@1.4.3: 2393 + resolution: {integrity: sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==, tarball: https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz} 2394 + 2395 + prosemirror-tables@1.7.1: 2396 + resolution: {integrity: sha512-eRQ97Bf+i9Eby99QbyAiyov43iOKgWa7QCGly+lrDt7efZ1v8NWolhXiB43hSDGIXT1UXgbs4KJN3a06FGpr1Q==, tarball: https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.7.1.tgz} 2397 + 2398 + prosemirror-trailing-node@3.0.0: 2399 + resolution: {integrity: sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==, tarball: https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-3.0.0.tgz} 2400 + peerDependencies: 2401 + prosemirror-model: ^1.22.1 2402 + prosemirror-state: ^1.4.2 2403 + prosemirror-view: ^1.33.8 2404 + 2405 + prosemirror-transform@1.10.4: 2406 + resolution: {integrity: sha512-pwDy22nAnGqNR1feOQKHxoFkkUtepoFAd3r2hbEDsnf4wp57kKA36hXsB3njA9FtONBEwSDnDeCiJe+ItD+ykw==, tarball: https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.10.4.tgz} 2407 + 2408 + prosemirror-view@1.39.2: 2409 + resolution: {integrity: sha512-BmOkml0QWNob165gyUxXi5K5CVUgVPpqMEAAml/qzgKn9boLUWVPzQ6LtzXw8Cn1GtRQX4ELumPxqtLTDaAKtg==, tarball: https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.39.2.tgz} 2410 + 2101 2411 proxy-addr@2.0.7: 2102 2412 resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==, tarball: https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz} 2103 2413 engines: {node: '>= 0.10'} 2104 2414 2105 2415 psl@1.15.0: 2106 2416 resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==, tarball: https://registry.npmjs.org/psl/-/psl-1.15.0.tgz} 2417 + 2418 + punycode.js@2.3.1: 2419 + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==, tarball: https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz} 2420 + engines: {node: '>=6'} 2107 2421 2108 2422 punycode@2.3.1: 2109 2423 resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, tarball: https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz} ··· 2146 2460 resolution: {integrity: sha512-C5VvvgCCyfyotVITIAv+4efVytl5F7wt+/I2i9q9GZcEXW9BP52YYOXC58igUi+LFZVHukErIIqQSWwv/M3WRw==, tarball: https://registry.npmjs.org/rollup/-/rollup-4.40.1.tgz} 2147 2461 engines: {node: '>=18.0.0', npm: '>=8.0.0'} 2148 2462 hasBin: true 2463 + 2464 + rope-sequence@1.3.4: 2465 + resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==, tarball: https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz} 2149 2466 2150 2467 router@2.2.0: 2151 2468 resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==, tarball: https://registry.npmjs.org/router/-/router-2.2.0.tgz} ··· 2349 2666 engines: {node: '>=14.17'} 2350 2667 hasBin: true 2351 2668 2669 + uc.micro@2.1.0: 2670 + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==, tarball: https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz} 2671 + 2352 2672 uint8arrays@3.0.0: 2353 2673 resolution: {integrity: sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==, tarball: https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz} 2354 2674 ··· 2424 2744 vite: 2425 2745 optional: true 2426 2746 2747 + w3c-keyname@2.2.8: 2748 + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==, tarball: https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz} 2749 + 2427 2750 web-streams-polyfill@3.3.3: 2428 2751 resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==, tarball: https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz} 2429 2752 engines: {node: '>= 8'} 2753 + 2754 + whatwg-encoding@3.1.1: 2755 + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==, tarball: https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz} 2756 + engines: {node: '>=18'} 2757 + 2758 + whatwg-mimetype@4.0.0: 2759 + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==, tarball: https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz} 2760 + engines: {node: '>=18'} 2430 2761 2431 2762 which@2.0.2: 2432 2763 resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, tarball: https://registry.npmjs.org/which/-/which-2.0.2.tgz} ··· 2909 3240 tailwind-variants: 1.0.0(tailwindcss@4.1.5) 2910 3241 tailwindcss: 4.1.5 2911 3242 3243 + '@fuxui/colors@0.1.7(svelte@5.28.2)(tailwindcss@4.1.5)': 3244 + dependencies: 3245 + '@fuxui/base': 0.0.7(svelte@5.28.2)(tailwindcss@4.1.5) 3246 + '@texel/color': 1.1.10 3247 + '@use-gesture/vanilla': 10.3.1 3248 + bits-ui: 1.4.4(svelte@5.28.2) 3249 + svelte: 5.28.2 3250 + tailwindcss: 4.1.5 3251 + 2912 3252 '@fuxui/social@0.0.9(svelte@5.28.2)(tailwindcss@4.1.5)': 2913 3253 dependencies: 2914 3254 '@atproto/api': 0.15.5 ··· 3052 3392 '@petamoriken/float16@3.9.2': {} 3053 3393 3054 3394 '@polka/url@1.0.0-next.29': {} 3395 + 3396 + '@remirror/core-constants@3.0.0': {} 3055 3397 3056 3398 '@rollup/rollup-android-arm-eabi@4.40.1': 3057 3399 optional: true ··· 3243 3585 tailwindcss: 4.1.5 3244 3586 vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(lightningcss@1.29.2) 3245 3587 3588 + '@texel/color@1.1.10': {} 3589 + 3590 + '@tiptap/core@2.11.9(@tiptap/pm@2.11.9)': 3591 + dependencies: 3592 + '@tiptap/pm': 2.11.9 3593 + 3594 + '@tiptap/extension-blockquote@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': 3595 + dependencies: 3596 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) 3597 + 3598 + '@tiptap/extension-bold@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': 3599 + dependencies: 3600 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) 3601 + 3602 + '@tiptap/extension-bullet-list@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': 3603 + dependencies: 3604 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) 3605 + 3606 + '@tiptap/extension-code-block@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9)': 3607 + dependencies: 3608 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) 3609 + '@tiptap/pm': 2.11.9 3610 + 3611 + '@tiptap/extension-code@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': 3612 + dependencies: 3613 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) 3614 + 3615 + '@tiptap/extension-document@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': 3616 + dependencies: 3617 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) 3618 + 3619 + '@tiptap/extension-dropcursor@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9)': 3620 + dependencies: 3621 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) 3622 + '@tiptap/pm': 2.11.9 3623 + 3624 + '@tiptap/extension-gapcursor@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9)': 3625 + dependencies: 3626 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) 3627 + '@tiptap/pm': 2.11.9 3628 + 3629 + '@tiptap/extension-hard-break@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': 3630 + dependencies: 3631 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) 3632 + 3633 + '@tiptap/extension-heading@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': 3634 + dependencies: 3635 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) 3636 + 3637 + '@tiptap/extension-history@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9)': 3638 + dependencies: 3639 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) 3640 + '@tiptap/pm': 2.11.9 3641 + 3642 + '@tiptap/extension-horizontal-rule@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9)': 3643 + dependencies: 3644 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) 3645 + '@tiptap/pm': 2.11.9 3646 + 3647 + '@tiptap/extension-image@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': 3648 + dependencies: 3649 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) 3650 + 3651 + '@tiptap/extension-italic@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': 3652 + dependencies: 3653 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) 3654 + 3655 + '@tiptap/extension-link@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9)': 3656 + dependencies: 3657 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) 3658 + '@tiptap/pm': 2.11.9 3659 + linkifyjs: 4.2.0 3660 + 3661 + '@tiptap/extension-list-item@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': 3662 + dependencies: 3663 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) 3664 + 3665 + '@tiptap/extension-ordered-list@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': 3666 + dependencies: 3667 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) 3668 + 3669 + '@tiptap/extension-paragraph@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': 3670 + dependencies: 3671 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) 3672 + 3673 + '@tiptap/extension-placeholder@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9)': 3674 + dependencies: 3675 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) 3676 + '@tiptap/pm': 2.11.9 3677 + 3678 + '@tiptap/extension-strike@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': 3679 + dependencies: 3680 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) 3681 + 3682 + '@tiptap/extension-text-style@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': 3683 + dependencies: 3684 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) 3685 + 3686 + '@tiptap/extension-text@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': 3687 + dependencies: 3688 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) 3689 + 3690 + '@tiptap/pm@2.11.9': 3691 + dependencies: 3692 + prosemirror-changeset: 2.2.1 3693 + prosemirror-collab: 1.3.1 3694 + prosemirror-commands: 1.7.1 3695 + prosemirror-dropcursor: 1.8.2 3696 + prosemirror-gapcursor: 1.3.2 3697 + prosemirror-history: 1.4.1 3698 + prosemirror-inputrules: 1.5.0 3699 + prosemirror-keymap: 1.2.3 3700 + prosemirror-markdown: 1.13.2 3701 + prosemirror-menu: 1.2.5 3702 + prosemirror-model: 1.25.1 3703 + prosemirror-schema-basic: 1.2.4 3704 + prosemirror-schema-list: 1.5.1 3705 + prosemirror-state: 1.4.3 3706 + prosemirror-tables: 1.7.1 3707 + prosemirror-trailing-node: 3.0.0(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.39.2) 3708 + prosemirror-transform: 1.10.4 3709 + prosemirror-view: 1.39.2 3710 + 3711 + '@tiptap/starter-kit@2.11.9': 3712 + dependencies: 3713 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) 3714 + '@tiptap/extension-blockquote': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) 3715 + '@tiptap/extension-bold': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) 3716 + '@tiptap/extension-bullet-list': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) 3717 + '@tiptap/extension-code': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) 3718 + '@tiptap/extension-code-block': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9) 3719 + '@tiptap/extension-document': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) 3720 + '@tiptap/extension-dropcursor': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9) 3721 + '@tiptap/extension-gapcursor': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9) 3722 + '@tiptap/extension-hard-break': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) 3723 + '@tiptap/extension-heading': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) 3724 + '@tiptap/extension-history': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9) 3725 + '@tiptap/extension-horizontal-rule': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9) 3726 + '@tiptap/extension-italic': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) 3727 + '@tiptap/extension-list-item': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) 3728 + '@tiptap/extension-ordered-list': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) 3729 + '@tiptap/extension-paragraph': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) 3730 + '@tiptap/extension-strike': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) 3731 + '@tiptap/extension-text': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) 3732 + '@tiptap/extension-text-style': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) 3733 + '@tiptap/pm': 2.11.9 3734 + 3246 3735 '@types/cookie@0.6.0': {} 3247 3736 3248 3737 '@types/estree@1.0.7': {} 3249 3738 3250 3739 '@types/json-schema@7.0.15': {} 3740 + 3741 + '@types/linkify-it@5.0.0': {} 3742 + 3743 + '@types/markdown-it@14.1.2': 3744 + dependencies: 3745 + '@types/linkify-it': 5.0.0 3746 + '@types/mdurl': 2.0.0 3747 + 3748 + '@types/mdurl@2.0.0': {} 3251 3749 3252 3750 '@types/node@22.15.3': 3253 3751 dependencies: ··· 3397 3895 transitivePeerDependencies: 3398 3896 - supports-color 3399 3897 3898 + boolbase@1.0.0: {} 3899 + 3400 3900 brace-expansion@1.1.11: 3401 3901 dependencies: 3402 3902 balanced-match: 1.0.2 ··· 3431 3931 ansi-styles: 4.3.0 3432 3932 supports-color: 7.2.0 3433 3933 3934 + chardet@2.1.0: {} 3935 + 3936 + cheerio-select@2.1.0: 3937 + dependencies: 3938 + boolbase: 1.0.0 3939 + css-select: 5.1.0 3940 + css-what: 6.1.0 3941 + domelementtype: 2.3.0 3942 + domhandler: 5.0.3 3943 + domutils: 3.2.2 3944 + 3945 + cheerio@1.0.0: 3946 + dependencies: 3947 + cheerio-select: 2.1.0 3948 + dom-serializer: 2.0.0 3949 + domhandler: 5.0.3 3950 + domutils: 3.2.2 3951 + encoding-sniffer: 0.2.0 3952 + htmlparser2: 9.1.0 3953 + parse5: 7.3.0 3954 + parse5-htmlparser2-tree-adapter: 7.1.0 3955 + parse5-parser-stream: 7.1.2 3956 + undici: 6.21.2 3957 + whatwg-mimetype: 4.0.0 3958 + 3434 3959 chokidar@4.0.3: 3435 3960 dependencies: 3436 3961 readdirp: 4.1.2 ··· 3463 3988 dependencies: 3464 3989 object-assign: 4.1.1 3465 3990 vary: 1.1.2 3991 + 3992 + crelt@1.0.6: {} 3466 3993 3467 3994 cross-spawn@7.0.6: 3468 3995 dependencies: ··· 3470 3997 shebang-command: 2.0.0 3471 3998 which: 2.0.2 3472 3999 4000 + css-select@5.1.0: 4001 + dependencies: 4002 + boolbase: 1.0.0 4003 + css-what: 6.1.0 4004 + domhandler: 5.0.3 4005 + domutils: 3.2.2 4006 + nth-check: 2.1.1 4007 + 4008 + css-what@6.1.0: {} 4009 + 3473 4010 cssesc@3.0.0: {} 3474 4011 3475 4012 custom-event-polyfill@1.0.7: {} ··· 3492 4029 3493 4030 devalue@5.1.1: {} 3494 4031 4032 + dom-serializer@2.0.0: 4033 + dependencies: 4034 + domelementtype: 2.3.0 4035 + domhandler: 5.0.3 4036 + entities: 4.5.0 4037 + 4038 + domelementtype@2.3.0: {} 4039 + 4040 + domhandler@5.0.3: 4041 + dependencies: 4042 + domelementtype: 2.3.0 4043 + 4044 + domutils@3.2.2: 4045 + dependencies: 4046 + dom-serializer: 2.0.0 4047 + domelementtype: 2.3.0 4048 + domhandler: 5.0.3 4049 + 3495 4050 drizzle-kit@0.30.6: 3496 4051 dependencies: 3497 4052 '@drizzle-team/brocli': 0.10.2 ··· 3519 4074 3520 4075 encodeurl@2.0.0: {} 3521 4076 4077 + encoding-sniffer@0.2.0: 4078 + dependencies: 4079 + iconv-lite: 0.6.3 4080 + whatwg-encoding: 3.1.1 4081 + 3522 4082 enhanced-resolve@5.18.1: 3523 4083 dependencies: 3524 4084 graceful-fs: 4.2.11 3525 4085 tapable: 2.2.1 4086 + 4087 + entities@4.5.0: {} 4088 + 4089 + entities@6.0.0: {} 3526 4090 3527 4091 env-paths@3.0.0: {} 3528 4092 ··· 3898 4462 3899 4463 hls.js@1.6.2: {} 3900 4464 4465 + htmlparser2@9.1.0: 4466 + dependencies: 4467 + domelementtype: 2.3.0 4468 + domhandler: 5.0.3 4469 + domutils: 3.2.2 4470 + entities: 4.5.0 4471 + 3901 4472 http-errors@2.0.0: 3902 4473 dependencies: 3903 4474 depd: 2.0.0 ··· 4040 4611 4041 4612 lilconfig@2.1.0: {} 4042 4613 4614 + linkify-it@5.0.0: 4615 + dependencies: 4616 + uc.micro: 2.1.0 4617 + 4618 + linkifyjs@4.2.0: {} 4619 + 4043 4620 loadjs@4.3.0: {} 4044 4621 4045 4622 locate-character@3.0.0: {} ··· 4060 4637 dependencies: 4061 4638 '@jridgewell/sourcemap-codec': 1.5.0 4062 4639 4640 + markdown-it@14.1.0: 4641 + dependencies: 4642 + argparse: 2.0.1 4643 + entities: 4.5.0 4644 + linkify-it: 5.0.0 4645 + mdurl: 2.0.0 4646 + punycode.js: 2.3.1 4647 + uc.micro: 2.1.0 4648 + 4063 4649 math-intrinsics@1.1.0: {} 4650 + 4651 + mdurl@2.0.0: {} 4064 4652 4065 4653 media-typer@1.1.0: {} 4066 4654 ··· 4111 4699 fetch-blob: 3.2.0 4112 4700 formdata-polyfill: 4.0.10 4113 4701 4702 + nth-check@2.1.1: 4703 + dependencies: 4704 + boolbase: 1.0.0 4705 + 4114 4706 number-flow@0.5.7: 4115 4707 dependencies: 4116 4708 esm-env: 1.2.2 ··· 4127 4719 dependencies: 4128 4720 wrappy: 1.0.2 4129 4721 4722 + open-graph-scraper@6.10.0: 4723 + dependencies: 4724 + chardet: 2.1.0 4725 + cheerio: 1.0.0 4726 + iconv-lite: 0.6.3 4727 + undici: 6.21.2 4728 + 4130 4729 optionator@0.9.4: 4131 4730 dependencies: 4132 4731 deep-is: 0.1.4 ··· 4136 4735 type-check: 0.4.0 4137 4736 word-wrap: 1.2.5 4138 4737 4738 + orderedmap@2.1.1: {} 4739 + 4139 4740 p-limit@3.1.0: 4140 4741 dependencies: 4141 4742 yocto-queue: 0.1.0 ··· 4147 4748 parent-module@1.0.1: 4148 4749 dependencies: 4149 4750 callsites: 3.1.0 4751 + 4752 + parse5-htmlparser2-tree-adapter@7.1.0: 4753 + dependencies: 4754 + domhandler: 5.0.3 4755 + parse5: 7.3.0 4756 + 4757 + parse5-parser-stream@7.1.2: 4758 + dependencies: 4759 + parse5: 7.3.0 4760 + 4761 + parse5@7.3.0: 4762 + dependencies: 4763 + entities: 6.0.0 4150 4764 4151 4765 parseurl@1.3.3: {} 4152 4766 ··· 4220 4834 4221 4835 promise-limit@2.7.0: {} 4222 4836 4837 + prosemirror-changeset@2.2.1: 4838 + dependencies: 4839 + prosemirror-transform: 1.10.4 4840 + 4841 + prosemirror-collab@1.3.1: 4842 + dependencies: 4843 + prosemirror-state: 1.4.3 4844 + 4845 + prosemirror-commands@1.7.1: 4846 + dependencies: 4847 + prosemirror-model: 1.25.1 4848 + prosemirror-state: 1.4.3 4849 + prosemirror-transform: 1.10.4 4850 + 4851 + prosemirror-dropcursor@1.8.2: 4852 + dependencies: 4853 + prosemirror-state: 1.4.3 4854 + prosemirror-transform: 1.10.4 4855 + prosemirror-view: 1.39.2 4856 + 4857 + prosemirror-gapcursor@1.3.2: 4858 + dependencies: 4859 + prosemirror-keymap: 1.2.3 4860 + prosemirror-model: 1.25.1 4861 + prosemirror-state: 1.4.3 4862 + prosemirror-view: 1.39.2 4863 + 4864 + prosemirror-history@1.4.1: 4865 + dependencies: 4866 + prosemirror-state: 1.4.3 4867 + prosemirror-transform: 1.10.4 4868 + prosemirror-view: 1.39.2 4869 + rope-sequence: 1.3.4 4870 + 4871 + prosemirror-inputrules@1.5.0: 4872 + dependencies: 4873 + prosemirror-state: 1.4.3 4874 + prosemirror-transform: 1.10.4 4875 + 4876 + prosemirror-keymap@1.2.3: 4877 + dependencies: 4878 + prosemirror-state: 1.4.3 4879 + w3c-keyname: 2.2.8 4880 + 4881 + prosemirror-markdown@1.13.2: 4882 + dependencies: 4883 + '@types/markdown-it': 14.1.2 4884 + markdown-it: 14.1.0 4885 + prosemirror-model: 1.25.1 4886 + 4887 + prosemirror-menu@1.2.5: 4888 + dependencies: 4889 + crelt: 1.0.6 4890 + prosemirror-commands: 1.7.1 4891 + prosemirror-history: 1.4.1 4892 + prosemirror-state: 1.4.3 4893 + 4894 + prosemirror-model@1.25.1: 4895 + dependencies: 4896 + orderedmap: 2.1.1 4897 + 4898 + prosemirror-schema-basic@1.2.4: 4899 + dependencies: 4900 + prosemirror-model: 1.25.1 4901 + 4902 + prosemirror-schema-list@1.5.1: 4903 + dependencies: 4904 + prosemirror-model: 1.25.1 4905 + prosemirror-state: 1.4.3 4906 + prosemirror-transform: 1.10.4 4907 + 4908 + prosemirror-state@1.4.3: 4909 + dependencies: 4910 + prosemirror-model: 1.25.1 4911 + prosemirror-transform: 1.10.4 4912 + prosemirror-view: 1.39.2 4913 + 4914 + prosemirror-tables@1.7.1: 4915 + dependencies: 4916 + prosemirror-keymap: 1.2.3 4917 + prosemirror-model: 1.25.1 4918 + prosemirror-state: 1.4.3 4919 + prosemirror-transform: 1.10.4 4920 + prosemirror-view: 1.39.2 4921 + 4922 + prosemirror-trailing-node@3.0.0(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.39.2): 4923 + dependencies: 4924 + '@remirror/core-constants': 3.0.0 4925 + escape-string-regexp: 4.0.0 4926 + prosemirror-model: 1.25.1 4927 + prosemirror-state: 1.4.3 4928 + prosemirror-view: 1.39.2 4929 + 4930 + prosemirror-transform@1.10.4: 4931 + dependencies: 4932 + prosemirror-model: 1.25.1 4933 + 4934 + prosemirror-view@1.39.2: 4935 + dependencies: 4936 + prosemirror-model: 1.25.1 4937 + prosemirror-state: 1.4.3 4938 + prosemirror-transform: 1.10.4 4939 + 4223 4940 proxy-addr@2.0.7: 4224 4941 dependencies: 4225 4942 forwarded: 0.2.0 ··· 4228 4945 psl@1.15.0: 4229 4946 dependencies: 4230 4947 punycode: 2.3.1 4948 + 4949 + punycode.js@2.3.1: {} 4231 4950 4232 4951 punycode@2.3.1: {} 4233 4952 ··· 4281 5000 '@rollup/rollup-win32-ia32-msvc': 4.40.1 4282 5001 '@rollup/rollup-win32-x64-msvc': 4.40.1 4283 5002 fsevents: 2.3.3 5003 + 5004 + rope-sequence@1.3.4: {} 4284 5005 4285 5006 router@2.2.0: 4286 5007 dependencies: ··· 4512 5233 4513 5234 typescript@5.8.3: {} 4514 5235 5236 + uc.micro@2.1.0: {} 5237 + 4515 5238 uint8arrays@3.0.0: 4516 5239 dependencies: 4517 5240 multiformats: 9.9.0 ··· 4550 5273 optionalDependencies: 4551 5274 vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(lightningcss@1.29.2) 4552 5275 5276 + w3c-keyname@2.2.8: {} 5277 + 4553 5278 web-streams-polyfill@3.3.3: {} 5279 + 5280 + whatwg-encoding@3.1.1: 5281 + dependencies: 5282 + iconv-lite: 0.6.3 5283 + 5284 + whatwg-mimetype@4.0.0: {} 4554 5285 4555 5286 which@2.0.2: 4556 5287 dependencies:
+360 -23
src/app.css
··· 4 4 5 5 @source "../node_modules/@fuxui"; 6 6 7 - @theme { 8 - --color-base-50: var(--color-zinc-50); 9 - --color-base-100: var(--color-zinc-100); 10 - --color-base-200: var(--color-zinc-200); 11 - --color-base-300: var(--color-zinc-300); 12 - --color-base-400: var(--color-zinc-400); 13 - --color-base-500: var(--color-zinc-500); 14 - --color-base-600: var(--color-zinc-600); 15 - --color-base-700: var(--color-zinc-700); 16 - --color-base-800: var(--color-zinc-800); 17 - --color-base-900: var(--color-zinc-900); 18 - --color-base-950: var(--color-zinc-950); 7 + @custom-variant dark (&:is(.dark *)); 19 8 20 - --color-accent-50: var(--color-emerald-50); 21 - --color-accent-100: var(--color-emerald-100); 22 - --color-accent-200: var(--color-emerald-200); 23 - --color-accent-300: var(--color-emerald-300); 24 - --color-accent-400: var(--color-emerald-400); 25 - --color-accent-500: var(--color-emerald-500); 26 - --color-accent-600: var(--color-emerald-600); 27 - --color-accent-700: var(--color-emerald-700); 28 - --color-accent-800: var(--color-emerald-800); 29 - --color-accent-900: var(--color-emerald-900); 30 - --color-accent-950: var(--color-emerald-950); 9 + @theme inline { 10 + --color-base-50: var(--base-50); 11 + --color-base-100: var(--base-100); 12 + --color-base-200: var(--base-200); 13 + --color-base-300: var(--base-300); 14 + --color-base-400: var(--base-400); 15 + --color-base-500: var(--base-500); 16 + --color-base-600: var(--base-600); 17 + --color-base-700: var(--base-700); 18 + --color-base-800: var(--base-800); 19 + --color-base-900: var(--base-900); 20 + --color-base-950: var(--base-950); 21 + 22 + --color-accent-50: var(--accent-50); 23 + --color-accent-100: var(--accent-100); 24 + --color-accent-200: var(--accent-200); 25 + --color-accent-300: var(--accent-300); 26 + --color-accent-400: var(--accent-400); 27 + --color-accent-500: var(--accent-500); 28 + --color-accent-600: var(--accent-600); 29 + --color-accent-700: var(--accent-700); 30 + --color-accent-800: var(--accent-800); 31 + --color-accent-900: var(--accent-900); 32 + --color-accent-950: var(--accent-950); 31 33 } 34 + 35 + @layer base { 36 + :root { 37 + --accent-50: var(--color-pink-50); 38 + --accent-100: var(--color-pink-100); 39 + --accent-200: var(--color-pink-200); 40 + --accent-300: var(--color-pink-300); 41 + --accent-400: var(--color-pink-400); 42 + --accent-500: var(--color-pink-500); 43 + --accent-600: var(--color-pink-600); 44 + --accent-700: var(--color-pink-700); 45 + --accent-800: var(--color-pink-800); 46 + --accent-900: var(--color-pink-900); 47 + --accent-950: var(--color-pink-950); 48 + 49 + --base-50: var(--color-stone-50); 50 + --base-100: var(--color-stone-100); 51 + --base-200: var(--color-stone-200); 52 + --base-300: var(--color-stone-300); 53 + --base-400: var(--color-stone-400); 54 + --base-500: var(--color-stone-500); 55 + --base-600: var(--color-stone-600); 56 + --base-700: var(--color-stone-700); 57 + --base-800: var(--color-stone-800); 58 + --base-900: var(--color-stone-900); 59 + --base-950: var(--color-stone-950); 60 + } 61 + 62 + .red { 63 + --accent-50: var(--color-red-50); 64 + --accent-100: var(--color-red-100); 65 + --accent-200: var(--color-red-200); 66 + --accent-300: var(--color-red-300); 67 + --accent-400: var(--color-red-400); 68 + --accent-500: var(--color-red-500); 69 + --accent-600: var(--color-red-600); 70 + --accent-700: var(--color-red-700); 71 + --accent-800: var(--color-red-800); 72 + --accent-900: var(--color-red-900); 73 + --accent-950: var(--color-red-950); 74 + } 75 + 76 + .orange { 77 + --accent-50: var(--color-orange-50); 78 + --accent-100: var(--color-orange-100); 79 + --accent-200: var(--color-orange-200); 80 + --accent-300: var(--color-orange-300); 81 + --accent-400: var(--color-orange-400); 82 + --accent-500: var(--color-orange-500); 83 + --accent-600: var(--color-orange-600); 84 + --accent-700: var(--color-orange-700); 85 + --accent-800: var(--color-orange-800); 86 + --accent-900: var(--color-orange-900); 87 + --accent-950: var(--color-orange-950); 88 + } 89 + 90 + .amber { 91 + --accent-50: var(--color-amber-50); 92 + --accent-100: var(--color-amber-100); 93 + --accent-200: var(--color-amber-200); 94 + --accent-300: var(--color-amber-300); 95 + --accent-400: var(--color-amber-400); 96 + --accent-500: var(--color-amber-500); 97 + --accent-600: var(--color-amber-600); 98 + --accent-700: var(--color-amber-700); 99 + --accent-800: var(--color-amber-800); 100 + --accent-900: var(--color-amber-900); 101 + --accent-950: var(--color-amber-950); 102 + } 103 + 104 + .yellow { 105 + --accent-50: var(--color-yellow-50); 106 + --accent-100: var(--color-yellow-100); 107 + --accent-200: var(--color-yellow-200); 108 + --accent-300: var(--color-yellow-300); 109 + --accent-400: var(--color-yellow-400); 110 + --accent-500: var(--color-yellow-500); 111 + --accent-600: var(--color-yellow-600); 112 + --accent-700: var(--color-yellow-700); 113 + --accent-800: var(--color-yellow-800); 114 + --accent-900: var(--color-yellow-900); 115 + --accent-950: var(--color-yellow-950); 116 + } 117 + 118 + .lime { 119 + --accent-50: var(--color-lime-50); 120 + --accent-100: var(--color-lime-100); 121 + --accent-200: var(--color-lime-200); 122 + --accent-300: var(--color-lime-300); 123 + --accent-400: var(--color-lime-400); 124 + --accent-500: var(--color-lime-500); 125 + --accent-600: var(--color-lime-600); 126 + --accent-700: var(--color-lime-700); 127 + --accent-800: var(--color-lime-800); 128 + --accent-900: var(--color-lime-900); 129 + --accent-950: var(--color-lime-950); 130 + } 131 + 132 + .green { 133 + --accent-50: var(--color-green-50); 134 + --accent-100: var(--color-green-100); 135 + --accent-200: var(--color-green-200); 136 + --accent-300: var(--color-green-300); 137 + --accent-400: var(--color-green-400); 138 + --accent-500: var(--color-green-500); 139 + --accent-600: var(--color-green-600); 140 + --accent-700: var(--color-green-700); 141 + --accent-800: var(--color-green-800); 142 + --accent-900: var(--color-green-900); 143 + --accent-950: var(--color-green-950); 144 + } 145 + 146 + .emerald { 147 + --accent-50: var(--color-emerald-50); 148 + --accent-100: var(--color-emerald-100); 149 + --accent-200: var(--color-emerald-200); 150 + --accent-300: var(--color-emerald-300); 151 + --accent-400: var(--color-emerald-400); 152 + --accent-500: var(--color-emerald-500); 153 + --accent-600: var(--color-emerald-600); 154 + --accent-700: var(--color-emerald-700); 155 + --accent-800: var(--color-emerald-800); 156 + --accent-900: var(--color-emerald-900); 157 + --accent-950: var(--color-emerald-950); 158 + } 159 + 160 + .teal { 161 + --accent-50: var(--color-teal-50); 162 + --accent-100: var(--color-teal-100); 163 + --accent-200: var(--color-teal-200); 164 + --accent-300: var(--color-teal-300); 165 + --accent-400: var(--color-teal-400); 166 + --accent-500: var(--color-teal-500); 167 + --accent-600: var(--color-teal-600); 168 + --accent-700: var(--color-teal-700); 169 + --accent-800: var(--color-teal-800); 170 + --accent-900: var(--color-teal-900); 171 + --accent-950: var(--color-teal-950); 172 + } 173 + 174 + .cyan { 175 + --accent-50: var(--color-cyan-50); 176 + --accent-100: var(--color-cyan-100); 177 + --accent-200: var(--color-cyan-200); 178 + --accent-300: var(--color-cyan-300); 179 + --accent-400: var(--color-cyan-400); 180 + --accent-500: var(--color-cyan-500); 181 + --accent-600: var(--color-cyan-600); 182 + --accent-700: var(--color-cyan-700); 183 + --accent-800: var(--color-cyan-800); 184 + --accent-900: var(--color-cyan-900); 185 + --accent-950: var(--color-cyan-950); 186 + } 187 + 188 + .sky { 189 + --accent-50: var(--color-sky-50); 190 + --accent-100: var(--color-sky-100); 191 + --accent-200: var(--color-sky-200); 192 + --accent-300: var(--color-sky-300); 193 + --accent-400: var(--color-sky-400); 194 + --accent-500: var(--color-sky-500); 195 + --accent-600: var(--color-sky-600); 196 + --accent-700: var(--color-sky-700); 197 + --accent-800: var(--color-sky-800); 198 + --accent-900: var(--color-sky-900); 199 + --accent-950: var(--color-sky-950); 200 + } 201 + .blue { 202 + --accent-50: var(--color-blue-50); 203 + --accent-100: var(--color-blue-100); 204 + --accent-200: var(--color-blue-200); 205 + --accent-300: var(--color-blue-300); 206 + --accent-400: var(--color-blue-400); 207 + --accent-500: var(--color-blue-500); 208 + --accent-600: var(--color-blue-600); 209 + --accent-700: var(--color-blue-700); 210 + --accent-800: var(--color-blue-800); 211 + --accent-900: var(--color-blue-900); 212 + --accent-950: var(--color-blue-950); 213 + } 214 + 215 + .indigo { 216 + --accent-50: var(--color-indigo-50); 217 + --accent-100: var(--color-indigo-100); 218 + --accent-200: var(--color-indigo-200); 219 + --accent-300: var(--color-indigo-300); 220 + --accent-400: var(--color-indigo-400); 221 + --accent-500: var(--color-indigo-500); 222 + --accent-600: var(--color-indigo-600); 223 + --accent-700: var(--color-indigo-700); 224 + --accent-800: var(--color-indigo-800); 225 + --accent-900: var(--color-indigo-900); 226 + --accent-950: var(--color-indigo-950); 227 + } 228 + 229 + .violet { 230 + --accent-50: var(--color-violet-50); 231 + --accent-100: var(--color-violet-100); 232 + --accent-200: var(--color-violet-200); 233 + --accent-300: var(--color-violet-300); 234 + --accent-400: var(--color-violet-400); 235 + --accent-500: var(--color-violet-500); 236 + --accent-600: var(--color-violet-600); 237 + --accent-700: var(--color-violet-700); 238 + --accent-800: var(--color-violet-800); 239 + --accent-900: var(--color-violet-900); 240 + --accent-950: var(--color-violet-950); 241 + } 242 + 243 + .purple { 244 + --accent-50: var(--color-purple-50); 245 + --accent-100: var(--color-purple-100); 246 + --accent-200: var(--color-purple-200); 247 + --accent-300: var(--color-purple-300); 248 + --accent-400: var(--color-purple-400); 249 + --accent-500: var(--color-purple-500); 250 + --accent-600: var(--color-purple-600); 251 + --accent-700: var(--color-purple-700); 252 + --accent-800: var(--color-purple-800); 253 + --accent-900: var(--color-purple-900); 254 + --accent-950: var(--color-purple-950); 255 + } 256 + 257 + .fuchsia { 258 + --accent-50: var(--color-fuchsia-50); 259 + --accent-100: var(--color-fuchsia-100); 260 + --accent-200: var(--color-fuchsia-200); 261 + --accent-300: var(--color-fuchsia-300); 262 + --accent-400: var(--color-fuchsia-400); 263 + --accent-500: var(--color-fuchsia-500); 264 + --accent-600: var(--color-fuchsia-600); 265 + --accent-700: var(--color-fuchsia-700); 266 + --accent-800: var(--color-fuchsia-800); 267 + --accent-900: var(--color-fuchsia-900); 268 + --accent-950: var(--color-fuchsia-950); 269 + } 270 + 271 + .pink { 272 + --accent-50: var(--color-pink-50); 273 + --accent-100: var(--color-pink-100); 274 + --accent-200: var(--color-pink-200); 275 + --accent-300: var(--color-pink-300); 276 + --accent-400: var(--color-pink-400); 277 + --accent-500: var(--color-pink-500); 278 + --accent-600: var(--color-pink-600); 279 + --accent-700: var(--color-pink-700); 280 + --accent-800: var(--color-pink-800); 281 + --accent-900: var(--color-pink-900); 282 + --accent-950: var(--color-pink-950); 283 + } 284 + 285 + .rose { 286 + --accent-50: var(--color-rose-50); 287 + --accent-100: var(--color-rose-100); 288 + --accent-200: var(--color-rose-200); 289 + --accent-300: var(--color-rose-300); 290 + --accent-400: var(--color-rose-400); 291 + --accent-500: var(--color-rose-500); 292 + --accent-600: var(--color-rose-600); 293 + --accent-700: var(--color-rose-700); 294 + --accent-800: var(--color-rose-800); 295 + --accent-900: var(--color-rose-900); 296 + --accent-950: var(--color-rose-950); 297 + } 298 + 299 + .gray { 300 + --base-50: var(--color-gray-50); 301 + --base-100: var(--color-gray-100); 302 + --base-200: var(--color-gray-200); 303 + --base-300: var(--color-gray-300); 304 + --base-400: var(--color-gray-400); 305 + --base-500: var(--color-gray-500); 306 + --base-600: var(--color-gray-600); 307 + --base-700: var(--color-gray-700); 308 + --base-800: var(--color-gray-800); 309 + --base-900: var(--color-gray-900); 310 + --base-950: var(--color-gray-950); 311 + } 312 + 313 + .zinc { 314 + --base-50: var(--color-zinc-50); 315 + --base-100: var(--color-zinc-100); 316 + --base-200: var(--color-zinc-200); 317 + --base-300: var(--color-zinc-300); 318 + --base-400: var(--color-zinc-400); 319 + --base-500: var(--color-zinc-500); 320 + --base-600: var(--color-zinc-600); 321 + --base-700: var(--color-zinc-700); 322 + --base-800: var(--color-zinc-800); 323 + --base-900: var(--color-zinc-900); 324 + --base-950: var(--color-zinc-950); 325 + } 326 + 327 + .neutral { 328 + --base-50: var(--color-neutral-50); 329 + --base-100: var(--color-neutral-100); 330 + --base-200: var(--color-neutral-200); 331 + --base-300: var(--color-neutral-300); 332 + --base-400: var(--color-neutral-400); 333 + --base-500: var(--color-neutral-500); 334 + --base-600: var(--color-neutral-600); 335 + --base-700: var(--color-neutral-700); 336 + --base-800: var(--color-neutral-800); 337 + --base-900: var(--color-neutral-900); 338 + --base-950: var(--color-neutral-950); 339 + } 340 + 341 + .stone { 342 + --base-50: var(--color-stone-50); 343 + --base-100: var(--color-stone-100); 344 + --base-200: var(--color-stone-200); 345 + --base-300: var(--color-stone-300); 346 + --base-400: var(--color-stone-400); 347 + --base-500: var(--color-stone-500); 348 + --base-600: var(--color-stone-600); 349 + --base-700: var(--color-stone-700); 350 + --base-800: var(--color-stone-800); 351 + --base-900: var(--color-stone-900); 352 + --base-950: var(--color-stone-950); 353 + } 354 + 355 + .slate { 356 + --base-50: var(--color-slate-50); 357 + --base-100: var(--color-slate-100); 358 + --base-200: var(--color-slate-200); 359 + --base-300: var(--color-slate-300); 360 + --base-400: var(--color-slate-400); 361 + --base-500: var(--color-slate-500); 362 + --base-600: var(--color-slate-600); 363 + --base-700: var(--color-slate-700); 364 + --base-800: var(--color-slate-800); 365 + --base-900: var(--color-slate-900); 366 + --base-950: var(--color-slate-950); 367 + } 368 + }
+31
src/app.html
··· 5 5 <link rel="icon" href="%sveltekit.assets%/favicon.png" /> 6 6 <meta name="viewport" content="width=device-width, initial-scale=1" /> 7 7 %sveltekit.head% 8 + 9 + 10 + <script> 11 + let dark = localStorage.getItem('darkMode'); 12 + if (dark) { 13 + dark = JSON.parse(dark); 14 + } else { 15 + dark = window.matchMedia('(prefers-color-scheme: dark)').matches; 16 + } 17 + 18 + var root = document.getElementsByTagName('html')[0]; 19 + if (dark) { 20 + root.classList.add('dark'); 21 + } else { 22 + root.classList.remove('dark'); 23 + } 24 + 25 + // get accent color from local storage 26 + let accentColor = localStorage.getItem('accentColor'); 27 + if (accentColor) { 28 + accentColor = JSON.parse(accentColor); 29 + root.classList.add(accentColor); 30 + } 31 + 32 + // get base color from local storage 33 + let baseColor = localStorage.getItem('baseColor'); 34 + if (baseColor) { 35 + baseColor = JSON.parse(baseColor); 36 + root.classList.add(baseColor); 37 + } 38 + </script> 8 39 </head> 9 40 <body data-sveltekit-preload-data="hover" class="bg-base-50 dark:bg-base-950"> 10 41 <div style="display: contents">%sveltekit.body%</div>
+75
src/lib/Editor.svelte
··· 1 + <script lang="ts"> 2 + import { onDestroy, onMount } from 'svelte'; 3 + import { Editor } from '@tiptap/core'; 4 + import StarterKit from '@tiptap/starter-kit'; 5 + import Image from '@tiptap/extension-image'; 6 + import Placeholder from '@tiptap/extension-placeholder'; 7 + import Link from '@tiptap/extension-link' 8 + import { Prose } from '@fuxui/base'; 9 + import { editingState } from '../routes/state.svelte'; 10 + 11 + let element: HTMLElement | undefined = $state(); 12 + let editor: Editor | null = $state(null); 13 + 14 + onMount(() => { 15 + if (!element || editor) return; 16 + 17 + if(!editingState.aboutContent) { 18 + editingState.aboutContent = JSON.parse(localStorage.getItem('aboutContent') ?? '{}'); 19 + } 20 + 21 + editor = new Editor({ 22 + element: element, 23 + extensions: [ 24 + StarterKit.configure({ 25 + history: false 26 + }), 27 + Image.configure(), 28 + Link.configure({ 29 + openOnClick: false 30 + }), 31 + Placeholder.configure({ 32 + placeholder: 'Write something about yourself...' 33 + }) 34 + ], 35 + onTransaction: () => { 36 + editor = editor; 37 + editingState.aboutContent = editor?.getJSON() ?? { type: "doc", content: [] }; 38 + 39 + // save to local storage 40 + localStorage.setItem('aboutContent', JSON.stringify(editingState.aboutContent)); 41 + }, 42 + 43 + content: editingState.aboutContent, 44 + 45 + editorProps: { 46 + attributes: { 47 + class: 'outline-none' 48 + } 49 + } 50 + }); 51 + }); 52 + 53 + onDestroy(() => { 54 + if (editor) { 55 + editor.destroy(); 56 + } 57 + }); 58 + </script> 59 + 60 + <Prose> 61 + <div bind:this={element}></div> 62 + </Prose> 63 + 64 + <style> 65 + :global(.tiptap p.is-editor-empty:first-child::before) { 66 + color: var(--color-base-100); 67 + content: attr(data-placeholder); 68 + float: left; 69 + height: 0; 70 + pointer-events: none; 71 + } 72 + :global(.dark .tiptap p.is-editor-empty:first-child::before) { 73 + color: var(--color-base-200); 74 + } 75 + </style>
+89
src/lib/Links.svelte
··· 1 + <script lang="ts"> 2 + import { toast, Subheading, Input, Button } from '@fuxui/base'; 3 + import { editingState } from '../routes/state.svelte'; 4 + 5 + let { links } = $props(); 6 + 7 + let link = $state(''); 8 + 9 + let loading = $state(false); 10 + 11 + async function addLink(event: Event) { 12 + event.preventDefault(); 13 + if (loading) return; 14 + loading = true; 15 + 16 + // check if link is already in the list 17 + if (editingState.links.some((l) => l.url === link)) { 18 + toast.error('Link already exists'); 19 + loading = false; 20 + return; 21 + } 22 + 23 + const response = await fetch(`/api/get-og?url=${link}`); 24 + const og = await response.json(); 25 + 26 + if (!og.success) { 27 + toast.error('Invalid link'); 28 + loading = false; 29 + return; 30 + } 31 + 32 + editingState.links.push({ 33 + url: link, 34 + title: og.ogTitle, 35 + description: og.ogDescription, 36 + image: og.ogImage?.[0]?.url 37 + }); 38 + 39 + // save links to local storage 40 + localStorage.setItem('links', JSON.stringify(editingState.links)); 41 + 42 + link = ''; 43 + loading = false; 44 + 45 + toast('Link added'); 46 + 47 + console.log(editingState.links); 48 + } 49 + 50 + function removeLink(url: string) { 51 + editingState.links = editingState.links.filter((l) => l.url !== url); 52 + localStorage.setItem('links', JSON.stringify(editingState.links)); 53 + } 54 + </script> 55 + 56 + <div class="px-2"> 57 + <Subheading class="mt-4 mb-4">Add a link:</Subheading> 58 + <form onsubmit={addLink} class="flex gap-2"> 59 + <Input bind:value={link} name="link" class="grow" /> 60 + <Button type="submit" disabled={loading}>{loading ? 'Adding...' : 'Add'}</Button> 61 + </form> 62 + </div> 63 + <div class="mt-6 flex flex-col gap-6 px-4 text-white"> 64 + {#each links as link} 65 + <div class="relative"> 66 + <a href={link.url} target="_blank" class="text-accent-600 dark:text-accent-400 font-medium"> 67 + {link.title} 68 + </a> 69 + 70 + <div class="text-base-600 dark:text-base-400 mt-1 text-sm"> 71 + {link.description} 72 + </div> 73 + 74 + <Button 75 + onclick={() => removeLink(link.url)} 76 + variant="secondary" 77 + size="iconSm" 78 + class="absolute top-0 right-0" 79 + > 80 + <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"> 81 + <path stroke-linecap="round" stroke-linejoin="round" d="m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0" /> 82 + </svg> 83 + 84 + 85 + <span class="sr-only">remove link</span> 86 + </Button> 87 + </div> 88 + {/each} 89 + </div>
+33
src/lib/Navbar.svelte
··· 1 + <script lang="ts"> 2 + import { ThemeToggle, Navbar, Button } from '@fuxui/base'; 3 + 4 + import ThemeSelectDropdown from './ThemeSelectDropdown.svelte'; 5 + </script> 6 + 7 + <Navbar> 8 + <div class="flex items-center gap-2"> 9 + <!-- <Button variant="link" class="block font-normal lg:hidden backdrop-blur-none" popovertarget="mobile-menu"> 10 + <svg 11 + xmlns="http://www.w3.org/2000/svg" 12 + viewBox="0 0 24 24" 13 + fill="currentColor" 14 + class="size-6!" 15 + > 16 + <path 17 + fill-rule="evenodd" 18 + d="M3 9a.75.75 0 0 1 .75-.75h16.5a.75.75 0 0 1 0 1.5H3.75A.75.75 0 0 1 3 9Zm0 6.75a.75.75 0 0 1 .75-.75h16.5a.75.75 0 0 1 0 1.5H3.75a.75.75 0 0 1-.75-.75Z" 19 + clip-rule="evenodd" 20 + ></path> 21 + </svg> 22 + </Button> 23 + 24 + <Logo class={showLogo ? 'lg:ml-5' : 'lg:hidden'} /> --> 25 + </div> 26 + <div class="flex items-center gap-3"> 27 + <ThemeSelectDropdown /> 28 + <ThemeToggle class="backdrop-blur-none" /> 29 + <Button size="lg">Publish</Button> 30 + 31 + <!-- <Github href="https://github.com/flo-bit/ui-kit" class="mr-2 p-2" /> --> 32 + </div> 33 + </Navbar>
+13
src/lib/Posts.svelte
··· 1 + <script lang="ts"> 2 + import { Post, type PostData } from '@fuxui/social'; 3 + 4 + let { posts }: { posts: PostData[] } = $props(); 5 + </script> 6 + 7 + <div class="mt-4"> 8 + {#if posts} 9 + {#each posts as post} 10 + <Post data={post} class="py-4">hello</Post> 11 + {/each} 12 + {/if} 13 + </div>
+106
src/lib/SelectTheme.svelte
··· 1 + <script lang="ts" module> 2 + let accentColor = $state({ 3 + class: '', 4 + label: '' 5 + }); 6 + 7 + let baseColor = $state({ 8 + class: '', 9 + label: '' 10 + }); 11 + </script> 12 + 13 + <script lang="ts"> 14 + import { Subheading, Paragraph } from '@fuxui/base'; 15 + import { ColorSelect } from '@fuxui/colors'; 16 + import { onMount } from 'svelte'; 17 + 18 + let accentColors = [ 19 + { class: 'text-red-500', label: 'red' }, 20 + { class: 'text-orange-500', label: 'orange' }, 21 + { class: 'text-amber-500', label: 'amber' }, 22 + { class: 'text-yellow-500', label: 'yellow' }, 23 + { class: 'text-lime-500', label: 'lime' }, 24 + { class: 'text-green-500', label: 'green' }, 25 + { class: 'text-emerald-500', label: 'emerald' }, 26 + { class: 'text-teal-500', label: 'teal' }, 27 + { class: 'text-cyan-500', label: 'cyan' }, 28 + { class: 'text-sky-500', label: 'sky' }, 29 + { class: 'text-blue-500', label: 'blue' }, 30 + { class: 'text-indigo-500', label: 'indigo' }, 31 + { class: 'text-violet-500', label: 'violet' }, 32 + { class: 'text-purple-500', label: 'purple' }, 33 + { class: 'text-fuchsia-500', label: 'fuchsia' }, 34 + { class: 'text-pink-500', label: 'pink' }, 35 + { class: 'text-rose-500', label: 'rose' } 36 + ]; 37 + 38 + let baseColors = [ 39 + { class: 'text-gray-500', label: 'gray' }, 40 + { class: 'text-stone-500', label: 'stone' }, 41 + { class: 'text-zinc-500', label: 'zinc' }, 42 + { class: 'text-neutral-500', label: 'neutral' }, 43 + { class: 'text-slate-500', label: 'slate' } 44 + ]; 45 + 46 + onMount(() => { 47 + let savedAccentColor = localStorage.getItem('accentColor'); 48 + if (savedAccentColor) { 49 + accentColor.label = JSON.parse(savedAccentColor); 50 + } else { 51 + accentColor.label = 'pink'; 52 + } 53 + 54 + let savedBaseColor = localStorage.getItem('baseColor'); 55 + if (savedBaseColor) { 56 + baseColor.label = JSON.parse(savedBaseColor); 57 + } else { 58 + baseColor.label = 'stone'; 59 + } 60 + }); 61 + 62 + let { showTitle = true } = $props(); 63 + </script> 64 + 65 + {#if showTitle} 66 + <Subheading class="mb-4">Select Theme</Subheading> 67 + {/if} 68 + 69 + <Paragraph class="mb-2">Accent Color</Paragraph> 70 + <ColorSelect 71 + bind:selected={accentColor} 72 + colors={accentColors} 73 + onselected={(color, previous) => { 74 + if (typeof previous === 'string' || typeof color === 'string') { 75 + return; 76 + } 77 + 78 + document.documentElement.classList.remove(previous.label.toLowerCase()); 79 + document.documentElement.classList.add(color.label.toLowerCase()); 80 + 81 + localStorage.setItem('accentColor', JSON.stringify(color.label)); 82 + 83 + window.dispatchEvent( 84 + new CustomEvent('theme-changed', { detail: { accentColor: color.label } }) 85 + ); 86 + }} 87 + class="w-64" 88 + /> 89 + 90 + <Paragraph class="mt-4 mb-2">Base Color</Paragraph> 91 + <ColorSelect 92 + bind:selected={baseColor} 93 + colors={baseColors} 94 + onselected={(color, previous) => { 95 + if (typeof previous === 'string' || typeof color === 'string') { 96 + return; 97 + } 98 + 99 + document.documentElement.classList.remove(previous.label.toLowerCase()); 100 + document.documentElement.classList.add(color.label.toLowerCase()); 101 + 102 + localStorage.setItem('baseColor', JSON.stringify(color.label)); 103 + 104 + window.dispatchEvent(new CustomEvent('theme-changed', { detail: { baseColor: color.label } })); 105 + }} 106 + />
+25
src/lib/ThemeSelectDropdown.svelte
··· 1 + <script> 2 + import { buttonVariants, Popover, cn } from '@fuxui/base'; 3 + import SelectTheme from './SelectTheme.svelte'; 4 + </script> 5 + 6 + <Popover> 7 + {#snippet child({ props })} 8 + <button {...props} 9 + class={cn( 10 + buttonVariants({ variant: 'link', size: 'default' }), 11 + 'flex cursor-pointer items-center gap-0 -space-x-2 backdrop-blur-none' 12 + )} 13 + > 14 + <div 15 + class=" from-accent-500 to-accent-600 border-accent-700 dark:border-accent-400 z-10 size-6 rounded-full border bg-gradient-to-b" 16 + ></div> 17 + 18 + <div 19 + class=" from-base-500 to-base-600 border-base-700 dark:border-base-400 size-6 rounded-full border bg-gradient-to-b" 20 + ></div> 21 + </button> 22 + {/snippet} 23 + <!-- add class w-72? --> 24 + <SelectTheme showTitle={false} /> 25 + </Popover>
+1 -24
src/routes/+layout.server.ts
··· 1 - import { Agent } from '@atproto/api'; 2 1 import type { LayoutServerLoad } from './$types'; 3 2 4 3 export const load: LayoutServerLoad = async (event) => { 5 - const agent = event.locals.agent; 6 - 7 - if (!agent || !(agent instanceof Agent)) return { user: event.locals.user, settings: undefined }; 8 - 9 - try { 10 - const settings_record = await agent.com.atproto.repo.getRecord({ 11 - repo: event.locals.user.did, 12 - collection: 'app.skywatched.settings', 13 - rkey: 'self' 14 - }); 15 - 16 - const settings = settings_record.data.value as unknown as { 17 - streaming_region: { 18 - code: string; 19 - name: string; 20 - }; 21 - crosspost_enabled: boolean; 22 - }; 23 - return { user: event.locals.user, settings }; 24 - // eslint-disable-next-line @typescript-eslint/no-unused-vars 25 - } catch (_e) { 26 - return { user: event.locals.user, settings: undefined }; 27 - } 4 + return { user: event.locals.user }; 28 5 };
+113 -34
src/routes/+page.svelte
··· 1 1 <script lang="ts"> 2 - import { Button, Tabs, Input } from '@fuxui/base'; 3 - import { BlueskyLogin, UserProfile } from '@fuxui/social'; 2 + import { 3 + Badge, 4 + Button, 5 + Heading, 6 + Input, 7 + Subheading, 8 + Tabs, 9 + ThemeToggle, 10 + toast, 11 + Toaster 12 + } from '@fuxui/base'; 13 + import { BlueskyLogin, blueskyPostToPostData, UserProfile, type PostData } from '@fuxui/social'; 14 + import { editingState } from './state.svelte.js'; 15 + import Editor from '$lib/Editor.svelte'; 16 + import Posts from '$lib/Posts.svelte'; 17 + import Links from '$lib/Links.svelte'; 18 + import { onMount } from 'svelte'; 19 + import { AtpBaseClient } from '@atproto/api'; 20 + import type { FeedViewPost } from '@atproto/api/dist/client/types/app/bsky/feed/defs.js'; 21 + import Navbar from '$lib/Navbar.svelte'; 4 22 5 23 let value = $state(''); 6 24 ··· 25 43 // alert('Success!); 26 44 // } 27 45 } 46 + onMount(async () => { 47 + editingState.links = JSON.parse(localStorage.getItem('links') ?? '[]'); 48 + 49 + if (!data.user) return; 50 + 51 + const posts = await getPostsOfUser({ actor: data.user.did }); 52 + console.log(posts); 53 + 54 + blueskyPosts = posts.feed.map((post) => { 55 + console.log(post); 56 + return blueskyPostToPostData(post.post); 57 + }); 58 + }); 59 + 60 + export async function getPostsOfUser({ 61 + actor, 62 + cursor, 63 + limit = 20 64 + }: { 65 + actor: string; 66 + cursor?: string; 67 + limit?: number; 68 + }) { 69 + let agent = new AtpBaseClient({ service: 'https://api.bsky.app' }); 70 + const perLimit = limit > 100 ? 100 : limit; 71 + const posts: FeedViewPost[] = []; 72 + do { 73 + const { data } = await agent.app.bsky.feed.getAuthorFeed({ 74 + actor, 75 + cursor, 76 + limit: perLimit, 77 + filter: 'posts_no_replies' 78 + }); 79 + posts.push(...data.feed); 80 + cursor = data.cursor; 81 + } while (cursor && posts.length < limit); 82 + return { feed: posts, cursor }; 83 + } 84 + 85 + let blueskyPosts: PostData[] = $state([]); 28 86 </script> 29 87 30 - <div class="mx-auto max-w-2xl"> 88 + <div class="mx-auto max-w-2xl py-16"> 31 89 {#if !data.user} 90 + <Heading class="mt-16 mb-8">Login with Bluesky to create your website</Heading> 32 91 <BlueskyLogin 33 92 login={async (handle) => { 34 93 // create and submit form with handle ··· 54 113 <input type="hidden" name="handle" value="handle" /> 55 114 </form> 56 115 {:else} 57 - <!-- Publish --> 58 - <Button size="lg" class="absolute top-2 right-2">Publish</Button> 59 - <!-- create & deploy --> 60 - <Input 61 - sizeVariant="lg" 62 - class=" top-2 right-2" 63 - placeholder={data.user.handle.split('.')[0]} 64 - bind:value 65 - /> 66 - <Button onclick={deploy} size="lg" class=" top-2 right-2">Create & Deploy</Button> 116 + <UserProfile class="" profile={{ ...data.user, description: undefined }} /> 117 + 118 + <div class="-mt-8"> 119 + <Tabs 120 + active={editingState.active} 121 + items={[ 122 + { 123 + name: 'about', 124 + onclick: () => (editingState.active = 'about') 125 + }, 126 + { 127 + name: 'links', 128 + onclick: () => (editingState.active = 'links') 129 + }, 130 + { 131 + name: 'feed', 132 + onclick: () => (editingState.active = 'feed') 133 + } 134 + ]} 135 + /> 67 136 68 - <UserProfile class="" profile={{ ...data.user, description: '' }} /> 69 - <Tabs 70 - active="About" 71 - items={[ 72 - { 73 - name: 'About', 74 - href: '/about' 75 - }, 76 - { 77 - name: 'Links', 78 - href: '/links' 79 - }, 80 - { 81 - name: 'Feed', 82 - href: '/feed' 83 - } 84 - ]} 85 - /> 137 + <div class="px-4"> 138 + {#if editingState.active === 'about'} 139 + <div 140 + class="focus-within:outline-accent-400 hover:not-focus-within:bg-base-200/40 dark:hover:not-focus-within:bg-base-900/20 group focus-within:bg-accent-500/5 relative mt-4 rounded-2xl px-2 py-0.5 focus-within:outline" 141 + > 142 + <Editor /> 143 + <Badge 144 + variant="secondary" 145 + class="absolute top-2 right-2 opacity-60 group-focus-within:hidden" 146 + > 147 + Select to edit 148 + </Badge> 149 + </div> 150 + {:else if editingState.active === 'links'} 151 + <div> 152 + <Links links={editingState.links} /> 153 + </div> 154 + {:else if editingState.active === 'feed'} 155 + <Posts posts={blueskyPosts} /> 156 + {/if} 157 + </div> 86 158 87 - <form method="POST" action="/?/logout" class="mt-4"> 88 - <Button type="submit">Logout</Button> 89 - </form> 159 + <form method="POST" action="/?/logout" class="fixed right-2 bottom-2"> 160 + <Button variant="secondary" type="submit">Logout</Button> 161 + </form> 162 + </div> 90 163 {/if} 91 164 </div> 165 + 166 + <Toaster /> 167 + 168 + {#if data.user} 169 + <Navbar /> 170 + {/if}
+19
src/routes/api/get-og/+server.ts
··· 1 + import { error, json, type RequestHandler } from '@sveltejs/kit'; 2 + import { AtpBaseClient } from '@atproto/api'; 3 + import ogs from 'open-graph-scraper'; 4 + 5 + export const GET: RequestHandler = async ({ request, locals }) => { 6 + const user = locals.user; 7 + const agent = locals.agent; 8 + if (!user || !agent || agent instanceof AtpBaseClient) { 9 + return error(401, 'Unauthorized API call'); 10 + } 11 + const url = new URL(request.url).searchParams.get('url'); 12 + if (!url) { 13 + return error(400, 'URL is required'); 14 + } 15 + 16 + const og = await ogs({ url }); 17 + 18 + return json(og.result); 19 + };
+7
src/routes/state.svelte.ts
··· 1 + import type { Content } from '@tiptap/core'; 2 + 3 + export const editingState = $state({ 4 + active: 'about' as 'about' | 'links' | 'feed', 5 + aboutContent: '' as Content, 6 + links: [] as { url: string; title: string; description: string; image?: string }[] 7 + });