├── .config └── config.json ├── .dockerignore ├── .env.example ├── .eslintignore ├── .eslintrc ├── .github ├── ISSUE_TEMPLATE │ ├── bug.md │ ├── task.md │ └── user-story.md ├── label-actions.yml ├── requirements.txt └── workflows │ ├── deploy-test.yml │ ├── nodejs.yml │ ├── py_deploy_to_oc.py │ └── run-e2e-tests.yml ├── .gitignore ├── .husky ├── .gitignore └── pre-commit ├── .pipeline ├── .gitignore ├── build.js ├── lib │ ├── build.js │ └── config.js ├── npmw ├── package-lock.json └── package.json ├── .prettierignore ├── .prettierrc ├── .snyk ├── .storybook ├── addons.js ├── config.js ├── mocks │ ├── plan.js │ ├── references.js │ └── user.js └── roles-addon │ ├── Tool.js │ ├── UserProvider.js │ ├── constants.js │ ├── index.js │ └── register.js ├── COMPLIANCE.yaml ├── Caddyfile ├── Dockerfile ├── LICENSE ├── README.md ├── bcgovpubcode.yml ├── config ├── env.js ├── getHttpsConfig.js ├── jest │ ├── babelTransform.js │ ├── cssTransform.js │ └── fileTransform.js ├── modules.js ├── paths.js ├── webpack.config.js ├── webpack │ └── persistentCache │ │ └── createEnvironmentHash.js └── webpackDevServer.config.js ├── cypress.json ├── cypress ├── .eslintrc.js ├── integration │ ├── login.spec.js │ ├── newUserForm.spec.js │ ├── plan.spec.js │ └── workQueue.spec.js ├── plugins │ └── index.js └── support │ ├── commands.js │ └── index.js ├── example-cypress.env.json ├── gulpfile.js ├── jsconfig.json ├── openshift ├── .gitignore ├── app.bc.yaml ├── caddy.is.yaml ├── deployments │ ├── api.cronjob.yaml │ ├── api.yaml │ ├── db.builder.yaml │ ├── db.yaml │ ├── minio.yaml │ ├── nginx-minio.builder.yaml │ ├── nginx-minio.dc.yaml │ └── web.yaml ├── minio.is.yaml ├── node-10.is.yaml ├── postgis.is.yaml └── range-web-caddy.bc.yaml ├── package-lock.json ├── package.json ├── prettier.config.js ├── public ├── images │ ├── cow.jpg │ ├── icon_additionalreqs.svg │ ├── icon_attachment.svg │ ├── icon_basicinformation.svg │ ├── icon_info.svg │ ├── icon_invasiveplants.svg │ ├── icon_management.svg │ ├── icon_map.svg │ ├── icon_ministersissues.svg │ ├── icon_pasture.svg │ ├── icon_pastures.svg │ ├── icon_plantcommunity.svg │ ├── icon_plantcommunityaction.svg │ ├── icon_schedules.svg │ ├── login_logo.png │ ├── login_paragraph3.jpg │ ├── login_paragraph4.jpg │ ├── login_paragraph5.jpg │ ├── myrangebc_logo.png │ ├── myrangebc_logo.svg │ ├── myrangebc_logo_dark.svg │ ├── shortcut_icon.png │ └── signin_background.jpg ├── index.html ├── manifest.json └── robots.txt ├── scripts ├── build.js ├── clean-e2e-server ├── start-e2e-server ├── start.js └── test.js ├── semantic.json ├── semantic ├── dist │ └── components │ │ ├── accordion.css │ │ ├── accordion.js │ │ ├── accordion.min.css │ │ ├── accordion.min.js │ │ ├── ad.css │ │ ├── ad.min.css │ │ ├── api.js │ │ ├── api.min.js │ │ ├── breadcrumb.css │ │ ├── breadcrumb.min.css │ │ ├── button.css │ │ ├── button.min.css │ │ ├── card.css │ │ ├── card.min.css │ │ ├── checkbox.css │ │ ├── checkbox.js │ │ ├── checkbox.min.css │ │ ├── checkbox.min.js │ │ ├── comment.css │ │ ├── comment.min.css │ │ ├── container.css │ │ ├── container.min.css │ │ ├── dimmer.css │ │ ├── dimmer.js │ │ ├── dimmer.min.css │ │ ├── dimmer.min.js │ │ ├── divider.css │ │ ├── divider.min.css │ │ ├── dropdown.css │ │ ├── dropdown.js │ │ ├── dropdown.min.css │ │ ├── dropdown.min.js │ │ ├── embed.css │ │ ├── embed.js │ │ ├── embed.min.css │ │ ├── embed.min.js │ │ ├── feed.css │ │ ├── feed.min.css │ │ ├── flag.css │ │ ├── flag.min.css │ │ ├── form.css │ │ ├── form.js │ │ ├── form.min.css │ │ ├── form.min.js │ │ ├── grid.css │ │ ├── grid.min.css │ │ ├── header.css │ │ ├── header.min.css │ │ ├── icon.css │ │ ├── icon.min.css │ │ ├── image.css │ │ ├── image.min.css │ │ ├── input.css │ │ ├── input.min.css │ │ ├── item.css │ │ ├── item.min.css │ │ ├── label.css │ │ ├── label.min.css │ │ ├── list.css │ │ ├── list.min.css │ │ ├── loader.css │ │ ├── loader.min.css │ │ ├── menu.css │ │ ├── menu.min.css │ │ ├── message.css │ │ ├── message.min.css │ │ ├── modal.css │ │ ├── modal.js │ │ ├── modal.min.css │ │ ├── modal.min.js │ │ ├── nag.css │ │ ├── nag.js │ │ ├── nag.min.css │ │ ├── nag.min.js │ │ ├── placeholder.css │ │ ├── placeholder.min.css │ │ ├── popup.css │ │ ├── popup.js │ │ ├── popup.min.css │ │ ├── popup.min.js │ │ ├── progress.css │ │ ├── progress.js │ │ ├── progress.min.css │ │ ├── progress.min.js │ │ ├── rail.css │ │ ├── rail.min.css │ │ ├── rating.css │ │ ├── rating.js │ │ ├── rating.min.css │ │ ├── rating.min.js │ │ ├── reset.css │ │ ├── reset.min.css │ │ ├── reveal.css │ │ ├── reveal.min.css │ │ ├── search.css │ │ ├── search.js │ │ ├── search.min.css │ │ ├── search.min.js │ │ ├── segment.css │ │ ├── segment.min.css │ │ ├── shape.css │ │ ├── shape.js │ │ ├── shape.min.css │ │ ├── shape.min.js │ │ ├── sidebar.css │ │ ├── sidebar.js │ │ ├── sidebar.min.css │ │ ├── sidebar.min.js │ │ ├── site.css │ │ ├── site.js │ │ ├── site.min.css │ │ ├── site.min.js │ │ ├── statistic.css │ │ ├── statistic.min.css │ │ ├── step.css │ │ ├── step.min.css │ │ ├── sticky.css │ │ ├── sticky.js │ │ ├── sticky.min.css │ │ ├── sticky.min.js │ │ ├── tab.css │ │ ├── tab.js │ │ ├── tab.min.css │ │ ├── tab.min.js │ │ ├── table.css │ │ ├── table.min.css │ │ ├── transition.css │ │ ├── transition.js │ │ ├── transition.min.css │ │ ├── transition.min.js │ │ ├── visibility.js │ │ └── visibility.min.js ├── gulpfile.js ├── src │ ├── definitions │ │ ├── behaviors │ │ │ ├── api.js │ │ │ ├── form.js │ │ │ └── visibility.js │ │ ├── collections │ │ │ ├── breadcrumb.less │ │ │ ├── form.less │ │ │ ├── grid.less │ │ │ ├── menu.less │ │ │ ├── message.less │ │ │ └── table.less │ │ ├── elements │ │ │ ├── button.less │ │ │ ├── container.less │ │ │ ├── divider.less │ │ │ ├── flag.less │ │ │ ├── header.less │ │ │ ├── icon.less │ │ │ ├── image.less │ │ │ ├── input.less │ │ │ ├── label.less │ │ │ ├── list.less │ │ │ ├── loader.less │ │ │ ├── placeholder.less │ │ │ ├── rail.less │ │ │ ├── reveal.less │ │ │ ├── segment.less │ │ │ └── step.less │ │ ├── globals │ │ │ ├── reset.less │ │ │ ├── site.js │ │ │ └── site.less │ │ ├── modules │ │ │ ├── accordion.js │ │ │ ├── accordion.less │ │ │ ├── checkbox.js │ │ │ ├── checkbox.less │ │ │ ├── dimmer.js │ │ │ ├── dimmer.less │ │ │ ├── dropdown.js │ │ │ ├── dropdown.less │ │ │ ├── embed.js │ │ │ ├── embed.less │ │ │ ├── modal.js │ │ │ ├── modal.less │ │ │ ├── nag.js │ │ │ ├── nag.less │ │ │ ├── popup.js │ │ │ ├── popup.less │ │ │ ├── progress.js │ │ │ ├── progress.less │ │ │ ├── rating.js │ │ │ ├── rating.less │ │ │ ├── search.js │ │ │ ├── search.less │ │ │ ├── shape.js │ │ │ ├── shape.less │ │ │ ├── sidebar.js │ │ │ ├── sidebar.less │ │ │ ├── sticky.js │ │ │ ├── sticky.less │ │ │ ├── tab.js │ │ │ ├── tab.less │ │ │ ├── transition.js │ │ │ └── transition.less │ │ └── views │ │ │ ├── ad.less │ │ │ ├── card.less │ │ │ ├── comment.less │ │ │ ├── feed.less │ │ │ ├── item.less │ │ │ └── statistic.less │ ├── semantic.less │ ├── site │ │ ├── collections │ │ │ ├── breadcrumb.overrides │ │ │ ├── breadcrumb.variables │ │ │ ├── form.overrides │ │ │ ├── form.variables │ │ │ ├── grid.overrides │ │ │ ├── grid.variables │ │ │ ├── menu.overrides │ │ │ ├── menu.variables │ │ │ ├── message.overrides │ │ │ ├── message.variables │ │ │ ├── table.overrides │ │ │ └── table.variables │ │ ├── elements │ │ │ ├── button.overrides │ │ │ ├── button.variables │ │ │ ├── container.overrides │ │ │ ├── container.variables │ │ │ ├── divider.overrides │ │ │ ├── divider.variables │ │ │ ├── flag.overrides │ │ │ ├── flag.variables │ │ │ ├── header.overrides │ │ │ ├── header.variables │ │ │ ├── icon.overrides │ │ │ ├── icon.variables │ │ │ ├── image.overrides │ │ │ ├── image.variables │ │ │ ├── input.overrides │ │ │ ├── input.variables │ │ │ ├── label.overrides │ │ │ ├── label.variables │ │ │ ├── list.overrides │ │ │ ├── list.variables │ │ │ ├── loader.overrides │ │ │ ├── loader.variables │ │ │ ├── rail.overrides │ │ │ ├── rail.variables │ │ │ ├── reveal.overrides │ │ │ ├── reveal.variables │ │ │ ├── segment.overrides │ │ │ ├── segment.variables │ │ │ ├── step.overrides │ │ │ └── step.variables │ │ ├── globals │ │ │ ├── reset.overrides │ │ │ ├── reset.variables │ │ │ ├── site.overrides │ │ │ └── site.variables │ │ ├── modules │ │ │ ├── accordion.overrides │ │ │ ├── accordion.variables │ │ │ ├── chatroom.overrides │ │ │ ├── chatroom.variables │ │ │ ├── checkbox.overrides │ │ │ ├── checkbox.variables │ │ │ ├── dimmer.overrides │ │ │ ├── dimmer.variables │ │ │ ├── dropdown.overrides │ │ │ ├── dropdown.variables │ │ │ ├── embed.overrides │ │ │ ├── embed.variables │ │ │ ├── modal.overrides │ │ │ ├── modal.variables │ │ │ ├── nag.overrides │ │ │ ├── nag.variables │ │ │ ├── popup.overrides │ │ │ ├── popup.variables │ │ │ ├── progress.overrides │ │ │ ├── progress.variables │ │ │ ├── rating.overrides │ │ │ ├── rating.variables │ │ │ ├── search.overrides │ │ │ ├── search.variables │ │ │ ├── shape.overrides │ │ │ ├── shape.variables │ │ │ ├── sidebar.overrides │ │ │ ├── sidebar.variables │ │ │ ├── sticky.overrides │ │ │ ├── sticky.variables │ │ │ ├── tab.overrides │ │ │ ├── tab.variables │ │ │ ├── transition.overrides │ │ │ └── transition.variables │ │ └── views │ │ │ ├── ad.overrides │ │ │ ├── ad.variables │ │ │ ├── card.overrides │ │ │ ├── card.variables │ │ │ ├── comment.overrides │ │ │ ├── comment.variables │ │ │ ├── feed.overrides │ │ │ ├── feed.variables │ │ │ ├── item.overrides │ │ │ ├── item.variables │ │ │ ├── statistic.overrides │ │ │ └── statistic.variables │ ├── theme.config │ ├── theme.less │ └── themes │ │ ├── amazon │ │ ├── elements │ │ │ ├── button.overrides │ │ │ └── button.variables │ │ └── globals │ │ │ └── site.variables │ │ ├── basic │ │ ├── assets │ │ │ └── fonts │ │ │ │ ├── icons.eot │ │ │ │ ├── icons.svg │ │ │ │ ├── icons.ttf │ │ │ │ └── icons.woff │ │ ├── collections │ │ │ ├── table.overrides │ │ │ └── table.variables │ │ ├── elements │ │ │ ├── button.overrides │ │ │ ├── button.variables │ │ │ ├── icon.overrides │ │ │ ├── icon.variables │ │ │ ├── step.overrides │ │ │ └── step.variables │ │ ├── globals │ │ │ ├── reset.overrides │ │ │ └── reset.variables │ │ ├── modules │ │ │ ├── progress.overrides │ │ │ └── progress.variables │ │ └── views │ │ │ ├── card.overrides │ │ │ └── card.variables │ │ ├── bookish │ │ └── elements │ │ │ ├── header.overrides │ │ │ └── header.variables │ │ ├── bootstrap3 │ │ └── elements │ │ │ ├── button.overrides │ │ │ └── button.variables │ │ ├── chubby │ │ ├── collections │ │ │ ├── form.overrides │ │ │ ├── form.variables │ │ │ ├── menu.overrides │ │ │ └── menu.variables │ │ ├── elements │ │ │ ├── button.overrides │ │ │ ├── button.variables │ │ │ ├── header.overrides │ │ │ └── header.variables │ │ ├── modules │ │ │ ├── accordion.overrides │ │ │ └── accordion.variables │ │ └── views │ │ │ ├── comment.overrides │ │ │ └── comment.variables │ │ ├── classic │ │ ├── collections │ │ │ ├── table.overrides │ │ │ └── table.variables │ │ ├── elements │ │ │ ├── button.overrides │ │ │ ├── button.variables │ │ │ ├── header.overrides │ │ │ └── header.variables │ │ ├── modules │ │ │ ├── progress.overrides │ │ │ └── progress.variables │ │ └── views │ │ │ ├── card.overrides │ │ │ └── card.variables │ │ ├── colored │ │ └── modules │ │ │ ├── checkbox.overrides │ │ │ └── checkbox.variables │ │ ├── default │ │ ├── assets │ │ │ ├── fonts │ │ │ │ ├── brand-icons.eot │ │ │ │ ├── brand-icons.svg │ │ │ │ ├── brand-icons.ttf │ │ │ │ ├── brand-icons.woff │ │ │ │ ├── brand-icons.woff2 │ │ │ │ ├── icons.eot │ │ │ │ ├── icons.svg │ │ │ │ ├── icons.ttf │ │ │ │ ├── icons.woff │ │ │ │ ├── icons.woff2 │ │ │ │ ├── outline-icons.eot │ │ │ │ ├── outline-icons.svg │ │ │ │ ├── outline-icons.ttf │ │ │ │ ├── outline-icons.woff │ │ │ │ └── outline-icons.woff2 │ │ │ └── images │ │ │ │ └── flags.png │ │ ├── collections │ │ │ ├── breadcrumb.overrides │ │ │ ├── breadcrumb.variables │ │ │ ├── form.overrides │ │ │ ├── form.variables │ │ │ ├── grid.overrides │ │ │ ├── grid.variables │ │ │ ├── menu.overrides │ │ │ ├── menu.variables │ │ │ ├── message.overrides │ │ │ ├── message.variables │ │ │ ├── table.overrides │ │ │ └── table.variables │ │ ├── elements │ │ │ ├── button.overrides │ │ │ ├── button.variables │ │ │ ├── container.overrides │ │ │ ├── container.variables │ │ │ ├── divider.overrides │ │ │ ├── divider.variables │ │ │ ├── flag.overrides │ │ │ ├── flag.variables │ │ │ ├── header.overrides │ │ │ ├── header.variables │ │ │ ├── icon.overrides │ │ │ ├── icon.variables │ │ │ ├── image.overrides │ │ │ ├── image.variables │ │ │ ├── input.overrides │ │ │ ├── input.variables │ │ │ ├── label.overrides │ │ │ ├── label.variables │ │ │ ├── list.overrides │ │ │ ├── list.variables │ │ │ ├── loader.overrides │ │ │ ├── loader.variables │ │ │ ├── placeholder.overrides │ │ │ ├── placeholder.variables │ │ │ ├── rail.overrides │ │ │ ├── rail.variables │ │ │ ├── reveal.overrides │ │ │ ├── reveal.variables │ │ │ ├── segment.overrides │ │ │ ├── segment.variables │ │ │ ├── step.overrides │ │ │ └── step.variables │ │ ├── globals │ │ │ ├── reset.overrides │ │ │ ├── reset.variables │ │ │ ├── site.overrides │ │ │ └── site.variables │ │ ├── modules │ │ │ ├── accordion.overrides │ │ │ ├── accordion.variables │ │ │ ├── chatroom.overrides │ │ │ ├── chatroom.variables │ │ │ ├── checkbox.overrides │ │ │ ├── checkbox.variables │ │ │ ├── dimmer.overrides │ │ │ ├── dimmer.variables │ │ │ ├── dropdown.overrides │ │ │ ├── dropdown.variables │ │ │ ├── embed.overrides │ │ │ ├── embed.variables │ │ │ ├── modal.overrides │ │ │ ├── modal.variables │ │ │ ├── nag.overrides │ │ │ ├── nag.variables │ │ │ ├── popup.overrides │ │ │ ├── popup.variables │ │ │ ├── progress.overrides │ │ │ ├── progress.variables │ │ │ ├── rating.overrides │ │ │ ├── rating.variables │ │ │ ├── search.overrides │ │ │ ├── search.variables │ │ │ ├── shape.overrides │ │ │ ├── shape.variables │ │ │ ├── sidebar.overrides │ │ │ ├── sidebar.variables │ │ │ ├── sticky.overrides │ │ │ ├── sticky.variables │ │ │ ├── tab.overrides │ │ │ ├── tab.variables │ │ │ ├── transition.overrides │ │ │ └── transition.variables │ │ └── views │ │ │ ├── ad.overrides │ │ │ ├── ad.variables │ │ │ ├── card.overrides │ │ │ ├── card.variables │ │ │ ├── comment.overrides │ │ │ ├── comment.variables │ │ │ ├── feed.overrides │ │ │ ├── feed.variables │ │ │ ├── item.overrides │ │ │ ├── item.variables │ │ │ ├── statistic.overrides │ │ │ └── statistic.variables │ │ ├── duo │ │ └── elements │ │ │ ├── loader.overrides │ │ │ └── loader.variables │ │ ├── fixed-width │ │ ├── collections │ │ │ ├── grid.overrides │ │ │ └── grid.variables │ │ └── modules │ │ │ ├── modal.overrides │ │ │ └── modal.variables │ │ ├── flat │ │ ├── collections │ │ │ ├── form.overrides │ │ │ └── form.variables │ │ └── globals │ │ │ ├── site.overrides │ │ │ └── site.variables │ │ ├── github │ │ ├── assets │ │ │ └── fonts │ │ │ │ ├── octicons-local.ttf │ │ │ │ ├── octicons.svg │ │ │ │ ├── octicons.ttf │ │ │ │ └── octicons.woff │ │ ├── collections │ │ │ ├── breadcrumb.variables │ │ │ ├── form.overrides │ │ │ ├── form.variables │ │ │ ├── grid.variables │ │ │ ├── menu.overrides │ │ │ ├── menu.variables │ │ │ ├── message.overrides │ │ │ ├── message.variables │ │ │ └── table.variables │ │ ├── elements │ │ │ ├── button.overrides │ │ │ ├── button.variables │ │ │ ├── header.variables │ │ │ ├── icon.overrides │ │ │ ├── icon.variables │ │ │ ├── image.variables │ │ │ ├── input.overrides │ │ │ ├── input.variables │ │ │ ├── label.overrides │ │ │ ├── label.variables │ │ │ ├── segment.overrides │ │ │ ├── segment.variables │ │ │ ├── step.overrides │ │ │ └── step.variables │ │ ├── globals │ │ │ └── site.variables │ │ └── modules │ │ │ ├── dropdown.overrides │ │ │ ├── dropdown.variables │ │ │ └── popup.variables │ │ ├── gmail │ │ └── collections │ │ │ ├── message.overrides │ │ │ └── message.variables │ │ ├── instagram │ │ └── views │ │ │ ├── card.overrides │ │ │ └── card.variables │ │ ├── joypixels │ │ └── elements │ │ │ ├── emoji.overrides │ │ │ └── emoji.variables │ │ ├── material │ │ ├── assets │ │ │ └── fonts │ │ │ │ ├── icons.eot │ │ │ │ ├── icons.svg │ │ │ │ ├── icons.ttf │ │ │ │ ├── icons.woff │ │ │ │ └── icons.woff2 │ │ ├── collections │ │ │ ├── menu.overrides │ │ │ └── menu.variables │ │ ├── elements │ │ │ ├── button.overrides │ │ │ ├── button.variables │ │ │ ├── header.overrides │ │ │ ├── header.variables │ │ │ ├── icon.overrides │ │ │ └── icon.variables │ │ ├── globals │ │ │ ├── site.overrides │ │ │ └── site.variables │ │ └── modules │ │ │ ├── dropdown.overrides │ │ │ ├── dropdown.variables │ │ │ ├── modal.overrides │ │ │ └── modal.variables │ │ ├── pulsar │ │ └── elements │ │ │ ├── loader.overrides │ │ │ └── loader.variables │ │ ├── raised │ │ └── elements │ │ │ ├── button.overrides │ │ │ └── button.variables │ │ ├── resetcss │ │ └── globals │ │ │ ├── reset.overrides │ │ │ └── reset.variables │ │ ├── round │ │ └── elements │ │ │ ├── button.overrides │ │ │ └── button.variables │ │ ├── rtl │ │ └── globals │ │ │ ├── site.overrides │ │ │ └── site.variables │ │ ├── striped │ │ └── modules │ │ │ ├── progress.overrides │ │ │ └── progress.variables │ │ ├── timeline │ │ └── views │ │ │ ├── feed.overrides │ │ │ └── feed.variables │ │ └── twitter │ │ └── elements │ │ ├── button.overrides │ │ ├── button.variables │ │ ├── emoji.overrides │ │ └── emoji.variables └── tasks │ ├── README.md │ ├── admin │ ├── components │ │ ├── create.js │ │ ├── init.js │ │ └── update.js │ ├── distributions │ │ ├── create.js │ │ ├── init.js │ │ └── update.js │ ├── publish.js │ ├── register.js │ └── release.js │ ├── build.js │ ├── build │ ├── assets.js │ ├── css.js │ └── javascript.js │ ├── check-install.js │ ├── clean.js │ ├── collections │ ├── README.md │ ├── admin.js │ ├── build.js │ ├── internal.js │ └── rtl.js │ ├── config │ ├── admin │ │ ├── github.js │ │ ├── oauth.example.js │ │ ├── release.js │ │ └── templates │ │ │ ├── README.md │ │ │ ├── bower.json │ │ │ ├── component-package.js │ │ │ ├── composer.json │ │ │ ├── css-package.js │ │ │ ├── less-package.js │ │ │ └── package.json │ ├── defaults.js │ ├── docs.js │ ├── npm │ │ └── gulpfile.js │ ├── project │ │ ├── config.js │ │ ├── install.js │ │ └── release.js │ ├── tasks.js │ └── user.js │ ├── docs │ ├── build.js │ ├── metadata.js │ └── serve.js │ ├── install.js │ ├── rtl │ ├── build.js │ └── watch.js │ ├── version.js │ └── watch.js ├── sonar-runner ├── build.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── readme.md └── settings.gradle ├── src ├── actionCreators │ ├── commonActionCreator.js │ ├── grazingScheduleActionCreator.js │ ├── index.js │ ├── ministerIssueActionCreator.js │ ├── pastureActionCreator.js │ ├── planActionCreator.js │ ├── requirementAndConsiderationActionCreator.js │ ├── schema.js │ └── toastActionCreator.js ├── actions │ ├── authActions.js │ ├── commonActions.js │ ├── index.js │ ├── networkActions.js │ ├── storeActions.js │ └── updateActions.js ├── api │ ├── delete.js │ ├── emailtemplate.js │ ├── index.js │ ├── plan.js │ ├── upload.js │ └── user.js ├── components │ ├── App.js │ ├── PageNotFound.js │ ├── ReturnPage.js │ ├── assignRolesAndDistrictsPage │ │ ├── index.css │ │ └── index.js │ ├── common │ │ ├── Avatar.js │ │ ├── Avatar.story.js │ │ ├── Banner.js │ │ ├── Banner.story.js │ │ ├── CollapsibleBox.js │ │ ├── CollapsibleBox.story.js │ │ ├── EnvironmentBanner.js │ │ ├── ErrorBoundary.js │ │ ├── ErrorMessage.js │ │ ├── ErrorMessage.story.js │ │ ├── ErrorPage.js │ │ ├── ErrorPage.story.js │ │ ├── InfoTip.js │ │ ├── InfoTip.story.js │ │ ├── InputModal.js │ │ ├── InputModal.story.js │ │ ├── ListModal.js │ │ ├── ListModal.story.js │ │ ├── Loading.js │ │ ├── Loading.story.js │ │ ├── LocationButton.js │ │ ├── LocationButton.story.js │ │ ├── MultiParagraphDisplay.js │ │ ├── NetworkStatus.js │ │ ├── PermissionsField.js │ │ ├── PrimaryButton.js │ │ ├── PrimaryButton.story.js │ │ ├── Select.js │ │ ├── SortableTableHeaderCell.js │ │ ├── Status.js │ │ ├── Status.story.js │ │ ├── TextField.js │ │ ├── TextField.story.js │ │ ├── footer │ │ │ ├── PrivacyInfoModal.js │ │ │ └── index.js │ │ ├── form │ │ │ ├── DateInputField.js │ │ │ ├── DayMonthPicker.js │ │ │ ├── DayMonthPicker.story.js │ │ │ ├── DecimalField.js │ │ │ ├── Effect.js │ │ │ ├── ErrorMessage.js │ │ │ ├── HelpfulDropdown.js │ │ │ ├── HelpfulDropdown.story.js │ │ │ ├── InputRef.js │ │ │ ├── OnSubmitValidationError.js │ │ │ └── PercentField.js │ │ └── index.js │ ├── decorators │ │ ├── index.js │ │ ├── marginDecorator.js │ │ └── providerDecorator.js │ ├── emailTemplatePage │ │ └── index.js │ ├── loginPage │ │ ├── BrowserWarningHeader.js │ │ ├── BrowserWarningHeader.story.js │ │ ├── SignInBox.js │ │ ├── SignInBox.story.js │ │ ├── SignInButtons.js │ │ ├── SignInButtons.story.js │ │ ├── SignInErrorMessage.js │ │ ├── SignInErrorMessage.story.js │ │ ├── index.js │ │ └── index.story.js │ ├── mainPage │ │ ├── ConfirmModals.js │ │ ├── InputModal.js │ │ ├── Navbar.js │ │ ├── SignInModal.js │ │ ├── Toasts.js │ │ ├── UsernameInputModal.js │ │ └── index.js │ ├── manageClientPage │ │ ├── ClientDropdown.js │ │ ├── ClientLinkList.js │ │ └── index.js │ ├── mergeAccountPage │ │ └── index.js │ ├── rangeUsePlanPage │ │ ├── ActionBtns.js │ │ ├── AmendFromLegalButton.js │ │ ├── BackBtn.js │ │ ├── ContentsContainer.js │ │ ├── DiscardAmendmentButton.js │ │ ├── DownloadPDFBtn.js │ │ ├── ImportPastureModal.js │ │ ├── PDFViewFromServer.js │ │ ├── PlanForm.js │ │ ├── StickyHeader.js │ │ ├── additionalRequirements │ │ │ ├── AdditionalRequirementRow.js │ │ │ ├── index.js │ │ │ └── index.story.js │ │ ├── attachments │ │ │ ├── AttachmentRow.js │ │ │ └── index.js │ │ ├── basicInformation │ │ │ ├── ManualConfirmation.js │ │ │ └── index.js │ │ ├── conditions │ │ │ └── index.js │ │ ├── editableMinisterIssues │ │ │ ├── AddableMinisterIssueActionList.js │ │ │ ├── EditableMinisterIssueActionBox.js │ │ │ ├── MinisterIssueBox.js │ │ │ └── index.js │ │ ├── grazingSchedules │ │ │ ├── GrazingScheduleBox.js │ │ │ ├── GrazingScheduleEntryRow.css │ │ │ ├── GrazingScheduleEntryRow.js │ │ │ ├── PasturesDropdown.js │ │ │ ├── RowMenu.js │ │ │ └── index.js │ │ ├── index.js │ │ ├── invasivePlantChecklist │ │ │ └── index.js │ │ ├── manageAgentsPage │ │ │ └── index.js │ │ ├── managementConsiderations │ │ │ ├── ManagementConsiderationRow.js │ │ │ └── index.js │ │ ├── ministerIssues │ │ │ ├── AddMinisterIssueActionButton.js │ │ │ ├── AddMinisterIssueButton.js │ │ │ ├── MinisterIssueAction.js │ │ │ ├── MinisterIssueBox.js │ │ │ ├── index.js │ │ │ └── index.story.js │ │ ├── notifications │ │ │ ├── AHSignaturesStatusModal.js │ │ │ ├── StatusHistory.js │ │ │ └── index.js │ │ ├── pageForAH │ │ │ ├── AHSignatureModal.js │ │ │ ├── AmendmentSubmissionModal.js │ │ │ ├── SubmissionModal.js │ │ │ ├── confirmationTabs │ │ │ │ ├── AHConfirmationList.js │ │ │ │ ├── ConfirmChoiceTab.js │ │ │ │ ├── LastTab.js │ │ │ │ └── RequestClarificationTab.js │ │ │ ├── index.js │ │ │ ├── props.js │ │ │ ├── submissionTabs │ │ │ │ ├── AddDescriptionTab.js │ │ │ │ ├── ChooseAmendmentTypeTab.js │ │ │ │ ├── ChooseSubmissionTypeTab.js │ │ │ │ ├── LastTab.js │ │ │ │ ├── RequestSignaturesTab.js │ │ │ │ ├── SubmitForFeedbackTab.js │ │ │ │ └── SubmitForFinalDecisionTab.js │ │ │ ├── tab │ │ │ │ ├── LeftBtn.js │ │ │ │ ├── RightBtn.js │ │ │ │ └── TabTemplate.js │ │ │ └── tabs │ │ │ │ ├── ConfirmationTabs.js │ │ │ │ ├── MandatoryTabsForMultipleAH.js │ │ │ │ ├── MandatoryTabsForSingleAH.js │ │ │ │ ├── MinorTabsForMultipleAH.js │ │ │ │ ├── MinorTabsForSingleAH.js │ │ │ │ ├── TabsForMultipleAH.js │ │ │ │ └── TabsForSingleAH.js │ │ ├── pageForStaff │ │ │ ├── UpdateStatusDropdown.js │ │ │ ├── UpdateStatusModal.js │ │ │ ├── index.js │ │ │ └── props.js │ │ ├── pastures │ │ │ ├── PastureBox.js │ │ │ └── index.js │ │ ├── pdf │ │ │ ├── PDFView.js │ │ │ └── helper.js │ │ ├── plantCommunities │ │ │ ├── AddPlantCommunityButton.js │ │ │ ├── IndicatorPlant.js │ │ │ ├── IndicatorPlantsForm.js │ │ │ ├── IndicatorPlantsForm.story.js │ │ │ ├── PlantCommunityAction.js │ │ │ ├── PlantCommunityActionsBox.js │ │ │ ├── PlantCommunityActionsBox.story.js │ │ │ ├── PlantCommunityBox.js │ │ │ ├── PlantCommunityBox.story.js │ │ │ ├── criteria │ │ │ │ ├── Import.js │ │ │ │ ├── RangeReadinessBox.js │ │ │ │ ├── ShrubUseBox.js │ │ │ │ └── StubbleHeightBox.js │ │ │ ├── index.js │ │ │ ├── index.story.js │ │ │ └── monitoringArea │ │ │ │ ├── AddMonitoringAreaButton.js │ │ │ │ ├── MonitoringAreaBox.js │ │ │ │ ├── MonitoringAreaBox.story.js │ │ │ │ └── index.js │ │ ├── schema.js │ │ ├── usage │ │ │ ├── UsageTable.js │ │ │ ├── UsageTableRow.js │ │ │ └── index.js │ │ └── versionsList │ │ │ ├── AttachmentsList.js │ │ │ ├── VersionsDropdown.js │ │ │ └── VersionsDropdownList.js │ ├── router │ │ ├── LoadableComponent.js │ │ ├── ProtectedRoute.js │ │ ├── PublicRoute.js │ │ └── index.js │ ├── selectRangeUsePlanPage │ │ ├── AHWarning.js │ │ ├── AgreementTable.js │ │ ├── AgreementTableRow.js │ │ ├── CopyPlanMenuItem.js │ │ ├── CreateReplacementPlan.js │ │ ├── DatePickerDialog.js │ │ ├── Error.js │ │ ├── ExtensionColumn.js │ │ ├── NewPlanButton.js │ │ ├── NewPlanMenuItem.js │ │ ├── PastePlanMenuItem.js │ │ ├── PlanActions.js │ │ ├── PlanRow.js │ │ ├── PlanTable.js │ │ ├── PlanTableRow.js │ │ ├── SortableAgreementTable.js │ │ ├── ViewPlanMenuItem.js │ │ ├── ZoneSelect.js │ │ └── index.js │ └── theme.js ├── configureStore.js ├── constants │ ├── actionTypes.js │ ├── api.js │ ├── fields.js │ ├── permissions.js │ ├── reducerTypes.js │ ├── routes.js │ ├── strings.js │ └── variables.js ├── index.js ├── providers │ ├── ConfrimationModalProvider.js │ ├── EditableProvider.js │ ├── PlanProvider.js │ ├── ReferencesProvider.js │ ├── ToastProvider.js │ └── UserProvider.js ├── reducers │ ├── agreementReducer.js │ ├── agreementWithALLPlansReducer.js │ ├── authReducer.js │ ├── clientReducer.js │ ├── commonStoreReducer.js │ ├── confirmModalReducer.js │ ├── inputModalReducer.js │ ├── modalReducer.js │ ├── networkReducer.js │ ├── planReducer │ │ ├── additionalRequirementsReducer.js │ │ ├── confirmationsReducer.js │ │ ├── grazingScheduleEntriesReducer.js │ │ ├── grazingSchedulesReducer.js │ │ ├── index.js │ │ ├── managementConsiderationsReducer.js │ │ ├── ministerIssuesReducer.js │ │ ├── pasturesReducer.js │ │ ├── planStatusHistoryReducer.js │ │ ├── plansReducer.js │ │ └── plantCommunitiesReducer.js │ ├── rootReducer.js │ └── toastReducer.js ├── semantic │ ├── semantic.min.css │ ├── semantic.min.js │ └── themes │ │ ├── basic │ │ └── assets │ │ │ └── fonts │ │ │ ├── icons.eot │ │ │ ├── icons.svg │ │ │ ├── icons.ttf │ │ │ └── icons.woff │ │ └── default │ │ └── assets │ │ ├── fonts │ │ ├── brand-icons.eot │ │ ├── brand-icons.svg │ │ ├── brand-icons.ttf │ │ ├── brand-icons.woff │ │ ├── brand-icons.woff2 │ │ ├── icons.eot │ │ ├── icons.svg │ │ ├── icons.ttf │ │ ├── icons.woff │ │ ├── icons.woff2 │ │ ├── outline-icons.eot │ │ ├── outline-icons.svg │ │ ├── outline-icons.ttf │ │ ├── outline-icons.woff │ │ └── outline-icons.woff2 │ │ └── images │ │ └── flags.png ├── serviceWorker.js ├── setupTests.js ├── styles │ ├── Agreement.scss │ ├── Amendment.scss │ ├── Common.scss │ ├── EmailTemplate.scss │ ├── Grid.scss │ ├── LoginPage.scss │ ├── MainPage.scss │ ├── ManageZoneAndClient.scss │ ├── MergeAccount.scss │ ├── Normalize.scss │ ├── Rup.scss │ ├── RupAttachments.scss │ ├── RupConsiderationAndRequirement.scss │ ├── RupGrazingSchedule.scss │ ├── RupInvasivePlant.scss │ ├── RupMinisterIssue.scss │ ├── RupMultiTab.scss │ ├── RupNotifications.scss │ ├── RupPDF.scss │ ├── RupPasture.scss │ ├── RupPlantCommunity.scss │ ├── Toast.scss │ ├── VersionsDropdownGrid.scss │ ├── index.scss │ ├── mixins.scss │ └── pikaday.scss ├── theme.less └── utils │ ├── authentication.js │ ├── axios.js │ ├── calculation │ ├── grazingSchedule.js │ └── index.js │ ├── format │ ├── date.js │ ├── index.js │ ├── oxfordComma.js │ └── queryString.js │ ├── helper │ ├── additionalRequirement.js │ ├── amendment.js │ ├── client.js │ ├── grazingSchedule.js │ ├── index.js │ ├── input.js │ ├── manageZoneAndClient.js │ ├── network.js │ ├── pasture.js │ ├── plan.js │ ├── plantCommunity.js │ └── user.js │ ├── hooks │ ├── network.js │ ├── plan.js │ ├── urlState.js │ └── useDebounce.js │ ├── index.js │ ├── localStorage.js │ ├── pkceUtils.js │ └── validation │ ├── grazingSchedule.js │ ├── index.js │ ├── ministerIssue.js │ ├── pasture.js │ ├── plan.js │ └── plantCommunity.js ├── tasks ├── README.md ├── admin │ ├── components │ │ ├── create.js │ │ ├── init.js │ │ └── update.js │ ├── distributions │ │ ├── create.js │ │ ├── init.js │ │ └── update.js │ ├── publish.js │ ├── register.js │ └── release.js ├── build.js ├── check-install.js ├── clean.js ├── collections │ ├── README.md │ ├── admin.js │ ├── build.js │ ├── internal.js │ └── rtl.js ├── config │ ├── admin │ │ ├── github.js │ │ ├── oauth.example.js │ │ ├── release.js │ │ └── templates │ │ │ ├── README.md │ │ │ ├── bower.json │ │ │ ├── component-package.js │ │ │ ├── composer.json │ │ │ ├── css-package.js │ │ │ ├── less-package.js │ │ │ └── package.json │ ├── defaults.js │ ├── docs.js │ ├── npm │ │ └── gulpfile.js │ ├── project │ │ ├── config.js │ │ ├── install.js │ │ └── release.js │ ├── tasks.js │ └── user.js ├── docs │ ├── build.js │ ├── metadata.js │ └── serve.js ├── install.js ├── rtl │ ├── build.js │ └── watch.js ├── version.js └── watch.js └── who_is_using_myra.sql /.config/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "range-web", 3 | "namespaceSuffix": "3187b2", 4 | "namespace": { 5 | "tools": "tools", 6 | "dev": "dev", 7 | "test": "test", 8 | "prod": "prod" 9 | }, 10 | "version": "1.0.0", 11 | "previousVersion": "NA", 12 | "olderVersions": [], 13 | "module": { 14 | "api": "range-web" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | REACT_APP_SSO_REALM_NAME=standard 2 | REACT_APP_SSO_CLIENT_ID=my-range-3769 3 | REACT_APP_API_URL=http://localhost:8000/api 4 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | /coverage 2 | /node_modules 3 | /openshift 4 | /public 5 | /semantic 6 | /build 7 | /sonar-runner 8 | /src/semantic 9 | /src/components/rangeUsePlanPage/pdf 10 | /src/serviceWorker.js 11 | /.tmp 12 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "eslint:recommended", 4 | "plugin:react/recommended", 5 | "prettier", 6 | "plugin:import/recommended" 7 | ], 8 | "parser": "@babel/eslint-parser", 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "requireConfigFile": false 12 | }, 13 | "env": { 14 | "browser": true, 15 | "node": true, 16 | "es6": true 17 | }, 18 | "rules": { 19 | "react/prop-types": 0 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug 3 | about: a problem that needs to be fixed 4 | title: '' 5 | labels: Bug 6 | assignees: '' 7 | --- 8 | 9 | **Describe the bug** 10 | A clear and concise description of what the bug is. 11 | 12 | **Expected Behaviour** 13 | A clear and concise description of what you expected to happen. 14 | 15 | **Actual Behaviour** 16 | A clear and concise description of what you expected to happen. 17 | 18 | **To Reproduce** 19 | Steps to reproduce the behavior: 20 | 21 | 1. Go to '...' 22 | 2. Click on '....' 23 | 3. Scroll down to '....' 24 | 4. See error 25 | 26 | **Screenshots** 27 | If applicable, add screenshots to help explain your problem. 28 | 29 | **Additional context** 30 | Add any other context about the problem here. 31 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/task.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Task 3 | about: Work that cannot be written as a User Story 4 | title: '' 5 | labels: Task 6 | assignees: '' 7 | --- 8 | 9 | **Describe the task** 10 | A clear and concise description of what the task is. 11 | 12 | **Acceptance Criteria** 13 | 14 | - [ ] first 15 | - [ ] second 16 | - [ ] third 17 | 18 | **Additional context** 19 | 20 | - Add any other context about the task here. 21 | - Or here 22 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/user-story.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: User Story 3 | about: Feature written from a Users perspective focused on value 4 | title: '' 5 | labels: User Story 6 | assignees: '' 7 | --- 8 | 9 | **As a** _(User Type/Persona)_ **I want** _(Feature/enhancement)_ **So That** _(Value, why is this wanted, what is the user trying to accomplish)_ 10 | 11 | **Additional Context** 12 | 13 | - enter text here 14 | - enter text here 15 | 16 | **Acceptance Criteria** 17 | 18 | - [ ] Given (Context), When (action carried out), Then (expected outcome) 19 | - [ ] Given (Context), When (action carried out), Then (expected outcome) 20 | -------------------------------------------------------------------------------- /.github/label-actions.yml: -------------------------------------------------------------------------------- 1 | # Configuration for Label Actions - https://github.com/dessant/label-actions 2 | 3 | # Specify actions for issues and pull requests 4 | actions: 5 | # Actions taken when the `XS` label is added 6 | # XS: 7 | # Post a comment 8 | # comment: > 9 | # testing this github action. 10 | # Please follow our community guidelines. 11 | # -XS: 12 | # comment: > 13 | # Resized! 14 | 15 | # Limit to only `issues` or `pulls` 16 | only: issues 17 | -------------------------------------------------------------------------------- /.github/requirements.txt: -------------------------------------------------------------------------------- 1 | pycurl 2 | -------------------------------------------------------------------------------- /.github/workflows/nodejs.yml: -------------------------------------------------------------------------------- 1 | name: Node CI 2 | 3 | on: 4 | pull_request: 5 | branches: 6 | - dev 7 | - master 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | 13 | strategy: 14 | matrix: 15 | node-version: [10.x] 16 | 17 | steps: 18 | - uses: actions/checkout@v2 19 | - name: Use Node.js ${{ matrix.node-version }} 20 | uses: actions/setup-node@v1 21 | with: 22 | node-version: ${{ matrix.node-version }} 23 | - name: npm install, build, and test 24 | run: | 25 | npm ci 26 | npm run test:ci 27 | env: 28 | CI: true 29 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | node_modules 6 | /.pnp 7 | .pnp.js 8 | 9 | # testing 10 | coverage 11 | 12 | # production 13 | build 14 | 15 | # misc 16 | .DS_Store 17 | .env.local 18 | .env.development.local 19 | .env.test.local 20 | .env.production.local 21 | 22 | npm-debug.log* 23 | yarn-debug.log* 24 | yarn-error.log* 25 | 26 | .tmp 27 | .eslintcache 28 | 29 | sonar-runner/build/ 30 | .vscode/* 31 | Todo 32 | .env 33 | cypress.env.json 34 | cypress/videos 35 | cypress/screenshots 36 | 37 | *~ 38 | *.swp 39 | *.swo 40 | 41 | .idea 42 | -------------------------------------------------------------------------------- /.husky/.gitignore: -------------------------------------------------------------------------------- 1 | _ 2 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npx lint-staged 5 | -------------------------------------------------------------------------------- /.pipeline/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /.pipeline/build.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | const task = require('./lib/build.js'); 3 | const settings = require('./lib/config.js'); 4 | 5 | task(Object.assign(settings, { phase: 'build' })); 6 | -------------------------------------------------------------------------------- /.pipeline/npmw: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set +x 3 | type -t nvm && nvm deactivate 4 | export NVM_DIR="$(git rev-parse --show-toplevel)/.nvm" 5 | if [ ! -f "$NVM_DIR/nvm.sh" ]; then 6 | mkdir -p "${NVM_DIR}" 7 | curl -sSL -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash &>/dev/null 8 | fi 9 | source "$NVM_DIR/nvm.sh" &>/dev/null 10 | METHOD=script nvm install --no-progress &>/dev/null 11 | nvm use &>/dev/null 12 | exec npm "$@" 13 | -------------------------------------------------------------------------------- /.pipeline/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pipeline", 3 | "version": "1.0.0", 4 | "description": "This a pipeline script", 5 | "engines": { 6 | "node": ">=8" 7 | }, 8 | "scripts": { 9 | "build": "node build.js", 10 | "clean": "node clean.js", 11 | "deploy": "node deploy.js", 12 | "version": "echo \"node@$(node --version) ($(which node))\" && echo \"npm@$(npm --version) ($(which npm))\" && npm ls" 13 | }, 14 | "repository": { 15 | "type": "git", 16 | "url": "git+https://github.com/bcgov/ocp-sso.git" 17 | }, 18 | "author": "", 19 | "license": "Apache-2.0", 20 | "dependencies": { 21 | "pipeline-cli": "git+https://github.com/BCDevOps/pipeline-cli.git#v1.1", 22 | "debug": "^4.2.0", 23 | "lodash.isempty": "^4.0.1", 24 | "lodash.isfunction": "^3.0.9", 25 | "lodash.isplainobject": "^4.0.6", 26 | "lodash.isstring": "^4.0.1" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | /coverage 2 | /node_modules 3 | /openshift 4 | /public 5 | /semantic 6 | /build 7 | /sonar-runner 8 | /src/semantic 9 | /src/serviceWorker.js 10 | /.tmp 11 | /cypress 12 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "arrowParens": "always", 3 | "bracketSameLine": false, 4 | "bracketSpacing": true, 5 | "semi": true, 6 | "experimentalTernaries": false, 7 | "singleQuote": true, 8 | "jsxSingleQuote": false, 9 | "quoteProps": "as-needed", 10 | "trailingComma": "all", 11 | "singleAttributePerLine": false, 12 | "htmlWhitespaceSensitivity": "css", 13 | "vueIndentScriptAndStyle": false, 14 | "proseWrap": "preserve", 15 | "insertPragma": false, 16 | "printWidth": 120, 17 | "requirePragma": false, 18 | "tabWidth": 2, 19 | "useTabs": false, 20 | "embeddedLanguageFormatting": "auto" 21 | } 22 | -------------------------------------------------------------------------------- /.storybook/addons.js: -------------------------------------------------------------------------------- 1 | import '@storybook/addon-actions/register'; 2 | import '@storybook/addon-links/register'; 3 | import '@storybook/addon-knobs/register'; 4 | import './roles-addon/register'; 5 | -------------------------------------------------------------------------------- /.storybook/config.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { configure, addDecorator } from '@storybook/react'; 3 | 4 | // import the global styles 5 | import '../src/semantic/semantic.min.css'; 6 | import '../src/styles/index.scss'; 7 | 8 | import { ReferencesContext } from '../src/providers/ReferencesProvider'; 9 | import mockReferences from './mocks/references'; 10 | import { withUserDecorator } from './roles-addon'; 11 | 12 | // Mock user 13 | addDecorator(withUserDecorator()); 14 | 15 | // Mock references 16 | addDecorator((story) => ( 17 | 18 | {story()} 19 | 20 | )); 21 | 22 | // automatically import all files ending in *.stories.js or *.story.js 23 | const res = require.context( 24 | '../src/components', 25 | true, 26 | /\.(stories|story)\.js$/, 27 | ); 28 | 29 | configure(res, module); 30 | -------------------------------------------------------------------------------- /.storybook/mocks/user.js: -------------------------------------------------------------------------------- 1 | export default { 2 | id: 66, 3 | username: 'range@twostoryrobot.com', 4 | clientId: null, 5 | givenName: 'Ranger', 6 | familyName: 'Smith', 7 | email: 'range@twostoryrobot.com', 8 | phoneNumber: null, 9 | active: true, 10 | piaSeen: true, 11 | lastLoginAt: '2019-08-13T22:01:52.224Z', 12 | roles: ['myra_range_officer'], 13 | }; 14 | -------------------------------------------------------------------------------- /.storybook/roles-addon/UserProvider.js: -------------------------------------------------------------------------------- 1 | import React, { useState, useEffect } from 'react'; 2 | import { UserContext } from '../../src/providers/UserProvider'; 3 | import user from '../mocks/user'; 4 | import addons from '@storybook/addons'; 5 | 6 | const UserProvider = ({ children }) => { 7 | const [currentRole, setCurrentRole] = useState('myra_range_officer'); 8 | 9 | const channel = addons.getChannel(); 10 | 11 | const handleChange = (role) => { 12 | setCurrentRole(role); 13 | }; 14 | 15 | useEffect(() => { 16 | channel.on('role/change', handleChange); 17 | 18 | return () => { 19 | channel.removeListener('role/change', handleChange); 20 | }; 21 | }, []); 22 | 23 | return ( 24 | 30 | {children} 31 | 32 | ); 33 | }; 34 | 35 | export default UserProvider; 36 | -------------------------------------------------------------------------------- /.storybook/roles-addon/constants.js: -------------------------------------------------------------------------------- 1 | export const ADDON_ID = 'user-role'; 2 | -------------------------------------------------------------------------------- /.storybook/roles-addon/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import UserProvider from './UserProvider'; 3 | import { makeDecorator } from '@storybook/addons'; 4 | 5 | export const withUserDecorator = makeDecorator({ 6 | name: 'withUserProvider', 7 | wrapper: (getStory) => { 8 | return {getStory()}; 9 | }, 10 | }); 11 | -------------------------------------------------------------------------------- /.storybook/roles-addon/register.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import addons, { types } from '@storybook/addons'; 3 | import Tool from './Tool'; 4 | import { ADDON_ID } from './constants'; 5 | 6 | addons.register(ADDON_ID, (api) => { 7 | addons.add(ADDON_ID, { 8 | type: types.TOOL, 9 | title: 'User role', 10 | render: () => , 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /COMPLIANCE.yaml: -------------------------------------------------------------------------------- 1 | name: compliance 2 | description: | 3 | This document is used to track a projects PIA and STRA 4 | compliance. 5 | spec: 6 | - name: PIA 7 | status: completed 8 | last-updated: '2020-01-20T22:52:19.013Z' 9 | - name: STRA 10 | status: completed 11 | last-updated: '2020-01-20T22:52:34.719Z' 12 | -------------------------------------------------------------------------------- /Caddyfile: -------------------------------------------------------------------------------- 1 | { 2 | auto_https off 3 | } 4 | :2015 5 | 6 | root * /srv 7 | file_server 8 | 9 | 10 | log { 11 | level INFO 12 | } 13 | encode gzip 14 | try_files {path} /index.html 15 | templates /static/js/* { 16 | mime application/javascript 17 | } 18 | 19 | header /service-worker.js { 20 | Cache-Control max-age=0,no-cache,no-store,must-revalidate 21 | } 22 | 23 | header /index.html { 24 | Cache-Control max-age=0,no-cache,no-store,must-revalidate 25 | } 26 | 27 | header /static/* { 28 | Cache-Control max-age=604800,public 29 | } 30 | 31 | header /images/* { 32 | Cache-Control max-age=604800,public 33 | } 34 | 35 | header /manifest.json { 36 | Cache-Control max-age=3600 37 | } 38 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:16.14-alpine 2 | 3 | WORKDIR /opt/app-root/src 4 | COPY ./package*.json ./ 5 | COPY ./semantic.json ./ 6 | COPY semantic . 7 | RUN npm ci 8 | COPY . . 9 | RUN npm run build 10 | 11 | -------------------------------------------------------------------------------- /config/jest/babelTransform.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const babelJest = require('babel-jest').default; 4 | 5 | const hasJsxRuntime = (() => { 6 | if (process.env.DISABLE_NEW_JSX_TRANSFORM === 'true') { 7 | return false; 8 | } 9 | 10 | try { 11 | require.resolve('react/jsx-runtime'); 12 | return true; 13 | } catch (e) { 14 | return false; 15 | } 16 | })(); 17 | 18 | module.exports = babelJest.createTransformer({ 19 | presets: [ 20 | [ 21 | require.resolve('babel-preset-react-app'), 22 | { 23 | runtime: hasJsxRuntime ? 'automatic' : 'classic', 24 | }, 25 | ], 26 | ], 27 | babelrc: false, 28 | configFile: false, 29 | }); 30 | -------------------------------------------------------------------------------- /config/jest/cssTransform.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | // This is a custom Jest transformer turning style imports into empty objects. 4 | // http://facebook.github.io/jest/docs/en/webpack.html 5 | 6 | module.exports = { 7 | process() { 8 | return 'module.exports = {};'; 9 | }, 10 | getCacheKey() { 11 | // The output is always the same. 12 | return 'cssTransform'; 13 | }, 14 | }; 15 | -------------------------------------------------------------------------------- /config/webpack/persistentCache/createEnvironmentHash.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | const { createHash } = require('crypto'); 3 | 4 | module.exports = (env) => { 5 | const hash = createHash('md5'); 6 | hash.update(JSON.stringify(env)); 7 | 8 | return hash.digest('hex'); 9 | }; 10 | -------------------------------------------------------------------------------- /cypress.json: -------------------------------------------------------------------------------- 1 | { 2 | "chromeWebSecurity": false, 3 | "projectId": "qk8xu6", 4 | "baseUrl": "http://localhost:3001" 5 | } 6 | -------------------------------------------------------------------------------- /cypress/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: ['plugin:cypress/recommended'] 3 | } 4 | -------------------------------------------------------------------------------- /cypress/integration/login.spec.js: -------------------------------------------------------------------------------- 1 | describe('Login', () => { 2 | beforeEach(() => { 3 | cy.logout() 4 | cy.login() 5 | }) 6 | 7 | it('Signs in', () => { 8 | cy.visit('/home') 9 | cy.url().should('not.include', 'login') 10 | }) 11 | }) 12 | -------------------------------------------------------------------------------- /cypress/integration/newUserForm.spec.js: -------------------------------------------------------------------------------- 1 | describe('Login', () => { 2 | beforeEach(() => { 3 | cy.login('range_officer') 4 | }) 5 | 6 | it.skip('Signs in, and shows privacy message on first login', () => { 7 | cy.visit('/home') 8 | 9 | cy.get('[class=privacy-info]').should('contain', 'Privacy') //contains('Continue to').click() 10 | cy.url().should('not.include', 'login') 11 | }) 12 | }) 13 | -------------------------------------------------------------------------------- /cypress/integration/workQueue.spec.js: -------------------------------------------------------------------------------- 1 | describe('/add', () => { 2 | beforeEach(() => { 3 | cy.logout() 4 | cy.login() 5 | }) 6 | 7 | it.skip('Search for the agreement', () => { 8 | cy.visit('/home') 9 | cy.findByText('RAN099915').should('not.exist') 10 | cy.findByPlaceholderText(/Enter RAN/g).type('RAN099915{enter}') 11 | cy.findByText('RAN099915').should('exist') 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /cypress/support/index.js: -------------------------------------------------------------------------------- 1 | // *********************************************************** 2 | // This example support/index.js is processed and 3 | // loaded automatically before your test files. 4 | // 5 | // This is a great place to put global configuration and 6 | // behavior that modifies Cypress. 7 | // 8 | // You can change the location of this file or turn off 9 | // automatically serving support files with the 10 | // 'supportFile' configuration option. 11 | // 12 | // You can read more here: 13 | // https://on.cypress.io/configuration 14 | // *********************************************************** 15 | 16 | // Import commands.js using ES2015 syntax: 17 | import './commands' 18 | 19 | // Alternatively you can use CommonJS syntax: 20 | // require('./commands') 21 | // store logs 22 | -------------------------------------------------------------------------------- /example-cypress.env.json: -------------------------------------------------------------------------------- 1 | { 2 | "range_officer_username": "", 3 | "range_officer_password": "", 4 | "auth_base_url": "https://sso-dev.pathfinder.gov.bc.ca/auth", 5 | "auth_realm": "range", 6 | "auth_client_id": "myrangebc", 7 | "api_url": "http://localhost:8081" 8 | } 9 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6" 5 | }, 6 | "exclude": ["node_modules"], 7 | "include": ["src/**/*"] 8 | } 9 | -------------------------------------------------------------------------------- /openshift/.gitignore: -------------------------------------------------------------------------------- 1 | secrets 2 | -------------------------------------------------------------------------------- /openshift/caddy.is.yaml: -------------------------------------------------------------------------------- 1 | kind: ImageStream 2 | apiVersion: image.openshift.io/v1 3 | metadata: 4 | annotations: 5 | name: caddy 6 | namespace: 3187b2-tools 7 | labels: 8 | base-name: caddy 9 | shared: 'true' 10 | spec: 11 | lookupPolicy: 12 | local: true 13 | tags: 14 | - name: '2-alpine' 15 | annotations: null 16 | from: 17 | kind: DockerImage 18 | name: >- 19 | docker-remote.artifacts.developer.gov.bc.ca/caddy/caddy:2-alpine 20 | importPolicy: {} 21 | referencePolicy: 22 | type: Local -------------------------------------------------------------------------------- /openshift/minio.is.yaml: -------------------------------------------------------------------------------- 1 | kind: ImageStream 2 | apiVersion: image.openshift.io/v1 3 | metadata: 4 | annotations: 5 | name: minio 6 | namespace: 3187b2-tools 7 | labels: 8 | base-name: minio 9 | shared: 'true' 10 | spec: 11 | lookupPolicy: 12 | local: true 13 | tags: 14 | - name: 'latest' 15 | annotations: null 16 | from: 17 | kind: DockerImage 18 | name: >- 19 | docker-remote.artifacts.developer.gov.bc.ca/minio/minio:latest 20 | importPolicy: {} 21 | referencePolicy: 22 | type: Local -------------------------------------------------------------------------------- /openshift/node-10.is.yaml: -------------------------------------------------------------------------------- 1 | kind: ImageStream 2 | apiVersion: image.openshift.io/v1 3 | metadata: 4 | annotations: 5 | name: node 6 | namespace: 3187b2-tools 7 | labels: 8 | base-name: node 9 | shared: 'true' 10 | spec: 11 | lookupPolicy: 12 | local: true 13 | tags: 14 | - name: '10' 15 | annotations: null 16 | from: 17 | kind: DockerImage 18 | name: >- 19 | docker-remote.artifacts.developer.gov.bc.ca/node:10 20 | importPolicy: {} 21 | referencePolicy: 22 | type: Local -------------------------------------------------------------------------------- /openshift/postgis.is.yaml: -------------------------------------------------------------------------------- 1 | kind: ImageStream 2 | apiVersion: image.openshift.io/v1 3 | metadata: 4 | annotations: 5 | name: postgres-postgis 6 | namespace: 3187b2-tools 7 | labels: 8 | base-name: postgres-postgis 9 | shared: 'true' 10 | spec: 11 | lookupPolicy: 12 | local: true 13 | 14 | -------------------------------------------------------------------------------- /prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@twostoryrobot/prettier-config'); 2 | -------------------------------------------------------------------------------- /public/images/cow.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/public/images/cow.jpg -------------------------------------------------------------------------------- /public/images/icon_attachment.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/images/login_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/public/images/login_logo.png -------------------------------------------------------------------------------- /public/images/login_paragraph3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/public/images/login_paragraph3.jpg -------------------------------------------------------------------------------- /public/images/login_paragraph4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/public/images/login_paragraph4.jpg -------------------------------------------------------------------------------- /public/images/login_paragraph5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/public/images/login_paragraph5.jpg -------------------------------------------------------------------------------- /public/images/myrangebc_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/public/images/myrangebc_logo.png -------------------------------------------------------------------------------- /public/images/shortcut_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/public/images/shortcut_icon.png -------------------------------------------------------------------------------- /public/images/signin_background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/public/images/signin_background.jpg -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "MyRangeBC", 3 | "name": "MyRangeBC - Web", 4 | "icons": [ 5 | { 6 | "src": "images/shortcut_icon.png", 7 | "sizes": "512x512 192x192 64x64 32x32 24x24 16x16", 8 | "type": "image/png" 9 | } 10 | ], 11 | "start_url": "/login", 12 | "display": "standalone", 13 | "theme_color": "#FCBA19", 14 | "background_color": "#003366", 15 | "orientation": "landscape" 16 | } 17 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: / -------------------------------------------------------------------------------- /scripts/clean-e2e-server: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | function fancy_print { 3 | echo -e '\e[92m==>\e[39m' $1 4 | } 5 | 6 | if [ ! -d ".tmp/range-api" ]; 7 | then 8 | echo "Could not find range-api repository in .tmp/range-api" 9 | exit 1 10 | fi 11 | 12 | cd .tmp/range-api 13 | 14 | fancy_print "Bringing down docker-compose environment" 15 | docker-compose -p myra-e2e down -v 16 | 17 | cd ../../ 18 | 19 | fancy_print "Removing range-api" 20 | rm -rf .tmp/range-api -------------------------------------------------------------------------------- /semantic.json: -------------------------------------------------------------------------------- 1 | { 2 | "base": "/", 3 | "paths": { 4 | "source": { 5 | "config": "semantic/src/theme.config", 6 | "definitions": "semantic/src/definitions/", 7 | "site": "semantic/src/site/", 8 | "themes": "semantic/src/themes/" 9 | }, 10 | "output": { 11 | "packaged": "src/semantic/", 12 | "uncompressed": "semantic/dist/components/", 13 | "compressed": "semantic/dist/components/", 14 | "themes": "src/semantic/themes/" 15 | }, 16 | "clean": "src/semantic/" 17 | }, 18 | "permission": false, 19 | "autoInstall": true, 20 | "rtl": false, 21 | "version": "2.4.2" 22 | } 23 | -------------------------------------------------------------------------------- /semantic/dist/components/sticky.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.4.2 - Sticky 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */.ui.sticky{position:static;-webkit-transition:none;transition:none;z-index:800}.ui.sticky.bound{position:absolute;left:auto;right:auto}.ui.sticky.fixed{position:fixed;left:auto;right:auto}.ui.sticky.bound.top,.ui.sticky.fixed.top{top:0;bottom:auto}.ui.sticky.bound.bottom,.ui.sticky.fixed.bottom{top:auto;bottom:0}.ui.native.sticky{position:-webkit-sticky;position:-moz-sticky;position:-ms-sticky;position:-o-sticky;position:sticky} -------------------------------------------------------------------------------- /semantic/src/definitions/globals/reset.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI - Reset 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */ 10 | 11 | /******************************* 12 | Theme 13 | *******************************/ 14 | 15 | @type : 'global'; 16 | @element : 'reset'; 17 | 18 | @import (multiple) '../../theme.config'; 19 | 20 | /******************************* 21 | Reset 22 | *******************************/ 23 | 24 | /* Border-Box */ 25 | *, 26 | *:before, 27 | *:after { 28 | box-sizing: inherit; 29 | } 30 | html { 31 | box-sizing: border-box; 32 | } 33 | 34 | /* iPad Input Shadows */ 35 | input[type="text"], input[type="email"], input[type="search"], input[type="password"] { 36 | -webkit-appearance: none; 37 | -moz-appearance: none; /* mobile firefox too! */ 38 | } 39 | 40 | .loadUIOverrides(); 41 | -------------------------------------------------------------------------------- /semantic/src/site/collections/breadcrumb.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/collections/breadcrumb.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/collections/form.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/collections/form.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | 5 | /* added by Kyubin */ 6 | @loaderLineColor: @accentColor; -------------------------------------------------------------------------------- /semantic/src/site/collections/grid.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/collections/grid.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/collections/menu.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ -------------------------------------------------------------------------------- /semantic/src/site/collections/menu.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/collections/message.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | 5 | /* added by Kyubin */ 6 | .ui.message { 7 | margin: 0; 8 | } -------------------------------------------------------------------------------- /semantic/src/site/collections/message.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/collections/table.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | 5 | /* added by Kyubin */ 6 | .ui.table { 7 | margin: 0; 8 | } -------------------------------------------------------------------------------- /semantic/src/site/collections/table.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/button.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/button.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/container.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/container.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/divider.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/divider.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/flag.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/flag.variables: -------------------------------------------------------------------------------- 1 | /*------------------- 2 | Flag Variables 3 | --------------------*/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/header.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/header.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/icon.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/icon.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/image.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/image.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/input.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/input.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/label.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/label.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/list.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/list.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/loader.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/loader.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | 5 | /* added by Kyubin */ 6 | /* loaderLineColor custom-styling */ 7 | @shapeBorderColor: @accentColor transparent transparent; 8 | -------------------------------------------------------------------------------- /semantic/src/site/elements/rail.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/rail.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/reveal.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/reveal.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/segment.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | 5 | /* added by Kyubin */ 6 | .ui.segment { 7 | padding: 0; 8 | } -------------------------------------------------------------------------------- /semantic/src/site/elements/segment.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/step.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/elements/step.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/globals/reset.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/globals/reset.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Global Variables 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/globals/site.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/globals/site.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Global Variables 3 | *******************************/ 4 | 5 | /* added by Kyubin */ 6 | @primaryColor : #002C71; 7 | @secondaryColor : #5C668C; 8 | @accentColor : #F3B229; 9 | @primaryLightColor : #5C668C; 10 | @pageOverflowX : auto; 11 | @pageMinWidth : 768px; 12 | 13 | /******************************* 14 | Example: 15 | https://github.com/Semantic-Org/example-github/blob/master/semantic/src/themes/github/globals/site.variables 16 | *******************************/ -------------------------------------------------------------------------------- /semantic/src/site/modules/accordion.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/accordion.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/chatroom.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/chatroom.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/checkbox.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/checkbox.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | 5 | /* added by Kyubin */ 6 | 7 | /* Checkbox */ 8 | @checkboxActiveBackground: @primaryColor; 9 | @checkboxActiveBorderColor: @primaryColor; 10 | @checkboxActiveCheckColor: @white; 11 | 12 | /* Focused Checkbox */ 13 | @checkboxActiveFocusBackground: @primaryColorFocus; 14 | @checkboxActiveFocusBorderColor: @primaryColorFocus; 15 | @checkboxActiveFocusCheckColor: @white; 16 | @checkboxTransition: none; -------------------------------------------------------------------------------- /semantic/src/site/modules/dimmer.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Overrides 3 | *******************************/ 4 | 5 | /* added by Kyubin */ 6 | .blurring.dimmable>.dimmer { 7 | background-color: rgba(255, 255, 255, 0.1); 8 | } 9 | .ui.dimmer { 10 | background-color: rgba(255,255,255,.85); 11 | } -------------------------------------------------------------------------------- /semantic/src/site/modules/dimmer.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/dropdown.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Overrides 3 | *******************************/ 4 | 5 | /* added by Kyubin */ 6 | .ui.dropdown .menu > .item .dropdown.icon { 7 | float: none; 8 | } 9 | 10 | .ui.dropdown.error > .menu > .item { 11 | color: black; 12 | } 13 | 14 | .ui.selection.active.dropdown { 15 | box-shadow: none; 16 | } 17 | 18 | .ui.selection.active.dropdown:hover { 19 | box-shadow: none; 20 | } -------------------------------------------------------------------------------- /semantic/src/site/modules/dropdown.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/embed.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/embed.variables: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/site/modules/embed.variables -------------------------------------------------------------------------------- /semantic/src/site/modules/modal.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | 5 | /* added by Kyubin */ 6 | 7 | .ui.active.modal { 8 | position: relative; 9 | } -------------------------------------------------------------------------------- /semantic/src/site/modules/modal.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | 5 | /* added by Kyubin */ 6 | @closeTop: -2px; 7 | @closeRight: -5px; 8 | @closeColor: #000; 9 | @closeSize: 1.3rem; 10 | 11 | @innerCloseTop: -2px; 12 | @innerCloseRight: -5px; 13 | @innerCloseColor: #000; 14 | 15 | @mobileCloseTop: -2px; 16 | @mobileCloseRight: -5px; 17 | 18 | @basicModalCloseTop: -2px; 19 | @basicModalCloseRight: -5px; -------------------------------------------------------------------------------- /semantic/src/site/modules/nag.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/nag.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/popup.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/popup.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/progress.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/progress.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/rating.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/rating.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/search.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/search.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/shape.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/shape.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/sidebar.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/sidebar.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/sticky.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/sticky.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/tab.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/tab.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/transition.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/modules/transition.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/views/ad.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/views/ad.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/views/card.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/views/card.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/views/comment.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/views/comment.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/views/feed.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/views/feed.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/views/item.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/views/item.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/views/statistic.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/site/views/statistic.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/basic/assets/fonts/icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/basic/assets/fonts/icons.eot -------------------------------------------------------------------------------- /semantic/src/themes/basic/assets/fonts/icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/basic/assets/fonts/icons.ttf -------------------------------------------------------------------------------- /semantic/src/themes/basic/assets/fonts/icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/basic/assets/fonts/icons.woff -------------------------------------------------------------------------------- /semantic/src/themes/basic/collections/table.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | 5 | -------------------------------------------------------------------------------- /semantic/src/themes/basic/collections/table.variables: -------------------------------------------------------------------------------- 1 | /*------------------- 2 | Table Variables 3 | --------------------*/ 4 | 5 | @headerBackground: @white; 6 | @footerBackground: @white; 7 | 8 | @cellVerticalPadding: 1em; 9 | @cellHorizontalPadding: 1em; 10 | 11 | @stateMarkerWidth: 1px; -------------------------------------------------------------------------------- /semantic/src/themes/basic/elements/button.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | 5 | -------------------------------------------------------------------------------- /semantic/src/themes/basic/elements/icon.variables: -------------------------------------------------------------------------------- 1 | /*------------------- 2 | Icon Variables 3 | --------------------*/ 4 | 5 | @fontPath : "../../themes/basic/assets/fonts"; 6 | 7 | @src: 8 | url("@{fontPath}/@{fontName}.eot?#iefix") format('embedded-opentype'), 9 | url("@{fontPath}/@{fontName}.woff") format('woff'), 10 | url("@{fontPath}/@{fontName}.ttf") format('truetype'), 11 | url("@{fontPath}/@{fontName}.svg#icons") format('svg') 12 | ; -------------------------------------------------------------------------------- /semantic/src/themes/basic/elements/step.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | 5 | .ui.steps .step:after { 6 | display: none !important; 7 | } 8 | .ui.steps .step { 9 | border-radius: 500px !important; 10 | } -------------------------------------------------------------------------------- /semantic/src/themes/basic/elements/step.variables: -------------------------------------------------------------------------------- 1 | /*------------------- 2 | Step Variables 3 | --------------------*/ 4 | 5 | /* Stepss */ 6 | @stepsBorder: none; 7 | @stepsBorderRadius: @circularRadius; 8 | 9 | /* Step */ 10 | @border: none; 11 | @divider: none; 12 | @background: transparent; 13 | @borderRadius: @circularRadius; 14 | @iconDistance: 0.8em; 15 | @arrowDisplay: none; 16 | 17 | @activeBackground: @midWhite; 18 | @activeArrowDisplay: none; 19 | -------------------------------------------------------------------------------- /semantic/src/themes/basic/globals/reset.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | 5 | /* No Additional Resets */ -------------------------------------------------------------------------------- /semantic/src/themes/basic/globals/reset.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Reset 3 | *******************************/ -------------------------------------------------------------------------------- /semantic/src/themes/basic/modules/progress.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Progress 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/basic/modules/progress.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Progress 3 | *******************************/ 4 | 5 | @background: transparent; 6 | @border: none; 7 | @padding: 0em; 8 | 9 | @progressLeft: 0em; 10 | @progressWidth: 100%; 11 | @progressTextAlign: center; 12 | 13 | @labelFontWeight: @normal; 14 | @labelTextAlign: left; 15 | @labelHeight: 1.5em; 16 | -------------------------------------------------------------------------------- /semantic/src/themes/basic/views/card.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | 5 | -------------------------------------------------------------------------------- /semantic/src/themes/basic/views/card.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Card 3 | *******************************/ 4 | 5 | /*------------------- 6 | View 7 | --------------------*/ 8 | 9 | @width: 250px; 10 | @background: transparent; 11 | @border: none; 12 | @boxShadow: none; 13 | 14 | @contentPadding: 1em 0em; 15 | 16 | @rowSpacing: 1.5em; 17 | @groupCardMargin: 0em @horizontalSpacing @rowSpacing; 18 | 19 | @extraBackground: transparent; 20 | @extraDivider: none; 21 | @extraBoxShadow: none; 22 | @extraPadding: 0.5em 0em; 23 | 24 | @extraLinkColor: @textColor; 25 | @extraLinkHoverColor: @linkHoverColor; 26 | 27 | @headerFontSize: @relativeLarge; 28 | @headerLinkColor: @textColor; 29 | @headerLinkHoverColor: @linkHoverColor; 30 | 31 | @imageBorderRadius: @borderRadius; 32 | @imageBorder: 1px solid @borderColor; 33 | 34 | @linkHoverBackground: transparent; 35 | @linkHoverBoxShadow: none; -------------------------------------------------------------------------------- /semantic/src/themes/bookish/elements/header.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | 5 | @import url(https://fonts.googleapis.com/css?family=Karma); 6 | 7 | h1.ui.header, 8 | .ui.huge.header { 9 | font-weight: bold; 10 | } 11 | 12 | h2.ui.header, 13 | .ui.large.header { 14 | font-weight: bold; 15 | } -------------------------------------------------------------------------------- /semantic/src/themes/bookish/elements/header.variables: -------------------------------------------------------------------------------- 1 | /*------------------- 2 | Header 3 | --------------------*/ 4 | 5 | @headerFont : 'Karma', 'Times New Roman', serif; 6 | @fontWeight: @normal; 7 | 8 | @iconSize: 1.5em; 9 | @iconOffset: 0.2em; 10 | @iconAlignment: top; 11 | 12 | @subHeaderFontSize: 0.85rem; 13 | 14 | @dividedBorder: 1px dotted rgba(0, 0, 0, 0.2); 15 | 16 | /* Block Header */ 17 | @blockVerticalPadding: 1.3em; 18 | @blockHorizontalPadding: 1em; 19 | 20 | /* Attached */ 21 | @attachedBackground: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.03)) repeat scroll 0 0 #F8F8F8; 22 | @attachedVerticalPadding: 1.3; 23 | @attachedHorizontalPadding: 1em; 24 | 25 | /* HTML Headings */ 26 | @h1: 1.75rem; 27 | @h2: 1.33rem; 28 | @h3: 1.33rem; 29 | @h4: 1rem; 30 | @h5: 0.9rem; 31 | 32 | /* Sizing */ 33 | @hugeFontSize: 1.75em; 34 | @largeFontSize: 1.33em; 35 | @mediumFontSize: 1.33em; 36 | @smallFontSize: 1em; 37 | @tinyFontSize: 0.9em; 38 | -------------------------------------------------------------------------------- /semantic/src/themes/bootstrap3/elements/button.overrides: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/bootstrap3/elements/button.overrides -------------------------------------------------------------------------------- /semantic/src/themes/chubby/collections/form.overrides: -------------------------------------------------------------------------------- 1 | /*------------------- 2 | Form Variables 3 | --------------------*/ 4 | 5 | .ui.form .selection.dropdown { 6 | padding: 1.1em 1.2em; 7 | border-width: 2px; 8 | } 9 | .ui.form .selection.dropdown .menu { 10 | min-width: calc(100% + 4px); 11 | margin: 0 -2px; 12 | border-width: 2px; 13 | } 14 | .ui.form .selection.dropdown input { 15 | padding: inherit; 16 | } -------------------------------------------------------------------------------- /semantic/src/themes/chubby/collections/form.variables: -------------------------------------------------------------------------------- 1 | /*------------------- 2 | Form Variables 3 | --------------------*/ 4 | 5 | @labelTextTransform: uppercase; 6 | @labelFontSize: 0.8em; 7 | 8 | @inputPadding: 1em 1.2em; 9 | @inputBorder: 2px solid @borderColor; -------------------------------------------------------------------------------- /semantic/src/themes/chubby/collections/menu.overrides: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/chubby/collections/menu.overrides -------------------------------------------------------------------------------- /semantic/src/themes/chubby/elements/button.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | 5 | @import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro); 6 | 7 | .ui.labeled.icon.buttons > .button > .icon, 8 | .ui.labeled.icon.button > .icon { 9 | box-shadow: 10 | -1px 0px 0px 0px rgba(255, 255, 255, 0.2) inset, 11 | -1px 0px 0px 0px rgba(0, 0, 0, 0.05) inset 12 | ; 13 | } 14 | 15 | .ui.right.labeled.icon.buttons .button .icon, 16 | .ui.right.labeled.icon.button .icon { 17 | box-shadow: 18 | 1px 0px 0px 0px rgba(255, 255, 255, 0.2) inset, 19 | 1px 0px 0px 0px rgba(0, 0, 0, 0.05) inset 20 | ; 21 | } -------------------------------------------------------------------------------- /semantic/src/themes/chubby/elements/header.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | 5 | @import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro); 6 | -------------------------------------------------------------------------------- /semantic/src/themes/chubby/elements/header.variables: -------------------------------------------------------------------------------- 1 | /*------------------- 2 | Header 3 | --------------------*/ 4 | 5 | @headerFont : 'Source Sans Pro', Helvetica Neue, Helvetica, Arial, sans-serif; 6 | @fontWeight: bold; 7 | @textTransform: none; 8 | 9 | /* HTML Headings */ 10 | @h1: 1.33rem; 11 | @h2: 1.2rem; 12 | @h3: 1rem; 13 | @h4: 0.9rem; 14 | @h5: 0.8rem; 15 | 16 | /* Sizing */ 17 | @hugeFontSize: 1.33em; 18 | @largeFontSize: 1.2em; 19 | @mediumFontSize: 1em; 20 | @smallFontSize: 0.9em; 21 | @tinyFontSize: 0.8em; -------------------------------------------------------------------------------- /semantic/src/themes/chubby/modules/accordion.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | 5 | .ui.styled.accordion .accordion .active.title { 6 | border-bottom: 1px solid rgba(0, 0, 0, 0.1); 7 | } -------------------------------------------------------------------------------- /semantic/src/themes/chubby/modules/accordion.variables: -------------------------------------------------------------------------------- 1 | /*------------------- 2 | Accordion Variables 3 | --------------------*/ 4 | 5 | @iconMargin: 0em 0.5em 0em 0em; 6 | 7 | @styledActiveTitleBackground: @subtleGradient; 8 | @styledActiveTitleColor: @primaryColor; 9 | 10 | @styledActiveChildTitleBackground: transparent; 11 | 12 | @styledTitlePadding: 1.25em; 13 | @styledTitleFontWeight: bold; 14 | @styledContentPadding: 1.5em 3.25em; 15 | @styledChildContentPadding: @styledContentPadding; -------------------------------------------------------------------------------- /semantic/src/themes/chubby/views/comment.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | 5 | .ui.comments .comment { 6 | border-radius: 0.5em; 7 | box-shadow: 0px 1px 1px 1px rgba(0, 0, 0, 0.1); 8 | } 9 | .ui.comments .comment .comments .comment { 10 | border: 1px solid rgba(0, 0, 0, 0.1); 11 | box-shadow: none; 12 | } -------------------------------------------------------------------------------- /semantic/src/themes/classic/collections/table.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/classic/collections/table.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Table 3 | *******************************/ 4 | 5 | /*------------------- 6 | Element 7 | --------------------*/ 8 | 9 | @boxShadow: @subtleGradient; 10 | 11 | @headerBackground: @subtleGradient; 12 | @headerBoxShadow: @subtleShadow; 13 | @footerBoxShadow: 0px -1px 1px 0px rgba(0, 0, 0, 0.05); 14 | @footerBackground: rgba(0, 0, 0, 0.05); 15 | -------------------------------------------------------------------------------- /semantic/src/themes/classic/elements/button.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/classic/elements/header.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/classic/elements/header.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Button 3 | *******************************/ 4 | 5 | /*------------------- 6 | Element 7 | --------------------*/ 8 | 9 | @headerFont: 'Open Sans', Arial, sans-serif; 10 | 11 | @blockBackground: @offWhite @subtleGradient; 12 | @blockBoxShadow: @subtleShadow; -------------------------------------------------------------------------------- /semantic/src/themes/classic/modules/progress.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Progress 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/classic/modules/progress.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Progress 3 | *******************************/ 4 | 5 | @background: rgba(0, 0, 0, 0.05); 6 | @boxShadow: 0px 0px 4px rgba(0, 0, 0, 0.1) inset; 7 | @barBackground: @subtleGradient #888888; 8 | @border: 1px solid @borderColor; 9 | @padding: @relative3px; -------------------------------------------------------------------------------- /semantic/src/themes/classic/views/card.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Card 3 | *******************************/ 4 | 5 | /*------------------- 6 | View 7 | --------------------*/ 8 | 9 | /* Shadow */ 10 | @shadowDistance: 0em; 11 | @padding: 0em; 12 | 13 | /*------------------- 14 | Content 15 | --------------------*/ 16 | 17 | /* Additional Content */ 18 | @extraDivider: 1px solid rgba(0, 0, 0, 0.05); 19 | @extraBackground: #FAFAFA @subtleGradient; 20 | @extraPadding: 0.75em 1em; 21 | @extraBoxShadow: 0 1px 1px rgba(0, 0, 0, 0.15); 22 | @extraColor: @lightTextColor; 23 | -------------------------------------------------------------------------------- /semantic/src/themes/colored/modules/checkbox.overrides: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/colored/modules/checkbox.overrides -------------------------------------------------------------------------------- /semantic/src/themes/colored/modules/checkbox.variables: -------------------------------------------------------------------------------- 1 | /* Checkbox */ 2 | @checkboxActiveBackground: @primaryColor; 3 | @checkboxActiveBorderColor: @primaryColor; 4 | @checkboxActiveCheckColor: @white; 5 | 6 | @checkboxActiveFocusBackground: @primaryColorFocus; 7 | @checkboxActiveFocusBorderColor: @primaryColorFocus; 8 | @checkboxActiveFocusCheckColor: @white; 9 | 10 | @checkboxTransition: none; 11 | 12 | /* Radio */ 13 | @radioActiveBackground: @white; 14 | @radioActiveBorderColor: @primaryColor; 15 | @radioActiveBulletColor: @primaryColor; 16 | 17 | @radioActiveFocusBackground: @white; 18 | @radioActiveFocusBorderColor: @primaryColorFocus; 19 | @radioActiveFocusBulletColor: @primaryColorFocus; 20 | 21 | /* Slider */ 22 | @sliderOnLineColor: @primaryColor; 23 | @sliderOnFocusLineColor: @primaryColorFocus; 24 | 25 | /* Handle */ 26 | @handleBackground: @white @subtleGradient; 27 | @handleBoxShadow: 28 | 0px 0px 0px 1px @selectedBorderColor inset 29 | ; 30 | -------------------------------------------------------------------------------- /semantic/src/themes/default/assets/fonts/brand-icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/default/assets/fonts/brand-icons.eot -------------------------------------------------------------------------------- /semantic/src/themes/default/assets/fonts/brand-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/default/assets/fonts/brand-icons.ttf -------------------------------------------------------------------------------- /semantic/src/themes/default/assets/fonts/brand-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/default/assets/fonts/brand-icons.woff -------------------------------------------------------------------------------- /semantic/src/themes/default/assets/fonts/brand-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/default/assets/fonts/brand-icons.woff2 -------------------------------------------------------------------------------- /semantic/src/themes/default/assets/fonts/icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/default/assets/fonts/icons.eot -------------------------------------------------------------------------------- /semantic/src/themes/default/assets/fonts/icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/default/assets/fonts/icons.ttf -------------------------------------------------------------------------------- /semantic/src/themes/default/assets/fonts/icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/default/assets/fonts/icons.woff -------------------------------------------------------------------------------- /semantic/src/themes/default/assets/fonts/icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/default/assets/fonts/icons.woff2 -------------------------------------------------------------------------------- /semantic/src/themes/default/assets/fonts/outline-icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/default/assets/fonts/outline-icons.eot -------------------------------------------------------------------------------- /semantic/src/themes/default/assets/fonts/outline-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/default/assets/fonts/outline-icons.ttf -------------------------------------------------------------------------------- /semantic/src/themes/default/assets/fonts/outline-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/default/assets/fonts/outline-icons.woff -------------------------------------------------------------------------------- /semantic/src/themes/default/assets/fonts/outline-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/default/assets/fonts/outline-icons.woff2 -------------------------------------------------------------------------------- /semantic/src/themes/default/assets/images/flags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/default/assets/images/flags.png -------------------------------------------------------------------------------- /semantic/src/themes/default/collections/breadcrumb.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/collections/breadcrumb.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Breadcrumb 3 | *******************************/ 4 | 5 | /*------------------- 6 | Breadcrumb 7 | --------------------*/ 8 | 9 | @verticalMargin: 0em; 10 | @display: inline-block; 11 | @verticalAlign: middle; 12 | 13 | @dividerSpacing: @3px; 14 | @dividerOpacity: 0.7; 15 | @dividerColor: @lightTextColor; 16 | 17 | @dividerSize: @relativeSmall; 18 | @dividerVerticalAlign: baseline; 19 | 20 | @iconDividerSize: @relativeTiny; 21 | @iconDividerVerticalAlign: baseline; 22 | 23 | @sectionMargin: 0em; 24 | @sectionPadding: 0em; 25 | 26 | /* Coupling */ 27 | @segmentPadding: @relativeMini @relativeMedium; 28 | 29 | /*------------------- 30 | States 31 | --------------------*/ 32 | 33 | @activeFontWeight: @bold; 34 | -------------------------------------------------------------------------------- /semantic/src/themes/default/collections/form.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/collections/grid.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | 5 | -------------------------------------------------------------------------------- /semantic/src/themes/default/collections/menu.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/collections/message.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/collections/table.overrides: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/default/collections/table.overrides -------------------------------------------------------------------------------- /semantic/src/themes/default/elements/button.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/elements/container.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/elements/flag.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Flag 3 | *******************************/ 4 | 5 | /*------------------- 6 | Element 7 | --------------------*/ 8 | 9 | @spritePath: "@{imagePath}/flags.png"; 10 | @width: 16px; 11 | @height: 11px; 12 | @verticalAlign: baseline; 13 | @margin: 0.5em; -------------------------------------------------------------------------------- /semantic/src/themes/default/elements/header.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | 5 | -------------------------------------------------------------------------------- /semantic/src/themes/default/elements/image.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/elements/input.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/elements/label.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/elements/list.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/elements/loader.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/elements/placeholder.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/elements/rail.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/elements/rail.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Rail 3 | *******************************/ 4 | 5 | /*------------------- 6 | Element 7 | --------------------*/ 8 | 9 | @width: 300px; 10 | @height: 100%; 11 | 12 | @distance: 4rem; 13 | @splitDistance: (@distance / 2); 14 | 15 | /*------------------- 16 | Variations 17 | --------------------*/ 18 | 19 | /* Close */ 20 | @closeDistance: 2em; 21 | @veryCloseDistance: 1em; 22 | 23 | @splitCloseDistance: (@closeDistance / 2); 24 | @splitVeryCloseDistance: (@veryCloseDistance / 2); 25 | 26 | @closeWidth: ~"calc("@width~" + "@splitCloseDistance~")"; 27 | @veryCloseWidth: ~"calc("@width~" + "@splitVeryCloseDistance~")"; 28 | 29 | /* Dividing */ 30 | @dividingBorder: 1px solid @borderColor; 31 | @dividingDistance: 5rem; 32 | @splitDividingDistance: (@dividingDistance / 2); 33 | @dividingWidth: @width + @splitDividingDistance; 34 | 35 | -------------------------------------------------------------------------------- /semantic/src/themes/default/elements/reveal.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/elements/reveal.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Reveal 3 | *******************************/ 4 | 5 | @transitionDelay: 0.1s; 6 | @transitionDuration: 0.5s; 7 | @transitionEasing: cubic-bezier(0.175, 0.885, 0.320, 1); 8 | @transition: all @transitionDuration @defaultEasing @transitionDelay; 9 | 10 | @bottomZIndex: 2; 11 | @topZIndex: 3; 12 | @activeZIndex: 4; 13 | @overlayZIndex: 5; 14 | 15 | /* Types */ 16 | @rotateDegrees: 110deg; 17 | @moveTransition: transform @transitionDuration @transitionEasing @transitionDelay; 18 | @slideTransition: transform @transitionDuration @defaultEasing @transitionDelay; 19 | -------------------------------------------------------------------------------- /semantic/src/themes/default/elements/segment.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/globals/reset.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Reset 3 | *******************************/ -------------------------------------------------------------------------------- /semantic/src/themes/default/globals/site.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Global Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/modules/chatroom.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/modules/chatroom.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Chatroom 3 | *******************************/ -------------------------------------------------------------------------------- /semantic/src/themes/default/modules/dimmer.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/modules/embed.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Video Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/modules/modal.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/modules/nag.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/modules/popup.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/modules/progress.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Progress 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/modules/search.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/modules/shape.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/modules/shape.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Shape 3 | *******************************/ 4 | 5 | @display: inline-block; 6 | 7 | /* Animating */ 8 | @perspective: 2000px; 9 | 10 | @duration: 0.6s; 11 | @easing: ease-in-out; 12 | 13 | @hiddenSideOpacity: 0.6; 14 | @animatingZIndex: 100; 15 | 16 | @transition: 17 | transform @duration @easing, 18 | left @duration @easing, 19 | width @duration @easing, 20 | height @duration @easing 21 | ; 22 | @sideTransition: opacity @duration @easing; 23 | @backfaceVisibility: hidden; 24 | 25 | /* Side */ 26 | @sideMargin: 0em; 27 | 28 | /*-------------- 29 | Types 30 | ---------------*/ 31 | 32 | /* Cube */ 33 | @cubeSize: 15em; 34 | @cubeBackground: #E6E6E6; 35 | @cubePadding: 2em; 36 | @cubeTextColor: @textColor; 37 | @cubeBoxShadow: 0px 0px 2px rgba(0, 0, 0, 0.3); 38 | 39 | @cubeTextAlign: center; 40 | @cubeFontSize: 2em; 41 | -------------------------------------------------------------------------------- /semantic/src/themes/default/modules/sidebar.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/modules/sticky.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/modules/sticky.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Sticky 3 | *******************************/ 4 | 5 | @transitionDuration: @defaultDuration; 6 | @transition: none; 7 | @zIndex: 800; -------------------------------------------------------------------------------- /semantic/src/themes/default/modules/tab.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Tab Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/modules/tab.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Tab 3 | *******************************/ 4 | 5 | /* Loading */ 6 | @loadingMinHeight: 250px; 7 | @loadingContentPosition: relative; 8 | @loadingContentOffset: -10000px; 9 | 10 | @loaderDistanceFromTop: 100px; 11 | @loaderSize: 2.5em; -------------------------------------------------------------------------------- /semantic/src/themes/default/modules/transition.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Transition 3 | *******************************/ 4 | 5 | @transitionDefaultEasing: @defaultEasing; 6 | @transitionDefaultFill: both; 7 | @transitionDefaultDuration: 300ms; 8 | 9 | @use3DAcceleration: translateZ(0); 10 | @backfaceVisibility: hidden; -------------------------------------------------------------------------------- /semantic/src/themes/default/views/ad.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/views/ad.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Advertisement 3 | *******************************/ 4 | 5 | @margin: 1em 0em; 6 | @overflow: hidden; 7 | 8 | @testBackground: @lightBlack; 9 | @testColor: @white; 10 | @testFontWeight: @bold; 11 | @testText: 'Ad'; 12 | @testFontSize: @relativeMedium; 13 | @testMobileFontSize: @relativeTiny; 14 | -------------------------------------------------------------------------------- /semantic/src/themes/default/views/card.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/views/comment.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/views/feed.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/views/item.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/default/views/statistic.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/duo/elements/loader.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/duo/elements/loader.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Loader 3 | *******************************/ 4 | 5 | @shapeBorderColor: @primaryColor @primaryColor @secondaryColor @secondaryColor; 6 | @invertedShapeBorderColor: @lightPrimaryColor @lightPrimaryColor @lightSecondaryColor @lightSecondaryColor; -------------------------------------------------------------------------------- /semantic/src/themes/fixed-width/collections/grid.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/fixed-width/collections/grid.variables: -------------------------------------------------------------------------------- 1 | /* Fixed Page Grid */ 2 | 3 | @mobileWidth: auto; 4 | @mobileMargin: 0em; 5 | @mobileGutter: 0em; 6 | 7 | @tabletWidth: auto; 8 | @tabletMargin: 0em; 9 | @tabletGutter: 8%; 10 | 11 | @computerWidth: 960px; 12 | @computerMargin: auto; 13 | @computerGutter: 0; 14 | 15 | @largeMonitorWidth: 1180px; 16 | @largeMonitorMargin: auto; 17 | @largeMonitorGutter: 0; 18 | 19 | @widescreenMonitorWidth: 1300px; 20 | @widescreenMargin: auto; 21 | @widescreenMonitorGutter: 0; 22 | 23 | @tableWidth: ''; -------------------------------------------------------------------------------- /semantic/src/themes/fixed-width/modules/modal.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/flat/collections/form.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | 5 | .ui.form input[type="text"], 6 | .ui.form input[type="email"], 7 | .ui.form input[type="date"], 8 | .ui.form input[type="password"], 9 | .ui.form input[type="number"], 10 | .ui.form input[type="url"], 11 | .ui.form input[type="tel"] { 12 | border-bottom: 1px solid #DDDDDD; 13 | } 14 | 15 | .ui.form .selection.dropdown { 16 | border: none; 17 | box-shadow: none !important; 18 | border-bottom: 1px solid #DDDDDD; 19 | border-radius: 0em !important; 20 | } 21 | .ui.form .selection.dropdown > .menu { 22 | border-top-width: 1px !important; 23 | border-radius: @defaultBorderRadius !important; 24 | } 25 | 26 | .ui.form .ui.icon.input > .icon { 27 | width: 1em; 28 | } -------------------------------------------------------------------------------- /semantic/src/themes/flat/globals/site.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/github/assets/fonts/octicons-local.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/github/assets/fonts/octicons-local.ttf -------------------------------------------------------------------------------- /semantic/src/themes/github/assets/fonts/octicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/github/assets/fonts/octicons.ttf -------------------------------------------------------------------------------- /semantic/src/themes/github/assets/fonts/octicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/github/assets/fonts/octicons.woff -------------------------------------------------------------------------------- /semantic/src/themes/github/collections/breadcrumb.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | 5 | @dividerOpacity: 1; 6 | @dividerSpacing: 0; 7 | @dividerSize: @big; 8 | @dividerColor: inherit; 9 | 10 | @huge: 1.5384em; 11 | 12 | -------------------------------------------------------------------------------- /semantic/src/themes/github/collections/form.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | 5 | .ui.selection.dropdown { 6 | background-color: #FAFAFA; 7 | box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075) inset; 8 | border-color: #CCCCCC; 9 | } 10 | 11 | .ui.selection.dropdown:focus { 12 | box-shadow: 13 | 0px 1px 2px rgba(0, 0, 0, 0.075) inset, 14 | 0px 0px 5px rgba(81, 167, 232, 0.5) 15 | ; 16 | } -------------------------------------------------------------------------------- /semantic/src/themes/github/collections/grid.variables: -------------------------------------------------------------------------------- 1 | 2 | @gutterWidth: 1.538rem; -------------------------------------------------------------------------------- /semantic/src/themes/github/collections/menu.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | 5 | .ui.menu .item > .label { 6 | box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1) inset; 7 | } -------------------------------------------------------------------------------- /semantic/src/themes/github/collections/message.overrides: -------------------------------------------------------------------------------- 1 | .ui.info.message { 2 | background: linear-gradient(#D8EBF8, #D0E3EF); 3 | } 4 | .ui.error.message { 5 | background: linear-gradient(#F8D8D8, #EFD0D0); 6 | } 7 | .ui.warning.message { 8 | background: linear-gradient(#FFE3C8, #F5DAC0); 9 | } 10 | .ui.success.message { 11 | } 12 | -------------------------------------------------------------------------------- /semantic/src/themes/github/collections/message.variables: -------------------------------------------------------------------------------- 1 | @background: linear-gradient(rgba(255, 255, 255, 0.1), rgba(0, 0, 0, 0.05)) #FEFEFE; 2 | @boxShadow: 3 | 0px 0px 0px 1px rgba(255, 255, 255, 0.3) inset, 4 | 0px 0px 0px 1px rgba(0, 0, 0, 0.2) inset 5 | ; 6 | @verticalPadding: 15px; 7 | @horizontalPadding: 15px; 8 | 9 | @headerFontSize: 1.15em; 10 | 11 | @infoTextColor: #264C72; 12 | @warningTextColor: #613A00; 13 | @errorTextColor: #991111; 14 | 15 | @floatingBoxShadow: 16 | 0px 0px 0px 1px rgba(0, 0, 0, 0.1) inset, 17 | 0px 2px 3px 0px rgba(0, 0, 0, 0.1), 18 | 0px 0px 0px 1px rgba(0, 0, 0, 0.05) inset 19 | ; 20 | 21 | @infoBorderColor: #97C1DA; 22 | @errorBorderColor: #DA9797; 23 | @warningBorderColor: #DCA874; 24 | 25 | @small: 12px; 26 | @medium: 13px; 27 | @large: 14px; 28 | @huge: 16px; 29 | @massive: 18px; 30 | -------------------------------------------------------------------------------- /semantic/src/themes/github/collections/table.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | 5 | @background: #F8F8F8; 6 | 7 | @cellVerticalPadding: @relative6px; 8 | @cellHorizontalPadding: @relative8px; -------------------------------------------------------------------------------- /semantic/src/themes/github/elements/button.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | 5 | -------------------------------------------------------------------------------- /semantic/src/themes/github/elements/header.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Header 3 | *******************************/ 4 | 5 | /*------------------- 6 | Element 7 | --------------------*/ 8 | 9 | @iconMargin: @4px; 10 | -------------------------------------------------------------------------------- /semantic/src/themes/github/elements/icon.variables: -------------------------------------------------------------------------------- 1 | @fontPath: '../../themes/github/assets/fonts'; 2 | @fontName: 'octicons'; 3 | @fallbackSRC: ''; 4 | 5 | @width: 1em; 6 | @height: 1em; 7 | 8 | @small: 13px; 9 | @medium: 16px; 10 | @large: 18px; 11 | @big : 20px; 12 | @huge: 28px; 13 | @massive: 32px; -------------------------------------------------------------------------------- /semantic/src/themes/github/elements/image.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | 5 | @miniWidth: 20px; -------------------------------------------------------------------------------- /semantic/src/themes/github/elements/input.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Input 3 | *******************************/ 4 | 5 | /* Labeled Input has padding */ 6 | .ui.labeled.input { 7 | background-color: @white; 8 | border: @borderWidth solid @borderColor; 9 | border-radius: @borderRadius !important; 10 | } 11 | .ui.labeled.input input { 12 | box-shadow: none !important; 13 | border: none !important; 14 | } 15 | .ui.labeled.input .label { 16 | font-weight: normal; 17 | align-self: center; 18 | font-size: 12px; 19 | margin: @2px; 20 | border-radius: @borderRadius !important; 21 | padding: @relative5px @relative8px !important; 22 | } 23 | 24 | /* GitHub Uses Focus Group with class name added */ 25 | .ui.labeled.input.focused { 26 | border-color: @focusBorderColor; 27 | box-shadow: @focusBoxShadow; 28 | } 29 | .ui.labeled.input.focused .label { 30 | background-color: #E1EAF5; 31 | color: #4078C0; 32 | } -------------------------------------------------------------------------------- /semantic/src/themes/github/elements/input.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Input 3 | *******************************/ 4 | 5 | @boxShadow: 0 1px 2px rgba(0, 0, 0, 0.075) inset; 6 | 7 | @verticalPadding: @relative7px; 8 | @horizontalPadding: @relative8px; 9 | 10 | @borderColor: #CCCCCC; 11 | 12 | @focusBorderColor: #51A7E8; 13 | @focusBoxShadow: 14 | 0 1px 2px rgba(0, 0, 0, 0.075) inset, 15 | 0 0 5px rgba(81, 167, 232, 0.5) 16 | ; -------------------------------------------------------------------------------- /semantic/src/themes/github/elements/label.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | 5 | /* Notification Label on GitHub */ 6 | .ui.floating.blue.label { 7 | border: 2px solid #f3f3f3 !important; 8 | background-image: linear-gradient(#7aa1d3, #4078c0) !important; 9 | } -------------------------------------------------------------------------------- /semantic/src/themes/github/elements/label.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | 5 | -------------------------------------------------------------------------------- /semantic/src/themes/github/elements/segment.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/github/elements/step.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | 5 | .ui.steps .step:after { 6 | display: none; 7 | } 8 | .ui.steps .completed.step:before { 9 | opacity: 0.5; 10 | } 11 | 12 | .ui.steps .step.active:after { 13 | display: block; 14 | border: none; 15 | border-bottom: 1px solid rgba(0, 0, 0, 0.2); 16 | border-left: 1px solid rgba(0, 0, 0, 0.2); 17 | } 18 | .ui.vertical.steps .step.active:after { 19 | display: block; 20 | border: none; 21 | top: 50%; 22 | right: 0%; 23 | border-left: none; 24 | border-bottom: 1px solid rgba(0, 0, 0, 0.2); 25 | border-right: 1px solid rgba(0, 0, 0, 0.2); 26 | } -------------------------------------------------------------------------------- /semantic/src/themes/github/elements/step.variables: -------------------------------------------------------------------------------- 1 | /*------------------- 2 | Step Variables 3 | --------------------*/ 4 | 5 | /* Step */ 6 | @background: transparent linear-gradient(transparent, rgba(0, 0, 0, 0.07)); 7 | @verticalPadding: 1em; 8 | 9 | @arrowDisplay: none; 10 | @lastArrowDisplay: none; 11 | @activeArrowDisplay: block; 12 | @activeLastArrowDisplay: block; 13 | 14 | /* Group */ 15 | @stepsBackground: #FFFFFF; 16 | @stepsBoxShadow: 0px 0px 1px 0px rgba(0, 0, 0, 0.15); 17 | 18 | /* States */ 19 | @activeBackground: #FFFFFF; 20 | @activeIconColor: @darkTextColor; 21 | 22 | /* Arrow */ 23 | @arrowTopOffset: 100%; 24 | @arrowRightOffset: 50%; 25 | @arrowBorderColor: rgba(0, 0, 0, 0.2); 26 | @arrowBorderWidth: 0px 0px @borderWidth @borderWidth; 27 | -------------------------------------------------------------------------------- /semantic/src/themes/github/modules/dropdown.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | 5 | @transition: 6 | width @defaultDuration @defaultEasing 7 | ; 8 | 9 | @menuPadding: 0px; 10 | 11 | @itemVerticalPadding: @relative8px; 12 | @itemHorizontalPadding: @relative14px; 13 | 14 | @dropdownIconMargin: 0em 0em 0em 2px; 15 | 16 | @raisedBoxShadow: 0px 3px 12px rgba(0, 0, 0, 0.15); 17 | 18 | @menuPadding: @relative5px 0px; 19 | 20 | @menuHeaderMargin: 0em; 21 | @menuHeaderPadding: @relative6px @itemHorizontalPadding; 22 | @menuHeaderFontSize: @relative12px; 23 | @menuHeaderTextTransform: none; 24 | @menuHeaderFontWeight: normal; 25 | @menuHeaderColor: #767676; 26 | 27 | @menuDividerMargin: @relative8px 0em; 28 | 29 | @disabledOpacity: 0.6; 30 | 31 | /* States */ 32 | @hoveredItemBackground: #4078C0; 33 | @hoveredItemColor: @white; 34 | 35 | @pointingArrowSize: @relative9px; 36 | -------------------------------------------------------------------------------- /semantic/src/themes/github/modules/popup.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Popup 3 | *******************************/ 4 | 5 | 6 | @small: @relative10px; 7 | @medium: @relative11px; 8 | @large: @relative13px; 9 | 10 | @verticalPadding: @relative7px; 11 | @horizontalPadding: @relative11px; 12 | 13 | -------------------------------------------------------------------------------- /semantic/src/themes/gmail/collections/message.overrides: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/gmail/collections/message.overrides -------------------------------------------------------------------------------- /semantic/src/themes/gmail/collections/message.variables: -------------------------------------------------------------------------------- 1 | @background: #F3F3F3; 2 | 3 | @boxShadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1) inset; 4 | @borderRadius: 4px; 5 | @verticalPadding: 7px; 6 | @horizontalPadding: 15px; 7 | 8 | @headerFontSize: 1em; 9 | 10 | @floatingBoxShadow: 0px 2px 4px rgba(0, 0, 0, 0.2); 11 | 12 | @iconSize: 1.5em; 13 | @iconDistance: 1em; 14 | 15 | @warningBackgroundColor: #F9EDBE; 16 | -------------------------------------------------------------------------------- /semantic/src/themes/instagram/views/card.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | 5 | 6 | @import url(https://fonts.googleapis.com/css?family=Montserrat:700,400); 7 | 8 | .ui.cards > .card, 9 | .ui.card { 10 | font-family: 'Montserrat'; 11 | font-size-adjust: 0.5; 12 | } -------------------------------------------------------------------------------- /semantic/src/themes/instagram/views/card.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Card 3 | *******************************/ 4 | 5 | /*------------------- 6 | View 7 | --------------------*/ 8 | 9 | @borderBoxShadow: none; 10 | @shadowBoxShadow: none; 11 | @boxShadow: none; 12 | 13 | 14 | @internalBorderColor: #EDEDEE; 15 | @border: 1px solid #EDEDEE; 16 | 17 | @contentPadding: 14px 20px; 18 | 19 | @metaColor: #A5A7AA; 20 | 21 | @linkHoverRaiseDistance: 0px; 22 | @linkHoverBoxShadow: none; 23 | @linkHoverBorder: 1px solid #D0D0D8; -------------------------------------------------------------------------------- /semantic/src/themes/joypixels/elements/emoji.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Emoji 3 | *******************************/ 4 | 5 | /*-------------- 6 | Path 7 | --------------- 8 | Downloading and hosting the joxpixels assets locally may require an additional license depending on the usage 9 | Find joypixels licenses at https://www.joypixels.com/licenses 10 | */ 11 | @emojiPath: "https://cdn.jsdelivr.net/joypixels/assets/5.0/png/unicode/128/"; 12 | @emojiFileType: "png"; 13 | 14 | /*-------------- 15 | Definition 16 | ---------------*/ 17 | 18 | /* Emoji Variables */ 19 | @opacity: 1; 20 | @loadingDuration: 2s; 21 | @emojiLineHeight: @headerLineHeight; 22 | -------------------------------------------------------------------------------- /semantic/src/themes/material/assets/fonts/icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/material/assets/fonts/icons.eot -------------------------------------------------------------------------------- /semantic/src/themes/material/assets/fonts/icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/material/assets/fonts/icons.ttf -------------------------------------------------------------------------------- /semantic/src/themes/material/assets/fonts/icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/material/assets/fonts/icons.woff -------------------------------------------------------------------------------- /semantic/src/themes/material/assets/fonts/icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/material/assets/fonts/icons.woff2 -------------------------------------------------------------------------------- /semantic/src/themes/material/collections/menu.overrides: -------------------------------------------------------------------------------- 1 | @import url(https://fonts.googleapis.com/css?family=Roboto); 2 | -------------------------------------------------------------------------------- /semantic/src/themes/material/collections/menu.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Menu 3 | *******************************/ 4 | 5 | @fontFamily: 'Roboto', Arial, sans-serif; 6 | @boxShadow: 0px 1px 6px rgba(0, 0, 0, 0.2); 7 | @dividerSize: 0px; 8 | 9 | @itemVerticalPadding: @relativeLarge; 10 | @itemHorizontalPadding: @relativeLarge; -------------------------------------------------------------------------------- /semantic/src/themes/material/elements/button.overrides: -------------------------------------------------------------------------------- 1 | @import url(https://fonts.googleapis.com/css?family=Roboto); 2 | 3 | .ui.primary.button:hover { 4 | box-shadow: 5 | 0px 0px 0px 1px rgba(0, 0, 0, 0.3) inset, 6 | 0px 2px 3px 0px rgba(0, 0, 0, 0.35) !important 7 | ; 8 | } 9 | 10 | .ui.secondary.button:hover { 11 | box-shadow: 12 | 0px 0px 0px 1px rgba(0, 0, 0, 0.2) inset, 13 | 0px 2px 3px 0px rgba(0, 0, 0, 0.3) !important 14 | ; 15 | } 16 | -------------------------------------------------------------------------------- /semantic/src/themes/material/elements/header.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | 5 | @import url(https://fonts.googleapis.com/css?family=Roboto); 6 | 7 | h1.ui.header, 8 | .ui.huge.header { 9 | font-weight: normal; 10 | } 11 | 12 | h2.ui.header, 13 | .ui.large.header { 14 | font-weight: normal; 15 | } 16 | -------------------------------------------------------------------------------- /semantic/src/themes/material/elements/header.variables: -------------------------------------------------------------------------------- 1 | /*------------------- 2 | Header 3 | --------------------*/ 4 | 5 | @headerFont : 'Roboto', Arial, sans-serif; 6 | @fontWeight: normal; 7 | 8 | @iconSize: 2em; 9 | @iconOffset: 0.2em; 10 | @iconAlignment: top; 11 | 12 | @subHeaderFontSize: 1rem; 13 | 14 | 15 | /* HTML Headings */ 16 | @h1 : 2.25rem; 17 | @h2 : 2rem; 18 | @h3 : 1.75rem; 19 | @h4 : 1.5rem; 20 | @h5 : 1.25rem; 21 | 22 | -------------------------------------------------------------------------------- /semantic/src/themes/material/elements/icon.variables: -------------------------------------------------------------------------------- 1 | @fontPath : '../../themes/material/assets/fonts'; 2 | 3 | @width: 1em; 4 | @height: 1em; 5 | 6 | @small: 13px; 7 | @medium: 16px; 8 | @large: 18px; 9 | @big : 20px; 10 | @huge: 28px; 11 | @massive: 32px; 12 | -------------------------------------------------------------------------------- /semantic/src/themes/material/globals/site.overrides: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/material/globals/site.overrides -------------------------------------------------------------------------------- /semantic/src/themes/material/modules/dropdown.overrides: -------------------------------------------------------------------------------- 1 | @import url(https://fonts.googleapis.com/css?family=Roboto:400,700); 2 | 3 | .ui.dropdown { 4 | font-family: 'Roboto'; 5 | } 6 | -------------------------------------------------------------------------------- /semantic/src/themes/material/modules/dropdown.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Menu 3 | *******************************/ 4 | 5 | @menuBorderRadius: @borderRadius; 6 | @menuBorderColor: #DADADA; 7 | @menuBoxShadow: 0px 2px 4px rgba(0, 0, 0, 0.2); 8 | 9 | @menuPadding: @relative8px 0em; 10 | @itemVerticalPadding: 1em; 11 | @itemHorizontalPadding: 1.5em; 12 | 13 | @menuHeaderFontSize: @small; 14 | @menuHeaderFontWeight: bold; 15 | @menuHeaderTextTransform: none; 16 | 17 | @selectionBorderEmWidth: 0em; 18 | @selectionItemDivider: none; 19 | 20 | @labelBoxShadow: none; -------------------------------------------------------------------------------- /semantic/src/themes/material/modules/modal.overrides: -------------------------------------------------------------------------------- 1 | @import url(https://fonts.googleapis.com/css?family=Roboto); 2 | 3 | .ui.modal .header { 4 | font-family: "Roboto", Arial, Sans-serif !important; 5 | font-weight: 400 !important; 6 | } 7 | -------------------------------------------------------------------------------- /semantic/src/themes/material/modules/modal.variables: -------------------------------------------------------------------------------- 1 | @boxShadow: 0px 10px 18px rgba(0, 0, 0, 0.22); 2 | @borderRadius: 0em; 3 | 4 | 5 | @headerBackground: @white; 6 | @headerVerticalPadding: 1.7142rem; 7 | @headerHorizontalPadding: 1.7142rem; 8 | @headerFontWeight: 400; 9 | @headerFontFamily: 'Roboto', "Helvetica Neue", Arial, sans-serif; 10 | @headerBorder: none; 11 | 12 | @contentPadding: 1rem 2rem 2rem; 13 | 14 | @actionBorder: none; 15 | @actionBackground: @white; -------------------------------------------------------------------------------- /semantic/src/themes/pulsar/elements/loader.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Loader 3 | *******************************/ 4 | 5 | @loaderSpeed: 2s; 6 | @loaderLineColor: @primaryColor; 7 | @invertedLoaderLineColor: @lightPrimaryColor; 8 | -------------------------------------------------------------------------------- /semantic/src/themes/raised/elements/button.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/raised/elements/button.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Button 3 | *******************************/ 4 | 5 | /*------------------- 6 | Element 7 | --------------------*/ 8 | 9 | @backgroundColor: #F8F8F8; 10 | @backgroundImage: linear-gradient(transparent, rgba(0, 0, 0, 0.05)); 11 | @verticalAlign: middle; 12 | @borderRadius: 0.4em; 13 | @borderBoxShadowColor: @borderColor; 14 | 15 | /* Shadow */ 16 | @shadowDistance: 0.3em; 17 | @verticalPadding: 1em; 18 | @horizontalPadding: 2em; 19 | 20 | /* transition box shadow as well */ 21 | @transition: 22 | opacity @defaultDuration @defaultEasing, 23 | background-color @defaultDuration @defaultEasing, 24 | box-shadow @defaultDuration @defaultEasing, 25 | color @defaultDuration @defaultEasing, 26 | background @defaultDuration @defaultEasing 27 | ; -------------------------------------------------------------------------------- /semantic/src/themes/resetcss/globals/reset.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Reset 3 | *******************************/ -------------------------------------------------------------------------------- /semantic/src/themes/round/elements/button.overrides: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/semantic/src/themes/round/elements/button.overrides -------------------------------------------------------------------------------- /semantic/src/themes/rtl/globals/site.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Global Overrides 3 | *******************************/ 4 | 5 | /* Import Droid Arabic Kufi */ 6 | @import 'https://fonts.googleapis.com/earlyaccess/droidarabickufi.css'; 7 | -------------------------------------------------------------------------------- /semantic/src/themes/rtl/globals/site.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Settings 3 | *******************************/ 4 | 5 | /*------------------- 6 | Fonts 7 | --------------------*/ 8 | 9 | @googleFontName : 'Droid Sans'; 10 | 11 | /* Kufi imported in site.overrides */ 12 | @headerFont : 'Droid Arabic Kufi', 'Droid Sans', 'Helvetica Neue', Arial, Helvetica, sans-serif; 13 | @pageFont : 'Droid Arabic Kufi', 'Droid Sans', 'Helvetica Neue', Arial, Helvetica, sans-serif; 14 | 15 | -------------------------------------------------------------------------------- /semantic/src/themes/striped/modules/progress.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Progress 3 | *******************************/ 4 | 5 | .ui.progress .bar { 6 | background-size: 30px 30px; 7 | background-image: 8 | linear-gradient( 9 | 135deg, rgba(255, 255, 255, 0.08) 25%, transparent 25%, 10 | transparent 50%, rgba(255, 255, 255, 0.08) 50%, rgba(255, 255, 255, 0.08) 75%, 11 | transparent 75%, transparent 12 | ) 13 | ; 14 | } 15 | 16 | .ui.progress.active .bar:after { 17 | animation: none; 18 | } 19 | .ui.progress.active .bar { 20 | animation: progress-striped 3s linear infinite; 21 | } 22 | @keyframes progress-striped { 23 | 0% { 24 | background-position: 0px 0; 25 | } 26 | 100% { 27 | background-position: 60px 0; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /semantic/src/themes/striped/modules/progress.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Progress 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic/src/themes/timeline/views/feed.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | 5 | .ui.feed > .event .label { 6 | border-left: 3px solid #DDDDDD; 7 | } 8 | .ui.feed > .event:last-child .label { 9 | border-left-color: transparent; 10 | } 11 | 12 | .ui.feed > .event > .label { 13 | margin-left: 1.6em; 14 | } 15 | 16 | .ui.feed > .event > .label > img, 17 | .ui.feed > .event > .label > .icon { 18 | background-color: #009FDA; 19 | border-radius: 500rem; 20 | color: #FFFFFF; 21 | width: 3rem; 22 | height: 3rem; 23 | line-height: 1.5; 24 | left: -1.6rem; 25 | opacity: 1; 26 | position: relative; 27 | } 28 | -------------------------------------------------------------------------------- /semantic/src/themes/twitter/elements/button.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | 5 | .ui.primary.button { 6 | box-shadow: 7 | 0px 0px 0px 1px #3B88C3 inset, 8 | 0 2px 0 rgba(255, 255, 255, 0.15) inset 9 | ; 10 | } 11 | .ui.primary.button > .icon { 12 | color: #FFFFFF; 13 | } 14 | -------------------------------------------------------------------------------- /semantic/src/themes/twitter/elements/emoji.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Emoji 3 | *******************************/ 4 | 5 | /*-------------- 6 | Path 7 | ---------------*/ 8 | @emojiPath: "https://twemoji.maxcdn.com/v/latest/72x72/"; 9 | @emojiFileType: "png"; 10 | 11 | /*-------------- 12 | Definition 13 | ---------------*/ 14 | 15 | /* Emoji Variables */ 16 | @opacity: 1; 17 | @loadingDuration: 2s; 18 | @emojiLineHeight: @headerLineHeight; 19 | -------------------------------------------------------------------------------- /semantic/tasks/README.md: -------------------------------------------------------------------------------- 1 | ## Tasks 2 | 3 | * Watch - Compile only changed files from source 4 | * Build - Build all files from source 5 | * Version - Output version number 6 | * Install - Run Installer to Set-up Paths 7 | 8 | ## How to use 9 | 10 | These tasks can be imported into your own gulpfile allowing you to avoid using Semantic's build tools 11 | 12 | ```javascript 13 | var 14 | watch = require('path/to/semantic/tasks/watch') 15 | ; 16 | gulp.task('watch ui', watch); 17 | ``` 18 | -------------------------------------------------------------------------------- /semantic/tasks/admin/publish.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Release All 3 | *******************************/ 4 | 5 | /* 6 | This task update all SUI individual component repos with new versions of components 7 | 8 | * Commits changes from create components to GitHub and Tags 9 | 10 | */ 11 | 12 | var 13 | runSequence = require('run-sequence') 14 | ; 15 | 16 | /* Release All */ 17 | module.exports = function(callback) { 18 | 19 | runSequence( 20 | 'update distributions', // commit less/css versions to github 21 | 'update components', // commit components to github 22 | callback 23 | ); 24 | 25 | }; -------------------------------------------------------------------------------- /semantic/tasks/admin/release.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Release 3 | *******************************/ 4 | 5 | /* 6 | This task update all SUI individual component repos with new versions of components 7 | 8 | * Initializes repositories with current versions 9 | * Creates local files at ../distributions/ with each repo for release 10 | 11 | */ 12 | 13 | var 14 | runSequence = require('run-sequence') 15 | ; 16 | 17 | /* Release All */ 18 | module.exports = function(callback) { 19 | 20 | runSequence( 21 | //'build', // build Semantic 22 | 'init distributions', // sync with current github version 23 | 'create distributions', // update each repo with changes from master repo 24 | 'init components', // sync with current github version 25 | 'create components', // update each repo 26 | callback 27 | ); 28 | 29 | }; -------------------------------------------------------------------------------- /semantic/tasks/build/assets.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Build Task 3 | *******************************/ 4 | 5 | var 6 | gulp = require('gulp'), 7 | 8 | // gulp dependencies 9 | chmod = require('gulp-chmod'), 10 | gulpif = require('gulp-if'), 11 | 12 | // config 13 | config = require('../config/user'), 14 | tasks = require('../config/tasks'), 15 | 16 | // shorthand 17 | globs = config.globs, 18 | assets = config.paths.assets, 19 | output = config.paths.output, 20 | source = config.paths.source, 21 | 22 | log = tasks.log 23 | ; 24 | 25 | module.exports = function(callback) { 26 | 27 | console.info('Building assets'); 28 | 29 | // copy assets 30 | return gulp.src(source.themes + '/**/assets/**/*.*') 31 | .pipe(gulpif(config.hasPermission, chmod(config.permission))) 32 | .pipe(gulp.dest(output.themes)) 33 | ; 34 | 35 | }; -------------------------------------------------------------------------------- /semantic/tasks/check-install.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Check Install 3 | *******************************/ 4 | 5 | var 6 | // node dependencies 7 | gulp = require('gulp'), 8 | fs = require('fs'), 9 | console = require('better-console'), 10 | install = require('./config/project/install') 11 | ; 12 | 13 | // export task 14 | module.exports = function() { 15 | 16 | setTimeout(function() { 17 | if( !install.isSetup() ) { 18 | console.log('Starting install...'); 19 | gulp.start('install'); 20 | return; 21 | } 22 | else { 23 | gulp.start('watch'); 24 | } 25 | }, 50); // Delay to allow console.clear to remove messages from check event 26 | 27 | 28 | }; -------------------------------------------------------------------------------- /semantic/tasks/clean.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Clean Task 3 | *******************************/ 4 | 5 | var 6 | del = require('del'), 7 | config = require('./config/user'), 8 | tasks = require('./config/tasks') 9 | ; 10 | 11 | // cleans distribution files 12 | module.exports = function(callback) { 13 | return del([config.paths.clean], tasks.settings.del, callback); 14 | }; -------------------------------------------------------------------------------- /semantic/tasks/collections/README.md: -------------------------------------------------------------------------------- 1 | ## How to use 2 | 3 | These are collections of tasks that are imported together. 4 | 5 | To import them into gulp: 6 | ```javascript 7 | var 8 | gulp = require('gulp'), 9 | // modified to point to semantic folder 10 | install = require('tasks/collections/install') 11 | ; 12 | gulp = install(gulp); 13 | 14 | // tasks are now injected and ready to be used 15 | gulp.start('install'); 16 | ``` -------------------------------------------------------------------------------- /semantic/tasks/collections/build.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Define Sub-Tasks 3 | *******************************/ 4 | 5 | module.exports = function(gulp) { 6 | 7 | var 8 | // build sub-tasks 9 | buildJS = require('./../build/javascript'), 10 | buildCSS = require('./../build/css'), 11 | buildAssets = require('./../build/assets') 12 | ; 13 | 14 | // in case these tasks are undefined during import, less make sure these are available in scope 15 | gulp.task('build-javascript', 'Builds all javascript from source', buildJS); 16 | gulp.task('build-css', 'Builds all css from source', buildCSS); 17 | gulp.task('build-assets', 'Copies all assets from source', buildAssets); 18 | 19 | }; 20 | -------------------------------------------------------------------------------- /semantic/tasks/collections/rtl.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Define Sub-Tasks 3 | *******************************/ 4 | 5 | module.exports = function(gulp) { 6 | 7 | var 8 | // rtl 9 | buildRTL = require('./../rtl/build'), 10 | watchRTL = require('./../rtl/watch') 11 | ; 12 | 13 | gulp.task('watch-rtl', 'Build all files as RTL', watchRTL); 14 | gulp.task('build-rtl', 'Watch files as RTL ', buildRTL); 15 | 16 | }; 17 | -------------------------------------------------------------------------------- /semantic/tasks/config/admin/github.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | GitHub Login 3 | *******************************/ 4 | /* 5 | Logs into GitHub using OAuth 6 | */ 7 | 8 | var 9 | fs = require('fs'), 10 | path = require('path'), 11 | githubAPI = require('github'), 12 | 13 | // stores oauth info for GitHub API 14 | oAuthConfig = path.join(__dirname, 'oauth.js'), 15 | oAuth = fs.existsSync(oAuthConfig) 16 | ? require(oAuthConfig) 17 | : false, 18 | github 19 | ; 20 | 21 | if(!oAuth) { 22 | console.error('Must add oauth token for GitHub in tasks/config/admin/oauth.js'); 23 | } 24 | 25 | github = new githubAPI({ 26 | version : '3.0.0', 27 | debug : true, 28 | protocol : 'https', 29 | timeout : 5000 30 | }); 31 | 32 | github.authenticate({ 33 | type: 'oauth', 34 | token: oAuth.token 35 | }); 36 | 37 | module.exports = github; 38 | -------------------------------------------------------------------------------- /semantic/tasks/config/admin/oauth.example.js: -------------------------------------------------------------------------------- 1 | /* 2 | Used to import GitHub Auth Token 3 | To Automate GitHub Updates 4 | */ 5 | 6 | module.exports = { 7 | token : 'AN-OAUTH2-TOKEN', 8 | username : 'github-username', 9 | name : 'Your Name', 10 | email : 'user@email.com' 11 | }; -------------------------------------------------------------------------------- /semantic/tasks/config/admin/templates/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Component", 3 | "description" : "Component distribution", 4 | "homepage" : "http://www.semantic-ui.com", 5 | "author": { 6 | "name" : "Jack Lukic", 7 | "web" : "http://www.jacklukic.com" 8 | }, 9 | "ignore": [ 10 | "./index.js" 11 | ], 12 | "keywords": [ 13 | "semantic", 14 | "ui", 15 | "css3", 16 | "framework" 17 | ], 18 | "license" : [ 19 | "http://semantic-ui.mit-license.org/" 20 | ], 21 | "ignore": [ 22 | "docs", 23 | "node", 24 | "server", 25 | "spec", 26 | "src", 27 | "test" 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /semantic/tasks/config/admin/templates/component-package.js: -------------------------------------------------------------------------------- 1 | 2 | Package.describe({ 3 | name : 'semantic:ui-{component}', 4 | summary : 'Semantic UI - {Component}: Single component release', 5 | version : '{version}', 6 | git : 'git://github.com/Semantic-Org/UI-{Component}.git', 7 | }); 8 | 9 | Package.onUse(function(api) { 10 | api.versionsFrom('1.0'); 11 | api.addFiles([ 12 | {files} 13 | ], 'client'); 14 | }); 15 | -------------------------------------------------------------------------------- /semantic/tasks/config/admin/templates/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "semantic/ui", 3 | "description" : "Semantic empowers designers and developers by creating a shared vocabulary for UI.", 4 | "homepage" : "http://www.semantic-ui.com", 5 | "authors": [ 6 | { 7 | "name" : "Jack Lukic", 8 | "email": "jacklukic@gmail.com", 9 | "web" : "http://www.jacklukic.com", 10 | "role" : "Creator" 11 | } 12 | ], 13 | "keywords": [ 14 | "semantic", 15 | "ui", 16 | "css", 17 | "framework" 18 | ], 19 | "license" : "MIT" 20 | } -------------------------------------------------------------------------------- /semantic/tasks/config/admin/templates/css-package.js: -------------------------------------------------------------------------------- 1 | var 2 | where = 'client' // Adds files only to the client 3 | ; 4 | 5 | Package.describe({ 6 | name : 'semantic:ui-css', 7 | summary : 'Semantic UI - CSS Release of Semantic UI', 8 | version : '{version}', 9 | git : 'git://github.com/Semantic-Org/Semantic-UI-CSS.git', 10 | }); 11 | 12 | Package.onUse(function(api) { 13 | 14 | api.versionsFrom('1.0'); 15 | 16 | api.use('jquery', 'client'); 17 | 18 | api.addFiles([ 19 | // icons 20 | 'themes/default/assets/fonts/icons.eot', 21 | 'themes/default/assets/fonts/icons.svg', 22 | 'themes/default/assets/fonts/icons.ttf', 23 | 'themes/default/assets/fonts/icons.woff', 24 | 'themes/default/assets/fonts/icons.woff2', 25 | 26 | // flags 27 | 'themes/default/assets/images/flags.png', 28 | 29 | // release 30 | 'semantic.css', 31 | 'semantic.js' 32 | ], 'client'); 33 | 34 | }); 35 | -------------------------------------------------------------------------------- /semantic/tasks/config/admin/templates/less-package.js: -------------------------------------------------------------------------------- 1 | var 2 | where = 'client' // Adds files only to the client 3 | ; 4 | 5 | Package.describe({ 6 | name : 'semantic:ui', 7 | summary : 'Semantic UI - LESS Release of Semantic UI', 8 | version : '{version}', 9 | git : 'git://github.com/Semantic-Org/Semantic-UI-LESS.git', 10 | }); 11 | 12 | Package.onUse(function(api) { 13 | 14 | api.versionsFrom('1.0'); 15 | api.use('less', 'client'); 16 | 17 | api.addFiles([ 18 | {files} 19 | ], 'client'); 20 | 21 | }); 22 | -------------------------------------------------------------------------------- /semantic/tasks/config/admin/templates/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "semantic", 3 | "version": "1.0.0", 4 | "title": "Semantic UI", 5 | "description": "Semantic empowers designers and developers by creating a shared vocabulary for UI.", 6 | "homepage": "http://www.semantic-ui.com", 7 | "author": "Jack Lukic ", 8 | "license": "MIT", 9 | "repository": { 10 | "type": "git", 11 | "url": "git://github.com/Semantic-Org/Semantic-UI.git" 12 | }, 13 | "bugs": { 14 | "url": "https://github.com/Semantic-Org/Semantic-UI/issues" 15 | }, 16 | "devDependencies": {} 17 | } 18 | -------------------------------------------------------------------------------- /semantic/tasks/version.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Version Task 3 | *******************************/ 4 | 5 | var 6 | release = require('./config/project/release') 7 | ; 8 | 9 | module.exports = function(callback) { 10 | console.log(release.title + ' ' + release.version); 11 | }; -------------------------------------------------------------------------------- /sonar-runner/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/sonar-runner/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /sonar-runner/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon May 22 11:29:34 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-bin.zip 7 | -------------------------------------------------------------------------------- /sonar-runner/settings.gradle: -------------------------------------------------------------------------------- 1 | /* 2 | * This settings file was generated by the Gradle 'init' task. 3 | * 4 | * The settings file is used to specify which projects to include in your build. 5 | * In a single project build this file can be empty or even removed. 6 | * 7 | * Detailed information about configuring a multi-project build in Gradle can be found 8 | * in the user guide at https://docs.gradle.org/3.5/userguide/multi_project_builds.html 9 | */ 10 | 11 | /* 12 | // To declare projects as part of a multi-project build use the 'include' method 13 | include 'shared' 14 | include 'api' 15 | include 'services:webservice' 16 | */ 17 | 18 | rootProject.name = 'sonarqube-scanner-gradle' 19 | -------------------------------------------------------------------------------- /src/actions/authActions.js: -------------------------------------------------------------------------------- 1 | import * as actionTypes from '../constants/actionTypes'; 2 | 3 | export const storeAuthData = (data) => ({ 4 | type: actionTypes.STORE_SSO_AUTH_DATA, 5 | data, 6 | }); 7 | 8 | export const storeUser = (user) => ({ 9 | type: actionTypes.STORE_USER, 10 | user, 11 | }); 12 | 13 | export const removeAuthDataAndUser = () => ({ 14 | type: actionTypes.SIGN_OUT, 15 | }); 16 | 17 | export const reauthenticate = () => ({ 18 | type: actionTypes.REAUTHENTICATE, 19 | }); 20 | 21 | export const setTimeoutForAuthentication = (timeoutId) => ({ 22 | type: actionTypes.SET_TIMEOUT_FOR_REAUTHENTICATION, 23 | timeoutId, 24 | }); 25 | -------------------------------------------------------------------------------- /src/actions/index.js: -------------------------------------------------------------------------------- 1 | // 2 | // MyRangeBC 3 | // 4 | // Copyright © 2018 Province of British Columbia 5 | // 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | // Unless required by applicable law or agreed to in writing, software 13 | // distributed under the License is distributed on an "AS IS" BASIS, 14 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | // See the License for the specific language governing permissions and 16 | // limitations under the License. 17 | // 18 | // Created by Kyubin Han. 19 | // 20 | export * from './storeActions'; 21 | export * from './networkActions'; 22 | export * from './authActions'; 23 | export * from './updateActions'; 24 | export * from './commonActions'; 25 | -------------------------------------------------------------------------------- /src/actions/networkActions.js: -------------------------------------------------------------------------------- 1 | import * as actionTypes from '../constants/actionTypes'; 2 | 3 | export const request = (reducer) => ({ 4 | name: reducer, 5 | type: actionTypes.REQUEST, 6 | }); 7 | 8 | export const success = (reducer, data) => ({ 9 | name: reducer, 10 | type: actionTypes.SUCCESS, 11 | data, 12 | }); 13 | 14 | export const successPagenated = (reducer, data) => ({ 15 | name: reducer, 16 | type: actionTypes.SUCCESS_PAGINATED, 17 | data, 18 | perPage: data.perPage, 19 | currentPage: data.currentPage, 20 | totalItems: data.totalItems, 21 | totalPages: data.totalPages, 22 | }); 23 | 24 | export const error = (reducer, errorResponse) => ({ 25 | name: reducer, 26 | type: actionTypes.ERROR, 27 | errorResponse, 28 | }); 29 | -------------------------------------------------------------------------------- /src/actions/storeActions.js: -------------------------------------------------------------------------------- 1 | import * as actionTypes from '../constants/actionTypes'; 2 | 3 | export const storeAgreements = (payload) => ({ 4 | type: actionTypes.STORE_AGREEMENTS, 5 | payload, 6 | }); 7 | 8 | export const storePlan = (payload) => ({ 9 | type: actionTypes.STORE_PLAN, 10 | payload, 11 | }); 12 | 13 | export const storeZones = (payload) => ({ 14 | type: actionTypes.STORE_ZONES, 15 | payload, 16 | }); 17 | 18 | export const storeReferences = (payload) => ({ 19 | type: actionTypes.STORE_REFERENCES, 20 | payload, 21 | }); 22 | 23 | export const storeUsers = (payload) => ({ 24 | type: actionTypes.STORE_USERS, 25 | payload, 26 | }); 27 | 28 | export const storeClients = (payload) => ({ 29 | type: actionTypes.STORE_CLIENTS, 30 | payload, 31 | }); 32 | 33 | export const storeAgreementWithAllPlans = (payload) => ({ 34 | type: actionTypes.STORE_AGREEMENT_WITH_ALL_PLANS, 35 | payload, 36 | }); 37 | -------------------------------------------------------------------------------- /src/api/emailtemplate.js: -------------------------------------------------------------------------------- 1 | import * as API from '../constants/api'; 2 | import { getAuthHeaderConfig, axios } from '../utils'; 3 | 4 | export const updateEmailTemplate = async (templateId, name, fromEmail, subject, body) => { 5 | return axios.put( 6 | API.UPDATE_EMAIL_TEMPLATE(templateId), 7 | { 8 | name: name, 9 | fromEmail: fromEmail, 10 | subject: subject, 11 | body: body, 12 | }, 13 | getAuthHeaderConfig(), 14 | ); 15 | }; 16 | -------------------------------------------------------------------------------- /src/api/upload.js: -------------------------------------------------------------------------------- 1 | import { axios, getAuthHeaderConfig } from '../utils'; 2 | import { GET_SIGNED_URL } from '../constants/api'; 3 | 4 | export const getSignedUploadUrl = async (fileName) => { 5 | const res = await axios.get(GET_SIGNED_URL(fileName), getAuthHeaderConfig()); 6 | return res.data.url; 7 | }; 8 | -------------------------------------------------------------------------------- /src/components/assignRolesAndDistrictsPage/index.css: -------------------------------------------------------------------------------- 1 | .step2-container { 2 | display: flex; 3 | } -------------------------------------------------------------------------------- /src/components/common/Avatar.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import PropTypes from 'prop-types'; 3 | import classnames from 'classnames'; 4 | import { getUserInitial } from '../../utils'; 5 | 6 | const propTypes = { 7 | user: PropTypes.shape({}), 8 | className: PropTypes.string, 9 | }; 10 | 11 | const defaultProps = { 12 | user: { 13 | familyName: 'N', 14 | givenName: 'P', 15 | }, 16 | className: '', 17 | }; 18 | 19 | const Avatar = ({ className, user }) => ( 20 |
21 |
{getUserInitial(user)}
22 |
23 | ); 24 | 25 | Avatar.propTypes = propTypes; 26 | Avatar.defaultProps = defaultProps; 27 | export default Avatar; 28 | -------------------------------------------------------------------------------- /src/components/common/Avatar.story.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | import Avatar from './Avatar'; 6 | 7 | storiesOf('Avatar', module) 8 | .add('Default', () => ) 9 | .add('with user prop', () => ); 10 | -------------------------------------------------------------------------------- /src/components/common/ErrorBoundary.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ErrorPage from './ErrorPage'; 3 | 4 | class ErrorBoundary extends React.Component { 5 | constructor(props) { 6 | super(props); 7 | this.state = { hasError: false, error: null }; 8 | } 9 | 10 | static getDerivedStateFromError(error) { 11 | // Update state so the next render will show the fallback UI. 12 | return { hasError: true, error }; 13 | } 14 | 15 | componentDidCatch(error) { 16 | console.error(error); 17 | } 18 | 19 | render() { 20 | if (this.state.hasError) { 21 | return ; 22 | } 23 | 24 | return this.props.children; 25 | } 26 | } 27 | 28 | export default ErrorBoundary; 29 | -------------------------------------------------------------------------------- /src/components/common/ErrorMessage.js: -------------------------------------------------------------------------------- 1 | import React, { Component, Fragment } from 'react'; 2 | import PropTypes from 'prop-types'; 3 | import { Message, Icon } from 'semantic-ui-react'; 4 | 5 | class ErrorMessage extends Component { 6 | static propTypes = { 7 | message: PropTypes.string.isRequired, 8 | warning: PropTypes.bool, 9 | }; 10 | 11 | static defaultProps = { 12 | warning: false, 13 | }; 14 | 15 | render() { 16 | const { message, warning, ...rest } = this.props; 17 | 18 | return ( 19 | 25 | 26 | {message} 27 | 28 | } 29 | /> 30 | ); 31 | } 32 | } 33 | 34 | export default ErrorMessage; 35 | -------------------------------------------------------------------------------- /src/components/common/ErrorMessage.story.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | import ErrorMessage from './ErrorMessage'; 6 | 7 | storiesOf('Error Message', module) 8 | .add('Message', () => ) 9 | 10 | .add('With warning', () => ); 11 | -------------------------------------------------------------------------------- /src/components/common/ErrorPage.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import PropTypes from 'prop-types'; 3 | import { Icon } from 'semantic-ui-react'; 4 | import { PrimaryButton } from './index'; 5 | 6 | const propTypes = { 7 | message: PropTypes.string.isRequired, 8 | }; 9 | 10 | const ErrorPage = ({ message }) => { 11 | return ( 12 |
13 | 14 |
15 | {message} 16 |
17 |
18 | window.location.reload(true)} content="Reload" /> 19 |
20 |
21 | ); 22 | }; 23 | 24 | ErrorPage.propTypes = propTypes; 25 | export default ErrorPage; 26 | -------------------------------------------------------------------------------- /src/components/common/ErrorPage.story.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import { storiesOf } from '@storybook/react'; 4 | import ErrorPage from './ErrorPage'; 5 | 6 | storiesOf('Error Page', module).add('Message', () => ( 7 | 16 | )); 17 | -------------------------------------------------------------------------------- /src/components/common/InfoTip.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Icon, Popup } from 'semantic-ui-react'; 3 | 4 | const style = { 5 | backgroundColor: '#002C71', 6 | color: 'white', 7 | }; 8 | 9 | const InfoTip = ({ header, content, size = 'small' }) => ( 10 | } 15 | style={style} 16 | header={header} 17 | content={content} 18 | /> 19 | ); 20 | 21 | export default InfoTip; 22 | -------------------------------------------------------------------------------- /src/components/common/InfoTip.story.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { storiesOf } from '@storybook/react'; 3 | import { withKnobs, text } from '@storybook/addon-knobs'; 4 | 5 | import InfoTip from './InfoTip'; 6 | 7 | const stories = storiesOf('InfoTip', module); 8 | stories.addDecorator(withKnobs); 9 | stories.add('default', () => ); 10 | stories.add('with knobs', () => ( 11 | 12 | )); 13 | -------------------------------------------------------------------------------- /src/components/common/InputModal.story.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { storiesOf } from '@storybook/react'; 3 | import { action } from '@storybook/addon-actions'; 4 | 5 | import InputModal from './InputModal'; 6 | 7 | storiesOf('InputModal', module).add('default', () => ( 8 | 9 | )); 10 | -------------------------------------------------------------------------------- /src/components/common/Loading.story.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import { storiesOf } from '@storybook/react'; 4 | import Loading from './Loading'; 5 | 6 | storiesOf('Loading', module) 7 | .add('Default', () => ) 8 | 9 | .add('Not inverted', () => ) 10 | 11 | .add('Not active', () => ) 12 | 13 | .add('Only spinner is true', () => ) 14 | 15 | .add('Only spinner is false', () => ) 16 | 17 | .add('Small', () => ) 18 | 19 | .add('Medium', () => ); 20 | -------------------------------------------------------------------------------- /src/components/common/LocationButton.story.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import { storiesOf } from '@storybook/react'; 4 | import LocationButton from './LocationButton'; 5 | import { action } from '@storybook/addon-actions'; 6 | 7 | storiesOf('LocationButton', module).add('Default', () => ( 8 | Get Location 9 | )); 10 | -------------------------------------------------------------------------------- /src/components/common/MultiParagraphDisplay.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const MultiParagraphDisplay = ({ value, ...props }) => ( 4 | <> 5 | 6 |
7 | {value 8 | .toString() 9 | .split('\n') 10 | .map((line, i) => ( 11 |

{line}

12 | ))} 13 |
14 | 15 | ); 16 | 17 | export default MultiParagraphDisplay; 18 | -------------------------------------------------------------------------------- /src/components/common/NetworkStatus.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { useNetworkStatus, usePlanSyncedStatus } from '../../utils/hooks/network'; 3 | 4 | const NetworkStatus = ({ planId }) => { 5 | const online = useNetworkStatus(); 6 | const synced = usePlanSyncedStatus(planId); 7 | 8 | return ( 9 |
10 | 11 | 12 | {online ? 'Online' : 'Offline'} ({synced ? 'Synced' : 'Not synced'}) 13 | 14 |
15 | ); 16 | }; 17 | 18 | export default NetworkStatus; 19 | -------------------------------------------------------------------------------- /src/components/common/PrimaryButton.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import PropTypes from 'prop-types'; 3 | import { Button } from 'semantic-ui-react'; 4 | 5 | const propTypes = { 6 | inverted: PropTypes.bool, 7 | children: PropTypes.node, 8 | }; 9 | 10 | const PrimaryButton = ({ inverted = false, children, ...props }) => { 11 | if (inverted) { 12 | return ( 13 |
14 | 17 |
18 | ); 19 | } 20 | 21 | return ( 22 | 25 | ); 26 | }; 27 | 28 | PrimaryButton.propTypes = propTypes; 29 | 30 | export default PrimaryButton; 31 | -------------------------------------------------------------------------------- /src/components/common/SortableTableHeaderCell.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { TableHeaderCell } from 'semantic-ui-react'; 3 | 4 | const SortableTableHeaderCell = ({ column, children, currentSortBy, currentSortOrder, onClick, noSort = false }) => { 5 | if (noSort) return {children}; 6 | return ( 7 | onClick(column)}> 8 | {children} 9 | 10 | ); 11 | }; 12 | export default SortableTableHeaderCell; 13 | -------------------------------------------------------------------------------- /src/components/common/Status.story.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import Status from './Status'; 4 | import { PLAN_STATUS, USER_ROLE } from '../../constants/variables'; 5 | 6 | import { storiesOf } from '@storybook/react'; 7 | import { withKnobs, select } from '@storybook/addon-knobs'; 8 | 9 | const userPropOptions = { 10 | 'Agreement Holder': { roles: [USER_ROLE[4]] }, 11 | 'Not Agreement Holder': { roles: [] }, 12 | }; 13 | 14 | const statusPropOptions = Object.fromEntries(Object.entries(PLAN_STATUS).map(([status, code]) => [status, { code }])); 15 | 16 | storiesOf('Status', module) 17 | .addDecorator(withKnobs) 18 | .add('With Knobs', () => ( 19 | 23 | )); 24 | -------------------------------------------------------------------------------- /src/components/common/TextField.story.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import { storiesOf } from '@storybook/react'; 4 | import { withKnobs, text, boolean } from '@storybook/addon-knobs'; 5 | import { action } from '@storybook/addon-actions'; 6 | 7 | import TextField from './TextField'; 8 | 9 | storiesOf('Text Field', module) 10 | .add('With label', () => ) 11 | .addDecorator(withKnobs) 12 | .add('With knobs', () => ( 13 | 20 | )); 21 | -------------------------------------------------------------------------------- /src/components/common/form/Effect.js: -------------------------------------------------------------------------------- 1 | import { useEffect } from 'react'; 2 | import { connect } from 'formik'; 3 | 4 | const Effect = ({ onChange, formik }) => { 5 | const { values } = formik; 6 | 7 | if (onChange) { 8 | useEffect(() => { 9 | onChange(values); 10 | }, [values]); 11 | } 12 | 13 | return null; 14 | }; 15 | 16 | export default connect(Effect); 17 | -------------------------------------------------------------------------------- /src/components/common/form/ErrorMessage.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const ErrorMessage = ({ message }) => {message}; 4 | 5 | export default ErrorMessage; 6 | -------------------------------------------------------------------------------- /src/components/common/form/HelpfulDropdown.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Dropdown } from 'formik-semantic-ui'; 3 | import { Popup, Icon } from 'semantic-ui-react'; 4 | 5 | const HelpfulDropdown = ({ help, ...props }) => { 6 | return ( 7 | <> 8 | 12 | {props.label && } 13 | } /> 14 | 15 | } 16 | /> 17 | 18 | ); 19 | }; 20 | 21 | export default HelpfulDropdown; 22 | -------------------------------------------------------------------------------- /src/components/common/form/HelpfulDropdown.story.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import HelpfulDropdown from './HelpfulDropdown'; 3 | import { Form } from 'formik-semantic-ui'; 4 | 5 | export default { 6 | title: 'HelpfulDropdown', 7 | }; 8 | 9 | const options = [ 10 | { value: 'en', key: 'en', text: 'English' }, 11 | { value: 'es', key: 'es', text: 'Spanish' }, 12 | { value: 'fr', key: 'fr', text: 'French' }, 13 | ]; 14 | 15 | export const withInfoText = () => ( 16 |
( 19 | 20 | )} 21 | /> 22 | ); 23 | -------------------------------------------------------------------------------- /src/components/common/form/InputRef.js: -------------------------------------------------------------------------------- 1 | import React, { Fragment } from 'react'; 2 | import { Ref } from 'semantic-ui-react'; 3 | 4 | const findInput = (cb, el) => el && cb(el.querySelector('input')); 5 | 6 | export const NullRef = ({ children }) => {children}; 7 | 8 | export const InputRef = ({ inputRef, children }) => { 9 | const RefWrapper = inputRef ? Ref : NullRef; 10 | return findInput(inputRef, el)}>{children}; 11 | }; 12 | -------------------------------------------------------------------------------- /src/components/common/form/OnSubmitValidationError.js: -------------------------------------------------------------------------------- 1 | import { useEffect } from 'react'; 2 | import { connect } from 'formik'; 3 | 4 | const OnSubmitValidationError = ({ callback, formik }) => { 5 | useEffect(() => { 6 | if (formik.dirty && formik.submitCount > 0 && !formik.isSubmitting && !formik.isValid) { 7 | callback(formik); 8 | } 9 | }, [formik.submitCount, formik.isSubmitting, formik.isValid, formik.dirty]); 10 | 11 | return null; 12 | }; 13 | 14 | export default connect(OnSubmitValidationError); 15 | -------------------------------------------------------------------------------- /src/components/decorators/index.js: -------------------------------------------------------------------------------- 1 | export { default as providerDecorator } from './providerDecorator'; 2 | export { default as marginDecorator } from './marginDecorator'; 3 | -------------------------------------------------------------------------------- /src/components/decorators/marginDecorator.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const marginDecorator = (story) =>
{story()}
; 4 | 5 | export default marginDecorator; 6 | -------------------------------------------------------------------------------- /src/components/decorators/providerDecorator.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Provider } from 'react-redux'; 3 | import configureStore from '../../configureStore'; 4 | 5 | const store = configureStore(); 6 | 7 | const providerDecorator = (story) => {story()}; 8 | 9 | export default providerDecorator; 10 | -------------------------------------------------------------------------------- /src/components/loginPage/BrowserWarningHeader.story.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | import BrowserWarningHeader from './BrowserWarningHeader'; 6 | 7 | storiesOf('loginPage/BrowserWarningHeader', module).add('Default', () => ); 8 | -------------------------------------------------------------------------------- /src/components/loginPage/SignInBox.story.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import { storiesOf } from '@storybook/react'; 4 | import { action } from '@storybook/addon-actions'; 5 | 6 | import { SignInBox } from './SignInBox'; 7 | 8 | const stories = storiesOf('loginPage/SignInBox', module); 9 | stories.add('Default', () => ); 10 | stories.add('isFetchingUser', () => ); 11 | stories.add('user fetched', () => ); 12 | stories.add('error fetching user', () => ( 13 | 19 | )); 20 | -------------------------------------------------------------------------------- /src/components/loginPage/SignInButtons.story.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | import SignInButtons from './SignInButtons'; 6 | 7 | const stories = storiesOf('loginPage/SignInButtons', module); 8 | stories.add('Default', () => ); 9 | -------------------------------------------------------------------------------- /src/components/loginPage/SignInErrorMessage.story.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import { storiesOf } from '@storybook/react'; 4 | import { action } from '@storybook/addon-actions'; 5 | 6 | import SignInErrorMessage from './SignInErrorMessage'; 7 | 8 | const stories = storiesOf('loginPage/SignInErrorMessage', module); 9 | stories.add('Default', () => ); 10 | stories.add('error fetching user', () => ( 11 | 15 | )); 16 | stories.add('non 403 error', () => ( 17 | 18 | )); 19 | -------------------------------------------------------------------------------- /src/components/loginPage/index.story.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import { storiesOf } from '@storybook/react'; 4 | import { providerDecorator } from '../decorators'; 5 | 6 | import { LoginPage } from './'; 7 | 8 | const stories = storiesOf('loginPage/LoginPage', module); 9 | stories.addDecorator(providerDecorator); 10 | stories.add('Default', () => ); 11 | -------------------------------------------------------------------------------- /src/components/rangeUsePlanPage/BackBtn.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import PropTypes from 'prop-types'; 3 | import { Icon } from 'semantic-ui-react'; 4 | import { useHistory } from 'react-router-dom'; 5 | import { HOME } from '../../constants/routes'; 6 | 7 | const BackBtn = ({ className = '', agreementId }) => { 8 | const history = useHistory(); 9 | 10 | const { page = 0, prevSearch } = history.location.state || {}; 11 | 12 | const search = prevSearch ?? `?selected=${agreementId}`; 13 | 14 | return ( 15 |
history.push(`${HOME}/${page === 0 ? '' : page + 1}${search}`)} 18 | role="button" 19 | tabIndex="0" 20 | > 21 | 22 |
23 | ); 24 | }; 25 | 26 | BackBtn.propTypes = { 27 | agreementSearchParams: PropTypes.shape({}), 28 | className: PropTypes.string, 29 | }; 30 | 31 | export default BackBtn; 32 | -------------------------------------------------------------------------------- /src/components/rangeUsePlanPage/DownloadPDFBtn.js: -------------------------------------------------------------------------------- 1 | import React, { Fragment } from 'react'; 2 | import { Icon, Menu } from 'semantic-ui-react'; 3 | import PropTypes from 'prop-types'; 4 | import { DOWNLOAD_PDF } from '../../constants/strings'; 5 | 6 | const propTypes = { 7 | onClick: PropTypes.func.isRequired, 8 | disabled: PropTypes.bool, 9 | }; 10 | 11 | const defaultProps = { 12 | disabled: false, 13 | }; 14 | 15 | const DownloadPDFBtn = ({ onClick, disabled }) => ( 16 | 17 | 18 | 19 | {DOWNLOAD_PDF} 20 | 21 | 22 | ); 23 | 24 | DownloadPDFBtn.propTypes = propTypes; 25 | DownloadPDFBtn.defaultProps = defaultProps; 26 | export default DownloadPDFBtn; 27 | -------------------------------------------------------------------------------- /src/components/rangeUsePlanPage/grazingSchedules/GrazingScheduleEntryRow.css: -------------------------------------------------------------------------------- 1 | .rup__grazing-schedule__row input { 2 | width: inherit !important; 3 | } -------------------------------------------------------------------------------- /src/components/rangeUsePlanPage/pageForAH/tab/LeftBtn.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import PropTypes from 'prop-types'; 3 | import { PrimaryButton } from '../../../common'; 4 | 5 | const propTypes = { 6 | onClick: PropTypes.func.isRequired, 7 | content: PropTypes.string.isRequired, 8 | }; 9 | 10 | const LeftBtn = ({ onClick, content }) => { 11 | return ; 12 | }; 13 | 14 | LeftBtn.propTypes = propTypes; 15 | export default LeftBtn; 16 | -------------------------------------------------------------------------------- /src/components/rangeUsePlanPage/pageForAH/tab/RightBtn.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import PropTypes from 'prop-types'; 3 | import { PrimaryButton } from '../../../common'; 4 | 5 | const propTypes = { 6 | onClick: PropTypes.func.isRequired, 7 | disabled: PropTypes.bool, 8 | loading: PropTypes.bool, 9 | content: PropTypes.string.isRequired, 10 | }; 11 | 12 | const defaultProps = { 13 | disabled: false, 14 | loading: false, 15 | }; 16 | 17 | const RightBtn = ({ onClick, disabled, content, loading }) => { 18 | return ( 19 | 27 | ); 28 | }; 29 | 30 | RightBtn.propTypes = propTypes; 31 | RightBtn.defaultProps = defaultProps; 32 | export default RightBtn; 33 | -------------------------------------------------------------------------------- /src/components/rangeUsePlanPage/pageForAH/tab/TabTemplate.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import classnames from 'classnames'; 3 | import PropTypes from 'prop-types'; 4 | 5 | class TabTemplate extends Component { 6 | static propTypes = { 7 | title: PropTypes.string.isRequired, 8 | actions: PropTypes.node.isRequired, 9 | content: PropTypes.node.isRequired, 10 | isActive: PropTypes.bool.isRequired, 11 | }; 12 | 13 | render() { 14 | const { title, actions, content, isActive } = this.props; 15 | 16 | return ( 17 |
22 |
{title}
23 | {content} 24 |
{actions}
25 |
26 | ); 27 | } 28 | } 29 | 30 | export default TabTemplate; 31 | -------------------------------------------------------------------------------- /src/components/rangeUsePlanPage/pageForStaff/props.js: -------------------------------------------------------------------------------- 1 | import PropTypes from 'prop-types'; 2 | 3 | export const propTypes = { 4 | agreement: PropTypes.shape({ zone: PropTypes.object }), 5 | plan: PropTypes.shape({}), 6 | user: PropTypes.shape({}).isRequired, 7 | references: PropTypes.shape({}).isRequired, 8 | pasturesMap: PropTypes.shape({}).isRequired, 9 | grazingSchedulesMap: PropTypes.shape({}).isRequired, 10 | ministerIssuesMap: PropTypes.shape({}).isRequired, 11 | planStatusHistoryMap: PropTypes.shape({}).isRequired, 12 | additionalRequirementsMap: PropTypes.shape({}).isRequired, 13 | managementConsiderationsMap: PropTypes.shape({}).isRequired, 14 | fetchPlan: PropTypes.func.isRequired, 15 | isFetchingPlan: PropTypes.bool.isRequired, 16 | updateRUP: PropTypes.func.isRequired, 17 | createOrUpdateRUPGrazingSchedule: PropTypes.func.isRequired, 18 | }; 19 | 20 | export { defaultProps } from '../pageForAH/props'; 21 | -------------------------------------------------------------------------------- /src/components/rangeUsePlanPage/plantCommunities/monitoringArea/AddMonitoringAreaButton.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import PropTypes from 'prop-types'; 3 | import { Button } from 'semantic-ui-react'; 4 | 5 | const AddMonitoringAreaButton = ({ onClick }) => { 6 | return ( 7 | <> 8 | 12 | 13 | ); 14 | }; 15 | 16 | AddMonitoringAreaButton.propTypes = { 17 | onClick: PropTypes.func.isRequired, 18 | }; 19 | 20 | export default AddMonitoringAreaButton; 21 | -------------------------------------------------------------------------------- /src/components/rangeUsePlanPage/plantCommunities/monitoringArea/MonitoringAreaBox.story.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { storiesOf } from '@storybook/react'; 3 | import { Form } from 'formik-semantic-ui'; 4 | import { action } from '@storybook/addon-actions'; 5 | 6 | import MonitoringAreaBox from './MonitoringAreaBox'; 7 | 8 | const monitoringArea = { 9 | latitude: '', 10 | location: 'Location', 11 | longitude: '', 12 | name: 'My area', 13 | purposes: [], 14 | rangelandHealth: '', 15 | }; 16 | 17 | storiesOf('rangeUsePlanPage/plantCommunities/monitoringAreas/MonitoringAreaBox', module).add('default', () => ( 18 | ( 21 | 27 | )} 28 | /> 29 | )); 30 | -------------------------------------------------------------------------------- /src/components/rangeUsePlanPage/usage/UsageTableRow.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import PropTypes from 'prop-types'; 3 | import { Table } from 'semantic-ui-react'; 4 | 5 | class UsageTableRow extends Component { 6 | static propTypes = { 7 | singleUsage: PropTypes.shape({}).isRequired, 8 | }; 9 | 10 | render() { 11 | const { singleUsage } = this.props; 12 | const { year, authorizedAum, temporaryIncrease, totalAnnualUse, totalNonUse } = singleUsage; 13 | 14 | return ( 15 | 16 | {year} 17 | {authorizedAum} 18 | {temporaryIncrease} 19 | {totalNonUse} 20 | {totalAnnualUse} 21 | 22 | ); 23 | } 24 | } 25 | 26 | export default UsageTableRow; 27 | -------------------------------------------------------------------------------- /src/components/rangeUsePlanPage/usage/index.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import PropTypes from 'prop-types'; 3 | import UsageTable from './UsageTable'; 4 | import { InfoTip } from '../../common'; 5 | import { USAGE, USAGE_TIP } from '../../../constants/strings'; 6 | 7 | class Usage extends Component { 8 | static propTypes = { 9 | plan: PropTypes.shape({}).isRequired, 10 | usage: PropTypes.arrayOf(PropTypes.object).isRequired, 11 | }; 12 | 13 | render() { 14 | const { usage, plan } = this.props; 15 | 16 | return ( 17 |
18 |
19 |
{USAGE}
20 | 21 |
22 |
23 | 24 |
25 | ); 26 | } 27 | } 28 | 29 | export default Usage; 30 | -------------------------------------------------------------------------------- /src/components/router/LoadableComponent.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import loadable from '@loadable/component'; 3 | import { Loading } from '../common'; 4 | 5 | /* 6 | Code Splitting with React Router 7 | https://serverless-stack.com/chapters/code-splitting-in-create-react-app.html 8 | */ 9 | export const LoadableComponent = (cb) => 10 | loadable(cb, { 11 | fallback: , 12 | }); 13 | -------------------------------------------------------------------------------- /src/components/router/PublicRoute.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import PropTypes from 'prop-types'; 3 | import { Route, Redirect } from 'react-router-dom'; 4 | import { HOME } from '../../constants/routes'; 5 | 6 | const propTypes = { 7 | component: PropTypes.elementType, 8 | user: PropTypes.object, 9 | }; 10 | 11 | const PublicRoute = ({ component: Component, user, ...rest }) => ( 12 | { 15 | if (user) { 16 | return ; 17 | } 18 | return ; 19 | }} 20 | /> 21 | ); 22 | 23 | PublicRoute.propTypes = propTypes; 24 | 25 | export default PublicRoute; 26 | -------------------------------------------------------------------------------- /src/components/selectRangeUsePlanPage/AHWarning.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { useUser } from '../../providers/UserProvider'; 3 | import { ErrorMessage } from '../common'; 4 | import { NO_CLIENT_NUMBER_ASSIGNED } from '../../constants/strings'; 5 | import { isUserAgreementHolder } from '../../utils'; 6 | 7 | const AHWarning = () => { 8 | const user = useUser(); 9 | const hasClients = user && user.clients?.length !== 0; 10 | 11 | if (isUserAgreementHolder(user) && !hasClients) { 12 | return ; 13 | } 14 | 15 | return null; 16 | }; 17 | 18 | export default AHWarning; 19 | -------------------------------------------------------------------------------- /src/components/selectRangeUsePlanPage/CopyPlanMenuItem.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { MenuItem } from '@material-ui/core'; 3 | import { saveDataInLocalStorage } from '../../utils'; 4 | 5 | const CopyPlanMenuItem = ({ planId, agreementId, menuText, handleClose }) => { 6 | return ( 7 | { 9 | saveDataInLocalStorage('copyPlanInfo', { planId, agreementId }); 10 | e.stopPropagation(); 11 | handleClose(e); 12 | }} 13 | > 14 | {menuText} 15 | 16 | ); 17 | }; 18 | 19 | export default CopyPlanMenuItem; 20 | -------------------------------------------------------------------------------- /src/components/selectRangeUsePlanPage/CreateReplacementPlan.js: -------------------------------------------------------------------------------- 1 | import { useHistory } from 'react-router-dom'; 2 | import React from 'react'; 3 | import { MenuItem } from '@material-ui/core'; 4 | import { createReplacementPlan } from '../../api'; 5 | import { RANGE_USE_PLAN } from '../../constants/routes'; 6 | 7 | const CreateReplacementPlan = ({ planId }) => { 8 | const history = useHistory(); 9 | return ( 10 | { 12 | e.stopPropagation(); 13 | const replacementPlan = await createReplacementPlan(planId); 14 | history.push(`${RANGE_USE_PLAN}/${replacementPlan.id}`); 15 | }} 16 | > 17 | Create Replacement Plan 18 | 19 | ); 20 | }; 21 | 22 | export default CreateReplacementPlan; 23 | -------------------------------------------------------------------------------- /src/components/selectRangeUsePlanPage/Error.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { PrimaryButton } from '../common'; 3 | import * as strings from '../../constants/strings'; 4 | 5 | const Error = ({ onRetry }) => ( 6 |
7 |
8 | {strings.ERROR_OCCUR} 9 | 10 | Retry 11 | 12 |
13 |
14 | ); 15 | 16 | export default Error; 17 | -------------------------------------------------------------------------------- /src/components/selectRangeUsePlanPage/NewPlanMenuItem.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { useHistory } from 'react-router-dom'; 3 | import { createNewPlan } from '../../api'; 4 | import { RANGE_USE_PLAN } from '../../constants/routes'; 5 | import { MenuItem } from '@material-ui/core'; 6 | 7 | const NewPlanMenuItem = ({ agreement }) => { 8 | const history = useHistory(); 9 | 10 | const handleClick = (e) => { 11 | e.stopPropagation(); 12 | const plan = createNewPlan(agreement); 13 | history.push(`${RANGE_USE_PLAN}/${plan.id}`); 14 | }; 15 | 16 | return New plan; 17 | }; 18 | 19 | export default NewPlanMenuItem; 20 | -------------------------------------------------------------------------------- /src/components/selectRangeUsePlanPage/ViewPlanMenuItem.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { MenuItem } from '@material-ui/core'; 3 | import { RANGE_USE_PLAN } from '../../constants/routes'; 4 | import { Link } from 'react-router-dom'; 5 | 6 | const ViewPlanMenuItem = ({ planId, currentPage, menuText }) => { 7 | return ( 8 | 19 | {menuText} 20 | 21 | ); 22 | }; 23 | 24 | export default ViewPlanMenuItem; 25 | -------------------------------------------------------------------------------- /src/components/theme.js: -------------------------------------------------------------------------------- 1 | import { createTheme } from '@material-ui/core'; 2 | 3 | const theme = createTheme({ 4 | typography: { 5 | fontFamily: 'Lato, sans-serif', 6 | fontSize: 16, 7 | }, 8 | palette: { 9 | primary: { 10 | main: '#002C71', 11 | }, 12 | secondary: { 13 | main: '#F3B229', 14 | }, 15 | }, 16 | overrides: { 17 | MuiButton: { 18 | disableElevation: true, 19 | root: { 20 | textTransform: 'none', 21 | }, 22 | containedPrimary: { 23 | fontWeight: 'bold', 24 | }, 25 | }, 26 | MuiButtonBase: { 27 | disableRipple: true, 28 | }, 29 | }, 30 | }); 31 | 32 | export default theme; 33 | -------------------------------------------------------------------------------- /src/constants/routes.js: -------------------------------------------------------------------------------- 1 | export const HOME = '/home'; 2 | export const LOGIN = '/login'; 3 | export const LOGOUT = '/logout'; 4 | export const RETURN_PAGE = '/return-page'; 5 | export const RANGE_USE_PLAN = '/range-use-plan'; 6 | export const EXPORT_PDF = '/export-pdf'; 7 | export const EXPORT_PDF_WITH_PARAM = '/range-use-plan/:planId/export-pdf/'; 8 | export const VIEW_PLAN_VERSIONS = '/range-use-plan/:planId/versions/:version?'; 9 | export const MANAGE_PLAN_AGENTS = '/range-use-plan/:planId/agents'; 10 | export const RANGE_USE_PLAN_WITH_PARAM = '/range-use-plan/:planId'; 11 | 12 | export const MANAGE_CLIENT = '/manage-client'; 13 | export const MERGE_ACCOUNT = '/merge-account'; 14 | export const EMAIL_TEMPLATE = '/email-template'; 15 | export const ASSIGN_ROLES_AND_DISTRICTS = '/assign-roles-and-districts'; 16 | export const ADMIN_ROUTES = [MANAGE_CLIENT, MERGE_ACCOUNT, EMAIL_TEMPLATE, ASSIGN_ROLES_AND_DISTRICTS]; 17 | -------------------------------------------------------------------------------- /src/providers/EditableProvider.js: -------------------------------------------------------------------------------- 1 | import React, { useContext } from 'react'; 2 | import PropTypes from 'prop-types'; 3 | 4 | export const EditableContext = React.createContext({}); 5 | 6 | export const useEditable = () => useContext(EditableContext); 7 | 8 | const EditableProvider = ({ children, editable }) => { 9 | return {children}; 10 | }; 11 | 12 | EditableProvider.propTypes = { 13 | children: PropTypes.node, 14 | }; 15 | 16 | export default EditableProvider; 17 | -------------------------------------------------------------------------------- /src/reducers/confirmModalReducer.js: -------------------------------------------------------------------------------- 1 | import { OPEN_CONFIRMATION_MODAL, CLOSE_CONFIRMATION_MODAL } from '../constants/actionTypes'; 2 | 3 | const openModal = (state, action) => { 4 | const modal = action.payload; 5 | return { 6 | ...state, 7 | [modal.id]: modal, 8 | }; 9 | }; 10 | 11 | const closeModal = (state, action) => { 12 | const { modalId } = action.payload; 13 | const newState = { ...state }; 14 | delete newState[modalId]; 15 | 16 | return newState; 17 | }; 18 | 19 | const confirmModalReducer = (state = {}, action) => { 20 | switch (action.type) { 21 | case OPEN_CONFIRMATION_MODAL: 22 | return openModal(state, action); 23 | case CLOSE_CONFIRMATION_MODAL: 24 | return closeModal(state, action); 25 | default: 26 | return state; 27 | } 28 | }; 29 | 30 | export const getConfirmationModalsMap = (state) => state; 31 | 32 | export default confirmModalReducer; 33 | -------------------------------------------------------------------------------- /src/reducers/inputModalReducer.js: -------------------------------------------------------------------------------- 1 | import { OPEN_INPUT_MODAL, CLOSE_INPUT_MODAL } from '../constants/actionTypes'; 2 | 3 | const openModal = (state, action) => { 4 | const modal = action.payload; 5 | 6 | return { 7 | ...modal, 8 | }; 9 | }; 10 | 11 | const inputModalReducer = (state = null, action) => { 12 | switch (action.type) { 13 | case OPEN_INPUT_MODAL: 14 | return openModal(state, action); 15 | case CLOSE_INPUT_MODAL: 16 | return null; 17 | default: 18 | return state; 19 | } 20 | }; 21 | 22 | export const getInputModal = (state) => state; 23 | 24 | export default inputModalReducer; 25 | -------------------------------------------------------------------------------- /src/reducers/planReducer/additionalRequirementsReducer.js: -------------------------------------------------------------------------------- 1 | import { STORE_PLAN } from '../../constants/actionTypes'; 2 | 3 | const storeAdditionalRequirements = (state, action) => { 4 | const { additionalRequirements } = action.payload.entities; 5 | 6 | return { 7 | ...state, 8 | ...additionalRequirements, 9 | }; 10 | }; 11 | 12 | const additionalRequirementsReducer = (state = {}, action) => { 13 | switch (action.type) { 14 | case STORE_PLAN: 15 | return storeAdditionalRequirements(state, action); 16 | default: 17 | return state; 18 | } 19 | }; 20 | 21 | export default additionalRequirementsReducer; 22 | -------------------------------------------------------------------------------- /src/reducers/planReducer/confirmationsReducer.js: -------------------------------------------------------------------------------- 1 | import { STORE_PLAN, CONFIRMATION_UPDATED } from '../../constants/actionTypes'; 2 | 3 | const storeConfirmations = (state, action) => { 4 | const { confirmations } = action.payload.entities; 5 | 6 | return { 7 | ...state, 8 | ...confirmations, 9 | }; 10 | }; 11 | 12 | const updateConfirmation = (state, action) => { 13 | const { confirmation } = action.payload; 14 | 15 | return { 16 | ...state, 17 | [confirmation.id]: confirmation, 18 | }; 19 | }; 20 | 21 | const confirmationsReducer = (state = {}, action) => { 22 | switch (action.type) { 23 | case STORE_PLAN: 24 | return storeConfirmations(state, action); 25 | case CONFIRMATION_UPDATED: 26 | return updateConfirmation(state, action); 27 | default: 28 | return state; 29 | } 30 | }; 31 | 32 | export default confirmationsReducer; 33 | -------------------------------------------------------------------------------- /src/reducers/planReducer/ministerIssuesReducer.js: -------------------------------------------------------------------------------- 1 | import { STORE_PLAN, MINISTER_ISSUE_UPDATED } from '../../constants/actionTypes'; 2 | 3 | const storeMinisterIssues = (state, action) => { 4 | const { ministerIssues } = action.payload.entities; 5 | 6 | return { 7 | ...state, 8 | ...ministerIssues, 9 | }; 10 | }; 11 | 12 | const updateMinisterissue = (state, action) => { 13 | const { ministerIssue } = action.payload; 14 | 15 | return { 16 | ...state, 17 | [ministerIssue.id]: ministerIssue, 18 | }; 19 | }; 20 | 21 | const ministerIssuesReducer = (state = {}, action) => { 22 | switch (action.type) { 23 | case STORE_PLAN: 24 | return storeMinisterIssues(state, action); 25 | case MINISTER_ISSUE_UPDATED: 26 | return updateMinisterissue(state, action); 27 | default: 28 | return state; 29 | } 30 | }; 31 | 32 | export default ministerIssuesReducer; 33 | -------------------------------------------------------------------------------- /src/reducers/planReducer/planStatusHistoryReducer.js: -------------------------------------------------------------------------------- 1 | import { STORE_PLAN, PLAN_STATUS_HISTORY_RECORD_ADDED } from '../../constants/actionTypes'; 2 | 3 | const storeStatusHistory = (state, action) => { 4 | const { planStatusHistory } = action.payload.entities; 5 | 6 | return { 7 | ...state, 8 | ...planStatusHistory, 9 | }; 10 | }; 11 | 12 | const addStatusHistoryRecord = (state, action) => { 13 | const { record } = action.payload; 14 | 15 | return { 16 | ...state, 17 | [record.id]: record, 18 | }; 19 | }; 20 | 21 | const planStatusHistoryReducer = (state = {}, action) => { 22 | switch (action.type) { 23 | case STORE_PLAN: 24 | return storeStatusHistory(state, action); 25 | case PLAN_STATUS_HISTORY_RECORD_ADDED: 26 | return addStatusHistoryRecord(state, action); 27 | default: 28 | return state; 29 | } 30 | }; 31 | 32 | export default planStatusHistoryReducer; 33 | -------------------------------------------------------------------------------- /src/reducers/toastReducer.js: -------------------------------------------------------------------------------- 1 | import { ADD_TOAST, REMOVE_TOAST } from '../constants/actionTypes'; 2 | 3 | const addToast = (state, action) => { 4 | const { toast } = action.payload; 5 | return { 6 | ...state, 7 | [toast.id]: toast, 8 | }; 9 | }; 10 | 11 | const removeToast = (state, action) => { 12 | const { toastId } = action.payload; 13 | const newState = { ...state }; 14 | delete newState[toastId]; 15 | 16 | return newState; 17 | }; 18 | 19 | const toastReducer = (state = {}, action) => { 20 | switch (action.type) { 21 | case ADD_TOAST: 22 | return addToast(state, action); 23 | case REMOVE_TOAST: 24 | return removeToast(state, action); 25 | default: 26 | return state; 27 | } 28 | }; 29 | 30 | export const getToastsMap = (state) => state; 31 | 32 | export default toastReducer; 33 | -------------------------------------------------------------------------------- /src/semantic/themes/basic/assets/fonts/icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/src/semantic/themes/basic/assets/fonts/icons.eot -------------------------------------------------------------------------------- /src/semantic/themes/basic/assets/fonts/icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/src/semantic/themes/basic/assets/fonts/icons.ttf -------------------------------------------------------------------------------- /src/semantic/themes/basic/assets/fonts/icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/src/semantic/themes/basic/assets/fonts/icons.woff -------------------------------------------------------------------------------- /src/semantic/themes/default/assets/fonts/brand-icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/src/semantic/themes/default/assets/fonts/brand-icons.eot -------------------------------------------------------------------------------- /src/semantic/themes/default/assets/fonts/brand-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/src/semantic/themes/default/assets/fonts/brand-icons.ttf -------------------------------------------------------------------------------- /src/semantic/themes/default/assets/fonts/brand-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/src/semantic/themes/default/assets/fonts/brand-icons.woff -------------------------------------------------------------------------------- /src/semantic/themes/default/assets/fonts/brand-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/src/semantic/themes/default/assets/fonts/brand-icons.woff2 -------------------------------------------------------------------------------- /src/semantic/themes/default/assets/fonts/icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/src/semantic/themes/default/assets/fonts/icons.eot -------------------------------------------------------------------------------- /src/semantic/themes/default/assets/fonts/icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/src/semantic/themes/default/assets/fonts/icons.ttf -------------------------------------------------------------------------------- /src/semantic/themes/default/assets/fonts/icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/src/semantic/themes/default/assets/fonts/icons.woff -------------------------------------------------------------------------------- /src/semantic/themes/default/assets/fonts/icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/src/semantic/themes/default/assets/fonts/icons.woff2 -------------------------------------------------------------------------------- /src/semantic/themes/default/assets/fonts/outline-icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/src/semantic/themes/default/assets/fonts/outline-icons.eot -------------------------------------------------------------------------------- /src/semantic/themes/default/assets/fonts/outline-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/src/semantic/themes/default/assets/fonts/outline-icons.ttf -------------------------------------------------------------------------------- /src/semantic/themes/default/assets/fonts/outline-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/src/semantic/themes/default/assets/fonts/outline-icons.woff -------------------------------------------------------------------------------- /src/semantic/themes/default/assets/fonts/outline-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/src/semantic/themes/default/assets/fonts/outline-icons.woff2 -------------------------------------------------------------------------------- /src/semantic/themes/default/assets/images/flags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcgov/range-web/e5f9a385674c1ffdd60ff1c2e4002ea55e07c6f5/src/semantic/themes/default/assets/images/flags.png -------------------------------------------------------------------------------- /src/setupTests.js: -------------------------------------------------------------------------------- 1 | import { configure } from 'enzyme'; 2 | import Adapter from 'enzyme-adapter-react-16'; 3 | import 'jest-localstorage-mock'; 4 | import '@testing-library/jest-dom/extend-expect'; 5 | 6 | // set up adapter 7 | configure({ adapter: new Adapter() }); 8 | 9 | // this is just a little hack to silence a warning that we'll get until react 10 | // fixes this: https://github.com/facebook/react/pull/14853 11 | const originalError = console.error; 12 | beforeAll(() => { 13 | console.error = (...args) => { 14 | if (/Warning.*not wrapped in act/.test(args[0])) { 15 | return; 16 | } 17 | originalError.call(console, ...args); 18 | }; 19 | }); 20 | 21 | afterAll(() => { 22 | console.error = originalError; 23 | }); 24 | -------------------------------------------------------------------------------- /src/styles/EmailTemplate.scss: -------------------------------------------------------------------------------- 1 | $field-width: 35%; 2 | $field-min-width: 160px; 3 | $content-max-width: 600px; 4 | 5 | .email-template { 6 | &__content { 7 | @extend .container; 8 | } 9 | &__steps { 10 | display: flex; 11 | flex-direction: column; 12 | max-width: $content-max-width; 13 | margin-top: $rup-content-margin-top; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/styles/ManageZoneAndClient.scss: -------------------------------------------------------------------------------- 1 | $field-width: 35%; 2 | $field-min-width: 160px; 3 | $content-max-width: 600px; 4 | 5 | .manage-client { 6 | &__content { 7 | @extend .container; 8 | } 9 | &__steps { 10 | display: flex; 11 | flex-direction: column; 12 | max-width: $content-max-width; 13 | margin-top: $rup-content-margin-top; 14 | } 15 | &__update-btn { 16 | margin-top: 25px; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/styles/MergeAccount.scss: -------------------------------------------------------------------------------- 1 | $field-width: 35%; 2 | $field-min-width: 160px; 3 | $content-max-width: 600px; 4 | 5 | .merge-account { 6 | &__content { 7 | @extend .container; 8 | } 9 | &__steps { 10 | display: flex; 11 | flex-direction: column; 12 | max-width: $content-max-width; 13 | margin-top: $rup-content-margin-top; 14 | } 15 | &__update-btn { 16 | margin-top: 25px; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/styles/RupInvasivePlant.scss: -------------------------------------------------------------------------------- 1 | .rup { 2 | &__ip-checklist { 3 | margin-bottom: $rup-content-margin-bottom; 4 | 5 | &__header { 6 | font-size: 1.1rem; 7 | margin-top: 5px; 8 | } 9 | &__form { 10 | margin: 10px 15px; 11 | 12 | .disabled.inline.field { 13 | opacity: 1 !important; 14 | 15 | label { 16 | opacity: 0.7; 17 | } 18 | } 19 | &__textarea { 20 | margin-left: 25px; 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/styles/VersionsDropdownGrid.scss: -------------------------------------------------------------------------------- 1 | .versions-dropdown-grid { 2 | display: 'grid'; 3 | grid-template-columns: '40px repeat(2, auto)'; 4 | grid-template-rows: '1fr'; 5 | } 6 | -------------------------------------------------------------------------------- /src/utils/calculation/index.js: -------------------------------------------------------------------------------- 1 | export * from './grazingSchedule'; 2 | 3 | const round = (number, precision) => { 4 | const shift = (number, precision) => { 5 | const numArray = `${number}`.split('e'); 6 | return +`${numArray[0]}e${numArray[1] ? +numArray[1] + precision : precision}`; 7 | }; 8 | return shift(Math.round(shift(number, +precision)), -precision); 9 | }; 10 | 11 | /** 12 | * Round the float to 1 decimal 13 | * 14 | * @param {float} number 15 | * @returns the rounded float number 16 | */ 17 | export const roundTo1Decimal = (number = 0) => round(number, 1); 18 | -------------------------------------------------------------------------------- /src/utils/format/index.js: -------------------------------------------------------------------------------- 1 | export * from './queryString'; 2 | export * from './date'; 3 | export * from './oxfordComma'; 4 | -------------------------------------------------------------------------------- /src/utils/format/oxfordComma.js: -------------------------------------------------------------------------------- 1 | import { NOT_PROVIDED } from '../../constants/strings'; 2 | 3 | export function oxfordComma(arr) { 4 | switch (arr.length) { 5 | case 0: 6 | return NOT_PROVIDED; 7 | case 1: 8 | case 2: 9 | return arr.join(' and '); 10 | default: { 11 | const last = 'and ' + arr.pop(); 12 | return [...arr, last].join(', '); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/utils/helper/additionalRequirement.js: -------------------------------------------------------------------------------- 1 | import uuid from 'uuid-v4'; 2 | 3 | export const resetAdditionalRequirementId = (additionalRequirement) => ({ 4 | ...additionalRequirement, 5 | createdAt: undefined, 6 | id: uuid(), 7 | }); 8 | -------------------------------------------------------------------------------- /src/utils/helper/index.js: -------------------------------------------------------------------------------- 1 | export * from './amendment'; 2 | export * from './plan'; 3 | export * from './user'; 4 | export * from './pasture'; 5 | export * from './client'; 6 | export * from './plantCommunity'; 7 | export * from './manageZoneAndClient'; 8 | export * from './input'; 9 | -------------------------------------------------------------------------------- /src/utils/helper/input.js: -------------------------------------------------------------------------------- 1 | export const allowNumberOnly = (e) => { 2 | if (!(e.charCode >= 48 && e.charCode <= 57)) { 3 | e.preventDefault(); 4 | e.stopPropagation(); 5 | } 6 | }; 7 | 8 | export const allowAlphabetOnly = (e) => { 9 | const regex = new RegExp('^[a-zA-Z ]+$'); 10 | const key = String.fromCharCode(!e.charCode ? e.which : e.charCode); 11 | if (!regex.test(key)) { 12 | e.preventDefault(); 13 | e.stopPropagation(); 14 | } 15 | }; 16 | 17 | export const handleWhenEnterPressed = (e, callback) => { 18 | if (e.charCode === 13) { 19 | callback(e); 20 | } 21 | }; 22 | -------------------------------------------------------------------------------- /src/utils/helper/network.js: -------------------------------------------------------------------------------- 1 | import { getAuthHeaderConfig } from '../authentication'; 2 | import { API_BASE_URL } from '../../constants/api'; 3 | 4 | export const getNetworkStatus = async () => { 5 | try { 6 | await fetch(`${API_BASE_URL}/v1/version`, getAuthHeaderConfig()); 7 | return true; 8 | } catch (e) { 9 | return false; 10 | } 11 | }; 12 | -------------------------------------------------------------------------------- /src/utils/hooks/useDebounce.js: -------------------------------------------------------------------------------- 1 | // useDebounce.js, from https://github.com/vercel/swr/issues/110 2 | import { useState, useEffect } from 'react'; 3 | 4 | export default function useDebounce(value, delay) { 5 | const [debouncedValue, setDebouncedValue] = useState(value); 6 | 7 | useEffect(() => { 8 | const handler = setTimeout(() => { 9 | setDebouncedValue(value); 10 | }, delay); 11 | 12 | return () => { 13 | clearTimeout(handler); 14 | }; 15 | }, [value, delay]); 16 | 17 | return debouncedValue; 18 | } 19 | -------------------------------------------------------------------------------- /src/utils/pkceUtils.js: -------------------------------------------------------------------------------- 1 | import { encode as base64encode } from 'base64-arraybuffer'; 2 | 3 | export const generatePKCE = async () => { 4 | const VALID_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~'; 5 | let codeVerifier = Array.from({ length: 128 }, () => 6 | VALID_CHARS.charAt(Math.floor(Math.random() * VALID_CHARS.length)), 7 | ).join(''); 8 | 9 | const encoder = new TextEncoder(); 10 | const data = encoder.encode(codeVerifier); 11 | const hashBuffer = await crypto.subtle.digest('SHA-256', data); 12 | 13 | const encodedHash = base64encode(hashBuffer).replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, ''); 14 | 15 | return { codeVerifier, codeVerifierHash: encodedHash }; 16 | }; 17 | -------------------------------------------------------------------------------- /src/utils/validation/index.js: -------------------------------------------------------------------------------- 1 | export * from './grazingSchedule'; 2 | export * from './plan'; 3 | -------------------------------------------------------------------------------- /src/utils/validation/ministerIssue.js: -------------------------------------------------------------------------------- 1 | import { UNIDENTIFIED_MINISTER_ISSUES } from '../../constants/strings'; 2 | import { ELEMENT_ID } from '../../constants/variables'; 3 | 4 | export const handleMinisterIssueValidation = (ministerIssues) => { 5 | if (ministerIssues.find((issue) => !issue.identified)) { 6 | return [ 7 | { 8 | error: true, 9 | message: UNIDENTIFIED_MINISTER_ISSUES, 10 | elementId: ELEMENT_ID.MINISTER_ISSUES, 11 | }, 12 | ]; 13 | } 14 | 15 | return []; 16 | }; 17 | -------------------------------------------------------------------------------- /src/utils/validation/pasture.js: -------------------------------------------------------------------------------- 1 | import { EMPTY_PASTURES } from '../../constants/strings'; 2 | import { ELEMENT_ID } from '../../constants/variables'; 3 | 4 | export const handlePastureValidation = (pastures) => { 5 | if (pastures.length === 0) { 6 | return [ 7 | { 8 | error: true, 9 | message: EMPTY_PASTURES, 10 | elementId: ELEMENT_ID.PASTURES, 11 | }, 12 | ]; 13 | } 14 | 15 | return []; 16 | }; 17 | -------------------------------------------------------------------------------- /src/utils/validation/plantCommunity.js: -------------------------------------------------------------------------------- 1 | import { ELEMENT_ID } from '../../constants/variables'; 2 | import { UNAPPROVED_PLANT_COMMUNITIES } from '../../constants/strings'; 3 | 4 | export const handlePlantCommunityValidation = (plantCommunities) => { 5 | if (plantCommunities.find((pc) => !pc.approved)) { 6 | return [ 7 | { 8 | error: true, 9 | message: UNAPPROVED_PLANT_COMMUNITIES, 10 | elementId: ELEMENT_ID.PASTURES, 11 | }, 12 | ]; 13 | } 14 | 15 | return []; 16 | }; 17 | -------------------------------------------------------------------------------- /tasks/README.md: -------------------------------------------------------------------------------- 1 | ## Tasks 2 | 3 | - Watch - Compile only changed files from source 4 | - Build - Build all files from source 5 | - Version - Output version number 6 | - Install - Run Installer to Set-up Paths 7 | 8 | ## How to use 9 | 10 | These tasks can be imported into your own gulpfile allowing you to avoid using Semantic's build tools 11 | 12 | ```javascript 13 | var watch = require('path/to/semantic/tasks/watch'); 14 | gulp.task('watch ui', watch); 15 | ``` 16 | -------------------------------------------------------------------------------- /tasks/admin/publish.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Release All 3 | *******************************/ 4 | 5 | /* 6 | This task update all SUI individual component repos with new versions of components 7 | 8 | * Commits changes from create components to GitHub and Tags 9 | 10 | */ 11 | 12 | var runSequence = require('run-sequence'); 13 | /* Release All */ 14 | module.exports = function (callback) { 15 | runSequence( 16 | 'update distributions', // commit less/css versions to github 17 | 'update components', // commit components to github 18 | callback, 19 | ); 20 | }; 21 | -------------------------------------------------------------------------------- /tasks/admin/release.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Release 3 | *******************************/ 4 | 5 | /* 6 | This task update all SUI individual component repos with new versions of components 7 | 8 | * Initializes repositories with current versions 9 | * Creates local files at ../distributions/ with each repo for release 10 | 11 | */ 12 | 13 | var runSequence = require('run-sequence'); 14 | /* Release All */ 15 | module.exports = function (callback) { 16 | runSequence( 17 | //'build', // build Semantic 18 | 'init distributions', // sync with current github version 19 | 'create distributions', // update each repo with changes from master repo 20 | 'init components', // sync with current github version 21 | 'create components', // update each repo 22 | callback, 23 | ); 24 | }; 25 | -------------------------------------------------------------------------------- /tasks/check-install.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Check Install 3 | *******************************/ 4 | 5 | var // node dependencies 6 | gulp = require('gulp'), 7 | fs = require('fs'), 8 | console = require('better-console'), 9 | install = require('./config/project/install'); 10 | // export task 11 | module.exports = function () { 12 | setTimeout(function () { 13 | if (!install.isSetup()) { 14 | console.log('Starting install...'); 15 | gulp.start('install'); 16 | return; 17 | } else { 18 | gulp.start('watch'); 19 | } 20 | }, 50); // Delay to allow console.clear to remove messages from check event 21 | }; 22 | -------------------------------------------------------------------------------- /tasks/clean.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Clean Task 3 | *******************************/ 4 | 5 | var del = require('del'), 6 | config = require('./config/user'), 7 | tasks = require('./config/tasks'); 8 | // cleans distribution files 9 | module.exports = function (callback) { 10 | return del([config.paths.clean], tasks.settings.del, callback); 11 | }; 12 | -------------------------------------------------------------------------------- /tasks/collections/README.md: -------------------------------------------------------------------------------- 1 | ## How to use 2 | 3 | These are collections of tasks that are imported together. 4 | 5 | To import them into gulp: 6 | 7 | ```javascript 8 | var gulp = require('gulp'), 9 | // modified to point to semantic folder 10 | install = require('tasks/collections/install'); 11 | gulp = install(gulp); 12 | 13 | // tasks are now injected and ready to be used 14 | gulp.start('install'); 15 | ``` 16 | -------------------------------------------------------------------------------- /tasks/collections/build.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Define Sub-Tasks 3 | *******************************/ 4 | 5 | module.exports = function (gulp) { 6 | var // build sub-tasks 7 | buildJS = require('./../build/javascript'), 8 | buildCSS = require('./../build/css'), 9 | buildAssets = require('./../build/assets'); 10 | // in case these tasks are undefined during import, less make sure these are available in scope 11 | gulp.task('build-javascript', 'Builds all javascript from source', buildJS); 12 | gulp.task('build-css', 'Builds all css from source', buildCSS); 13 | gulp.task('build-assets', 'Copies all assets from source', buildAssets); 14 | }; 15 | -------------------------------------------------------------------------------- /tasks/collections/rtl.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Define Sub-Tasks 3 | *******************************/ 4 | 5 | module.exports = function (gulp) { 6 | var // rtl 7 | buildRTL = require('./../rtl/build'), 8 | watchRTL = require('./../rtl/watch'); 9 | gulp.task('watch-rtl', 'Build all files as RTL', watchRTL); 10 | gulp.task('build-rtl', 'Watch files as RTL ', buildRTL); 11 | }; 12 | -------------------------------------------------------------------------------- /tasks/config/admin/github.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | GitHub Login 3 | *******************************/ 4 | /* 5 | Logs into GitHub using OAuth 6 | */ 7 | 8 | var fs = require('fs'), 9 | path = require('path'), 10 | githubAPI = require('github'), 11 | // stores oauth info for GitHub API 12 | oAuthConfig = path.join(__dirname, 'oauth.js'), 13 | oAuth = fs.existsSync(oAuthConfig) ? require(oAuthConfig) : false, 14 | github; 15 | 16 | if (!oAuth) { 17 | console.error( 18 | 'Must add oauth token for GitHub in tasks/config/admin/oauth.js', 19 | ); 20 | } 21 | 22 | github = new githubAPI({ 23 | version: '3.0.0', 24 | debug: true, 25 | protocol: 'https', 26 | timeout: 5000, 27 | }); 28 | 29 | github.authenticate({ 30 | type: 'oauth', 31 | token: oAuth.token, 32 | }); 33 | 34 | module.exports = github; 35 | -------------------------------------------------------------------------------- /tasks/config/admin/oauth.example.js: -------------------------------------------------------------------------------- 1 | /* 2 | Used to import GitHub Auth Token 3 | To Automate GitHub Updates 4 | */ 5 | 6 | module.exports = { 7 | token: 'AN-OAUTH2-TOKEN', 8 | username: 'github-username', 9 | name: 'Your Name', 10 | email: 'user@email.com', 11 | }; 12 | -------------------------------------------------------------------------------- /tasks/config/admin/templates/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Component", 3 | "description": "Component distribution", 4 | "homepage": "http://www.semantic-ui.com", 5 | "author": { 6 | "name": "Jack Lukic", 7 | "web": "http://www.jacklukic.com" 8 | }, 9 | "ignore": ["./index.js"], 10 | "keywords": ["semantic", "ui", "css3", "framework"], 11 | "license": ["http://semantic-ui.mit-license.org/"], 12 | "ignore": ["docs", "node", "server", "spec", "src", "test"] 13 | } 14 | -------------------------------------------------------------------------------- /tasks/config/admin/templates/component-package.js: -------------------------------------------------------------------------------- 1 | Package.describe({ 2 | name: 'semantic:ui-{component}', 3 | summary: 'Semantic UI - {Component}: Single component release', 4 | version: '{version}', 5 | git: 'git://github.com/Semantic-Org/UI-{Component}.git', 6 | }); 7 | 8 | Package.onUse(function (api) { 9 | api.versionsFrom('1.0'); 10 | api.addFiles([{ files }], 'client'); 11 | }); 12 | -------------------------------------------------------------------------------- /tasks/config/admin/templates/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "semantic/ui", 3 | "description": "Semantic empowers designers and developers by creating a shared vocabulary for UI.", 4 | "homepage": "http://www.semantic-ui.com", 5 | "authors": [ 6 | { 7 | "name": "Jack Lukic", 8 | "email": "jacklukic@gmail.com", 9 | "web": "http://www.jacklukic.com", 10 | "role": "Creator" 11 | } 12 | ], 13 | "keywords": [ 14 | "semantic", 15 | "ui", 16 | "css", 17 | "framework" 18 | ], 19 | "license": "MIT" 20 | } 21 | -------------------------------------------------------------------------------- /tasks/config/admin/templates/css-package.js: -------------------------------------------------------------------------------- 1 | var where = 'client'; // Adds files only to the client 2 | Package.describe({ 3 | name: 'semantic:ui-css', 4 | summary: 'Semantic UI - CSS Release of Semantic UI', 5 | version: '{version}', 6 | git: 'git://github.com/Semantic-Org/Semantic-UI-CSS.git', 7 | }); 8 | 9 | Package.onUse(function (api) { 10 | api.versionsFrom('1.0'); 11 | 12 | api.use('jquery', 'client'); 13 | 14 | api.addFiles( 15 | [ 16 | // icons 17 | 'themes/default/assets/fonts/icons.eot', 18 | 'themes/default/assets/fonts/icons.svg', 19 | 'themes/default/assets/fonts/icons.ttf', 20 | 'themes/default/assets/fonts/icons.woff', 21 | 'themes/default/assets/fonts/icons.woff2', 22 | 23 | // flags 24 | 'themes/default/assets/images/flags.png', 25 | 26 | // release 27 | 'semantic.css', 28 | 'semantic.js', 29 | ], 30 | 'client', 31 | ); 32 | }); 33 | -------------------------------------------------------------------------------- /tasks/config/admin/templates/less-package.js: -------------------------------------------------------------------------------- 1 | var where = 'client'; // Adds files only to the client 2 | Package.describe({ 3 | name: 'semantic:ui', 4 | summary: 'Semantic UI - LESS Release of Semantic UI', 5 | version: '{version}', 6 | git: 'git://github.com/Semantic-Org/Semantic-UI-LESS.git', 7 | }); 8 | 9 | Package.onUse(function (api) { 10 | api.versionsFrom('1.0'); 11 | api.use('less', 'client'); 12 | 13 | api.addFiles([{ files }], 'client'); 14 | }); 15 | -------------------------------------------------------------------------------- /tasks/config/admin/templates/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "semantic", 3 | "version": "1.0.0", 4 | "title": "Semantic UI", 5 | "description": "Semantic empowers designers and developers by creating a shared vocabulary for UI.", 6 | "homepage": "http://www.semantic-ui.com", 7 | "author": "Jack Lukic ", 8 | "license": "MIT", 9 | "repository": { 10 | "type": "git", 11 | "url": "git://github.com/Semantic-Org/Semantic-UI.git" 12 | }, 13 | "bugs": { 14 | "url": "https://github.com/Semantic-Org/Semantic-UI/issues" 15 | }, 16 | "devDependencies": {} 17 | } 18 | -------------------------------------------------------------------------------- /tasks/config/docs.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Docs 3 | *******************************/ 4 | 5 | /* Paths used for "serve-docs" and "build-docs" tasks */ 6 | module.exports = { 7 | base: '', 8 | globs: { 9 | eco: '**/*.html.eco', 10 | }, 11 | paths: { 12 | clean: '../docs/out/dist/', 13 | source: { 14 | config: 'src/theme.config', 15 | definitions: 'src/definitions/', 16 | site: 'src/site/', 17 | themes: 'src/themes/', 18 | }, 19 | output: { 20 | examples: '../docs/out/examples/', 21 | less: '../docs/out/src/', 22 | metadata: '../docs/out/', 23 | packaged: '../docs/out/dist/', 24 | uncompressed: '../docs/out/dist/components/', 25 | compressed: '../docs/out/dist/components/', 26 | themes: '../docs/out/dist/themes/', 27 | }, 28 | template: { 29 | eco: '../docs/server/documents/', 30 | }, 31 | }, 32 | }; 33 | -------------------------------------------------------------------------------- /tasks/version.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Version Task 3 | *******************************/ 4 | 5 | var release = require('./config/project/release'); 6 | module.exports = function (callback) { 7 | console.log(release.title + ' ' + release.version); 8 | }; 9 | -------------------------------------------------------------------------------- /who_is_using_myra.sql: -------------------------------------------------------------------------------- 1 | with p as ( 2 | 3 | select count(pl.*) as plans, r.description, d.code 4 | from plan pl 5 | join agreement a on a.forest_file_id = pl.agreement_id 6 | join ref_zone z on a.zone_id = z.id 7 | join ref_agreement_type r on a.agreement_type_id = r.id 8 | join ref_district d on d.id = z.district_id 9 | group by d.code, r.description) 10 | 11 | select count(a.*) as agreements, r.description, p.plans, d.code 12 | from agreement a 13 | join ref_zone z on a.zone_id = z.id 14 | join ref_agreement_type r on a.agreement_type_id = r.id 15 | join ref_district d on d.id = z.district_id 16 | left join p on p.code = d.code and p.description = r.description 17 | group by d.code, p.plans, r.description 18 | order by d.code, r.description asc; 19 | --------------------------------------------------------------------------------