samantha's personal website!~ ✨ samanthanguyen.me
0
fork

Configure Feed

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

here we go!

+759 -36
+557 -24
package-lock.json
··· 7 7 "": { 8 8 "name": "samanthanguyen.me", 9 9 "version": "0.0.1", 10 + "dependencies": { 11 + "@fontsource-variable/domine": "^5.1.0", 12 + "@fontsource-variable/public-sans": "^5.1.1", 13 + "@tabler/icons-svelte": "^3.26.0", 14 + "@wooorm/starry-night": "^3.5.0", 15 + "hast-util-to-html": "^9.0.4", 16 + "tailwind-merge": "^2.5.5" 17 + }, 10 18 "devDependencies": { 11 19 "@eslint/compat": "^1.2.3", 12 20 "@sveltejs/adapter-auto": "^3.0.0", ··· 42 50 "version": "2.3.0", 43 51 "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", 44 52 "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", 45 - "dev": true, 46 53 "license": "Apache-2.0", 47 54 "dependencies": { 48 55 "@jridgewell/gen-mapping": "^0.3.5", ··· 618 625 "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 619 626 } 620 627 }, 628 + "node_modules/@fontsource-variable/domine": { 629 + "version": "5.1.0", 630 + "resolved": "https://registry.npmjs.org/@fontsource-variable/domine/-/domine-5.1.0.tgz", 631 + "integrity": "sha512-2dhYul51BpyFuinCKIsVzZ4A41tb9GiThGho06r7QARofHvkSYsM4iLKPoxtOoDYyqkDHv4emKDMiVsbxlKQ+g==", 632 + "license": "OFL-1.1" 633 + }, 634 + "node_modules/@fontsource-variable/public-sans": { 635 + "version": "5.1.1", 636 + "resolved": "https://registry.npmjs.org/@fontsource-variable/public-sans/-/public-sans-5.1.1.tgz", 637 + "integrity": "sha512-tqIED9ZiEyX8AQp/4AoVVWy7O05IxVqEWdk8Epw3Cp1np/mmwMGp1JWyzLeJq8ZE4HqdF9e5FSuB3rnyDLpTiA==", 638 + "license": "OFL-1.1" 639 + }, 621 640 "node_modules/@humanfs/core": { 622 641 "version": "0.19.1", 623 642 "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", ··· 706 725 "version": "0.3.8", 707 726 "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", 708 727 "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", 709 - "dev": true, 710 728 "license": "MIT", 711 729 "dependencies": { 712 730 "@jridgewell/set-array": "^1.2.1", ··· 721 739 "version": "3.1.2", 722 740 "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 723 741 "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 724 - "dev": true, 725 742 "license": "MIT", 726 743 "engines": { 727 744 "node": ">=6.0.0" ··· 731 748 "version": "1.2.1", 732 749 "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", 733 750 "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", 734 - "dev": true, 735 751 "license": "MIT", 736 752 "engines": { 737 753 "node": ">=6.0.0" ··· 741 757 "version": "1.5.0", 742 758 "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 743 759 "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", 744 - "dev": true, 745 760 "license": "MIT" 746 761 }, 747 762 "node_modules/@jridgewell/trace-mapping": { 748 763 "version": "0.3.25", 749 764 "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", 750 765 "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 751 - "dev": true, 752 766 "license": "MIT", 753 767 "dependencies": { 754 768 "@jridgewell/resolve-uri": "^3.1.0", ··· 1163 1177 "vite": "^6.0.0" 1164 1178 } 1165 1179 }, 1180 + "node_modules/@tabler/icons": { 1181 + "version": "3.26.0", 1182 + "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-3.26.0.tgz", 1183 + "integrity": "sha512-oO3D4ss+DxzxqU1aDy0f1HmToyrO0gcQWIMpzHAfV1quPUx0BZYvNm5xz1DQb4DxNm/+xNvbBGLJy4pzTLYWag==", 1184 + "license": "MIT", 1185 + "funding": { 1186 + "type": "github", 1187 + "url": "https://github.com/sponsors/codecalm" 1188 + } 1189 + }, 1190 + "node_modules/@tabler/icons-svelte": { 1191 + "version": "3.26.0", 1192 + "resolved": "https://registry.npmjs.org/@tabler/icons-svelte/-/icons-svelte-3.26.0.tgz", 1193 + "integrity": "sha512-dKDcPgrXF6xnS1Wih9AMBidBt/TsEuJeZE/1w8o6MzHK1wkzUQDlT9+2sDz+3sw+XzZKFfUKCpvOwR6OOtJbAg==", 1194 + "license": "MIT", 1195 + "dependencies": { 1196 + "@tabler/icons": "3.26.0" 1197 + }, 1198 + "funding": { 1199 + "type": "github", 1200 + "url": "https://github.com/sponsors/codecalm" 1201 + }, 1202 + "peerDependencies": { 1203 + "svelte": ">=3 <6 || >=5.0.0-next.0" 1204 + } 1205 + }, 1166 1206 "node_modules/@types/cookie": { 1167 1207 "version": "0.6.0", 1168 1208 "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", ··· 1174 1214 "version": "1.0.6", 1175 1215 "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", 1176 1216 "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", 1177 - "dev": true, 1178 1217 "license": "MIT" 1179 1218 }, 1219 + "node_modules/@types/hast": { 1220 + "version": "3.0.4", 1221 + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", 1222 + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", 1223 + "license": "MIT", 1224 + "dependencies": { 1225 + "@types/unist": "*" 1226 + } 1227 + }, 1180 1228 "node_modules/@types/json-schema": { 1181 1229 "version": "7.0.15", 1182 1230 "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", ··· 1184 1232 "dev": true, 1185 1233 "license": "MIT" 1186 1234 }, 1235 + "node_modules/@types/mdast": { 1236 + "version": "4.0.4", 1237 + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", 1238 + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", 1239 + "license": "MIT", 1240 + "dependencies": { 1241 + "@types/unist": "*" 1242 + } 1243 + }, 1187 1244 "node_modules/@types/unist": { 1188 1245 "version": "2.0.11", 1189 1246 "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", 1190 1247 "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", 1191 - "dev": true, 1192 1248 "license": "MIT" 1193 1249 }, 1194 1250 "node_modules/@typescript-eslint/eslint-plugin": { ··· 1397 1453 "url": "https://opencollective.com/typescript-eslint" 1398 1454 } 1399 1455 }, 1456 + "node_modules/@ungap/structured-clone": { 1457 + "version": "1.2.1", 1458 + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz", 1459 + "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==", 1460 + "license": "ISC" 1461 + }, 1462 + "node_modules/@wooorm/starry-night": { 1463 + "version": "3.5.0", 1464 + "resolved": "https://registry.npmjs.org/@wooorm/starry-night/-/starry-night-3.5.0.tgz", 1465 + "integrity": "sha512-nYnfdeWS0ApqIFqr4ezLjr6pyYuqiG5Ywc2aJ4u1EY3qzf2oCTfLv7sMjEQSuSzPWUIH+a39eVbGUiRrFKZElA==", 1466 + "license": "MIT", 1467 + "dependencies": { 1468 + "@types/hast": "^3.0.0", 1469 + "import-meta-resolve": "^4.0.0", 1470 + "vscode-oniguruma": "^2.0.0", 1471 + "vscode-textmate": "^9.0.0" 1472 + }, 1473 + "funding": { 1474 + "type": "github", 1475 + "url": "https://github.com/sponsors/wooorm" 1476 + } 1477 + }, 1400 1478 "node_modules/acorn": { 1401 1479 "version": "8.14.0", 1402 1480 "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", 1403 1481 "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", 1404 - "dev": true, 1405 1482 "license": "MIT", 1406 1483 "bin": { 1407 1484 "acorn": "bin/acorn" ··· 1424 1501 "version": "1.4.13", 1425 1502 "resolved": "https://registry.npmjs.org/acorn-typescript/-/acorn-typescript-1.4.13.tgz", 1426 1503 "integrity": "sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==", 1427 - "dev": true, 1428 1504 "license": "MIT", 1429 1505 "peerDependencies": { 1430 1506 "acorn": ">=8.9.0" ··· 1497 1573 "node": ">= 8" 1498 1574 } 1499 1575 }, 1576 + "node_modules/anymatch/node_modules/picomatch": { 1577 + "version": "2.3.1", 1578 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1579 + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1580 + "dev": true, 1581 + "license": "MIT", 1582 + "engines": { 1583 + "node": ">=8.6" 1584 + }, 1585 + "funding": { 1586 + "url": "https://github.com/sponsors/jonschlinkert" 1587 + } 1588 + }, 1500 1589 "node_modules/arg": { 1501 1590 "version": "5.0.2", 1502 1591 "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", ··· 1515 1604 "version": "5.3.2", 1516 1605 "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", 1517 1606 "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", 1518 - "dev": true, 1519 1607 "license": "Apache-2.0", 1520 1608 "engines": { 1521 1609 "node": ">= 0.4" ··· 1563 1651 "version": "4.1.0", 1564 1652 "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", 1565 1653 "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", 1566 - "dev": true, 1567 1654 "license": "Apache-2.0", 1568 1655 "engines": { 1569 1656 "node": ">= 0.4" ··· 1687 1774 ], 1688 1775 "license": "CC-BY-4.0" 1689 1776 }, 1777 + "node_modules/ccount": { 1778 + "version": "2.0.1", 1779 + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", 1780 + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", 1781 + "license": "MIT", 1782 + "funding": { 1783 + "type": "github", 1784 + "url": "https://github.com/sponsors/wooorm" 1785 + } 1786 + }, 1690 1787 "node_modules/chalk": { 1691 1788 "version": "4.1.2", 1692 1789 "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", ··· 1704 1801 "url": "https://github.com/chalk/chalk?sponsor=1" 1705 1802 } 1706 1803 }, 1804 + "node_modules/character-entities-html4": { 1805 + "version": "2.1.0", 1806 + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", 1807 + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", 1808 + "license": "MIT", 1809 + "funding": { 1810 + "type": "github", 1811 + "url": "https://github.com/sponsors/wooorm" 1812 + } 1813 + }, 1814 + "node_modules/character-entities-legacy": { 1815 + "version": "3.0.0", 1816 + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", 1817 + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", 1818 + "license": "MIT", 1819 + "funding": { 1820 + "type": "github", 1821 + "url": "https://github.com/sponsors/wooorm" 1822 + } 1823 + }, 1707 1824 "node_modules/chokidar": { 1708 1825 "version": "4.0.2", 1709 1826 "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.2.tgz", ··· 1740 1857 "dev": true, 1741 1858 "license": "MIT" 1742 1859 }, 1860 + "node_modules/comma-separated-tokens": { 1861 + "version": "2.0.3", 1862 + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", 1863 + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", 1864 + "license": "MIT", 1865 + "funding": { 1866 + "type": "github", 1867 + "url": "https://github.com/sponsors/wooorm" 1868 + } 1869 + }, 1743 1870 "node_modules/commander": { 1744 1871 "version": "4.1.1", 1745 1872 "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", ··· 1830 1957 "node": ">=0.10.0" 1831 1958 } 1832 1959 }, 1960 + "node_modules/dequal": { 1961 + "version": "2.0.3", 1962 + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", 1963 + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", 1964 + "license": "MIT", 1965 + "engines": { 1966 + "node": ">=6" 1967 + } 1968 + }, 1833 1969 "node_modules/devalue": { 1834 1970 "version": "5.1.1", 1835 1971 "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", ··· 1837 1973 "dev": true, 1838 1974 "license": "MIT" 1839 1975 }, 1976 + "node_modules/devlop": { 1977 + "version": "1.1.0", 1978 + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", 1979 + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", 1980 + "license": "MIT", 1981 + "dependencies": { 1982 + "dequal": "^2.0.0" 1983 + }, 1984 + "funding": { 1985 + "type": "github", 1986 + "url": "https://github.com/sponsors/wooorm" 1987 + } 1988 + }, 1840 1989 "node_modules/didyoumean": { 1841 1990 "version": "1.2.2", 1842 1991 "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", ··· 2080 2229 "version": "1.2.1", 2081 2230 "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.1.tgz", 2082 2231 "integrity": "sha512-U9JedYYjCnadUlXk7e1Kr+aENQhtUaoaV9+gZm1T8LC/YBAPJx3NSPIAurFOC0U5vrdSevnUJS2/wUVxGwPhng==", 2083 - "dev": true, 2084 2232 "license": "MIT" 2085 2233 }, 2086 2234 "node_modules/espree": { ··· 2118 2266 "version": "1.2.3", 2119 2267 "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.2.3.tgz", 2120 2268 "integrity": "sha512-ZlQmCCK+n7SGoqo7DnfKaP1sJZa49P01/dXzmjCASSo04p72w8EksT2NMK8CEX8DhKsfJXANioIw8VyHNsBfvQ==", 2121 - "dev": true, 2122 2269 "license": "MIT", 2123 2270 "dependencies": { 2124 2271 "@jridgewell/sourcemap-codec": "^1.4.15", ··· 2471 2618 "node": ">= 0.4" 2472 2619 } 2473 2620 }, 2621 + "node_modules/hast-util-to-html": { 2622 + "version": "9.0.4", 2623 + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.4.tgz", 2624 + "integrity": "sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==", 2625 + "license": "MIT", 2626 + "dependencies": { 2627 + "@types/hast": "^3.0.0", 2628 + "@types/unist": "^3.0.0", 2629 + "ccount": "^2.0.0", 2630 + "comma-separated-tokens": "^2.0.0", 2631 + "hast-util-whitespace": "^3.0.0", 2632 + "html-void-elements": "^3.0.0", 2633 + "mdast-util-to-hast": "^13.0.0", 2634 + "property-information": "^6.0.0", 2635 + "space-separated-tokens": "^2.0.0", 2636 + "stringify-entities": "^4.0.0", 2637 + "zwitch": "^2.0.4" 2638 + }, 2639 + "funding": { 2640 + "type": "opencollective", 2641 + "url": "https://opencollective.com/unified" 2642 + } 2643 + }, 2644 + "node_modules/hast-util-to-html/node_modules/@types/unist": { 2645 + "version": "3.0.3", 2646 + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", 2647 + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", 2648 + "license": "MIT" 2649 + }, 2650 + "node_modules/hast-util-whitespace": { 2651 + "version": "3.0.0", 2652 + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", 2653 + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", 2654 + "license": "MIT", 2655 + "dependencies": { 2656 + "@types/hast": "^3.0.0" 2657 + }, 2658 + "funding": { 2659 + "type": "opencollective", 2660 + "url": "https://opencollective.com/unified" 2661 + } 2662 + }, 2663 + "node_modules/html-void-elements": { 2664 + "version": "3.0.0", 2665 + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", 2666 + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", 2667 + "license": "MIT", 2668 + "funding": { 2669 + "type": "github", 2670 + "url": "https://github.com/sponsors/wooorm" 2671 + } 2672 + }, 2474 2673 "node_modules/ignore": { 2475 2674 "version": "5.3.2", 2476 2675 "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", ··· 2502 2701 "version": "4.1.0", 2503 2702 "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", 2504 2703 "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", 2505 - "dev": true, 2506 2704 "license": "MIT", 2507 2705 "funding": { 2508 2706 "type": "github", ··· 2595 2793 "version": "3.0.3", 2596 2794 "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", 2597 2795 "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", 2598 - "dev": true, 2599 2796 "license": "MIT", 2600 2797 "dependencies": { 2601 2798 "@types/estree": "^1.0.6" ··· 2730 2927 "version": "3.0.0", 2731 2928 "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", 2732 2929 "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", 2733 - "dev": true, 2734 2930 "license": "MIT" 2735 2931 }, 2736 2932 "node_modules/locate-path": { ··· 2767 2963 "version": "0.30.17", 2768 2964 "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", 2769 2965 "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", 2770 - "dev": true, 2771 2966 "license": "MIT", 2772 2967 "dependencies": { 2773 2968 "@jridgewell/sourcemap-codec": "^1.5.0" 2774 2969 } 2775 2970 }, 2971 + "node_modules/mdast-util-to-hast": { 2972 + "version": "13.2.0", 2973 + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", 2974 + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", 2975 + "license": "MIT", 2976 + "dependencies": { 2977 + "@types/hast": "^3.0.0", 2978 + "@types/mdast": "^4.0.0", 2979 + "@ungap/structured-clone": "^1.0.0", 2980 + "devlop": "^1.0.0", 2981 + "micromark-util-sanitize-uri": "^2.0.0", 2982 + "trim-lines": "^3.0.0", 2983 + "unist-util-position": "^5.0.0", 2984 + "unist-util-visit": "^5.0.0", 2985 + "vfile": "^6.0.0" 2986 + }, 2987 + "funding": { 2988 + "type": "opencollective", 2989 + "url": "https://opencollective.com/unified" 2990 + } 2991 + }, 2776 2992 "node_modules/mdsvex": { 2777 2993 "version": "0.11.2", 2778 2994 "resolved": "https://registry.npmjs.org/mdsvex/-/mdsvex-0.11.2.tgz", ··· 2799 3015 "node": ">= 8" 2800 3016 } 2801 3017 }, 3018 + "node_modules/micromark-util-character": { 3019 + "version": "2.1.1", 3020 + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", 3021 + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", 3022 + "funding": [ 3023 + { 3024 + "type": "GitHub Sponsors", 3025 + "url": "https://github.com/sponsors/unifiedjs" 3026 + }, 3027 + { 3028 + "type": "OpenCollective", 3029 + "url": "https://opencollective.com/unified" 3030 + } 3031 + ], 3032 + "license": "MIT", 3033 + "dependencies": { 3034 + "micromark-util-symbol": "^2.0.0", 3035 + "micromark-util-types": "^2.0.0" 3036 + } 3037 + }, 3038 + "node_modules/micromark-util-encode": { 3039 + "version": "2.0.1", 3040 + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", 3041 + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", 3042 + "funding": [ 3043 + { 3044 + "type": "GitHub Sponsors", 3045 + "url": "https://github.com/sponsors/unifiedjs" 3046 + }, 3047 + { 3048 + "type": "OpenCollective", 3049 + "url": "https://opencollective.com/unified" 3050 + } 3051 + ], 3052 + "license": "MIT" 3053 + }, 3054 + "node_modules/micromark-util-sanitize-uri": { 3055 + "version": "2.0.1", 3056 + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", 3057 + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", 3058 + "funding": [ 3059 + { 3060 + "type": "GitHub Sponsors", 3061 + "url": "https://github.com/sponsors/unifiedjs" 3062 + }, 3063 + { 3064 + "type": "OpenCollective", 3065 + "url": "https://opencollective.com/unified" 3066 + } 3067 + ], 3068 + "license": "MIT", 3069 + "dependencies": { 3070 + "micromark-util-character": "^2.0.0", 3071 + "micromark-util-encode": "^2.0.0", 3072 + "micromark-util-symbol": "^2.0.0" 3073 + } 3074 + }, 3075 + "node_modules/micromark-util-symbol": { 3076 + "version": "2.0.1", 3077 + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", 3078 + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", 3079 + "funding": [ 3080 + { 3081 + "type": "GitHub Sponsors", 3082 + "url": "https://github.com/sponsors/unifiedjs" 3083 + }, 3084 + { 3085 + "type": "OpenCollective", 3086 + "url": "https://opencollective.com/unified" 3087 + } 3088 + ], 3089 + "license": "MIT" 3090 + }, 3091 + "node_modules/micromark-util-types": { 3092 + "version": "2.0.1", 3093 + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz", 3094 + "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==", 3095 + "funding": [ 3096 + { 3097 + "type": "GitHub Sponsors", 3098 + "url": "https://github.com/sponsors/unifiedjs" 3099 + }, 3100 + { 3101 + "type": "OpenCollective", 3102 + "url": "https://opencollective.com/unified" 3103 + } 3104 + ], 3105 + "license": "MIT" 3106 + }, 2802 3107 "node_modules/micromatch": { 2803 3108 "version": "4.0.8", 2804 3109 "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", ··· 2811 3116 }, 2812 3117 "engines": { 2813 3118 "node": ">=8.6" 3119 + } 3120 + }, 3121 + "node_modules/micromatch/node_modules/picomatch": { 3122 + "version": "2.3.1", 3123 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 3124 + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 3125 + "dev": true, 3126 + "license": "MIT", 3127 + "engines": { 3128 + "node": ">=8.6" 3129 + }, 3130 + "funding": { 3131 + "url": "https://github.com/sponsors/jonschlinkert" 2814 3132 } 2815 3133 }, 2816 3134 "node_modules/minimatch": { ··· 3070 3388 "license": "ISC" 3071 3389 }, 3072 3390 "node_modules/picomatch": { 3073 - "version": "2.3.1", 3074 - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 3075 - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 3391 + "version": "4.0.2", 3392 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", 3393 + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", 3076 3394 "dev": true, 3077 3395 "license": "MIT", 3396 + "optional": true, 3397 + "peer": true, 3078 3398 "engines": { 3079 - "node": ">=8.6" 3399 + "node": ">=12" 3080 3400 }, 3081 3401 "funding": { 3082 3402 "url": "https://github.com/sponsors/jonschlinkert" ··· 3327 3647 "node": ">=6" 3328 3648 } 3329 3649 }, 3650 + "node_modules/property-information": { 3651 + "version": "6.5.0", 3652 + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", 3653 + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", 3654 + "license": "MIT", 3655 + "funding": { 3656 + "type": "github", 3657 + "url": "https://github.com/sponsors/wooorm" 3658 + } 3659 + }, 3330 3660 "node_modules/punycode": { 3331 3661 "version": "2.3.1", 3332 3662 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", ··· 3578 3908 "node": ">=0.10.0" 3579 3909 } 3580 3910 }, 3911 + "node_modules/space-separated-tokens": { 3912 + "version": "2.0.2", 3913 + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", 3914 + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", 3915 + "license": "MIT", 3916 + "funding": { 3917 + "type": "github", 3918 + "url": "https://github.com/sponsors/wooorm" 3919 + } 3920 + }, 3581 3921 "node_modules/string-width": { 3582 3922 "version": "5.1.2", 3583 3923 "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", ··· 3642 3982 "node": ">=8" 3643 3983 } 3644 3984 }, 3985 + "node_modules/stringify-entities": { 3986 + "version": "4.0.4", 3987 + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", 3988 + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", 3989 + "license": "MIT", 3990 + "dependencies": { 3991 + "character-entities-html4": "^2.0.0", 3992 + "character-entities-legacy": "^3.0.0" 3993 + }, 3994 + "funding": { 3995 + "type": "github", 3996 + "url": "https://github.com/sponsors/wooorm" 3997 + } 3998 + }, 3645 3999 "node_modules/strip-ansi": { 3646 4000 "version": "7.1.0", 3647 4001 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", ··· 3748 4102 "version": "5.14.1", 3749 4103 "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.14.1.tgz", 3750 4104 "integrity": "sha512-DET9IJw6LUStRnu5rTXnlBs1fsJt417C9QXE8J+gIEWc4IsqxcJsa3OYUsf7ZJmDQbaBudcp4pxI7Za0NR1QYg==", 3751 - "dev": true, 3752 4105 "license": "MIT", 3753 4106 "dependencies": { 3754 4107 "@ampproject/remapping": "^2.3.0", ··· 3869 4222 "url": "https://opencollective.com/eslint" 3870 4223 } 3871 4224 }, 4225 + "node_modules/tailwind-merge": { 4226 + "version": "2.5.5", 4227 + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.5.5.tgz", 4228 + "integrity": "sha512-0LXunzzAZzo0tEPxV3I297ffKZPlKDrjj7NXphC8V5ak9yHC5zRmxnOe2m/Rd/7ivsOMJe3JZ2JVocoDdQTRBA==", 4229 + "license": "MIT", 4230 + "funding": { 4231 + "type": "github", 4232 + "url": "https://github.com/sponsors/dcastil" 4233 + } 4234 + }, 3872 4235 "node_modules/tailwindcss": { 3873 4236 "version": "3.4.16", 3874 4237 "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.16.tgz", ··· 3958 4321 "url": "https://github.com/sponsors/antonk52" 3959 4322 } 3960 4323 }, 4324 + "node_modules/tailwindcss/node_modules/picomatch": { 4325 + "version": "2.3.1", 4326 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 4327 + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 4328 + "dev": true, 4329 + "license": "MIT", 4330 + "engines": { 4331 + "node": ">=8.6" 4332 + }, 4333 + "funding": { 4334 + "url": "https://github.com/sponsors/jonschlinkert" 4335 + } 4336 + }, 3961 4337 "node_modules/tailwindcss/node_modules/postcss-load-config": { 3962 4338 "version": "4.0.2", 3963 4339 "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", ··· 4064 4440 "node": ">=6" 4065 4441 } 4066 4442 }, 4443 + "node_modules/trim-lines": { 4444 + "version": "3.0.1", 4445 + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", 4446 + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", 4447 + "license": "MIT", 4448 + "funding": { 4449 + "type": "github", 4450 + "url": "https://github.com/sponsors/wooorm" 4451 + } 4452 + }, 4067 4453 "node_modules/ts-api-utils": { 4068 4454 "version": "1.4.3", 4069 4455 "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", ··· 4134 4520 "typescript": ">=4.8.4 <5.8.0" 4135 4521 } 4136 4522 }, 4523 + "node_modules/unist-util-is": { 4524 + "version": "6.0.0", 4525 + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", 4526 + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", 4527 + "license": "MIT", 4528 + "dependencies": { 4529 + "@types/unist": "^3.0.0" 4530 + }, 4531 + "funding": { 4532 + "type": "opencollective", 4533 + "url": "https://opencollective.com/unified" 4534 + } 4535 + }, 4536 + "node_modules/unist-util-is/node_modules/@types/unist": { 4537 + "version": "3.0.3", 4538 + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", 4539 + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", 4540 + "license": "MIT" 4541 + }, 4542 + "node_modules/unist-util-position": { 4543 + "version": "5.0.0", 4544 + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", 4545 + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", 4546 + "license": "MIT", 4547 + "dependencies": { 4548 + "@types/unist": "^3.0.0" 4549 + }, 4550 + "funding": { 4551 + "type": "opencollective", 4552 + "url": "https://opencollective.com/unified" 4553 + } 4554 + }, 4555 + "node_modules/unist-util-position/node_modules/@types/unist": { 4556 + "version": "3.0.3", 4557 + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", 4558 + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", 4559 + "license": "MIT" 4560 + }, 4137 4561 "node_modules/unist-util-stringify-position": { 4138 4562 "version": "2.0.3", 4139 4563 "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", ··· 4148 4572 "url": "https://opencollective.com/unified" 4149 4573 } 4150 4574 }, 4575 + "node_modules/unist-util-visit": { 4576 + "version": "5.0.0", 4577 + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", 4578 + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", 4579 + "license": "MIT", 4580 + "dependencies": { 4581 + "@types/unist": "^3.0.0", 4582 + "unist-util-is": "^6.0.0", 4583 + "unist-util-visit-parents": "^6.0.0" 4584 + }, 4585 + "funding": { 4586 + "type": "opencollective", 4587 + "url": "https://opencollective.com/unified" 4588 + } 4589 + }, 4590 + "node_modules/unist-util-visit-parents": { 4591 + "version": "6.0.1", 4592 + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", 4593 + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", 4594 + "license": "MIT", 4595 + "dependencies": { 4596 + "@types/unist": "^3.0.0", 4597 + "unist-util-is": "^6.0.0" 4598 + }, 4599 + "funding": { 4600 + "type": "opencollective", 4601 + "url": "https://opencollective.com/unified" 4602 + } 4603 + }, 4604 + "node_modules/unist-util-visit-parents/node_modules/@types/unist": { 4605 + "version": "3.0.3", 4606 + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", 4607 + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", 4608 + "license": "MIT" 4609 + }, 4610 + "node_modules/unist-util-visit/node_modules/@types/unist": { 4611 + "version": "3.0.3", 4612 + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", 4613 + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", 4614 + "license": "MIT" 4615 + }, 4151 4616 "node_modules/update-browserslist-db": { 4152 4617 "version": "1.1.1", 4153 4618 "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", ··· 4196 4661 "dev": true, 4197 4662 "license": "MIT" 4198 4663 }, 4664 + "node_modules/vfile": { 4665 + "version": "6.0.3", 4666 + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", 4667 + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", 4668 + "license": "MIT", 4669 + "dependencies": { 4670 + "@types/unist": "^3.0.0", 4671 + "vfile-message": "^4.0.0" 4672 + }, 4673 + "funding": { 4674 + "type": "opencollective", 4675 + "url": "https://opencollective.com/unified" 4676 + } 4677 + }, 4199 4678 "node_modules/vfile-message": { 4200 4679 "version": "2.0.4", 4201 4680 "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", ··· 4211 4690 "url": "https://opencollective.com/unified" 4212 4691 } 4213 4692 }, 4693 + "node_modules/vfile/node_modules/@types/unist": { 4694 + "version": "3.0.3", 4695 + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", 4696 + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", 4697 + "license": "MIT" 4698 + }, 4699 + "node_modules/vfile/node_modules/unist-util-stringify-position": { 4700 + "version": "4.0.0", 4701 + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", 4702 + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", 4703 + "license": "MIT", 4704 + "dependencies": { 4705 + "@types/unist": "^3.0.0" 4706 + }, 4707 + "funding": { 4708 + "type": "opencollective", 4709 + "url": "https://opencollective.com/unified" 4710 + } 4711 + }, 4712 + "node_modules/vfile/node_modules/vfile-message": { 4713 + "version": "4.0.2", 4714 + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", 4715 + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", 4716 + "license": "MIT", 4717 + "dependencies": { 4718 + "@types/unist": "^3.0.0", 4719 + "unist-util-stringify-position": "^4.0.0" 4720 + }, 4721 + "funding": { 4722 + "type": "opencollective", 4723 + "url": "https://opencollective.com/unified" 4724 + } 4725 + }, 4214 4726 "node_modules/vite": { 4215 4727 "version": "6.0.3", 4216 4728 "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.3.tgz", ··· 4301 4813 "optional": true 4302 4814 } 4303 4815 } 4816 + }, 4817 + "node_modules/vscode-oniguruma": { 4818 + "version": "2.0.1", 4819 + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-2.0.1.tgz", 4820 + "integrity": "sha512-poJU8iHIWnC3vgphJnrLZyI3YdqRlR27xzqDmpPXYzA93R4Gk8z7T6oqDzDoHjoikA2aS82crdXFkjELCdJsjQ==", 4821 + "license": "MIT" 4822 + }, 4823 + "node_modules/vscode-textmate": { 4824 + "version": "9.1.0", 4825 + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-9.1.0.tgz", 4826 + "integrity": "sha512-lxKSVp2DkFOx9RDAvpiYUrB9/KT1fAfi1aE8CBGstP8N7rLF+Seifj8kDA198X0mYj1CjQUC+81+nQf8CO0nVA==", 4827 + "license": "MIT" 4304 4828 }, 4305 4829 "node_modules/which": { 4306 4830 "version": "2.0.2", ··· 4453 4977 "version": "1.1.2", 4454 4978 "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz", 4455 4979 "integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==", 4456 - "dev": true, 4457 4980 "license": "MIT" 4981 + }, 4982 + "node_modules/zwitch": { 4983 + "version": "2.0.4", 4984 + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", 4985 + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", 4986 + "license": "MIT", 4987 + "funding": { 4988 + "type": "github", 4989 + "url": "https://github.com/sponsors/wooorm" 4990 + } 4458 4991 } 4459 4992 } 4460 4993 }
+8
package.json
··· 27 27 "typescript": "^5.0.0", 28 28 "typescript-eslint": "^8.0.0", 29 29 "vite": "^6.0.0" 30 + }, 31 + "dependencies": { 32 + "@fontsource-variable/domine": "^5.1.0", 33 + "@fontsource-variable/public-sans": "^5.1.1", 34 + "@tabler/icons-svelte": "^3.26.0", 35 + "@wooorm/starry-night": "^3.5.0", 36 + "hast-util-to-html": "^9.0.4", 37 + "tailwind-merge": "^2.5.5" 30 38 } 31 39 }
+6 -1
src/app.css
··· 1 1 @import 'tailwindcss/base'; 2 2 @import 'tailwindcss/components'; 3 - @import 'tailwindcss/utilities' 3 + @import 'tailwindcss/utilities'; 4 + 5 + body { 6 + @apply bg-[#EDE3E9]; 7 + @apply text-[#110b11]; 8 + }
+2
src/app.html
··· 3 3 <head> 4 4 <meta charset="utf-8" /> 5 5 <link rel="icon" href="%sveltekit.assets%/favicon.png" /> 6 + <link rel="preload" as="font" href="%sveltekit.assets%/Aujournuit-VariableVF.woff2" type="font/woff2" crossorigin="anonymous"> 7 + <link rel="preload" as="font" href="%sveltekit.assets%/Aujournuit-Regular.woff2" type="font/woff2" crossorigin="anonymous"> 6 8 <meta name="viewport" content="width=device-width, initial-scale=1" /> 7 9 %sveltekit.head% 8 10 </head>
+33
src/lib/CodeBlock.svelte
··· 1 + <script lang='ts'> 2 + import { onMount } from 'svelte' 3 + import { createStarryNight } from '@wooorm/starry-night' 4 + import sourceTs from '@wooorm/starry-night/source.ts' 5 + import sourceJs from '@wooorm/starry-night/source.js' 6 + import sourceRust from '@wooorm/starry-night/source.rust' 7 + import { toHtml } from 'hast-util-to-html' 8 + import '@wooorm/starry-night/style/dark' 9 + 10 + type Language = 11 + | 'js' 12 + | 'ts' 13 + | 'rust' 14 + 15 + export let code: string 16 + export let language: Language = 'rust' 17 + let highlightedCode = '' 18 + 19 + onMount(async () => { 20 + const starryNight = await createStarryNight([ 21 + sourceJs, 22 + sourceTs, 23 + sourceRust, 24 + ]) 25 + const normalizedCode = code.trim() 26 + const tree = starryNight.highlight(normalizedCode, `source.${language}`) 27 + highlightedCode = toHtml(tree) 28 + }) 29 + </script> 30 + <!-- eslint-disable svelte/no-at-html-tags --> 31 + <div class="font-mono text-sm bg-neutral-900 p-4 text-white"> 32 + <pre>{@html highlightedCode}</pre> 33 + </div>
+32
src/lib/Time.svelte
··· 1 + <script lang="ts"> 2 + import { formatAttribute } from './dates' 3 + 4 + type Options = Intl.DateTimeFormatOptions 5 + export let date: Date 6 + export let locale = 'en-US' 7 + export let calendar: Options['calendar'] = undefined 8 + export let dayPeriod: Options['dayPeriod'] = undefined 9 + export let numberingSystem: Options['numberingSystem'] = undefined 10 + export let dateStyle: Options['dateStyle'] = undefined 11 + export let timeStyle: Options['timeStyle'] = undefined 12 + export let hourCycle: Options['hourCycle'] = undefined 13 + export let formatMatcher: Options['formatMatcher'] = undefined 14 + export let fractionalSecondDigits: Options['fractionalSecondDigits'] = undefined 15 + 16 + const formatter = new Intl.DateTimeFormat(locale, { 17 + calendar: calendar, 18 + dayPeriod: dayPeriod, 19 + numberingSystem: numberingSystem, 20 + dateStyle: dateStyle, 21 + timeStyle: timeStyle, 22 + hourCycle: hourCycle, 23 + formatMatcher: formatMatcher, 24 + fractionalSecondDigits: fractionalSecondDigits, 25 + }) 26 + const value = formatter.format(date) 27 + const attribute = formatAttribute(date, timeStyle, dateStyle) 28 + </script> 29 + 30 + <time datetime={attribute}> 31 + {value} 32 + </time>
+54
src/lib/dates.ts
··· 1 + export type DateTimeKind = 'datetime' | 'date' | 'time' 2 + export const getKind = ( 3 + timeStyle: Intl.DateTimeFormatOptions['timeStyle'], 4 + dateStyle: Intl.DateTimeFormatOptions['dateStyle'], 5 + ): DateTimeKind => { 6 + const isTimeDefined = timeStyle !== undefined 7 + const isDateDefined = dateStyle !== undefined 8 + 9 + if (isTimeDefined && !isDateDefined) { 10 + return 'time' 11 + } 12 + else if (isDateDefined && !isTimeDefined) { 13 + return 'date' 14 + } 15 + else { 16 + return 'datetime' 17 + } 18 + } 19 + 20 + const padZero = (n: number, max: number = 2) => 21 + n.toString().padStart(max, '0') 22 + 23 + export const formatDate = (d: Date) => 24 + `${d.getUTCFullYear()}-${padZero(d.getUTCMonth() + 1)}-${padZero(d.getUTCDate())}` 25 + 26 + export const formatTime = (d: Date, timeStyle: 'short' | 'medium' | 'long' = 'short') => { 27 + const hour = padZero(d.getUTCHours()) 28 + const min = padZero(d.getUTCMinutes()) 29 + const sec = padZero(d.getUTCSeconds()) 30 + const milli = padZero(d.getUTCMilliseconds(), 3) 31 + 32 + switch (timeStyle) { 33 + case 'short': return `${hour}:${min}` 34 + case 'medium': return `${hour}:${min}:${sec}` 35 + case 'long': return `${hour}:${min}:${sec}.${milli}` 36 + } 37 + } 38 + 39 + /** 40 + * Format a date for a `datetime` HTML attribute value used in 41 + * `<time>` elements. 42 + */ 43 + export const formatAttribute = ( 44 + d: Date, 45 + timeStyle: Intl.DateTimeFormatOptions['timeStyle'], 46 + dateStyle: Intl.DateTimeFormatOptions['dateStyle'] 47 + ): string => { 48 + const kind = getKind(timeStyle, dateStyle) 49 + switch (kind) { 50 + case 'date': return formatDate(d) 51 + case 'time': return formatTime(d) 52 + case 'datetime': return `${formatDate(d)}T${formatTime(d)}` 53 + } 54 + }
+10 -2
src/routes/+layout.svelte
··· 1 1 <script lang="ts"> 2 - import '../app.css'; 2 + import "../app.css"; 3 + import "@fontsource-variable/public-sans"; 4 + import '@fontsource-variable/domine'; // Supports weights 400-700 3 5 let { children } = $props(); 4 6 </script> 5 7 6 - {@render children()} 8 + <svelte:head> 9 + <title>samanthanguyen.me</title> 10 + </svelte:head> 11 + 12 + <div class="pt-16 mx-auto max-w-xl"> 13 + {@render children()} 14 + </div>
+47 -2
src/routes/+page.svelte
··· 1 - <h1>Welcome to SvelteKit</h1> 2 - <p>Visit <a href="https://svelte.dev/docs/kit">svelte.dev/docs/kit</a> to read the documentation</p> 1 + <script> 2 + import { IconBrandBluesky, IconBrandGithub } from '@tabler/icons-svelte' 3 + import { twMerge } from 'tailwind-merge' 4 + </script> 5 + <section class="flex flex-col gap-8"> 6 + <header class="flex flex-col gap-2"> 7 + <h1 class={twMerge( 8 + "h-[200px] flex items-end", 9 + "text-4xl font-domine", 10 + )}> 11 + samanthanguyen.me 12 + </h1> 13 + <span class="font-domine">she/her. artist, software engineer, aspiring computer scientist</span> 14 + </header> 15 + <main class="flex flex-col gap-4"> 16 + <p class="font-domine"> 17 + I've most recently worked as a Research Assistant 18 + at the Security & Privacy Research Lab 19 + of UT Arlington, from May 2024 to December 2024. 20 + My main interests mainly revolve in low-level programming, 21 + including compiler design, programming languages, operating 22 + systems, and graphics programming. 23 + </p> 24 + <p class="font-domine"> 25 + Besides programming, I've enjoyed fine arts since I was a child, 26 + and hope to one day work in a field where I can combine both, 27 + such as a developer for a video game and/or video game engine. 28 + {`:-)`} 29 + </p> 30 + <blockquote class="italic font-sans text-sm mt-8"> 31 + <p> 32 + "We adventure together, explore together, and capture wonderful memories together. 33 + In the journeys to come, we will "trailblaze" more beautiful moments, preserving 34 + them with our camera, our eyes, and our hearts." 35 + </p> 36 + <cite class="text-right">—Honkai Star Rail</cite> 37 + </blockquote> 38 + </main> 39 + <footer class="border-t-2 border-zinc-300 pt-4 flex flex-row gap-4 justify-end"> 40 + <a href="https://bsky.app/profile/samanthanguyen.me" title="@samanthanguyen.me on Bluesky"> 41 + <IconBrandBluesky size={32} stroke={1} class="text-zinc-950" /> 42 + </a> 43 + <a href="https://github.com/neoncitylights" title="@neoncitylights on GitHub"> 44 + <IconBrandGithub size={32} stroke={1} class="text-zinc-950" /> 45 + </a> 46 + </footer> 47 + </section>
+10 -7
tailwind.config.ts
··· 1 1 import type { Config } from 'tailwindcss'; 2 2 3 3 export default { 4 - content: ['./src/**/*.{html,js,svelte,ts}'], 5 - 6 - theme: { 7 - extend: {} 8 - }, 9 - 10 - plugins: [] 4 + content: ['./src/**/*.{html,js,svelte,ts}'], 5 + theme: { 6 + extend: { 7 + fontFamily: { 8 + sans: ['Public Sans Variable', 'sans-serif'], 9 + domine: ['Domine Variable', 'serif'], 10 + } 11 + } 12 + }, 13 + plugins: [] 11 14 } satisfies Config;