├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.yml │ ├── config.yml │ ├── feature_request.yml │ └── security_report.yml ├── custom-issue-templates │ ├── 00 Initialize showcase with KIT.md │ ├── 01 Setup App deployment.md │ ├── 02 Setup CI.md │ ├── 03 Create login page.md │ ├── 04 Get top repositories from GitHub API.md │ ├── 05 Get Gists from GitHub API.md │ ├── 06 Get profile info from GitHub.md │ ├── 07 Get all repositories from GitHub API.md │ ├── 08 Get Organization repositories from GitHub API.md │ ├── 09 Get single repository info from GitHub API.md │ ├── 10 Get issue information from GitHub API.md │ ├── 11 Get pull request information from GitHub API.md │ ├── 12 Create navigation header.md │ ├── 13 Create gists panel.md │ ├── 14 Create repository card.md │ ├── 15 Create main page layout (top repositories + gists).md │ ├── 16 Create user profile card.md │ ├── 17 Create component for search input and filter sort buttons.md │ ├── 18 Create profile page layout.md │ ├── 19 Setup organization page layout.md │ ├── 20 Implement search functionality.md │ ├── 21 Implement type filter functionality.md │ ├── 22 Implement language filter functionality.md │ ├── 23 Implement sort functionality.md │ ├── 24 Implement search filter sort result text.md │ ├── 25 Create single repo view sub header.md │ ├── 26 Create single repo view about section.md │ ├── 27 Create single repo code tab view.md │ ├── 28 Create single repo readme view.md │ ├── 29 Create issue pull request cards.md │ ├── 30 Create single repo issues tab view.md │ ├── 31 Create single repo pull request tab view.md │ ├── 32 Create folder navigation.md │ ├── 33 Create file view.md │ ├── 34 Add logout functionality.md │ ├── 35 Add project to docs site.md │ ├── x12 Get organization info from GitHub API.md │ ├── x13 Implement search sort filter functionality.md │ ├── x14 Create repository page layout.md │ └── x22 Clean up tasks.md ├── pull_request_template.md └── workflows │ ├── be-deploy.yml │ ├── ci-angular-apollo-tailwind.yml │ ├── ci-angular-ngrx-scss.yml │ ├── ci-cra-rxjs-styled-components.yml │ ├── ci-nuxt-pinia-tailwind.yml │ ├── ci-qwik-graphql-tailwind.yml │ ├── ci-solidjs-tailwind.yml │ ├── ci-solidstart-tanstackquery-tailwind-modules.yml │ ├── ci-svelte-kit-scss.yml │ ├── ci-vue3-apollo-quasar.yml │ ├── expo-zustand-styled-components.yml │ ├── remix-deploy.yml │ ├── send-slack-notification.yml │ └── thank-contributor.yml ├── .gitignore ├── .graphqlconfig ├── .nvmrc ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── SECURITY.md ├── amplify.yml ├── angular-apollo-tailwind ├── .browserslistrc ├── .editorconfig ├── .env.example ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── .husky │ ├── pre-commit │ └── pre-push ├── .prettierignore ├── .prettierrc ├── .stylelintrc ├── README.md ├── angular.json ├── codegen.yml ├── github-schema-loader.js ├── karma.conf.js ├── package.json ├── projects │ ├── prism │ │ ├── .browserslistrc │ │ ├── .eslintrc.json │ │ ├── README.md │ │ ├── karma.conf.js │ │ ├── ng-package.json │ │ ├── package.json │ │ ├── src │ │ │ ├── lib │ │ │ │ ├── components │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── line │ │ │ │ │ │ ├── line.component.html │ │ │ │ │ │ ├── line.component.spec.ts │ │ │ │ │ │ └── line.component.ts │ │ │ │ │ ├── prism │ │ │ │ │ │ ├── prism.component.html │ │ │ │ │ │ ├── prism.component.spec.ts │ │ │ │ │ │ ├── prism.component.ts │ │ │ │ │ │ └── prism.components.css │ │ │ │ │ └── token │ │ │ │ │ │ ├── token.component.html │ │ │ │ │ │ ├── token.component.spec.ts │ │ │ │ │ │ └── token.component.ts │ │ │ │ ├── prism.module.ts │ │ │ │ ├── themes │ │ │ │ │ ├── dracula.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── night-owl-light.ts │ │ │ │ ├── types │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ └── model.ts │ │ │ │ └── utils │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── normalize-tokens.ts │ │ │ │ │ └── themes-to-dict.ts │ │ │ ├── public-api.ts │ │ │ └── test.ts │ │ ├── tsconfig.lib.json │ │ ├── tsconfig.lib.prod.json │ │ └── tsconfig.spec.json │ └── shared │ │ ├── .browserslistrc │ │ ├── .eslintrc.json │ │ ├── README.md │ │ ├── karma.conf.js │ │ ├── ng-package.json │ │ ├── package.json │ │ ├── src │ │ ├── lib │ │ │ ├── components │ │ │ │ ├── container │ │ │ │ │ ├── container.component.spec.ts │ │ │ │ │ ├── container.component.ts │ │ │ │ │ └── container.module.ts │ │ │ │ ├── content-loading │ │ │ │ │ ├── bullet-list-loading │ │ │ │ │ │ ├── bullet-list-loading.component.spec.ts │ │ │ │ │ │ └── bullet-list-loading.component.ts │ │ │ │ │ ├── content-loading.module.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── pulse-dots-loading │ │ │ │ │ │ ├── pulse-dots-loading.component.spec.ts │ │ │ │ │ │ └── pulse-dots-loading.component.ts │ │ │ │ │ └── text-line-loading │ │ │ │ │ │ ├── text-line-loading.component.spec.ts │ │ │ │ │ │ └── text-line-loading.component.ts │ │ │ │ ├── count-button-group │ │ │ │ │ ├── count-button-group.component.html │ │ │ │ │ ├── count-button-group.component.spec.ts │ │ │ │ │ ├── count-button-group.component.ts │ │ │ │ │ └── count-button-group.module.ts │ │ │ │ ├── data-container │ │ │ │ │ ├── data-container.component.html │ │ │ │ │ ├── data-container.component.spec.ts │ │ │ │ │ ├── data-container.component.ts │ │ │ │ │ └── data-container.module.ts │ │ │ │ ├── error-block │ │ │ │ │ ├── error-block.component.html │ │ │ │ │ ├── error-block.component.spec.ts │ │ │ │ │ ├── error-block.component.ts │ │ │ │ │ ├── error-block.module.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── icons │ │ │ │ │ ├── code-icon.component.ts │ │ │ │ │ ├── document-icon.component.ts │ │ │ │ │ ├── eye-icon.component.ts │ │ │ │ │ ├── folder-icon.component.ts │ │ │ │ │ ├── git-branch-icon.component.ts │ │ │ │ │ ├── git-repo-icon.component.ts │ │ │ │ │ ├── github-logo.component.ts │ │ │ │ │ ├── icons.module.ts │ │ │ │ │ ├── information-circle-icon.component.ts │ │ │ │ │ ├── privacy-badge.component.ts │ │ │ │ │ ├── privacy-icon.component.ts │ │ │ │ │ ├── pull-request-icon.component.ts │ │ │ │ │ ├── toc.component.ts │ │ │ │ │ └── twitter-icon.component.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── pipes │ │ │ │ ├── dfns │ │ │ │ │ ├── format-distance.pipe.spec.ts │ │ │ │ │ └── format-distance.pipe.ts │ │ │ │ ├── generate-url-with-protocol │ │ │ │ │ ├── generate-url-with-protocol.pipe.spec.ts │ │ │ │ │ └── generate-url-with-protocol.pipe.ts │ │ │ │ ├── index.ts │ │ │ │ ├── markdown │ │ │ │ │ ├── markdown.pipe.spec.ts │ │ │ │ │ └── markdown.pipe.ts │ │ │ │ ├── number │ │ │ │ │ ├── round-up.pipe.spec.ts │ │ │ │ │ └── round-up.pipe.ts │ │ │ │ └── pipes.module.ts │ │ │ └── shared.module.ts │ │ ├── public-api.ts │ │ └── test.ts │ │ ├── tsconfig.lib.json │ │ ├── tsconfig.lib.prod.json │ │ ├── tsconfig.spec.json │ │ └── yarn.lock ├── src │ ├── _redirects │ ├── app │ │ ├── app-routing.module.ts │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── auth │ │ │ ├── auth.guard.spec.ts │ │ │ ├── auth.guard.ts │ │ │ ├── auth.service.spec.ts │ │ │ ├── auth.service.ts │ │ │ ├── token.interceptor.spec.ts │ │ │ ├── token.interceptor.ts │ │ │ ├── token.service.spec.ts │ │ │ └── token.service.ts │ │ ├── components │ │ │ ├── filter-dropdown │ │ │ │ ├── filter-dropdown.component.css │ │ │ │ ├── filter-dropdown.component.html │ │ │ │ ├── filter-dropdown.component.spec.ts │ │ │ │ ├── filter-dropdown.component.ts │ │ │ │ └── filter-dropdown.module.ts │ │ │ ├── filters │ │ │ │ ├── filter.models.ts │ │ │ │ ├── profile-repos-filter-store.spec.ts │ │ │ │ ├── profile-repos-filter-store.ts │ │ │ │ ├── repos-filter.store.spec.ts │ │ │ │ └── repos-filter.store.ts │ │ │ ├── pagination │ │ │ │ ├── pagination.component.css │ │ │ │ ├── pagination.component.html │ │ │ │ ├── pagination.component.spec.ts │ │ │ │ ├── pagination.component.ts │ │ │ │ └── pagination.module.ts │ │ │ ├── repos-filter-dropdown │ │ │ │ ├── repos-filter-dropdown.component.css │ │ │ │ ├── repos-filter-dropdown.component.html │ │ │ │ ├── repos-filter-dropdown.component.spec.ts │ │ │ │ ├── repos-filter-dropdown.component.ts │ │ │ │ └── repos-filter-dropdown.module.ts │ │ │ └── toaster │ │ │ │ ├── toast │ │ │ │ ├── toast.component.css │ │ │ │ ├── toast.component.html │ │ │ │ ├── toast.component.spec.ts │ │ │ │ └── toast.component.ts │ │ │ │ ├── toaster.component.css │ │ │ │ ├── toaster.component.html │ │ │ │ ├── toaster.component.spec.ts │ │ │ │ ├── toaster.component.ts │ │ │ │ ├── toaster.model.ts │ │ │ │ ├── toaster.module.ts │ │ │ │ ├── toaster.repo.ts │ │ │ │ ├── toaster.service.spec.ts │ │ │ │ └── toaster.service.ts │ │ ├── file-viewer │ │ │ ├── components │ │ │ │ ├── file-code │ │ │ │ │ ├── file-code.component.css │ │ │ │ │ ├── file-code.component.html │ │ │ │ │ ├── file-code.component.spec.ts │ │ │ │ │ └── file-code.component.ts │ │ │ │ └── file-explorer-about │ │ │ │ │ ├── file-explorer-about-description │ │ │ │ │ ├── file-explorer-about-description.component.spec.ts │ │ │ │ │ └── file-explorer-about-description.component.ts │ │ │ │ │ ├── file-explorer-about.component.css │ │ │ │ │ ├── file-explorer-about.component.html │ │ │ │ │ ├── file-explorer-about.component.spec.ts │ │ │ │ │ ├── file-explorer-about.component.ts │ │ │ │ │ ├── home-page-url │ │ │ │ │ ├── home-page-url.component.css │ │ │ │ │ ├── home-page-url.component.spec.ts │ │ │ │ │ └── home-page-url.component.ts │ │ │ │ │ └── topics │ │ │ │ │ ├── topics.component.css │ │ │ │ │ ├── topics.component.html │ │ │ │ │ ├── topics.component.spec.ts │ │ │ │ │ └── topics.component.ts │ │ │ ├── file-explorer-blob │ │ │ │ ├── file-explorer-blob.component.html │ │ │ │ ├── file-explorer-blob.component.spec.ts │ │ │ │ └── file-explorer-blob.component.ts │ │ │ ├── file-explorer-list-container │ │ │ │ ├── file-explorer-list-container.component.css │ │ │ │ ├── file-explorer-list-container.component.html │ │ │ │ ├── file-explorer-list-container.component.spec.ts │ │ │ │ └── file-explorer-list-container.component.ts │ │ │ ├── file-explorer-list │ │ │ │ ├── file-explorer-list.component.css │ │ │ │ ├── file-explorer-list.component.html │ │ │ │ ├── file-explorer-list.component.spec.ts │ │ │ │ └── file-explorer-list.component.ts │ │ │ ├── file-explorer-nav │ │ │ │ ├── file-explorer-nav-skeleton │ │ │ │ │ ├── file-explorer-nav-skeleton.component.html │ │ │ │ │ ├── file-explorer-nav-skeleton.component.spec.ts │ │ │ │ │ ├── file-explorer-nav-skeleton.component.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── file-explorer-nav.component.css │ │ │ │ ├── file-explorer-nav.component.html │ │ │ │ ├── file-explorer-nav.component.spec.ts │ │ │ │ ├── file-explorer-nav.component.ts │ │ │ │ └── index.ts │ │ │ ├── file-explorer-root.component.html │ │ │ ├── file-explorer-root.component.spec.ts │ │ │ ├── file-explorer-root.component.ts │ │ │ ├── file-explorer-routing.module.ts │ │ │ ├── file-explorer-view │ │ │ │ ├── file-explorer-view.component.html │ │ │ │ ├── file-explorer-view.component.spec.ts │ │ │ │ └── file-explorer-view.component.ts │ │ │ ├── file-explorer.module.ts │ │ │ ├── file-viewer │ │ │ │ ├── file-viewer.component.css │ │ │ │ ├── file-viewer.component.html │ │ │ │ ├── file-viewer.component.spec.ts │ │ │ │ └── file-viewer.component.ts │ │ │ ├── parse-tree.ts │ │ │ ├── repo-read-me │ │ │ │ ├── read-me │ │ │ │ │ ├── read-me.component.css │ │ │ │ │ ├── read-me.component.spec.ts │ │ │ │ │ └── read-me.component.ts │ │ │ │ ├── repo-read-me.component.css │ │ │ │ ├── repo-read-me.component.html │ │ │ │ ├── repo-read-me.component.spec.ts │ │ │ │ └── repo-read-me.component.ts │ │ │ └── utils │ │ │ │ └── map-language-ext.ts │ │ ├── gql │ │ │ ├── graphql.module.ts │ │ │ ├── index.ts │ │ │ ├── models │ │ │ │ ├── index.ts │ │ │ │ ├── org-profile.ts │ │ │ │ ├── pagination.ts │ │ │ │ ├── profile.ts │ │ │ │ ├── repo-details.ts │ │ │ │ ├── repo-file.ts │ │ │ │ ├── repo-issues.ts │ │ │ │ ├── repo-pulls.ts │ │ │ │ ├── repo-tree.ts │ │ │ │ ├── user-repos.ts │ │ │ │ └── user-top-repos.ts │ │ │ ├── parse-error.ts │ │ │ └── queries │ │ │ │ ├── current-user.query.gql │ │ │ │ ├── org-profile.query.gql │ │ │ │ ├── org-repos.query.gql │ │ │ │ ├── profile.query.gql │ │ │ │ ├── repo-details.query.gql │ │ │ │ ├── repo-file.query.gql │ │ │ │ ├── repo-issues.query.gql │ │ │ │ ├── repo-pulls.query.gql │ │ │ │ ├── repo-read-me.query.gql │ │ │ │ ├── repo-tree.query.gql │ │ │ │ ├── user-gists.query.gql │ │ │ │ ├── user-repos.query.gql │ │ │ │ └── user-top-repos.query.gql │ │ ├── home │ │ │ ├── home-routing.module.ts │ │ │ ├── home.component.css │ │ │ ├── home.component.html │ │ │ ├── home.component.spec.ts │ │ │ ├── home.component.ts │ │ │ ├── home.module.ts │ │ │ ├── navbar │ │ │ │ ├── navbar.component.html │ │ │ │ ├── navbar.component.spec.ts │ │ │ │ └── navbar.component.ts │ │ │ └── user-dropdown-menu │ │ │ │ ├── user-dropdown-menu.component.html │ │ │ │ ├── user-dropdown-menu.component.spec.ts │ │ │ │ └── user-dropdown-menu.component.ts │ │ ├── issues │ │ │ ├── components │ │ │ │ ├── issues-empty │ │ │ │ │ ├── issues-empty.component.css │ │ │ │ │ ├── issues-empty.component.spec.ts │ │ │ │ │ └── issues-empty.component.ts │ │ │ │ ├── issues-filters │ │ │ │ │ ├── issues-filters.component.css │ │ │ │ │ ├── issues-filters.component.html │ │ │ │ │ ├── issues-filters.component.spec.ts │ │ │ │ │ └── issues-filters.component.ts │ │ │ │ ├── issues-list │ │ │ │ │ ├── issues-list.component.css │ │ │ │ │ ├── issues-list.component.html │ │ │ │ │ ├── issues-list.component.spec.ts │ │ │ │ │ └── issues-list.component.ts │ │ │ │ └── issues-skeleton │ │ │ │ │ ├── issues-skeleton.component.spec.ts │ │ │ │ │ └── issues-skeleton.component.ts │ │ │ ├── issues-routing.module.ts │ │ │ ├── issues.component.css │ │ │ ├── issues.component.html │ │ │ ├── issues.component.spec.ts │ │ │ ├── issues.component.ts │ │ │ ├── issues.module.ts │ │ │ ├── issues.store.spec.ts │ │ │ ├── issues.store.ts │ │ │ └── parse-issues.ts │ │ ├── profile │ │ │ ├── components │ │ │ │ ├── file-text │ │ │ │ │ ├── file-text.component.css │ │ │ │ │ ├── file-text.component.spec.ts │ │ │ │ │ └── file-text.component.ts │ │ │ │ ├── index.ts │ │ │ │ ├── orgs-list │ │ │ │ │ ├── orgs-list.component.css │ │ │ │ │ ├── orgs-list.component.spec.ts │ │ │ │ │ └── orgs-list.component.ts │ │ │ │ ├── profile-loading │ │ │ │ │ ├── profile-loading.component.spec.ts │ │ │ │ │ └── profile-loading.component.ts │ │ │ │ ├── profile-repo-list-item-skeleton │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── profile-repo-list-item-skeleton.component.spec.ts │ │ │ │ │ └── profile-repo-list-item-skeleton.component.ts │ │ │ │ ├── profile-repo-list-item │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── profile-repo-list-item.component.html │ │ │ │ │ ├── profile-repo-list-item.component.spec.ts │ │ │ │ │ └── profile-repo-list-item.component.ts │ │ │ │ ├── profile-repo-list │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── profile-repo-list.component.html │ │ │ │ │ ├── profile-repo-list.component.spec.ts │ │ │ │ │ └── profile-repo-list.component.ts │ │ │ │ └── repos-filters │ │ │ │ │ ├── repos-filters.component.css │ │ │ │ │ ├── repos-filters.component.html │ │ │ │ │ ├── repos-filters.component.spec.ts │ │ │ │ │ └── repos-filters.component.ts │ │ │ ├── org-about │ │ │ │ ├── org-about.component.css │ │ │ │ ├── org-about.component.html │ │ │ │ ├── org-about.component.spec.ts │ │ │ │ └── org-about.component.ts │ │ │ ├── org-profile │ │ │ │ ├── org-profile.component.html │ │ │ │ ├── org-profile.component.spec.ts │ │ │ │ └── org-profile.component.ts │ │ │ ├── profile-about │ │ │ │ ├── parse-profile.ts │ │ │ │ ├── profile-about.component.css │ │ │ │ ├── profile-about.component.html │ │ │ │ ├── profile-about.component.spec.ts │ │ │ │ └── profile-about.component.ts │ │ │ ├── profile-nav │ │ │ │ ├── profile-nav.component.html │ │ │ │ └── profile-nav.component.ts │ │ │ ├── profile-repos-view │ │ │ │ ├── filter-repos.ts │ │ │ │ ├── index.ts │ │ │ │ ├── parse-languages.ts │ │ │ │ ├── parse-profile-repos.ts │ │ │ │ ├── profile-repos-view.component.html │ │ │ │ ├── profile-repos-view.component.spec.ts │ │ │ │ ├── profile-repos-view.component.ts │ │ │ │ ├── profile-repos.store.spec.ts │ │ │ │ └── profile-repos.store.ts │ │ │ ├── profile-routing.module.ts │ │ │ ├── profile.component.html │ │ │ ├── profile.component.spec.ts │ │ │ ├── profile.component.ts │ │ │ ├── profile.module.ts │ │ │ ├── profile.resolver.spec.ts │ │ │ ├── profile.resolver.ts │ │ │ └── user-profile │ │ │ │ ├── user-profile.component.html │ │ │ │ ├── user-profile.component.spec.ts │ │ │ │ └── user-profile.component.ts │ │ ├── provider │ │ │ ├── provider.component.css │ │ │ ├── provider.component.html │ │ │ ├── provider.component.spec.ts │ │ │ ├── provider.component.ts │ │ │ ├── provider.module.ts │ │ │ └── redirect │ │ │ │ └── redirect.component.ts │ │ ├── pull-requests │ │ │ ├── components │ │ │ │ ├── pull-requests-empty │ │ │ │ │ ├── pull-requests-empty.component.css │ │ │ │ │ ├── pull-requests-empty.component.spec.ts │ │ │ │ │ └── pull-requests-empty.component.ts │ │ │ │ ├── pull-requests-filters │ │ │ │ │ ├── pull-requests-filters.component.css │ │ │ │ │ ├── pull-requests-filters.component.html │ │ │ │ │ ├── pull-requests-filters.component.spec.ts │ │ │ │ │ └── pull-requests-filters.component.ts │ │ │ │ ├── pull-requests-list │ │ │ │ │ ├── pull-requests-list.component.css │ │ │ │ │ ├── pull-requests-list.component.html │ │ │ │ │ ├── pull-requests-list.component.spec.ts │ │ │ │ │ └── pull-requests-list.component.ts │ │ │ │ └── pull-requests-skeleton │ │ │ │ │ ├── pull-requests-skeleton.component.spec.ts │ │ │ │ │ └── pull-requests-skeleton.component.ts │ │ │ ├── parse-pull-requests.ts │ │ │ ├── pull-requests-routing.module.ts │ │ │ ├── pull-requests.component.css │ │ │ ├── pull-requests.component.html │ │ │ ├── pull-requests.component.spec.ts │ │ │ ├── pull-requests.component.ts │ │ │ ├── pull-requests.module.ts │ │ │ ├── pull-requests.store.spec.ts │ │ │ └── pull-requests.store.ts │ │ ├── repos │ │ │ ├── components │ │ │ │ ├── repo-list-item-skeleton │ │ │ │ │ ├── repo-list-item-skeleton.component.spec.ts │ │ │ │ │ └── repo-list-item-skeleton.component.ts │ │ │ │ ├── repo-list-item │ │ │ │ │ ├── repo-list-item.component.html │ │ │ │ │ ├── repo-list-item.component.spec.ts │ │ │ │ │ └── repo-list-item.component.ts │ │ │ │ ├── repo-list │ │ │ │ │ ├── repo-list.component.css │ │ │ │ │ ├── repo-list.component.html │ │ │ │ │ ├── repo-list.component.spec.ts │ │ │ │ │ └── repo-list.component.ts │ │ │ │ ├── repo-meta │ │ │ │ │ ├── repo-meta.component.html │ │ │ │ │ └── repo-meta.component.ts │ │ │ │ └── user-gists │ │ │ │ │ ├── user-gists.component.css │ │ │ │ │ ├── user-gists.component.html │ │ │ │ │ └── user-gists.component.ts │ │ │ ├── parse-top-repos.ts │ │ │ ├── parse-topics.ts │ │ │ ├── repo-details │ │ │ │ ├── repo-details.component.html │ │ │ │ ├── repo-details.component.spec.ts │ │ │ │ └── repo-details.component.ts │ │ │ ├── repo-header │ │ │ │ ├── repo-action-buttons │ │ │ │ │ ├── repo-action-buttons.component.css │ │ │ │ │ ├── repo-action-buttons.component.html │ │ │ │ │ ├── repo-action-buttons.component.spec.ts │ │ │ │ │ └── repo-action-buttons.component.ts │ │ │ │ ├── repo-header-skeleton │ │ │ │ │ ├── repo-header-skeleton.component.html │ │ │ │ │ ├── repo-header-skeleton.component.spec.ts │ │ │ │ │ └── repo-header-skeleton.component.ts │ │ │ │ ├── repo-header.component.css │ │ │ │ ├── repo-header.component.html │ │ │ │ ├── repo-header.component.spec.ts │ │ │ │ ├── repo-header.component.ts │ │ │ │ ├── repo-heading │ │ │ │ │ ├── repo-heading.component.css │ │ │ │ │ ├── repo-heading.component.html │ │ │ │ │ ├── repo-heading.component.spec.ts │ │ │ │ │ └── repo-heading.component.ts │ │ │ │ └── repo-tab-navigation │ │ │ │ │ ├── repo-tab-navigation.component.css │ │ │ │ │ ├── repo-tab-navigation.component.html │ │ │ │ │ ├── repo-tab-navigation.component.spec.ts │ │ │ │ │ └── repo-tab-navigation.component.ts │ │ │ ├── repo-page.resolver.spec.ts │ │ │ ├── repo-page.resolver.ts │ │ │ ├── repo-routing.module.ts │ │ │ ├── repos.component.html │ │ │ ├── repos.component.spec.ts │ │ │ ├── repos.component.ts │ │ │ └── repos.module.ts │ │ └── utils │ │ │ ├── index.ts │ │ │ └── route-utils.ts │ ├── assets │ │ └── .gitkeep │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ ├── styles.css │ └── test.ts ├── tailwind.config.js ├── tools │ ├── generate-cert.sh │ ├── set-env.js │ └── set-env.prod.js ├── tsconfig.app.json ├── tsconfig.eslint.json ├── tsconfig.json ├── tsconfig.spec.json └── yarn.lock ├── angular-ngrx-scss ├── .browserslistrc ├── .editorconfig ├── .env.example ├── .eslintignore ├── .eslintrc.json ├── .gitignore ├── .prettierignore ├── .prettierrc ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── tasks.json ├── README.md ├── angular.json ├── karma.conf.js ├── package-lock.json ├── package.json ├── projects │ └── prism │ │ ├── .browserslistrc │ │ ├── .eslintrc.json │ │ ├── README.md │ │ ├── karma.conf.js │ │ ├── ng-package.json │ │ ├── package.json │ │ ├── src │ │ ├── lib │ │ │ ├── components │ │ │ │ ├── index.ts │ │ │ │ ├── line │ │ │ │ │ ├── line.component.html │ │ │ │ │ ├── line.component.spec.ts │ │ │ │ │ └── line.component.ts │ │ │ │ ├── prism │ │ │ │ │ ├── prism.component.html │ │ │ │ │ ├── prism.component.spec.ts │ │ │ │ │ ├── prism.component.ts │ │ │ │ │ └── prism.components.css │ │ │ │ └── token │ │ │ │ │ ├── token.component.html │ │ │ │ │ ├── token.component.spec.ts │ │ │ │ │ └── token.component.ts │ │ │ ├── prism.module.ts │ │ │ ├── themes │ │ │ │ ├── dracula.ts │ │ │ │ ├── index.ts │ │ │ │ └── night-owl-light.ts │ │ │ ├── types │ │ │ │ ├── index.ts │ │ │ │ ├── language.ts │ │ │ │ └── model.ts │ │ │ └── utils │ │ │ │ ├── index.ts │ │ │ │ ├── normalize-tokens.ts │ │ │ │ └── themes-to-dict.ts │ │ ├── public-api.ts │ │ └── test.ts │ │ ├── tsconfig.lib.json │ │ ├── tsconfig.lib.prod.json │ │ └── tsconfig.spec.json ├── scripts │ ├── .eslintrc │ ├── generate-language-colors.js │ └── package.json ├── src │ ├── _redirects │ ├── app │ │ ├── app-routing.module.ts │ │ ├── app.component.html │ │ ├── app.component.scss │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── auth │ │ │ ├── auth-routing.module.ts │ │ │ ├── auth.component.html │ │ │ ├── auth.component.scss │ │ │ ├── auth.component.ts │ │ │ ├── auth.module.ts │ │ │ ├── interfaces │ │ │ │ └── auth.ts │ │ │ ├── redirect │ │ │ │ └── redirect.component.ts │ │ │ └── services │ │ │ │ ├── auth.guard.spec.ts │ │ │ │ ├── auth.guard.ts │ │ │ │ ├── auth.service.spec.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── token.interceptor.ts │ │ │ │ └── token.service.ts │ │ ├── file-viewer │ │ │ ├── components │ │ │ │ ├── file-code │ │ │ │ │ ├── file-code.component.html │ │ │ │ │ ├── file-code.component.scss │ │ │ │ │ ├── file-code.component.spec.ts │ │ │ │ │ └── file-code.component.ts │ │ │ │ ├── file-explorer-about │ │ │ │ │ ├── file-explorer-about.component.html │ │ │ │ │ ├── file-explorer-about.component.scss │ │ │ │ │ ├── file-explorer-about.component.spec.ts │ │ │ │ │ └── file-explorer-about.component.ts │ │ │ │ └── file-text │ │ │ │ │ ├── file-text.component.html │ │ │ │ │ ├── file-text.component.scss │ │ │ │ │ ├── file-text.component.spec.ts │ │ │ │ │ └── file-text.component.ts │ │ │ ├── file-explorer-blob │ │ │ │ ├── file-explorer-blob.component.html │ │ │ │ ├── file-explorer-blob.component.scss │ │ │ │ ├── file-explorer-blob.component.spec.ts │ │ │ │ └── file-explorer-blob.component.ts │ │ │ ├── file-explorer-container │ │ │ │ ├── file-explorer-container.component.html │ │ │ │ ├── file-explorer-container.component.scss │ │ │ │ ├── file-explorer-container.component.spec.ts │ │ │ │ └── file-explorer-container.component.ts │ │ │ ├── file-explorer-nav │ │ │ │ ├── file-explorer-nav.component.html │ │ │ │ ├── file-explorer-nav.component.scss │ │ │ │ ├── file-explorer-nav.component.spec.ts │ │ │ │ └── file-explorer-nav.component.ts │ │ │ ├── file-explorer │ │ │ │ ├── file-explorer.component.html │ │ │ │ ├── file-explorer.component.scss │ │ │ │ ├── file-explorer.component.spec.ts │ │ │ │ └── file-explorer.component.ts │ │ │ ├── file-viewer-routing.module.ts │ │ │ ├── file-viewer.module.ts │ │ │ ├── file-viewer │ │ │ │ ├── file-viewer.component.html │ │ │ │ ├── file-viewer.component.scss │ │ │ │ ├── file-viewer.component.spec.ts │ │ │ │ └── file-viewer.component.ts │ │ │ ├── read-me │ │ │ │ ├── read-me.component.html │ │ │ │ ├── read-me.component.scss │ │ │ │ ├── read-me.component.spec.ts │ │ │ │ └── read-me.component.ts │ │ │ └── utils │ │ │ │ └── map-lanuage-ext.ts │ │ ├── fixtures │ │ │ └── repository.fixtures.ts │ │ ├── home │ │ │ ├── home-routing.module.ts │ │ │ ├── home.component.html │ │ │ ├── home.component.scss │ │ │ ├── home.component.spec.ts │ │ │ ├── home.component.ts │ │ │ ├── home.module.ts │ │ │ ├── nav-bar │ │ │ │ ├── nav-bar.component.html │ │ │ │ ├── nav-bar.component.scss │ │ │ │ ├── nav-bar.component.spec.ts │ │ │ │ └── nav-bar.component.ts │ │ │ ├── profile │ │ │ │ ├── org-profile │ │ │ │ │ ├── org-info │ │ │ │ │ │ ├── org-info.component.html │ │ │ │ │ │ ├── org-info.component.scss │ │ │ │ │ │ └── org-info.component.ts │ │ │ │ │ ├── org-profile.component.html │ │ │ │ │ ├── org-profile.component.scss │ │ │ │ │ └── org-profile.component.ts │ │ │ │ ├── profile-about │ │ │ │ │ ├── profile-about.component.html │ │ │ │ │ ├── profile-about.component.scss │ │ │ │ │ ├── profile-about.component.spec.ts │ │ │ │ │ └── profile-about.component.ts │ │ │ │ ├── profile-nav │ │ │ │ │ ├── profile-nav.component.html │ │ │ │ │ ├── profile-nav.component.scss │ │ │ │ │ ├── profile-nav.component.spec.ts │ │ │ │ │ └── profile-nav.component.ts │ │ │ │ ├── profile.component.html │ │ │ │ ├── profile.component.scss │ │ │ │ ├── profile.component.spec.ts │ │ │ │ ├── profile.component.ts │ │ │ │ └── user-profile │ │ │ │ │ ├── user-profile.component.html │ │ │ │ │ ├── user-profile.component.scss │ │ │ │ │ └── user-profile.component.ts │ │ │ └── user-gists │ │ │ │ ├── user-gists.component.html │ │ │ │ ├── user-gists.component.scss │ │ │ │ └── user-gists.component.ts │ │ ├── issues │ │ │ ├── components │ │ │ │ ├── issues-header │ │ │ │ │ ├── issues-header.component.html │ │ │ │ │ ├── issues-header.component.scss │ │ │ │ │ └── issues-header.component.ts │ │ │ │ ├── issues-list │ │ │ │ │ ├── issues-list.component.html │ │ │ │ │ └── issues-list.component.ts │ │ │ │ ├── issues.component.html │ │ │ │ ├── issues.component.scss │ │ │ │ └── issues.component.ts │ │ │ ├── issues-routing.module.ts │ │ │ └── issues.module.ts │ │ ├── organization │ │ │ └── services │ │ │ │ ├── organization.interfaces.ts │ │ │ │ ├── organization.service.spec.ts │ │ │ │ └── organization.service.ts │ │ ├── pull-requests │ │ │ ├── components │ │ │ │ ├── pull-request-card │ │ │ │ │ ├── pull-request-card.component.html │ │ │ │ │ ├── pull-request-card.component.scss │ │ │ │ │ ├── pull-request-card.component.spec.ts │ │ │ │ │ └── pull-request-card.component.ts │ │ │ │ ├── pull-requests-header │ │ │ │ │ ├── pull-requests-header.component.html │ │ │ │ │ ├── pull-requests-header.component.scss │ │ │ │ │ └── pull-requests-header.component.ts │ │ │ │ └── pull-requests-list │ │ │ │ │ ├── pull-requests-list.component.html │ │ │ │ │ ├── pull-requests-list.component.scss │ │ │ │ │ ├── pull-requests-list.component.spec.ts │ │ │ │ │ └── pull-requests-list.component.ts │ │ │ ├── pull-requests-routing.module.ts │ │ │ ├── pull-requests.component.html │ │ │ ├── pull-requests.component.scss │ │ │ ├── pull-requests.component.spec.ts │ │ │ ├── pull-requests.component.ts │ │ │ └── pull-requests.module.ts │ │ ├── repository │ │ │ ├── components │ │ │ │ ├── repo-header │ │ │ │ │ ├── repo-header.component.html │ │ │ │ │ ├── repo-header.component.scss │ │ │ │ │ ├── repo-header.component.ts │ │ │ │ │ ├── repo-heading │ │ │ │ │ │ ├── repo-heading.component.html │ │ │ │ │ │ ├── repo-heading.component.scss │ │ │ │ │ │ └── repo-heading.component.ts │ │ │ │ │ ├── repo-info │ │ │ │ │ │ ├── repo-info.component.html │ │ │ │ │ │ ├── repo-info.component.scss │ │ │ │ │ │ └── repo-info.component.ts │ │ │ │ │ └── repo-navigation │ │ │ │ │ │ ├── repo-navigation.component.html │ │ │ │ │ │ ├── repo-navigation.component.scss │ │ │ │ │ │ └── repo-navigation.component.ts │ │ │ │ ├── repository-details │ │ │ │ │ ├── repository-details.component.html │ │ │ │ │ ├── repository-details.component.scss │ │ │ │ │ ├── repository-details.component.spec.ts │ │ │ │ │ └── repository-details.component.ts │ │ │ │ └── top-repositories │ │ │ │ │ ├── top-repositories.component.html │ │ │ │ │ ├── top-repositories.component.scss │ │ │ │ │ └── top-repositories.component.ts │ │ │ ├── repository-routing.module.ts │ │ │ ├── repository.module.ts │ │ │ └── services │ │ │ │ ├── repository.interfaces.ts │ │ │ │ ├── repository.service.spec.ts │ │ │ │ └── repository.service.ts │ │ ├── shared │ │ │ ├── components │ │ │ │ ├── clear-filters-button │ │ │ │ │ ├── clear-filters-button.component.html │ │ │ │ │ ├── clear-filters-button.component.scss │ │ │ │ │ └── clear-filters-button.component.ts │ │ │ │ ├── filter-dropdown │ │ │ │ │ ├── filter-dropdown.component.html │ │ │ │ │ ├── filter-dropdown.component.scss │ │ │ │ │ └── filter-dropdown.component.ts │ │ │ │ ├── pagination │ │ │ │ │ ├── pagination.component.html │ │ │ │ │ ├── pagination.component.scss │ │ │ │ │ └── pagination.component.ts │ │ │ │ ├── repo-card │ │ │ │ │ ├── repo-card.component.html │ │ │ │ │ ├── repo-card.component.scss │ │ │ │ │ ├── repo-card.component.spec.ts │ │ │ │ │ └── repo-card.component.ts │ │ │ │ ├── repo-controls │ │ │ │ │ ├── repo-controls.component.html │ │ │ │ │ ├── repo-controls.component.scss │ │ │ │ │ ├── repo-controls.component.spec.ts │ │ │ │ │ └── repo-controls.component.ts │ │ │ │ ├── repo-issue-pull-card │ │ │ │ │ ├── repo-issue-pull-card.component.html │ │ │ │ │ ├── repo-issue-pull-card.component.scss │ │ │ │ │ └── repo-issue-pull-card.component.ts │ │ │ │ └── repo-list │ │ │ │ │ ├── repo-list.component.html │ │ │ │ │ ├── repo-list.component.scss │ │ │ │ │ ├── repo-list.component.spec.ts │ │ │ │ │ └── repo-list.component.ts │ │ │ ├── constants │ │ │ │ └── index.ts │ │ │ ├── directives │ │ │ │ ├── click-away.directive.spec.ts │ │ │ │ ├── click-away.directive.ts │ │ │ │ └── octicons.directive.ts │ │ │ ├── pipes │ │ │ │ ├── markdown.pipe.ts │ │ │ │ ├── relative-time.pipe.spec.ts │ │ │ │ └── relative-time.pipe.ts │ │ │ ├── shared.module.ts │ │ │ ├── styles │ │ │ │ ├── functions.scss │ │ │ │ └── variables.scss │ │ │ └── utils │ │ │ │ └── index.ts │ │ ├── state │ │ │ ├── app.reducer.ts │ │ │ ├── app.state.ts │ │ │ ├── auth │ │ │ │ ├── auth.actions.ts │ │ │ │ ├── auth.effects.spec.ts │ │ │ │ ├── auth.effects.ts │ │ │ │ ├── auth.reducer.ts │ │ │ │ ├── auth.selectors.ts │ │ │ │ ├── auth.state.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── profile │ │ │ │ ├── index.ts │ │ │ │ ├── profile.actions.ts │ │ │ │ ├── profile.effects.spec.ts │ │ │ │ ├── profile.effects.ts │ │ │ │ ├── profile.reducer.ts │ │ │ │ ├── profile.selectors.ts │ │ │ │ └── profile.state.ts │ │ │ ├── repository │ │ │ │ ├── index.ts │ │ │ │ ├── repository.actions.ts │ │ │ │ ├── repository.effects.spec.ts │ │ │ │ ├── repository.effects.ts │ │ │ │ ├── repository.reducer.ts │ │ │ │ ├── repository.selectors.ts │ │ │ │ └── repository.state.ts │ │ │ └── user │ │ │ │ ├── index.ts │ │ │ │ ├── user.actions.ts │ │ │ │ ├── user.effects.spec.ts │ │ │ │ ├── user.effects.ts │ │ │ │ ├── user.mappings.ts │ │ │ │ ├── user.reducer.ts │ │ │ │ ├── user.selectors.ts │ │ │ │ └── user.state.ts │ │ └── user │ │ │ └── services │ │ │ ├── user.service.spec.ts │ │ │ └── user.service.ts │ ├── assets │ │ ├── .gitkeep │ │ └── language-colors.json │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ ├── styles.scss │ └── test.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.spec.json └── typings.d.ts ├── cra-rxjs-styled-components ├── .editorconfig ├── .env.example ├── .gitignore ├── .husky │ ├── pre-commit │ └── pre-push ├── .prettierignore ├── .prettierrc ├── .storybook │ ├── main.js │ └── preview.js ├── README.md ├── package-lock.json ├── package.json ├── public │ ├── _redirects │ ├── index.html │ ├── manifest.json │ └── robots.txt ├── src │ ├── App.test.tsx │ ├── App.tsx │ ├── components │ │ ├── AuthGuard.tsx │ │ ├── Loading │ │ │ ├── LoadingBulletList.stories.tsx │ │ │ ├── LoadingBulletList.tsx │ │ │ ├── LoadingTextLine.stories.tsx │ │ │ ├── LoadingTextLine.tsx │ │ │ └── index.ts │ │ ├── clear-filter-and-sort-button │ │ │ ├── ClearFilterAndSortButtonText.styles.ts │ │ │ └── ClearFilterAndSortButtonText.tsx │ │ ├── details-dropdown │ │ │ ├── DetailsDropdown.stories.tsx │ │ │ ├── DetailsDropdown.style.tsx │ │ │ └── DetailsDropdown.tsx │ │ ├── dropdown │ │ │ ├── Dropdown.styles.tsx │ │ │ └── Dropdown.tsx │ │ ├── empty-result │ │ │ ├── EmptyResult.styles.ts │ │ │ └── EmptyResult.tsx │ │ ├── file-explorer │ │ │ ├── FileExplorer.stories.tsx │ │ │ ├── FileExplorer.styles.tsx │ │ │ └── FileExplorer.tsx │ │ ├── file-viewer │ │ │ ├── FileCode.tsx │ │ │ ├── FileText.tsx │ │ │ ├── FileViewer.data.tsx │ │ │ ├── FileViewer.stories.tsx │ │ │ ├── FileViewer.styles.tsx │ │ │ ├── FileViewer.view.tsx │ │ │ └── mapExtensionToLanguage.ts │ │ ├── filter-dropdown │ │ │ ├── FilterDropdown.styles.ts │ │ │ └── FilterDropdown.tsx │ │ ├── header │ │ │ ├── Header.stories.tsx │ │ │ ├── Header.styles.tsx │ │ │ └── Header.tsx │ │ ├── icons │ │ │ ├── BookIcon.tsx │ │ │ ├── CloseIcon.tsx │ │ │ ├── ClosedIssueIcon.tsx │ │ │ ├── ClosedPRIcon.tsx │ │ │ ├── CodeIcon.tsx │ │ │ ├── CorrectIcon.tsx │ │ │ ├── DirectoryIcon.tsx │ │ │ ├── DropdownIcon.tsx │ │ │ ├── EyeIcon.tsx │ │ │ ├── FileIcon.tsx │ │ │ ├── ForkIcon.tsx │ │ │ ├── IssueIcon.tsx │ │ │ ├── IssuesIcon.tsx │ │ │ ├── LinkIcon.tsx │ │ │ ├── MergedPRIcon.tsx │ │ │ ├── MessageIcon.tsx │ │ │ ├── OpenIssueIcon.tsx │ │ │ ├── OpenPRIcon.tsx │ │ │ ├── PrIcon.tsx │ │ │ ├── PullRequestIcon.tsx │ │ │ ├── ReadmeBookIcon.tsx │ │ │ ├── ReadmeListIcon.tsx │ │ │ ├── RepoBookIcon.tsx │ │ │ ├── RepoIcon.tsx │ │ │ ├── StarIcon.tsx │ │ │ ├── TwitterIcon.tsx │ │ │ ├── icons.stories.tsx │ │ │ └── index.tsx │ │ ├── issue-pr-card │ │ │ ├── IssuePRCard.styles.tsx │ │ │ ├── IssuePRCard.tsx │ │ │ └── IssuePRCardInfo.tsx │ │ ├── layouts │ │ │ ├── Layout.tsx │ │ │ ├── ProfileLayout.tsx │ │ │ ├── RepoLayoutPage.tsx │ │ │ └── Sidebar.tsx │ │ ├── misc │ │ │ ├── BranchLogo.tsx │ │ │ ├── GitHubLogo.tsx │ │ │ ├── StarLogo.tsx │ │ │ └── privacy-badge │ │ │ │ ├── PrivacyBadge.styles.tsx │ │ │ │ └── PrivacyBadge.tsx │ │ ├── paginate-button │ │ │ ├── PaginateButton.stories.tsx │ │ │ ├── PaginateButton.style.tsx │ │ │ └── PaginateButton.tsx │ │ ├── pagination │ │ │ ├── Pagination.styles.tsx │ │ │ └── Pagination.tsx │ │ ├── pr-issue-tab │ │ │ ├── IssuePRTabHeader.styles.tsx │ │ │ └── IssuePRTabHeader.tsx │ │ ├── pull-request │ │ │ ├── PullRequest.stories.tsx │ │ │ ├── getPRIcon.tsx │ │ │ ├── pull-request │ │ │ │ ├── PullRequest.data.tsx │ │ │ │ ├── PullRequest.style.tsx │ │ │ │ ├── PullRequest.type.ts │ │ │ │ └── PullRequest.view.tsx │ │ │ └── types.ts │ │ ├── readme │ │ │ ├── Readme.stories.tsx │ │ │ ├── Readme.styles.tsx │ │ │ ├── Readme.test.tsx │ │ │ └── Readme.tsx │ │ ├── repo-about │ │ │ ├── RepoAbout.stories.tsx │ │ │ ├── RepoAbout.styles.tsx │ │ │ └── RepoAbout.tsx │ │ ├── repo-card │ │ │ ├── LoadingRepoCard.tsx │ │ │ ├── RepoCard.stories.tsx │ │ │ ├── RepoCard.styles.tsx │ │ │ └── RepoCard.tsx │ │ ├── repo-filter │ │ │ ├── FilterText.tsx │ │ │ ├── RepoFilter.styles.ts │ │ │ ├── Repofilter.tsx │ │ │ ├── SearchInput.tsx │ │ │ └── data.ts │ │ ├── repo-issues │ │ │ └── Issues │ │ │ │ ├── Issue.type.ts │ │ │ │ ├── Issues.tsx │ │ │ │ ├── Issues.view.styles.tsx │ │ │ │ └── Issues.view.tsx │ │ ├── repo-meta │ │ │ ├── MetaIcon.tsx │ │ │ ├── RepoMeta.styles.tsx │ │ │ └── RepoMeta.tsx │ │ ├── repo-page │ │ │ ├── RepoPage.data.tsx │ │ │ └── RepoPage.error.tsx │ │ ├── sub-header │ │ │ ├── SubHeader.styles.tsx │ │ │ └── SubHeader.tsx │ │ ├── tab-nav │ │ │ ├── TabNav.styles.ts │ │ │ └── TabNav.tsx │ │ ├── user-gists │ │ │ ├── UserGist.tsx │ │ │ └── UserGists.styles.tsx │ │ ├── user-profile │ │ │ ├── LoadingProfile.tsx │ │ │ ├── OrgList.styles.tsx │ │ │ ├── OrgList.tsx │ │ │ ├── SocialIcons.tsx │ │ │ ├── UserProfile.styles.tsx │ │ │ └── UserProfile.tsx │ │ └── user-repos │ │ │ ├── UserRepos.styles.tsx │ │ │ └── UserRepos.tsx │ ├── constants │ │ ├── auth.constants.ts │ │ ├── colors.tsx │ │ ├── data.ts │ │ └── url.constants.ts │ ├── context │ │ ├── RepoContext.tsx │ │ ├── RepoFilterContext.tsx │ │ └── UserProvider.tsx │ ├── helpers │ │ ├── buildPrIssueResolution.ts │ │ ├── colours.ts │ │ ├── dynamicColor.ts │ │ ├── extract-branch-count.ts │ │ ├── format-distance.ts │ │ ├── getPullsState.ts │ │ ├── languageFilterFunction.ts │ │ ├── objectToQueryString.ts │ │ ├── parseSortParams.ts │ │ ├── replaceSpaceWithPlus.ts │ │ ├── searchFunction.ts │ │ ├── sortRepoFunction.ts │ │ └── typeFilterFunction.ts │ ├── hooks │ │ ├── auth │ │ │ ├── from-fetch-with-auth.ts │ │ │ ├── use-set-token.ts │ │ │ ├── use-sign-in.ts │ │ │ └── use-sign-out.ts │ │ ├── gists │ │ │ └── use-gists.ts │ │ ├── repo-blob │ │ │ └── use-repo-blob.ts │ │ ├── repo-explorer │ │ │ └── use-repo-explorer.ts │ │ ├── repositories │ │ │ ├── use-repo-sort-filter.ts │ │ │ └── use-repos.ts │ │ ├── useIssuesPRs.tsx │ │ └── user-repositories │ │ │ └── use-user-repositories.ts │ ├── index.css │ ├── index.tsx │ ├── interfaces │ │ ├── auth.interfaces.ts │ │ ├── gists.interfaces.ts │ │ ├── org.interface.ts │ │ └── repositories.interfaces.ts │ ├── react-app-env.d.ts │ ├── reportWebVitals.ts │ ├── routes │ │ ├── Index.tsx │ │ ├── orgs.tsx │ │ ├── profile.tsx │ │ ├── redirect.tsx │ │ ├── repo │ │ │ ├── index.tsx │ │ │ ├── repository-code │ │ │ │ ├── index.tsx │ │ │ │ ├── repository-blob │ │ │ │ │ └── repository-blob.tsx │ │ │ │ └── repository-tree │ │ │ │ │ └── repository-tree.tsx │ │ │ ├── repository-issues.tsx │ │ │ └── repository-pull-request.tsx │ │ ├── sign-in.tsx │ │ └── user-top-repos.tsx │ ├── setupTests.ts │ └── types │ │ └── types.ts ├── tsconfig.json └── tsconfig.paths.json ├── expo-zustand-styled-components ├── .env.example ├── .eslintignore ├── .eslintrc.json ├── .gitignore ├── .prettierignore ├── .prettierrc ├── App.tsx ├── README.md ├── __mocks__ │ └── @react-native-async-storage │ │ └── async-storage.ts ├── app.json ├── assets │ ├── about-icon.png │ ├── adaptive-icon.png │ ├── arrow-down-icon.png │ ├── favicon.png │ ├── fonts │ │ └── courier.ttf │ ├── icon.png │ ├── reload-icon.png │ ├── splash.png │ └── starter-logo.png ├── babel.config.js ├── functions │ ├── callback │ │ └── callback.ts │ └── signin │ │ └── signin.ts ├── netlify.toml ├── package.json ├── setup-tests.ts ├── src │ ├── components │ │ ├── BranchNavigation │ │ │ ├── BranchNavigation.styles.tsx │ │ │ ├── BranchNavigation.test.tsx │ │ │ ├── BranchNavigation.tsx │ │ │ └── index.ts │ │ ├── Button │ │ │ ├── Button.styles.ts │ │ │ ├── Button.test.tsx │ │ │ ├── Button.tsx │ │ │ └── index.ts │ │ ├── FileTree │ │ │ ├── FileTree.styles.ts │ │ │ ├── FileTree.test.tsx │ │ │ ├── FileTree.tsx │ │ │ └── index.ts │ │ ├── FileViewer │ │ │ ├── FIleCode │ │ │ │ ├── FileCode.styles.ts │ │ │ │ ├── FileCode.tsx │ │ │ │ └── index.ts │ │ │ ├── FileText │ │ │ │ ├── FileText.styles.ts │ │ │ │ ├── FileText.tsx │ │ │ │ └── index.ts │ │ │ ├── FileViewer.styles.ts │ │ │ ├── FileViewer.test.tsx │ │ │ ├── FileViewer.tsx │ │ │ ├── font.ts │ │ │ ├── index.ts │ │ │ └── mapExtensionToLanguage.ts │ │ ├── FilterDropdown │ │ │ ├── Dropdown.tsx │ │ │ ├── DropdownModal.tsx │ │ │ ├── FilterDropdown.styles.ts │ │ │ ├── FilterDropdown.test.tsx │ │ │ ├── FilterDropdown.tsx │ │ │ └── index.ts │ │ ├── Header │ │ │ ├── Header.spec.tsx │ │ │ ├── Header.styles.ts │ │ │ ├── Header.tsx │ │ │ └── index.ts │ │ ├── Icons │ │ │ ├── BranchLogo.tsx │ │ │ ├── CaretIcon.tsx │ │ │ ├── CloseIcon.tsx │ │ │ ├── ClosedIssueIcon.tsx │ │ │ ├── ClosedPrIcon.tsx │ │ │ ├── CodeIcon.tsx │ │ │ ├── CommentIcon.tsx │ │ │ ├── CorrectIcon.tsx │ │ │ ├── DocumentIcon.tsx │ │ │ ├── EyeIcon.tsx │ │ │ ├── FolderIcon.tsx │ │ │ ├── GitBranchIcon.tsx │ │ │ ├── GitHubLogo.tsx │ │ │ ├── IssueIcon.tsx │ │ │ ├── IssuesIcon.tsx │ │ │ ├── LinkIcon.tsx │ │ │ ├── LocationIcon.tsx │ │ │ ├── MergedPrIcon.tsx │ │ │ ├── OfficeBuildingIcon.tsx │ │ │ ├── PadlockIcon.tsx │ │ │ ├── PullRequestIcon.tsx │ │ │ ├── ReadmeBookIcon.tsx │ │ │ ├── ReadmeListIcon.tsx │ │ │ ├── RepoBookIcon.tsx │ │ │ ├── RepoIcon.tsx │ │ │ ├── StarIcon.tsx │ │ │ ├── StarLogo.tsx │ │ │ ├── TwitterIcon.tsx │ │ │ ├── UsersIcon.tsx │ │ │ └── index.ts │ │ ├── IssuePullRequestCard │ │ │ ├── IssuePullRequestCard.spec.tsx │ │ │ ├── IssuePullRequestCard.styles.ts │ │ │ ├── IssuePullRequestCard.tsx │ │ │ ├── data.ts │ │ │ └── index.ts │ │ ├── IssuesPRClearFilter │ │ │ ├── IssuesPRClearFilter.spec.tsx │ │ │ ├── IssuesPRClearFilter.styles.ts │ │ │ ├── IssuesPRClearFilter.tsx │ │ │ └── index.ts │ │ ├── IssuesTabView │ │ │ ├── IssuesTabView.spec.tsx │ │ │ ├── IssuesTabView.styles.ts │ │ │ ├── IssuesTabView.tsx │ │ │ ├── data.ts │ │ │ └── index.ts │ │ ├── LinkButton │ │ │ ├── LinkButton.spec.tsx │ │ │ └── LinkButton.tsx │ │ ├── LoaderErrorView │ │ │ ├── LoaderErrorView.spec.tsx │ │ │ ├── LoaderErrorView.tsx │ │ │ └── index.ts │ │ ├── Organization │ │ │ ├── About │ │ │ │ ├── About.spec.tsx │ │ │ │ ├── About.styles.ts │ │ │ │ ├── About.tsx │ │ │ │ └── index.ts │ │ │ ├── Repositories │ │ │ │ ├── Repositories.spec.tsx │ │ │ │ ├── Repositories.tsx │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── PRAndIssueHeader │ │ │ ├── PRAndIssueHeader.spec.tsx │ │ │ ├── PRAndIssueHeader.styles.ts │ │ │ ├── PRAndIssueHeader.tsx │ │ │ ├── index.ts │ │ │ └── utils.ts │ │ ├── PRAndIssueLoaderSkeleton │ │ │ ├── PRAndIssueLoaderSkeleton.styles.ts │ │ │ ├── PRAndIssueLoaderSkeleton.tsx │ │ │ └── index.ts │ │ ├── Pagination │ │ │ ├── Pagination.spec.tsx │ │ │ ├── Pagination.styles.ts │ │ │ ├── Pagination.tsx │ │ │ └── index.ts │ │ ├── PrivacyBadge │ │ │ ├── PrivacyBadge.spec.tsx │ │ │ ├── PrivacyBadge.style.ts │ │ │ ├── PrivacyBadge.tsx │ │ │ └── index.ts │ │ ├── Profile │ │ │ ├── Repositories │ │ │ │ ├── Repositories.spec.tsx │ │ │ │ ├── Repositories.styles.ts │ │ │ │ ├── Repositories.tsx │ │ │ │ ├── data.ts │ │ │ │ └── index.ts │ │ │ └── UserCard │ │ │ │ ├── OrgList.spec.tsx │ │ │ │ ├── OrgList.styles.ts │ │ │ │ ├── OrgList.tsx │ │ │ │ ├── SocialCounts.spec.tsx │ │ │ │ ├── SocialCounts.tsx │ │ │ │ ├── UserCard.spec.tsx │ │ │ │ ├── UserCard.styles.ts │ │ │ │ ├── UserCard.tsx │ │ │ │ ├── data.ts │ │ │ │ └── index.ts │ │ ├── PullRequestsTabView │ │ │ ├── PullRequestsTabView.spec.tsx │ │ │ ├── PullRequestsTabView.styles.ts │ │ │ ├── PullRequestsTabView.tsx │ │ │ └── index.ts │ │ ├── RepoAbout │ │ │ ├── RepoAbout.spec.tsx │ │ │ ├── RepoAbout.styles.tsx │ │ │ ├── RepoAbout.tsx │ │ │ └── index.ts │ │ ├── RepoActionButtons │ │ │ ├── CountButtonGroup.spec.tsx │ │ │ ├── CountButtonGroup.tsx │ │ │ ├── RepoActionButtons.spec.tsx │ │ │ ├── RepoActionButtons.styles.ts │ │ │ ├── RepoActionButtons.tsx │ │ │ └── index.ts │ │ ├── RepoCard │ │ │ ├── RepoCard.spec.tsx │ │ │ ├── RepoCard.styles.ts │ │ │ ├── RepoCard.tsx │ │ │ ├── RepoMeta.tsx │ │ │ └── index.ts │ │ ├── RepoFilter │ │ │ ├── FilterText.tsx │ │ │ ├── RepoFilter.spec.tsx │ │ │ ├── RepoFilter.styles.ts │ │ │ ├── RepoFilter.tsx │ │ │ ├── SearchInput.spec.tsx │ │ │ ├── SearchInput.tsx │ │ │ ├── data.ts │ │ │ └── index.ts │ │ ├── RepoHeading │ │ │ ├── PrivacyIcon.spec.tsx │ │ │ ├── PrivacyIcon.tsx │ │ │ ├── RepoHeading.spec.tsx │ │ │ ├── RepoHeading.styles.ts │ │ │ ├── RepoHeading.tsx │ │ │ └── index.ts │ │ ├── RepoLayout │ │ │ ├── RepoLayout.styles.tsx │ │ │ ├── RepoLayout.tsx │ │ │ └── index.ts │ │ ├── RepoReadme │ │ │ ├── RepoReadme.styles.tsx │ │ │ ├── RepoReadme.tsx │ │ │ └── index.ts │ │ ├── RepoSubHeader │ │ │ ├── RepoSubHeader.styles.ts │ │ │ ├── RepoSubHeader.tsx │ │ │ ├── index.ts │ │ │ └── tabList.ts │ │ ├── TabNavigation │ │ │ ├── TabNavigation.spec.tsx │ │ │ ├── TabNavigation.styles.ts │ │ │ ├── TabNavigation.tsx │ │ │ └── index.ts │ │ └── UserDropdown │ │ │ ├── UserDropdown.spec.tsx │ │ │ ├── UserDropdown.styles.ts │ │ │ ├── UserDropdown.tsx │ │ │ └── index.ts │ ├── hooks │ │ ├── stores │ │ │ ├── index.ts │ │ │ ├── useAppStore.ts │ │ │ ├── useAuthStore.ts │ │ │ ├── useGistsStore.ts │ │ │ ├── useIssuesStore.ts │ │ │ ├── useOrgStore.ts │ │ │ ├── usePRAndIssueHeaderStore.ts │ │ │ ├── usePullRequestsStore.ts │ │ │ ├── useRepoFilterStore.ts │ │ │ ├── useRepoInfoStore.ts │ │ │ ├── useTopReposStore.ts │ │ │ └── useUserReposStore.ts │ │ ├── useCachedResources.ts │ │ ├── useLayoutDropdown.ts │ │ └── useRefs.ts │ ├── navigation │ │ ├── LinkingConfiguration.ts │ │ ├── app │ │ │ ├── RepoNavigator │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ ├── auth │ │ │ └── index.tsx │ │ └── index.tsx │ ├── screens │ │ ├── Home │ │ │ ├── Home.styles.ts │ │ │ ├── Home.tsx │ │ │ └── index.ts │ │ ├── Login │ │ │ ├── Login.styles.ts │ │ │ ├── Login.tsx │ │ │ └── index.tsx │ │ ├── Organization │ │ │ ├── Organization.styles.ts │ │ │ ├── Organization.tsx │ │ │ └── index.ts │ │ ├── Profile │ │ │ ├── Profile.styles.ts │ │ │ ├── Profile.tsx │ │ │ └── index.ts │ │ └── Repository │ │ │ ├── Blob │ │ │ ├── Blob.tsx │ │ │ └── index.ts │ │ │ ├── Code │ │ │ ├── Code.tsx │ │ │ └── index.ts │ │ │ ├── Issues │ │ │ ├── Issues.style.tsx │ │ │ ├── Issues.tsx │ │ │ └── index.ts │ │ │ ├── Pull-Requests │ │ │ ├── Pull-Requests.style.tsx │ │ │ ├── Pull-Requests.tsx │ │ │ └── index.ts │ │ │ ├── Repository.styles.tsx │ │ │ └── Tree │ │ │ ├── Tree.tsx │ │ │ └── index.ts │ ├── services │ │ ├── api.ts │ │ ├── get-gists.ts │ │ ├── get-org-repos.ts │ │ ├── get-repo-file.ts │ │ ├── get-repo-info.ts │ │ ├── get-repo-issues.ts │ │ ├── get-repo-pull-requests.ts │ │ ├── get-repo-readme.ts │ │ ├── get-repo-tree.ts │ │ ├── get-top-repos.ts │ │ ├── get-user-profile.ts │ │ ├── get-user-repos.ts │ │ ├── get-viewer-info.ts │ │ ├── getGists.ts │ │ └── queries │ │ │ ├── gists.ts │ │ │ ├── issues.ts │ │ │ ├── org-repos.ts │ │ │ ├── pull-requests.ts │ │ │ ├── repo-file.ts │ │ │ ├── repo-info.ts │ │ │ ├── repo-readme.ts │ │ │ ├── repo-tree.ts │ │ │ ├── top-repos.ts │ │ │ ├── user-profile.ts │ │ │ ├── user-repos.ts │ │ │ └── viewer-info.ts │ ├── types │ │ ├── gists-type.ts │ │ ├── issues-type.ts │ │ ├── label-type.ts │ │ ├── org-repos.ts │ │ ├── pull-requests-type.ts │ │ ├── repo-file-type.ts │ │ ├── repo-info-type.ts │ │ ├── repo-readme-type.ts │ │ ├── repo-tree-type.ts │ │ ├── top-repos-type.ts │ │ ├── user-profile-type.ts │ │ └── user-repos-type.ts │ └── utils │ │ ├── breakpoints.ts │ │ ├── calculateDropdownHeight.spec.ts │ │ ├── calculateDropdownHeight.ts │ │ ├── constants.ts │ │ ├── dynamicColor.spec.ts │ │ ├── dynamicColor.ts │ │ ├── getLanguages.spec.ts │ │ ├── getLanguages.ts │ │ ├── language-colors.spec.ts │ │ ├── language-colors.ts │ │ ├── languageFilterFunction.spec.ts │ │ ├── languageFilterFunction.ts │ │ ├── parseSortParams.spec.ts │ │ ├── parseSortParams.ts │ │ ├── searchFunction.spec.ts │ │ ├── searchFunction.ts │ │ ├── sortRepoFunction.spec.ts │ │ ├── sortRepoFunction.ts │ │ ├── style-variables.ts │ │ ├── typeFilterFunction.spec.ts │ │ ├── typeFilterFunction.ts │ │ ├── useRepoSortFiler.ts │ │ └── useRepoSortFilter.test.ts ├── tsconfig.json ├── types.tsx ├── types │ └── env.d.ts └── webpack.config.js ├── github-schema.graphql ├── next-react-query-tailwind ├── .editorconfig ├── .env.example ├── .eslintignore ├── .eslintrc.json ├── .gitignore ├── .prettierrc ├── .storybook │ ├── main.ts │ └── preview.ts ├── .vscode │ └── settings.json ├── README.md ├── __mocks__ │ ├── fileMock.js │ ├── nextImage.jsx │ ├── nextLink.jsx │ └── styleMock.js ├── codegen.ts ├── github-schema-loader.js ├── globals.d.ts ├── jest.config.js ├── jest.setup.js ├── middleware.ts ├── netlify.toml ├── next-env.d.ts ├── next.config.js ├── package.json ├── postcss.config.js ├── public │ ├── favicon.ico │ ├── mockServiceWorker.js │ └── vercel.svg ├── src │ ├── components │ │ ├── FileExplorer │ │ │ ├── FileExplorer.data.tsx │ │ │ ├── FileExplorer.mocks.ts │ │ │ ├── FileExplorer.module.css │ │ │ ├── FileExplorer.query.ts │ │ │ ├── FileExplorer.stories.tsx │ │ │ ├── FileExplorer.test.tsx │ │ │ ├── FileExplorer.view.tsx │ │ │ ├── index.ts │ │ │ ├── parseQueryData.ts │ │ │ └── types.ts │ │ ├── FileViewer │ │ │ ├── FileCode.tsx │ │ │ ├── FileText.tsx │ │ │ ├── FileViewer.data.tsx │ │ │ ├── FileViewer.mocks.tsx │ │ │ ├── FileViewer.module.css │ │ │ ├── FileViewer.query.ts │ │ │ ├── FileViewer.stories.tsx │ │ │ ├── FileViewer.test.tsx │ │ │ ├── FileViewer.view.tsx │ │ │ ├── index.ts │ │ │ └── mapExtensionToLanguage.ts │ │ ├── FilterDropdown │ │ │ ├── FilterDropdown.module.css │ │ │ ├── FilterDropdown.tsx │ │ │ └── index.ts │ │ ├── GitHubLogo │ │ │ ├── GitHubLogo.tsx │ │ │ └── index.ts │ │ ├── Icons │ │ │ ├── ClosedPullRequestIcon.tsx │ │ │ ├── EyeIcon.tsx │ │ │ ├── GitBranchIcon.tsx │ │ │ ├── GitRepoIcon.tsx │ │ │ ├── MergedPullRequestIcon.tsx │ │ │ ├── PullRequestIcon.tsx │ │ │ ├── TOCIcon.tsx │ │ │ ├── TwitterIcon.tsx │ │ │ └── index.ts │ │ ├── IssueFilters │ │ │ ├── IssueFilters.module.css │ │ │ ├── IssueFilters.tsx │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ └── useIssueFilters.tsx │ │ ├── IssuesContainer │ │ │ ├── IssuesContainer.module.css │ │ │ ├── IssuesContainer.tsx │ │ │ └── index.ts │ │ ├── IssuesEmpty │ │ │ ├── IssuesEmpty.module.css │ │ │ ├── IssuesEmpty.tsx │ │ │ └── index.ts │ │ ├── IssuesSkeleton │ │ │ ├── IssuesSkeleton.tsx │ │ │ └── index.ts │ │ ├── Loading │ │ │ ├── LoadingBulletList.stories.tsx │ │ │ ├── LoadingBulletList.tsx │ │ │ ├── LoadingPulseDots.stories.tsx │ │ │ ├── LoadingPulseDots.tsx │ │ │ ├── LoadingTextLine.stories.tsx │ │ │ ├── LoadingTextLine.tsx │ │ │ └── index.ts │ │ ├── NavBar │ │ │ ├── NavBar.module.css │ │ │ ├── NavBar.stories.tsx │ │ │ ├── NavBar.tsx │ │ │ └── index.ts │ │ ├── OrgProfile │ │ │ ├── OrgProfile.data.tsx │ │ │ ├── OrgProfile.mocks.ts │ │ │ ├── OrgProfile.query.ts │ │ │ ├── OrgProfile.stories.tsx │ │ │ ├── OrgProfile.view.tsx │ │ │ └── index.ts │ │ ├── Pagination │ │ │ ├── Pagination.module.css │ │ │ ├── Pagination.tsx │ │ │ └── index.ts │ │ ├── PrivacyBadge │ │ │ ├── PrivacyBadge.module.css │ │ │ ├── PrivacyBadge.tsx │ │ │ └── index.ts │ │ ├── ProfileNav │ │ │ ├── ProfileNav.tsx │ │ │ ├── index.ts │ │ │ └── tabList.tsx │ │ ├── ProfilePage │ │ │ ├── ProfilePage.tsx │ │ │ └── index.ts │ │ ├── RepoAboutWidget │ │ │ ├── Description.tsx │ │ │ ├── HomepageUrl.tsx │ │ │ ├── RepoAboutWidget.module.css │ │ │ ├── RepoAboutWidget.stories.tsx │ │ │ ├── RepoAboutWidget.tsx │ │ │ └── Topics.tsx │ │ ├── RepoActionButtons │ │ │ ├── CountButtonGroup.tsx │ │ │ ├── RepoActionButtons.module.css │ │ │ ├── RepoActionButtons.stories.tsx │ │ │ ├── RepoActionButtons.tsx │ │ │ └── index.ts │ │ ├── RepoFilters │ │ │ ├── FilterDropdown.module.css │ │ │ ├── FilterDropdown.tsx │ │ │ ├── RepoFilters.module.css │ │ │ ├── RepoFilters.test.tsx │ │ │ ├── RepoFilters.tsx │ │ │ ├── index.ts │ │ │ └── useRepoFilters.tsx │ │ ├── RepoHeader │ │ │ ├── RepoHeader.module.css │ │ │ ├── RepoHeader.stories.tsx │ │ │ ├── RepoHeader.tsx │ │ │ ├── index.ts │ │ │ └── tabList.tsx │ │ ├── RepoHeading │ │ │ ├── PrivacyIcon.tsx │ │ │ ├── RepoHeading.module.css │ │ │ ├── RepoHeading.stories.tsx │ │ │ ├── RepoHeading.tsx │ │ │ └── index.ts │ │ ├── RepoIssues │ │ │ ├── RepoIssues.data.tsx │ │ │ ├── RepoIssues.mocks.ts │ │ │ ├── RepoIssues.module.css │ │ │ ├── RepoIssues.query.ts │ │ │ ├── RepoIssues.stories.tsx │ │ │ ├── RepoIssues.test.tsx │ │ │ ├── RepoIssues.view.tsx │ │ │ ├── index.ts │ │ │ ├── parseQuery.ts │ │ │ └── types.ts │ │ ├── RepoMeta │ │ │ ├── RepoMeta.module.css │ │ │ ├── RepoMeta.tsx │ │ │ └── index.ts │ │ ├── RepoNavigation │ │ │ ├── RepoNavigation.module.css │ │ │ ├── RepoNavigation.stories.tsx │ │ │ ├── RepoNavigation.tsx │ │ │ └── index.ts │ │ ├── RepoPage │ │ │ ├── RenderContextValue.tsx │ │ │ ├── RepoPage.data.tsx │ │ │ ├── RepoPage.error.tsx │ │ │ ├── RepoPage.mocks.ts │ │ │ ├── RepoPage.query.ts │ │ │ ├── RepoPage.stories.tsx │ │ │ ├── RepoPage.test.tsx │ │ │ ├── index.ts │ │ │ └── parseTopics.ts │ │ ├── RepoPulls │ │ │ ├── RepoPulls.data.tsx │ │ │ ├── RepoPulls.mocks.ts │ │ │ ├── RepoPulls.query.ts │ │ │ ├── RepoPulls.stories.tsx │ │ │ ├── RepoPulls.test.tsx │ │ │ ├── RepoPulls.view.tsx │ │ │ ├── index.ts │ │ │ ├── parseQuery.ts │ │ │ └── types.ts │ │ ├── RepoReadMe │ │ │ ├── Empty.tsx │ │ │ ├── RepoReadMe.data.tsx │ │ │ ├── RepoReadMe.mocks.ts │ │ │ ├── RepoReadMe.module.css │ │ │ ├── RepoReadMe.query.ts │ │ │ ├── RepoReadMe.stories.tsx │ │ │ ├── RepoReadMe.test.tsx │ │ │ ├── RepoReadMe.view.tsx │ │ │ ├── index.ts │ │ │ └── parseQuery.ts │ │ ├── TabNavigation │ │ │ ├── TabNavigation.module.css │ │ │ ├── TabNavigation.stories.tsx │ │ │ ├── TabNavigation.tsx │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── UserDropdown │ │ │ ├── UserDropdown.data.tsx │ │ │ ├── UserDropdown.mocks.ts │ │ │ ├── UserDropdown.module.css │ │ │ ├── UserDropdown.query.ts │ │ │ ├── UserDropdown.stories.tsx │ │ │ ├── UserDropdown.test.tsx │ │ │ ├── UserDropdown.view.tsx │ │ │ └── index.ts │ │ ├── UserGists │ │ │ ├── Container.tsx │ │ │ ├── UserGists.data.tsx │ │ │ ├── UserGists.mocks.ts │ │ │ ├── UserGists.module.css │ │ │ ├── UserGists.query.ts │ │ │ ├── UserGists.stories.tsx │ │ │ ├── UserGists.test.tsx │ │ │ ├── UserGists.view.tsx │ │ │ ├── parseQuery.ts │ │ │ └── types.ts │ │ ├── UserProfile │ │ │ ├── LoadingProfile.stories.tsx │ │ │ ├── LoadingProfile.tsx │ │ │ ├── OrgList.module.css │ │ │ ├── OrgList.tsx │ │ │ ├── UserProfile.data.tsx │ │ │ ├── UserProfile.mocks.ts │ │ │ ├── UserProfile.module.css │ │ │ ├── UserProfile.query.ts │ │ │ ├── UserProfile.stories.tsx │ │ │ ├── UserProfile.test.tsx │ │ │ ├── UserProfile.view.tsx │ │ │ ├── index.ts │ │ │ ├── parseQuery.ts │ │ │ └── types.ts │ │ ├── UserRepos │ │ │ ├── LoadingRepos.stories.tsx │ │ │ ├── LoadingRepos.tsx │ │ │ ├── OrgRepos.query.ts │ │ │ ├── UserRepos.data.tsx │ │ │ ├── UserRepos.mocks.ts │ │ │ ├── UserRepos.module.css │ │ │ ├── UserRepos.query.ts │ │ │ ├── UserRepos.stories.tsx │ │ │ ├── UserRepos.test.tsx │ │ │ ├── UserRepos.view.tsx │ │ │ ├── filterRepos.ts │ │ │ ├── getLanguages.ts │ │ │ ├── index.ts │ │ │ ├── parseQuery.ts │ │ │ ├── types.ts │ │ │ └── useOrgOrUserQuery.ts │ │ └── UserTopRepos │ │ │ ├── UserTopRepos.data.tsx │ │ │ ├── UserTopRepos.mocks.ts │ │ │ ├── UserTopRepos.module.css │ │ │ ├── UserTopRepos.query.ts │ │ │ ├── UserTopRepos.stories.tsx │ │ │ ├── UserTopRepos.view.tsx │ │ │ ├── UserTopsRepos.test.tsx │ │ │ ├── index.ts │ │ │ ├── parseQuery.ts │ │ │ └── types.ts │ ├── context │ │ └── RepoContext.tsx │ ├── lib │ │ ├── gqlClient.ts │ │ ├── jwt.ts │ │ ├── mswServer.ts │ │ ├── parseError.ts │ │ ├── pathUtils.ts │ │ ├── testUtils.tsx │ │ └── withAuthRedirect.ts │ ├── pages │ │ ├── [owner] │ │ │ ├── [name] │ │ │ │ ├── blob │ │ │ │ │ └── [branch] │ │ │ │ │ │ └── [...path].tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── issues.tsx │ │ │ │ ├── pulls.tsx │ │ │ │ └── tree │ │ │ │ │ └── [branch] │ │ │ │ │ ├── [...path].tsx │ │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ ├── _app.tsx │ │ ├── api │ │ │ ├── auth │ │ │ │ └── [...nextauth].ts │ │ │ ├── graphql.ts │ │ │ └── user.ts │ │ ├── auth │ │ │ └── signin.tsx │ │ ├── index.tsx │ │ └── orgs │ │ │ └── [login].tsx │ └── styles │ │ └── globals.css ├── tailwind.config.js ├── tsconfig.json └── yarn.lock ├── nuxt-pinia-tailwind ├── .babelrc ├── .editorconfig ├── .env.example ├── .eslintrc.js ├── .gitignore ├── .husky │ ├── commit-msg │ ├── common.sh │ └── pre-commit ├── .prettierignore ├── .prettierrc ├── README.md ├── commitlint.config.js ├── components │ ├── PrivacyBadge │ │ └── PrivacyBadge.vue │ ├── ProfileNav │ │ └── ProfileNav.vue │ ├── RepoMeta │ │ └── RepoMeta.vue │ ├── RepositoryCard │ │ └── RepositoryCard.vue │ ├── TabNavigation │ │ ├── TabNavigation.vue │ │ └── types.ts │ ├── TheNavBar │ │ └── TheNavBar.vue │ ├── UserGists │ │ └── UserGists.vue │ ├── UserProfile │ │ └── UserProfile.vue │ ├── UserRepos │ │ └── UserRepos.vue │ └── icons │ │ ├── GitBranchIcon.vue │ │ ├── GitOverviewIcon.vue │ │ ├── GitRepoIcon.vue │ │ ├── GithubLogo.vue │ │ ├── LocationMarkerIcon.vue │ │ ├── OfficeBuildingIcon.vue │ │ ├── StarIcon.vue │ │ ├── TwitterLogo.vue │ │ └── UsersIcon.vue ├── constants │ └── url.constants.ts ├── jest.config.js ├── jest.setup.js ├── layouts │ └── LoggedIn.vue ├── nuxt.config.js ├── package.json ├── pages │ ├── _user │ │ └── index.vue │ ├── index.vue │ ├── redirect │ │ ├── Redirect.test.ts │ │ └── index.vue │ └── sign-in │ │ ├── Signin.test.ts │ │ └── index.vue ├── plugins │ └── formatter.ts ├── schemes │ └── authScheme.ts ├── static │ └── favicon.ico ├── store │ ├── orgStore.ts │ ├── repoStore.ts │ └── userStore.ts ├── stylelint.config.js ├── tailwind.config.js ├── test │ ├── __mocks__ │ │ ├── handlers │ │ │ └── index.ts │ │ └── mswServer.ts │ └── utils.ts ├── ts-shim.d.ts ├── tsconfig.json ├── tsconfig.node.json ├── types │ ├── auth │ │ ├── enums.ts │ │ └── index.ts │ ├── repository │ │ ├── enums.ts │ │ ├── interfaces.ts │ │ └── types.ts │ └── user │ │ └── interfaces.ts └── yarn.lock ├── qwik-graphql-tailwind ├── .env.example ├── .eslintignore ├── .eslintrc.cjs ├── .gitignore ├── .node-version ├── .npmrc ├── .prettierignore ├── .prettierrc ├── .storybook │ ├── main.ts │ ├── preview-head.html │ └── preview.ts ├── README.md ├── adaptors │ ├── netlify-edge │ │ └── vite.config.ts │ └── static │ │ └── vite.config.ts ├── netlify.toml ├── package.json ├── postcss.config.js ├── public │ ├── _headers │ ├── _redirects │ ├── favicon.svg │ └── mockServiceWorker.js ├── src │ ├── components │ │ ├── Loading │ │ │ └── loading-pulse-dot.tsx │ │ ├── branch-navigation │ │ │ └── index.tsx │ │ ├── clear-filter-and-sort-button │ │ │ └── index.tsx │ │ ├── file-explorer │ │ │ ├── index.tsx │ │ │ ├── parseTree.ts │ │ │ └── types.ts │ │ ├── file-viewer │ │ │ ├── index.tsx │ │ │ ├── mapExtensionToLanguage.ts │ │ │ ├── text.tsx │ │ │ └── view.tsx │ │ ├── filter-dropdown │ │ │ ├── filter-dropdown.spec.tsx │ │ │ ├── filter-dropdown.stories.tsx │ │ │ └── filter-dropdown.tsx │ │ ├── gists │ │ │ ├── gist-list-item.tsx │ │ │ ├── gists.spec.tsx │ │ │ ├── gists.stories.tsx │ │ │ ├── index.tsx │ │ │ ├── parseQuery.ts │ │ │ └── types.ts │ │ ├── header │ │ │ ├── github-logo.tsx │ │ │ ├── header.spec.tsx │ │ │ ├── header.stories.tsx │ │ │ └── header.tsx │ │ ├── icons │ │ │ ├── book-open.icon.tsx │ │ │ ├── building.icon.tsx │ │ │ ├── carret-dropdown.icon.tsx │ │ │ ├── check.icon.tsx │ │ │ ├── chevron-down.icon.tsx │ │ │ ├── closed-issue.icon.tsx │ │ │ ├── closed-pr.icon.tsx │ │ │ ├── code.icon.tsx │ │ │ ├── comment.icon.tsx │ │ │ ├── document.icon.tsx │ │ │ ├── draft-pr.icon.tsx │ │ │ ├── eye.icon.tsx │ │ │ ├── folder.icon.tsx │ │ │ ├── git-branch.icon.tsx │ │ │ ├── git-repo.icon.tsx │ │ │ ├── icon.stories.tsx │ │ │ ├── icons.styles.ts │ │ │ ├── index.ts │ │ │ ├── information-circle.icon.tsx │ │ │ ├── issues.icon.tsx │ │ │ ├── link-icon.tsx │ │ │ ├── link.icon.tsx │ │ │ ├── location-marker.icon.tsx │ │ │ ├── merged-pr.icon.tsx │ │ │ ├── pullRequest.icon.tsx │ │ │ ├── repo.icon.tsx │ │ │ ├── resolved-issue.icon.tsx │ │ │ ├── star.icon.tsx │ │ │ ├── toc.icon.tsx │ │ │ ├── twitter.icon.tsx │ │ │ ├── types.ts │ │ │ ├── users.icon.tsx │ │ │ └── xmark.icon.tsx │ │ ├── issue-pr-card │ │ │ ├── card.tsx │ │ │ ├── issue-card.stories.tsx │ │ │ ├── issue-pr-card.spec.tsx │ │ │ └── pr-card.stories.tsx │ │ ├── issue-tab-view │ │ │ ├── data.ts │ │ │ ├── index.tsx │ │ │ ├── issue-tab-view.spec.tsx │ │ │ ├── issue-tab-view.stories.tsx │ │ │ ├── issues-data.tsx │ │ │ ├── parseQuery.ts │ │ │ └── type.ts │ │ ├── org-list │ │ │ ├── org-list.spec.tsx │ │ │ ├── org-list.stories.tsx │ │ │ └── org-list.tsx │ │ ├── pagination │ │ │ ├── pagination.spec.tsx │ │ │ ├── pagination.stories.tsx │ │ │ └── pagination.tsx │ │ ├── privacy-badge │ │ │ ├── privacy-badge.spec.tsx │ │ │ ├── privacy-badge.stories.tsx │ │ │ └── privacy-badge.tsx │ │ ├── profile-nav │ │ │ ├── profile-nav.spec.tsx │ │ │ ├── profile-nav.tsx │ │ │ └── tab-list.tsx │ │ ├── pull-request-issue-tab │ │ │ ├── pr-issue-context-provider.tsx │ │ │ ├── pull-request-issue-tab.spec.tsx │ │ │ ├── pull-request-issue-tab.stories.tsx │ │ │ └── pull-request-issue-tab.tsx │ │ ├── repo-about │ │ │ ├── description │ │ │ │ └── index.tsx │ │ │ ├── homepage-url │ │ │ │ └── index.tsx │ │ │ ├── index.tsx │ │ │ ├── repo-about.spec.tsx │ │ │ └── topic │ │ │ │ └── index.tsx │ │ ├── repo-action-buttons │ │ │ └── index.tsx │ │ ├── repo-card │ │ │ ├── repo-card.spec.tsx │ │ │ ├── repo-card.stories.tsx │ │ │ ├── repo-card.tsx │ │ │ └── types.ts │ │ ├── repo-filters │ │ │ ├── repo-filters.spec.tsx │ │ │ ├── repo-filters.stories.tsx │ │ │ ├── repo-filters.tsx │ │ │ └── types.ts │ │ ├── repo-header │ │ │ ├── index.tsx │ │ │ ├── repo-header.spec.tsx │ │ │ └── tab-lists.tsx │ │ ├── repo-heading │ │ │ ├── index.tsx │ │ │ └── repo-heading.spec.tsx │ │ ├── repo-layout │ │ │ └── index.tsx │ │ ├── repo-meta │ │ │ ├── repo-meta.classNames.ts │ │ │ ├── repo-meta.stories.tsx │ │ │ └── repo-meta.tsx │ │ ├── repo-pulls │ │ │ ├── data.ts │ │ │ ├── index.tsx │ │ │ ├── parseQuery.ts │ │ │ ├── repo-pulls-data.tsx │ │ │ └── types.ts │ │ ├── repo-read-me │ │ │ ├── empty.tsx │ │ │ ├── index.tsx │ │ │ └── repo-read-me.spec.tsx │ │ ├── router-head │ │ │ └── router-head.tsx │ │ ├── search-input │ │ │ ├── search-input.spec.tsx │ │ │ ├── search-input.stories.tsx │ │ │ └── search-input.tsx │ │ ├── tab-navigation │ │ │ ├── tab-navigation.stories.tsx │ │ │ ├── tab-navigation.tsx │ │ │ └── types.ts │ │ ├── top-repos │ │ │ ├── index.tsx │ │ │ ├── parseQuery.ts │ │ │ ├── top-repos-card.tsx │ │ │ └── types.ts │ │ ├── user-dropdown │ │ │ ├── user-dropdown.spec.tsx │ │ │ ├── user-dropdown.stories.tsx │ │ │ └── user-dropdown.tsx │ │ ├── user-profile-card │ │ │ ├── user-profile-card.spec.tsx │ │ │ ├── user-profile-card.stories.tsx │ │ │ └── user-profile-card.tsx │ │ └── user-repos │ │ │ ├── filter-sort-functions.ts │ │ │ ├── getLanguages.ts │ │ │ ├── types.ts │ │ │ ├── user-repos.spec.tsx │ │ │ ├── user-repos.stories.tsx │ │ │ └── user-repos.tsx │ ├── context │ │ ├── issue-pr-store.ts │ │ ├── issue-tab-header-dropdown.ts │ │ ├── pull-request-store.ts │ │ └── repo-filter.ts │ ├── entry.dev.tsx │ ├── entry.netlify-edge.tsx │ ├── entry.preview.tsx │ ├── entry.ssr.tsx │ ├── global.css │ ├── integrations │ │ └── react │ │ │ ├── file-code.tsx │ │ │ └── read-md.tsx │ ├── mock │ │ ├── data.ts │ │ ├── mockedGists.ts │ │ ├── mockedIssues.ts │ │ ├── mockedUserRepo.ts │ │ └── serverSetup.ts │ ├── root.tsx │ ├── routes │ │ ├── [owner] │ │ │ └── [name] │ │ │ │ ├── blob │ │ │ │ └── [branch] │ │ │ │ │ └── [...path] │ │ │ │ │ └── index@named.tsx │ │ │ │ ├── index@named.tsx │ │ │ │ ├── issues │ │ │ │ └── index@named.tsx │ │ │ │ ├── layout-named.tsx │ │ │ │ ├── parseTopics.ts │ │ │ │ ├── pulls │ │ │ │ └── index@named.tsx │ │ │ │ └── tree │ │ │ │ └── [branch] │ │ │ │ └── [...path] │ │ │ │ └── index@named.tsx │ │ ├── [user] │ │ │ ├── index.tsx │ │ │ ├── types.ts │ │ │ └── user-page.classNames.ts │ │ ├── auth │ │ │ ├── layout!.tsx │ │ │ ├── redirect │ │ │ │ └── index.tsx │ │ │ └── signin │ │ │ │ └── index.tsx │ │ ├── index.tsx │ │ ├── layout.tsx │ │ ├── orgs │ │ │ └── [name] │ │ │ │ ├── index.tsx │ │ │ │ ├── org-profile-card.tsx │ │ │ │ └── types.ts │ │ └── service-worker.ts │ ├── types │ │ └── index.ts │ └── utils │ │ ├── constants.ts │ │ ├── dynamicColor.ts │ │ ├── getMilestoneNumber.ts │ │ ├── helpers.ts │ │ ├── index.ts │ │ ├── isParentWithinScope.ts │ │ ├── parseRestAPIPullRequests.ts │ │ ├── queries │ │ ├── file-query.ts │ │ ├── gists-query.ts │ │ ├── issues-query.ts │ │ ├── org-repos-query.ts │ │ ├── pull-request.ts │ │ ├── repo-info.ts │ │ ├── repo-read-me.ts │ │ ├── repo-tree.ts │ │ ├── repos-query.ts │ │ ├── top-repos-query.ts │ │ └── user-profile-query.ts │ │ ├── storybook │ │ └── storybookMockRouting.ts │ │ ├── types.ts │ │ └── useQuery.ts ├── tailwind.config.js ├── tsconfig.json ├── vite.config.ts └── yarn.lock ├── remix-gql-tailwind ├── .editorconfig ├── .env.example ├── .eslintignore ├── .eslintrc.js ├── .eslintrc.json ├── .gitignore ├── .husky │ └── pre-commit ├── .nvmrc ├── .prettierignore ├── .prettierrc ├── .storybook │ ├── main.js │ ├── mockRemix │ │ ├── Link.tsx │ │ └── index.ts │ └── preview.js ├── README.md ├── app.arc ├── app │ ├── components │ │ ├── Issues │ │ │ ├── IssueFilters │ │ │ │ ├── IssueFilters.classNames.ts │ │ │ │ ├── IssueFilters.tsx │ │ │ │ ├── Pagination.classNames.ts │ │ │ │ ├── Pagination.tsx │ │ │ │ ├── types.ts │ │ │ │ └── useIssueFilters.tsx │ │ │ ├── IssuesContainer │ │ │ │ ├── IssuesContainer.classNames.ts │ │ │ │ └── IssuesContainer.tsx │ │ │ └── IssuesEmpty │ │ │ │ ├── IssuesEmpty.classNames.ts │ │ │ │ └── IssuesEmpty.tsx │ │ ├── Navbar │ │ │ ├── NavBar.tsx │ │ │ └── Navbar.classNames.ts │ │ ├── Profiles │ │ │ ├── OrgProfile │ │ │ │ ├── OrgProfile.tsx │ │ │ │ └── OrgProfile.view.tsx │ │ │ ├── ProfileNav │ │ │ │ ├── ProfileNav.tsx │ │ │ │ └── tabList.tsx │ │ │ ├── ProfilePage │ │ │ │ ├── ProfilePage.classNames.ts │ │ │ │ ├── ProfilePage.stories.tsx │ │ │ │ └── ProfilePage.view.tsx │ │ │ └── UserProfile │ │ │ │ ├── OrgList.classNames.ts │ │ │ │ ├── OrgList.tsx │ │ │ │ ├── UserProfile.classNames.ts │ │ │ │ ├── UserProfile.stories.tsx │ │ │ │ ├── UserProfile.view.tsx │ │ │ │ └── types.ts │ │ ├── RepoNavigation │ │ │ ├── RepoNavigation.classNames.ts │ │ │ ├── RepoNavigation.stories.tsx │ │ │ └── RepoNavigation.tsx │ │ ├── Repositories │ │ │ ├── FileExplorer │ │ │ │ ├── FileExplorer.classNames.ts │ │ │ │ ├── FileExplorer.stories.tsx │ │ │ │ ├── FileExplorer.view.tsx │ │ │ │ ├── parseQueryData.ts │ │ │ │ └── types.ts │ │ │ ├── FileViewer │ │ │ │ ├── FileCode.tsx │ │ │ │ ├── FileText.tsx │ │ │ │ ├── FileViewer.classNames.ts │ │ │ │ ├── FileViewer.tsx │ │ │ │ ├── FileViewer.view.tsx │ │ │ │ └── mapExtensionToLanguage.ts │ │ │ ├── RepoAboutWidget │ │ │ │ ├── Description.tsx │ │ │ │ ├── HomepageUrl.tsx │ │ │ │ ├── RepoAboutWidget.classNames.ts │ │ │ │ ├── RepoAboutWidget.stories.tsx │ │ │ │ ├── RepoAboutWidget.tsx │ │ │ │ └── Topics.tsx │ │ │ ├── RepoActionButtons │ │ │ │ ├── CountButtonGroup.tsx │ │ │ │ ├── RepoActionButtons.classNames.ts │ │ │ │ ├── RepoActionButtons.stories.tsx │ │ │ │ └── RepoActionButtons.tsx │ │ │ ├── RepoFilters │ │ │ │ ├── FilterDropdown.classNames.ts │ │ │ │ ├── FilterDropdown.tsx │ │ │ │ ├── RepoFilters.classNames.ts │ │ │ │ ├── RepoFilters.tsx │ │ │ │ └── useRepoFilters.tsx │ │ │ ├── RepoHeader │ │ │ │ ├── RepoHeader.classNames.ts │ │ │ │ ├── RepoHeader.stories.tsx │ │ │ │ ├── RepoHeader.tsx │ │ │ │ └── tabList.tsx │ │ │ ├── RepoHeading │ │ │ │ ├── PrivacyIcon.tsx │ │ │ │ ├── RepoHeading.classNames.ts │ │ │ │ ├── RepoHeading.stories.tsx │ │ │ │ └── RepoHeading.tsx │ │ │ ├── RepoIssues │ │ │ │ ├── RepoIssues.classNames.ts │ │ │ │ ├── RepoIssues.mocks.ts │ │ │ │ ├── RepoIssues.tsx │ │ │ │ ├── RepoIssues.view.tsx │ │ │ │ ├── parseQuery.ts │ │ │ │ └── types.ts │ │ │ ├── RepoMeta │ │ │ │ ├── RepoMeta.classNames.ts │ │ │ │ └── RepoMeta.tsx │ │ │ ├── RepoNavigation │ │ │ │ ├── RepoNavigation.classNames.ts │ │ │ │ ├── RepoNavigation.stories.tsx │ │ │ │ └── RepoNavigation.tsx │ │ │ ├── RepoPage │ │ │ │ └── parseTopics.ts │ │ │ ├── RepoPulls │ │ │ │ ├── RepoPulls.tsx │ │ │ │ ├── RepoPulls.view.tsx │ │ │ │ ├── parseQuery.ts │ │ │ │ └── types.ts │ │ │ └── RepoReadMe │ │ │ │ ├── Empty.tsx │ │ │ │ ├── RepoReadMe.classNames.ts │ │ │ │ ├── RepoReadMe.stories.tsx │ │ │ │ ├── RepoReadMe.view.tsx │ │ │ │ └── parseQuery.ts │ │ ├── Shared │ │ │ ├── FilterDropdown │ │ │ │ ├── FilterDropdown.classNames.ts │ │ │ │ └── FilterDropdown.tsx │ │ │ ├── Icons │ │ │ │ ├── ClosedPullRequestIcon.tsx │ │ │ │ ├── EyeIcon.tsx │ │ │ │ ├── GitBranchIcon.tsx │ │ │ │ ├── GitHubLogo.tsx │ │ │ │ ├── GitRepoIcon.tsx │ │ │ │ ├── MergedPullRequestIcon.tsx │ │ │ │ ├── PullRequestIcon.tsx │ │ │ │ ├── TOCIcon.tsx │ │ │ │ ├── TwitterIcon.tsx │ │ │ │ └── index.ts │ │ │ ├── Pagination │ │ │ │ ├── Pagination.classNames.ts │ │ │ │ └── Pagination.tsx │ │ │ ├── PrivacyBadge │ │ │ │ ├── PrivacyBadge.classNames.ts │ │ │ │ └── PrivacyBadge.tsx │ │ │ └── TabNavigation │ │ │ │ ├── TabNavigation.classNames.ts │ │ │ │ ├── TabNavigation.stories.tsx │ │ │ │ ├── TabNavigation.tsx │ │ │ │ └── types.ts │ │ └── User │ │ │ ├── UserDropdown │ │ │ ├── UserDropdown.classNames.ts │ │ │ └── UserDropdown.view.tsx │ │ │ ├── UserGists │ │ │ ├── UserGists.classNames.ts │ │ │ ├── UserGists.view.tsx │ │ │ ├── container.classNames.ts │ │ │ ├── container.tsx │ │ │ ├── parseQuery.ts │ │ │ └── types.ts │ │ │ ├── UserRepos │ │ │ ├── LoadingRepos.stories.tsx │ │ │ ├── LoadingRepos.tsx │ │ │ ├── UserRepos.classNames.ts │ │ │ ├── UserRepos.mocks.ts │ │ │ ├── UserRepos.stories.tsx │ │ │ ├── UserRepos.view.tsx │ │ │ ├── filterRepos.ts │ │ │ ├── getLanguages.ts │ │ │ ├── parseQuery.ts │ │ │ └── types.ts │ │ │ └── UserTopRepos │ │ │ ├── UserTopRepos.classNames.ts │ │ │ ├── UserTopRepos.view.tsx │ │ │ ├── parseQuery.ts │ │ │ └── types.ts │ ├── context │ │ └── RepoContext.tsx │ ├── entry.client.tsx │ ├── entry.server.tsx │ ├── lib │ │ ├── graphql-client.tsx │ │ ├── pathUtils.ts │ │ └── queries │ │ │ ├── FileExplorer.ts │ │ │ ├── FileViewer.ts │ │ │ ├── OrgProfile.ts │ │ │ ├── RepoIssues.ts │ │ │ ├── RepoPage.ts │ │ │ ├── RepoPulls.ts │ │ │ ├── RepoReadMe.ts │ │ │ ├── UserDropdown.ts │ │ │ ├── UserGists.ts │ │ │ ├── UserProfile.ts │ │ │ ├── UserRepos.ts │ │ │ └── UserTopRepos.ts │ ├── root.tsx │ ├── routes │ │ ├── $user │ │ │ ├── $repository │ │ │ │ ├── blob │ │ │ │ │ └── $branch │ │ │ │ │ │ ├── $.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── issues.tsx │ │ │ │ ├── pulls.tsx │ │ │ │ └── tree │ │ │ │ │ └── $branch │ │ │ │ │ └── $.tsx │ │ │ └── index.tsx │ │ ├── auth.github.callback.tsx │ │ ├── auth.github.tsx │ │ ├── index.tsx │ │ ├── login.tsx │ │ └── logout.tsx │ ├── services │ │ ├── auth.server.ts │ │ └── session.server.ts │ └── styles │ │ └── README.md ├── cypress.json ├── cypress │ ├── .eslintrc.js │ ├── e2e │ │ └── smoke.ts │ ├── fixtures │ │ └── example.json │ ├── plugins │ │ └── index.ts │ ├── support │ │ ├── commands.ts │ │ ├── index.ts │ │ └── test-routes │ │ │ └── create-user.ts │ └── tsconfig.json ├── dev.js ├── mocks │ ├── README.md │ ├── handlers.js │ └── index.js ├── netlify.toml ├── package.json ├── postcss.config.js ├── public │ ├── favicon.ico │ └── mockServiceWorker.js ├── remix.config.js ├── remix.env.d.ts ├── sam.json ├── sam.yaml ├── server.js ├── server │ ├── package-lock.json │ └── package.json ├── styles │ └── tailwind.css ├── tailwind.config.js ├── test │ └── setup-test-env.ts ├── tsconfig.json ├── vitest.config.ts └── yarn.lock ├── solidjs-tailwind ├── .editorconfig ├── .env.example ├── .eslintignore ├── .eslintrc.json ├── .gitignore ├── .prettierignore ├── .prettierrc ├── .storybook │ ├── main.js │ └── preview.js ├── LICENSE ├── README.md ├── index.html ├── msw │ ├── data.js │ ├── mockReadMe.js │ ├── mockRepoInfo.js │ └── mockRepoTree.js ├── package.json ├── postcss.config.js ├── public │ ├── _redirects │ └── mockServiceWorker.js ├── setupVitest.js ├── src │ ├── App.jsx │ ├── assets │ │ └── favicon.ico │ ├── auth │ │ ├── AuthStore.js │ │ └── index.js │ ├── components │ │ ├── AuthGuard │ │ │ ├── AuthGuard.jsx │ │ │ ├── AuthGuard.spec.jsx │ │ │ └── index.js │ │ ├── BranchNavigation │ │ │ ├── BranchNavigation.jsx │ │ │ ├── BranchNavigation.module.css │ │ │ ├── BranchNavigation.stories.jsx │ │ │ └── index.js │ │ ├── FileExplorer │ │ │ ├── FileExplorer.jsx │ │ │ ├── FileExplorer.module.css │ │ │ ├── FileExplorer.stories.jsx │ │ │ ├── data.js │ │ │ ├── index.js │ │ │ └── parseTree.js │ │ ├── FileViewer │ │ │ ├── FileCode.jsx │ │ │ ├── FileText.jsx │ │ │ ├── FileViewer.jsx │ │ │ ├── FileViewer.module.css │ │ │ ├── index.js │ │ │ └── mapExtensionToLanguage.js │ │ ├── FilterDropDown │ │ │ ├── FilterDropdown.jsx │ │ │ └── index.jsx │ │ ├── Header │ │ │ ├── GithubLogo.jsx │ │ │ ├── Header.jsx │ │ │ ├── Header.module.css │ │ │ ├── Header.spec.jsx │ │ │ └── index.js │ │ ├── Icons │ │ │ ├── BookOpenIcon.jsx │ │ │ ├── CheckIcon.jsx │ │ │ ├── ChevronDownIcon.jsx │ │ │ ├── ClosedIssueIcon.jsx │ │ │ ├── ClosedPrIcon.jsx │ │ │ ├── CodeIcon.jsx │ │ │ ├── CommentIcon.jsx │ │ │ ├── DocumentIcon.jsx │ │ │ ├── EyeIcon.jsx │ │ │ ├── FolderIcon.jsx │ │ │ ├── GitBranchIcon.jsx │ │ │ ├── Icon.spec.jsx │ │ │ ├── InformationCircleIcon.jsx │ │ │ ├── IssuesIcon.jsx │ │ │ ├── LinkIcon.jsx │ │ │ ├── LocationMarkerIcon.jsx │ │ │ ├── MergedPrIcon.jsx │ │ │ ├── OfficeBuildingIcon.jsx │ │ │ ├── PullRequestIcon.jsx │ │ │ ├── StarIcon.jsx │ │ │ ├── TocIcon.jsx │ │ │ ├── TwitterIcon.jsx │ │ │ ├── UsersIcon.jsx │ │ │ ├── caret.jsx │ │ │ ├── close.jsx │ │ │ ├── correct.jsx │ │ │ ├── index.js │ │ │ ├── repo-book.jsx │ │ │ └── repo.icon.jsx │ │ ├── OrgAbout │ │ │ ├── OrgAbout.jsx │ │ │ ├── OrgAbout.module.css │ │ │ ├── OrgAbout.spec.jsx │ │ │ ├── OrgAbout.stories.jsx │ │ │ ├── data.js │ │ │ └── index.js │ │ ├── PRAndIssueLoaderSkeleton │ │ │ ├── PRAndIssueLoaderSkeleton.jsx │ │ │ └── index.jsx │ │ ├── PRAndIssuesData │ │ │ ├── PRAndIssuesData.jsx │ │ │ └── index.jsx │ │ ├── PRAndIssuesHeader │ │ │ ├── PRAndIssuesHeader.jsx │ │ │ ├── index.jsx │ │ │ └── utils.jsx │ │ ├── PRAndIssuesListItem │ │ │ ├── PRAndIssuesListItem.jsx │ │ │ └── index.jsx │ │ ├── Pagination │ │ │ ├── Pagination.jsx │ │ │ ├── Pagination.module.css │ │ │ └── index.js │ │ ├── PrivacyBadge │ │ │ ├── PrivacyBadge.jsx │ │ │ ├── PrivacyBadge.spec.jsx │ │ │ ├── PrivacyBadge.stories.jsx │ │ │ └── index.js │ │ ├── ProfileNav │ │ │ ├── ProfileNav.jsx │ │ │ ├── ProfileNav.spec.jsx │ │ │ ├── index.js │ │ │ └── tab-list.js │ │ ├── ProfilePage │ │ │ ├── Profile.module.css │ │ │ ├── ProfilePage.jsx │ │ │ ├── ProfilePage.spec.jsx │ │ │ └── index.js │ │ ├── Repo │ │ │ ├── Repo.jsx │ │ │ └── index.jsx │ │ ├── RepoAbout │ │ │ ├── Description.jsx │ │ │ ├── HomePageUrl.jsx │ │ │ ├── RepoAbout.jsx │ │ │ ├── RepoAbout.module.css │ │ │ ├── RepoAbout.spec.jsx │ │ │ ├── RepoAbout.stories.jsx │ │ │ ├── Topics.jsx │ │ │ ├── data.js │ │ │ └── index.jsx │ │ ├── RepoActionButtons │ │ │ ├── CountButtonGroup.jsx │ │ │ ├── RepoActionButtons.jsx │ │ │ ├── RepoActionButtons.module.css │ │ │ └── index.js │ │ ├── RepoCard │ │ │ ├── RepoCard.jsx │ │ │ ├── RepoCard.module.css │ │ │ ├── RepoCard.spec.jsx │ │ │ ├── RepoCard.stories.jsx │ │ │ ├── data.js │ │ │ └── index.js │ │ ├── RepoFilter │ │ │ ├── FilterText.jsx │ │ │ ├── RepoFIlter.stories.jsx │ │ │ ├── RepoFilter.jsx │ │ │ ├── RepoFilter.module.css │ │ │ ├── RepoFilter.spec.jsx │ │ │ ├── RepoFilter.store.js │ │ │ ├── SearchInput.jsx │ │ │ ├── data.js │ │ │ └── index.js │ │ ├── RepoHeader │ │ │ ├── RepoHeader.jsx │ │ │ ├── RepoHeader.module.css │ │ │ ├── index.js │ │ │ └── tabList.jsx │ │ ├── RepoHeading │ │ │ ├── PrivacyIcon.jsx │ │ │ ├── RepoHeading.jsx │ │ │ ├── RepoHeading.module.css │ │ │ ├── RepoHeading.stories.jsx │ │ │ └── index.js │ │ ├── RepoIssues │ │ │ ├── RepoIssues.jsx │ │ │ ├── index.jsx │ │ │ └── utils.jsx │ │ ├── RepoMeta │ │ │ ├── RepoMeta.jsx │ │ │ ├── RepoMeta.module.css │ │ │ ├── RepoMeta.spec.jsx │ │ │ └── index.js │ │ ├── RepoPullRequests │ │ │ ├── RepoPullRequests.jsx │ │ │ ├── index.jsx │ │ │ └── utils.jsx │ │ ├── RepoReadMe │ │ │ ├── Empty.jsx │ │ │ ├── RepoReadMe.jsx │ │ │ ├── RepoReadMe.module.css │ │ │ ├── RepoReadMe.stories.jsx │ │ │ └── index.jsx │ │ ├── TabNavigation │ │ │ ├── TabNavigation.jsx │ │ │ ├── TabNavigation.module.css │ │ │ └── index.js │ │ ├── TopRepos │ │ │ ├── TopRepos.jsx │ │ │ ├── TopRepos.module.css │ │ │ ├── TopRepos.spec.jsx │ │ │ └── index.js │ │ ├── UserDropdown │ │ │ ├── UserDropdown.jsx │ │ │ ├── UserDropdown.module.css │ │ │ ├── UserDropdown.spec.jsx │ │ │ └── index.js │ │ ├── UserGists │ │ │ ├── Container.jsx │ │ │ ├── UserGist.spec.jsx │ │ │ ├── UserGists.jsx │ │ │ ├── UserGists.module.css │ │ │ └── index.js │ │ ├── UserProfile │ │ │ ├── OrgList.jsx │ │ │ ├── UserProfile.jsx │ │ │ ├── UserProfile.module.css │ │ │ ├── UserProfile.spec.jsx │ │ │ ├── UserProfile.stories.jsx │ │ │ ├── data.js │ │ │ └── index.js │ │ └── UserRepos │ │ │ ├── UserRepos.jsx │ │ │ ├── UserRepos.spec.jsx │ │ │ ├── UserRepos.stories.jsx │ │ │ └── index.js │ ├── contexts │ │ ├── PrAndIssuesContext.jsx │ │ └── RepoContext.jsx │ ├── index.css │ ├── index.jsx │ ├── logo.svg │ ├── pages │ │ ├── Home.jsx │ │ ├── Issues.jsx │ │ ├── OrgProfile.jsx │ │ ├── Profile.jsx │ │ ├── PullRequests.jsx │ │ ├── Redirect.jsx │ │ ├── RepoBlob.jsx │ │ ├── RepoDetails.jsx │ │ ├── RepoTree.jsx │ │ └── Signin.jsx │ ├── routes.js │ ├── services │ │ ├── api.js │ │ ├── get-gists.js │ │ ├── get-issues.js │ │ ├── get-org-repos.js │ │ ├── get-profile.js │ │ ├── get-readme.js │ │ ├── get-repo-file.js │ │ ├── get-repo-info.js │ │ ├── get-repo-pull-requests.js │ │ ├── get-repo-tree.js │ │ ├── get-top-repos.js │ │ ├── queries │ │ │ ├── all-repos.js │ │ │ ├── gists.js │ │ │ ├── issue-info.js │ │ │ ├── org-repos.js │ │ │ ├── repo-file.js │ │ │ ├── repo-info.js │ │ │ ├── repo-pull-requests.js │ │ │ ├── repo-readme.js │ │ │ ├── repo-tree.js │ │ │ ├── top-repos.js │ │ │ ├── user-profile.js │ │ │ └── viewer-profile.js │ │ ├── user-profile.js │ │ └── user-repos.js │ └── utils │ │ ├── constants.js │ │ ├── fixtures │ │ └── mocks.js │ │ ├── getFriendlyDate.js │ │ ├── getLanguages.js │ │ ├── getLanguages.spec.js │ │ ├── languageFilterFunction.js │ │ ├── languageFilterFunction.spec.js │ │ ├── onclickOutside.js │ │ ├── parseFunctions.js │ │ ├── parseRestAPIPullRequest.js │ │ ├── removeLastPathPart.js │ │ ├── searchFunctionality.js │ │ ├── searchFunctionality.spec.js │ │ ├── sortRepoFunction.js │ │ ├── sortRepoFunction.spec.js │ │ ├── typeFilterFunction.js │ │ ├── typeFilterFunction.spec.js │ │ └── useRepoSortFilter.js ├── tailwind.config.js └── vite.config.js ├── solidstart-tanstackquery-tailwind-modules ├── .env.example ├── .eslintignore ├── .eslintrc.json ├── .gitignore ├── .prettierignore ├── .prettierrc ├── .storybook │ ├── main.cjs │ ├── preview-head.html │ └── preview.js ├── README.md ├── msw │ ├── data.ts │ ├── mockReadMe.ts │ ├── mockRepoInfo.ts │ ├── mockRepoTree.ts │ └── server.ts ├── netlify.toml ├── package.json ├── postcss.config.cjs ├── public │ ├── favicon.ico │ └── mockServiceWorker.js ├── src │ ├── auth │ │ ├── AuthStore.ts │ │ └── index.ts │ ├── components │ │ ├── BranchNavigation │ │ │ ├── BranchNavigation.module.css │ │ │ ├── BranchNavigation.stories.tsx │ │ │ ├── BranchNavigation.tsx │ │ │ └── index.ts │ │ ├── FileExplorer │ │ │ ├── FileExplorer.module.css │ │ │ ├── FileExplorer.stories.tsx │ │ │ ├── FileExplorer.tsx │ │ │ ├── index.ts │ │ │ └── parseTree.ts │ │ ├── FileViewer │ │ │ ├── FileCode.css │ │ │ ├── FileCode.tsx │ │ │ ├── FileText.tsx │ │ │ ├── FileViewer.module.css │ │ │ ├── FileViewer.tsx │ │ │ ├── index.ts │ │ │ └── mapExtensionToLanguage.ts │ │ ├── FilterDropDown │ │ │ ├── FilterDropdown.tsx │ │ │ └── index.tsx │ │ ├── GistPanel │ │ │ ├── Gists.module.css │ │ │ ├── Gists.spec.tsx │ │ │ ├── Gists.stories.tsx │ │ │ ├── GistsData.tsx │ │ │ ├── GistsWrapper.tsx │ │ │ ├── data.ts │ │ │ └── index.ts │ │ ├── Icons │ │ │ ├── BookOpenIcon.tsx │ │ │ ├── CheckIcon.tsx │ │ │ ├── ChevronDownIcon.tsx │ │ │ ├── ClosedIssueIcon.tsx │ │ │ ├── ClosedPrIcon.tsx │ │ │ ├── CodeIcon.tsx │ │ │ ├── CommentIcon.tsx │ │ │ ├── DocumentIcon.tsx │ │ │ ├── EyeIcon.tsx │ │ │ ├── FolderIcon.tsx │ │ │ ├── GitBranchIcon.tsx │ │ │ ├── InformationCircleIcon.tsx │ │ │ ├── IssuesIcon.tsx │ │ │ ├── LinkIcon.tsx │ │ │ ├── MergedPrIcon.tsx │ │ │ ├── PullRequestIcon.tsx │ │ │ ├── RepoIcon.tsx │ │ │ ├── StarIcon.tsx │ │ │ ├── TocIcon.tsx │ │ │ ├── TwitterIcon.tsx │ │ │ ├── caret.tsx │ │ │ ├── close.tsx │ │ │ ├── correct.tsx │ │ │ ├── index.ts │ │ │ ├── repo-book.tsx │ │ │ └── types.ts │ │ ├── LoadingPulseDot │ │ │ ├── LoadingPulseDot.tsx │ │ │ └── index.ts │ │ ├── OrgAbout │ │ │ ├── OrgAbout.module.css │ │ │ ├── OrgAbout.spec.tsx │ │ │ ├── OrgAbout.stories.tsx │ │ │ ├── OrgAbout.tsx │ │ │ ├── Skeleton.tsx │ │ │ ├── data.ts │ │ │ └── index.ts │ │ ├── PRAndIssueCard │ │ │ ├── PRAndIssueCard.spec.tsx │ │ │ ├── PRAndIssueCard.stories.tsx │ │ │ ├── PRAndIssueCard.tsx │ │ │ ├── data.ts │ │ │ └── index.tsx │ │ ├── PRAndIssuesData │ │ │ ├── PRAndIssuesData.tsx │ │ │ └── index.ts │ │ ├── PRAndIssuesHeader │ │ │ ├── PRAndIssuesHeader.tsx │ │ │ ├── index.ts │ │ │ └── utils.ts │ │ ├── PRAndIssuesListItem │ │ │ ├── PRAndIssuesListItem.tsx │ │ │ └── index.ts │ │ ├── Pagination │ │ │ ├── Pagination.module.css │ │ │ ├── Pagination.tsx │ │ │ └── index.ts │ │ ├── PrivacyBadge │ │ │ ├── PrivacyBadge.spec.tsx │ │ │ ├── PrivacyBadge.stories.tsx │ │ │ ├── PrivacyBadge.tsx │ │ │ └── index.ts │ │ ├── ProfileNav │ │ │ ├── ProfileNav.spec.tsx │ │ │ ├── ProfileNav.tsx │ │ │ ├── index.ts │ │ │ └── tab-list.ts │ │ ├── ProfilePage │ │ │ ├── ProfilePage.module.css │ │ │ ├── ProfilePage.tsx │ │ │ └── index.ts │ │ ├── RepoAbout │ │ │ ├── Description.tsx │ │ │ ├── HomePageUrl.tsx │ │ │ ├── RepoAbout.module.css │ │ │ ├── RepoAbout.spec.tsx │ │ │ ├── RepoAbout.stories.tsx │ │ │ ├── RepoAbout.tsx │ │ │ ├── Topics.tsx │ │ │ ├── data.ts │ │ │ └── index.tsx │ │ ├── RepoActionButtons │ │ │ ├── CountButtonGroup.tsx │ │ │ ├── RepoActionButtons.module.css │ │ │ ├── RepoActionButtons.tsx │ │ │ └── index.ts │ │ ├── RepoCard │ │ │ ├── RepoCard.module.css │ │ │ ├── RepoCard.spec.tsx │ │ │ ├── RepoCard.stories.tsx │ │ │ ├── RepoCard.tsx │ │ │ ├── data.ts │ │ │ └── index.ts │ │ ├── RepoFilter │ │ │ ├── FilterText.tsx │ │ │ ├── RepoFIlter.stories.tsx │ │ │ ├── RepoFilter.module.css │ │ │ ├── RepoFilter.spec.tsx │ │ │ ├── RepoFilter.store.ts │ │ │ ├── RepoFilter.tsx │ │ │ ├── SearchInput.tsx │ │ │ ├── data.ts │ │ │ └── index.ts │ │ ├── RepoHeader │ │ │ ├── RepoHeader.module.css │ │ │ ├── RepoHeader.stories.tsx │ │ │ ├── RepoHeader.tsx │ │ │ ├── index.ts │ │ │ └── tabList.tsx │ │ ├── RepoHeading │ │ │ ├── PrivacyIcon.tsx │ │ │ ├── RepoHeading.module.css │ │ │ ├── RepoHeading.stories.tsx │ │ │ ├── RepoHeading.tsx │ │ │ ├── data.ts │ │ │ └── index.ts │ │ ├── RepoIssues │ │ │ ├── RepoIssues.tsx │ │ │ ├── index.ts │ │ │ └── utils.tsx │ │ ├── RepoMeta │ │ │ ├── RepoMeta.module.css │ │ │ ├── RepoMeta.spec.tsx │ │ │ ├── RepoMeta.tsx │ │ │ └── index.ts │ │ ├── RepoPullRequests │ │ │ ├── RepoPullrequests.tsx │ │ │ ├── index.ts │ │ │ └── utils.tsx │ │ ├── RepoReadMe │ │ │ ├── Empty.tsx │ │ │ ├── RepoReadMe.module.css │ │ │ ├── RepoReadMe.stories.tsx │ │ │ ├── RepoReadMe.tsx │ │ │ └── index.tsx │ │ ├── ShowcaseHeader │ │ │ ├── ShowcaseHeader.module.css │ │ │ ├── ShowcaseHeader.tsx │ │ │ ├── github-logo.tsx │ │ │ └── index.ts │ │ ├── TabNavigation │ │ │ ├── TabNavigation.module.css │ │ │ ├── TabNavigation.tsx │ │ │ └── index.ts │ │ ├── TopRepos │ │ │ ├── TopRepos.module.css │ │ │ ├── TopRepos.spec.tsx │ │ │ ├── TopRepos.tsx │ │ │ └── index.ts │ │ ├── UserDropdown │ │ │ ├── UserDropdown.module.css │ │ │ ├── UserDropdown.spec.tsx │ │ │ ├── UserDropdown.tsx │ │ │ └── index.tsx │ │ ├── UserProfile │ │ │ ├── OrgList.tsx │ │ │ ├── UserProfile.module.css │ │ │ ├── UserProfile.stories.tsx │ │ │ ├── data.ts │ │ │ └── index.tsx │ │ ├── UserRepos │ │ │ ├── UserRepos.tsx │ │ │ └── index.ts │ │ └── layout.tsx │ ├── entry-client.tsx │ ├── entry-server.tsx │ ├── hooks │ │ └── useGetRepoInfo.ts │ ├── mock │ │ └── serverSetup.ts │ ├── root.css │ ├── root.tsx │ ├── routes │ │ ├── [...404].tsx │ │ ├── [login].tsx │ │ ├── [owner] │ │ │ ├── [name] │ │ │ │ ├── blob │ │ │ │ │ └── [branch] │ │ │ │ │ │ └── [...path] │ │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── issues.tsx │ │ │ │ ├── pulls.tsx │ │ │ │ └── tree │ │ │ │ │ └── [branch] │ │ │ │ │ └── [...path] │ │ │ │ │ └── index.tsx │ │ │ └── style.module.css │ │ ├── index.tsx │ │ ├── orgs │ │ │ └── [login].tsx │ │ ├── redirect.tsx │ │ └── signin.tsx │ ├── services │ │ ├── api.ts │ │ ├── get-gists.tsx │ │ ├── get-issues.ts │ │ ├── get-org-repos.ts │ │ ├── get-pull-request.ts │ │ ├── get-repo-file.ts │ │ ├── get-repo-info.ts │ │ ├── get-repo-readme.ts │ │ ├── get-repo-tree.ts │ │ ├── get-top-repos.ts │ │ ├── get-user-profile.ts │ │ ├── get-user-repos.ts │ │ ├── get-viewer-profile.ts │ │ └── queries │ │ │ ├── gists.tsx │ │ │ ├── issue-info.ts │ │ │ ├── org-repos.ts │ │ │ ├── pull-request.ts │ │ │ ├── repo-file.ts │ │ │ ├── repo-info.ts │ │ │ ├── repo-readme.ts │ │ │ ├── repo-tree.ts │ │ │ ├── top-repos-query.ts │ │ │ ├── user-profile.ts │ │ │ ├── user-repos.ts │ │ │ └── viewer-profile.ts │ ├── store.ts │ ├── test │ │ └── template.spec.ts │ ├── types │ │ ├── gists-type.ts │ │ ├── issues-type.ts │ │ ├── label-type.ts │ │ ├── org-repos.ts │ │ ├── pull-request-type.ts │ │ ├── repo-file-type.ts │ │ ├── repo-info-type.ts │ │ ├── repo-readme-types.ts │ │ ├── repo-tree-type.ts │ │ ├── top-repos-type.ts │ │ ├── user-profile-type.ts │ │ └── user-repo-type.ts │ └── utils │ │ ├── constants.ts │ │ ├── dynamicColor.ts │ │ ├── getLanguages.ts │ │ ├── languageFilterFunction.ts │ │ ├── onclickOutside.ts │ │ ├── parseFunctions.ts │ │ ├── parseResrAPIPullRequest.ts │ │ ├── protected-paths.ts │ │ ├── searchFunction.ts │ │ ├── sortRepoFunction.ts │ │ ├── typeFilterFunction.ts │ │ └── useRepoSortFilter.ts ├── tailwind.config.cjs ├── tsconfig.json ├── vite.config.ts └── yarn.lock ├── starter-dev-backend ├── .env.example ├── .eslintrc ├── .gitignore ├── .prettierrc ├── README.md ├── codegen.ts ├── index.html ├── netlify.toml ├── package.json ├── src │ ├── datasources │ │ └── github-api.ts │ ├── formatters │ │ ├── index.ts │ │ ├── orgFormatter.ts │ │ ├── ownerFormatter.ts │ │ └── repoFormatter.ts │ ├── graphql.ts │ ├── index.ts │ ├── lib │ │ ├── access-token.js │ │ ├── clear-cookies.js │ │ ├── constants.ts │ │ ├── expiration.js │ │ ├── get-access-token.js │ │ ├── index.js │ │ ├── refresh-token.js │ │ └── signin-url.js │ ├── schema │ │ ├── github │ │ │ ├── github.resolvers.ts │ │ │ ├── github.typedefs.ts │ │ │ └── index.ts │ │ ├── hello │ │ │ ├── hello.resolvers.ts │ │ │ ├── hello.typedefs.ts │ │ │ └── index.ts │ │ └── index.ts │ ├── server.js │ └── types │ │ └── index.ts ├── tsconfig.json ├── tsconfig.spec.json ├── types │ └── graphql.ts └── yarn.lock ├── starter-dev-e2e ├── .gitignore ├── README.md ├── config.example.config.ts ├── cypress │ ├── configs │ │ ├── angular-apollo-tailwind.config.ts │ │ ├── angular-ngrx-scss.config.ts │ │ ├── cra-rxjs-styled-components.config.ts │ │ ├── next-react-query-tailwind.config.ts │ │ ├── remix-gql-tailwind.config.ts │ │ ├── script-config.json │ │ ├── vite-apollo-vanilla.config.ts │ │ └── vue3-ts-quasar.config.ts │ ├── e2e │ │ ├── dashboard.cy.ts │ │ ├── organization.cy.ts │ │ ├── profile.cy.ts │ │ └── repo.cy.ts │ ├── fixtures │ │ ├── auth │ │ │ ├── next-auth.session.json │ │ │ ├── remix-auth.session.json │ │ │ └── token.json │ │ ├── org │ │ │ └── graphql │ │ │ │ ├── empty │ │ │ │ └── orgRepos.empty.graphql.json │ │ │ │ ├── orgProfile.graphql.json │ │ │ │ ├── orgRepos-orderByName.graphql.json │ │ │ │ ├── orgRepos-orderByStars.graphql.json │ │ │ │ └── orgRepos.graphql.json │ │ ├── profile │ │ │ └── graphql │ │ │ │ ├── empty │ │ │ │ └── userProfile.empty.graphql.json │ │ │ │ └── userProfile.graphql.json │ │ ├── repo │ │ │ ├── graphql │ │ │ │ ├── empty │ │ │ │ │ ├── repoIssues.empty.graphql.json │ │ │ │ │ ├── repoPage.empty.graphql.json │ │ │ │ │ ├── repoPullRequests.empty.graphql.json │ │ │ │ │ ├── repoReadMe.empty.graphql.json │ │ │ │ │ └── repoTree.empty.graphql.json │ │ │ │ ├── repoFile.graphql.json │ │ │ │ ├── repoIssues-filterByLabel.graphql.json │ │ │ │ ├── repoIssues-filterByMilestone.graphql.json │ │ │ │ ├── repoIssues-page2.graphql.json │ │ │ │ ├── repoIssues-sortByAsc.graphql.json │ │ │ │ ├── repoIssues.graphql.json │ │ │ │ ├── repoPage.graphql.json │ │ │ │ ├── repoPullRequests-filterByLabel.graphql.json │ │ │ │ ├── repoPullRequests-page2.graphql.json │ │ │ │ ├── repoPullRequests-sortByAsc.graphql.json │ │ │ │ ├── repoPullRequests.graphql.json │ │ │ │ ├── repoReadMe-folder1.graphql.json │ │ │ │ ├── repoReadMe.graphql.json │ │ │ │ ├── repoTree-folder1.graphql.json │ │ │ │ ├── repoTree-folder2.graphql.json │ │ │ │ ├── repoTree-folder3.graphql.json │ │ │ │ └── repoTree.graphql.json │ │ │ └── rest │ │ │ │ ├── contents.json │ │ │ │ ├── issues.json │ │ │ │ ├── repo.json │ │ │ │ ├── repoPullRequests.json │ │ │ │ └── repoPullRequestsClosed.json │ │ └── user │ │ │ ├── graphql │ │ │ ├── currentUser.graphql.json │ │ │ ├── empty │ │ │ │ ├── userGist.empty.graphql.json │ │ │ │ ├── userRepos.empty.graphql.json │ │ │ │ └── userTopRepos.empty.graphql.json │ │ │ ├── userGist.graphql.json │ │ │ ├── userRepos-orderByName.graphql.json │ │ │ ├── userRepos-orderByStars.graphql.json │ │ │ ├── userRepos.graphql.json │ │ │ └── userTopRepos.graphql.json │ │ │ └── rest │ │ │ ├── currentUser.json │ │ │ └── userTopRepos.json │ ├── support │ │ ├── commands.ts │ │ └── e2e.ts │ └── utils │ │ ├── graphql-test-utils.ts │ │ ├── intercept-response.ts │ │ ├── interceptors.json │ │ └── view.ts ├── package.json ├── tsconfig.json └── yarn.lock ├── svelte-kit-scss ├── .editorconfig ├── .env.example ├── .eslintignore ├── .eslintrc.json ├── .gitignore ├── .husky │ └── pre-commit ├── .prettierignore ├── .prettierrc ├── .storybook │ ├── main.cjs │ ├── preview-head.html │ └── preview.js ├── README.md ├── netlify.toml ├── package-lock.json ├── package.json ├── playwright.config.ts ├── setupTests.ts ├── src │ ├── additional-svelte-jsx.d.ts │ ├── app.d.ts │ ├── app.html │ ├── hooks.server.ts │ ├── lib │ │ ├── components │ │ │ ├── ErrorPage │ │ │ │ ├── ErrorFlash.svelte │ │ │ │ ├── ErrorMain.svelte │ │ │ │ └── ErrorPage.spec.ts │ │ │ ├── FileExplorer │ │ │ │ ├── FileExplorerContainer │ │ │ │ │ ├── FileExplorerContainer.spec.ts │ │ │ │ │ └── FileExplorerContainer.svelte │ │ │ │ ├── FileExplorerNav │ │ │ │ │ ├── BranchesSelectList.svelte │ │ │ │ │ └── FileExplorerNav.svelte │ │ │ │ ├── FileExplorerReadme │ │ │ │ │ └── FileExplorerReadme.svelte │ │ │ │ ├── models.ts │ │ │ │ └── utils.ts │ │ │ ├── FileViewer │ │ │ │ ├── FileCode │ │ │ │ │ ├── FileCode.svelte │ │ │ │ │ └── FileCodeLine.svelte │ │ │ │ ├── FileText.svelte │ │ │ │ ├── FileViewer.spec.ts │ │ │ │ ├── FileViewer.svelte │ │ │ │ ├── themes │ │ │ │ │ ├── dracula.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── night-owl-light.ts │ │ │ │ ├── types │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ └── model.ts │ │ │ │ └── utils │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── normalize-tokens.ts │ │ │ │ │ ├── serialize-styles.ts │ │ │ │ │ └── themes-to-dict.ts │ │ │ ├── Gists │ │ │ │ ├── Gists.spec.ts │ │ │ │ ├── Gists.stories.ts │ │ │ │ └── Gists.svelte │ │ │ ├── IssueSearch │ │ │ │ ├── IssueSearch.spec.ts │ │ │ │ ├── IssueSearchControls │ │ │ │ │ ├── DropdownFilterTextButton.svelte │ │ │ │ │ ├── IssueLabelFilterItemTemplateCheckbox.svelte │ │ │ │ │ ├── IssueSearchControls.svelte │ │ │ │ │ └── IssueStateFilter.svelte │ │ │ │ ├── IssueSearchList.svelte │ │ │ │ ├── IssueSearchListItem │ │ │ │ │ ├── CommentsCount.svelte │ │ │ │ │ ├── IssueLabel.svelte │ │ │ │ │ ├── IssueSearchAssignees.svelte │ │ │ │ │ ├── IssueSearchListItem.svelte │ │ │ │ │ ├── IssueStateDescription.svelte │ │ │ │ │ └── IssueStateIcon.svelte │ │ │ │ └── utils.ts │ │ │ ├── NavBar │ │ │ │ ├── NavBar.spec.ts │ │ │ │ └── NavBar.svelte │ │ │ ├── NavigationProgress │ │ │ │ └── NavigationProgress.svelte │ │ │ ├── Profile │ │ │ │ ├── OrganizationProfile │ │ │ │ │ ├── OrganizationDetails │ │ │ │ │ │ ├── OrganizationDetails.svelte │ │ │ │ │ │ ├── OrganizationMembers.spec.ts │ │ │ │ │ │ └── OrganizationMembers.svelte │ │ │ │ │ ├── OrganizationProfile.spec.ts │ │ │ │ │ └── OrganizationProfile.svelte │ │ │ │ ├── UserProfile │ │ │ │ │ ├── UserProfile.spec.ts │ │ │ │ │ └── UserProfile.svelte │ │ │ │ └── common │ │ │ │ │ ├── ProfileFollowers.svelte │ │ │ │ │ ├── ProfileOrganizations │ │ │ │ │ ├── ProfileOrganizations.spec.ts │ │ │ │ │ └── ProfileOrganizations.svelte │ │ │ │ │ └── SocialLink.svelte │ │ │ ├── Repository │ │ │ │ ├── NamedCounter.svelte │ │ │ │ ├── RepositoryCounters.spec.ts │ │ │ │ ├── RepositoryCounters.svelte │ │ │ │ ├── RepositoryDetails.spec.ts │ │ │ │ ├── RepositoryDetails.svelte │ │ │ │ ├── RepositoryHeading.svelte │ │ │ │ ├── VisibilityLabel.spec.ts │ │ │ │ └── VisibilityLabel.svelte │ │ │ ├── RepositoryList │ │ │ │ ├── AllRepositoriesList │ │ │ │ │ ├── AllRepositoriesList.spec.ts │ │ │ │ │ └── AllRepositoriesList.svelte │ │ │ │ ├── RepositoryCard │ │ │ │ │ ├── RepositoryCard.spec.ts │ │ │ │ │ └── RepositoryCard.svelte │ │ │ │ ├── RepositoryList │ │ │ │ │ ├── RepositoryList.spec.ts │ │ │ │ │ └── RepositoryList.svelte │ │ │ │ ├── RepositoryListFilters │ │ │ │ │ ├── DropdownButtonOutline.svelte │ │ │ │ │ ├── RepositoryListControls.svelte │ │ │ │ │ └── SearchInputDelayed.svelte │ │ │ │ ├── TopRepositoriesList │ │ │ │ │ ├── TopRepositoriesList.spec.ts │ │ │ │ │ └── TopRepositoriesList.svelte │ │ │ │ ├── mocks.ts │ │ │ │ └── view-models.ts │ │ │ ├── auth │ │ │ │ ├── Auth.svelte │ │ │ │ └── redirect │ │ │ │ │ └── Redirect.svelte │ │ │ └── shared │ │ │ │ ├── Breadcrumbs │ │ │ │ ├── Breadcrumbs.spec.ts │ │ │ │ ├── Breadcrumbs.stories.ts │ │ │ │ ├── Breadcrumbs.svelte │ │ │ │ └── models.ts │ │ │ │ ├── Dropdown │ │ │ │ ├── DropdownMenu.svelte │ │ │ │ ├── DropdownMenuSelect │ │ │ │ │ └── DropdownMenuSelect.svelte │ │ │ │ └── item-templates │ │ │ │ │ └── DropdownItemTemplateCheckbox.svelte │ │ │ │ ├── FilterDropdown │ │ │ │ ├── FilterDropdown.svelte │ │ │ │ └── filter-option.ts │ │ │ │ ├── HtmlSentence │ │ │ │ ├── HtmlSentence.svelte │ │ │ │ └── view-models.ts │ │ │ │ ├── ListBlankSlate │ │ │ │ └── ListBlankSlate.svelte │ │ │ │ ├── PageNavigationTabs │ │ │ │ ├── PageNavigationTab.svelte │ │ │ │ ├── PageNavigtionTabs.svelte │ │ │ │ └── models.ts │ │ │ │ ├── Pagination │ │ │ │ ├── Pagination.svelte │ │ │ │ ├── PaginationButton.svelte │ │ │ │ └── view-models.ts │ │ │ │ ├── ProgrammingLanguage │ │ │ │ └── ProgrammingLanguage.svelte │ │ │ │ ├── actions │ │ │ │ └── clickOutside.ts │ │ │ │ ├── buttons │ │ │ │ └── ButtonText.svelte │ │ │ │ ├── chips │ │ │ │ ├── Chips.svelte │ │ │ │ └── models.ts │ │ │ │ ├── icons │ │ │ │ ├── Icon.svelte │ │ │ │ ├── IconTwitter16.svelte │ │ │ │ ├── icons.ts │ │ │ │ └── index.ts │ │ │ │ ├── layouts │ │ │ │ ├── BoxLayout.svelte │ │ │ │ ├── LayoutPageContentRow.svelte │ │ │ │ ├── LayoutPageHeader.svelte │ │ │ │ └── LayoutSidebar.svelte │ │ │ │ ├── links │ │ │ │ └── link-text.svelte │ │ │ │ └── models │ │ │ │ └── navigation-filter-option.ts │ │ ├── constants │ │ │ ├── auth.ts │ │ │ ├── env.ts │ │ │ ├── github │ │ │ │ ├── github-api-request-timeout.ts │ │ │ │ ├── github-folder-content-item-type.ts │ │ │ │ └── index.ts │ │ │ ├── headers.ts │ │ │ ├── issues-search-query-filters.ts │ │ │ ├── language-colors.ts │ │ │ ├── matchers.ts │ │ │ ├── page-ids.ts │ │ │ ├── repository-search.ts │ │ │ ├── repository.ts │ │ │ └── router.ts │ │ ├── fixtures │ │ │ ├── gists.ts │ │ │ └── index.ts │ │ ├── helpers │ │ │ ├── branches.spec.ts │ │ │ ├── branches.ts │ │ │ ├── common │ │ │ │ ├── collection-page.spec.ts │ │ │ │ ├── collection-page.ts │ │ │ │ ├── index.ts │ │ │ │ ├── simple-user.spec.ts │ │ │ │ └── simple-user.ts │ │ │ ├── file.spec.ts │ │ │ ├── file.ts │ │ │ ├── formatting.spec.ts │ │ │ ├── formatting.ts │ │ │ ├── gists.ts │ │ │ ├── index.ts │ │ │ ├── issue-label.spec.ts │ │ │ ├── issue-label.ts │ │ │ ├── issue-milestone.spec.ts │ │ │ ├── issue-milestone.ts │ │ │ ├── issues-search-query-builder.ts │ │ │ ├── issues.spec.ts │ │ │ ├── issues.ts │ │ │ ├── mocks │ │ │ │ ├── branches.ts │ │ │ │ ├── common │ │ │ │ │ ├── index.ts │ │ │ │ │ └── simple-user.ts │ │ │ │ ├── file-viewer.ts │ │ │ │ ├── issues.ts │ │ │ │ ├── organizations.ts │ │ │ │ ├── repository-contents.ts │ │ │ │ ├── repository.ts │ │ │ │ └── users.ts │ │ │ ├── organizations.spec.ts │ │ │ ├── organizations.ts │ │ │ ├── repository-contents.spec.ts │ │ │ ├── repository-contents.ts │ │ │ ├── repository-search.spec.ts │ │ │ ├── repository-search.ts │ │ │ ├── repository.spec.ts │ │ │ ├── repository.ts │ │ │ ├── router.spec.ts │ │ │ ├── router.ts │ │ │ ├── test-utils.ts │ │ │ ├── topic.spec.ts │ │ │ ├── topic.ts │ │ │ ├── users.spec.ts │ │ │ └── users.ts │ │ ├── images │ │ │ ├── github.svg │ │ │ ├── svelte-logo.svg │ │ │ ├── svelte-welcome.png │ │ │ └── svelte-welcome.webp │ │ ├── interfaces │ │ │ ├── branches.ts │ │ │ ├── common │ │ │ │ ├── collection-page.ts │ │ │ │ ├── index.ts │ │ │ │ └── simple-user.ts │ │ │ ├── data-contract │ │ │ │ └── github │ │ │ │ │ ├── branches.ts │ │ │ │ │ ├── common │ │ │ │ │ ├── collection-page.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── simple-user.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── issue-label.ts │ │ │ │ │ ├── issues.ts │ │ │ │ │ ├── milestones.ts │ │ │ │ │ ├── organizations.ts │ │ │ │ │ ├── repository-contents.ts │ │ │ │ │ ├── repository-search.ts │ │ │ │ │ ├── repository.ts │ │ │ │ │ └── users.ts │ │ │ ├── gists.ts │ │ │ ├── index.ts │ │ │ ├── issue-label.ts │ │ │ ├── issue-milestone.ts │ │ │ ├── issues.ts │ │ │ ├── organizations.ts │ │ │ ├── repository-search.ts │ │ │ ├── repository.ts │ │ │ ├── topic.ts │ │ │ ├── type-utls.ts │ │ │ └── users.ts │ │ ├── server │ │ │ └── helpers │ │ │ │ ├── index.ts │ │ │ │ └── repository-contents.ts │ │ ├── services │ │ │ ├── abstract-fetch-service.ts │ │ │ ├── auth-service.ts │ │ │ ├── branch-service.ts │ │ │ ├── configure-services.ts │ │ │ ├── index.ts │ │ │ ├── issue-label-service.ts │ │ │ ├── issue-milestone-service.ts │ │ │ ├── issues-search-service.ts │ │ │ ├── organization-service.ts │ │ │ ├── repository-service.ts │ │ │ ├── search-repository-service.ts │ │ │ └── user-service.ts │ │ ├── stores │ │ │ ├── auth.ts │ │ │ ├── current-page-id.ts │ │ │ └── navigation-progress.ts │ │ └── styles │ │ │ └── variables.scss │ ├── params │ │ └── issue_search_type.ts │ └── routes │ │ ├── (authenticated) │ │ ├── (home) │ │ │ ├── +page.server.ts │ │ │ └── +page.svelte │ │ ├── +error.svelte │ │ ├── +layout.server.ts │ │ ├── +layout.svelte │ │ └── [username] │ │ │ ├── +page.server.ts │ │ │ ├── +page.svelte │ │ │ └── [repo] │ │ │ ├── (file-view) │ │ │ ├── [...tree] │ │ │ │ ├── +page.server.ts │ │ │ │ └── +page.svelte │ │ │ └── blob │ │ │ │ └── [branch] │ │ │ │ └── [...file] │ │ │ │ ├── +page.server.ts │ │ │ │ └── +page.svelte │ │ │ ├── +layout.server.ts │ │ │ ├── +layout.svelte │ │ │ └── [issueSearchType=issue_search_type] │ │ │ ├── +page.server.ts │ │ │ └── +page.svelte │ │ ├── +layout.svelte │ │ ├── logout │ │ └── +page.server.ts │ │ ├── signin │ │ └── (auth) │ │ │ ├── +page.svelte │ │ │ └── redirect │ │ │ └── +page.svelte │ │ └── styles.scss ├── static │ ├── favicon.png │ ├── robots.txt │ └── social.png ├── svelte.config.js ├── tests │ └── test.ts ├── tsconfig.json ├── typings.d.ts └── vite.config.ts └── vue3-apollo-quasar ├── .browserslistrc ├── .env.development ├── .env.production ├── .eslintrc.js ├── .gitignore ├── .postcssrc.js ├── .prettierignore ├── .prettierrc ├── .storybook ├── main.js └── preview.js ├── CONTRIBUTING.md ├── README.md ├── babel.config.js ├── cypress.json ├── jest.config.js ├── package.json ├── public ├── _redirects ├── app-icons │ ├── arrow-right.svg │ ├── book.svg │ ├── branch.svg │ ├── closed-issue.svg │ ├── closed-pull-request.svg │ ├── code.svg │ ├── comment.svg │ ├── correct.svg │ ├── file.svg │ ├── folder.svg │ ├── fork.svg │ ├── issue.svg │ ├── link.svg │ ├── merged-pull-request.svg │ ├── mobile.svg │ ├── pull-request.svg │ ├── read-me.svg │ ├── readme-list-icon.svg │ ├── repo-overview.svg │ ├── repo-packages.svg │ ├── repo-projects.svg │ ├── repo-stars.svg │ └── repositories.svg ├── index.html ├── logos │ ├── gh-logo-dark-bg.svg │ ├── gh-logo-lg-dark-bg.svg │ ├── gh-logo-lg-light-bg.svg │ └── gh-logo-light-bg.svg ├── mockServiceWorker.js └── vue3-ts-quasar.png ├── src ├── App.css ├── App.vue ├── assets │ ├── logo.png │ └── logo.svg ├── components │ ├── AppInput │ │ ├── AppInput.vue │ │ └── index.ts │ ├── BranchMenu │ │ ├── BranchMenu.stories.ts │ │ ├── BranchMenu.vue │ │ └── index.ts │ ├── ClearIssuePRFilter │ │ ├── ClearIssuePRFilter.vue │ │ └── index.ts │ ├── EmptyContainer │ │ ├── EmptyContainer.stories.ts │ │ ├── EmptyContainer.vue │ │ └── index.ts │ ├── FileExplorer │ │ ├── FileExplorer.stories.ts │ │ ├── FileExplorer.vue │ │ ├── FileExplorerNav.stories.ts │ │ ├── FileExplorerNav.vue │ │ ├── index.ts │ │ └── types.ts │ ├── FileView │ │ ├── FileCode.vue │ │ ├── FileText.vue │ │ ├── FileView.vue │ │ ├── getLanguage.ts │ │ └── index.ts │ ├── Footer │ │ ├── Footer.stories.ts │ │ ├── Footer.vue │ │ └── index.ts │ ├── GistsPanel │ │ ├── GistsPanel.stories.ts │ │ ├── GistsPanel.vue │ │ ├── data.ts │ │ ├── index.ts │ │ └── mockedUserGists.ts │ ├── IssuePullRequestTab │ │ ├── IssuePullRequestTab.stories.ts │ │ ├── IssuePullRequestTab.vue │ │ ├── data.ts │ │ └── index.ts │ ├── IssueTabView │ │ ├── IssueTabView.stories.ts │ │ ├── IssueTabView.vue │ │ ├── data.ts │ │ └── index.ts │ ├── IssuesPullRequestsCard │ │ ├── IssuesPullRequestsCard.stories.ts │ │ ├── IssuesPullRequestsCard.vue │ │ ├── data.ts │ │ └── index.ts │ ├── Loading │ │ ├── Loading.stories.ts │ │ ├── Loading.vue │ │ └── index.ts │ ├── Logo │ │ ├── Logo.stories.ts │ │ ├── Logo.vue │ │ └── index.ts │ ├── MarkdownContainer │ │ ├── MarkdownContainer.vue │ │ ├── MarkdownView.vue │ │ └── index.ts │ ├── NavHeader │ │ ├── NavHeader.stories.ts │ │ ├── NavHeader.vue │ │ └── index.ts │ ├── OrganizationPageLayout │ │ ├── OrganizationPageLayout.stories.ts │ │ ├── OrganizationPageLayout.vue │ │ ├── data.ts │ │ ├── index.ts │ │ └── mockedOrgProfile.ts │ ├── PaginationButtons │ │ ├── PaginationButtons.stories.ts │ │ ├── PaginationButtons.vue │ │ ├── data.ts │ │ └── index.ts │ ├── ProfilePageLayout │ │ ├── ProfilePageLayout.stories.ts │ │ ├── ProfilePageLayout.vue │ │ ├── data.ts │ │ ├── index.ts │ │ ├── mockProfilePageRepo.ts │ │ └── query │ │ │ ├── filter-type.query.ts │ │ │ ├── index.ts │ │ │ ├── language.query.ts │ │ │ ├── search.query.ts │ │ │ └── sort-by.query.ts │ ├── PullRequestTabView │ │ ├── PullRequestTabView.stories.ts │ │ ├── PullRequestTabView.vue │ │ ├── data.ts │ │ └── index.ts │ ├── RepoCard │ │ ├── RepoCard.stories.ts │ │ ├── RepoCard.vue │ │ └── index.ts │ ├── RepoFilters │ │ └── useRepoFilters.tsx │ ├── RepoSubHeader │ │ ├── ListItem.vue │ │ ├── RepoSubHeader.stories.ts │ │ ├── RepoSubHeader.vue │ │ ├── RepoSubHeaderExperiment.vue │ │ ├── RepoTabHeader.vue │ │ ├── data.ts │ │ └── index.ts │ ├── SearchDropdowns │ │ ├── SearchDropdowns.stories.ts │ │ ├── SearchDropdowns.vue │ │ └── index.ts │ ├── SearchFilter │ │ ├── SearchFilter.stories.ts │ │ ├── SearchFilter.vue │ │ ├── data.ts │ │ └── index.ts │ ├── SearchInput │ │ ├── SearchInput.stories.ts │ │ ├── SearchInput.vue │ │ └── index.ts │ ├── TabHeader │ │ ├── TabHeader.stories.ts │ │ ├── TabHeader.vue │ │ └── index.ts │ ├── TextWithIconAndCount │ │ ├── TextWithIconAndCount.stories.ts │ │ ├── TextWithIconAndCount.vue │ │ └── index.ts │ ├── UserAvatar │ │ ├── UserAvatar.stories.ts │ │ ├── UserAvatar.vue │ │ └── index.ts │ ├── UserProfileCard │ │ ├── UserProfileCard.stories.ts │ │ ├── UserProfileCard.vue │ │ ├── data.ts │ │ ├── index.ts │ │ └── mockedUserProfile.ts │ └── index.ts ├── composables │ ├── auth │ │ ├── index.ts │ │ ├── useAuth.ts │ │ └── useToken.ts │ ├── github │ │ ├── index.ts │ │ ├── queries │ │ │ ├── current-user.query.ts │ │ │ ├── index.ts │ │ │ ├── issues.query.ts │ │ │ ├── organization-profile.query.ts │ │ │ ├── organization-repos.query.ts │ │ │ ├── profile.query.ts │ │ │ ├── pull-request.query.ts │ │ │ ├── repo-branches.query.ts │ │ │ ├── repo-page.query.ts │ │ │ ├── repo-readme.query.ts │ │ │ ├── repo-tree.query.ts │ │ │ ├── user-gists.query.ts │ │ │ ├── user-repos.query.ts │ │ │ └── user-top-repos.query.ts │ │ ├── types │ │ │ ├── CurrentUser.ts │ │ │ ├── Gist.ts │ │ │ ├── Issues.ts │ │ │ ├── Label.ts │ │ │ ├── Milestones.ts │ │ │ ├── OrderBy.ts │ │ │ ├── OrganizationRepositories.ts │ │ │ ├── OrgsProfile.ts │ │ │ ├── Profile.ts │ │ │ ├── PullRequest.ts │ │ │ ├── UserTopRepos.ts │ │ │ ├── index.ts │ │ │ └── userRepos.ts │ │ ├── useGist.ts │ │ ├── useIssue.ts │ │ ├── useOrgProfile.ts │ │ ├── useOrganizationRepository.ts │ │ ├── usePullRequest.ts │ │ ├── useRepoBranch.ts │ │ ├── useRepoPage.ts │ │ ├── useRepoReadMe.ts │ │ ├── useRepoTree.ts │ │ ├── useRepository.ts │ │ ├── useUser.ts │ │ └── useUserRepo.ts │ ├── index.ts │ ├── reducer.ts │ ├── useApollo.ts │ ├── useFormatter.ts │ ├── useNav.ts │ └── useSearch.ts ├── globals │ ├── branch.ts │ ├── filterType.ts │ ├── filteredLanguage.ts │ ├── search.ts │ └── sortBy.ts ├── helpers │ ├── api.ts │ ├── countCalc.ts │ ├── formatByte.ts │ ├── getTime.ts │ ├── inArray.ts │ ├── index.ts │ ├── matchText.ts │ ├── modifyFilterTypeText.ts │ ├── parseFunctions.ts │ ├── parseIssue.ts │ ├── parsePullRequest.ts │ ├── parseRestAPIPullRequests.ts │ └── useApi.ts ├── init │ ├── index.ts │ └── setupGraphQL.ts ├── layouts │ ├── SiteLayout.vue │ └── index.ts ├── main.ts ├── quasar-user-options.js ├── router │ ├── index.ts │ └── utils.ts ├── shims-vue.d.ts ├── store │ ├── respoStore.ts │ └── userStore.ts ├── styles │ ├── quasar.scss │ └── quasar.variables.scss └── views │ ├── 404.vue │ ├── Auth │ ├── Auth.stories.js │ ├── Auth.vue │ └── index.ts │ ├── Home │ ├── Home.stories.ts │ ├── Home.vue │ └── index.ts │ ├── OrgsProfile │ ├── OrgsProfile.vue │ └── index.ts │ ├── Profile │ ├── Profile.vue │ └── index.ts │ ├── Redirect.vue │ ├── Repository │ ├── Code │ │ ├── Code.vue │ │ ├── Loader.vue │ │ └── index.ts │ ├── Issues │ │ ├── Issues.vue │ │ ├── IssuesWrapper.vue │ │ └── index.ts │ ├── PullRequests │ │ ├── PullRequestWrapper.vue │ │ ├── PullRequests.vue │ │ └── index.ts │ ├── RepositoryDetails.vue │ └── index.ts │ └── index.ts ├── tests ├── e2e │ ├── .eslintrc.js │ ├── plugins │ │ └── index.js │ ├── specs │ │ └── test.js │ └── support │ │ ├── commands.js │ │ └── index.js └── unit │ ├── components │ ├── AppInput.spec.ts │ ├── BranchMenu.spec.ts │ ├── GistsPanel.spec.ts │ ├── IssuePullRequestTab.spec.ts │ ├── IssueTabView.spec.ts │ ├── IssuesPullRequestsCard.spec.ts │ ├── ListItem.spec.ts │ ├── Logo.spec.ts │ ├── NavHeader.spec.ts │ ├── OrganizationPageLayout.spec.ts │ ├── PaginationButtons.spec.ts │ ├── ProfilePageLayout.spec.ts │ ├── PullRequestTabView.spec.ts │ ├── RepoCard.spec.ts │ ├── RepoSubHeader.spec.ts │ ├── RepoTabHeader.spec.ts │ ├── SearchDropdown.spec.ts │ ├── SearchFilter.spec.ts │ ├── SearchInput.spec.ts │ ├── TabHeader.spec.ts │ ├── UserAvatar.spec.ts │ └── UserProfileCard.spec.ts │ └── pages │ ├── Auth.spec.ts │ └── Home.spec.ts ├── tsconfig.json ├── vue.config.js └── yarn.lock /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: true 2 | -------------------------------------------------------------------------------- /.github/custom-issue-templates/x22 Clean up tasks.md: -------------------------------------------------------------------------------- 1 | # Clean up tasks 2 | 3 | - [ ] make star buttons work 4 | - [ ] make branch dropdown work 5 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 16 -------------------------------------------------------------------------------- /angular-apollo-tailwind/.env.example: -------------------------------------------------------------------------------- 1 | GITHUB_GRAPHQL_URL=https://api.github.com/graphql 2 | OAUTH_API_URL=https://api.starter.dev 3 | CLIENT_REDIRECT_URL=http://localhost:4200/redirect 4 | PRODUCTION=false 5 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | projects/node_modules 3 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | cd angular-apollo-tailwind 5 | yarn lint-staged 6 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/.husky/pre-push: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | cd angular-apollo-tailwind 5 | yarn lint-prepush 6 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/.prettierignore: -------------------------------------------------------------------------------- 1 | dist 2 | coverage 3 | e2e 4 | node_modules 5 | src/app/gql/github.schema.ts 6 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "all", 3 | "tabWidth": 2, 4 | "semi": true, 5 | "singleQuote": true, 6 | "bracketSpacing": true, 7 | "endOfLine": "auto" 8 | } 9 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/.stylelintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["stylelint-config-standard"], 3 | "rules": {} 4 | } 5 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/github-schema-loader.js: -------------------------------------------------------------------------------- 1 | const { schema } = require('@octokit/graphql-schema'); 2 | module.exports = schema.json; 3 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/projects/prism/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../dist/prism", 4 | "lib": { 5 | "entryFile": "src/public-api.ts" 6 | } 7 | } -------------------------------------------------------------------------------- /angular-apollo-tailwind/projects/prism/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "prism", 3 | "version": "0.0.1", 4 | "peerDependencies": { 5 | "@angular/common": "^13.0.0", 6 | "@angular/core": "^13.0.0" 7 | }, 8 | "dependencies": { 9 | "tslib": "^2.3.0" 10 | } 11 | } -------------------------------------------------------------------------------- /angular-apollo-tailwind/projects/prism/src/lib/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from './prism/prism.component'; 2 | export * from './token/token.component'; 3 | export * from './line/line.component'; 4 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/projects/prism/src/lib/components/prism/prism.component.html: -------------------------------------------------------------------------------- 1 |
7 |   
8 | 
9 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/projects/prism/src/lib/components/token/token.component.html: -------------------------------------------------------------------------------- 1 | 2 | {{ 3 | tokens[i].content 4 | }} 5 | 6 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/projects/prism/src/lib/themes/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dracula'; 2 | export * from './night-owl-light'; 3 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/projects/prism/src/lib/types/index.ts: -------------------------------------------------------------------------------- 1 | export * from './language'; 2 | export * from './model'; 3 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/projects/prism/src/lib/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from './themes-to-dict'; 2 | export * from './normalize-tokens'; 3 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/projects/prism/src/public-api.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Public API Surface of prism 3 | */ 4 | 5 | export * from './lib/components'; 6 | export * from './lib/types'; 7 | export * from './lib/prism.module'; 8 | 9 | // Themes 10 | export * from './lib/themes'; 11 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/projects/prism/tsconfig.lib.prod.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.lib.json", 4 | "compilerOptions": { 5 | "declarationMap": false 6 | }, 7 | "angularCompilerOptions": { 8 | "compilationMode": "partial" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/projects/shared/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../dist/shared", 4 | "lib": { 5 | "entryFile": "src/public-api.ts" 6 | } 7 | } -------------------------------------------------------------------------------- /angular-apollo-tailwind/projects/shared/src/lib/components/container/container.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { ContainerComponent } from './container.component'; 3 | 4 | @NgModule({ 5 | declarations: [ContainerComponent], 6 | exports: [ContainerComponent], 7 | }) 8 | export class ContainerComponentModule {} 9 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/projects/shared/src/lib/components/content-loading/index.ts: -------------------------------------------------------------------------------- 1 | export * from './bullet-list-loading/bullet-list-loading.component'; 2 | export * from './pulse-dots-loading/pulse-dots-loading.component'; 3 | export * from './text-line-loading/text-line-loading.component'; 4 | export * from './content-loading.module'; 5 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/projects/shared/src/lib/components/error-block/error-block.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 |
6 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/projects/shared/src/lib/components/error-block/error-block.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'sd-error-block', 5 | templateUrl: './error-block.component.html', 6 | }) 7 | export class ErrorBlockComponent {} 8 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/projects/shared/src/lib/components/error-block/index.ts: -------------------------------------------------------------------------------- 1 | export * from './error-block.module'; 2 | export * from './error-block.component'; 3 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/projects/shared/src/lib/index.ts: -------------------------------------------------------------------------------- 1 | export * from './pipes'; 2 | export * from './components'; 3 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/projects/shared/src/lib/pipes/dfns/format-distance.pipe.spec.ts: -------------------------------------------------------------------------------- 1 | import { FormatDistancePipe } from './format-distance.pipe'; 2 | 3 | describe('FormatDistancePipe', () => { 4 | it('create an instance', () => { 5 | const pipe = new FormatDistancePipe(); 6 | expect(pipe).toBeTruthy(); 7 | }); 8 | }); 9 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/projects/shared/src/lib/pipes/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dfns/format-distance.pipe'; 2 | export * from './number/round-up.pipe'; 3 | export * from './markdown/markdown.pipe'; 4 | export * from './generate-url-with-protocol/generate-url-with-protocol.pipe'; 5 | export * from './pipes.module'; 6 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/projects/shared/src/lib/pipes/markdown/markdown.pipe.spec.ts: -------------------------------------------------------------------------------- 1 | import { MarkdownPipe } from './markdown.pipe'; 2 | 3 | describe('MarkdownPipe', () => { 4 | it('create an instance', () => { 5 | const pipe = new MarkdownPipe(); 6 | expect(pipe).toBeTruthy(); 7 | }); 8 | }); 9 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/projects/shared/src/lib/pipes/number/round-up.pipe.spec.ts: -------------------------------------------------------------------------------- 1 | import { RoundUpPipe } from './round-up.pipe'; 2 | 3 | describe('RoundUpPipe', () => { 4 | it('create an instance', () => { 5 | const pipe = new RoundUpPipe(); 6 | expect(pipe).toBeTruthy(); 7 | }); 8 | }); 9 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/projects/shared/src/public-api.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Public API Surface of shared 3 | */ 4 | 5 | // Services 6 | 7 | // Components 8 | export * from './lib/components'; 9 | 10 | // Modules 11 | export * from './lib/shared.module'; 12 | 13 | // Pipes 14 | export * from './lib/pipes'; 15 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/projects/shared/tsconfig.lib.prod.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.lib.json", 4 | "compilerOptions": { 5 | "declarationMap": false 6 | }, 7 | "angularCompilerOptions": { 8 | "compilationMode": "partial" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/_redirects: -------------------------------------------------------------------------------- 1 | /* /index.html 200 2 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/app.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thisdot/starter.dev-github-showcases/45cd826616d8443621f1df0d1b8ceda9e7ef696e/angular-apollo-tailwind/src/app/app.component.css -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'], 7 | }) 8 | export class AppComponent {} 9 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/components/filters/filter.models.ts: -------------------------------------------------------------------------------- 1 | export enum TypeFilter { 2 | ALL = 'all', 3 | FORKED = 'forked', 4 | ARCHIVED = 'archived', 5 | } 6 | 7 | export interface LanguageFilter { 8 | label: string; 9 | value: string; 10 | } 11 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/components/toaster/toast/toast.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thisdot/starter.dev-github-showcases/45cd826616d8443621f1df0d1b8ceda9e7ef696e/angular-apollo-tailwind/src/app/components/toaster/toast/toast.component.css -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/components/toaster/toaster.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thisdot/starter.dev-github-showcases/45cd826616d8443621f1df0d1b8ceda9e7ef696e/angular-apollo-tailwind/src/app/components/toaster/toaster.component.css -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/components/toaster/toaster.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 |
6 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/components/toaster/toaster.model.ts: -------------------------------------------------------------------------------- 1 | export enum ToasterType { 2 | ERROR = 'error', 3 | SUCCESS = 'success', 4 | INFO = 'info', 5 | WARNING = 'warning', 6 | } 7 | 8 | export interface ToastEvent { 9 | title: string; 10 | message: string; 11 | type: ToasterType; 12 | } 13 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/file-viewer/components/file-code/file-code.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thisdot/starter.dev-github-showcases/45cd826616d8443621f1df0d1b8ceda9e7ef696e/angular-apollo-tailwind/src/app/file-viewer/components/file-code/file-code.component.css -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/file-viewer/components/file-code/file-code.component.html: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/file-viewer/components/file-explorer-about/topics/topics.component.css: -------------------------------------------------------------------------------- 1 | .topic { 2 | @apply inline-block bg-blue-100 text-blue-600 text-xs font-medium py-1 px-2 rounded-xl mr-1.5 hover:text-white hover:bg-blue-600 transition-colors cursor-pointer; 3 | } 4 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/file-viewer/components/file-explorer-about/topics/topics.component.html: -------------------------------------------------------------------------------- 1 |

