├── .circleci └── config.yml ├── .codeinventory.yml ├── .dockerignore ├── .editorconfig ├── .env ├── .gitignore ├── .nvmrc ├── AngularClass License.txt ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONFIGURATION.md ├── CONTRIBUTING.md ├── Dockerfiles ├── code-dot-gov └── your-city ├── ISSUE_TEMPLATE.md ├── LICENSE.md ├── PULL_REQUEST_TEMPLATE.md ├── README.md ├── about.yml ├── config ├── CNAME ├── code-gov-config.json ├── critical-css-plugin │ └── index.js ├── examples │ ├── code-dot-gov.json │ ├── pub-code.json │ └── your-city.json ├── github-deploy │ └── index.js ├── head-config.common.js ├── helpers.js ├── html-elements-plugin │ └── index.js ├── karma.conf.js ├── modules │ └── angular2-hmr-prod.js ├── protractor.conf.js ├── spec-bundle.js ├── webpack.analyze.js ├── webpack.common.js ├── webpack.dev.js ├── webpack.federalist-deploy.js ├── webpack.prod.js ├── webpack.stag.js └── webpack.test.js ├── dependency_licenses.json ├── hound.yml ├── karma.conf.js ├── package-lock.json ├── package.json ├── protractor.conf.js ├── src ├── app │ ├── app.module.ts │ ├── app.resolver.ts │ ├── app.routes.ts │ ├── components │ │ ├── agency-list-item │ │ │ ├── agency-list-item.component.ts │ │ │ ├── agency-list-item.styles.scss │ │ │ ├── agency-list-item.template.html │ │ │ └── index.ts │ │ ├── app │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.e2e.ts │ │ │ ├── app.style.scss │ │ │ ├── app.template.html │ │ │ └── index.ts │ │ ├── autocomplete-result │ │ │ ├── autocomplete-result.component.spec.ts │ │ │ ├── autocomplete-result.component.ts │ │ │ ├── autocomplete-result.style.scss │ │ │ ├── autocomplete-result.template.html │ │ │ └── index.ts │ │ ├── autocomplete │ │ │ ├── autocomplete.component.spec.ts │ │ │ ├── autocomplete.component.ts │ │ │ ├── autocomplete.style.scss │ │ │ ├── autocomplete.template.html │ │ │ └── index.ts │ │ ├── base-filter-page │ │ │ ├── base-filter-page.component.ts │ │ │ ├── base-filter-page.styles.scss │ │ │ └── index.ts │ │ ├── browse-projects │ │ │ ├── browse-projects.component.ts │ │ │ ├── browse-projects.styles.scss │ │ │ ├── browse-projects.template.html │ │ │ └── index.ts │ │ ├── error-modal │ │ │ ├── error-modal.component.ts │ │ │ ├── error-modal.style.scss │ │ │ ├── error-modal.template.html │ │ │ └── index.ts │ │ ├── explore-code │ │ │ ├── activity-list │ │ │ │ ├── activity-list.component.ts │ │ │ │ ├── activity-list.style.scss │ │ │ │ ├── activity-list.template.html │ │ │ │ └── index.ts │ │ │ ├── agencies │ │ │ │ ├── agencies.component.ts │ │ │ │ ├── agencies.style.scss │ │ │ │ ├── agencies.template.html │ │ │ │ └── index.ts │ │ │ ├── agency │ │ │ │ ├── agency.component.spec.ts │ │ │ │ ├── agency.component.ts │ │ │ │ ├── agency.styles.scss │ │ │ │ ├── agency.template.html │ │ │ │ └── index.ts │ │ │ ├── explore-code.component.ts │ │ │ ├── explore-code.style.scss │ │ │ ├── explore-code.template.html │ │ │ ├── index.ts │ │ │ ├── repo │ │ │ │ ├── index.ts │ │ │ │ ├── repo.component.html │ │ │ │ ├── repo.component.scss │ │ │ │ ├── repo.component.spec.ts │ │ │ │ └── repo.component.ts │ │ │ └── repos │ │ │ │ ├── index.ts │ │ │ │ ├── repos-component.ts │ │ │ │ └── repos.template.html │ │ ├── faqs │ │ │ ├── faqs.component.ts │ │ │ ├── faqs.styles.scss │ │ │ ├── faqs.template.html │ │ │ └── index.ts │ │ ├── footer │ │ │ ├── footer.component.ts │ │ │ ├── footer.template.html │ │ │ └── index.ts │ │ ├── four-oh-four │ │ │ ├── four-oh-four.component.spec.ts │ │ │ ├── four-oh-four.component.ts │ │ │ ├── four-oh-four.style.scss │ │ │ ├── four-oh-four.template.html │ │ │ └── index.ts │ │ ├── header-navigation │ │ │ ├── header-navigation.component.spec.ts │ │ │ ├── header-navigation.component.ts │ │ │ ├── header-navigation.style.scss │ │ │ ├── header-navigation.template.html │ │ │ └── index.ts │ │ ├── help-wanted │ │ │ ├── card │ │ │ │ ├── help-wanted-card.component.ts │ │ │ │ ├── help-wanted-card.styles.scss │ │ │ │ ├── help-wanted-card.template.html │ │ │ │ └── index.ts │ │ │ ├── help-wanted-item.model.ts │ │ │ ├── help-wanted.component.ts │ │ │ ├── help-wanted.option.ts │ │ │ ├── help-wanted.styles.scss │ │ │ ├── help-wanted.template.html │ │ │ └── index.ts │ │ ├── hero-header │ │ │ ├── hero-header.component.ts │ │ │ ├── hero-header.style.scss │ │ │ ├── hero-header.template.html │ │ │ └── index.ts │ │ ├── home │ │ │ ├── banner-art │ │ │ │ ├── banner-art.component.spec.ts │ │ │ │ ├── banner-art.component.ts │ │ │ │ ├── banner-art.style.scss │ │ │ │ ├── banner-art.template.html │ │ │ │ └── index.ts │ │ │ ├── header-navigation │ │ │ │ ├── home-header-navigation.component.spec.ts │ │ │ │ ├── home-header-navigation.component.ts │ │ │ │ ├── home-header-navigation.style.scss │ │ │ │ └── index.ts │ │ │ ├── home.component.spec.ts │ │ │ ├── home.component.ts │ │ │ ├── home.style.scss │ │ │ ├── home.template.html │ │ │ └── index.ts │ │ ├── layouts │ │ │ ├── home │ │ │ │ ├── home-layout.component.ts │ │ │ │ ├── home-layout.template.html │ │ │ │ └── index.ts │ │ │ └── shared │ │ │ │ ├── index.ts │ │ │ │ ├── shared-layout.component.ts │ │ │ │ ├── shared-layout.style.scss │ │ │ │ └── shared-layout.template.html │ │ ├── mobile-menu │ │ │ ├── index.ts │ │ │ ├── mobile-menu-button.component.spec.ts │ │ │ ├── mobile-menu-button.component.ts │ │ │ ├── mobile-menu-button.style.scss │ │ │ ├── mobile-menu-button.template.html │ │ │ ├── mobile-menu.component.spec.ts │ │ │ ├── mobile-menu.component.ts │ │ │ ├── mobile-menu.style.scss │ │ │ └── mobile-menu.template.html │ │ ├── modal │ │ │ ├── index.ts │ │ │ ├── modal.component.spec.ts │ │ │ ├── modal.component.ts │ │ │ ├── modal.style.scss │ │ │ └── modal.template.html │ │ ├── monaco-editor │ │ │ ├── index.ts │ │ │ ├── monaco-editor.component.ts │ │ │ ├── monaco-editor.service.ts │ │ │ ├── monaco-editor.style.scss │ │ │ ├── monaco-editor.template.html │ │ │ ├── monaco-validator.component.ts │ │ │ ├── monaco-validator.style.scss │ │ │ └── monaco-validator.template.html │ │ ├── policy-guide │ │ │ ├── docs │ │ │ │ ├── capacity │ │ │ │ │ ├── capacity-basics │ │ │ │ │ │ ├── capacity-basics.component.ts │ │ │ │ │ │ ├── capacity-basics.template.html │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── capacity-collaboration │ │ │ │ │ │ ├── capacity-collaboration.component.ts │ │ │ │ │ │ ├── capacity-collaboration.template.html │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── capacity-interagency-sharing │ │ │ │ │ │ ├── capacity-interagency-sharing.component.ts │ │ │ │ │ │ ├── capacity-interagency-sharing.template.html │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── capacity-introduction │ │ │ │ │ │ ├── capacity-introduction.component.ts │ │ │ │ │ │ ├── capacity-introduction.template.html │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── capacity-resources │ │ │ │ │ │ ├── capacity-resources.component.ts │ │ │ │ │ │ ├── capacity-resources.template.html │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── capacity-security │ │ │ │ │ │ ├── capacity-security.component.ts │ │ │ │ │ │ ├── capacity-security.template.html │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── capacity.component.ts │ │ │ │ │ ├── capacity.template.html │ │ │ │ │ └── index.ts │ │ │ │ ├── compliance │ │ │ │ │ ├── compliance-acquiring-code │ │ │ │ │ │ ├── compliance-acquiring-code.component.ts │ │ │ │ │ │ ├── compliance-acquiring-code.template.html │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── compliance-dashboard │ │ │ │ │ │ ├── compliance-dashboard.component.ts │ │ │ │ │ │ ├── compliance-dashboard.template.html │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── compliance-inventory-code │ │ │ │ │ │ ├── compliance-inventory-code.component.ts │ │ │ │ │ │ ├── compliance-inventory-code.template.html │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── compliance-licensing │ │ │ │ │ │ ├── compliance-licensing.component.ts │ │ │ │ │ │ ├── compliance-licensing.template.html │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── compliance-measuring-code │ │ │ │ │ │ ├── compliance-measuring-code.component.ts │ │ │ │ │ │ ├── compliance-measuring-code.template.html │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── compliance-procurement │ │ │ │ │ │ ├── compliance-procurement.component.ts │ │ │ │ │ │ ├── compliance-procurement.template.html │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── compliance-whats-required │ │ │ │ │ │ ├── compliance-whats-required.component.ts │ │ │ │ │ │ ├── compliance-whats-required.template.html │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── compliance.component.ts │ │ │ │ │ ├── compliance.template.html │ │ │ │ │ └── index.ts │ │ │ │ ├── docs.component.ts │ │ │ │ ├── docs.style.scss │ │ │ │ ├── docs.template.html │ │ │ │ ├── index.ts │ │ │ │ ├── open-source │ │ │ │ │ └── open-source-licensing │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── open-source-licensing.component.ts │ │ │ │ │ │ └── open-source-licensing.template.html │ │ │ │ └── overview │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── introduction │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── introduction.component.ts │ │ │ │ │ └── introduction.template.html │ │ │ │ │ ├── overview-inventory │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── overview-inventory.component.ts │ │ │ │ │ └── overview-inventory.template.html │ │ │ │ │ ├── overview-pilot │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── overview-pilot.component.ts │ │ │ │ │ └── overview-pilot.template.html │ │ │ │ │ ├── overview-tracking-progress │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── overview-tracking-progress.component.ts │ │ │ │ │ └── overview-tracking-progress.template.html │ │ │ │ │ ├── overview.component.ts │ │ │ │ │ └── overview.template.html │ │ │ ├── index.ts │ │ │ ├── policy-guide.component.ts │ │ │ ├── policy-guide.style.scss │ │ │ ├── policy-guide.template.html │ │ │ └── policy │ │ │ │ ├── index.ts │ │ │ │ ├── policy-appendix │ │ │ │ ├── index.ts │ │ │ │ ├── policy-appendix.component.ts │ │ │ │ └── policy-appendix.template.html │ │ │ │ ├── policy-code-reuse │ │ │ │ ├── index.ts │ │ │ │ ├── policy-code-reuse.component.ts │ │ │ │ └── policy-code-reuse.template.html │ │ │ │ ├── policy-exceptions │ │ │ │ ├── index.ts │ │ │ │ ├── policy-exceptions.component.ts │ │ │ │ └── policy-exceptions.template.html │ │ │ │ ├── policy-implementation │ │ │ │ ├── index.ts │ │ │ │ ├── policy-implementation.component.ts │ │ │ │ └── policy-implementation.template.html │ │ │ │ ├── policy-introduction │ │ │ │ ├── index.ts │ │ │ │ ├── policy-introduction.component.ts │ │ │ │ └── policy-introduction.template.html │ │ │ │ ├── policy-objectives │ │ │ │ ├── index.ts │ │ │ │ ├── policy-objectives.component.ts │ │ │ │ └── policy-objectives.template.html │ │ │ │ ├── policy-open-source │ │ │ │ ├── index.ts │ │ │ │ ├── policy-open-source.component.ts │ │ │ │ └── policy-open-source.template.html │ │ │ │ ├── policy-scope │ │ │ │ ├── index.ts │ │ │ │ ├── policy-scope.component.ts │ │ │ │ └── policy-scope.template.html │ │ │ │ ├── policy-solutions-analysis │ │ │ │ ├── index.ts │ │ │ │ ├── policy-solutions-analysis.component.ts │ │ │ │ └── policy-solutions-analysis.template.html │ │ │ │ ├── policy.component.ts │ │ │ │ ├── policy.style.scss │ │ │ │ └── policy.template.html │ │ ├── privacy-policy │ │ │ ├── index.ts │ │ │ ├── privacy-policy-code-dot-gov.md │ │ │ ├── privacy-policy-your-city.md │ │ │ ├── privacy-policy.component.ts │ │ │ ├── privacy-policy.md │ │ │ ├── privacy-policy.style.scss │ │ │ └── privacy-policy.template.html │ │ ├── repo-list-item │ │ │ ├── index.ts │ │ │ ├── repo-list-item.component.spec.ts │ │ │ ├── repo-list-item.component.ts │ │ │ ├── repo-list-item.styles.scss │ │ │ └── repo-list-item.template.html │ │ ├── repo-list │ │ │ ├── index.ts │ │ │ ├── repo-list.component.spec.ts │ │ │ ├── repo-list.component.ts │ │ │ ├── repo-list.styles.scss │ │ │ └── repo-list.template.html │ │ ├── repos-search │ │ │ ├── index.ts │ │ │ ├── repos-search.component.spec.ts │ │ │ ├── repos-search.component.ts │ │ │ ├── repos-search.style.scss │ │ │ └── repos-search.template.html │ │ ├── roadmap │ │ │ ├── index.ts │ │ │ ├── roadmap.component.ts │ │ │ ├── roadmap.styles.scss │ │ │ └── roadmap.template.html │ │ ├── search-input │ │ │ ├── index.ts │ │ │ ├── search-input.component.spec.ts │ │ │ ├── search-input.component.ts │ │ │ ├── search-input.style.scss │ │ │ └── search-input.template.html │ │ ├── search-results │ │ │ ├── index.ts │ │ │ ├── search-results.component.spec.ts │ │ │ ├── search-results.component.ts │ │ │ ├── search-results.styles.scss │ │ │ └── search-results.template.html │ │ ├── show-more │ │ │ ├── index.ts │ │ │ ├── show-more.component.ts │ │ │ └── show-more.template.html │ │ ├── sidebar │ │ │ ├── index.ts │ │ │ ├── sidebar.component.spec.ts │ │ │ ├── sidebar.component.ts │ │ │ ├── sidebar.style.scss │ │ │ └── sidebar.template.html │ │ ├── sitemap │ │ │ └── sitemap.xml │ │ ├── subnav │ │ │ ├── index.ts │ │ │ ├── subnav.component.spec.ts │ │ │ ├── subnav.component.ts │ │ │ ├── subnav.style.scss │ │ │ └── subnav.template.html │ │ └── tools │ │ │ ├── index.ts │ │ │ ├── schema-validator │ │ │ ├── index.ts │ │ │ ├── schema-validator.component.ts │ │ │ ├── schema-validator.style.scss │ │ │ └── schema-validator.template.html │ │ │ ├── tools.component.ts │ │ │ ├── tools.style.scss │ │ │ ├── tools.template.html │ │ │ └── upgrade-schema │ │ │ ├── index.ts │ │ │ ├── upgrade-schema.component.ts │ │ │ ├── upgrade-schema.style.scss │ │ │ └── upgrade-schema.template.html │ ├── directives │ │ ├── external-link │ │ │ ├── external-link.directive.spec.ts │ │ │ ├── external-link.directive.ts │ │ │ └── index.ts │ │ └── toggle-menu │ │ │ ├── index.ts │ │ │ ├── toggle-menu.directive.spec.ts │ │ │ └── toggle-menu.directive.ts │ ├── environment.ts │ ├── index.ts │ ├── pipes │ │ ├── capitalize │ │ │ ├── capitalize.pipe.ts │ │ │ └── index.ts │ │ ├── is-defined │ │ │ ├── index.ts │ │ │ ├── is-defined.pipe.spec.ts │ │ │ └── is-defined.pipe.ts │ │ ├── language-icon │ │ │ ├── index.ts │ │ │ ├── language-icon.pipe.spec.ts │ │ │ ├── language-icon.pipe.ts │ │ │ └── language-list.ts │ │ ├── pluralize │ │ │ ├── index.ts │ │ │ ├── pluralize.pipe.spec.ts │ │ │ └── pluralize.pipe.ts │ │ └── truncate │ │ │ ├── index.ts │ │ │ ├── truncate.pipe.spec.ts │ │ │ └── truncate.pipe.ts │ ├── routes │ │ ├── explore-code │ │ │ ├── explore-code.routes.ts │ │ │ └── index.ts │ │ └── policy-guide │ │ │ ├── index.ts │ │ │ └── policy-guide.routes.ts │ ├── serializers │ │ └── custom-url-serializer │ │ │ ├── custom-url-serializer.spec.ts │ │ │ ├── custom-url-serializer.ts │ │ │ └── index.ts │ ├── services │ │ ├── agency │ │ │ ├── agency.service.ts │ │ │ └── index.ts │ │ ├── client │ │ │ ├── client.service.spec.ts │ │ │ ├── client.service.ts │ │ │ └── index.ts │ │ ├── error-modal │ │ │ ├── error-modal.service.ts │ │ │ └── index.ts │ │ ├── help-wanted │ │ │ ├── help-wanted.service.spec.ts │ │ │ ├── help-wanted.service.ts │ │ │ └── index.ts │ │ ├── mobile │ │ │ ├── index.ts │ │ │ ├── mobile.service.spec.ts │ │ │ └── mobile.service.ts │ │ ├── modal │ │ │ ├── index.ts │ │ │ └── modal.service.ts │ │ ├── seo │ │ │ ├── index.ts │ │ │ └── seo.service.ts │ │ ├── state │ │ │ ├── index.ts │ │ │ └── state.service.ts │ │ └── status │ │ │ ├── index.ts │ │ │ └── status.service.ts │ └── utils │ │ ├── app-components │ │ ├── app-components.util.ts │ │ ├── components-array.util.ts │ │ └── index.ts │ │ ├── clone.ts │ │ ├── hash.ts │ │ ├── uniq.ts │ │ ├── urls.ts │ │ └── zipIndexResults.ts ├── assets │ ├── agencies.json │ ├── bootstrap.min.css │ ├── dashboard.css │ ├── draft_v102_sample_code.json │ ├── draft_v200_sample_code.json │ ├── draftcodegovschema.json │ ├── fonts.css │ ├── fonts │ │ ├── code-gov.eot │ │ ├── code-gov.svg │ │ ├── code-gov.ttf │ │ ├── code-gov.woff │ │ ├── code-gov.woff2 │ │ ├── devicons.eot │ │ ├── devicons.svg │ │ ├── devicons.ttf │ │ ├── devicons.woff │ │ ├── merriweather-bold-webfont.eot │ │ ├── merriweather-bold-webfont.ttf │ │ ├── merriweather-bold-webfont.woff │ │ ├── merriweather-bold-webfont.woff2 │ │ ├── merriweather-italic-webfont.eot │ │ ├── merriweather-italic-webfont.ttf │ │ ├── merriweather-italic-webfont.woff │ │ ├── merriweather-italic-webfont.woff2 │ │ ├── merriweather-light-webfont.eot │ │ ├── merriweather-light-webfont.ttf │ │ ├── merriweather-light-webfont.woff │ │ ├── merriweather-light-webfont.woff2 │ │ ├── merriweather-regular-webfont.eot │ │ ├── merriweather-regular-webfont.ttf │ │ ├── merriweather-regular-webfont.woff │ │ ├── merriweather-regular-webfont.woff2 │ │ ├── sourcesanspro-bold-webfont.eot │ │ ├── sourcesanspro-bold-webfont.ttf │ │ ├── sourcesanspro-bold-webfont.woff │ │ ├── sourcesanspro-bold-webfont.woff2 │ │ ├── sourcesanspro-italic-webfont.eot │ │ ├── sourcesanspro-italic-webfont.ttf │ │ ├── sourcesanspro-italic-webfont.woff │ │ ├── sourcesanspro-italic-webfont.woff2 │ │ ├── sourcesanspro-light-webfont.eot │ │ ├── sourcesanspro-light-webfont.ttf │ │ ├── sourcesanspro-light-webfont.woff │ │ ├── sourcesanspro-light-webfont.woff2 │ │ ├── sourcesanspro-regular-webfont.eot │ │ ├── sourcesanspro-regular-webfont.ttf │ │ ├── sourcesanspro-regular-webfont.woff │ │ ├── sourcesanspro-regular-webfont.woff2 │ │ ├── tt_lakes_medium-webfont.eot │ │ ├── tt_lakes_medium-webfont.svg │ │ ├── tt_lakes_medium-webfont.ttf │ │ ├── tt_lakes_medium-webfont.woff │ │ └── tt_lakes_medium-webfont.woff2 │ ├── help-wanted-code-dot-gov.json │ ├── help-wanted-your-city.json │ ├── help-wanted.json │ ├── img │ │ ├── agencies │ │ │ ├── DOD.svg │ │ │ ├── NASA.png │ │ │ └── TREASURY.gif │ │ ├── alerts │ │ │ ├── error.png │ │ │ ├── error.svg │ │ │ ├── info.png │ │ │ ├── info.svg │ │ │ ├── success.png │ │ │ ├── success.svg │ │ │ ├── warning.png │ │ │ └── warning.svg │ │ ├── american_flag_1920x1280_gradient.jpg │ │ ├── american_flag_800x533_gradient.png │ │ ├── angle-arrow-down-hover.png │ │ ├── angle-arrow-down-hover.svg │ │ ├── angle-arrow-down.png │ │ ├── angle-arrow-down.svg │ │ ├── arrow-down.png │ │ ├── arrow-down.svg │ │ ├── arrow-right.png │ │ ├── arrow-right.svg │ │ ├── correct8.png │ │ ├── correct8.svg │ │ ├── correct9.png │ │ ├── correct9.svg │ │ ├── external-link-alt-hover.png │ │ ├── external-link-alt-hover.svg │ │ ├── external-link-alt.png │ │ ├── external-link-alt.svg │ │ ├── external-link-hover.png │ │ ├── external-link-hover.svg │ │ ├── external-link.png │ │ ├── external-link.svg │ │ ├── favicons │ │ │ ├── favicon-114.png │ │ │ ├── favicon-144.png │ │ │ ├── favicon-16.png │ │ │ ├── favicon-192.png │ │ │ ├── favicon-40.png │ │ │ ├── favicon-57.png │ │ │ ├── favicon-72.png │ │ │ ├── favicon.ico │ │ │ └── favicon.png │ │ ├── featured-projects │ │ │ ├── Science.svg │ │ │ ├── WALKOFF.png │ │ │ ├── biz_400x400.png │ │ │ ├── construction_worker.png │ │ │ ├── grass.png │ │ │ ├── house_for_sale.png │ │ │ ├── pipes3.png │ │ │ ├── pipes4.png │ │ │ ├── smartcity.png │ │ │ ├── smartcity2.png │ │ │ ├── smartcity4.png │ │ │ ├── transportation_409x409.png │ │ │ └── typing.png │ │ ├── flag.svg │ │ ├── green_circle.png │ │ ├── icons │ │ │ ├── chat_bubble.png │ │ │ ├── check_bl.png │ │ │ ├── info_bl.png │ │ │ ├── policy_bl.png │ │ │ └── search.svg │ │ ├── logo-img.png │ │ ├── logos │ │ │ ├── GSA.png │ │ │ ├── NLM.png │ │ │ ├── PIF.png │ │ │ ├── agencies │ │ │ │ ├── CFPB-50x50.png │ │ │ │ ├── CFPB.png │ │ │ │ ├── CFPB.svg │ │ │ │ ├── DHS-50x50.png │ │ │ │ ├── DHS.png │ │ │ │ ├── DHS.svg │ │ │ │ ├── DOC-50x50.png │ │ │ │ ├── DOC.png │ │ │ │ ├── DOC.svg │ │ │ │ ├── DOD-50x50.png │ │ │ │ ├── DOD.png │ │ │ │ ├── DOD.svg │ │ │ │ ├── DOE-50x50.png │ │ │ │ ├── DOE.png │ │ │ │ ├── DOE.svg │ │ │ │ ├── DOI.png │ │ │ │ ├── DOI.svg │ │ │ │ ├── DOJ-50x50.png │ │ │ │ ├── DOJ.png │ │ │ │ ├── DOJ.svg │ │ │ │ ├── DOL-50x50.png │ │ │ │ ├── DOL.png │ │ │ │ ├── DOL.svg │ │ │ │ ├── DOS-50x50.png │ │ │ │ ├── DOS.png │ │ │ │ ├── DOS.svg │ │ │ │ ├── DOT-50x50.png │ │ │ │ ├── DOT.png │ │ │ │ ├── DOT.svg │ │ │ │ ├── ED-50x50.png │ │ │ │ ├── ED.png │ │ │ │ ├── ED.svg │ │ │ │ ├── EOP-50x50.png │ │ │ │ ├── EOP.png │ │ │ │ ├── EOP.svg │ │ │ │ ├── EPA-50x50.png │ │ │ │ ├── EPA.png │ │ │ │ ├── EPA.svg │ │ │ │ ├── FDA-50x50.png │ │ │ │ ├── FDA.png │ │ │ │ ├── FDA.svg │ │ │ │ ├── FEC.svg │ │ │ │ ├── GSA-50x50.png │ │ │ │ ├── GSA.png │ │ │ │ ├── GSA.svg │ │ │ │ ├── HHS-50x50.png │ │ │ │ ├── HHS.png │ │ │ │ ├── HHS.svg │ │ │ │ ├── HUD-50x50.png │ │ │ │ ├── HUD.png │ │ │ │ ├── HUD.svg │ │ │ │ ├── NARA-50x50.png │ │ │ │ ├── NARA.png │ │ │ │ ├── NARA.svg │ │ │ │ ├── NASA-50x50.png │ │ │ │ ├── NASA.png │ │ │ │ ├── NASA.svg │ │ │ │ ├── NRC-50x50.png │ │ │ │ ├── NRC.png │ │ │ │ ├── NRC.svg │ │ │ │ ├── NSA-50x50.png │ │ │ │ ├── NSA.png │ │ │ │ ├── NSA.svg │ │ │ │ ├── NSF-50x50.png │ │ │ │ ├── NSF.png │ │ │ │ ├── NSF.svg │ │ │ │ ├── OPM-50x50.png │ │ │ │ ├── OPM.png │ │ │ │ ├── OPN.svg │ │ │ │ ├── SBA-50x50.png │ │ │ │ ├── SBA.png │ │ │ │ ├── SBA.svg │ │ │ │ ├── SSA-50x50.png │ │ │ │ ├── SSA.png │ │ │ │ ├── SSA.svg │ │ │ │ ├── Seal_of_the_United_States_Department_of_the_Interior.svg │ │ │ │ ├── Seal_of_the_United_States_Department_of_the_Interior.svg.png │ │ │ │ ├── TRE-50x50.png │ │ │ │ ├── TRE.png │ │ │ │ ├── TREASURY-50x50.png │ │ │ │ ├── TREASURY.png │ │ │ │ ├── TREASURY.svg │ │ │ │ ├── USAID-50x50.png │ │ │ │ ├── USAID.png │ │ │ │ ├── USAID.svg │ │ │ │ ├── USDA-50x50.png │ │ │ │ ├── USDA.png │ │ │ │ ├── USDA.svg │ │ │ │ ├── VA-50x50.png │ │ │ │ ├── VA.png │ │ │ │ └── VA.svg │ │ │ ├── code-gov-dark.svg │ │ │ ├── code-gov-light.svg │ │ │ ├── code-gov.svg │ │ │ ├── press │ │ │ │ ├── fcw.png │ │ │ │ ├── pcmag.png │ │ │ │ ├── techcrunch.jpg │ │ │ │ └── wired.svg │ │ │ ├── pub-code-dark.svg │ │ │ ├── pub-code-light.svg │ │ │ ├── whitehouse.png │ │ │ ├── your-city-dark.svg │ │ │ ├── your-city-light.svg │ │ │ ├── yourcity.png │ │ │ └── yourcity2.png │ │ ├── minus-alt.png │ │ ├── minus-alt.svg │ │ ├── minus.png │ │ ├── minus.svg │ │ ├── og.jpg │ │ ├── plus-alt.png │ │ ├── plus-alt.svg │ │ ├── plus.png │ │ ├── plus.svg │ │ ├── pubcode-home.png │ │ ├── red_circle.png │ │ ├── ribbons │ │ │ ├── fork_me_on_github - backup.svg │ │ │ └── fork_me_on_github.svg │ │ ├── search-alt.png │ │ ├── search-alt.svg │ │ ├── search.png │ │ ├── search.svg │ │ ├── social-icons │ │ │ ├── png │ │ │ │ ├── facebook25.png │ │ │ │ ├── rss25.png │ │ │ │ ├── twitter16.png │ │ │ │ └── youtube15.png │ │ │ └── svg │ │ │ │ ├── facebook25.svg │ │ │ │ ├── rss25.svg │ │ │ │ ├── twitter16.svg │ │ │ │ └── youtube15.svg │ │ ├── terminal.svg │ │ ├── twitter.svg │ │ ├── us_flag_small.png │ │ ├── yellow_circle.png │ │ └── yourcity.jpg │ ├── js │ │ ├── code-gov-web-components.js │ │ ├── polyfills.js │ │ └── web_components.js │ ├── manifest.json │ ├── releases.demo.json │ ├── repo_license.json │ ├── robots.txt │ ├── sample_code.json │ ├── sample_code_200.json │ ├── schemadiff.diff │ ├── schemas │ │ ├── 1.0.0.json │ │ ├── 1.0.0.md │ │ ├── 1.0.1.json │ │ ├── 1.0.1.md │ │ └── 2.0.0.json │ ├── service-worker.js │ ├── uswds.min.css │ ├── v200schemadiff.diff │ ├── v200schemadiffv2.diff │ ├── v200schemadiffv3.diff │ └── v200schemadiffv4.diff ├── custom-typings.d.ts ├── enums │ └── languages.json ├── index.html ├── main.browser.ts ├── meta │ ├── robots.txt │ └── sitemap.xml ├── polyfills.browser.ts ├── sample_code_101.json ├── styles │ └── base │ │ └── _all.scss └── vendor.browser.ts ├── tsconfig.json ├── tslint.json ├── typedoc.json ├── typings.json ├── webpack.config.js └── yarn.lock /.codeinventory.yml: -------------------------------------------------------------------------------- 1 | name: Code.gov 2 | description: 'Implementation of code.gov and the federal source code policy' 3 | license: 'https://github.com/presidential-innovation-fellows/code-gov-web/blob/master/LICENSE.md' 4 | openSourceProject: 1 5 | governmentWideReuseProject: 1 6 | tags: 7 | - code.gov 8 | - open 9 | - source 10 | - code 11 | - open source 12 | - source code 13 | - sourcecode 14 | - government code 15 | contact: 16 | email: code@gsa.gov 17 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | .git 2 | **/.git 3 | .gitignore 4 | **/.gitignore 5 | Dockerfile 6 | Dockerfiles 7 | node_modules 8 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | NODE_ENV=production 2 | 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | # Directory for instrumented libs generated by jscoverage/JSCover 11 | lib-cov 12 | 13 | # Coverage directory used by tools like istanbul 14 | coverage 15 | 16 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 17 | .grunt 18 | 19 | # Compiled binary addons (http://nodejs.org/api/addons.html) 20 | build/Release 21 | 22 | # Users Environment Variables 23 | .lock-wscript 24 | 25 | # OS generated files # 26 | .DS_Store 27 | ehthumbs.db 28 | #Icon? 29 | Thumbs.db 30 | 31 | # Node Files # 32 | node_modules/ 33 | bower_components/ 34 | npm-debug.log 35 | 36 | # Webpack Files # 37 | stats.json 38 | 39 | # Coverage # 40 | /coverage/ 41 | 42 | # Typing # 43 | /src/typings/tsd/ 44 | /typings/ 45 | /tsd_typings/ 46 | 47 | # Dist # 48 | /dist 49 | /public/__build__/ 50 | /src/*/__build__/ 51 | /__build__/** 52 | /public/dist/ 53 | /src/*/dist/ 54 | /dist/** 55 | .webpack.json 56 | 57 | # Doc # 58 | /doc/ 59 | 60 | # IDE # 61 | .idea/ 62 | *.swp 63 | .vscode/ -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 6.11.0 2 | -------------------------------------------------------------------------------- /AngularClass License.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015-2016 AngularClass LLC 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /Dockerfiles/code-dot-gov: -------------------------------------------------------------------------------- 1 | FROM ubuntu:latest 2 | 3 | RUN apt-get update 4 | 5 | RUN apt-get install -y git nodejs npm 6 | 7 | RUN git clone --depth 1 https://github.com/GSA/code-gov-web 8 | 9 | WORKDIR code-gov-web 10 | 11 | # setting up to use code-dot-gov configuration 12 | RUN cp config/examples/code-dot-gov.json config/code-gov-config.json 13 | 14 | # removing because causing problems 15 | RUN rm package-lock.json 16 | 17 | RUN npm install 18 | 19 | CMD PORT=80 npm run start 20 | 21 | EXPOSE 80 22 | -------------------------------------------------------------------------------- /Dockerfiles/your-city: -------------------------------------------------------------------------------- 1 | FROM ubuntu:latest 2 | 3 | RUN apt-get update 4 | 5 | RUN apt-get install -y git nodejs npm 6 | 7 | RUN git clone --depth 1 https://github.com/GSA/code-gov-web 8 | 9 | WORKDIR code-gov-web 10 | 11 | # setting up to use code-dot-gov configuration 12 | RUN cp config/examples/your-city.json config/code-gov-config.json 13 | 14 | # removing because causing problems 15 | RUN rm package-lock.json 16 | 17 | RUN npm install 18 | 19 | CMD PORT=80 npm run start 20 | 21 | EXPOSE 80 22 | -------------------------------------------------------------------------------- /ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | Your issue may already be reported! 2 | Please search on the [issue track](../) before creating one. 3 | 4 | ## Expected Behavior 5 | 6 | 7 | 8 | ## Current Behavior 9 | 10 | 11 | 12 | ## Possible Solution 13 | 14 | 15 | 16 | ## Steps to Reproduce (for bugs) 17 | 18 | 19 | 1. 20 | 2. 21 | 3. 22 | 4. 23 | 24 | ## Context 25 | 26 | 27 | 28 | ## Your Environment 29 | 30 | * Version used: 31 | * Browser Name and version: 32 | * Operating System and version (desktop or mobile): 33 | * Link to your project: -------------------------------------------------------------------------------- /PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | A similar PR may already be submitted! 2 | Please search among the [Pull request](../) before creating one. 3 | 4 | Thanks for submitting a pull request! Please provide enough information so that others can review your pull request: 5 | 6 | For more information, see the `CONTRIBUTING` guide. 7 | 8 | 9 | **Summary** 10 | 11 | 12 | 13 | This PR fixes/implements the following **bugs/features** 14 | 15 | * [ ] Bug 1 16 | * [ ] Bug 2 17 | * [ ] Feature 1 18 | * [ ] Feature 2 19 | * [ ] Breaking changes 20 | 21 | 22 | 23 | Explain the **motivation** for making this change. What existing problem does the pull request solve? 24 | 25 | 26 | 27 | **Test plan (required)** 28 | 29 | Demonstrate the code is solid. Example: The exact commands you ran and their output, screenshots / videos if the pull request changes UI. 30 | 31 | 32 | 33 | **Code formatting** 34 | 35 | 36 | 37 | **Closing issues** 38 | 39 | 40 | Fixes # -------------------------------------------------------------------------------- /config/CNAME: -------------------------------------------------------------------------------- 1 | code.gov 2 | -------------------------------------------------------------------------------- /config/helpers.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author: @AngularClass 3 | */ 4 | var path = require('path'); 5 | 6 | // Helper functions 7 | var ROOT = path.resolve(__dirname, '..'); 8 | 9 | function hasProcessFlag(flag) { 10 | return process.argv.join('').indexOf(flag) > -1; 11 | } 12 | 13 | function isWebpackDevServer() { 14 | return process.argv[1] && !! (/webpack-dev-server/.exec(process.argv[1])); 15 | } 16 | 17 | function root(args) { 18 | args = Array.prototype.slice.call(arguments, 0); 19 | return path.join.apply(path, [ROOT].concat(args)); 20 | } 21 | 22 | exports.hasProcessFlag = hasProcessFlag; 23 | exports.isWebpackDevServer = isWebpackDevServer; 24 | exports.root = root; 25 | -------------------------------------------------------------------------------- /config/modules/angular2-hmr-prod.js: -------------------------------------------------------------------------------- 1 | exports.HmrState = function() { 2 | 3 | }; 4 | -------------------------------------------------------------------------------- /config/protractor.conf.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author: @AngularClass 3 | */ 4 | 5 | require('ts-node/register'); 6 | var helpers = require('./helpers'); 7 | 8 | exports.config = { 9 | baseUrl: 'http://localhost:2700/', 10 | 11 | // use `npm run e2e` 12 | specs: [ 13 | helpers.root('src/**/**.e2e.ts'), 14 | helpers.root('src/**/*.e2e.ts') 15 | ], 16 | exclude: [], 17 | 18 | framework: 'jasmine2', 19 | 20 | allScriptsTimeout: 110000, 21 | 22 | jasmineNodeOpts: { 23 | showTiming: true, 24 | showColors: true, 25 | isVerbose: false, 26 | includeStackTrace: false, 27 | defaultTimeoutInterval: 400000 28 | }, 29 | directConnect: true, 30 | 31 | capabilities: { 32 | 'browserName': 'chrome', 33 | 'chromeOptions': { 34 | 'args': ['show-fps-counter=true'] 35 | } 36 | }, 37 | 38 | onPrepare: function() { 39 | browser.ignoreSynchronization = true; 40 | }, 41 | 42 | /** 43 | * Angular 2 configuration 44 | * 45 | * useAllAngular2AppRoots: tells Protractor to wait for any angular2 apps on the page instead of just the one matching 46 | * `rootEl` 47 | */ 48 | useAllAngular2AppRoots: true 49 | }; 50 | -------------------------------------------------------------------------------- /config/webpack.analyze.js: -------------------------------------------------------------------------------- 1 | const merge = require("webpack-merge"); 2 | const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; 3 | 4 | const analyzeConfig = { 5 | plugins: [ 6 | new BundleAnalyzerPlugin({ 7 | analyzerHost: "0.0.0.0" 8 | }) 9 | ] 10 | }; 11 | 12 | const commonConfig = require('./webpack.common.js'); 13 | const ENV = process.env.ENV = process.env.NODE_ENV = 'development'; 14 | 15 | module.exports = merge(commonConfig({ env: ENV }), analyzeConfig); 16 | -------------------------------------------------------------------------------- /config/webpack.dev.js: -------------------------------------------------------------------------------- 1 | const commonConfig = require('./webpack.common.js'); 2 | const ENV = process.env.ENV = process.env.NODE_ENV = 'development'; 3 | 4 | module.exports = function (options) { 5 | return commonConfig({ env: ENV }); 6 | } 7 | -------------------------------------------------------------------------------- /config/webpack.prod.js: -------------------------------------------------------------------------------- 1 | const commonConfig = require('./webpack.common.js'); 2 | const ENV = process.env.NODE_ENV = process.env.ENV = 'production'; 3 | 4 | module.exports = function (env) { 5 | return commonConfig({ env: ENV }); 6 | } 7 | -------------------------------------------------------------------------------- /hound.yml: -------------------------------------------------------------------------------- 1 | # See https://houndci.com/configuration for help. 2 | coffeescript: 3 | # config_file: .coffeescript-style.json 4 | enabled: false 5 | haml: 6 | # config_file: .haml-style.yml 7 | enabled: false 8 | javascript: 9 | # config_file: .javascript-style.json 10 | enabled: false 11 | # ignore_file: .javascript_ignore 12 | ruby: 13 | # config_file: .ruby-style.yml 14 | enabled: false 15 | scss: 16 | config_file: config/scss-style.yml 17 | enabled: true 18 | -------------------------------------------------------------------------------- /karma.conf.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author: @AngularClass 3 | */ 4 | 5 | // Look in ./config for karma.conf.js 6 | module.exports = require('./config/karma.conf.js'); 7 | -------------------------------------------------------------------------------- /protractor.conf.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author: @AngularClass 3 | */ 4 | 5 | // look in ./config for protractor.conf.js 6 | exports.config = require('./config/protractor.conf.js').config; 7 | -------------------------------------------------------------------------------- /src/app/app.resolver.ts: -------------------------------------------------------------------------------- 1 | import { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; 2 | import { Injectable } from '@angular/core'; 3 | import { Observable } from 'rxjs/Observable'; 4 | import 'rxjs/add/observable/of'; 5 | 6 | @Injectable() 7 | export class DataResolver implements Resolve { 8 | constructor() { 9 | 10 | } 11 | resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { 12 | return Observable.of({ res: 'I am data'}); 13 | } 14 | } 15 | 16 | // an array of services to resolve routes with data 17 | export const APP_RESOLVER_PROVIDERS = [ 18 | DataResolver 19 | ]; 20 | -------------------------------------------------------------------------------- /src/app/app.routes.ts: -------------------------------------------------------------------------------- 1 | import { Routes, RouterModule } from '@angular/router'; 2 | import { 3 | BrowseProjectsComponent, 4 | FaqsComponent, 5 | FourOhFourComponent, 6 | HelpWantedComponent, 7 | HomeComponent, 8 | HomeLayoutComponent, 9 | PrivacyPolicyComponent, 10 | RoadmapComponent, 11 | SchemaValidatorComponent, 12 | SearchResultsComponent, 13 | SharedLayoutComponent, 14 | RepoComponent, 15 | } from './utils/app-components'; 16 | import { EXPLORE_CODE_ROUTES } from './routes/explore-code'; 17 | import { POLICY_GUIDE_ROUTES } from './routes/policy-guide'; 18 | import { DataResolver } from './app.resolver'; 19 | 20 | export const ROUTES: Routes = [ 21 | { path: '', pathMatch: 'full', component: HomeLayoutComponent, children: [{ path: '', component: HomeComponent }]}, 22 | { 23 | path: '', 24 | component: SharedLayoutComponent, 25 | children: [ 26 | ...EXPLORE_CODE_ROUTES, 27 | ...POLICY_GUIDE_ROUTES, 28 | { path: 'search', component: SearchResultsComponent }, 29 | { path: 'privacy-policy', component: PrivacyPolicyComponent }, 30 | { path: 'faqs', component: FaqsComponent }, 31 | { path: 'roadmap', component: RoadmapComponent }, 32 | { path: 'browse-projects', component: BrowseProjectsComponent }, 33 | { path: 'open-tasks', component: HelpWantedComponent }, 34 | { path: '**', component: FourOhFourComponent }, 35 | ] 36 | }, 37 | ]; 38 | -------------------------------------------------------------------------------- /src/app/components/agency-list-item/agency-list-item.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'agency-list-item', 5 | styles: [require('./agency-list-item.styles.scss')], 6 | template: require('./agency-list-item.template.html') 7 | }) 8 | 9 | export class AgencyListItemComponent { 10 | @Input() agency; 11 | 12 | constructor() {} 13 | 14 | getIcon() { 15 | return `assets/img/logos/agencies/${this.agency.id}-50x50.png`; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/app/components/agency-list-item/agency-list-item.styles.scss: -------------------------------------------------------------------------------- 1 | .agency-list-item { 2 | display: block; 3 | margin-bottom: 1rem; 4 | position: relative; 5 | 6 | .icon { 7 | display: inline-block; 8 | height: 50px; 9 | vertical-align: top; 10 | width: 80px; 11 | 12 | img { 13 | position: absolute; 14 | top: 50%; 15 | height: 50px; 16 | transform: translateY(-50%); 17 | width: 50px; 18 | } 19 | } 20 | 21 | h3 { 22 | display: inline-block; 23 | line-height: 50px; 24 | margin: 0; 25 | width: calc(100% - 80px); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/app/components/agency-list-item/agency-list-item.template.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |

