this repo has no description
0
fork

Configure Feed

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

Commit.

lukeacl 986758fb 2ca2c763

+149 -52
+2 -1
package.json
··· 1 1 { 2 2 "name": "atproto-did-web", 3 3 "private": true, 4 - "version": "0.0.1", 4 + "version": "0.0.2", 5 5 "type": "module", 6 6 "scripts": { 7 7 "dev": "vite", ··· 17 17 "uint8arrays": "^5.1.0" 18 18 }, 19 19 "devDependencies": { 20 + "@types/node": "^22.10.1", 20 21 "autoprefixer": "^10.4.20", 21 22 "postcss": "^8.4.49", 22 23 "tailwindcss": "^3.4.16",
+24 -8
pnpm-lock.yaml
··· 24 24 specifier: ^5.1.0 25 25 version: 5.1.0 26 26 devDependencies: 27 + '@types/node': 28 + specifier: ^22.10.1 29 + version: 22.10.1 27 30 autoprefixer: 28 31 specifier: ^10.4.20 29 32 version: 10.4.20(postcss@8.4.49) ··· 38 41 version: 5.6.3 39 42 vite: 40 43 specifier: ^6.0.1 41 - version: 6.0.2(jiti@1.21.6)(yaml@2.6.1) 44 + version: 6.0.2(@types/node@22.10.1)(jiti@1.21.6)(yaml@2.6.1) 42 45 vite-plugin-solid: 43 46 specifier: ^2.11.0 44 - version: 2.11.0(solid-js@1.9.3)(vite@6.0.2(jiti@1.21.6)(yaml@2.6.1)) 47 + version: 2.11.0(solid-js@1.9.3)(vite@6.0.2(@types/node@22.10.1)(jiti@1.21.6)(yaml@2.6.1)) 45 48 46 49 packages: 47 50 ··· 452 455 '@types/estree@1.0.6': 453 456 resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 454 457 458 + '@types/node@22.10.1': 459 + resolution: {integrity: sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==} 460 + 455 461 ansi-regex@5.0.1: 456 462 resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 457 463 engines: {node: '>=8'} ··· 969 975 uint8arrays@5.1.0: 970 976 resolution: {integrity: sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==} 971 977 978 + undici-types@6.20.0: 979 + resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} 980 + 972 981 update-browserslist-db@1.1.1: 973 982 resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} 974 983 hasBin: true ··· 1422 1431 1423 1432 '@types/estree@1.0.6': {} 1424 1433 1434 + '@types/node@22.10.1': 1435 + dependencies: 1436 + undici-types: 6.20.0 1437 + 1425 1438 ansi-regex@5.0.1: {} 1426 1439 1427 1440 ansi-regex@6.1.0: {} ··· 1940 1953 dependencies: 1941 1954 multiformats: 13.3.1 1942 1955 1956 + undici-types@6.20.0: {} 1957 + 1943 1958 update-browserslist-db@1.1.1(browserslist@4.24.2): 1944 1959 dependencies: 1945 1960 browserslist: 4.24.2 ··· 1950 1965 1951 1966 validate-html-nesting@1.2.2: {} 1952 1967 1953 - vite-plugin-solid@2.11.0(solid-js@1.9.3)(vite@6.0.2(jiti@1.21.6)(yaml@2.6.1)): 1968 + vite-plugin-solid@2.11.0(solid-js@1.9.3)(vite@6.0.2(@types/node@22.10.1)(jiti@1.21.6)(yaml@2.6.1)): 1954 1969 dependencies: 1955 1970 '@babel/core': 7.26.0 1956 1971 '@types/babel__core': 7.20.5 ··· 1958 1973 merge-anything: 5.1.7 1959 1974 solid-js: 1.9.3 1960 1975 solid-refresh: 0.6.3(solid-js@1.9.3) 1961 - vite: 6.0.2(jiti@1.21.6)(yaml@2.6.1) 1962 - vitefu: 1.0.4(vite@6.0.2(jiti@1.21.6)(yaml@2.6.1)) 1976 + vite: 6.0.2(@types/node@22.10.1)(jiti@1.21.6)(yaml@2.6.1) 1977 + vitefu: 1.0.4(vite@6.0.2(@types/node@22.10.1)(jiti@1.21.6)(yaml@2.6.1)) 1963 1978 transitivePeerDependencies: 1964 1979 - supports-color 1965 1980 1966 - vite@6.0.2(jiti@1.21.6)(yaml@2.6.1): 1981 + vite@6.0.2(@types/node@22.10.1)(jiti@1.21.6)(yaml@2.6.1): 1967 1982 dependencies: 1968 1983 esbuild: 0.24.0 1969 1984 postcss: 8.4.49 1970 1985 rollup: 4.28.0 1971 1986 optionalDependencies: 1987 + '@types/node': 22.10.1 1972 1988 fsevents: 2.3.3 1973 1989 jiti: 1.21.6 1974 1990 yaml: 2.6.1 1975 1991 1976 - vitefu@1.0.4(vite@6.0.2(jiti@1.21.6)(yaml@2.6.1)): 1992 + vitefu@1.0.4(vite@6.0.2(@types/node@22.10.1)(jiti@1.21.6)(yaml@2.6.1)): 1977 1993 optionalDependencies: 1978 - vite: 6.0.2(jiti@1.21.6)(yaml@2.6.1) 1994 + vite: 6.0.2(@types/node@22.10.1)(jiti@1.21.6)(yaml@2.6.1) 1979 1995 1980 1996 which@2.0.2: 1981 1997 dependencies:
+8 -5
src/components/layout.tsx
··· 11 11 </header> 12 12 <main>{props.children}</main> 13 13 <footer> 14 - <div class="credit"> 15 - 💕{" "} 16 - <a target="_blank" href="https://bsky.app/profile/lukeacl.com"> 17 - @lukeacl.com 18 - </a> 14 + <div class="credit flex"> 15 + <div class="text-left flex-grow"> 16 + 💕{" "} 17 + <a target="_blank" href="https://bsky.app/profile/lukeacl.com"> 18 + @lukeacl.com 19 + </a>{" "} 20 + - v{__APP_VERSION__} 21 + </div> 19 22 </div> 20 23 </footer> 21 24 </div>
+2 -2
src/index.css
··· 68 68 } 69 69 70 70 .form-button { 71 - @apply w-full px-4 py-2 71 + @apply px-4 py-2 72 72 text-white font-medium text-sm text-center 73 73 bg-blue-700 hover:bg-blue-800 74 74 focus:ring-4 focus:outline-none focus:ring-blue-300 75 75 rounded 76 - sm:w-auto; 76 + w-auto; 77 77 }
+109 -36
src/pages/did-web.tsx
··· 114 114 if (email().trim() === "") return showError("You must specify your email."); 115 115 if (password().trim() === "") 116 116 return showError("You must specify a password."); 117 + if (accessJWT() !== "" && refreshJWT() !== "") return setStep(step() + 1); 117 118 try { 118 119 const header = JSON.stringify({ 119 120 alg: "ES256K", ··· 297 298 reset the process. 298 299 </p> 299 300 <div class="form"> 300 - <div class="text-right"> 301 - <button class="form-button" onClick={() => setStep(step() + 1)}> 302 - Next 303 - </button> 301 + <div class="flex"> 302 + <div class="text-right flex-grow"> 303 + <button 304 + class="form-button" 305 + onClick={() => setStep(step() + 1)} 306 + > 307 + Next 308 + </button> 309 + </div> 304 310 </div> 305 311 </div> 306 312 </div> ··· 332 338 } 333 339 /> 334 340 </div> 335 - <div class="text-right"> 336 - {privateKey() === "" ? ( 337 - <button class="form-button" onClick={generatePrivateKey}> 338 - Generate 341 + <div class="flex"> 342 + <div class="text-left flex-grow"> 343 + <button 344 + class="form-button" 345 + onClick={() => setStep(step() - 1)} 346 + > 347 + Back 339 348 </button> 340 - ) : ( 341 - <button class="form-button" onClick={validatePrivateKey}> 342 - Next 343 - </button> 344 - )} 349 + </div> 350 + <div class="text-right flex-grow"> 351 + {privateKey() === "" ? ( 352 + <button class="form-button" onClick={generatePrivateKey}> 353 + Generate 354 + </button> 355 + ) : ( 356 + <button class="form-button" onClick={validatePrivateKey}> 357 + Next 358 + </button> 359 + )} 360 + </div> 345 361 </div> 346 362 </div> 347 363 </div> ··· 402 418 } 403 419 /> 404 420 </div> 405 - <div class="text-right"> 406 - <button class="form-button" onClick={validateIdentity}> 407 - Next 408 - </button> 421 + <div class="flex"> 422 + <div class="text-left flex-grow"> 423 + <button 424 + class="form-button" 425 + onClick={() => setStep(step() - 1)} 426 + > 427 + Back 428 + </button> 429 + </div> 430 + <div class="text-right flex-grow"> 431 + <button class="form-button" onClick={validateIdentity}> 432 + Next 433 + </button> 434 + </div> 409 435 </div> 410 436 </div> 411 437 </div> ··· 427 453 </p> 428 454 <pre>{didFile()}</pre> 429 455 </div> 430 - <div class="text-right"> 431 - <button class="form-button" onClick={validateDIDFile}> 432 - Next 433 - </button> 456 + <div class="flex"> 457 + <div class="text-left flex-grow"> 458 + <button 459 + class="form-button" 460 + onClick={() => setStep(step() - 1)} 461 + > 462 + Back 463 + </button> 464 + </div> 465 + <div class="text-right flex-grow"> 466 + <button class="form-button" onClick={validateDIDFile}> 467 + Next 468 + </button> 469 + </div> 434 470 </div> 435 471 </div> 436 472 </div> ··· 525 561 readOnly={true} 526 562 /> 527 563 </div> 528 - <div class="text-right"> 529 - <button class="form-button" onClick={createAccount}> 530 - Next 531 - </button> 564 + <div class="flex"> 565 + <div class="text-left flex-grow"> 566 + <button 567 + class="form-button" 568 + onClick={() => setStep(step() - 1)} 569 + > 570 + Back 571 + </button> 572 + </div> 573 + <div class="text-right flex-grow"> 574 + <button class="form-button" onClick={createAccount}> 575 + Next 576 + </button> 577 + </div> 532 578 </div> 533 579 </div> 534 580 </div> ··· 556 602 </p> 557 603 <pre>{updatedDIDFile()}</pre> 558 604 </div> 559 - <div class="text-right"> 560 - <button 561 - class="form-button" 562 - onClick={validateUpdatedDIDFile} 563 - > 564 - Next 565 - </button> 605 + <div class="flex"> 606 + <div class="text-left flex-grow"> 607 + <button 608 + class="form-button" 609 + onClick={() => setStep(step() - 1)} 610 + > 611 + Back 612 + </button> 613 + </div> 614 + <div class="text-right flex-grow"> 615 + <button 616 + class="form-button" 617 + onClick={validateUpdatedDIDFile} 618 + > 619 + Next 620 + </button> 621 + </div> 566 622 </div> 567 623 </> 568 624 )} ··· 578 634 Everything should be in place to activate your account for use. 579 635 Cross your fingers and hit next. 580 636 </p> 581 - <div class="text-right"> 582 - <button class="form-button" onClick={activateAccount}> 583 - Next 584 - </button> 637 + <div class="flex"> 638 + <div class="text-left flex-grow"> 639 + <button 640 + class="form-button" 641 + onClick={() => setStep(step() - 1)} 642 + > 643 + Back 644 + </button> 645 + </div> 646 + <div class="text-right flex-grow"> 647 + <button class="form-button" onClick={activateAccount}> 648 + Next 649 + </button> 650 + </div> 585 651 </div> 586 652 </div> 587 653 </div> ··· 646 712 value={password()} 647 713 readOnly={true} 648 714 /> 715 + </div> 716 + <div class="flex"> 717 + <div class="text-left flex-grow"> 718 + <button class="form-button" onClick={() => setStep(step() - 1)}> 719 + Back 720 + </button> 721 + </div> 649 722 </div> 650 723 </div> 651 724 )}
+1
src/vite-env.d.ts
··· 1 1 /// <reference types="vite/client" /> 2 + declare const __APP_VERSION__: string;
+3
vite.config.ts
··· 3 3 4 4 export default defineConfig({ 5 5 plugins: [solid()], 6 + define: { 7 + __APP_VERSION__: JSON.stringify(process.env.npm_package_version), 8 + }, 6 9 });