topics works!

2 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/file-viewer/file-explorer-list-container/file-explorer-list-container.component.css: -------------------------------------------------------------------------------- 1 | .file-explorer-list-container { 2 | @apply border rounded border-gray-300 text-sm; 3 | } 4 | 5 | .cellBack { 6 | @apply block py-2 px-4 border-b border-gray-200 hover:bg-gray-50 cursor-pointer; 7 | } 8 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/file-viewer/file-explorer-nav/file-explorer-nav-skeleton/file-explorer-nav-skeleton.component.html: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/file-viewer/file-explorer-nav/file-explorer-nav-skeleton/index.ts: -------------------------------------------------------------------------------- 1 | export * from './file-explorer-nav-skeleton.component'; 2 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/file-viewer/file-explorer-nav/index.ts: -------------------------------------------------------------------------------- 1 | export * from './file-explorer-nav.component'; 2 | export * from './file-explorer-nav-skeleton'; 3 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/file-viewer/repo-read-me/read-me/read-me.component.css: -------------------------------------------------------------------------------- 1 | :host img { 2 | max-width: 100%; 3 | } 4 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/gql/index.ts: -------------------------------------------------------------------------------- 1 | export * from './github.schema'; 2 | export * from './models'; 3 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/gql/models/org-profile.ts: -------------------------------------------------------------------------------- 1 | export interface Org { 2 | id: string; 3 | avatarUrl: string; 4 | name: string; 5 | } 6 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/gql/models/pagination.ts: -------------------------------------------------------------------------------- 1 | export interface PaginationEvent { 2 | before?: string | null; 3 | after?: string | null; 4 | } 5 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/gql/models/repo-file.ts: -------------------------------------------------------------------------------- 1 | import { Language } from '@prism'; 2 | 3 | export interface FileDetails { 4 | byteSize: string | number; 5 | extension: string; 6 | language: Language; 7 | text?: string | null; 8 | lines: number; 9 | } 10 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/gql/queries/current-user.query.gql: -------------------------------------------------------------------------------- 1 | query CurrentUser { 2 | viewer { 3 | id 4 | avatarUrl 5 | login 6 | name 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/gql/queries/org-profile.query.gql: -------------------------------------------------------------------------------- 1 | query OrgProfile($orgname: String!) { 2 | organization(login: $orgname) { 3 | id 4 | avatarUrl 5 | name 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/gql/queries/repo-read-me.query.gql: -------------------------------------------------------------------------------- 1 | query RepoReadMe($owner: String!, $name: String!, $expression: String!) { 2 | repository(owner: $owner, name: $name) { 3 | id 4 | readme: object(expression: $expression) { 5 | ... on Blob { 6 | text 7 | } 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/home/home.component.css: -------------------------------------------------------------------------------- 1 | .netlify-badge-container { 2 | @apply flex justify-center mt-auto pb-5 pt-6; 3 | } 4 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/issues/components/issues-empty/issues-empty.component.css: -------------------------------------------------------------------------------- 1 | .issues-empty-container { 2 | @apply w-full py-16 flex flex-col items-center; 3 | } 4 | 5 | .icon { 6 | @apply w-6 h-6 text-gray-600; 7 | } 8 | 9 | .heading { 10 | @apply text-2xl font-semibold text-gray-900 text-center my-4; 11 | } 12 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/issues/components/issues-filters/issues-filters.component.css: -------------------------------------------------------------------------------- 1 | .filters-container { 2 | @apply flex flex-wrap space-x-1 space-y-2 md:space-x-0 md:space-y-0 items-center justify-between p-4 bg-gray-100 border-b; 3 | } 4 | 5 | .typeIcon { 6 | @apply w-5 h-5 inline mr-1.5 mb-0.5; 7 | } 8 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/profile/components/file-text/file-text.component.css: -------------------------------------------------------------------------------- 1 | .codeBlock { 2 | border-spacing: 5px; 3 | background-color: #ffffff !important; 4 | @apply text-left text-xs py-1 px-8 overflow-auto; 5 | } 6 | 7 | .lineNumber { 8 | @apply table-cell text-right pr-4 select-none text-gray-500; 9 | } 10 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/profile/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from './profile-repo-list'; 2 | export * from './profile-repo-list-item'; 3 | export * from './profile-repo-list-item-skeleton'; 4 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/profile/components/profile-repo-list-item-skeleton/index.ts: -------------------------------------------------------------------------------- 1 | export * from './profile-repo-list-item-skeleton.component'; 2 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/profile/components/profile-repo-list-item/index.ts: -------------------------------------------------------------------------------- 1 | export * from './profile-repo-list-item.component'; 2 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/profile/components/profile-repo-list/index.ts: -------------------------------------------------------------------------------- 1 | export * from './profile-repo-list.component'; 2 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/profile/org-about/org-about.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thisdot/starter.dev-github-showcases/45cd826616d8443621f1df0d1b8ceda9e7ef696e/angular-apollo-tailwind/src/app/profile/org-about/org-about.component.css -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/profile/profile-repos-view/index.ts: -------------------------------------------------------------------------------- 1 | export * from './profile-repos-view.component'; 2 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/pull-requests/components/pull-requests-filters/pull-requests-filters.component.css: -------------------------------------------------------------------------------- 1 | .filters-container { 2 | @apply flex flex-wrap space-x-1 space-y-2 md:space-x-0 md:space-y-0 items-center justify-between p-4 bg-gray-100 border-b; 3 | } 4 | 5 | .typeIcon { 6 | @apply w-5 h-5 inline mr-1.5 mb-0.5; 7 | } 8 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/repos/components/repo-list/repo-list.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thisdot/starter.dev-github-showcases/45cd826616d8443621f1df0d1b8ceda9e7ef696e/angular-apollo-tailwind/src/app/repos/components/repo-list/repo-list.component.css -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/repos/components/user-gists/user-gists.component.css: -------------------------------------------------------------------------------- 1 | .link { 2 | @apply text-sm hover:text-blue-500 hover:underline; 3 | } 4 | 5 | .error { 6 | @apply text-sm text-gray-600 font-medium; 7 | } 8 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/repos/repo-header/repo-header.component.css: -------------------------------------------------------------------------------- 1 | .wrapper { 2 | @apply pt-6 px-12 bg-gray-100 border-b border-gray-300; 3 | } 4 | 5 | .topRow { 6 | @apply flex flex-col space-y-8 lg:space-y-0 lg:flex-row lg:items-center justify-between; 7 | } 8 | 9 | .bottomRow { 10 | @apply mt-6; 11 | } 12 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/repos/repos.component.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 7 |
8 |
9 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from './route-utils'; 2 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/app/utils/route-utils.ts: -------------------------------------------------------------------------------- 1 | import { UrlSegment } from '@angular/router'; 2 | 3 | export const getPathSegments = (segments: UrlSegment[]): string[] => 4 | segments.map(({ path }: UrlSegment) => path); 5 | 6 | export const isOrgPath = (path: string) => { 7 | return path === 'orgs'; 8 | }; 9 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thisdot/starter.dev-github-showcases/45cd826616d8443621f1df0d1b8ceda9e7ef696e/angular-apollo-tailwind/src/assets/.gitkeep -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | apiUrl: 'https://api.starter.dev/.netlify/functions/server', 4 | graphApiUrl: 'https://api.github.com/graphql', 5 | redirectUrl: 'https://angular-apollo-tailwind.starter.dev/redirect', 6 | }; 7 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thisdot/starter.dev-github-showcases/45cd826616d8443621f1df0d1b8ceda9e7ef696e/angular-apollo-tailwind/src/favicon.ico -------------------------------------------------------------------------------- /angular-apollo-tailwind/src/styles.css: -------------------------------------------------------------------------------- 1 | @import 'tailwindcss/base'; 2 | @import 'tailwindcss/components'; 3 | @import 'tailwindcss/utilities'; 4 | 5 | html, 6 | body { 7 | height: 100%; 8 | } 9 | -------------------------------------------------------------------------------- /angular-apollo-tailwind/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": ["src/**/*.ts"] 4 | } 5 | -------------------------------------------------------------------------------- /angular-ngrx-scss/.env.example: -------------------------------------------------------------------------------- 1 | GITHUB_URL=https://api.github.com 2 | OAUTH_API_URL=/api 3 | CLIENT_REDIRECT_URL=http://localhost:4200/redirect 4 | PRODUCTION=false 5 | -------------------------------------------------------------------------------- /angular-ngrx-scss/.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | projects/node_modules 3 | -------------------------------------------------------------------------------- /angular-ngrx-scss/.prettierignore: -------------------------------------------------------------------------------- 1 | dist 2 | coverage 3 | e2e 4 | node_modules 5 | -------------------------------------------------------------------------------- /angular-ngrx-scss/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "all", 3 | "tabWidth": 2, 4 | "semi": true, 5 | "singleQuote": true, 6 | "bracketSpacing": true, 7 | "endOfLine": "auto" 8 | } 9 | -------------------------------------------------------------------------------- /angular-ngrx-scss/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846 3 | "recommendations": ["angular.ng-template"] 4 | } 5 | -------------------------------------------------------------------------------- /angular-ngrx-scss/projects/prism/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../dist/prism", 4 | "lib": { 5 | "entryFile": "src/public-api.ts" 6 | } 7 | } -------------------------------------------------------------------------------- /angular-ngrx-scss/projects/prism/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "prism", 3 | "version": "0.0.1", 4 | "peerDependencies": { 5 | "@angular/common": "16.1.0", 6 | "@angular/core": "16.1.0" 7 | }, 8 | "dependencies": { 9 | "tslib": "^2.5.0" 10 | } 11 | } -------------------------------------------------------------------------------- /angular-ngrx-scss/projects/prism/src/lib/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from './prism/prism.component'; 2 | export * from './token/token.component'; 3 | export * from './line/line.component'; 4 | -------------------------------------------------------------------------------- /angular-ngrx-scss/projects/prism/src/lib/components/prism/prism.component.html: -------------------------------------------------------------------------------- 1 |
7 |   
8 | 
9 | -------------------------------------------------------------------------------- /angular-ngrx-scss/projects/prism/src/lib/components/token/token.component.html: -------------------------------------------------------------------------------- 1 | 2 | {{ 3 | tokens[i].content 4 | }} 5 | 6 | -------------------------------------------------------------------------------- /angular-ngrx-scss/projects/prism/src/lib/themes/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dracula'; 2 | export * from './night-owl-light'; 3 | -------------------------------------------------------------------------------- /angular-ngrx-scss/projects/prism/src/lib/types/index.ts: -------------------------------------------------------------------------------- 1 | export * from './language'; 2 | export * from './model'; 3 | -------------------------------------------------------------------------------- /angular-ngrx-scss/projects/prism/src/lib/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from './themes-to-dict'; 2 | export * from './normalize-tokens'; 3 | -------------------------------------------------------------------------------- /angular-ngrx-scss/projects/prism/src/public-api.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Public API Surface of prism 3 | */ 4 | 5 | export * from './lib/components'; 6 | export * from './lib/types'; 7 | export * from './lib/prism.module'; 8 | 9 | // Themes 10 | export * from './lib/themes'; 11 | -------------------------------------------------------------------------------- /angular-ngrx-scss/projects/prism/tsconfig.lib.prod.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.lib.json", 4 | "compilerOptions": { 5 | "declarationMap": false 6 | }, 7 | "angularCompilerOptions": { 8 | "compilationMode": "partial" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /angular-ngrx-scss/scripts/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "parserOptions": { 3 | "ecmaVersion": 2022, 4 | "sourceType": "module" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /angular-ngrx-scss/scripts/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "module" 3 | } 4 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/_redirects: -------------------------------------------------------------------------------- 1 | /* /index.html 200 2 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/app/app.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thisdot/starter.dev-github-showcases/45cd826616d8443621f1df0d1b8ceda9e7ef696e/angular-ngrx-scss/src/app/app.component.scss -------------------------------------------------------------------------------- /angular-ngrx-scss/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.scss'], 7 | }) 8 | export class AppComponent {} 9 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/app/auth/interfaces/auth.ts: -------------------------------------------------------------------------------- 1 | export interface AuthResponse { 2 | access_token?: string; 3 | } 4 | 5 | export interface SignOutResponse { 6 | message: string; 7 | } 8 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/app/file-viewer/components/file-code/file-code.component.html: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/app/file-viewer/components/file-code/file-code.component.scss: -------------------------------------------------------------------------------- 1 | @use 'variables'; 2 | 3 | :host { 4 | border: 1px solid variables.$gray100; 5 | display: block; 6 | } 7 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/app/file-viewer/components/file-text/file-text.component.html: -------------------------------------------------------------------------------- 1 |
2 |   
3 | {{i + 1}} 4 | {{line}} 5 |
6 |
7 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/app/file-viewer/file-explorer-blob/file-explorer-blob.component.scss: -------------------------------------------------------------------------------- 1 | .file-viewer { 2 | overflow: auto; 3 | } 4 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/app/file-viewer/file-explorer/file-explorer.component.scss: -------------------------------------------------------------------------------- 1 | @use 'functions'; 2 | 3 | .container.subpage { 4 | gap: functions.rem(28); 5 | } 6 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/app/home/profile/org-profile/org-info/org-info.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-org-info', 5 | templateUrl: './org-info.component.html', 6 | styleUrls: ['./org-info.component.scss'], 7 | }) 8 | export class OrganizationInfoComponent {} 9 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/app/issues/components/issues-list/issues-list.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | 5 | 6 |
7 |
8 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/app/issues/components/issues.component.scss: -------------------------------------------------------------------------------- 1 | @use 'variables'; 2 | @use 'functions'; 3 | 4 | .issues-container { 5 | border-bottom-left-radius: variables.$padding; 6 | border-bottom-right-radius: variables.$padding; 7 | border: 1px solid variables.$gray200; 8 | margin-bottom: functions.rem(14); 9 | } 10 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/app/repository/components/repository-details/repository-details.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/app/repository/components/repository-details/repository-details.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thisdot/starter.dev-github-showcases/45cd826616d8443621f1df0d1b8ceda9e7ef696e/angular-ngrx-scss/src/app/repository/components/repository-details/repository-details.component.scss -------------------------------------------------------------------------------- /angular-ngrx-scss/src/app/shared/components/clear-filters-button/clear-filters-button.component.html: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/app/shared/components/repo-list/repo-list.component.html: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/app/shared/components/repo-list/repo-list.component.scss: -------------------------------------------------------------------------------- 1 | ul { 2 | list-style: none; 3 | 4 | li { 5 | padding: 32px 0; 6 | border-bottom: 1px solid rgba(229, 231, 235, 1); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/app/shared/styles/functions.scss: -------------------------------------------------------------------------------- 1 | @function rem($pxValue, $sizeBase: 14) { 2 | $remValue: ($pxValue / $sizeBase) + rem; 3 | @return $remValue; 4 | } 5 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/app/state/auth/auth.state.ts: -------------------------------------------------------------------------------- 1 | export interface AuthState { 2 | isAuthenticated: boolean; 3 | loading: boolean; 4 | authUser: AuthUserData; 5 | } 6 | 7 | export interface AuthUserData { 8 | avatar: string; 9 | email: string; 10 | username: string; 11 | } 12 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/app/state/auth/index.ts: -------------------------------------------------------------------------------- 1 | export * from './auth.actions'; 2 | export * from './auth.effects'; 3 | export * from './auth.reducer'; 4 | export * from './auth.selectors'; 5 | export * from './auth.state'; 6 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/app/state/index.ts: -------------------------------------------------------------------------------- 1 | export * from './app.reducer'; 2 | export * from './app.state'; 3 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/app/state/profile/index.ts: -------------------------------------------------------------------------------- 1 | export * from './profile.actions'; 2 | export * from './profile.effects'; 3 | export * from './profile.reducer'; 4 | export * from './profile.selectors'; 5 | export * from './profile.state'; 6 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/app/state/repository/index.ts: -------------------------------------------------------------------------------- 1 | export * from './repository.actions'; 2 | export * from './repository.effects'; 3 | export * from './repository.reducer'; 4 | export * from './repository.selectors'; 5 | export * from './repository.state'; 6 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/app/state/user/index.ts: -------------------------------------------------------------------------------- 1 | export * from './user.actions'; 2 | export * from './user.effects'; 3 | export * from './user.reducer'; 4 | export * from './user.selectors'; 5 | export * from './user.state'; 6 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thisdot/starter.dev-github-showcases/45cd826616d8443621f1df0d1b8ceda9e7ef696e/angular-ngrx-scss/src/assets/.gitkeep -------------------------------------------------------------------------------- /angular-ngrx-scss/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | apiUrl: 'https://api.starter.dev/.netlify/functions/server', 4 | githubUrl: 'https://api.github.com', 5 | redirectUrl: 'https://angular-ngrx-scss.starter.dev/redirect', 6 | }; 7 | -------------------------------------------------------------------------------- /angular-ngrx-scss/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thisdot/starter.dev-github-showcases/45cd826616d8443621f1df0d1b8ceda9e7ef696e/angular-ngrx-scss/src/favicon.ico -------------------------------------------------------------------------------- /angular-ngrx-scss/typings.d.ts: -------------------------------------------------------------------------------- 1 | interface LanguageColors { 2 | [language: string]: string; 3 | } 4 | 5 | declare module 'src/assets/language-colors.json' { 6 | const value: LanguageColors; 7 | export default value; 8 | } 9 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/.env.example: -------------------------------------------------------------------------------- 1 | REACT_APP_API_URL=https://api.starter.dev/api 2 | REACT_APP_BASE_URL=http://localhost:3000 3 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | npx pretty-quick --staged 5 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/.husky/pre-push: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | # causes issues related to testing at an individual library level. Perhaps an investigation needed 5 | # cd "$(dirname -- "$0")" && npm run test:ci 6 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/.prettierignore: -------------------------------------------------------------------------------- 1 | /build 2 | /coverage 3 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "es5", 3 | "singleQuote": true, 4 | "useTabs": true, 5 | "tabWidth": 1 6 | } 7 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/.storybook/preview.js: -------------------------------------------------------------------------------- 1 | import '../src/index.css'; 2 | 3 | export const parameters = { 4 | actions: { argTypesRegex: '^on[A-Z].*' }, 5 | controls: { 6 | matchers: { 7 | color: /(background|color)$/i, 8 | date: /Date$/, 9 | }, 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/public/_redirects: -------------------------------------------------------------------------------- 1 | /* /index.html 200 2 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "start_url": ".", 5 | "display": "standalone", 6 | "theme_color": "#000000", 7 | "background_color": "#ffffff" 8 | } 9 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/src/App.test.tsx: -------------------------------------------------------------------------------- 1 | import { render, screen } from '@testing-library/react'; 2 | import App from './App'; 3 | 4 | test('renders learn react link', () => { 5 | render(); 6 | const linkElement = screen.getByText(/learn react/i); 7 | expect(linkElement).toBeInTheDocument(); 8 | }); 9 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/src/components/Loading/index.ts: -------------------------------------------------------------------------------- 1 | export { default as LoadingBulletList } from './LoadingBulletList'; 2 | export { default as LoadingTextLine } from './LoadingTextLine'; 3 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/src/components/pull-request/types.ts: -------------------------------------------------------------------------------- 1 | export type PRTabValues = 'open' | 'close'; 2 | export type State = 'merged' | 'closed' | 'open'; 3 | export type DropdownTitle = 'Label' | 'Sort' | 'Milestones'; 4 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/src/components/repo-page/RepoPage.error.tsx: -------------------------------------------------------------------------------- 1 | interface RepoPageErrorProps { 2 | error: Error; 3 | } 4 | 5 | function RepoPageError({ error }: RepoPageErrorProps) { 6 | return
Error: {error.message}
; 7 | } 8 | 9 | export default RepoPageError; 10 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/src/constants/auth.constants.ts: -------------------------------------------------------------------------------- 1 | export const AUTH_TOKEN = 'token'; 2 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/src/helpers/buildPrIssueResolution.ts: -------------------------------------------------------------------------------- 1 | export const buildPrIssueResolution = (state: string) => { 2 | if (state === 'merged') { 3 | return `was merged on`; 4 | } 5 | 6 | if (state === 'closed') { 7 | return `was closed on`; 8 | } 9 | return `on`; 10 | }; 11 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/src/helpers/getPullsState.ts: -------------------------------------------------------------------------------- 1 | import { IssuePRData } from '@/types/types'; 2 | 3 | export const getPullsState = (pr: IssuePRData) => { 4 | if (pr.state === 'open') { 5 | return 'open'; 6 | } 7 | 8 | if (pr.state === 'closed' && pr.merged_at) { 9 | return 'merged'; 10 | } 11 | return 'closed'; 12 | }; 13 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/src/helpers/objectToQueryString.ts: -------------------------------------------------------------------------------- 1 | export default function convertObjectToQueryString( 2 | object: Record 3 | ) { 4 | return new URLSearchParams(object).toString(); 5 | } 6 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/src/helpers/parseSortParams.ts: -------------------------------------------------------------------------------- 1 | export const parseSortParams = ({ 2 | options, 3 | value, 4 | position, 5 | }: { 6 | options: Record; 7 | position: number; 8 | value?: string; 9 | }) => 10 | Object.keys(options) 11 | .find((key) => options[key] === value) 12 | ?.split('^')[position]; 13 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/src/helpers/replaceSpaceWithPlus.ts: -------------------------------------------------------------------------------- 1 | export default function replaceSpaceWithPlus(str: string) { 2 | return str.split(' ').join('+'); 3 | } 4 | 5 | export const replaceEncodedSpaceWithPlus = (str: string) => { 6 | return str.split(encodeURIComponent(' ')).join('+'); 7 | }; 8 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/src/interfaces/auth.interfaces.ts: -------------------------------------------------------------------------------- 1 | export interface AuthSuccessResponse { 2 | access_token: string; 3 | scope: string; 4 | token_type: string; 5 | } 6 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/src/interfaces/gists.interfaces.ts: -------------------------------------------------------------------------------- 1 | export interface Gist { 2 | url: string; 3 | id: string; 4 | html_url: string; 5 | files: { 6 | [key: string]: { 7 | filename: string; 8 | }; 9 | }; 10 | } 11 | 12 | export interface GistWithFilename extends Gist { 13 | filename: string; 14 | } 15 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/src/routes/Index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Outlet } from 'react-router-dom'; 3 | import Header from '../components/header/Header'; 4 | 5 | const Index = () => { 6 | return ( 7 | <> 8 |
9 | 10 | 11 | ); 12 | }; 13 | 14 | export default Index; 15 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/src/routes/redirect.tsx: -------------------------------------------------------------------------------- 1 | import { useSetToken } from '../hooks/auth/use-set-token'; 2 | 3 | export default function Redirect() { 4 | useSetToken(); 5 | 6 | return

Redirecting...

; 7 | } 8 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/src/routes/repo/repository-issues.tsx: -------------------------------------------------------------------------------- 1 | import IssueCtrl from '../../components/repo-issues/Issues/Issues'; 2 | 3 | export default function RepoIssues() { 4 | return ; 5 | } 6 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/src/routes/repo/repository-pull-request.tsx: -------------------------------------------------------------------------------- 1 | import PullRequestCtrl from '../../components/pull-request/pull-request/PullRequest.data'; 2 | 3 | export default function RepoPullRequest() { 4 | return ; 5 | } 6 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/src/setupTests.ts: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /cra-rxjs-styled-components/tsconfig.paths.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "paths": { "@/*": ["./src/*"] } 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /expo-zustand-styled-components/.env.example: -------------------------------------------------------------------------------- 1 | GITHUB_URL=https://api.github.com 2 | SERVER_BASE_URL=http://localhost:9999 3 | WEB_REDIRECT_URI=http://localhost:19006 4 | MOBILE_REDIRECT_URI=exp://192.168.1.149:19000 5 | GITHUB_CLIENT_ID=************ 6 | GITHUB_CLIENT_SECRET=************ -------------------------------------------------------------------------------- /expo-zustand-styled-components/.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .vscode/ 3 | *.local 4 | coverage/ -------------------------------------------------------------------------------- /expo-zustand-styled-components/.prettierignore: -------------------------------------------------------------------------------- 1 | # Ignore artifacts: 2 | dist -------------------------------------------------------------------------------- /expo-zustand-styled-components/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 100, 3 | "tabWidth": 2, 4 | "singleQuote": true, 5 | "bracketSameLine": true, 6 | "trailingComma": "es5" 7 | } 8 | -------------------------------------------------------------------------------- /expo-zustand-styled-components/__mocks__/@react-native-async-storage/async-storage.ts: -------------------------------------------------------------------------------- 1 | export { default } from '@react-native-async-storage/async-storage/jest/async-storage-mock'; 2 | -------------------------------------------------------------------------------- /expo-zustand-styled-components/assets/about-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thisdot/starter.dev-github-showcases/45cd826616d8443621f1df0d1b8ceda9e7ef696e/expo-zustand-styled-components/assets/about-icon.png -------------------------------------------------------------------------------- /expo-zustand-styled-components/assets/adaptive-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thisdot/starter.dev-github-showcases/45cd826616d8443621f1df0d1b8ceda9e7ef696e/expo-zustand-styled-components/assets/adaptive-icon.png -------------------------------------------------------------------------------- /expo-zustand-styled-components/assets/arrow-down-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thisdot/starter.dev-github-showcases/45cd826616d8443621f1df0d1b8ceda9e7ef696e/expo-zustand-styled-components/assets/arrow-down-icon.png -------------------------------------------------------------------------------- /expo-zustand-styled-components/assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thisdot/starter.dev-github-showcases/45cd826616d8443621f1df0d1b8ceda9e7ef696e/expo-zustand-styled-components/assets/favicon.png -------------------------------------------------------------------------------- /expo-zustand-styled-components/assets/fonts/courier.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thisdot/starter.dev-github-showcases/45cd826616d8443621f1df0d1b8ceda9e7ef696e/expo-zustand-styled-components/assets/fonts/courier.ttf -------------------------------------------------------------------------------- /expo-zustand-styled-components/assets/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thisdot/starter.dev-github-showcases/45cd826616d8443621f1df0d1b8ceda9e7ef696e/expo-zustand-styled-components/assets/icon.png -------------------------------------------------------------------------------- /expo-zustand-styled-components/assets/reload-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thisdot/starter.dev-github-showcases/45cd826616d8443621f1df0d1b8ceda9e7ef696e/expo-zustand-styled-components/assets/reload-icon.png -------------------------------------------------------------------------------- /expo-zustand-styled-components/assets/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thisdot/starter.dev-github-showcases/45cd826616d8443621f1df0d1b8ceda9e7ef696e/expo-zustand-styled-components/assets/splash.png -------------------------------------------------------------------------------- /expo-zustand-styled-components/assets/starter-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thisdot/starter.dev-github-showcases/45cd826616d8443621f1df0d1b8ceda9e7ef696e/expo-zustand-styled-components/assets/starter-logo.png -------------------------------------------------------------------------------- /expo-zustand-styled-components/netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | functions = "functions" 3 | 4 | [dev] 5 | publish = "web-build" 6 | 7 | [[redirects]] 8 | from="/*" 9 | to="/index.html" 10 | status=200 11 | -------------------------------------------------------------------------------- /expo-zustand-styled-components/setup-tests.ts: -------------------------------------------------------------------------------- 1 | import '@testing-library/jest-native/extend-expect'; -------------------------------------------------------------------------------- /expo-zustand-styled-components/src/components/BranchNavigation/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './BranchNavigation'; 2 | -------------------------------------------------------------------------------- /expo-zustand-styled-components/src/components/Button/Button.test.tsx: -------------------------------------------------------------------------------- 1 | import { render, screen } from '@testing-library/react-native'; 2 | import Button from '.'; 3 | 4 | test('The Button component is rendered', () => { 5 | render(