{{ agency.name }}

5 |
6 | -------------------------------------------------------------------------------- /src/app/components/agency-list-item/index.ts: -------------------------------------------------------------------------------- 1 | export * from './agency-list-item.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Angulartics2, Angulartics2GoogleTagManager } from 'angulartics2'; 2 | import { Component, ViewEncapsulation, OnInit, OnDestroy } from '@angular/core'; 3 | import { NavigationEnd, Router } from '@angular/router'; 4 | import { Subscription } from 'rxjs/Subscription'; 5 | 6 | @Component({ 7 | selector: '[role="application"]', 8 | encapsulation: ViewEncapsulation.None, 9 | styles: [require('./app.style.scss')], 10 | template: require('./app.template.html') 11 | }) 12 | 13 | export class AppComponent implements OnInit, OnDestroy { 14 | eventSub: Subscription; 15 | 16 | constructor( 17 | private angulartics2: Angulartics2, 18 | private angulartics2Gtm: Angulartics2GoogleTagManager, 19 | private router: Router 20 | ) { 21 | } 22 | 23 | ngOnInit() { 24 | this.eventSub = this.router.events.subscribe((evt) => { 25 | if (!(evt instanceof NavigationEnd)) { 26 | return; 27 | } 28 | window.scrollTo(0, 0); 29 | }); 30 | } 31 | 32 | ngOnDestroy() { 33 | if (this.eventSub) this.eventSub.unsubscribe(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/app/components/app/app.e2e.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | describe('AppComponent', () => { 4 | 5 | beforeEach(() => { 6 | browser.get('/'); 7 | }); 8 | 9 | it('should have ', () => { 10 | let subject = element(by.css('home')).isPresent(); 11 | let result = true; 12 | expect(subject).toEqual(result); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /src/app/components/app/app.template.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /src/app/components/app/index.ts: -------------------------------------------------------------------------------- 1 | export * from './app.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/autocomplete-result/autocomplete-result.style.scss: -------------------------------------------------------------------------------- 1 | @import '~@code.gov/code-gov-style/_sass/_variables'; 2 | 3 | .autocomplete-result { 4 | display: block; 5 | padding: 0.5em; 6 | text-decoration: none; 7 | text-transform: none; 8 | 9 | &::after { 10 | clear: both; 11 | content: ""; 12 | display: table; 13 | } 14 | 15 | &:hover, 16 | &:focus { 17 | background-color: lighten(#1c4772, 40); 18 | } 19 | 20 | .icon { 21 | float: left; 22 | height: 2em; 23 | margin-right: 0.5em; 24 | width: 2em; 25 | 26 | img { 27 | display: block; 28 | height: auto; 29 | width: 100%; 30 | } 31 | 32 | i { 33 | font-size: 2rem; 34 | margin-top: -0.1rem; 35 | padding: .3rem; 36 | padding-top: 0; 37 | } 38 | } 39 | 40 | .info { 41 | line-height: 3em; 42 | overflow: hidden; 43 | vertical-align: center; 44 | 45 | p { 46 | color: $color-gray-dark; 47 | font-size: 0.9em; 48 | line-height: 28px; 49 | margin: 0; 50 | overflow: hidden; 51 | text-overflow: ellipsis; 52 | white-space: nowrap; 53 | } 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /src/app/components/autocomplete-result/autocomplete-result.template.html: -------------------------------------------------------------------------------- 1 | 7 |
8 | 9 |
10 |
11 | 12 |
13 |
14 |

{{resource.name}}

15 |
16 |
17 | -------------------------------------------------------------------------------- /src/app/components/autocomplete-result/index.ts: -------------------------------------------------------------------------------- 1 | export * from './autocomplete-result.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/autocomplete/autocomplete.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, Input, Output } from '@angular/core'; 2 | import { Observable } from 'rxjs/Observable'; 3 | import { Subscription } from 'rxjs/Subscription'; 4 | 5 | @Component({ 6 | selector: 'autocomplete', 7 | styles: [require('./autocomplete.style.scss')], 8 | template: require('./autocomplete.template.html') 9 | }) 10 | 11 | export class AutocompleteComponent { 12 | @Output() onSuggestionSelected = new EventEmitter(); 13 | @Input() termResultsObservable: Observable>; 14 | results: any[] = []; 15 | subscription: Subscription; 16 | 17 | ngOnInit() { 18 | this.subscription = this.termResultsObservable.subscribe(results => { 19 | this.results = results; 20 | }); 21 | } 22 | 23 | ngOnDestroy() { 24 | this.subscription.unsubscribe(); 25 | } 26 | 27 | hasResults() { 28 | return this.results.length > 0; 29 | } 30 | 31 | handleSuggestionSelected(suggestion) { 32 | this.onSuggestionSelected.emit(suggestion); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/app/components/autocomplete/autocomplete.style.scss: -------------------------------------------------------------------------------- 1 | li { 2 | width: 100%; 3 | text-align: left; 4 | } 5 | 6 | .autocomplete { 7 | background-color: #ffffff; 8 | border: 1px solid lighten(#1c4772, 20); 9 | display: block; 10 | position: relative; 11 | top: 0.25em; 12 | width: 100%; 13 | z-index: 1000; 14 | } 15 | -------------------------------------------------------------------------------- /src/app/components/autocomplete/autocomplete.template.html: -------------------------------------------------------------------------------- 1 |
2 |
    3 |
  • 4 | 8 | 9 |
  • 10 |
11 |
12 | -------------------------------------------------------------------------------- /src/app/components/autocomplete/index.ts: -------------------------------------------------------------------------------- 1 | export * from './autocomplete.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/base-filter-page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './base-filter-page.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/browse-projects/browse-projects.styles.scss: -------------------------------------------------------------------------------- 1 | @import '~@code.gov/code-gov-style/_sass/_variables'; 2 | @import '../base-filter-page/base-filter-page.styles.scss'; 3 | @import '../search-results/search-results.styles.scss'; -------------------------------------------------------------------------------- /src/app/components/browse-projects/index.ts: -------------------------------------------------------------------------------- 1 | export * from './browse-projects.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/error-modal/error-modal.component.ts: -------------------------------------------------------------------------------- 1 | import { Angulartics2 } from 'angulartics2'; 2 | import { Component, OnDestroy } from '@angular/core'; 3 | import { Subscription } from 'rxjs/Subscription'; 4 | 5 | import { ErrorModalService } from '../../services/error-modal'; 6 | 7 | @Component({ 8 | selector: 'error-modal', 9 | styles: [require('./error-modal.style.scss')], 10 | template: require('./error-modal.template.html') 11 | }) 12 | 13 | export class ErrorModalComponent implements OnDestroy { 14 | description: string; 15 | title: string; 16 | url: string = 'https://github.com/GSA/code-gov-web/issues/new?title=New Issue'; 17 | visible: boolean; 18 | modalSub: Subscription; 19 | 20 | constructor( 21 | private angulartics2: Angulartics2, 22 | private errorModalService: ErrorModalService 23 | ) { 24 | this.modalSub = errorModalService.modalActivated$.subscribe( 25 | modal => { 26 | this.visible = true; 27 | } 28 | ); 29 | } 30 | 31 | ngOnDestroy() { 32 | if (this.modalSub) this.modalSub.unsubscribe(); 33 | } 34 | 35 | close() { 36 | this.angulartics2.eventTrack.next({ action: 'Close', properties: { category: 'ErrorModal' }}); 37 | this.visible = false; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/app/components/error-modal/error-modal.template.html: -------------------------------------------------------------------------------- 1 |
2 | 31 |
32 | -------------------------------------------------------------------------------- /src/app/components/error-modal/index.ts: -------------------------------------------------------------------------------- 1 | export * from './error-modal.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/explore-code/activity-list/activity-list.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { Subject } from 'rxjs/Subject'; 3 | 4 | import { RepoComponent } from '../repo'; 5 | import { TruncatePipe } from '../../../pipes/truncate'; 6 | 7 | @Component({ 8 | selector: 'activity-list', 9 | styles: [require('./activity-list.style.scss')], 10 | template: require('./activity-list.template.html') 11 | }) 12 | 13 | export class ActivityListComponent { 14 | @Input() eventRepo; 15 | public activities: any; 16 | 17 | constructor() {} 18 | 19 | ngAfterViewChecked() { 20 | setTimeout(_ => this.activities = this.eventRepo.events); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/app/components/explore-code/activity-list/activity-list.template.html: -------------------------------------------------------------------------------- 1 |
    2 |
  • 3 |
    4 | 5 |
    6 |
    7 |
    8 |
    9 |

    {{ activity.type }}

    10 |
    11 |
    12 |

    {{ activity.time | date }}

    13 |
    14 |
    15 |
    16 |

    17 | {{ activity.message | truncate : 80 }} 18 |

    19 |
    20 |
    21 |
  • 22 |
23 | -------------------------------------------------------------------------------- /src/app/components/explore-code/activity-list/index.ts: -------------------------------------------------------------------------------- 1 | export * from './activity-list.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/explore-code/agencies/agencies.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | import { MobileService } from '../../../services/mobile'; 4 | 5 | @Component({ 6 | selector: 'agencies', 7 | styles: [require('./agencies.style.scss')], 8 | template: require('./agencies.template.html') 9 | }) 10 | 11 | export class AgenciesComponent { 12 | 13 | constructor(private mobileService: MobileService) { 14 | this.mobileService.hideMenu(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/app/components/explore-code/agencies/agencies.style.scss: -------------------------------------------------------------------------------- 1 | @import '~@code.gov/code-gov-style/_sass/_variables'; 2 | 3 | .agencies-content { 4 | background-color: $color-white; 5 | padding: 2.5em 1.5em; 6 | 7 | @media screen and (min-width: $extra-large-screen) { 8 | padding: 2.5em 2em; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/app/components/explore-code/agencies/agencies.template.html: -------------------------------------------------------------------------------- 1 |
2 | 6 |
7 |
8 |
9 | 10 |
11 |
12 | 13 |
14 |
15 | -------------------------------------------------------------------------------- /src/app/components/explore-code/agencies/index.ts: -------------------------------------------------------------------------------- 1 | export * from './agencies.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/explore-code/agency/agency.styles.scss: -------------------------------------------------------------------------------- 1 | @import '~@code.gov/code-gov-style/_sass/_variables'; 2 | 3 | .agency-container { 4 | 5 | h1 { 6 | font-size: 1.8em; 7 | margin-bottom: 0.2em; 8 | } 9 | 10 | .loading-dialog { 11 | text-align: center; 12 | 13 | > p { 14 | margin-top: 120px; 15 | } 16 | 17 | > img { 18 | margin-bottom: 120px; 19 | } 20 | } 21 | } 22 | 23 | .repo { 24 | 25 | a { 26 | display: block; 27 | font-size: 0.95em; 28 | margin-bottom: 1em; 29 | text-decoration: none; 30 | h3 { 31 | color: $color-primary; 32 | text-decoration: underline; 33 | } 34 | } 35 | 36 | p { 37 | font-size: 0.95em; 38 | margin: 0; 39 | } 40 | } 41 | 42 | 43 | .repos-count { 44 | margin: 0 0 1.5em; 45 | } 46 | 47 | .repo-features { 48 | margin-top: 1em; 49 | 50 | li { 51 | display: inline-block; 52 | margin-right: 0.75em; 53 | color: $color-primary; 54 | 55 | &:last-child { 56 | margin-right: 0; 57 | 58 | i { 59 | margin-right: 0.2em; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/app/components/explore-code/agency/index.ts: -------------------------------------------------------------------------------- 1 | export * from './agency.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/explore-code/explore-code.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { StateService } from '../../services/state'; 3 | 4 | @Component({ 5 | selector: 'explore-code', 6 | styles: [require('./explore-code.style.scss')], 7 | template: require('./explore-code.template.html') 8 | }) 9 | 10 | export class ExploreCodeComponent { 11 | 12 | constructor(public stateService: StateService) { 13 | this.stateService.set('section', 'explore-code'); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/app/components/explore-code/explore-code.style.scss: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/app/components/explore-code/explore-code.template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |
6 | -------------------------------------------------------------------------------- /src/app/components/explore-code/index.ts: -------------------------------------------------------------------------------- 1 | export * from './explore-code.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/explore-code/repo/index.ts: -------------------------------------------------------------------------------- 1 | export * from './repo.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/explore-code/repo/repo.component.spec.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/app/components/explore-code/repo/repo.component.spec.ts -------------------------------------------------------------------------------- /src/app/components/explore-code/repos/index.ts: -------------------------------------------------------------------------------- 1 | export * from './repos-component'; 2 | -------------------------------------------------------------------------------- /src/app/components/explore-code/repos/repos-component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'repos', 5 | template: require('./repos.template.html') 6 | }) 7 | 8 | export class ReposComponent {} 9 | -------------------------------------------------------------------------------- /src/app/components/explore-code/repos/repos.template.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/app/components/faqs/faqs.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | /** 4 | * Class representing faqs. 5 | */ 6 | 7 | @Component({ 8 | selector: 'faqs', 9 | styles: [require('./faqs.styles.scss')], 10 | template: require('./faqs.template.html'), 11 | }) 12 | 13 | export class FaqsComponent { 14 | /** 15 | * Get the offset of the app navigation header so we scroll down to the about 16 | * section and the header is flush against the section. 17 | */ 18 | getAboutOffset() { 19 | return document.querySelector('#about').clientHeight + 30; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/app/components/faqs/index.ts: -------------------------------------------------------------------------------- 1 | export * from './faqs.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/footer/footer.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | 3 | import { toAbsoluteUrl, toRouterLink, Link } from '../../utils/urls'; 4 | 5 | import { content } from '../../../../config/code-gov-config.json'; 6 | 7 | interface Logo { 8 | image: string; 9 | name: string; 10 | url: string; 11 | } 12 | 13 | @Component({ 14 | selector: 'codedotgov-footer', 15 | template: require('./footer.template.html') 16 | }) 17 | export class FooterComponent { 18 | 19 | @Input() color: string; 20 | private content = content; 21 | private logos: Logo[]; 22 | private links: Link[]; 23 | 24 | constructor() { 25 | // convert relative urls to absolute urls 26 | this.links = content.footer.links.map(link => { 27 | link.routerLink = toRouterLink(link.url); 28 | return link; 29 | }); 30 | 31 | this.logos = content.footer.logos.map(logo => { 32 | logo.image = toAbsoluteUrl(logo.image); 33 | return logo; 34 | }); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/app/components/footer/footer.template.html: -------------------------------------------------------------------------------- 1 | 27 | -------------------------------------------------------------------------------- /src/app/components/footer/index.ts: -------------------------------------------------------------------------------- 1 | export * from './footer.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/four-oh-four/four-oh-four.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { StateService } from '../../services/state'; 3 | 4 | @Component({ 5 | selector: 'four-oh-four', 6 | styles: [require('./four-oh-four.style.scss')], 7 | template: require('./four-oh-four.template.html') 8 | }) 9 | 10 | export class FourOhFourComponent { 11 | constructor(public stateService: StateService) { 12 | this.stateService.set('section', 'four-oh-four'); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/app/components/four-oh-four/four-oh-four.style.scss: -------------------------------------------------------------------------------- 1 | .four-oh-four-container { 2 | padding-bottom: 5em; 3 | padding-top: 5em; 4 | } 5 | -------------------------------------------------------------------------------- /src/app/components/four-oh-four/four-oh-four.template.html: -------------------------------------------------------------------------------- 1 |
2 |

We can’t find the page you’re looking for.

3 |

4 | If you’re looking for code, start here. 5 |

6 |

7 | Otherwise, check out how you can implment the Federal Open Source Code Policy here. 8 |

9 |
10 | -------------------------------------------------------------------------------- /src/app/components/four-oh-four/index.ts: -------------------------------------------------------------------------------- 1 | export * from './four-oh-four.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/header-navigation/index.ts: -------------------------------------------------------------------------------- 1 | export * from './header-navigation.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/help-wanted/card/help-wanted-card.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { ExternalLinkDirective } from '../../directives/external-link.directive'; 3 | import { HelpWantedItem } from '../help-wanted-item.model'; 4 | 5 | @Component({ 6 | selector: 'help-wanted-card', 7 | styles: [require('./help-wanted-card.styles.scss')], 8 | template: require('./help-wanted-card.template.html') 9 | }) 10 | 11 | export class HelpWantedCardComponent { 12 | @Input() private item: HelpWantedItem; 13 | @Input() private mobile: string; 14 | } 15 | -------------------------------------------------------------------------------- /src/app/components/help-wanted/card/index.ts: -------------------------------------------------------------------------------- 1 | export * from './help-wanted-card.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/help-wanted/help-wanted-item.model.ts: -------------------------------------------------------------------------------- 1 | export class HelpWantedItem { 2 | public id: number; 3 | public title: string; 4 | public description: string; 5 | public updated: string; 6 | public languages: string[]; 7 | public skill: string; 8 | public type: string; 9 | public impact: string; 10 | } 11 | -------------------------------------------------------------------------------- /src/app/components/help-wanted/help-wanted.option.ts: -------------------------------------------------------------------------------- 1 | export class Option { 2 | key: string; 3 | display: string; 4 | options: string[]; 5 | version: string; 6 | } 7 | -------------------------------------------------------------------------------- /src/app/components/help-wanted/index.ts: -------------------------------------------------------------------------------- 1 | export * from './help-wanted.component'; 2 | export * from './card'; 3 | -------------------------------------------------------------------------------- /src/app/components/hero-header/hero-header.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { DomSanitizer, SafeStyle } from '@angular/platform-browser'; 3 | 4 | import { images } from '../../../../config/code-gov-config.json'; 5 | 6 | @Component({ 7 | selector: 'hero-header', 8 | styles: [require('./hero-header.style.scss')], 9 | template: require('./hero-header.template.html'), 10 | }) 11 | 12 | export class HeroHeaderComponent { 13 | @Input() title: string; 14 | private backgroundImage: SafeStyle; 15 | 16 | constructor(private sanitizer: DomSanitizer) { 17 | this.backgroundImage = this.sanitizer.bypassSecurityTrustStyle(`url('${images.background}')`); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/app/components/hero-header/hero-header.style.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/app/components/hero-header/hero-header.style.scss -------------------------------------------------------------------------------- /src/app/components/hero-header/hero-header.template.html: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /src/app/components/hero-header/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hero-header.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/home/banner-art/banner-art.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | // The selector is what angular internally uses 5 | // for `document.querySelectorAll(selector)` in our index.html 6 | // where, in this case, selector is the string 'home' 7 | selector: 'banner-art', // 8 | styles: [require('./banner-art.style.scss')], 9 | template: require('./banner-art.template.html') 10 | }) 11 | export class BannerArtComponent { 12 | 13 | constructor() {} 14 | } 15 | -------------------------------------------------------------------------------- /src/app/components/home/banner-art/banner-art.template.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | 5 | 6 |
7 |
8 |

9 | > 10 | Want to improve Code.gov? 11 |

12 |

13 | > 14 | Visit our project page or git clone git@github.com:presidential-innovation-fellows/code-gov-web.git 15 | 16 |

17 |
18 |
19 | -------------------------------------------------------------------------------- /src/app/components/home/banner-art/index.ts: -------------------------------------------------------------------------------- 1 | export * from './banner-art.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/home/header-navigation/home-header-navigation.style.scss: -------------------------------------------------------------------------------- 1 | @import '~@code.gov/code-gov-style/_sass/_variables'; 2 | 3 | .social-links { 4 | display: none; 5 | float: right; 6 | 7 | @media screen and (min-width: $small-screen) { 8 | display: block; 9 | } 10 | } 11 | 12 | .social-link { 13 | font-size: 2em; 14 | line-height: 40px; 15 | 16 | a { 17 | color: $color-white; 18 | text-decoration: none; 19 | } 20 | 21 | 22 | i { 23 | color: $color-white; 24 | } 25 | 26 | .follow-us { 27 | display: none; 28 | font-size: 0.4em; 29 | vertical-align: top; 30 | 31 | @media screen and (min-width: $medium-screen) { 32 | display: inline-block; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/app/components/home/header-navigation/index.ts: -------------------------------------------------------------------------------- 1 | export * from './home-header-navigation.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/home/index.ts: -------------------------------------------------------------------------------- 1 | export * from './home.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/layouts/home/home-layout.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ViewEncapsulation } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'home-layout', 5 | encapsulation: ViewEncapsulation.None, 6 | template: require('./home-layout.template.html'), 7 | }) 8 | 9 | export class HomeLayoutComponent { 10 | } 11 | -------------------------------------------------------------------------------- /src/app/components/layouts/home/home-layout.template.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 5 | 6 | 7 |
8 | 9 |
10 | 11 | 12 | -------------------------------------------------------------------------------- /src/app/components/layouts/home/index.ts: -------------------------------------------------------------------------------- 1 | export * from './home-layout.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/layouts/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './shared-layout.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/layouts/shared/shared-layout.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ViewEncapsulation } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'shared-layout', 5 | encapsulation: ViewEncapsulation.None, 6 | styles: [require('./shared-layout.style.scss')], 7 | template: require('./shared-layout.template.html'), 8 | }) 9 | 10 | export class SharedLayoutComponent { 11 | } 12 | -------------------------------------------------------------------------------- /src/app/components/layouts/shared/shared-layout.style.scss: -------------------------------------------------------------------------------- 1 | @import '~@code.gov/code-gov-style/_sass/_variables'; 2 | 3 | .shared-layout { 4 | background: #F0F3F7; 5 | padding-top: 44px; 6 | 7 | @media screen and (min-width: $small-screen) { 8 | padding-top: 75px; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/app/components/layouts/shared/shared-layout.template.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 5 |
6 | 7 | 8 | 9 |
10 | 11 |
12 | 13 | 14 | 15 |
16 | -------------------------------------------------------------------------------- /src/app/components/mobile-menu/index.ts: -------------------------------------------------------------------------------- 1 | export * from './mobile-menu-button.component'; 2 | export * from './mobile-menu.component'; 3 | -------------------------------------------------------------------------------- /src/app/components/mobile-menu/mobile-menu-button.component.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Component, 3 | ViewEncapsulation, 4 | } from '@angular/core'; 5 | 6 | import { MobileService } from '../../services/mobile'; 7 | 8 | @Component({ 9 | selector: 'mobile-menu-button', 10 | styles: [ 11 | require('./mobile-menu-button.style.scss'), 12 | ], 13 | template: require('./mobile-menu-button.template.html'), 14 | encapsulation: ViewEncapsulation.None, 15 | }) 16 | 17 | export class MobileMenuButtonComponent { 18 | private _isOpen: boolean = false; 19 | 20 | constructor( 21 | private mobileService: MobileService, 22 | ) { 23 | this.mobileService.activeSideNav$.subscribe(isOpen => this._isOpen = isOpen); 24 | } 25 | 26 | toggleSideNav() { 27 | this.mobileService.toggleSideNav(); 28 | } 29 | 30 | isOpen() { 31 | return this._isOpen; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/app/components/mobile-menu/mobile-menu-button.style.scss: -------------------------------------------------------------------------------- 1 | @import '~@code.gov/code-gov-style/_sass/_variables'; 2 | 3 | .mobile-menu-button .hamburger { 4 | background-color: transparent; 5 | border-radius: 4px; 6 | float: left; 7 | height: 44px; 8 | margin: 0; 9 | padding: 0; 10 | position: relative; 11 | top: 2px; 12 | width: 44px; 13 | 14 | @media screen and (min-width: $small-screen) { 15 | display: none; 16 | } 17 | 18 | &:hover, 19 | &:focus { 20 | background-color: transparent !important; 21 | box-shadow: none; 22 | opacity: 1; 23 | } 24 | 25 | .hamburger-inner, 26 | .hamburger-inner::before, 27 | .hamburger-inner::after { 28 | background-color: #485567; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/app/components/mobile-menu/mobile-menu-button.template.html: -------------------------------------------------------------------------------- 1 |
2 | 7 |
8 | -------------------------------------------------------------------------------- /src/app/components/modal/index.ts: -------------------------------------------------------------------------------- 1 | export * from './modal.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/modal/modal.component.ts: -------------------------------------------------------------------------------- 1 | import { Angulartics2 } from 'angulartics2'; 2 | import { Component, OnDestroy } from '@angular/core'; 3 | import { Subscription } from 'rxjs/Subscription'; 4 | 5 | import { ModalService } from '../../services/modal'; 6 | 7 | @Component({ 8 | selector: 'modal', 9 | styles: [require('./modal.style.scss')], 10 | template: require('./modal.template.html') 11 | }) 12 | 13 | export class ModalComponent implements OnDestroy { 14 | description: string; 15 | title: string; 16 | url: string; 17 | visible: boolean; 18 | modalSub: Subscription; 19 | 20 | constructor( 21 | private angulartics2: Angulartics2, 22 | private modalService: ModalService 23 | ) { 24 | this.modalSub = modalService.modalActivated$.subscribe( 25 | modal => { 26 | this.description = modal['description']; 27 | this.title = modal['title']; 28 | this.url = modal['url']; 29 | this.visible = true; 30 | } 31 | ); 32 | } 33 | 34 | ngOnDestroy() { 35 | if (this.modalSub) this.modalSub.unsubscribe(); 36 | } 37 | 38 | close() { 39 | this.angulartics2.eventTrack.next({ action: 'Close', properties: { category: 'Modal' }}); 40 | this.visible = false; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/app/components/modal/modal.template.html: -------------------------------------------------------------------------------- 1 |
2 | 28 |
29 | -------------------------------------------------------------------------------- /src/app/components/monaco-editor/index.ts: -------------------------------------------------------------------------------- 1 | export * from './monaco-editor.component'; 2 | export * from './monaco-editor.service'; 3 | export * from './monaco-validator.component'; 4 | -------------------------------------------------------------------------------- /src/app/components/monaco-editor/monaco-editor.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | 3 | @Injectable() 4 | 5 | export class MonacoEditorService { 6 | private schemas: any = {}; 7 | 8 | public addSchema(uri, fileMatch, schema) { 9 | this.schemas[fileMatch] = { 10 | uri, 11 | fileMatch, 12 | schema 13 | }; 14 | } 15 | 16 | public getSchemas() { 17 | return Object.values(this.schemas).map(schema => { 18 | return { 19 | uri: schema.uri, 20 | fileMatch: schema.fileMatch, 21 | schema: schema.schema 22 | }; 23 | }); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/app/components/monaco-editor/monaco-editor.style.scss: -------------------------------------------------------------------------------- 1 | @import '~@code.gov/code-gov-style/_sass/_variables'; 2 | 3 | .monaco-editor { 4 | border: 1px solid $color-gray-lighter; 5 | height: 480px; 6 | margin-bottom: 1rem; 7 | max-width: 100%; 8 | } 9 | -------------------------------------------------------------------------------- /src/app/components/monaco-editor/monaco-editor.template.html: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /src/app/components/monaco-editor/monaco-validator.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ChangeDetectorRef, EventEmitter, Input, Output } from '@angular/core'; 2 | import { MonacoEditorService } from './monaco-editor.service'; 3 | 4 | @Component({ 5 | selector: 'monaco-validator', 6 | template: require('./monaco-validator.template.html'), 7 | styles: [require('./monaco-validator.style.scss')] 8 | }) 9 | 10 | export class MonacoValidatorComponent { 11 | @Input() private errors = []; 12 | @Output() private onClickError = new EventEmitter(); 13 | 14 | constructor(private changeDetectorRef: ChangeDetectorRef) {} 15 | 16 | scrollToError(error) { 17 | this.onClickError.emit(error); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/app/components/monaco-editor/monaco-validator.style.scss: -------------------------------------------------------------------------------- 1 | @import '~@code.gov/code-gov-style/_sass/_variables'; 2 | 3 | .monaco-validator { 4 | border-top: 1px solid $color-gray-lighter; 5 | height: 192px; 6 | overflow: scroll; 7 | 8 | h4 { 9 | span { 10 | font-size: 0.8em; 11 | } 12 | } 13 | 14 | ul { 15 | font-weight: 500; 16 | list-style: none; 17 | padding-top: 1rem; 18 | } 19 | 20 | .error__line-number { 21 | color: $color-gray; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/app/components/monaco-editor/monaco-validator.template.html: -------------------------------------------------------------------------------- 1 |
2 |

Problems ({{errors.length}})

3 |

4 | No errors found! 5 |

6 | 11 |
12 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/capacity/capacity-basics/capacity-basics.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'basics', 5 | template: require('./capacity-basics.template.html') 6 | }) 7 | 8 | export class CapacityBasicsComponent { 9 | } 10 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/capacity/capacity-basics/capacity-basics.template.html: -------------------------------------------------------------------------------- 1 |

Basics

2 |

Content goes here

3 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/capacity/capacity-basics/index.ts: -------------------------------------------------------------------------------- 1 | export * from './capacity-basics.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/capacity/capacity-collaboration/capacity-collaboration.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'collaboration', 5 | template: require('./capacity-collaboration.template.html') 6 | }) 7 | 8 | export class CapacityCollaborationComponent {} 9 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/capacity/capacity-collaboration/capacity-collaboration.template.html: -------------------------------------------------------------------------------- 1 |

Collaboration

2 |

Content goes here

3 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/capacity/capacity-collaboration/index.ts: -------------------------------------------------------------------------------- 1 | export * from './capacity-collaboration.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/capacity/capacity-interagency-sharing/capacity-interagency-sharing.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'interagency-sharing', 5 | template: require('./capacity-interagency-sharing.template.html') 6 | }) 7 | 8 | export class CapacityInteragencySharingComponent {} 9 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/capacity/capacity-interagency-sharing/capacity-interagency-sharing.template.html: -------------------------------------------------------------------------------- 1 |

Interagency Code Sharing

2 |

Content goes here

3 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/capacity/capacity-interagency-sharing/index.ts: -------------------------------------------------------------------------------- 1 | export * from './capacity-interagency-sharing.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/capacity/capacity-introduction/capacity-introduction.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { SeoService } from '../../../../../services/seo'; 3 | 4 | @Component({ 5 | selector: 'introduction', 6 | template: require('./capacity-introduction.template.html') 7 | }) 8 | 9 | export class CapacityIntroductionComponent { 10 | constructor(private seoService: SeoService) { 11 | seoService.setTitle('Introduction - Building your Agency\'s Open Source Practice', true); 12 | seoService.setMetaDescription( 13 | 'Recommendations for an interdisciplinary approach to Open Source for Federal agencies.' 14 | ); 15 | seoService.setMetaRobots('Index, Follow'); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/capacity/capacity-introduction/index.ts: -------------------------------------------------------------------------------- 1 | export * from './capacity-introduction.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/capacity/capacity-resources/capacity-resources.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { SeoService } from '../../../../../services/seo'; 3 | 4 | @Component({ 5 | selector: 'resources', 6 | template: require('./capacity-resources.template.html') 7 | }) 8 | 9 | export class CapacityResourcesComponent { 10 | constructor(private seoService: SeoService) { 11 | seoService.setTitle('Tools and Resources', true); 12 | seoService.setMetaDescription( 13 | 'A growing list of tools and resources that agencies can use to share and ' + 14 | 'open source their code.' 15 | ); 16 | seoService.setMetaRobots('Index, Follow'); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/capacity/capacity-resources/index.ts: -------------------------------------------------------------------------------- 1 | export * from './capacity-resources.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/capacity/capacity-security/capacity-security.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'security', 5 | template: require('./capacity-security.template.html') 6 | }) 7 | 8 | export class CapacitySecurityComponent {} 9 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/capacity/capacity-security/index.ts: -------------------------------------------------------------------------------- 1 | export * from './capacity-security.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/capacity/capacity.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | import { MobileService } from '../../../../services/mobile'; 4 | 5 | @Component({ 6 | selector: 'capacity', 7 | template: require('./capacity.template.html') 8 | }) 9 | 10 | export class CapacityComponent { 11 | 12 | constructor(private mobileService: MobileService) { 13 | this.mobileService.hideMenu(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/capacity/capacity.template.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/capacity/index.ts: -------------------------------------------------------------------------------- 1 | export * from './capacity.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/compliance/compliance-acquiring-code/compliance-acquiring-code.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component ({ 4 | selector: 'acquiring-code', 5 | template: require('./compliance-acquiring-code.template.html') 6 | }) 7 | 8 | export class ComplianceAcquiringCodeComponent { 9 | constructor() {} 10 | } 11 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/compliance/compliance-acquiring-code/compliance-acquiring-code.template.html: -------------------------------------------------------------------------------- 1 |

Acquiring Code

2 |

3 | Content goes here. 4 |

5 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/compliance/compliance-acquiring-code/index.ts: -------------------------------------------------------------------------------- 1 | export * from './compliance-acquiring-code.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/compliance/compliance-dashboard/index.ts: -------------------------------------------------------------------------------- 1 | export * from './compliance-dashboard.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/compliance/compliance-inventory-code/compliance-inventory-code.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { SeoService } from '../../../../../services/seo'; 3 | 4 | @Component({ 5 | selector: 'inventory-code', 6 | template: require('./compliance-inventory-code.template.html') 7 | }) 8 | 9 | export class ComplianceInventoryCodeComponent { 10 | constructor(private seoService: SeoService) { 11 | seoService.setTitle('Creating your enterprise code inventory', true); 12 | seoService.setMetaDescription( 13 | 'Learn how to create your enterprise code inventory and read up on the ' + 14 | 'code.json metadata schema.' 15 | ); 16 | seoService.setMetaRobots('Index, Follow'); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/compliance/compliance-inventory-code/index.ts: -------------------------------------------------------------------------------- 1 | export * from './compliance-inventory-code.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/compliance/compliance-licensing/compliance-licensing.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'licensing', 5 | template: require('./compliance-licensing.template.html') 6 | }) 7 | 8 | export class ComplianceLicensingComponent { 9 | } 10 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/compliance/compliance-licensing/compliance-licensing.template.html: -------------------------------------------------------------------------------- 1 |

Licensing

2 |

3 | Content goes here. 4 |

5 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/compliance/compliance-licensing/index.ts: -------------------------------------------------------------------------------- 1 | export * from './compliance-licensing.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/compliance/compliance-measuring-code/compliance-measuring-code.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { SeoService } from '../../../../../services/seo'; 3 | 4 | @Component({ 5 | selector: 'measuring-code', 6 | template: require('./compliance-measuring-code.template.html') 7 | }) 8 | 9 | export class ComplianceMeasuringCodeComponent { 10 | constructor(private seoService: SeoService) { 11 | seoService.setTitle('Measuring Source Code', true); 12 | seoService.setMetaDescription( 13 | 'Learn about different ways to measure source code and how to choose the ' + 14 | 'best method for your agency.' 15 | ); 16 | seoService.setMetaRobots('Index, Follow'); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/compliance/compliance-measuring-code/index.ts: -------------------------------------------------------------------------------- 1 | export * from './compliance-measuring-code.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/compliance/compliance-procurement/compliance-procurement.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { SeoService } from '../../../../../services/seo'; 3 | 4 | @Component({ 5 | selector: 'compliance-procurement', 6 | template: require('./compliance-procurement.template.html') 7 | }) 8 | 9 | export class ComplianceProcurementComponent { 10 | constructor(private seoService: SeoService) { 11 | seoService.setTitle('Procuring Software', true); 12 | seoService.setMetaDescription('Learn about different ways to procure software.'); 13 | seoService.setMetaRobots('Index, Follow'); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/compliance/compliance-procurement/index.ts: -------------------------------------------------------------------------------- 1 | export * from './compliance-procurement.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/compliance/compliance-whats-required/compliance-whats-required.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { SeoService } from '../../../../../services/seo'; 3 | 4 | @Component({ 5 | selector: 'compliance-whats-required', 6 | template: require('./compliance-whats-required.template.html') 7 | }) 8 | 9 | export class ComplianceWhatsRequiredComponent { 10 | constructor(private seoService: SeoService) { 11 | seoService.setTitle('Policy Compliance - What\'s Required?', true); 12 | seoService.setMetaDescription( 13 | 'Learn about the requirements of the Federal Source Code Policy and when ' + 14 | 'they have to be completed.' 15 | ); 16 | seoService.setMetaRobots('Index, Follow'); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/compliance/compliance-whats-required/index.ts: -------------------------------------------------------------------------------- 1 | export * from './compliance-whats-required.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/compliance/compliance.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | import { MobileService } from '../../../../services/mobile'; 4 | 5 | @Component({ 6 | selector: 'compliance', 7 | template: require('./compliance.template.html') 8 | }) 9 | 10 | export class ComplianceComponent { 11 | 12 | constructor(private mobileService: MobileService) { 13 | this.mobileService.hideMenu(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/compliance/compliance.template.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/compliance/index.ts: -------------------------------------------------------------------------------- 1 | export * from './compliance.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/docs.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ViewEncapsulation } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'docs', 5 | styles: [require('./docs.style.scss')], 6 | template: require('./docs.template.html'), 7 | encapsulation: ViewEncapsulation.None 8 | }) 9 | export class DocsComponent { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/docs.style.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/app/components/policy-guide/docs/docs.style.scss -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/index.ts: -------------------------------------------------------------------------------- 1 | export * from './docs.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/open-source/open-source-licensing/index.ts: -------------------------------------------------------------------------------- 1 | export * from './open-source-licensing.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/open-source/open-source-licensing/open-source-licensing.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { SeoService } from '../../../../../services/seo'; 3 | 4 | @Component({ 5 | selector: 'open-source-licensing', 6 | template: require('./open-source-licensing.template.html') 7 | }) 8 | 9 | export class OpenSourceLicensingComponent { 10 | constructor(private seoService: SeoService) { 11 | seoService.setTitle('Open Source Licensing', true); 12 | seoService.setMetaDescription( 13 | 'Learn about open source licensing under the Source Code Policy.' 14 | ); 15 | seoService.setMetaRobots('Index, Follow'); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/overview/index.ts: -------------------------------------------------------------------------------- 1 | export * from './overview.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/overview/introduction/index.ts: -------------------------------------------------------------------------------- 1 | export * from './introduction.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/overview/introduction/introduction.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { SeoService } from '../../../../../services/seo'; 3 | 4 | @Component({ 5 | selector: 'introduction', 6 | template: require('./introduction.template.html') 7 | }) 8 | export class IntroductionComponent { 9 | 10 | constructor(private seoService: SeoService) { 11 | seoService.setTitle('Policy Implementation Introduction', true); 12 | seoService.setMetaDescription( 13 | 'Start here for an overview of the Federal Open Source Code Policy.' 14 | ); 15 | seoService.setMetaRobots('Index, Follow'); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/overview/overview-inventory/index.ts: -------------------------------------------------------------------------------- 1 | export * from './overview-inventory.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/overview/overview-inventory/overview-inventory.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'overview-inventory', 5 | template: require('./overview-inventory.template.html') 6 | }) 7 | export class OverviewInventoryComponent { 8 | 9 | constructor() {} 10 | 11 | ngOnInit() { 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/overview/overview-inventory/overview-inventory.template.html: -------------------------------------------------------------------------------- 1 |

Inventorying and Sharing Code

2 |

3 | Content goes here. 4 |

5 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/overview/overview-pilot/index.ts: -------------------------------------------------------------------------------- 1 | export * from './overview-pilot.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/overview/overview-pilot/overview-pilot.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'overview-pilot', 5 | template: require('./overview-pilot.template.html') 6 | }) 7 | export class OverviewPilotComponent { 8 | 9 | constructor() {} 10 | 11 | ngOnInit() { 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/overview/overview-pilot/overview-pilot.template.html: -------------------------------------------------------------------------------- 1 |

Open Source Pilot

2 |

3 | Content goes here. 4 |

5 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/overview/overview-tracking-progress/index.ts: -------------------------------------------------------------------------------- 1 | export * from './overview-tracking-progress.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/overview/overview-tracking-progress/overview-tracking-progress.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { SeoService } from '../../../../../services/seo'; 3 | 4 | @Component({ 5 | selector: 'overview-tracking-progress', 6 | template: require('./overview-tracking-progress.template.html') 7 | }) 8 | export class OverviewTrackingProgressComponent { 9 | 10 | constructor(private seoService: SeoService) { 11 | seoService.setTitle('How OMB Will Assess Agency Progress', true); 12 | seoService.setMetaDescription( 13 | 'Learn how agency progress implementing the Source Code Policy will be tracked and measured.' 14 | ); 15 | seoService.setMetaRobots('Index, Follow'); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/overview/overview.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Output, EventEmitter } from '@angular/core'; 2 | 3 | import { MobileService } from '../../../../services/mobile'; 4 | 5 | @Component({ 6 | selector: 'overview', 7 | template: require('./overview.template.html') 8 | }) 9 | export class OverviewComponent { 10 | 11 | constructor(private mobileService: MobileService) { 12 | this.mobileService.hideMenu(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/docs/overview/overview.template.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/index.ts: -------------------------------------------------------------------------------- 1 | export * from './policy-guide.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy-guide.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { StateService } from '../../services/state'; 3 | 4 | /** 5 | * Class representing the policy guide. 6 | */ 7 | 8 | @Component({ 9 | selector: 'policy-guide', 10 | styles: [require('./policy-guide.style.scss')], 11 | template: require('./policy-guide.template.html') 12 | }) 13 | export class PolicyGuideComponent { 14 | 15 | /** 16 | * Constructs a PolicyGuideComponent. 17 | * 18 | * @constructor 19 | * @param {StateService} stateService - A service for managing the state of the site 20 | */ 21 | constructor(public stateService: StateService) { 22 | this.stateService.set('section', 'policy-guide'); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy-guide.style.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy-guide.template.html: -------------------------------------------------------------------------------- 1 | 2 |
  • 3 | 4 | How To 5 | 6 |
  • 7 |
  • 8 | 9 | Read the Policy 10 | 11 |
  • 12 |
    13 | 14 |
    15 |
    16 | 17 |
    18 |
    19 | 20 | 21 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy/index.ts: -------------------------------------------------------------------------------- 1 | export * from './policy.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy/policy-appendix/index.ts: -------------------------------------------------------------------------------- 1 | export * from './policy-appendix.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy/policy-appendix/policy-appendix.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { SeoService } from '../../../../services/seo'; 3 | 4 | @Component({ 5 | selector: 'policy-appendix', 6 | template: require('./policy-appendix.template.html') 7 | }) 8 | export class PolicyAppendixComponent { 9 | 10 | constructor(private seoService: SeoService) { 11 | seoService.setTitle('Source Code Policy Appendix A - Definitions', true); 12 | seoService.setMetaDescription( 13 | 'Read the Federal Open Source Code Policy Appendix A - Definitions.' 14 | ); 15 | seoService.setMetaRobots('Index, Follow'); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy/policy-code-reuse/index.ts: -------------------------------------------------------------------------------- 1 | export * from './policy-code-reuse.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy/policy-code-reuse/policy-code-reuse.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { SeoService } from '../../../../services/seo'; 3 | 4 | @Component({ 5 | selector: 'policy-code-reuse', 6 | template: require('./policy-code-reuse.template.html') 7 | }) 8 | export class PolicyCodeReuseComponent { 9 | 10 | constructor(private seoService: SeoService) { 11 | seoService.setTitle('Source Code Policy Government-Wide Code Reuse', true); 12 | seoService.setMetaDescription( 13 | 'Read the Federal Open Source Code Policy Government-Wide Code Reuse.' 14 | ); 15 | seoService.setMetaRobots('Index, Follow'); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy/policy-exceptions/index.ts: -------------------------------------------------------------------------------- 1 | export * from './policy-exceptions.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy/policy-exceptions/policy-exceptions.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { SeoService } from '../../../../services/seo'; 3 | 4 | @Component({ 5 | selector: 'policy-exceptions', 6 | template: require('./policy-exceptions.template.html') 7 | }) 8 | export class PolicyExceptionsComponent { 9 | 10 | constructor(private seoService: SeoService) { 11 | seoService.setTitle('Source Code Policy Exceptions to Government Code Reuse', true); 12 | seoService.setMetaDescription( 13 | 'Read the Federal Open Source Code Policy Exceptions to Government Code Reuse.' 14 | ); 15 | seoService.setMetaRobots('Index, Follow'); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy/policy-implementation/index.ts: -------------------------------------------------------------------------------- 1 | export * from './policy-implementation.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy/policy-implementation/policy-implementation.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { SeoService } from '../../../../services/seo'; 3 | 4 | @Component({ 5 | selector: 'policy-implementation', 6 | template: require('./policy-implementation.template.html') 7 | }) 8 | export class PolicyImplementationComponent { 9 | 10 | constructor(private seoService: SeoService) { 11 | seoService.setTitle('Source Code Policy Implementation', true); 12 | seoService.setMetaDescription('Read the Federal Open Source Code Policy Implementation.'); 13 | seoService.setMetaRobots('Index, Follow'); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy/policy-introduction/index.ts: -------------------------------------------------------------------------------- 1 | export * from './policy-introduction.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy/policy-introduction/policy-introduction.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { SeoService } from '../../../../services/seo'; 3 | 4 | @Component({ 5 | selector: 'policy-introduction', 6 | template: require('./policy-introduction.template.html') 7 | }) 8 | export class PolicyIntroductionComponent { 9 | 10 | constructor(private seoService: SeoService) { 11 | seoService.setTitle('Source Code Policy Introduction', true); 12 | seoService.setMetaDescription('Start here to read the Federal Open Source Code Policy.'); 13 | seoService.setMetaRobots('Index, Follow'); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy/policy-objectives/index.ts: -------------------------------------------------------------------------------- 1 | export * from './policy-objectives.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy/policy-objectives/policy-objectives.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { SeoService } from '../../../../services/seo'; 3 | 4 | @Component({ 5 | selector: 'policy-objectives', 6 | template: require('./policy-objectives.template.html') 7 | }) 8 | export class PolicyObjectivesComponent { 9 | 10 | constructor(private seoService: SeoService) { 11 | seoService.setTitle('Source Code Policy Objectives', true); 12 | seoService.setMetaDescription('Read the Federal Open Source Code Policy Objectives.'); 13 | seoService.setMetaRobots('Index, Follow'); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy/policy-open-source/index.ts: -------------------------------------------------------------------------------- 1 | export * from './policy-open-source.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy/policy-open-source/policy-open-source.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { SeoService } from '../../../../services/seo'; 3 | 4 | @Component({ 5 | selector: 'policy-open-source', 6 | template: require('./policy-open-source.template.html') 7 | }) 8 | export class PolicyOpenSourceComponent { 9 | 10 | constructor(private seoService: SeoService) { 11 | seoService.setTitle('Source Code Policy Open Source Software', true); 12 | seoService.setMetaDescription('Read the Federal Open Source Code Policy Open Source Software.'); 13 | seoService.setMetaRobots('Index, Follow'); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy/policy-scope/index.ts: -------------------------------------------------------------------------------- 1 | export * from './policy-scope.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy/policy-scope/policy-scope.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { SeoService } from '../../../../services/seo'; 3 | 4 | @Component({ 5 | selector: 'policy-scope', 6 | template: require('./policy-scope.template.html') 7 | }) 8 | export class PolicyScopeComponent { 9 | 10 | constructor(private seoService: SeoService) { 11 | seoService.setTitle('Source Code Policy Scope and Applicability', true); 12 | seoService.setMetaDescription( 13 | 'Read the Federal Open Source Code Policy Scope and Applicability.' 14 | ); 15 | seoService.setMetaRobots('Index, Follow'); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy/policy-scope/policy-scope.template.html: -------------------------------------------------------------------------------- 1 |

    2. Scope and Applicability

    2 | 3 |

    The requirements outlined in this policy apply to source code that is custom-developed for the Federal Government, subject to the limited exceptions outlined in Section 6 of this document. Source code developed for National Security Systems (NSS), as defined in 40 U.S.C. § 11103, is exempt from the requirements of this policy. For NSS, agencies shall follow applicable statutes, Executive Orders, directives, and internal agency policies.

    4 | 5 |

    The policies in this document do not apply retroactively (i.e., they do not require that existing custom-developed code be retroactively made available for Government-wide reuse or as OSS). However, making such code available for Government-wide reuse or as OSS, to the extent practicable, is strongly encouraged.

    6 | 7 |

    The agencies’ Chief Information Officers (CIO), Chief Acquisition Officers (CAO), and other key stakeholders should promptly begin working together to implement this policy. Agencies are expected to issue internal policies, as necessary, to support these efforts and should expect their progress to be evaluated in accordance with accountability mechanisms described in Section 7.

    8 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy/policy-solutions-analysis/index.ts: -------------------------------------------------------------------------------- 1 | export * from './policy-solutions-analysis.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy/policy-solutions-analysis/policy-solutions-analysis.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { SeoService } from '../../../../services/seo'; 3 | 4 | @Component({ 5 | selector: 'policy-solutions-analysis', 6 | template: require('./policy-solutions-analysis.template.html') 7 | }) 8 | export class PolicySolutionsAnalysisComponent { 9 | 10 | constructor(private seoService: SeoService) { 11 | seoService.setTitle('Source Code Policy Three-Step Software Solutions Analysis', true); 12 | seoService.setMetaDescription( 13 | 'Read the Federal Open Source Code Policy Three-Step Software Solutions Analysis.' 14 | ); 15 | seoService.setMetaRobots('Index, Follow'); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy/policy.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ViewEncapsulation } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'policy', 5 | styles: [require('./policy.style.scss')], 6 | template: require('./policy.template.html'), 7 | encapsulation: ViewEncapsulation.None 8 | }) 9 | export class PolicyComponent { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/app/components/policy-guide/policy/policy.style.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/app/components/policy-guide/policy/policy.style.scss -------------------------------------------------------------------------------- /src/app/components/privacy-policy/index.ts: -------------------------------------------------------------------------------- 1 | export * from './privacy-policy.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/privacy-policy/privacy-policy-your-city.md: -------------------------------------------------------------------------------- 1 | # Your City's Privacy Policy 2 | 3 | ### Overwrite the privacy-policy.md file found at src/app/components/privacy-policy/privacy-policy.md 4 | -------------------------------------------------------------------------------- /src/app/components/privacy-policy/privacy-policy.style.scss: -------------------------------------------------------------------------------- 1 | @import '~@code.gov/code-gov-style/_sass/_variables'; 2 | 3 | .privacy-content { 4 | li { 5 | color: $color-gray; 6 | font-size: 1.1em; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/app/components/privacy-policy/privacy-policy.template.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |
    4 | 5 | -------------------------------------------------------------------------------- /src/app/components/repo-list-item/index.ts: -------------------------------------------------------------------------------- 1 | export * from './repo-list-item.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/repo-list-item/repo-list-item.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { Subject } from 'rxjs/Subject'; 3 | 4 | import { RepoComponent } from '../repo'; 5 | import { TruncatePipe } from '../../../pipes/truncate'; 6 | import { Agency, ClientService } from '../../services/client'; 7 | 8 | /** 9 | * Class representing a component for repositories in a list view. 10 | */ 11 | 12 | @Component({ 13 | selector: 'repo-list-item', 14 | styles: [require('./repo-list-item.styles.scss')], 15 | template: require('./repo-list-item.template.html') 16 | }) 17 | 18 | export class RepoListItemComponent { 19 | @Input() repo; 20 | agency: Agency; 21 | 22 | /** 23 | * Constructs a RepoListItemComponent. 24 | * 25 | * @constructor 26 | */ 27 | constructor(private clientService: ClientService) {} 28 | 29 | getAgencyIcon(): string { 30 | if (this.repo && this.repo.agency && this.repo.agency.acronym) { 31 | return `assets/img/logos/agencies/${this.repo.agency.acronym}-50x50.png`; 32 | } 33 | } 34 | 35 | /** 36 | * Returns whether the provided repository is from GitHub. 37 | */ 38 | isGitHubRepo(): boolean { 39 | if (!this.repo.repositoryURL && typeof this.repo.repositoryURL !== 'string') { 40 | return false; 41 | } else { 42 | return /github\.com/.test(this.repo.repositoryURL); 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/app/components/repo-list/index.ts: -------------------------------------------------------------------------------- 1 | export * from './repo-list.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/repos-search/index.ts: -------------------------------------------------------------------------------- 1 | export * from './repos-search.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/repos-search/repos-search.template.html: -------------------------------------------------------------------------------- 1 |
    5 | 6 |
    7 |
    8 | 14 | 15 |
    16 |
    17 |
    18 |
    Or
    19 | 24 |
    25 |
    26 | -------------------------------------------------------------------------------- /src/app/components/roadmap/index.ts: -------------------------------------------------------------------------------- 1 | export * from './roadmap.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/roadmap/roadmap.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { DomSanitizer } from '@angular/platform-browser'; 3 | 4 | import { content, images } from '../../../../config/code-gov-config.json'; 5 | 6 | /** 7 | * Class representing a roadmap. 8 | */ 9 | 10 | @Component({ 11 | selector: 'roadmap', 12 | styles: [require('./roadmap.styles.scss')], 13 | template: require('./roadmap.template.html'), 14 | }) 15 | 16 | export class RoadmapComponent { 17 | private bannerImage: any; 18 | private content: any = content; 19 | 20 | constructor(private sanitizer: DomSanitizer) { 21 | this.bannerImage = this.sanitizer.bypassSecurityTrustStyle(`url('${images.background}')`); 22 | } 23 | 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/app/components/search-input/index.ts: -------------------------------------------------------------------------------- 1 | export * from './search-input.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/search-input/search-input.style.scss: -------------------------------------------------------------------------------- 1 | @import '~@code.gov/code-gov-style/_sass/_variables'; 2 | 3 | .search-input-wrapper { 4 | position: relative; 5 | 6 | .autocomplete-container { 7 | display: none; 8 | position: absolute; 9 | width: 100%; 10 | 11 | @media screen and (min-width: $small-screen) { 12 | display: block; 13 | } 14 | } 15 | 16 | .search-description-wrapper { 17 | font-size: 1.6rem; 18 | margin: 0 auto; 19 | margin-bottom: .8rem; 20 | text-align: left; 21 | width: 100%; 22 | 23 | > div { 24 | text-align: left; 25 | } 26 | } 27 | 28 | .search-input-and-button-wrapper { 29 | margin: 0 auto; 30 | text-align: left; 31 | width: 100%; 32 | 33 | input { 34 | /* 100% minus width of the button */ 35 | width: calc(100% - 30px); 36 | } 37 | 38 | button.go { 39 | margin-right: 0; 40 | position: absolute; 41 | } 42 | } 43 | 44 | .icon-search { 45 | color: black; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/app/components/search-input/search-input.template.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |
    4 |
    5 |
    6 | 19 | 20 |
    21 |
    22 | 25 | 26 |
    27 |
    28 | -------------------------------------------------------------------------------- /src/app/components/search-results/index.ts: -------------------------------------------------------------------------------- 1 | export * from './search-results.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/search-results/search-results.styles.scss: -------------------------------------------------------------------------------- 1 | @import '~@code.gov/code-gov-style/_sass/_variables'; 2 | @import '../base-filter-page/base-filter-page.styles.scss'; 3 | 4 | .search-results-content { 5 | 6 | .search-form { 7 | margin: 1em auto; 8 | 9 | .search-input-and-button-wrapper { 10 | 11 | input { 12 | border: 1px solid $color-gray-light; 13 | } 14 | 15 | button.go { 16 | background-color: $color-blue !important; 17 | border: 1px solid $color-gray-light; 18 | 19 | &:focus, &:hover { 20 | background-color: $brand-teal !important; 21 | border-color: $color-gray-light !important; 22 | } 23 | } 24 | } 25 | } 26 | 27 | .search-input-container { 28 | width: 100% !important; 29 | } 30 | 31 | 32 | .browse, .search-description-wrapper{ 33 | display: none; 34 | visibility: hidden; 35 | } 36 | } -------------------------------------------------------------------------------- /src/app/components/show-more/index.ts: -------------------------------------------------------------------------------- 1 | export * from './show-more.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/show-more/show-more.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { FormGroup } from '@angular/forms'; 3 | 4 | /** 5 | * Class representing a search results page for repositories. 6 | */ 7 | 8 | @Component({ 9 | selector: 'show-more', 10 | template: require('./show-more.template.html'), 11 | }) 12 | 13 | export class ShowMoreComponent { 14 | @Input() list = []; 15 | @Input() name = ''; 16 | @Input() numShown = null; 17 | @Input() threshold = 4; 18 | @Input() mode = 'collapsed'; 19 | @Input() formGroup: FormGroup; 20 | isShowMoreClicked = false; 21 | 22 | 23 | public showAll(e) { 24 | e.preventDefault(); 25 | this.mode = 'expanded'; 26 | } 27 | 28 | public showLess(e) { 29 | e.preventDefault(); 30 | this.mode = 'collapsed'; 31 | } 32 | 33 | public getNumberToShow() { 34 | if (this.mode === 'collapsed') { 35 | return Math.min(this.threshold || this.list.length); 36 | } else if (this.mode === 'expanded') { 37 | return this.list.length; 38 | } 39 | } 40 | 41 | public isShowLessVisible() { 42 | return this.mode === 'expanded'; 43 | } 44 | 45 | public isShowAllVisible() { 46 | return this.mode === 'collapsed' && 47 | this.list && 48 | this.list.length && 49 | this.list.length > 0 && 50 | this.list.length > this.threshold; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/app/components/show-more/show-more.template.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/components/sidebar/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sidebar.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/sidebar/sidebar.style.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/app/components/sidebar/sidebar.style.scss -------------------------------------------------------------------------------- /src/app/components/sidebar/sidebar.template.html: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /src/app/components/subnav/index.ts: -------------------------------------------------------------------------------- 1 | export * from './subnav.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/subnav/subnav.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ViewEncapsulation } from '@angular/core'; 2 | 3 | /** 4 | * Class representing a subnav. 5 | */ 6 | 7 | @Component({ 8 | selector: 'subnav', 9 | styles: [require('./subnav.style.scss')], 10 | template: require('./subnav.template.html'), 11 | encapsulation: ViewEncapsulation.None 12 | }) 13 | 14 | export class SubnavComponent { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/app/components/subnav/subnav.style.scss: -------------------------------------------------------------------------------- 1 | @import '~@code.gov/code-gov-style/_sass/_variables'; 2 | 3 | .subnav { 4 | a { 5 | color: $color-gray; 6 | display: inline-block; 7 | font-size: 0.95em; 8 | font-weight: bold; 9 | padding: 0.75em 1.25em; 10 | text-decoration: none; 11 | 12 | &:hover { 13 | background-color: $brand-blue-gray; 14 | color: $color-white; 15 | } 16 | 17 | &.active { 18 | background-color: $brand-blue-gray; 19 | color: $color-white; 20 | } 21 | } 22 | 23 | li { 24 | display: inline-block; 25 | margin-right: 1.5em; 26 | 27 | i { 28 | font-size: 0.9em; 29 | margin-left: 0.4em; 30 | vertical-align: middle; 31 | } 32 | } 33 | 34 | .active { 35 | a { 36 | background-color: $brand-blue-gray; 37 | color: $color-white; 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/app/components/subnav/subnav.template.html: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /src/app/components/tools/index.ts: -------------------------------------------------------------------------------- 1 | export * from './tools.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/tools/schema-validator/index.ts: -------------------------------------------------------------------------------- 1 | export * from './schema-validator.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/tools/schema-validator/schema-validator.style.scss: -------------------------------------------------------------------------------- 1 | @import '~@code.gov/code-gov-style/_sass/_variables'; 2 | 3 | .schema-validator { 4 | 5 | } 6 | 7 | .schema-validator__tool { 8 | border-top: 1px solid $color-gray-lighter; 9 | } 10 | 11 | .schema-validator__input { 12 | header { 13 | border-bottom: none; 14 | padding: 1.5rem; 15 | 16 | h3 { 17 | padding-top: 9px; 18 | padding-bottom: 9px; 19 | } 20 | 21 | form { 22 | text-align: end; 23 | 24 | label { 25 | margin: 0; 26 | margin-right: 1rem; 27 | } 28 | 29 | select { 30 | display: inline-block; 31 | width: 90px; 32 | } 33 | } 34 | } 35 | 36 | h3 { 37 | margin: 0; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/app/components/tools/tools.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | /** 4 | * Class representing the Tools page. 5 | */ 6 | 7 | @Component({ 8 | selector: 'tools', 9 | template: require('./tools.template.html'), 10 | styles: [require('./tools.style.scss')] 11 | }) 12 | 13 | export class ToolsComponent { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/components/tools/tools.style.scss: -------------------------------------------------------------------------------- 1 | @import '~@code.gov/code-gov-style/_sass/_variables'; 2 | 3 | .tool { 4 | padding: 2.5em 1.5em; 5 | 6 | @media screen and (min-width: $medium-screen) { 7 | @include width-three-quarters(); 8 | } 9 | 10 | @media screen and (min-width: $extra-large-screen) { 11 | padding: 2.5em 2em; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/app/components/tools/tools.template.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 | Tools 5 | Tools 6 | 7 |
  • 8 | Schema Validator 9 |
  • 10 |
  • 11 | Upgrade Schema 12 |
  • 13 |
    14 |
    15 | 16 |
    17 | 18 |
    19 |
    20 |
    21 | -------------------------------------------------------------------------------- /src/app/components/tools/upgrade-schema/index.ts: -------------------------------------------------------------------------------- 1 | export * from './upgrade-schema.component'; 2 | -------------------------------------------------------------------------------- /src/app/components/tools/upgrade-schema/upgrade-schema.style.scss: -------------------------------------------------------------------------------- 1 | @import '~@code.gov/code-gov-style/_sass/_variables'; 2 | 3 | .upgrade-schema { 4 | header { 5 | padding: 1.5rem; 6 | 7 | h3 { 8 | display: inline-block; 9 | margin: 0; 10 | padding-top: 7px; 11 | padding-bottom: 7px; 12 | } 13 | 14 | form { 15 | text-align: end; 16 | 17 | button { 18 | margin: 8.5px 0; 19 | } 20 | } 21 | } 22 | 23 | .schema__minimize-button { 24 | display: inline-block; 25 | padding: 0.5rem; 26 | } 27 | 28 | .upgrade-schema__editor-body { 29 | transition: 1s all; 30 | overflow: hidden; 31 | height: 480px; 32 | opacity: 1; 33 | } 34 | 35 | .upgrade-schema__after-editor { 36 | .upgrade-schema__editor-body { 37 | height: 672px; 38 | } 39 | } 40 | 41 | .is-minimized { 42 | .upgrade-schema__editor-body { 43 | height: 0; 44 | opacity: 0; 45 | } 46 | } 47 | } 48 | 49 | .upgrade-schema__editors { 50 | section { 51 | border-top: 1px solid $color-gray-lighter; 52 | } 53 | 54 | } 55 | -------------------------------------------------------------------------------- /src/app/directives/external-link/index.ts: -------------------------------------------------------------------------------- 1 | export * from './external-link.directive'; 2 | -------------------------------------------------------------------------------- /src/app/directives/toggle-menu/index.ts: -------------------------------------------------------------------------------- 1 | export * from './toggle-menu.directive'; 2 | -------------------------------------------------------------------------------- /src/app/environment.ts: -------------------------------------------------------------------------------- 1 | 2 | // Angular 2 3 | // rc2 workaround 4 | import { enableDebugTools, disableDebugTools } from '@angular/platform-browser'; 5 | import { enableProdMode, ApplicationRef } from '@angular/core'; 6 | // Environment Providers 7 | let PROVIDERS = [ 8 | // common env directives 9 | ]; 10 | 11 | // Angular debug tools in the dev console 12 | // https://github.com/angular/angular/blob/86405345b781a9dc2438c0fbe3e9409245647019/TOOLS_JS.md 13 | let _decorateModuleRef = function identity(value) { return value; }; 14 | 15 | if ('production' === ENV) { 16 | // Production 17 | disableDebugTools(); 18 | enableProdMode(); 19 | 20 | PROVIDERS = [ 21 | ...PROVIDERS, 22 | // custom providers in production 23 | ]; 24 | 25 | } else { 26 | 27 | _decorateModuleRef = (modRef: any) => { 28 | const appRef = modRef.injector.get(ApplicationRef); 29 | const cmpRef = appRef.components[0]; 30 | 31 | const _ng = (window).ng; 32 | enableDebugTools(cmpRef); 33 | (window).ng.probe = _ng.probe; 34 | (window).ng.coreTokens = _ng.coreTokens; 35 | return modRef; 36 | }; 37 | 38 | // Development 39 | PROVIDERS = [ 40 | ...PROVIDERS, 41 | // custom providers in development 42 | ]; 43 | 44 | } 45 | 46 | export const decorateModuleRef = _decorateModuleRef; 47 | 48 | export const ENV_PROVIDERS = [ 49 | ...PROVIDERS 50 | ]; 51 | -------------------------------------------------------------------------------- /src/app/index.ts: -------------------------------------------------------------------------------- 1 | // App 2 | export * from './app.module'; 3 | -------------------------------------------------------------------------------- /src/app/pipes/capitalize/capitalize.pipe.ts: -------------------------------------------------------------------------------- 1 | import { Pipe, PipeTransform, Component } from '@angular/core'; 2 | 3 | @Pipe({ 4 | name: 'capitalize' 5 | }) 6 | 7 | export class CapitalizePipe implements PipeTransform { 8 | transform(value: string, arg?: string): any { 9 | /* 10 | This check follows the same behavior as Angular 2 standard 11 | pipes that handle strings such as UppercasePipe. 12 | Note that a returned null value gets converted to an 13 | empty string in the template where this pipe is used, which prevents 14 | problems if this pipe is chained with others. See truncate.pipe.spec.ts 15 | for tests that illustrate this behavior. 16 | */ 17 | if (value == null) { 18 | return null; 19 | } 20 | 21 | let length: number = value.length; 22 | if (length === 0) { 23 | return ''; 24 | } else if (length === 1) { 25 | return value.toUpperCase(); 26 | } else if (length >= 2) { 27 | return value[0].toUpperCase() + value.substring(1); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/app/pipes/capitalize/index.ts: -------------------------------------------------------------------------------- 1 | export * from './capitalize.pipe'; 2 | -------------------------------------------------------------------------------- /src/app/pipes/is-defined/index.ts: -------------------------------------------------------------------------------- 1 | export * from './is-defined.pipe'; 2 | -------------------------------------------------------------------------------- /src/app/pipes/language-icon/index.ts: -------------------------------------------------------------------------------- 1 | export * from './language-icon.pipe'; 2 | export * from './language-list'; 3 | -------------------------------------------------------------------------------- /src/app/pipes/language-icon/language-icon.pipe.ts: -------------------------------------------------------------------------------- 1 | import { Pipe, PipeTransform } from '@angular/core'; 2 | import { LANGUAGES } from './'; 3 | 4 | @Pipe({ 5 | name: 'languageIcon' 6 | }) 7 | 8 | export class LanguageIconPipe implements PipeTransform { 9 | 10 | parameterize(value: string): any { 11 | let lowercasedValue = value.toLowerCase(); 12 | return lowercasedValue.replace(/ /g, '_'); 13 | } 14 | 15 | transform(value: string): any { 16 | let sanitizedValue = this.parameterize(value); 17 | 18 | switch (sanitizedValue) { 19 | case 'html': 20 | sanitizedValue = 'html5'; 21 | break; 22 | case 'css': 23 | sanitizedValue = 'css3'; 24 | break; 25 | default: 26 | break; 27 | } 28 | 29 | if (LANGUAGES.indexOf(sanitizedValue) > -1) { 30 | return sanitizedValue; 31 | } else { 32 | return 'code_badge'; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/app/pipes/pluralize/index.ts: -------------------------------------------------------------------------------- 1 | export * from './pluralize.pipe'; 2 | -------------------------------------------------------------------------------- /src/app/pipes/pluralize/pluralize.pipe.spec.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | import * as Pluralize from 'pluralize'; 4 | import { PluralizePipe } from './pluralize.pipe'; 5 | 6 | /** 7 | * Unit tests for IsDefinedPipe including tests for 8 | * IsDefinedPipe.transform() and tests where the pipe 9 | * is integrated into a template. 10 | */ 11 | describe('PluralizePipe', () => { 12 | let pipe: PluralizePipe; 13 | 14 | beforeEach(() => { 15 | pipe = new PluralizePipe(); 16 | }); 17 | 18 | describe('transform', () => { 19 | const pluralize: any = Pluralize; 20 | const value = 'Value'; 21 | 22 | it('calls Pluralize', () => { 23 | expect(pipe.transform(value, 1)).toEqual(pluralize(value, 1)); 24 | }); 25 | 26 | describe('when a number greater than 1 is passed as an argument', () => { 27 | it('returns a plural value', () => { 28 | expect(pipe.transform(value, 2)).toEqual('Values'); 29 | }); 30 | }); 31 | 32 | describe('when a number less than 2 is passed as an argument', () => { 33 | it('returns a singular value', () => { 34 | expect(pipe.transform(value, 1)).toEqual(value); 35 | }); 36 | }); 37 | }); 38 | }); 39 | -------------------------------------------------------------------------------- /src/app/pipes/pluralize/pluralize.pipe.ts: -------------------------------------------------------------------------------- 1 | import * as Pluralize from 'pluralize'; 2 | import { Pipe, PipeTransform } from '@angular/core'; 3 | 4 | @Pipe({ 5 | name: 'pluralize' 6 | }) 7 | 8 | export class PluralizePipe implements PipeTransform { 9 | transform(value: string, arg: number): any { 10 | const pluralize: any = Pluralize; 11 | 12 | return pluralize(value, arg); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/app/pipes/truncate/index.ts: -------------------------------------------------------------------------------- 1 | export * from './truncate.pipe'; 2 | -------------------------------------------------------------------------------- /src/app/pipes/truncate/truncate.pipe.ts: -------------------------------------------------------------------------------- 1 | import { Pipe, PipeTransform, Component } from '@angular/core'; 2 | 3 | @Pipe({ 4 | name: 'truncate' 5 | }) 6 | 7 | export class TruncatePipe implements PipeTransform { 8 | transform(value: string, arg?: string): any { 9 | /* 10 | This check follows the same behavior as Angular 2 standard 11 | pipes that handle strings such as UppercasePipe. 12 | Note that a returned null value gets converted to an 13 | empty string in the template where this pipe is used, which prevents 14 | problems if this pipe is chained with others. See truncate.pipe.spec.ts 15 | for tests that illustrate this behavior. 16 | */ 17 | if (value == null) { 18 | return null; 19 | } 20 | let limit = parseInt(arg, 10) || 10; 21 | let trail = '...'; 22 | 23 | return value.length > limit ? value.substring(0, limit) + trail : value; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/app/routes/explore-code/explore-code.routes.ts: -------------------------------------------------------------------------------- 1 | import { Routes, RouterModule } from '@angular/router'; 2 | import { 3 | AgenciesComponent, 4 | AgencyComponent, 5 | ExploreCodeComponent, 6 | RepoComponent, 7 | ReposComponent 8 | } from '../../utils/app-components'; 9 | import { DataResolver } from '../../app.resolver'; 10 | 11 | 12 | export const EXPLORE_CODE_ROUTES: Routes = [ 13 | { 14 | path: 'explore-code', 15 | component: ExploreCodeComponent, 16 | children: [ 17 | { path: '', redirectTo: 'agencies/NASA', pathMatch: 'full' }, 18 | { path: 'agencies', 19 | component: AgenciesComponent, 20 | children: [ 21 | { path: '', redirectTo: '/NASA', pathMatch: 'full' }, 22 | { path: ':id', component: AgencyComponent } 23 | ] 24 | }, 25 | { 26 | path: 'agencies/:agency_id/repos', 27 | component: ReposComponent, 28 | }, 29 | { 30 | path: 'agencies/:agency_id/repos/:id', 31 | component: RepoComponent, 32 | }, 33 | ] 34 | } 35 | ]; 36 | -------------------------------------------------------------------------------- /src/app/routes/explore-code/index.ts: -------------------------------------------------------------------------------- 1 | export * from './explore-code.routes'; 2 | -------------------------------------------------------------------------------- /src/app/routes/policy-guide/index.ts: -------------------------------------------------------------------------------- 1 | export * from './policy-guide.routes'; 2 | -------------------------------------------------------------------------------- /src/app/serializers/custom-url-serializer/custom-url-serializer.ts: -------------------------------------------------------------------------------- 1 | import { DefaultUrlSerializer, UrlSerializer, UrlTree } from '@angular/router'; 2 | 3 | export class CustomUrlSerializer implements UrlSerializer { 4 | 5 | private _defaultUrlSerializer: DefaultUrlSerializer = new DefaultUrlSerializer(); 6 | 7 | parse(url: string): UrlTree { 8 | 9 | /* 10 | We, counter-intuitively, replace parentheses with their 11 | escaped equivalent because the DefaultUrlSerializer 12 | incorrectly stops parsing when it hits a parentheses. 13 | 14 | It does however correctly parse urls with 15 | escaped parentheses. 16 | */ 17 | url = url.replace(/\(/g, '%28').replace(/\)/g, '%29'); 18 | 19 | return this._defaultUrlSerializer.parse(url); 20 | 21 | } 22 | 23 | serialize(tree: UrlTree): string { 24 | 25 | return this._defaultUrlSerializer.serialize(tree).replace(/\(/g, '%28').replace(/\)/g, '%29'); 26 | 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/app/serializers/custom-url-serializer/index.ts: -------------------------------------------------------------------------------- 1 | export * from './custom-url-serializer'; 2 | -------------------------------------------------------------------------------- /src/app/services/agency/agency.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { Agency } from '../client'; 3 | 4 | @Injectable() 5 | 6 | export class AgencyService { 7 | 8 | getIcon(agency: Agency): string { 9 | return `assets/img/logos/agencies/${agency.acronym}-50x50.png`; 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/app/services/agency/index.ts: -------------------------------------------------------------------------------- 1 | export * from './agency.service'; 2 | -------------------------------------------------------------------------------- /src/app/services/client/index.ts: -------------------------------------------------------------------------------- 1 | export * from './client.service'; 2 | -------------------------------------------------------------------------------- /src/app/services/error-modal/error-modal.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { Subject } from 'rxjs/Subject'; 3 | 4 | @Injectable() 5 | 6 | export class ErrorModalService { 7 | private modalActivation = new Subject(); 8 | // tslint:disable-next-line:member-ordering 9 | modalActivated$ = this.modalActivation.asObservable(); 10 | 11 | showModal(modalData: any) { 12 | this.modalActivation.next(modalData); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/app/services/error-modal/index.ts: -------------------------------------------------------------------------------- 1 | export * from './error-modal.service'; 2 | -------------------------------------------------------------------------------- /src/app/services/help-wanted/help-wanted.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, getTestBed, TestBed } from '@angular/core/testing'; 2 | import { HttpModule } from '@angular/http'; 3 | import { HelpWantedService } from './help-wanted.service'; 4 | import { Agency, ClientService } from '../client'; 5 | 6 | describe('HelpWantedService', () => { 7 | 8 | let service: HelpWantedService; 9 | 10 | beforeEach(async(() => { 11 | 12 | TestBed.configureTestingModule({ 13 | providers: [ 14 | ClientService, 15 | HelpWantedService 16 | ], 17 | imports: [HttpModule] 18 | }); 19 | 20 | const testbed = getTestBed(); 21 | service = testbed.get(HelpWantedService); 22 | 23 | })); 24 | 25 | describe('tasks', () => { 26 | it('get tasks', (done) => { 27 | service.getTasks().subscribe((tasks) => { 28 | expect(tasks.length).toBeGreaterThanOrEqual(5); 29 | done(); 30 | }); 31 | }); 32 | }); 33 | 34 | }); 35 | -------------------------------------------------------------------------------- /src/app/services/help-wanted/index.ts: -------------------------------------------------------------------------------- 1 | export * from './help-wanted.service'; 2 | -------------------------------------------------------------------------------- /src/app/services/mobile/index.ts: -------------------------------------------------------------------------------- 1 | export * from './mobile.service'; 2 | -------------------------------------------------------------------------------- /src/app/services/mobile/mobile.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { MobileService } from './'; 2 | 3 | describe('MobileService', () => { 4 | let service: MobileService; 5 | beforeEach(() => { service = new MobileService(); }); 6 | 7 | describe('hideMenu', () => { 8 | it('should call the changeMenuStatus function', () => { 9 | spyOn(service, 'changeMenuStatus'); 10 | 11 | service.hideMenu(); 12 | expect(service.changeMenuStatus).toHaveBeenCalled(); 13 | }); 14 | 15 | it('should set active to false', () => { 16 | spyOn(service, 'changeMenuStatus'); 17 | 18 | service.hideMenu(); 19 | expect(service.menuActive).toEqual(false); 20 | }); 21 | }); 22 | 23 | describe('toggleMenu', () => { 24 | it('should call the changeMenuStatus function', () => { 25 | spyOn(service, 'changeMenuStatus'); 26 | 27 | service.toggleMenu(); 28 | expect(service.changeMenuStatus).toHaveBeenCalled(); 29 | }); 30 | 31 | it('should set active to the inverse of it’s original value', () => { 32 | const originalActiveValue = service.menuActive; 33 | service.toggleMenu(); 34 | 35 | expect(service.menuActive).not.toEqual(originalActiveValue); 36 | }); 37 | }); 38 | }); 39 | -------------------------------------------------------------------------------- /src/app/services/modal/index.ts: -------------------------------------------------------------------------------- 1 | export * from './modal.service'; 2 | -------------------------------------------------------------------------------- /src/app/services/modal/modal.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { Subject } from 'rxjs/Subject'; 3 | 4 | @Injectable() 5 | 6 | export class ModalService { 7 | private modalActivation = new Subject(); 8 | // tslint:disable-next-line:member-ordering 9 | modalActivated$ = this.modalActivation.asObservable(); 10 | 11 | 12 | showModal(modalData: any) { 13 | this.modalActivation.next(modalData); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/app/services/seo/index.ts: -------------------------------------------------------------------------------- 1 | export * from './seo.service'; 2 | -------------------------------------------------------------------------------- /src/app/services/state/index.ts: -------------------------------------------------------------------------------- 1 | export * from './state.service'; 2 | -------------------------------------------------------------------------------- /src/app/services/state/state.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | 3 | export type InternalStateType = { 4 | [key: string]: any 5 | }; 6 | 7 | @Injectable() 8 | export class StateService { 9 | _state: InternalStateType = { }; 10 | 11 | constructor() { 12 | 13 | } 14 | 15 | // already return a clone of the current state 16 | get state() { 17 | return this._state = this._clone(this._state); 18 | } 19 | // never allow mutation 20 | set state(value) { 21 | throw new Error('do not mutate the `.state` directly'); 22 | } 23 | 24 | 25 | get(prop?: any) { 26 | // use our state getter for the clone 27 | const state = this.state; 28 | return state.hasOwnProperty(prop) ? state[prop] : state; 29 | } 30 | 31 | set(prop: string, value: any) { 32 | // internally mutate our state 33 | return this._state[prop] = value; 34 | } 35 | 36 | 37 | private _clone(object: InternalStateType) { 38 | // simple object clone 39 | return JSON.parse(JSON.stringify( object )); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/app/services/status/index.ts: -------------------------------------------------------------------------------- 1 | export * from './status.service'; 2 | -------------------------------------------------------------------------------- /src/app/utils/app-components/index.ts: -------------------------------------------------------------------------------- 1 | export * from './app-components.util'; 2 | export * from './components-array.util'; 3 | -------------------------------------------------------------------------------- /src/app/utils/clone.ts: -------------------------------------------------------------------------------- 1 | export function clone(obj: any): any { 2 | return JSON.parse(JSON.stringify(obj)); 3 | } 4 | -------------------------------------------------------------------------------- /src/app/utils/hash.ts: -------------------------------------------------------------------------------- 1 | // from https://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript 2 | export function hashString(inputString) { 3 | let hash = 0, i, chr; 4 | if (inputString.length === 0) return hash; 5 | for (i = 0; i < inputString.length; i++) { 6 | chr = inputString.charCodeAt(i); 7 | hash = ((hash << 5) - hash) + chr; 8 | hash |= 0; // Convert to 32bit integer 9 | } 10 | return hash; 11 | } 12 | -------------------------------------------------------------------------------- /src/app/utils/uniq.ts: -------------------------------------------------------------------------------- 1 | export function uniq(iterable: any): any[] { 2 | return Array.from(new Set(iterable)); 3 | } 4 | -------------------------------------------------------------------------------- /src/app/utils/urls.ts: -------------------------------------------------------------------------------- 1 | export function toAbsoluteUrl(url: string): string { 2 | if (url.startsWith('http')) { 3 | return url; 4 | } else if (url.startsWith('/assets')) { 5 | let baseURI = document.head.baseURI; 6 | if (baseURI === undefined) { 7 | let base = document.querySelector('base'); 8 | baseURI = base ? base.href : document.URL; 9 | } 10 | return baseURI.replace(/\/$/, '') + url; 11 | } 12 | return url; 13 | } 14 | 15 | export function toRouterLink(url: string): string { 16 | if (url.startsWith('/#!/')) { 17 | return url.replace(/^\/#!/, ''); 18 | } else if (url === '/#!') { 19 | return ''; 20 | } else { 21 | return null; 22 | } 23 | } 24 | 25 | export interface Link { 26 | name: string; 27 | url: string; 28 | routerLink?: string; 29 | } 30 | 31 | 32 | export function routifyLinks(links: Link[]): Link[] { 33 | if (links) { 34 | return links.map(link => { 35 | link.routerLink = toRouterLink(link.url); 36 | return link; 37 | }); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/app/utils/zipIndexResults.ts: -------------------------------------------------------------------------------- 1 | export function zipIndexResults(releasesResults, agenciesResults) { 2 | return [...agenciesResults, ...releasesResults] 3 | .sort((a, b) => a.score > b.score ? -1 : a.score === b.score ? 0 : 1) 4 | .map(result => ({ ...result.item, score: result.score })); 5 | } 6 | -------------------------------------------------------------------------------- /src/assets/fonts/code-gov.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/code-gov.eot -------------------------------------------------------------------------------- /src/assets/fonts/code-gov.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/code-gov.ttf -------------------------------------------------------------------------------- /src/assets/fonts/code-gov.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/code-gov.woff -------------------------------------------------------------------------------- /src/assets/fonts/code-gov.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/code-gov.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/devicons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/devicons.eot -------------------------------------------------------------------------------- /src/assets/fonts/devicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/devicons.ttf -------------------------------------------------------------------------------- /src/assets/fonts/devicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/devicons.woff -------------------------------------------------------------------------------- /src/assets/fonts/merriweather-bold-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/merriweather-bold-webfont.eot -------------------------------------------------------------------------------- /src/assets/fonts/merriweather-bold-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/merriweather-bold-webfont.ttf -------------------------------------------------------------------------------- /src/assets/fonts/merriweather-bold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/merriweather-bold-webfont.woff -------------------------------------------------------------------------------- /src/assets/fonts/merriweather-bold-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/merriweather-bold-webfont.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/merriweather-italic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/merriweather-italic-webfont.eot -------------------------------------------------------------------------------- /src/assets/fonts/merriweather-italic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/merriweather-italic-webfont.ttf -------------------------------------------------------------------------------- /src/assets/fonts/merriweather-italic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/merriweather-italic-webfont.woff -------------------------------------------------------------------------------- /src/assets/fonts/merriweather-italic-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/merriweather-italic-webfont.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/merriweather-light-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/merriweather-light-webfont.eot -------------------------------------------------------------------------------- /src/assets/fonts/merriweather-light-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/merriweather-light-webfont.ttf -------------------------------------------------------------------------------- /src/assets/fonts/merriweather-light-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/merriweather-light-webfont.woff -------------------------------------------------------------------------------- /src/assets/fonts/merriweather-light-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/merriweather-light-webfont.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/merriweather-regular-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/merriweather-regular-webfont.eot -------------------------------------------------------------------------------- /src/assets/fonts/merriweather-regular-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/merriweather-regular-webfont.ttf -------------------------------------------------------------------------------- /src/assets/fonts/merriweather-regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/merriweather-regular-webfont.woff -------------------------------------------------------------------------------- /src/assets/fonts/merriweather-regular-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/merriweather-regular-webfont.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/sourcesanspro-bold-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/sourcesanspro-bold-webfont.eot -------------------------------------------------------------------------------- /src/assets/fonts/sourcesanspro-bold-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/sourcesanspro-bold-webfont.ttf -------------------------------------------------------------------------------- /src/assets/fonts/sourcesanspro-bold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/sourcesanspro-bold-webfont.woff -------------------------------------------------------------------------------- /src/assets/fonts/sourcesanspro-bold-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/sourcesanspro-bold-webfont.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/sourcesanspro-italic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/sourcesanspro-italic-webfont.eot -------------------------------------------------------------------------------- /src/assets/fonts/sourcesanspro-italic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/sourcesanspro-italic-webfont.ttf -------------------------------------------------------------------------------- /src/assets/fonts/sourcesanspro-italic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/sourcesanspro-italic-webfont.woff -------------------------------------------------------------------------------- /src/assets/fonts/sourcesanspro-italic-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/sourcesanspro-italic-webfont.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/sourcesanspro-light-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/sourcesanspro-light-webfont.eot -------------------------------------------------------------------------------- /src/assets/fonts/sourcesanspro-light-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/sourcesanspro-light-webfont.ttf -------------------------------------------------------------------------------- /src/assets/fonts/sourcesanspro-light-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/sourcesanspro-light-webfont.woff -------------------------------------------------------------------------------- /src/assets/fonts/sourcesanspro-light-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/sourcesanspro-light-webfont.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/sourcesanspro-regular-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/sourcesanspro-regular-webfont.eot -------------------------------------------------------------------------------- /src/assets/fonts/sourcesanspro-regular-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/sourcesanspro-regular-webfont.ttf -------------------------------------------------------------------------------- /src/assets/fonts/sourcesanspro-regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/sourcesanspro-regular-webfont.woff -------------------------------------------------------------------------------- /src/assets/fonts/sourcesanspro-regular-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/sourcesanspro-regular-webfont.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/tt_lakes_medium-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/tt_lakes_medium-webfont.eot -------------------------------------------------------------------------------- /src/assets/fonts/tt_lakes_medium-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/tt_lakes_medium-webfont.ttf -------------------------------------------------------------------------------- /src/assets/fonts/tt_lakes_medium-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/tt_lakes_medium-webfont.woff -------------------------------------------------------------------------------- /src/assets/fonts/tt_lakes_medium-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/fonts/tt_lakes_medium-webfont.woff2 -------------------------------------------------------------------------------- /src/assets/img/agencies/NASA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/agencies/NASA.png -------------------------------------------------------------------------------- /src/assets/img/agencies/TREASURY.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/agencies/TREASURY.gif -------------------------------------------------------------------------------- /src/assets/img/alerts/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/alerts/error.png -------------------------------------------------------------------------------- /src/assets/img/alerts/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/alerts/info.png -------------------------------------------------------------------------------- /src/assets/img/alerts/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/alerts/success.png -------------------------------------------------------------------------------- /src/assets/img/alerts/success.svg: -------------------------------------------------------------------------------- 1 | 3 | 12 | 13 | -------------------------------------------------------------------------------- /src/assets/img/alerts/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/alerts/warning.png -------------------------------------------------------------------------------- /src/assets/img/american_flag_1920x1280_gradient.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/american_flag_1920x1280_gradient.jpg -------------------------------------------------------------------------------- /src/assets/img/american_flag_800x533_gradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/american_flag_800x533_gradient.png -------------------------------------------------------------------------------- /src/assets/img/angle-arrow-down-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/angle-arrow-down-hover.png -------------------------------------------------------------------------------- /src/assets/img/angle-arrow-down-hover.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/img/angle-arrow-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/angle-arrow-down.png -------------------------------------------------------------------------------- /src/assets/img/angle-arrow-down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/img/arrow-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/arrow-down.png -------------------------------------------------------------------------------- /src/assets/img/arrow-down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/img/arrow-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/arrow-right.png -------------------------------------------------------------------------------- /src/assets/img/arrow-right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/img/correct8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/correct8.png -------------------------------------------------------------------------------- /src/assets/img/correct8.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/img/correct9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/correct9.png -------------------------------------------------------------------------------- /src/assets/img/correct9.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/img/external-link-alt-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/external-link-alt-hover.png -------------------------------------------------------------------------------- /src/assets/img/external-link-alt-hover.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/img/external-link-alt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/external-link-alt.png -------------------------------------------------------------------------------- /src/assets/img/external-link-alt.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/img/external-link-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/external-link-hover.png -------------------------------------------------------------------------------- /src/assets/img/external-link-hover.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/img/external-link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/external-link.png -------------------------------------------------------------------------------- /src/assets/img/external-link.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/img/favicons/favicon-114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/favicons/favicon-114.png -------------------------------------------------------------------------------- /src/assets/img/favicons/favicon-144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/favicons/favicon-144.png -------------------------------------------------------------------------------- /src/assets/img/favicons/favicon-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/favicons/favicon-16.png -------------------------------------------------------------------------------- /src/assets/img/favicons/favicon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/favicons/favicon-192.png -------------------------------------------------------------------------------- /src/assets/img/favicons/favicon-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/favicons/favicon-40.png -------------------------------------------------------------------------------- /src/assets/img/favicons/favicon-57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/favicons/favicon-57.png -------------------------------------------------------------------------------- /src/assets/img/favicons/favicon-72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/favicons/favicon-72.png -------------------------------------------------------------------------------- /src/assets/img/favicons/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/favicons/favicon.ico -------------------------------------------------------------------------------- /src/assets/img/favicons/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/favicons/favicon.png -------------------------------------------------------------------------------- /src/assets/img/featured-projects/WALKOFF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/featured-projects/WALKOFF.png -------------------------------------------------------------------------------- /src/assets/img/featured-projects/biz_400x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/featured-projects/biz_400x400.png -------------------------------------------------------------------------------- /src/assets/img/featured-projects/construction_worker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/featured-projects/construction_worker.png -------------------------------------------------------------------------------- /src/assets/img/featured-projects/grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/featured-projects/grass.png -------------------------------------------------------------------------------- /src/assets/img/featured-projects/house_for_sale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/featured-projects/house_for_sale.png -------------------------------------------------------------------------------- /src/assets/img/featured-projects/pipes3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/featured-projects/pipes3.png -------------------------------------------------------------------------------- /src/assets/img/featured-projects/pipes4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/featured-projects/pipes4.png -------------------------------------------------------------------------------- /src/assets/img/featured-projects/smartcity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/featured-projects/smartcity.png -------------------------------------------------------------------------------- /src/assets/img/featured-projects/smartcity2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/featured-projects/smartcity2.png -------------------------------------------------------------------------------- /src/assets/img/featured-projects/smartcity4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/featured-projects/smartcity4.png -------------------------------------------------------------------------------- /src/assets/img/featured-projects/transportation_409x409.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/featured-projects/transportation_409x409.png -------------------------------------------------------------------------------- /src/assets/img/featured-projects/typing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/featured-projects/typing.png -------------------------------------------------------------------------------- /src/assets/img/green_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/green_circle.png -------------------------------------------------------------------------------- /src/assets/img/icons/chat_bubble.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/icons/chat_bubble.png -------------------------------------------------------------------------------- /src/assets/img/icons/check_bl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/icons/check_bl.png -------------------------------------------------------------------------------- /src/assets/img/icons/info_bl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/icons/info_bl.png -------------------------------------------------------------------------------- /src/assets/img/icons/policy_bl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/icons/policy_bl.png -------------------------------------------------------------------------------- /src/assets/img/icons/search.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/img/logo-img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logo-img.png -------------------------------------------------------------------------------- /src/assets/img/logos/GSA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/GSA.png -------------------------------------------------------------------------------- /src/assets/img/logos/NLM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/NLM.png -------------------------------------------------------------------------------- /src/assets/img/logos/PIF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/PIF.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/CFPB-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/CFPB-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/CFPB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/CFPB.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/DHS-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/DHS-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/DHS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/DHS.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/DOC-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/DOC-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/DOC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/DOC.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/DOD-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/DOD-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/DOD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/DOD.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/DOE-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/DOE-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/DOE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/DOE.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/DOI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/DOI.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/DOJ-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/DOJ-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/DOJ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/DOJ.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/DOL-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/DOL-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/DOL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/DOL.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/DOS-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/DOS-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/DOS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/DOS.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/DOT-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/DOT-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/DOT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/DOT.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/ED-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/ED-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/ED.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/ED.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/EOP-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/EOP-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/EOP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/EOP.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/EPA-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/EPA-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/EPA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/EPA.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/FDA-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/FDA-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/FDA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/FDA.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/FDA.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/GSA-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/GSA-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/GSA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/GSA.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/HHS-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/HHS-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/HHS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/HHS.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/HUD-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/HUD-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/HUD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/HUD.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/NARA-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/NARA-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/NARA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/NARA.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/NASA-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/NASA-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/NASA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/NASA.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/NRC-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/NRC-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/NRC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/NRC.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/NSA-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/NSA-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/NSA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/NSA.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/NSF-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/NSF-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/NSF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/NSF.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/OPM-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/OPM-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/OPM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/OPM.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/SBA-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/SBA-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/SBA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/SBA.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/SSA-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/SSA-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/SSA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/SSA.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/Seal_of_the_United_States_Department_of_the_Interior.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/Seal_of_the_United_States_Department_of_the_Interior.svg.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/TRE-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/TRE-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/TRE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/TRE.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/TREASURY-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/TREASURY-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/TREASURY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/TREASURY.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/USAID-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/USAID-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/USAID.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/USAID.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/USDA-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/USDA-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/USDA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/USDA.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/VA-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/VA-50x50.png -------------------------------------------------------------------------------- /src/assets/img/logos/agencies/VA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/agencies/VA.png -------------------------------------------------------------------------------- /src/assets/img/logos/press/fcw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/press/fcw.png -------------------------------------------------------------------------------- /src/assets/img/logos/press/pcmag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/press/pcmag.png -------------------------------------------------------------------------------- /src/assets/img/logos/press/techcrunch.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/press/techcrunch.jpg -------------------------------------------------------------------------------- /src/assets/img/logos/pub-code-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | code-gov 3 | PubC<>de 10 | 11 | -------------------------------------------------------------------------------- /src/assets/img/logos/pub-code-light.svg: -------------------------------------------------------------------------------- 1 | 2 | code-gov 3 | PubC<>de 10 | 11 | -------------------------------------------------------------------------------- /src/assets/img/logos/whitehouse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/whitehouse.png -------------------------------------------------------------------------------- /src/assets/img/logos/your-city-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | your-city 3 | Your City 10 | 11 | -------------------------------------------------------------------------------- /src/assets/img/logos/your-city-light.svg: -------------------------------------------------------------------------------- 1 | 2 | your-city 3 | Your City 10 | 11 | -------------------------------------------------------------------------------- /src/assets/img/logos/yourcity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/yourcity.png -------------------------------------------------------------------------------- /src/assets/img/logos/yourcity2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/logos/yourcity2.png -------------------------------------------------------------------------------- /src/assets/img/minus-alt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/minus-alt.png -------------------------------------------------------------------------------- /src/assets/img/minus-alt.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/img/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/minus.png -------------------------------------------------------------------------------- /src/assets/img/minus.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/img/og.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/og.jpg -------------------------------------------------------------------------------- /src/assets/img/plus-alt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/plus-alt.png -------------------------------------------------------------------------------- /src/assets/img/plus-alt.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/img/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/plus.png -------------------------------------------------------------------------------- /src/assets/img/plus.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/img/pubcode-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/pubcode-home.png -------------------------------------------------------------------------------- /src/assets/img/red_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/red_circle.png -------------------------------------------------------------------------------- /src/assets/img/ribbons/fork_me_on_github - backup.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Fork me on Github 9 | 10 | -------------------------------------------------------------------------------- /src/assets/img/ribbons/fork_me_on_github.svg: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | Fork me on Github 28 | 29 | -------------------------------------------------------------------------------- /src/assets/img/search-alt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/search-alt.png -------------------------------------------------------------------------------- /src/assets/img/search-alt.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/img/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/search.png -------------------------------------------------------------------------------- /src/assets/img/search.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/img/social-icons/png/facebook25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/social-icons/png/facebook25.png -------------------------------------------------------------------------------- /src/assets/img/social-icons/png/rss25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/social-icons/png/rss25.png -------------------------------------------------------------------------------- /src/assets/img/social-icons/png/twitter16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/social-icons/png/twitter16.png -------------------------------------------------------------------------------- /src/assets/img/social-icons/png/youtube15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/social-icons/png/youtube15.png -------------------------------------------------------------------------------- /src/assets/img/social-icons/svg/facebook25.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/assets/img/social-icons/svg/twitter16.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/assets/img/terminal.svg: -------------------------------------------------------------------------------- 1 | terminal -------------------------------------------------------------------------------- /src/assets/img/twitter.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/img/us_flag_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/us_flag_small.png -------------------------------------------------------------------------------- /src/assets/img/yellow_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/yellow_circle.png -------------------------------------------------------------------------------- /src/assets/img/yourcity.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GSA/code-gov-web/a536146f507dd8b2c889144cb78a2ae6874b2cf1/src/assets/img/yourcity.jpg -------------------------------------------------------------------------------- /src/assets/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "App", 3 | "icons": [ 4 | { 5 | "src": "/assets/img/favicons/favicon-192.png", 6 | "sizes": "192x192", 7 | "type": "image/png", 8 | "density": 4.0 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /src/assets/robots.txt: -------------------------------------------------------------------------------- 1 | # robotstxt.org 2 | 3 | User-agent: * 4 | -------------------------------------------------------------------------------- /src/assets/service-worker.js: -------------------------------------------------------------------------------- 1 | // This file is intentionally without code. 2 | -------------------------------------------------------------------------------- /src/enums/languages.json: -------------------------------------------------------------------------------- 1 | ["Assembly","C","C++","C#","ColdFusion","CSS","Docker","F#","Fortran","Go","HTML","IDL","Java","JavaScript","JSON","Kafka","Lisp","m4","Makefile","Markdown","MATLAB","MongoDB","MySQL","Objective-C","OpenEdge ABL","Oracle PL/SQL","Perl","PHP","PL/pgSQL","PowerShell","Python","Ruby","Salt","SAS","SASS","Shell","SourcePawn","SQL","SQLite","SQL PL","Swift","TypeScript","VB.NET","VBScript","Visual Basic","XML"] 2 | -------------------------------------------------------------------------------- /src/main.browser.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Angular bootstraping 3 | */ 4 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 5 | import { decorateModuleRef } from './app/environment'; 6 | import { ApplicationRef } from '@angular/core'; 7 | import { bootloader } from '@angularclass/hmr'; 8 | /* 9 | * App Module 10 | * our top level module that holds all of our components 11 | */ 12 | import { AppModule } from './app'; 13 | 14 | /* 15 | * Bootstrap our Angular app with a top level NgModule 16 | */ 17 | export function main(): Promise { 18 | return platformBrowserDynamic() 19 | .bootstrapModule(AppModule) 20 | .then(decorateModuleRef) 21 | .catch(err => console.error(err)); 22 | 23 | } 24 | 25 | 26 | bootloader(main); 27 | 28 | -------------------------------------------------------------------------------- /src/meta/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /src/polyfills.browser.ts: -------------------------------------------------------------------------------- 1 | // TODO(gdi2290): switch to DLLs 2 | 3 | // Polyfills 4 | 5 | // import 'ie-shim'; // Internet Explorer 9 support 6 | 7 | 8 | // import 'core-js/es6'; 9 | // Added parts of es6 which are necessary for your project or your browser support requirements. 10 | import 'core-js/es6/symbol'; 11 | import 'core-js/es6/object'; 12 | import 'core-js/es6/function'; 13 | import 'core-js/es6/parse-int'; 14 | import 'core-js/es6/parse-float'; 15 | import 'core-js/es6/number'; 16 | import 'core-js/es6/math'; 17 | import 'core-js/es6/string'; 18 | import 'core-js/es6/date'; 19 | import 'core-js/es6/array'; 20 | import 'core-js/es6/regexp'; 21 | import 'core-js/es6/map'; 22 | import 'core-js/es6/set'; 23 | import 'core-js/es6/weak-map'; 24 | import 'core-js/es6/weak-set'; 25 | import 'core-js/es6/typed'; 26 | import 'core-js/es6/reflect'; 27 | // see issue https://github.com/AngularClass/angular2-webpack-starter/issues/709 28 | // import 'core-js/es6/promise'; 29 | 30 | import 'core-js/es7/reflect'; 31 | import 'core-js/es7/object'; 32 | import 'zone.js/dist/zone'; 33 | 34 | // Typescript emit helpers polyfill 35 | import 'ts-helpers'; 36 | 37 | if ('production' === ENV) { 38 | // Production 39 | 40 | 41 | } else { 42 | // Development 43 | 44 | Error.stackTraceLimit = Infinity; 45 | 46 | require('zone.js/dist/long-stack-trace-zone'); 47 | 48 | } 49 | -------------------------------------------------------------------------------- /src/styles/base/_all.scss: -------------------------------------------------------------------------------- 1 | /* import CSS rules that allow you to use icons */ 2 | @import '~@code.gov/code-gov-font/css/code-gov'; 3 | @import '~devicons/css/devicons.scss'; 4 | 5 | @import '~@code.gov/code-gov-style/_sass/_all.scss'; 6 | 7 | .banner { 8 | background-image: url("./assets/img/american_flag_1920x1280_gradient.jpg"); 9 | } -------------------------------------------------------------------------------- /src/vendor.browser.ts: -------------------------------------------------------------------------------- 1 | // For vendors for example jQuery, Lodash, angular2-jwt just import them here unless you plan on 2 | // chunking vendors files for async loading. You would need to import the async loaded vendors 3 | // at the entry point of the async loaded file. Also see custom-typings.d.ts as you also need to 4 | // run `typings install x` where `x` is your module 5 | 6 | // TODO(gdi2290): switch to DLLs 7 | 8 | // Angular 2 9 | import '@angular/platform-browser'; 10 | import '@angular/platform-browser-dynamic'; 11 | import '@angular/core'; 12 | import '@angular/common'; 13 | import '@angular/forms'; 14 | import '@angular/http'; 15 | import '@angular/router'; 16 | 17 | // AngularClass 18 | import '@angularclass/hmr'; 19 | 20 | // RxJS 21 | import 'rxjs/add/operator/map'; 22 | import 'rxjs/add/operator/mergeMap'; 23 | 24 | 25 | if ('production' === ENV) { 26 | // Production 27 | 28 | 29 | } else { 30 | // Development 31 | 32 | } 33 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "types": [ 4 | "hammerjs", 5 | "jasmine", 6 | "jasminewd2", 7 | "node", 8 | "protractor", 9 | "selenium-webdriver", 10 | "source-map", 11 | "uglify-js", 12 | "webpack" 13 | ], 14 | "target": "es5", 15 | "module": "commonjs", 16 | "moduleResolution": "node", 17 | "emitDecoratorMetadata": true, 18 | "experimentalDecorators": true, 19 | "allowSyntheticDefaultImports": true, 20 | "sourceMap": true, 21 | "noEmitHelpers": true, 22 | "strictNullChecks": false, 23 | "baseUrl": "./src", 24 | "paths": { 25 | }, 26 | "lib": [ 27 | "dom", 28 | "es6", 29 | "es2017" 30 | ] 31 | }, 32 | "exclude": [ 33 | "node_modules", 34 | "dist" 35 | ], 36 | "awesomeTypescriptLoaderOptions": { 37 | "forkChecker": true, 38 | "useWebpackText": true 39 | }, 40 | "compileOnSave": false, 41 | "buildOnSave": false, 42 | "atom": { "rewriteTsconfig": false } 43 | } 44 | -------------------------------------------------------------------------------- /typedoc.json: -------------------------------------------------------------------------------- 1 | { 2 | "mode": "modules", 3 | "out": "doc", 4 | "theme": "default", 5 | "ignoreCompilerErrors": "true", 6 | "experimentalDecorators": "true", 7 | "emitDecoratorMetadata": "true", 8 | "target": "ES5", 9 | "moduleResolution": "node", 10 | "preserveConstEnums": "true", 11 | "stripInternal": "true", 12 | "suppressExcessPropertyErrors": "true", 13 | "suppressImplicitAnyIndexErrors": "true", 14 | "module": "commonjs" 15 | } 16 | -------------------------------------------------------------------------------- /typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "code-gov-web", 3 | "dependencies": {} 4 | } 5 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author: @AngularClass 3 | */ 4 | 5 | // Look in ./config folder for webpack.dev.js 6 | switch (process.env.NODE_ENV) { 7 | case 'prod': 8 | case 'production': 9 | module.exports = require('./config/webpack.prod'); 10 | break; 11 | case 'test': 12 | case 'testing': 13 | module.exports = require('./config/webpack.test'); 14 | break; 15 | case 'stag': 16 | case 'staging': 17 | module.exports = require('./config/webpack.stag'); 18 | break; 19 | case 'dev': 20 | case 'development': 21 | default: 22 | module.exports = require('./config/webpack.dev'); 23 | } 24 | --------------------------------------------------------------------------------