├── .dojorc
├── .gitignore
├── packages
├── example-index
│ ├── tests
│ │ ├── unit
│ │ │ ├── all.ts
│ │ │ └── main.ts
│ │ └── functional
│ │ │ ├── all.ts
│ │ │ └── main.ts
│ ├── src
│ │ ├── main.css
│ │ ├── index.html
│ │ ├── examples.block.ts
│ │ └── main.tsx
│ ├── .gitignore
│ ├── .dojorc
│ ├── tsconfig.json
│ └── package.json
├── skills-matrix
│ ├── tests
│ │ └── functional
│ │ │ ├── all.ts
│ │ │ └── main.ts
│ ├── .dojorc
│ ├── src
│ │ ├── themes
│ │ │ ├── matrix
│ │ │ │ ├── label.m.css.d.ts
│ │ │ │ ├── header.m.css.d.ts
│ │ │ │ ├── button.m.css.d.ts
│ │ │ │ ├── chip.m.css.d.ts
│ │ │ │ ├── list-item.m.css.d.ts
│ │ │ │ ├── text-area.m.css.d.ts
│ │ │ │ ├── typeahead.m.css.d.ts
│ │ │ │ ├── checkbox.m.css.d.ts
│ │ │ │ ├── text-input.m.css.d.ts
│ │ │ │ ├── chip-typeahead.m.css.d.ts
│ │ │ │ ├── label.m.css
│ │ │ │ ├── checkbox.m.css
│ │ │ │ ├── chip-typeahead.m.css
│ │ │ │ ├── list-item.m.css
│ │ │ │ ├── header.m.css
│ │ │ │ ├── typeahead.m.css
│ │ │ │ ├── text-area.m.css
│ │ │ │ ├── chip.m.css
│ │ │ │ ├── button.m.css
│ │ │ │ └── text-input.m.css
│ │ │ └── matrix.ts
│ │ ├── widgets
│ │ │ ├── styles
│ │ │ │ ├── button.m.css.d.ts
│ │ │ │ └── button.m.css
│ │ │ ├── header
│ │ │ │ ├── Header.m.css.d.ts
│ │ │ │ ├── Header.m.css
│ │ │ │ └── Header.tsx
│ │ │ ├── assessment
│ │ │ │ ├── Assessment.m.css.d.ts
│ │ │ │ ├── Assessment.m.css
│ │ │ │ └── Assessment.tsx
│ │ │ ├── group-assessment
│ │ │ │ ├── GroupAssessment.m.css.d.ts
│ │ │ │ └── GroupAssessment.m.css
│ │ │ ├── skillset-filter
│ │ │ │ ├── SkillsetFilter.m.css.d.ts
│ │ │ │ └── SkillsetFilter.m.css
│ │ │ ├── skills
│ │ │ │ └── Skills.m.css.d.ts
│ │ │ ├── skill-key
│ │ │ │ ├── SkillKey.m.css.d.ts
│ │ │ │ ├── SkillKey.m.css
│ │ │ │ └── SkillKey.tsx
│ │ │ ├── home
│ │ │ │ └── Home.m.css.d.ts
│ │ │ ├── assessment-list
│ │ │ │ ├── AssessmentList.m.css.d.ts
│ │ │ │ └── AssessmentList.m.css
│ │ │ └── compare
│ │ │ │ └── Compare.m.css.d.ts
│ │ ├── App.m.css.d.ts
│ │ ├── fonts.css
│ │ ├── App.m.css
│ │ ├── index.html
│ │ ├── main.css
│ │ ├── main.ts
│ │ ├── __tests__
│ │ │ └── polyfills.spec.ts
│ │ ├── util
│ │ │ ├── persistence.ts
│ │ │ ├── crypto.spec.ts
│ │ │ └── clipboard.ts
│ │ ├── middleware
│ │ │ └── router.ts
│ │ ├── variables.css
│ │ ├── routes.ts
│ │ └── interfaces.ts
│ ├── .gitignore
│ ├── .dojorc-deploy
│ ├── tsconfig.json
│ ├── README.md
│ └── package.json
├── world-clock
│ ├── .gitignore
│ ├── src
│ │ ├── main.css
│ │ ├── main.ts
│ │ ├── styles
│ │ │ ├── app.m.css.d.ts
│ │ │ ├── clock.m.css.d.ts
│ │ │ ├── app.m.css
│ │ │ ├── variables.css
│ │ │ └── clock.m.css
│ │ ├── index.html
│ │ └── nls
│ │ │ ├── fr
│ │ │ └── main.ts
│ │ │ ├── ja
│ │ │ └── main.ts
│ │ │ ├── es
│ │ │ └── main.ts
│ │ │ ├── ar
│ │ │ └── main.ts
│ │ │ ├── hi
│ │ │ └── main.ts
│ │ │ └── main.ts
│ ├── preview.png
│ ├── .dojorc-deploy
│ ├── .dojorc
│ ├── tsconfig.json
│ ├── .eslintrc.js
│ └── package.json
├── dgrid-wrapper
│ ├── .gitignore
│ ├── src
│ │ ├── main.css
│ │ ├── main.ts
│ │ └── index.html
│ ├── preview.png
│ ├── .dojorc-deploy
│ ├── loaderConfig.js
│ ├── testLoaderConfig.js
│ ├── tsconfig.json
│ ├── .eslintrc.js
│ ├── .dojorc
│ └── package.json
├── realworld
│ ├── src
│ │ ├── main.css
│ │ ├── config.ts
│ │ ├── logo.png
│ │ ├── main.tsx
│ │ ├── widgets
│ │ │ ├── Banner.tsx
│ │ │ ├── Footer.tsx
│ │ │ ├── ErrorList.tsx
│ │ │ ├── Tags.tsx
│ │ │ ├── ArticleAuthorControls.tsx
│ │ │ ├── FeedPagination.tsx
│ │ │ └── FeedList.tsx
│ │ ├── processes
│ │ │ ├── tagProcesses.ts
│ │ │ ├── utils.ts
│ │ │ └── routeProcesses.ts
│ │ ├── index.html
│ │ └── routes.ts
│ ├── logo.png
│ ├── preview.png
│ ├── .dojorc-deploy
│ ├── .gitignore
│ ├── tsconfig.json
│ ├── .eslintrc.js
│ ├── package.json
│ └── .dojorc
├── static-blog
│ ├── src
│ │ ├── BlogList.m.css.d.ts
│ │ ├── Header.m.css.d.ts
│ │ ├── logo.png
│ │ ├── BlogList.m.css
│ │ ├── routes.ts
│ │ ├── Blog.m.css.d.ts
│ │ ├── BlogPreview.m.css.d.ts
│ │ ├── index.html
│ │ ├── App.tsx
│ │ ├── Header.tsx
│ │ ├── main.tsx
│ │ ├── BlogList.tsx
│ │ ├── Header.m.css
│ │ ├── Blog.tsx
│ │ ├── blocks
│ │ │ └── blog-index.block.ts
│ │ └── BlogPreview.tsx
│ ├── .dojorc-deploy
│ ├── .gitignore
│ ├── .editorconfig
│ ├── tsconfig.json
│ ├── .dojorc
│ └── .eslintrc.js
├── hnpwa
│ ├── src
│ │ ├── widgets
│ │ │ ├── styles
│ │ │ │ ├── app.m.css.d.ts
│ │ │ │ ├── loading.m.css.d.ts
│ │ │ │ ├── app.m.css
│ │ │ │ ├── content.m.css.d.ts
│ │ │ │ ├── comment.m.css.d.ts
│ │ │ │ ├── comments.m.css.d.ts
│ │ │ │ ├── menu.m.css.d.ts
│ │ │ │ ├── loading.m.css
│ │ │ │ ├── comment.m.css
│ │ │ │ ├── comments.m.css
│ │ │ │ ├── article.m.css.d.ts
│ │ │ │ ├── content.m.css
│ │ │ │ └── menu.m.css
│ │ │ ├── Loading.tsx
│ │ │ ├── App.tsx
│ │ │ ├── Comment.tsx
│ │ │ └── Menu.tsx
│ │ ├── img
│ │ │ ├── hn.ico
│ │ │ └── hn.png
│ │ ├── routes.ts
│ │ ├── interfaces.d.ts
│ │ ├── index.html
│ │ ├── main.tsx
│ │ └── main.css
│ ├── .firebaserc
│ ├── preview.png
│ ├── .dojorc-deploy
│ ├── .gitignore
│ ├── manifest.json
│ ├── tsconfig.json
│ ├── package.json
│ ├── .eslintrc.js
│ └── .dojorc
├── icache-basic
│ ├── .dojorc
│ ├── .dojorc-deploy
│ ├── src
│ │ ├── main.css
│ │ ├── index.html
│ │ └── main.tsx
│ ├── .gitignore
│ ├── .editorconfig
│ ├── tsconfig.json
│ ├── .eslintrc.js
│ └── package.json
├── store-arrays
│ ├── .dojorc
│ ├── .dojorc-deploy
│ ├── src
│ │ ├── interfaces.ts
│ │ ├── main.tsx
│ │ ├── index.html
│ │ ├── store.ts
│ │ ├── data.ts
│ │ ├── main.css
│ │ └── App.tsx
│ ├── .gitignore
│ ├── .editorconfig
│ ├── tsconfig.json
│ ├── .eslintrc.js
│ └── package.json
├── icache-advanced
│ ├── .dojorc
│ ├── .dojorc-deploy
│ ├── src
│ │ ├── index.html
│ │ └── main.tsx
│ ├── .gitignore
│ ├── .editorconfig
│ ├── tsconfig.json
│ ├── .eslintrc.js
│ └── package.json
├── intersection-observer
│ ├── .gitignore
│ ├── .dojorc
│ ├── src
│ │ ├── widgets
│ │ │ ├── styles
│ │ │ │ ├── infiniteList.m.css.d.ts
│ │ │ │ ├── app.m.css.d.ts
│ │ │ │ ├── infiniteList.m.css
│ │ │ │ ├── Item.m.css.d.ts
│ │ │ │ ├── app.m.css
│ │ │ │ └── Item.m.css
│ │ │ ├── Item.ts
│ │ │ ├── InfiniteList.ts
│ │ │ └── App.ts
│ │ ├── main.css
│ │ ├── main.ts
│ │ └── index.html
│ ├── preview.png
│ ├── .dojorc-deploy
│ ├── tsconfig.json
│ ├── package.json
│ └── .eslintrc.js
├── resize-middleware
│ ├── .dojorc
│ ├── .dojorc-deploy
│ ├── src
│ │ ├── main.tsx
│ │ ├── index.html
│ │ └── main.css
│ ├── .gitignore
│ ├── .editorconfig
│ ├── tsconfig.json
│ ├── .eslintrc.js
│ └── package.json
├── resize-observer
│ ├── .dojorc
│ ├── src
│ │ ├── widgets
│ │ │ ├── styles
│ │ │ │ ├── common.m.css.d.ts
│ │ │ │ ├── app.m.css.d.ts
│ │ │ │ ├── columns.m.css.d.ts
│ │ │ │ ├── app.m.css
│ │ │ │ ├── article.m.css.d.ts
│ │ │ │ ├── common.m.css
│ │ │ │ ├── card.m.css.d.ts
│ │ │ │ ├── resizableSection.m.css.d.ts
│ │ │ │ ├── columns.m.css
│ │ │ │ ├── calendar.m.css.d.ts
│ │ │ │ ├── resizableSection.m.css
│ │ │ │ └── article.m.css
│ │ │ └── Column.ts
│ │ ├── main.ts
│ │ ├── main.css
│ │ └── index.html
│ ├── preview.png
│ ├── .dojorc-deploy
│ ├── .gitignore
│ ├── tsconfig.json
│ ├── package.json
│ └── .eslintrc.js
├── todo-mvc-kitchensink
│ ├── src
│ │ ├── themes
│ │ │ ├── pirate
│ │ │ │ ├── App.m.css.d.ts
│ │ │ │ ├── credits.m.css.d.ts
│ │ │ │ ├── todoFooter.m.css.d.ts
│ │ │ │ ├── todoList.m.css.d.ts
│ │ │ │ ├── todoSearch.m.css.d.ts
│ │ │ │ ├── themeSwitcher.m.css.d.ts
│ │ │ │ ├── todoFooter.m.css
│ │ │ │ ├── todoHeader.m.css.d.ts
│ │ │ │ ├── themeSwitcher.m.css
│ │ │ │ ├── todoItem.m.css.d.ts
│ │ │ │ ├── todoList.m.css
│ │ │ │ ├── credits.m.css
│ │ │ │ ├── todoDetails.m.css.d.ts
│ │ │ │ ├── todoCard.m.css.d.ts
│ │ │ │ ├── todoDetails.m.css
│ │ │ │ └── todoSearch.m.css
│ │ │ └── pirate.ts
│ │ ├── widgets
│ │ │ ├── styles
│ │ │ │ ├── credits.m.css.d.ts
│ │ │ │ ├── todoList.m.css.d.ts
│ │ │ │ ├── todoSearch.m.css.d.ts
│ │ │ │ ├── themeSwitcher.m.css.d.ts
│ │ │ │ ├── todoHeader.m.css.d.ts
│ │ │ │ ├── themeSwitcher.m.css
│ │ │ │ ├── todoFilter.m.css.d.ts
│ │ │ │ ├── todoFooter.m.css.d.ts
│ │ │ │ ├── todoItem.m.css.d.ts
│ │ │ │ ├── todoViewSwitch.m.css.d.ts
│ │ │ │ ├── credits.m.css
│ │ │ │ ├── todoList.m.css
│ │ │ │ ├── todoCard.m.css.d.ts
│ │ │ │ ├── todoDetails.m.css.d.ts
│ │ │ │ ├── todoFilter.m.css
│ │ │ │ ├── todoFooter.m.css
│ │ │ │ ├── todoDetails.m.css
│ │ │ │ └── todoSearch.m.css
│ │ │ ├── Credits.tsx
│ │ │ ├── TodoViewSwitch.tsx
│ │ │ ├── TodoSearch.tsx
│ │ │ ├── ThemeSwitcher.tsx
│ │ │ └── TodoFilter.tsx
│ │ ├── App.m.css.d.ts
│ │ ├── index.html
│ │ ├── App.m.css
│ │ ├── store.ts
│ │ ├── nls
│ │ │ ├── en-PR
│ │ │ │ └── common.ts
│ │ │ └── common.ts
│ │ ├── main.tsx
│ │ ├── main.css
│ │ └── App.tsx
│ ├── preview.png
│ ├── .dojorc
│ ├── .dojorc-deploy
│ ├── .dojorc-test
│ ├── .gitignore
│ ├── .editorconfig
│ ├── .gitattributes
│ ├── tsconfig.json
│ ├── .eslintrc.js
│ └── package.json
├── todo-mvc
│ ├── preview.png
│ ├── .dojorc-deploy
│ ├── .dojorc
│ ├── index.js
│ ├── src
│ │ ├── index.html
│ │ ├── main.tsx
│ │ ├── App.m.css.d.ts
│ │ └── main.css
│ ├── .dojorc-test
│ ├── .gitignore
│ ├── .editorconfig
│ ├── .gitattributes
│ ├── tsconfig.json
│ ├── .eslintrc.js
│ └── package.json
└── custom-element-menu
│ ├── preview.png
│ ├── .dojorc-deploy
│ ├── .dojorc
│ ├── src
│ ├── widgets
│ │ ├── styles
│ │ │ ├── menuItem.m.css.d.ts
│ │ │ ├── menu.m.css.d.ts
│ │ │ ├── menu.m.css
│ │ │ └── menuItem.m.css
│ │ └── MenuItem.ts
│ ├── main.ts
│ └── main.css
│ ├── .gitignore
│ ├── tsconfig.json
│ └── .eslintrc.js
├── lerna.json
├── .editorconfig
└── package.json
/.dojorc:
--------------------------------------------------------------------------------
1 | {
2 | "create-app": {},
3 | "create-widget": {}
4 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | **/yarn.lock
2 | node_modules
3 |
4 | **/output
5 |
--------------------------------------------------------------------------------
/packages/example-index/tests/unit/all.ts:
--------------------------------------------------------------------------------
1 | import './main';
2 |
--------------------------------------------------------------------------------
/packages/example-index/tests/functional/all.ts:
--------------------------------------------------------------------------------
1 | import './main';
2 |
--------------------------------------------------------------------------------
/packages/skills-matrix/tests/functional/all.ts:
--------------------------------------------------------------------------------
1 | import './main';
2 |
--------------------------------------------------------------------------------
/packages/world-clock/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | _build/
3 | output/
4 |
--------------------------------------------------------------------------------
/packages/dgrid-wrapper/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | _build/
3 | output/
4 |
--------------------------------------------------------------------------------
/packages/dgrid-wrapper/src/main.css:
--------------------------------------------------------------------------------
1 | /* Put your styles and imports here */
2 |
--------------------------------------------------------------------------------
/packages/example-index/src/main.css:
--------------------------------------------------------------------------------
1 | /* Put your styles and imports here */
2 |
--------------------------------------------------------------------------------
/packages/example-index/tests/unit/main.ts:
--------------------------------------------------------------------------------
1 | /* Write your app tests here */
2 |
--------------------------------------------------------------------------------
/packages/realworld/src/main.css:
--------------------------------------------------------------------------------
1 | /* Put your styles and imports here */
2 |
--------------------------------------------------------------------------------
/packages/static-blog/src/BlogList.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 |
--------------------------------------------------------------------------------
/packages/example-index/tests/functional/main.ts:
--------------------------------------------------------------------------------
1 | /* Write your app tests here */
2 |
--------------------------------------------------------------------------------
/packages/hnpwa/src/widgets/styles/app.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const main: string;
2 |
--------------------------------------------------------------------------------
/packages/skills-matrix/tests/functional/main.ts:
--------------------------------------------------------------------------------
1 | /* Write your app tests here */
2 |
--------------------------------------------------------------------------------
/packages/example-index/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | _build/
3 | output/
4 | .cert/
5 |
--------------------------------------------------------------------------------
/packages/hnpwa/src/widgets/styles/loading.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const spinner: string;
2 |
--------------------------------------------------------------------------------
/packages/icache-basic/.dojorc:
--------------------------------------------------------------------------------
1 | {
2 | "build-app": {},
3 | "test-intern": {}
4 | }
5 |
--------------------------------------------------------------------------------
/packages/skills-matrix/.dojorc:
--------------------------------------------------------------------------------
1 | {
2 | "build-app": {},
3 | "create-app": {}
4 | }
5 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/themes/matrix/label.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 |
--------------------------------------------------------------------------------
/packages/store-arrays/.dojorc:
--------------------------------------------------------------------------------
1 | {
2 | "build-app": {},
3 | "test-intern": {}
4 | }
5 |
--------------------------------------------------------------------------------
/packages/icache-advanced/.dojorc:
--------------------------------------------------------------------------------
1 | {
2 | "build-app": {},
3 | "test-intern": {}
4 | }
5 |
--------------------------------------------------------------------------------
/packages/intersection-observer/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | _build/
3 | output/
4 | .idea
5 |
--------------------------------------------------------------------------------
/packages/resize-middleware/.dojorc:
--------------------------------------------------------------------------------
1 | {
2 | "build-app": {},
3 | "test-intern": {}
4 | }
5 |
--------------------------------------------------------------------------------
/packages/resize-observer/.dojorc:
--------------------------------------------------------------------------------
1 | {
2 | "build-app": {},
3 | "test-intern": {}
4 | }
5 |
--------------------------------------------------------------------------------
/packages/resize-observer/src/widgets/styles/common.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const badge: string;
2 |
--------------------------------------------------------------------------------
/lerna.json:
--------------------------------------------------------------------------------
1 | {
2 | "packages": [
3 | "packages/*"
4 | ],
5 | "version": "0.0.0"
6 | }
7 |
--------------------------------------------------------------------------------
/packages/intersection-observer/.dojorc:
--------------------------------------------------------------------------------
1 | {
2 | "build-app": {},
3 | "test-intern": {}
4 | }
5 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/widgets/styles/button.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const trailing: string;
2 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/themes/pirate/App.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const todoapp: string;
2 |
--------------------------------------------------------------------------------
/packages/hnpwa/.firebaserc:
--------------------------------------------------------------------------------
1 | {
2 | "projects": {
3 | "hnpwa": "dojo-2-hnpwa-d668d"
4 | }
5 | }
--------------------------------------------------------------------------------
/packages/hnpwa/preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dojo/examples/HEAD/packages/hnpwa/preview.png
--------------------------------------------------------------------------------
/packages/realworld/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dojo/examples/HEAD/packages/realworld/logo.png
--------------------------------------------------------------------------------
/packages/realworld/src/config.ts:
--------------------------------------------------------------------------------
1 | export const baseUrl = 'https://conduit.productionready.io/api';
2 |
--------------------------------------------------------------------------------
/packages/skills-matrix/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | _build/
3 | output/
4 | .cert/
5 |
6 | .vercel
7 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/themes/pirate/credits.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const footer: string;
2 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/themes/pirate/todoFooter.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const footer: string;
2 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/widgets/styles/credits.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const footer: string;
2 |
--------------------------------------------------------------------------------
/packages/world-clock/src/main.css:
--------------------------------------------------------------------------------
1 | body {
2 | background: #fff;
3 | font-family: sans-serif;
4 | }
5 |
--------------------------------------------------------------------------------
/packages/hnpwa/src/img/hn.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dojo/examples/HEAD/packages/hnpwa/src/img/hn.ico
--------------------------------------------------------------------------------
/packages/hnpwa/src/img/hn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dojo/examples/HEAD/packages/hnpwa/src/img/hn.png
--------------------------------------------------------------------------------
/packages/intersection-observer/src/widgets/styles/infiniteList.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const bottom: string;
2 |
--------------------------------------------------------------------------------
/packages/static-blog/src/Header.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const link: string;
3 |
--------------------------------------------------------------------------------
/packages/todo-mvc/preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dojo/examples/HEAD/packages/todo-mvc/preview.png
--------------------------------------------------------------------------------
/packages/realworld/preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dojo/examples/HEAD/packages/realworld/preview.png
--------------------------------------------------------------------------------
/packages/realworld/src/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dojo/examples/HEAD/packages/realworld/src/logo.png
--------------------------------------------------------------------------------
/packages/skills-matrix/src/App.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const container: string;
2 | export const content: string;
3 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/App.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const todoapp: string;
2 | export const main: string;
3 |
--------------------------------------------------------------------------------
/packages/world-clock/preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dojo/examples/HEAD/packages/world-clock/preview.png
--------------------------------------------------------------------------------
/packages/dgrid-wrapper/preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dojo/examples/HEAD/packages/dgrid-wrapper/preview.png
--------------------------------------------------------------------------------
/packages/static-blog/src/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dojo/examples/HEAD/packages/static-blog/src/logo.png
--------------------------------------------------------------------------------
/packages/hnpwa/.dojorc-deploy:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ".dojorc",
3 | "build-app": {
4 | "base": "/hnpwa/"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/packages/resize-observer/preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dojo/examples/HEAD/packages/resize-observer/preview.png
--------------------------------------------------------------------------------
/packages/skills-matrix/src/themes/matrix/header.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const row: string;
3 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/widgets/header/Header.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const arrow: string;
3 |
--------------------------------------------------------------------------------
/packages/intersection-observer/src/widgets/styles/app.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const title: string;
3 |
--------------------------------------------------------------------------------
/packages/realworld/.dojorc-deploy:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ".dojorc",
3 | "build-app": {
4 | "base": "/realworld/"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/themes/matrix/button.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const disabled: string;
3 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/themes/matrix/chip.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const iconWrapper: string;
3 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/themes/matrix/list-item.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const selected: string;
3 |
--------------------------------------------------------------------------------
/packages/todo-mvc/.dojorc-deploy:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ".dojorc",
3 | "build-app": {
4 | "base": "/todo-mvc/"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/packages/custom-element-menu/preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dojo/examples/HEAD/packages/custom-element-menu/preview.png
--------------------------------------------------------------------------------
/packages/icache-basic/.dojorc-deploy:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ".dojorc",
3 | "build-app": {
4 | "base": "/icache-basic/"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/packages/icache-basic/src/main.css:
--------------------------------------------------------------------------------
1 | /* Put your styles and imports here */
2 |
3 | body {
4 | font-family: sans-serif;
5 | }
6 |
--------------------------------------------------------------------------------
/packages/intersection-observer/preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dojo/examples/HEAD/packages/intersection-observer/preview.png
--------------------------------------------------------------------------------
/packages/intersection-observer/src/widgets/styles/infiniteList.m.css:
--------------------------------------------------------------------------------
1 | .bottom {
2 | height: 1px;
3 | visibility: hidden;
4 | }
5 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/themes/matrix/text-area.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const input: string;
2 | export const inputWrapper: string;
3 |
--------------------------------------------------------------------------------
/packages/static-blog/.dojorc-deploy:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ".dojorc",
3 | "build-app": {
4 | "base": "/static-blog/"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/packages/store-arrays/.dojorc-deploy:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ".dojorc",
3 | "build-app": {
4 | "base": "/store-arrays/"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dojo/examples/HEAD/packages/todo-mvc-kitchensink/preview.png
--------------------------------------------------------------------------------
/packages/todo-mvc/.dojorc:
--------------------------------------------------------------------------------
1 | {
2 | "build-app": {},
3 | "test-intern": {},
4 | "create-app": {},
5 | "create-widget": {}
6 | }
7 |
--------------------------------------------------------------------------------
/packages/world-clock/.dojorc-deploy:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ".dojorc",
3 | "build-app": {
4 | "base": "/world-clock/"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/packages/dgrid-wrapper/.dojorc-deploy:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ".dojorc",
3 | "build-app": {
4 | "base": "/dgrid-wrapper/"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/packages/skills-matrix/.dojorc-deploy:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ".dojorc",
3 | "build-app": {
4 | "base": "/skills-matrix/"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/themes/matrix/typeahead.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const menuItemRoot: string;
2 | export const menuRoot: string;
3 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/.dojorc:
--------------------------------------------------------------------------------
1 | {
2 | "build-app": {
3 | "locale": "en",
4 | "supportedLocales": [ "en-PR" ]
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/themes/pirate/todoList.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const todoList: string;
2 | export const cardList: string;
3 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/widgets/styles/todoList.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const todoList: string;
2 | export const cardList: string;
3 |
--------------------------------------------------------------------------------
/packages/todo-mvc/index.js:
--------------------------------------------------------------------------------
1 | require('ts-node').register(); // This will register the TypeScript compiler
2 | require('./src/electron');
3 |
--------------------------------------------------------------------------------
/packages/icache-advanced/.dojorc-deploy:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ".dojorc",
3 | "build-app": {
4 | "base": "/icache-advanced/"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/packages/realworld/.gitignore:
--------------------------------------------------------------------------------
1 | /output
2 | /html-report
3 | /node_modules
4 | _build
5 | /coverage
6 | .tsconfig*.json
7 | npm-debug.log
8 |
--------------------------------------------------------------------------------
/packages/resize-middleware/.dojorc-deploy:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ".dojorc",
3 | "build-app": {
4 | "base": "/resize-middleware/"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/packages/resize-observer/.dojorc-deploy:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ".dojorc",
3 | "build-app": {
4 | "base": "/resize-observer/"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/themes/pirate/todoSearch.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const search: string;
2 | export const searchIcon: string;
3 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/widgets/styles/todoSearch.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const search: string;
2 | export const searchIcon: string;
3 |
--------------------------------------------------------------------------------
/packages/custom-element-menu/.dojorc-deploy:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ".dojorc",
3 | "build-app": {
4 | "base": "/custom-element-menu/"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/packages/world-clock/.dojorc:
--------------------------------------------------------------------------------
1 | {
2 | "build-app": {
3 | "locale": "en",
4 | "supportedLocales": [ "es", "fr", "hi", "ar", "ja" ]
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/packages/hnpwa/src/widgets/styles/app.m.css:
--------------------------------------------------------------------------------
1 | .main {
2 | margin: 0 auto;
3 | max-width: 800px;
4 | margin-top: 48px;
5 | background: white;
6 | }
7 |
--------------------------------------------------------------------------------
/packages/intersection-observer/.dojorc-deploy:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ".dojorc",
3 | "build-app": {
4 | "base": "/intersection-observer/"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/.dojorc-deploy:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ".dojorc",
3 | "build-app": {
4 | "base": "/todo-mvc-kitchensink/"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/packages/custom-element-menu/.dojorc:
--------------------------------------------------------------------------------
1 | {
2 | "build-widget": {
3 | "widgets": [
4 | "src/widgets/MenuItem",
5 | "src/widgets/Menu"
6 | ]
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/packages/intersection-observer/src/widgets/styles/Item.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const title: string;
3 | export const summary: string;
4 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/themes/matrix/checkbox.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const inputWrapper: string;
3 | export const input: string;
4 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/themes/pirate/themeSwitcher.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const themeSwitcher: string;
2 | export const themeSwitcherCheckbox: string;
3 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/widgets/styles/themeSwitcher.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const themeSwitcher: string;
2 | export const themeSwitcherCheckbox: string;
3 |
--------------------------------------------------------------------------------
/packages/todo-mvc/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | todo-mvc
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/packages/custom-element-menu/src/widgets/styles/menuItem.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const item: string;
3 | export const selected: string;
4 |
--------------------------------------------------------------------------------
/packages/icache-basic/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | icache-basic
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/packages/resize-observer/src/widgets/styles/app.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const controls: string;
3 | export const parentContainer: string;
4 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/themes/matrix/text-input.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const input: string;
2 | export const wrapper: string;
3 | export const inputWrapper: string;
4 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/widgets/assessment/Assessment.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const title: string;
3 | export const noResults: string;
4 |
--------------------------------------------------------------------------------
/packages/icache-advanced/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | icache-basic
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/themes/matrix/chip-typeahead.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const inputWrapper: string;
2 | export const item: string;
3 | export const values: string;
4 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/themes/pirate/todoFooter.m.css:
--------------------------------------------------------------------------------
1 | .footer {
2 | color: #777;
3 | padding: 10px 15px;
4 | height: 20px;
5 | text-align: center;
6 | }
7 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/themes/pirate/todoHeader.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const title: string;
2 | export const newTodo: string;
3 | export const toggleAll: string;
4 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/widgets/styles/todoHeader.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const title: string;
2 | export const newTodo: string;
3 | export const toggleAll: string;
4 |
--------------------------------------------------------------------------------
/packages/todo-mvc/.dojorc-test:
--------------------------------------------------------------------------------
1 | {
2 | "build-app": {
3 | "base": "/output/dist/"
4 | },
5 | "test-intern": {},
6 | "create-app": {},
7 | "create-widget": {}
8 | }
9 |
--------------------------------------------------------------------------------
/packages/intersection-observer/src/main.css:
--------------------------------------------------------------------------------
1 | /* Put your styles and imports here */
2 | body {
3 | color: #111;
4 | background: white;
5 | font-family: sans-serif;
6 | }
7 |
--------------------------------------------------------------------------------
/packages/store-arrays/src/interfaces.ts:
--------------------------------------------------------------------------------
1 | interface Company {
2 | name: string;
3 | people: string[];
4 | }
5 |
6 | export interface State {
7 | companies: Company[];
8 | }
9 |
--------------------------------------------------------------------------------
/packages/static-blog/src/BlogList.m.css:
--------------------------------------------------------------------------------
1 | .root {
2 | max-width: 48rem;
3 | margin-right: auto;
4 | margin-left: auto;
5 | font-family: "avenir next", avenir, sans-serif;
6 | }
7 |
--------------------------------------------------------------------------------
/packages/world-clock/src/main.ts:
--------------------------------------------------------------------------------
1 | import renderer from '@dojo/framework/core/vdom';
2 | import App from './widgets/App';
3 |
4 | const r = renderer(() => App({}));
5 | r.mount();
6 |
--------------------------------------------------------------------------------
/packages/resize-observer/src/widgets/styles/columns.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const small: string;
3 | export const badge: string;
4 | export const big: string;
5 |
--------------------------------------------------------------------------------
/packages/store-arrays/src/main.tsx:
--------------------------------------------------------------------------------
1 | import { renderer, tsx } from '@dojo/framework/core/vdom';
2 | import App from './App';
3 |
4 | const r = renderer(() => );
5 | r.mount();
6 |
--------------------------------------------------------------------------------
/packages/world-clock/src/styles/app.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const clocks: string;
2 | export const formFields: string;
3 | export const formField: string;
4 | export const label: string;
5 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/themes/pirate/themeSwitcher.m.css:
--------------------------------------------------------------------------------
1 | .themeSwitcher {
2 | position: absolute;
3 | top: -135px;
4 | right: 0;
5 | }
6 |
7 | .themeSwitcherCheckbox {
8 | }
9 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/widgets/styles/themeSwitcher.m.css:
--------------------------------------------------------------------------------
1 | .themeSwitcher {
2 | position: absolute;
3 | top: -25px;
4 | right: 0;
5 | }
6 |
7 | .themeSwitcherCheckbox {
8 | }
9 |
--------------------------------------------------------------------------------
/packages/custom-element-menu/src/widgets/styles/menu.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const menuContainer: string;
3 | export const home: string;
4 | export const logo: string;
5 |
--------------------------------------------------------------------------------
/packages/hnpwa/src/widgets/styles/content.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const pageLink: string;
2 | export const disabled: string;
3 | export const pagination: string;
4 | export const pageNumber: string;
5 |
--------------------------------------------------------------------------------
/packages/dgrid-wrapper/src/main.ts:
--------------------------------------------------------------------------------
1 | import renderer, { w } from '@dojo/framework/core/vdom';
2 | import App from './widgets/App';
3 |
4 | const r = renderer(() => w(App, {}));
5 |
6 | r.mount();
7 |
--------------------------------------------------------------------------------
/packages/intersection-observer/src/main.ts:
--------------------------------------------------------------------------------
1 | import renderer, { w } from '@dojo/framework/core/vdom';
2 | import App from './widgets/App';
3 |
4 | const r = renderer(() => w(App, {}));
5 | r.mount();
6 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/themes/pirate/todoItem.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const todoItem: string;
2 | export const toggle: string;
3 | export const completed: string;
4 | export const destroy: string;
5 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/widgets/styles/todoFilter.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const filters: string;
2 | export const wrapper: string;
3 | export const link: string;
4 | export const selected: string;
5 |
--------------------------------------------------------------------------------
/packages/hnpwa/src/widgets/styles/comment.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const padding: string;
3 | export const user: string;
4 | export const time: string;
5 | export const comment: string;
6 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/themes/matrix/label.m.css:
--------------------------------------------------------------------------------
1 | .root {
2 | color: var(--color-blue);
3 | font-size: var(--font-size-normal);
4 | font-style: italic;
5 | margin-bottom: calc(var(--grid-size) / 2);
6 | }
7 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/widgets/styles/button.m.css:
--------------------------------------------------------------------------------
1 | .trailing {
2 | border-bottom-left-radius: 0;
3 | border-top-left-radius: 0;
4 | height: var(--input-height);
5 | min-width: auto;
6 | padding: 10px;
7 | }
8 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/widgets/styles/todoFooter.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const footer: string;
2 | export const todoCountLabel: string;
3 | export const todoCount: string;
4 | export const clearCompleted: string;
5 |
--------------------------------------------------------------------------------
/packages/hnpwa/src/widgets/styles/comments.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const article: string;
2 | export const title: string;
3 | export const user: string;
4 | export const comments: string;
5 | export const commentCount: string;
6 |
--------------------------------------------------------------------------------
/packages/resize-middleware/src/main.tsx:
--------------------------------------------------------------------------------
1 | import renderer, { tsx } from '@dojo/framework/core/vdom';
2 |
3 | import { ResizeWidget } from './ResizeWidget';
4 |
5 | const r = renderer(() => );
6 | r.mount();
7 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/widgets/group-assessment/GroupAssessment.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const title: string;
3 | export const row: string;
4 | export const name: string;
5 | export const isNew: string;
6 |
--------------------------------------------------------------------------------
/packages/realworld/src/main.tsx:
--------------------------------------------------------------------------------
1 | import { renderer, tsx } from '@dojo/framework/core/vdom';
2 | import { registry } from './store';
3 |
4 | import { App } from './App';
5 |
6 | const r = renderer(() => );
7 | r.mount({ registry });
8 |
--------------------------------------------------------------------------------
/packages/resize-observer/src/main.ts:
--------------------------------------------------------------------------------
1 | import renderer, { w } from '@dojo/framework/core/vdom';
2 | import App from './widgets/App';
3 | import '@dojo/framework/shim/browser';
4 |
5 | const r = renderer(() => w(App, {}));
6 | r.mount();
7 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/widgets/styles/todoItem.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const todoItem: string;
2 | export const toggle: string;
3 | export const todoLabel: string;
4 | export const completed: string;
5 | export const destroy: string;
6 |
--------------------------------------------------------------------------------
/packages/intersection-observer/src/widgets/styles/app.m.css:
--------------------------------------------------------------------------------
1 | .root {
2 | max-width: 800px;
3 | margin: 100px auto 0;
4 | }
5 |
6 | .title {
7 | font-weight: 300;
8 | font-size: 72px;
9 | text-align: center;
10 | margin: 0 0 100px 0;
11 | }
12 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/fonts.css:
--------------------------------------------------------------------------------
1 | /*
2 | * font-family: Montserrat;
3 | * font-style: normal, italic;
4 | * font-weight: 400, 700;
5 | */
6 | @import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,400;0,700;1,400&display=swap');
7 |
--------------------------------------------------------------------------------
/packages/static-blog/src/routes.ts:
--------------------------------------------------------------------------------
1 | export default [
2 | {
3 | id: 'blog-list',
4 | path: '/',
5 | outlet: 'blog-list',
6 | defaultRoute: true
7 | },
8 | {
9 | id: 'blog',
10 | path: 'blog/{blog}',
11 | outlet: 'blog'
12 | }
13 | ];
14 |
--------------------------------------------------------------------------------
/packages/example-index/.dojorc:
--------------------------------------------------------------------------------
1 | {
2 | "build-app": {
3 | "build-time-render": {
4 | "static": true,
5 | "root": "root",
6 | "discoverPaths": false,
7 | "renderer": "jsdom"
8 | }
9 | },
10 | "test-intern": {},
11 | "create-app": {}
12 | }
--------------------------------------------------------------------------------
/packages/skills-matrix/src/themes/matrix/checkbox.m.css:
--------------------------------------------------------------------------------
1 | .root {
2 | align-items: center;
3 | display: flex;
4 | flex-grow: 1;
5 | }
6 |
7 | .inputWrapper {
8 | margin-right: var(--grid-size);
9 | }
10 |
11 | .input {
12 | margin-left: 0;
13 | }
14 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/widgets/styles/todoViewSwitch.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const viewChooser: string;
2 | export const item: string;
3 | export const active: string;
4 | export const link: string;
5 | export const list: string;
6 | export const cards: string;
7 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/widgets/skillset-filter/SkillsetFilter.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const title: string;
2 | export const controls: string;
3 | export const input: string;
4 | export const items: string;
5 | export const menu: string;
6 | export const typeaheadChip: string;
7 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/.dojorc-test:
--------------------------------------------------------------------------------
1 | {
2 | "build-app": {
3 | "base": "/output/dist/",
4 | "locale": "en",
5 | "supportedLocales": [ "en-PR" ],
6 | "cldrPaths": [ "cldr-data/supplemental/likelySubtags.json", "cldr-data/supplemental/plurals.json" ]
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/packages/store-arrays/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | dojo2-app
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | dojo2 todo mvc
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/packages/dgrid-wrapper/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | dgrid-wrapper-app
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/packages/hnpwa/.gitignore:
--------------------------------------------------------------------------------
1 | /_build
2 | /bower_components
3 | /dist
4 | /html-report
5 | /node_modules
6 | /typings
7 | /output
8 | .baseDir.ts
9 | .tscache
10 | coverage-unmapped.json
11 | coverage-final.json
12 | coverage-final.lcov
13 | npm-debug.log
14 | /_apidoc
15 | deploy_key
16 |
--------------------------------------------------------------------------------
/packages/hnpwa/src/widgets/Loading.tsx:
--------------------------------------------------------------------------------
1 | import { create, tsx } from '@dojo/framework/core/vdom';
2 | import * as css from './styles/loading.m.css';
3 |
4 | const factory = create();
5 |
6 | export default factory(function Loading() {
7 | return ;
8 | });
9 |
--------------------------------------------------------------------------------
/packages/resize-middleware/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | resize-middleware
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/themes/pirate/todoList.m.css:
--------------------------------------------------------------------------------
1 | .todoList {
2 | margin: 0;
3 | padding: 0;
4 | list-style: none;
5 | display: block;
6 | }
7 |
8 | .cardList {
9 | display: flex;
10 | flex-direction: row;
11 | flex-wrap: wrap;
12 | box-sizing: border-box;
13 | }
14 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/themes/matrix/chip-typeahead.m.css:
--------------------------------------------------------------------------------
1 | .inputWrapper {
2 | flex-wrap: wrap;
3 | }
4 |
5 | .item {
6 | overflow: hidden;
7 | text-overflow: ellipsis;
8 | white-space: nowrap;
9 | width: 100%;
10 | }
11 |
12 | .values {
13 | margin-top: var(--grid-size);
14 | }
15 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/widgets/header/Header.m.css:
--------------------------------------------------------------------------------
1 | @import '../../variables.css';
2 |
3 | .root {
4 | align-items: center;
5 | background: var(--color-blue);
6 | display: flex;
7 | justify-content: center;
8 | }
9 |
10 | .arrow {
11 | margin-right: calc(var(--grid-size) * 2);
12 | }
13 |
--------------------------------------------------------------------------------
/packages/intersection-observer/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Infinite Scrolling List
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/App.m.css:
--------------------------------------------------------------------------------
1 | @import './variables.css';
2 |
3 | .container {
4 | align-content: center;
5 | display: flex;
6 | justify-content: center;
7 | }
8 |
9 | .content {
10 | max-width: 100vw;
11 | padding: 0 var(--content-gutter);
12 | width: var(--content-width);
13 | }
14 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/widgets/skills/Skills.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const copyButton: string;
3 | export const successButton: string;
4 | export const success: string;
5 | export const successVisible: string;
6 | export const hashInput: string;
7 | export const column: string;
8 |
--------------------------------------------------------------------------------
/packages/static-blog/src/Blog.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const header: string;
2 | export const container: string;
3 | export const date: string;
4 | export const title: string;
5 | export const titleLabel: string;
6 | export const description: string;
7 | export const author: string;
8 | export const blog: string;
9 |
--------------------------------------------------------------------------------
/packages/world-clock/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | world-clock
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/packages/world-clock/src/styles/clock.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const label: string;
2 | export const clock: string;
3 | export const hourText: string;
4 | export const hand: string;
5 | export const hourHand: string;
6 | export const minuteHand: string;
7 | export const secondHand: string;
8 | export const joint: string;
9 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/themes/matrix/list-item.m.css:
--------------------------------------------------------------------------------
1 | .root {
2 | background: white;
3 | border: 1px solid transparent;
4 | cursor: pointer;
5 | height: 45px;
6 | padding: 11px 10px 10px 10px;
7 | }
8 |
9 | .selected {
10 | background: white;
11 | color: var(--color-gray);
12 | cursor: default;
13 | }
14 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/widgets/skill-key/SkillKey.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const title: string;
2 | export const level: string;
3 | export const entry: string;
4 | export const level1: string;
5 | export const level2: string;
6 | export const level3: string;
7 | export const level4: string;
8 | export const skillRow: string;
9 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/widgets/styles/credits.m.css:
--------------------------------------------------------------------------------
1 | .footer {
2 | margin: 65px auto 0;
3 | color: #bfbfbf;
4 | font-size: 10px;
5 | text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
6 | text-align: center;
7 | }
8 |
9 | @media (max-width: 430px) {
10 | .footer {
11 | height: 50px;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/packages/world-clock/src/styles/app.m.css:
--------------------------------------------------------------------------------
1 | .clocks {
2 | display: flex;
3 | flex-wrap: wrap;
4 | }
5 |
6 | .formFields {
7 | align-items: center;
8 | display: flex;
9 | margin-bottom: 2rem;
10 | }
11 |
12 | .formField {
13 | margin-right: 1rem;
14 | }
15 |
16 | .label {
17 | margin-right: 0.5rem;
18 | }
19 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/themes/pirate/credits.m.css:
--------------------------------------------------------------------------------
1 | .footer {
2 | margin: 145px 0 0 -55px;
3 | color: #bfbfbf;
4 | font-size: 10px;
5 | text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
6 | text-align: center;
7 | }
8 |
9 | @media (max-width: 430px) {
10 | .footer {
11 | height: 50px;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/themes/pirate/todoDetails.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const backdrop: string;
2 | export const modal: string;
3 | export const close: string;
4 | export const todoDetailsHeader: string;
5 | export const todoDetailsTextArea: string;
6 | export const lastUpdated: string;
7 | export const toggle: string;
8 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/widgets/styles/todoList.m.css:
--------------------------------------------------------------------------------
1 | .todoList {
2 | margin: 0;
3 | padding: 0;
4 | list-style: none;
5 | display: block;
6 | }
7 |
8 | .cardList {
9 | display: flex;
10 | flex-direction: row;
11 | flex-wrap: wrap;
12 | box-sizing: border-box;
13 | background-color: #f6f6f6;
14 | }
15 |
--------------------------------------------------------------------------------
/packages/todo-mvc/.gitignore:
--------------------------------------------------------------------------------
1 | *.js
2 | *.js.map
3 | !/*.js
4 | !/tasks/*.js
5 | /_build
6 | /bower_components
7 | /dist
8 | /output
9 | /html-report
10 | /node_modules
11 | /coverage
12 | coverage-final.lcov
13 | atypings
14 | .baseDir.ts
15 | .tscache
16 | .tsconfig*.json
17 | coverage-unmapped.json
18 | npm-debug.log
19 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/App.m.css:
--------------------------------------------------------------------------------
1 | .todoapp {
2 | background: #fff;
3 | margin: 130px 0 40px 0;
4 | position: relative;
5 | box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1);
6 | }
7 |
8 | .main {
9 | position: relative;
10 | z-index: 2;
11 | border-top: 1px solid #e6e6e6;
12 | }
13 |
--------------------------------------------------------------------------------
/packages/world-clock/src/styles/variables.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --clock-fill-color: #000;
3 | --clock-hand-color: #fff;
4 | --clock-text-color: #fff;
5 | --clock-text-size: 16px;
6 | --clock-size: 160px;
7 | --hour-hand-stroke-width: 6px;
8 | --minute-hand-stroke-width: 3px;
9 | --second-hand-stroke-width: 2px;
10 | }
11 |
--------------------------------------------------------------------------------
/packages/icache-basic/.gitignore:
--------------------------------------------------------------------------------
1 | assets
2 | *.js
3 | *.js.map
4 | !/*.js
5 | !/tasks/*.js
6 | /_build
7 | /bower_components
8 | /dist
9 | /example
10 | /html-report
11 | /output
12 | /temp-example
13 | /node_modules
14 | /typings
15 | .baseDir.ts
16 | .tscache
17 | .tsconfig*.json
18 | coverage-unmapped.json
19 | npm-debug.log
20 |
--------------------------------------------------------------------------------
/packages/resize-observer/.gitignore:
--------------------------------------------------------------------------------
1 | *.js
2 | *.js.map
3 | !/*.js
4 | !/tasks/*.js
5 | /_build
6 | /bower_components
7 | /dist
8 | /output
9 | /html-report
10 | /node_modules
11 | /coverage
12 | coverage-final.lcov
13 | atypings
14 | .baseDir.ts
15 | .tscache
16 | .tsconfig*.json
17 | coverage-unmapped.json
18 | npm-debug.log
19 |
--------------------------------------------------------------------------------
/packages/static-blog/.gitignore:
--------------------------------------------------------------------------------
1 | assets
2 | *.js
3 | *.js.map
4 | !/*.js
5 | !/tasks/*.js
6 | /_build
7 | /bower_components
8 | /dist
9 | /example
10 | /html-report
11 | /output
12 | /temp-example
13 | /node_modules
14 | /typings
15 | .baseDir.ts
16 | .tscache
17 | .tsconfig*.json
18 | coverage-unmapped.json
19 | npm-debug.log
20 |
--------------------------------------------------------------------------------
/packages/store-arrays/.gitignore:
--------------------------------------------------------------------------------
1 | assets
2 | *.js
3 | *.js.map
4 | !/*.js
5 | !/tasks/*.js
6 | /_build
7 | /bower_components
8 | /dist
9 | /example
10 | /html-report
11 | /output
12 | /temp-example
13 | /node_modules
14 | /typings
15 | .baseDir.ts
16 | .tscache
17 | .tsconfig*.json
18 | coverage-unmapped.json
19 | npm-debug.log
20 |
--------------------------------------------------------------------------------
/packages/icache-advanced/.gitignore:
--------------------------------------------------------------------------------
1 | assets
2 | *.js
3 | *.js.map
4 | !/*.js
5 | !/tasks/*.js
6 | /_build
7 | /bower_components
8 | /dist
9 | /example
10 | /html-report
11 | /output
12 | /temp-example
13 | /node_modules
14 | /typings
15 | .baseDir.ts
16 | .tscache
17 | .tsconfig*.json
18 | coverage-unmapped.json
19 | npm-debug.log
20 |
--------------------------------------------------------------------------------
/packages/resize-middleware/.gitignore:
--------------------------------------------------------------------------------
1 | assets
2 | *.js
3 | *.js.map
4 | !/*.js
5 | !/tasks/*.js
6 | /_build
7 | /bower_components
8 | /dist
9 | /example
10 | /html-report
11 | /output
12 | /temp-example
13 | /node_modules
14 | /typings
15 | .baseDir.ts
16 | .tscache
17 | .tsconfig*.json
18 | coverage-unmapped.json
19 | npm-debug.log
20 |
--------------------------------------------------------------------------------
/packages/resize-observer/src/widgets/styles/app.m.css:
--------------------------------------------------------------------------------
1 | .root {
2 | width: 100%;
3 | height: 100%;
4 | position: relative;
5 | overflow-y: scroll; /* has to be scroll, not auto */
6 | -webkit-overflow-scrolling: touch;
7 | }
8 |
9 | .controls {
10 | height: 25px;
11 | }
12 |
13 | .parentContainer {
14 | display: flex;
15 | }
16 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/.gitignore:
--------------------------------------------------------------------------------
1 | *.js
2 | *.js.map
3 | !/*.js
4 | !/tasks/*.js
5 | /_build
6 | /bower_components
7 | /dist
8 | /output
9 | /html-report
10 | /node_modules
11 | /typings
12 | /coverage
13 | coverage-final.lcov
14 | .baseDir.ts
15 | .tscache
16 | .tsconfig*.json
17 | coverage-unmapped.json
18 | npm-debug.log
19 |
--------------------------------------------------------------------------------
/packages/custom-element-menu/.gitignore:
--------------------------------------------------------------------------------
1 | assets
2 | *.js
3 | *.js.map
4 | !/*.js
5 | !/tasks/*.js
6 | /_build
7 | /bower_components
8 | /dist
9 | /example
10 | /html-report
11 | /output
12 | /temp-example
13 | /node_modules
14 | /typings
15 | .baseDir.ts
16 | .tscache
17 | .tsconfig*.json
18 | coverage-unmapped.json
19 | npm-debug.log
20 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/widgets/assessment/Assessment.m.css:
--------------------------------------------------------------------------------
1 | @import '../../variables.css';
2 |
3 | .root {
4 | margin-bottom: calc(var(--grid-size) * 3);
5 | }
6 |
7 | .title {
8 | margin-bottom: calc(var(--grid-size) * 1.25);
9 | }
10 |
11 | .noResults {
12 | font-style: italic;
13 | margin-bottom: var(--grid-size);
14 | }
15 |
--------------------------------------------------------------------------------
/packages/hnpwa/src/routes.ts:
--------------------------------------------------------------------------------
1 | export default [
2 | {
3 | id: 'content',
4 | path: '/{category}/{page}',
5 | outlet: 'content',
6 | defaultRoute: true,
7 | defaultParams: {
8 | category: 'top',
9 | page: '1'
10 | }
11 | },
12 | {
13 | id: 'comments',
14 | path: '/comments/{id}',
15 | outlet: 'comments'
16 | }
17 | ];
18 |
--------------------------------------------------------------------------------
/packages/world-clock/src/nls/fr/main.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | arabic: 'Arabe',
3 | english: 'Anglais',
4 | french: 'Français',
5 | japanese: 'Japonais',
6 | language: 'Langue',
7 | spanish: 'Espanol',
8 |
9 | cairo: 'El Caire',
10 | london: 'Londres',
11 | mexicoCity: 'Mexico',
12 |
13 | multipleLocales: 'Plusieurs langues'
14 | };
15 |
--------------------------------------------------------------------------------
/packages/hnpwa/src/widgets/styles/menu.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const menuContainer: string;
3 | export const home: string;
4 | export const logoLoaded: string;
5 | export const fadein: string;
6 | export const logo: string;
7 | export const item: string;
8 | export const link: string;
9 | export const selected: string;
10 |
--------------------------------------------------------------------------------
/packages/resize-observer/src/widgets/styles/article.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const content: string;
3 | export const text: string;
4 | export const big: string;
5 | export const badge: string;
6 | export const medium: string;
7 | export const small: string;
8 | export const title: string;
9 | export const paragraph: string;
10 |
--------------------------------------------------------------------------------
/packages/static-blog/src/BlogPreview.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const link: string;
3 | export const container: string;
4 | export const imageWrapper: string;
5 | export const image: string;
6 | export const textWrapper: string;
7 | export const title: string;
8 | export const snippet: string;
9 | export const author: string;
10 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/themes/pirate/todoCard.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const card: string;
2 | export const cardHeader: string;
3 | export const cardToggle: string;
4 | export const cardDestroy: string;
5 | export const completed: string;
6 | export const todoLabel: string;
7 | export const listItem: string;
8 | export const destroyContainer: string;
9 |
--------------------------------------------------------------------------------
/packages/icache-advanced/src/main.tsx:
--------------------------------------------------------------------------------
1 | import { tsx, renderer } from '@dojo/framework/core/vdom';
2 | import '@material/card/dist/mdc.card.css';
3 | import '@material/button/dist/mdc.button.css';
4 | import '@material/typography/dist/mdc.typography.css';
5 |
6 | import { App } from './App';
7 |
8 | const r = renderer(() => );
9 | r.mount();
10 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/widgets/home/Home.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const column: string;
3 | export const heading: string;
4 | export const icon: string;
5 | export const label: string;
6 | export const textInput: string;
7 | export const divider: string;
8 | export const dividerLine: string;
9 | export const dividerBadge: string;
10 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = tab
6 | indent_size = 4
7 | end_of_line = lf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
15 | [{package.json,.travis.yml}]
16 | indent_style = space
17 | indent_size = 2
18 |
--------------------------------------------------------------------------------
/packages/example-index/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | example-index
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/packages/example-index/src/examples.block.ts:
--------------------------------------------------------------------------------
1 | import { readdirSync } from 'fs';
2 | import { join } from 'path';
3 |
4 | export default function () {
5 | return readdirSync(join(__dirname, '..', '..'), { withFileTypes: true })
6 | .filter((dirent) => dirent.isDirectory())
7 | .map((dirent) => dirent.name)
8 | .filter((name) => name !== 'example-index');
9 | }
10 |
--------------------------------------------------------------------------------
/packages/todo-mvc/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = tab
6 | indent_size = 4
7 | end_of_line = lf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
15 | [{package.json,.travis.yml}]
16 | indent_style = space
17 | indent_size = 2
18 |
--------------------------------------------------------------------------------
/packages/icache-advanced/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = tab
6 | indent_size = 4
7 | end_of_line = lf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
15 | [{package.json,.travis.yml}]
16 | indent_style = space
17 | indent_size = 2
18 |
--------------------------------------------------------------------------------
/packages/icache-basic/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = tab
6 | indent_size = 4
7 | end_of_line = lf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
15 | [{package.json,.travis.yml}]
16 | indent_style = space
17 | indent_size = 2
18 |
--------------------------------------------------------------------------------
/packages/intersection-observer/src/widgets/styles/Item.m.css:
--------------------------------------------------------------------------------
1 | .root {
2 | background-color: white;
3 | padding: 40px;
4 | border: 1px solid #eee;
5 | margin: 17px;
6 | }
7 |
8 | .title {
9 | font-size: 16px;
10 | font-weight: bold;
11 | margin: 0;
12 | color: #0170cd;
13 | }
14 |
15 | .summary {
16 | font-family: serif;
17 | font-size: 16px;
18 | line-height: 1.6em;
19 | }
20 |
--------------------------------------------------------------------------------
/packages/static-blog/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = tab
6 | indent_size = 4
7 | end_of_line = lf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
15 | [{package.json,.travis.yml}]
16 | indent_style = space
17 | indent_size = 2
18 |
--------------------------------------------------------------------------------
/packages/store-arrays/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = tab
6 | indent_size = 4
7 | end_of_line = lf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
15 | [{package.json,.travis.yml}]
16 | indent_style = space
17 | indent_size = 2
18 |
--------------------------------------------------------------------------------
/packages/dgrid-wrapper/loaderConfig.js:
--------------------------------------------------------------------------------
1 | dojoConfig = {
2 | baseUrl: "externals/",
3 | packages: [
4 | { name: 'dojo', location: 'dojo' },
5 | { name: 'dijit', location: 'dijit' },
6 | { name: 'dgrid', location: 'dgrid' },
7 | { name: 'dstore', location: 'dstore' }
8 | ],
9 | has: {
10 | highcontrast: 0
11 | },
12 | async: true
13 | };
--------------------------------------------------------------------------------
/packages/hnpwa/src/widgets/styles/loading.m.css:
--------------------------------------------------------------------------------
1 | .spinner {
2 | width: 40px;
3 | height: 40px;
4 | margin: 100px auto;
5 | background-color: #333;
6 | border-radius: 100%;
7 | animation: sk-scaleout 1s infinite ease-in-out;
8 | }
9 |
10 | @keyframes sk-scaleout {
11 | 0% {
12 | transform: scale(0);
13 | }
14 | 100% {
15 | transform: scale(1);
16 | opacity: 0;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/packages/resize-middleware/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = tab
6 | indent_size = 4
7 | end_of_line = lf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
15 | [{package.json,.travis.yml}]
16 | indent_style = space
17 | indent_size = 2
18 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = tab
6 | indent_size = 4
7 | end_of_line = lf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
15 | [{package.json,.travis.yml}]
16 | indent_style = space
17 | indent_size = 2
18 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/widgets/styles/todoCard.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const card: string;
2 | export const cardHeader: string;
3 | export const cardToggle: string;
4 | export const cardDestroy: string;
5 | export const todoLabel: string;
6 | export const completed: string;
7 | export const listItem: string;
8 | export const destroyContainer: string;
9 | export const destroy: string;
10 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/widgets/styles/todoDetails.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const todoDetails: string;
2 | export const title: string;
3 | export const backdrop: string;
4 | export const modal: string;
5 | export const close: string;
6 | export const todoDetailsHeader: string;
7 | export const todoDetailsTextArea: string;
8 | export const lastUpdated: string;
9 | export const toggle: string;
10 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/widgets/assessment-list/AssessmentList.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const title: string;
3 | export const row: string;
4 | export const close: string;
5 | export const addControls: string;
6 | export const add: string;
7 | export const deleteText: string;
8 | export const yes: string;
9 | export const no: string;
10 | export const inputButton: string;
11 |
--------------------------------------------------------------------------------
/packages/resize-observer/src/main.css:
--------------------------------------------------------------------------------
1 | html,
2 | body {
3 | width: 100%;
4 | height: 100%;
5 | margin: 0;
6 | padding: 0;
7 | font: 1em/1.5 system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Droid Sans,
8 | Helvetica Neue;
9 | color: #404040;
10 | }
11 |
12 | h1,
13 | h2,
14 | h3,
15 | p {
16 | padding: 0;
17 | margin: 0;
18 | user-select: none;
19 | }
20 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SitePen: Skills Matrix
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/packages/resize-observer/src/widgets/styles/common.m.css:
--------------------------------------------------------------------------------
1 | .badge {
2 | color: #fff;
3 | background: #fff;
4 | font-size: 0.8em;
5 | font-weight: 700;
6 | letter-spacing: 0.1em;
7 | position: absolute;
8 | right: -3.1em;
9 | text-align: center;
10 | top: -1.2em;
11 | transform: rotate(45deg);
12 | transform-origin: 0 0;
13 | width: 6em;
14 | z-index: 10;
15 | transition: all 0.5s ease-in;
16 | }
17 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/themes/matrix/header.m.css:
--------------------------------------------------------------------------------
1 | .root {
2 | align-items: center;
3 | display: flex;
4 | background: var(--color-blue);
5 | color: var(--color-white);
6 | font-size: var(--font-size-large);
7 | height: var(--header-height);
8 | max-width: 100vw;
9 | padding: 0 var(--content-gutter);
10 | width: var(--content-width);
11 | }
12 |
13 | .row {
14 | display: flex;
15 | flex: 1;
16 | }
17 |
--------------------------------------------------------------------------------
/packages/resize-observer/src/widgets/styles/card.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const text: string;
3 | export const big: string;
4 | export const badge: string;
5 | export const badgeLeft: string;
6 | export const medium: string;
7 | export const figureHolder: string;
8 | export const small: string;
9 | export const figure: string;
10 | export const title: string;
11 | export const bodyHolder: string;
12 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/widgets/compare/Compare.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const column: string;
3 | export const editLink: string;
4 | export const linkText: string;
5 | export const showToggle: string;
6 | export const successButton: string;
7 | export const hashInput: string;
8 | export const dialogTitle: string;
9 | export const dialogContent: string;
10 | export const dialogActions: string;
11 |
--------------------------------------------------------------------------------
/packages/resize-observer/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Dojo Resize Observer Demo
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/main.css:
--------------------------------------------------------------------------------
1 | @import './fonts.css';
2 |
3 | body {
4 | box-sizing: border-box;
5 | font-family: 'Montserrat', sans-serif;
6 | margin: 0;
7 | padding: 0;
8 | }
9 |
10 | * {
11 | box-sizing: border-box;
12 | }
13 |
14 | h1 {
15 | align-items: center;
16 | color: var(--color-blue);
17 | display: flex;
18 | font-size: var(--font-size-normal);
19 | font-weight: 900;
20 | margin: 0;
21 | }
22 |
23 |
--------------------------------------------------------------------------------
/packages/hnpwa/src/widgets/styles/comment.m.css:
--------------------------------------------------------------------------------
1 | .root {
2 | padding: 0 1.5rem;
3 | }
4 |
5 | .padding {
6 | margin: 0 0 16px;
7 | }
8 |
9 | .user {
10 | color: #666;
11 | cursor: pointer;
12 | text-decoration: underline;
13 | }
14 |
15 | .time {
16 | padding-left: 8px;
17 | font-size: 13px;
18 | }
19 |
20 | .comment {
21 | border-bottom: 1px solid #ececec;
22 | padding-bottom: 16px;
23 | margin-bottom: 16px;
24 | }
25 |
--------------------------------------------------------------------------------
/packages/store-arrays/src/store.ts:
--------------------------------------------------------------------------------
1 | import createStoreMiddleware from '@dojo/framework/core/middleware/store';
2 | import { initialStateProcess } from './appProcesses';
3 |
4 | export interface Company {
5 | name: string;
6 | people: string[];
7 | }
8 |
9 | export interface State {
10 | companies: Company[];
11 | }
12 |
13 | export default createStoreMiddleware((store) => {
14 | initialStateProcess(store)({});
15 | });
16 |
--------------------------------------------------------------------------------
/packages/hnpwa/src/interfaces.d.ts:
--------------------------------------------------------------------------------
1 | export interface CommentItem {
2 | user: string | null;
3 | content: string;
4 | time_ago: string;
5 | comments: CommentItem[];
6 | }
7 |
8 | export interface ArticleItem {
9 | id: number;
10 | title: string;
11 | user: string | null;
12 | url: string;
13 | points: string | null;
14 | time_ago: string;
15 | comments_count: number;
16 | loading: boolean;
17 | comments: CommentItem[];
18 | }
19 |
--------------------------------------------------------------------------------
/packages/store-arrays/src/data.ts:
--------------------------------------------------------------------------------
1 | import * as faker from 'faker';
2 |
3 | export default function generateData(size: number): any {
4 | const companies = [];
5 | for (let i = 0; i < size; i++) {
6 | const people = [];
7 | for (let j = 0; j < 5; j++) {
8 | people.push(faker.name.firstName());
9 | }
10 | companies.push({
11 | name: faker.company.companyName(),
12 | people
13 | });
14 | }
15 | return companies;
16 | }
17 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/themes/matrix/typeahead.m.css:
--------------------------------------------------------------------------------
1 | /* TODO: this does not have any effect */
2 | /* It would be preferable to move the typeahead-specific styles from list-item.m.css to here */
3 | .menuItemRoot {
4 | background: pink !important;
5 | border: 2px solid purple !important;
6 | color: red;
7 | padding-top: 11px;
8 | }
9 |
10 | .menuRoot {
11 | border: 1px solid var(--color-light-gray);
12 | border-top-width: 0;
13 | }
14 |
--------------------------------------------------------------------------------
/packages/hnpwa/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | hnpwa
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/packages/world-clock/src/nls/ja/main.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | arabic: 'アラビア語',
3 | english: '英語',
4 | french: 'フランス語',
5 | hindi: 'ヒンディー語',
6 | japanese: '日本語',
7 | language: '言語',
8 | spanish: 'スペイン語',
9 |
10 | cairo: 'カイロ',
11 | johannesburg: 'ヨハネスブルグ',
12 | london: 'ロンドン',
13 | mexicoCity: 'メキシコシティ',
14 | newDehli: 'ニューデリー',
15 | newYork: 'ニューヨーク',
16 | paris: 'フランス',
17 | tokyo: '東京',
18 |
19 | multipleLocales: '複数のロケール'
20 | };
21 |
--------------------------------------------------------------------------------
/packages/realworld/src/widgets/Banner.tsx:
--------------------------------------------------------------------------------
1 | import { create, tsx } from '@dojo/framework/core/vdom';
2 |
3 | const factory = create();
4 |
5 | export const Banner = factory(function Banner() {
6 | return (
7 |
8 |
9 |
conduit
10 |
A place to share your knowledge.
11 |
12 |
13 | );
14 | });
15 |
16 | export default Banner;
17 |
--------------------------------------------------------------------------------
/packages/static-blog/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Dojo Blocks Blog
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/main.ts:
--------------------------------------------------------------------------------
1 | import Registry from '@dojo/framework/core/Registry';
2 | import renderer, { w } from '@dojo/framework/core/vdom';
3 | import { registerRouterInjector } from '@dojo/framework/routing/RouterInjector';
4 |
5 | import App from './App';
6 | import routes from './routes';
7 |
8 | const registry = new Registry();
9 | registerRouterInjector(routes, registry);
10 |
11 | const r = renderer(() => w(App, {}));
12 | r.mount({ registry });
13 |
--------------------------------------------------------------------------------
/packages/hnpwa/src/main.tsx:
--------------------------------------------------------------------------------
1 | import renderer, { tsx } from '@dojo/framework/core/vdom';
2 | import { Registry } from '@dojo/framework/core/Registry';
3 | import { registerRouterInjector } from '@dojo/framework/routing/RouterInjector';
4 |
5 | import routes from './routes';
6 | import App from './widgets/App';
7 |
8 | const registry = new Registry();
9 | registerRouterInjector(routes, registry);
10 |
11 | const r = renderer(() => );
12 | r.mount({ registry });
13 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/store.ts:
--------------------------------------------------------------------------------
1 | import { createStoreMiddleware } from '@dojo/framework/core/middleware/store';
2 |
3 | export interface Todo {
4 | id: string;
5 | label: string;
6 | completed?: boolean;
7 | }
8 |
9 | export interface State {
10 | todos?: Todo[];
11 | current?: string;
12 | completedCount?: number;
13 | editingId?: string;
14 | editingLabel?: string;
15 | search?: string;
16 | }
17 |
18 | export default createStoreMiddleware();
19 |
--------------------------------------------------------------------------------
/packages/custom-element-menu/src/widgets/styles/menu.m.css:
--------------------------------------------------------------------------------
1 | html,
2 | body {
3 | margin: 0;
4 | padding: 0;
5 | font-family: sans-serif;
6 | }
7 |
8 | .root {
9 | width: 100%;
10 | top: 0;
11 | height: 48px;
12 | z-index: 100;
13 | background-color: #1d1f20;
14 | }
15 |
16 | .menuContainer {
17 | height: 100%;
18 | margin: 0 auto;
19 | }
20 |
21 | .home {
22 | float: left;
23 | cursor: pointer;
24 | }
25 |
26 | .logo {
27 | height: 38px;
28 | padding: 4px;
29 | }
30 |
--------------------------------------------------------------------------------
/packages/resize-observer/src/widgets/styles/resizableSection.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const sizeControls: string;
3 | export const zeroColumns: string;
4 | export const oneColumn: string;
5 | export const twoColumns: string;
6 | export const threeColumns: string;
7 | export const fourColumns: string;
8 | export const fiveColumns: string;
9 | export const sixColumns: string;
10 | export const sevenColumns: string;
11 | export const eightColumns: string;
12 |
--------------------------------------------------------------------------------
/packages/realworld/src/processes/tagProcesses.ts:
--------------------------------------------------------------------------------
1 | import { createProcess } from '@dojo/framework/stores/process';
2 | import { commandFactory } from './utils';
3 | import { baseUrl } from '../config';
4 |
5 | const getTagsCommand = commandFactory(async ({ state }) => {
6 | const response = await fetch(`${baseUrl}/tags`);
7 | const json = await response.json();
8 |
9 | state.tags = json.tags;
10 | });
11 |
12 | export const getTagsProcess = createProcess('get-tags', [getTagsCommand]);
13 |
--------------------------------------------------------------------------------
/packages/realworld/src/processes/utils.ts:
--------------------------------------------------------------------------------
1 | import { createCommandFactory } from '@dojo/framework/stores/process';
2 | import { State } from '../interfaces';
3 |
4 | export function getHeaders(token?: string): any {
5 | const headers: { [key: string]: string } = {
6 | 'Content-Type': 'application/json'
7 | };
8 | if (token) {
9 | headers['Authorization'] = `Token ${token}`;
10 | }
11 | return headers;
12 | }
13 |
14 | export const commandFactory = createCommandFactory();
15 |
--------------------------------------------------------------------------------
/packages/world-clock/src/nls/es/main.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | arabic: 'Arábica',
3 | english: 'Inglés',
4 | french: 'Francés',
5 | japanese: 'Japonés',
6 | language: 'Lengua',
7 | spanish: 'Español',
8 |
9 | cairo: 'El Cairo',
10 | johannesburg: 'Johanesburgo',
11 | london: 'Londres',
12 | mexicoCity: 'Ciudad de México',
13 | newDehli: 'Nueva Dehli',
14 | newYork: 'Nueva York',
15 | paris: 'París',
16 | tokyo: 'Tokio',
17 |
18 | multipleLocales: 'múltiples idiomas'
19 | };
20 |
--------------------------------------------------------------------------------
/packages/world-clock/src/nls/ar/main.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | arabic: 'عربى',
3 | english: 'الإنجليزية',
4 | hindi: 'الهندية',
5 | french: 'الفرنسية',
6 | japanese: 'اليابانية',
7 | language: 'لغة',
8 | spanish: 'الأسبانية',
9 |
10 | cairo: 'القاهرة',
11 | johannesburg: 'جوهانسبرج',
12 | london: 'لندن',
13 | mexicoCity: 'مكسيكو سيتي',
14 | newDehli: 'نيو دلهي',
15 | newYork: 'نيويورك',
16 | paris: 'باريس',
17 | tokyo: 'طوكي',
18 |
19 | multipleLocales: 'لغات متعددة'
20 | };
21 |
--------------------------------------------------------------------------------
/packages/world-clock/src/nls/hi/main.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | arabic: 'अरबी',
3 | english: 'अंग्रेज़ी',
4 | french: 'फ्रांसीसी',
5 | hindi: 'हिंदी',
6 | japanese: 'जापानी',
7 | language: 'भाषा',
8 | spanish: 'स्पनिश',
9 |
10 | cairo: 'काहिरा',
11 | johannesburg: 'जोहानसबर्ग',
12 | london: 'लंडन',
13 | mexicoCity: 'मेक्सिको सिटी',
14 | newDehli: 'नई दिल्ली',
15 | newYork: 'न्यूयॉर्क',
16 | paris: 'पेरिस',
17 | tokyo: 'टोक्यो',
18 |
19 | multipleLocales: 'विभिन्न भाषाएं'
20 | };
21 |
--------------------------------------------------------------------------------
/packages/resize-observer/src/widgets/styles/columns.m.css:
--------------------------------------------------------------------------------
1 | .root {
2 | display: grid;
3 | position: relative;
4 | overflow: hidden;
5 | & > div {
6 | margin-bottom: 10px;
7 | }
8 | }
9 |
10 | .small {
11 | grid-template-columns: 1fr;
12 |
13 | & .badge {
14 | background: #33b2cc;
15 | }
16 | }
17 |
18 | .big {
19 | grid-template-columns: 1fr 1fr;
20 |
21 | & .badge {
22 | background: #40bf80;
23 | }
24 | }
25 |
26 | .badge {
27 | composes: badge from "./common.m.css";
28 | }
29 |
--------------------------------------------------------------------------------
/packages/todo-mvc/.gitattributes:
--------------------------------------------------------------------------------
1 | # Set the default behavior, in case users don't have core.autocrlf set
2 | * text=auto
3 |
4 | # Files that should always be normalized and converted to native line
5 | # endings on checkout.
6 | *.js text
7 | *.json text
8 | *.ts text
9 | *.md text
10 | *.yml text
11 | LICENSE text
12 |
13 | # Files that are truly binary and should not be modified
14 | *.png binary
15 | *.jpg binary
16 | *.jpeg binary
17 | *.gif binary
18 | *.jar binary
19 | *.zip binary
20 | *.psd binary
21 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/.gitattributes:
--------------------------------------------------------------------------------
1 | # Set the default behavior, in case users don't have core.autocrlf set
2 | * text=auto
3 |
4 | # Files that should always be normalized and converted to native line
5 | # endings on checkout.
6 | *.js text
7 | *.json text
8 | *.ts text
9 | *.md text
10 | *.yml text
11 | LICENSE text
12 |
13 | # Files that are truly binary and should not be modified
14 | *.png binary
15 | *.jpg binary
16 | *.jpeg binary
17 | *.gif binary
18 | *.jar binary
19 | *.zip binary
20 | *.psd binary
21 |
--------------------------------------------------------------------------------
/packages/hnpwa/src/widgets/styles/comments.m.css:
--------------------------------------------------------------------------------
1 | .article {
2 | margin-bottom: 24px;
3 | border-bottom: 32px solid #f3f3f3;
4 | padding: 16px 24px 8px;
5 | }
6 |
7 | .title {
8 | display: block;
9 | text-decoration: none;
10 | font-size: 27px;
11 | color: #000;
12 | margin-bottom: 12px;
13 | }
14 |
15 | .user {
16 | color: #666;
17 | }
18 |
19 | .comments {
20 | padding: 0 24px;
21 | }
22 |
23 | .commentCount {
24 | border-bottom: 1px solid #ececec;
25 | margin-bottom: 12px;
26 | padding-bottom: 12px;
27 | }
28 |
--------------------------------------------------------------------------------
/packages/dgrid-wrapper/testLoaderConfig.js:
--------------------------------------------------------------------------------
1 | const globalObj = typeof window !== 'undefined' ? window : global;
2 | globalObj.dojoConfig = {
3 | baseUrl: '../../output/test/unit',
4 | packages: [
5 | { name: 'dojo', location: 'externals/dojo' },
6 | { name: 'dijit', location: 'externals/dijit' },
7 | { name: 'dgrid', location: 'externals/dgrid' },
8 | { name: 'dstore', location: 'externals/dstore' }
9 | ],
10 | has: {
11 | highcontrast: 0
12 | },
13 | async: true
14 | };
15 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/themes/matrix/text-area.m.css:
--------------------------------------------------------------------------------
1 | .input {
2 | border-radius: var(--input-border-radius);
3 | border: 1px solid var(--color-light-gray);
4 | color: var(--color-gray);
5 | font-family: inherit;
6 | font-size: var(--font-size-normal);
7 | height: calc(14.5 * var(--grid-size));
8 | margin-bottom: calc(var(--grid-size) * 2);
9 | max-width: var(--input-width);
10 | outline: none;
11 | padding: calc(var(--grid-size) * 1.25);
12 | width: 100%;
13 | }
14 |
15 | .inputWrapper {
16 | font-size: 0;
17 | }
18 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/themes/matrix/chip.m.css:
--------------------------------------------------------------------------------
1 | .root {
2 | align-items: center;
3 | border-radius: calc(var(--grid-size) * 0.75);
4 | border: 1px solid var(--color-light-gray);
5 | color: var(--color-dark-gray);
6 | display: inline-flex;
7 | font-size: var(--font-size-normal);
8 | margin-bottom: var(--grid-size);
9 | margin-right: var(--grid-size);
10 | padding: var(--grid-size) calc(var(--grid-size) * 1.25);
11 | }
12 |
13 | .iconWrapper {
14 | height: calc(var(--grid-size) * 2);
15 | margin-right: var(--grid-size);
16 | }
17 |
--------------------------------------------------------------------------------
/packages/store-arrays/src/main.css:
--------------------------------------------------------------------------------
1 | /* Put your styles and imports here */
2 |
3 | body {
4 | text-align: center;
5 | font-family: sans-serif;
6 | }
7 |
8 | .parent {
9 | display: flex;
10 | flex-flow: row wrap;
11 | justify-content: flex-start;
12 | }
13 |
14 | .child {
15 | padding: 5px;
16 | width: 200px;
17 | user-select: none;
18 | border: 1px black solid;
19 | margin: 5px;
20 | }
21 |
22 | .company {
23 | padding-bottom: 5px;
24 | height: 50px;
25 | }
26 |
27 | .people {
28 | display: flex;
29 | justify-content: space-between;
30 | }
31 |
--------------------------------------------------------------------------------
/packages/static-blog/src/App.tsx:
--------------------------------------------------------------------------------
1 | import { tsx, create } from '@dojo/framework/core/vdom';
2 | import Route from '@dojo/framework/routing/Route';
3 | import Header from './Header';
4 | import BlogList from './BlogList';
5 | import Blog from './Blog';
6 |
7 | const factory = create();
8 |
9 | export default factory(function App() {
10 | return (
11 |
12 |
13 | } />
14 | } />
15 |
16 | );
17 | });
18 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/widgets/styles/todoFilter.m.css:
--------------------------------------------------------------------------------
1 | .filters {
2 | margin: 0;
3 | padding: 0;
4 | list-style: none;
5 | position: absolute;
6 | right: 0;
7 | left: 0;
8 | }
9 |
10 | .wrapper {
11 | display: inline;
12 | }
13 |
14 | .link {
15 | color: inherit;
16 | margin: 3px;
17 | padding: 3px 7px;
18 | text-decoration: none;
19 | border: 1px solid transparent;
20 | border-radius: 3px;
21 | }
22 |
23 | .link:hover {
24 | border-color: rgba(175, 47, 47, 0.1);
25 | }
26 |
27 | .link.selected {
28 | border-color: rgba(175, 47, 47, 0.2);
29 | }
30 |
--------------------------------------------------------------------------------
/packages/intersection-observer/src/widgets/Item.ts:
--------------------------------------------------------------------------------
1 | import { create, v } from '@dojo/framework/core/vdom';
2 |
3 | import * as css from './styles/Item.m.css';
4 |
5 | interface ItemProperties {
6 | title: string;
7 | summary: string;
8 | }
9 |
10 | const factory = create().properties();
11 |
12 | export default factory(function Item({ properties }) {
13 | const { title, summary } = properties();
14 | return v('div', { classes: css.root }, [
15 | v('h2', { classes: css.title }, [title]),
16 | v('p', { classes: css.summary }, [summary])
17 | ]);
18 | });
19 |
--------------------------------------------------------------------------------
/packages/static-blog/src/Header.tsx:
--------------------------------------------------------------------------------
1 | import { tsx, create } from '@dojo/framework/core/vdom';
2 | import Link from '@dojo/framework/routing/Link';
3 |
4 | import * as css from './Header.m.css';
5 |
6 | interface HeaderProperties {
7 | title: string;
8 | }
9 |
10 | const factory = create().properties();
11 |
12 | export default factory(function Header({ properties }) {
13 | const { title } = properties();
14 | return (
15 |
20 | );
21 | });
22 |
--------------------------------------------------------------------------------
/packages/hnpwa/src/widgets/styles/article.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const root: string;
2 | export const pageNumber: string;
3 | export const post: string;
4 | export const titleLink: string;
5 | export const details: string;
6 | export const link: string;
7 | export const comments: string;
8 | export const animated: string;
9 | export const placeHolderShimmer: string;
10 | export const animatedTitle: string;
11 | export const animatedSubTitle: string;
12 | export const animatedComment: string;
13 | export const titleShell: string;
14 | export const subtitleShell: string;
15 | export const commentShell: string;
16 |
--------------------------------------------------------------------------------
/packages/realworld/src/widgets/Footer.tsx:
--------------------------------------------------------------------------------
1 | import { create, tsx } from '@dojo/framework/core/vdom';
2 |
3 | const factory = create();
4 |
5 | export const Footer = factory(function Footer() {
6 | return (
7 |
18 | );
19 | });
20 |
21 | export default Footer;
22 |
--------------------------------------------------------------------------------
/packages/world-clock/src/styles/clock.m.css:
--------------------------------------------------------------------------------
1 | @import './variables.css';
2 |
3 | .label {
4 | text-align: center;
5 | }
6 |
7 | .clock {
8 | fill: #000;
9 | }
10 |
11 | .hourText {
12 | fill: var(--clock-text-color);
13 | font-size: var(--clock-text-size);
14 | }
15 |
16 | .hand {
17 | stroke: #fff;
18 | }
19 |
20 | .hourHand {
21 | stroke-width: var(--hour-hand-stroke-width);
22 | }
23 |
24 | .minuteHand {
25 | stroke-width: var(--minute-hand-stroke-width);
26 | }
27 |
28 | .secondHand {
29 | stroke-width: var(--second-hand-stroke-width);
30 | }
31 |
32 | .joint {
33 | stroke: #fff;
34 | }
35 |
--------------------------------------------------------------------------------
/packages/todo-mvc/src/main.tsx:
--------------------------------------------------------------------------------
1 | import { renderer, tsx } from '@dojo/framework/core/vdom';
2 | import Registry from '@dojo/framework/core/Registry';
3 | import { registerRouterInjector } from '@dojo/framework/routing/RouterInjector';
4 |
5 | import App from './App';
6 |
7 | const registry = new Registry();
8 | registerRouterInjector(
9 | [
10 | {
11 | id: 'filter',
12 | path: 'filter/{filter}',
13 | outlet: 'filter',
14 | defaultParams: { filter: 'all' },
15 | defaultRoute: true
16 | }
17 | ],
18 | registry
19 | );
20 |
21 | const r = renderer(() => );
22 | r.mount({ registry });
23 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/__tests__/polyfills.spec.ts:
--------------------------------------------------------------------------------
1 | if (require && global) {
2 | type ModifiableWindow = { -readonly [K in keyof Window]: Window[K] } & typeof globalThis;
3 | const g: ModifiableWindow = global as any;
4 | const w: ModifiableWindow = window;
5 |
6 | if (!g.btoa) {
7 | g.btoa = w.btoa = require('btoa');
8 | }
9 | if (!g.atob) {
10 | g.atob = w.atob = require('atob');
11 | }
12 | if (!g.TextEncoder) {
13 | g.TextEncoder = w.TextEncoder = require('util').TextEncoder;
14 | }
15 | if (!g.crypto) {
16 | g.crypto = w.crypto = new (require('node-webcrypto-ossl').Crypto)();
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/nls/en-PR/common.ts:
--------------------------------------------------------------------------------
1 | const messages = {
2 | appTitle: "Plunderin' list",
3 | createdTitle: 'Sailed on ',
4 | detailsTitle: 'Here be more',
5 | editPlaceholder: "wha' needs t' be plunderin'?",
6 | clearButtonText: 'Clean up',
7 | footerInstructions: 'Double-click fer more',
8 | filterCompleted: 'Done',
9 | footerCredits: 'Credits be to:',
10 | footerPartOf: 'Part of ',
11 | itemsLeft: `{count, plural,
12 | =1 {thin' left}
13 | other {thin's left}}`,
14 | searchPlaceholder: "be searchin'",
15 | themeSwitchTitle: 'Pirate Mode'
16 | };
17 |
18 | export default messages;
19 |
--------------------------------------------------------------------------------
/packages/resize-middleware/src/main.css:
--------------------------------------------------------------------------------
1 | /* Put your styles and imports here */
2 |
3 | .container {
4 | position: relative;
5 | padding: 20px 20px 20px 40px;
6 | }
7 |
8 | .text {
9 | overflow: hidden;
10 | background: #eee;
11 | padding: 0px 8px;
12 | box-sizing: border-box;
13 | }
14 |
15 | .height {
16 | position: absolute;
17 | transition: all 0.6s;
18 | left: 0;
19 | top: 50px;
20 | width: 10px;
21 | border: 1px solid rgb(170, 30, 30);
22 | border-right: 0;
23 | }
24 |
25 | span {
26 | position: absolute;
27 | left: 50%;
28 | top: 50%;
29 | transform: translate(-30%, -50%) rotate(90deg);
30 | }
31 |
--------------------------------------------------------------------------------
/packages/hnpwa/src/widgets/styles/content.m.css:
--------------------------------------------------------------------------------
1 | .pageLink {
2 | color: #000;
3 | cursor: pointer;
4 | text-decoration: underline;
5 | }
6 |
7 | .disabled {
8 | color: rgba(49, 40, 40, 0.65);
9 | cursor: not-allowed;
10 | text-decoration: underline;
11 | }
12 |
13 | .pagination {
14 | text-align: center;
15 | position: fixed;
16 | width: 100%;
17 | margin: 0;
18 | left: 0;
19 | background: #fff;
20 | box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
21 | height: 56px;
22 | display: flex;
23 | z-index: 99;
24 | align-items: center;
25 | justify-content: center;
26 | }
27 |
28 | .pageNumber {
29 | margin: 0 16px;
30 | }
31 |
--------------------------------------------------------------------------------
/packages/resize-observer/src/widgets/Column.ts:
--------------------------------------------------------------------------------
1 | import { create, v } from '@dojo/framework/core/vdom';
2 | import breakpoint from '@dojo/framework/core/middleware/breakpoint';
3 | import * as css from './styles/columns.m.css';
4 |
5 | const factory = create({ breakpoint });
6 |
7 | export default factory(function Column({ middleware: { breakpoint }, children }) {
8 | const { breakpoint: bp } = breakpoint.get('root', { SM: 0, BG: 500 }) || { breakpoint: 'SM' };
9 | return v('div', { key: 'root', classes: [css.root, bp === 'SM' ? css.small : css.big] }, [
10 | v('div', { classes: css.badge }, [bp === 'SM' ? 'small' : 'big']),
11 | ...children()
12 | ]);
13 | });
14 |
--------------------------------------------------------------------------------
/packages/hnpwa/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "hacker-news",
3 | "name": "hacker-news",
4 | "icons" : [{
5 | "src": "images/app192.png",
6 | "sizes": "192x192",
7 | "type": "images/png"
8 | }, {
9 | "src": "images/app256.png",
10 | "sizes": "256x256",
11 | "type": "images/png"
12 | }, {
13 | "src": "images/app384.png",
14 | "sizes": "384x384",
15 | "type": "images/png"
16 | }, {
17 | "src": "images/app512.png",
18 | "sizes": "512x512",
19 | "type": "images/png"
20 | }],
21 | "start_url": "index.html",
22 | "theme_color": "#222127",
23 | "background_color": "#f5f5f5",
24 | "display": "standalone"
25 | }
26 |
--------------------------------------------------------------------------------
/packages/resize-observer/src/widgets/styles/calendar.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const badge: string;
2 | export const root: string;
3 | export const calendarTimes: string;
4 | export const calendarDay: string;
5 | export const calendarDayHeader: string;
6 | export const calendarDate: string;
7 | export const calendarDateMo: string;
8 | export const calendarDateWk: string;
9 | export const calendarEntries: string;
10 | export const calendarEntry: string;
11 | export const calendarEntryTime: string;
12 | export const calendarEntryDesc: string;
13 | export const medium: string;
14 | export const large: string;
15 | export const calendarTime: string;
16 | export const calendar: string;
17 |
--------------------------------------------------------------------------------
/packages/example-index/src/main.tsx:
--------------------------------------------------------------------------------
1 | import renderer, { create, tsx } from '@dojo/framework/core/vdom';
2 | import block from '@dojo/framework/core/middleware/block';
3 | import getExamples from './examples.block';
4 |
5 | const factory = create({ block });
6 |
7 | const App = factory(function App({ middleware: { block } }) {
8 | const examples = block(getExamples)();
9 | if (examples) {
10 | return (
11 |
12 |
13 | {examples.map((example) => (
14 | -
15 | {example}
16 |
17 | ))}
18 |
19 |
20 | );
21 | }
22 | });
23 |
24 | const r = renderer(() => );
25 | r.mount();
26 |
--------------------------------------------------------------------------------
/packages/skills-matrix/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "declaration": false,
4 | "downlevelIteration": true,
5 | "experimentalDecorators": true,
6 | "importHelpers": true,
7 | "jsx": "react",
8 | "jsxFactory": "tsx",
9 | "lib": ["dom", "es5", "es2015.promise", "es2015.iterable", "es2015.symbol", "es2015.symbol.wellknown"],
10 | "module": "umd",
11 | "moduleResolution": "node",
12 | "noUnusedLocals": true,
13 | "outDir": "_build/",
14 | "removeComments": false,
15 | "sourceMap": true,
16 | "strict": true,
17 | "target": "es5",
18 | "types": ["intern"]
19 | },
20 | "include": ["./src/**/*.ts", "./tests/**/*.ts", "src/App.tsx"]
21 | }
22 |
--------------------------------------------------------------------------------
/packages/custom-element-menu/src/widgets/styles/menuItem.m.css:
--------------------------------------------------------------------------------
1 | .root {
2 | height: 100%;
3 | display: inline-block;
4 | }
5 |
6 | .item {
7 | color: #fff;
8 | text-decoration: none;
9 | margin: 0 6.4px;
10 | position: relative;
11 | display: flex;
12 | flex-direction: column;
13 | justify-content: center;
14 | height: 48px;
15 | cursor: pointer;
16 | }
17 |
18 | .item::after {
19 | display: block;
20 | content: '';
21 | background: #fff;
22 | height: 2px;
23 | position: absolute;
24 | width: 100%;
25 | bottom: 0;
26 | transition: transform 0.3s ease-out;
27 | transform: translateY(3px);
28 | }
29 |
30 | .selected::after {
31 | transform: translateY(0);
32 | }
33 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/themes/matrix/button.m.css:
--------------------------------------------------------------------------------
1 | .root {
2 | cursor: pointer;
3 | display: inline-block;
4 | background-color: var(--color-blue);
5 | border-radius: calc(var(--grid-size) / 4);
6 | border: 1px solid var(--color-blue);
7 | color: var(--color-white);
8 | font-family: inherit;
9 | font-size: var(--font-size-normal);
10 | font-weight: bold;
11 | height: var(--button-height);
12 | min-width: 132px;
13 | outline: none;
14 | padding: 0;
15 | width: calc(var(--grid-size) * 5);
16 | }
17 |
18 | .disabled,
19 | .disabled:hover {
20 | background-color: var(--color-gray);
21 | border-color: var(--color-gray);
22 | cursor: default;
23 | opacity: 0.25;
24 | }
25 |
--------------------------------------------------------------------------------
/packages/static-blog/src/main.tsx:
--------------------------------------------------------------------------------
1 | import renderer, { tsx } from '@dojo/framework/core/vdom';
2 | import Registry from '@dojo/framework/core/Registry';
3 | import { registerRouterInjector } from '@dojo/framework/routing/RouterInjector';
4 | import StateHistory from '@dojo/framework/routing/history/StateHistory';
5 |
6 | import App from './App';
7 | // import the route configuration
8 | import routes from './routes';
9 |
10 | // set up an application registry and
11 | // define the Dojo Router
12 | const registry = new Registry();
13 | registerRouterInjector(routes, registry, { HistoryManager: StateHistory });
14 |
15 | const r = renderer(() => );
16 | r.mount({ registry });
17 |
--------------------------------------------------------------------------------
/packages/static-blog/src/BlogList.tsx:
--------------------------------------------------------------------------------
1 | import { tsx, create } from '@dojo/framework/core/vdom';
2 | import block from '@dojo/framework/core/middleware/block';
3 | import getBlogIndex from './blocks/blog-index.block';
4 | import BlogPreview from './BlogPreview';
5 | import * as css from './BlogList.m.css';
6 |
7 | const factory = create({ block });
8 |
9 | export default factory(function BlogList({ middleware: { block } }) {
10 | const previews = block(getBlogIndex)() || [];
11 | return (
12 |
13 | {previews.map((preview, index) => (
14 |
15 | ))}
16 |
17 | );
18 | });
19 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/util/persistence.ts:
--------------------------------------------------------------------------------
1 | const PERSISTENCE_KEY = 'dojo-skills-matrix';
2 | const PERSISTENCE_COMPARE_KEY = `${PERSISTENCE_KEY}-compare`;
3 |
4 | export function persistComparison(value: string): void {
5 | window.localStorage.setItem(PERSISTENCE_COMPARE_KEY, value);
6 |
7 | }
8 | export function persistHash(value: string): void {
9 | window.localStorage.setItem(PERSISTENCE_KEY, value);
10 | }
11 |
12 | export function resumeComparison(): string | undefined {
13 | return window.localStorage.getItem(PERSISTENCE_COMPARE_KEY) || undefined;
14 | }
15 |
16 | export function resumeHash(): string | undefined {
17 | return window.localStorage.getItem(PERSISTENCE_KEY) || undefined;
18 | }
19 |
--------------------------------------------------------------------------------
/packages/hnpwa/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "declaration": false,
4 | "experimentalDecorators": true,
5 | "jsx": "react",
6 | "jsxFactory": "tsx",
7 | "lib": [
8 | "dom",
9 | "es5",
10 | "es2015.promise",
11 | "es2015.iterable",
12 | "es2015.symbol",
13 | "es2015.symbol.wellknown"
14 | ],
15 | "module": "umd",
16 | "moduleResolution": "node",
17 | "noUnusedLocals": true,
18 | "outDir": "_build/",
19 | "removeComments": false,
20 | "importHelpers": true,
21 | "downlevelIteration": true,
22 | "sourceMap": true,
23 | "strict": true,
24 | "target": "es5",
25 | "types": [ "node" ]
26 | },
27 | "include": [
28 | "./src/**/*.ts",
29 | "./src/**/*.tsx"
30 | ]
31 | }
32 |
--------------------------------------------------------------------------------
/packages/icache-advanced/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "declaration": false,
4 | "experimentalDecorators": true,
5 | "jsx": "react",
6 | "jsxFactory": "tsx",
7 | "lib": [
8 | "dom",
9 | "es5",
10 | "es2015.promise",
11 | "es2015.iterable",
12 | "es2015.symbol",
13 | "es2015.symbol.wellknown"
14 | ],
15 | "module": "umd",
16 | "moduleResolution": "node",
17 | "noUnusedLocals": true,
18 | "outDir": "_build/",
19 | "removeComments": false,
20 | "importHelpers": true,
21 | "downlevelIteration": true,
22 | "sourceMap": true,
23 | "strict": true,
24 | "target": "es5",
25 | "types": []
26 | },
27 | "include": [
28 | "./src/**/*.ts",
29 | "./src/**/*.tsx"
30 | ]
31 | }
32 |
--------------------------------------------------------------------------------
/packages/icache-basic/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "declaration": false,
4 | "experimentalDecorators": true,
5 | "jsx": "react",
6 | "jsxFactory": "tsx",
7 | "lib": [
8 | "dom",
9 | "es5",
10 | "es2015.promise",
11 | "es2015.iterable",
12 | "es2015.symbol",
13 | "es2015.symbol.wellknown"
14 | ],
15 | "module": "umd",
16 | "moduleResolution": "node",
17 | "noUnusedLocals": true,
18 | "outDir": "_build/",
19 | "removeComments": false,
20 | "importHelpers": true,
21 | "downlevelIteration": true,
22 | "sourceMap": true,
23 | "strict": true,
24 | "target": "es5",
25 | "types": []
26 | },
27 | "include": [
28 | "./src/**/*.ts",
29 | "./src/**/*.tsx"
30 | ]
31 | }
32 |
--------------------------------------------------------------------------------
/packages/resize-observer/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "declaration": false,
4 | "experimentalDecorators": true,
5 | "jsx": "react",
6 | "jsxFactory": "tsx",
7 | "lib": [
8 | "dom",
9 | "es5",
10 | "es2015.promise",
11 | "es2015.iterable",
12 | "es2015.symbol",
13 | "es2015.symbol.wellknown"
14 | ],
15 | "module": "umd",
16 | "moduleResolution": "node",
17 | "noUnusedLocals": true,
18 | "outDir": "_build/",
19 | "removeComments": false,
20 | "importHelpers": true,
21 | "downlevelIteration": true,
22 | "sourceMap": true,
23 | "strict": true,
24 | "target": "es5",
25 | "types": []
26 | },
27 | "include": [
28 | "./src/**/*.ts",
29 | "./src/**/*.tsx"
30 | ]
31 | }
32 |
--------------------------------------------------------------------------------
/packages/store-arrays/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "declaration": false,
4 | "experimentalDecorators": true,
5 | "jsx": "react",
6 | "jsxFactory": "tsx",
7 | "lib": [
8 | "dom",
9 | "es5",
10 | "es2015.promise",
11 | "es2015.iterable",
12 | "es2015.symbol",
13 | "es2015.symbol.wellknown"
14 | ],
15 | "module": "umd",
16 | "moduleResolution": "node",
17 | "noUnusedLocals": true,
18 | "outDir": "_build/",
19 | "removeComments": false,
20 | "importHelpers": true,
21 | "downlevelIteration": true,
22 | "sourceMap": true,
23 | "strict": true,
24 | "target": "es5",
25 | "types": []
26 | },
27 | "include": [
28 | "./src/**/*.ts",
29 | "./src/**/*.tsx"
30 | ]
31 | }
32 |
--------------------------------------------------------------------------------
/packages/custom-element-menu/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "declaration": false,
4 | "experimentalDecorators": true,
5 | "jsx": "react",
6 | "jsxFactory": "tsx",
7 | "lib": [
8 | "dom",
9 | "es5",
10 | "es2015.promise",
11 | "es2015.iterable",
12 | "es2015.symbol",
13 | "es2015.symbol.wellknown"
14 | ],
15 | "module": "umd",
16 | "moduleResolution": "node",
17 | "noUnusedLocals": true,
18 | "outDir": "_build/",
19 | "removeComments": false,
20 | "importHelpers": true,
21 | "downlevelIteration": true,
22 | "sourceMap": true,
23 | "strict": true,
24 | "target": "es5",
25 | "types": []
26 | },
27 | "include": [
28 | "./src/**/*.ts",
29 | "./src/**/*.tsx"
30 | ]
31 | }
32 |
--------------------------------------------------------------------------------
/packages/resize-middleware/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "declaration": false,
4 | "experimentalDecorators": true,
5 | "jsx": "react",
6 | "jsxFactory": "tsx",
7 | "lib": [
8 | "dom",
9 | "es5",
10 | "es2015.promise",
11 | "es2015.iterable",
12 | "es2015.symbol",
13 | "es2015.symbol.wellknown"
14 | ],
15 | "module": "umd",
16 | "moduleResolution": "node",
17 | "noUnusedLocals": true,
18 | "outDir": "_build/",
19 | "removeComments": false,
20 | "importHelpers": true,
21 | "downlevelIteration": true,
22 | "sourceMap": true,
23 | "strict": true,
24 | "target": "es5",
25 | "types": []
26 | },
27 | "include": [
28 | "./src/**/*.ts",
29 | "./src/**/*.tsx"
30 | ]
31 | }
32 |
--------------------------------------------------------------------------------
/packages/world-clock/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "declaration": false,
4 | "experimentalDecorators": true,
5 | "jsx": "react",
6 | "jsxFactory": "tsx",
7 | "lib": [
8 | "dom",
9 | "es5",
10 | "es2015.promise",
11 | "es2015.iterable",
12 | "es2015.symbol",
13 | "es2015.symbol.wellknown"
14 | ],
15 | "module": "umd",
16 | "moduleResolution": "node",
17 | "noUnusedLocals": true,
18 | "outDir": "_build/",
19 | "removeComments": false,
20 | "importHelpers": true,
21 | "downlevelIteration": true,
22 | "sourceMap": true,
23 | "strict": true,
24 | "target": "es5",
25 | "types": [ "node" ]
26 | },
27 | "include": [
28 | "./src/**/*.ts",
29 | "./src/**/*.tsx"
30 | ]
31 | }
32 |
--------------------------------------------------------------------------------
/packages/dgrid-wrapper/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "declaration": false,
4 | "experimentalDecorators": true,
5 | "jsx": "react",
6 | "jsxFactory": "tsx",
7 | "lib": [
8 | "dom",
9 | "es5",
10 | "es2015.promise",
11 | "es2015.iterable",
12 | "es2015.symbol",
13 | "es2015.symbol.wellknown"
14 | ],
15 | "module": "umd",
16 | "moduleResolution": "node",
17 | "noUnusedLocals": true,
18 | "outDir": "_build/",
19 | "removeComments": false,
20 | "importHelpers": true,
21 | "downlevelIteration": true,
22 | "sourceMap": true,
23 | "strict": true,
24 | "target": "es5",
25 | "types": [ "intern" ]
26 | },
27 | "include": [
28 | "./src/**/*.ts",
29 | "./src/**/*.tsx"
30 | ]
31 | }
32 |
--------------------------------------------------------------------------------
/packages/intersection-observer/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "declaration": false,
4 | "experimentalDecorators": true,
5 | "jsx": "react",
6 | "jsxFactory": "tsx",
7 | "lib": [
8 | "dom",
9 | "es5",
10 | "es2015.promise",
11 | "es2015.iterable",
12 | "es2015.symbol",
13 | "es2015.symbol.wellknown"
14 | ],
15 | "module": "umd",
16 | "moduleResolution": "node",
17 | "noUnusedLocals": true,
18 | "outDir": "_build/",
19 | "removeComments": false,
20 | "importHelpers": true,
21 | "downlevelIteration": true,
22 | "sourceMap": true,
23 | "strict": true,
24 | "target": "es5",
25 | "types": []
26 | },
27 | "include": [
28 | "./src/**/*.ts",
29 | "./src/**/*.tsx"
30 | ]
31 | }
32 |
--------------------------------------------------------------------------------
/packages/realworld/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | dojo-realworld
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/widgets/skill-key/SkillKey.m.css:
--------------------------------------------------------------------------------
1 | @import '../../variables.css';
2 |
3 | .title {
4 | margin-bottom: calc(var(--grid-size) * 2);
5 | }
6 |
7 | .level {
8 | align-items: center;
9 | display: flex;
10 | margin-right: calc(var(--grid-size) * 1.5);
11 | }
12 |
13 | .entry {
14 | font-size: var(--font-size-normal);
15 | margin-left: var(--grid-size);
16 | position: relative;
17 | top: calc(var(--grid-size) / -4);
18 | }
19 |
20 | .level1 {
21 | color: var(--color-gray);
22 | }
23 |
24 | .level2 {
25 | color: var(--color-teal);
26 | }
27 |
28 | .level3 {
29 | color: var(--color-green);
30 | }
31 |
32 | .level4 {
33 | color: var(--color-light-blue);
34 | }
35 |
36 | .skillRow {
37 | display: flex;
38 | }
39 |
--------------------------------------------------------------------------------
/packages/hnpwa/src/main.css:
--------------------------------------------------------------------------------
1 | html,
2 | body {
3 | margin: 0;
4 | padding: 0;
5 | font-size: 14px;
6 | line-height: 1.3125;
7 | font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans,
8 | Helvetica Neue, sans-serif;
9 | -webkit-text-size-adjust: 100%;
10 | -webkit-tap-highlight-color: rgba(255, 255, 255, 0);
11 | box-sizing: border-box;
12 | background: #f1f1f1;
13 | }
14 | @media screen and (min-width: 360px) {
15 | html,
16 | body {
17 | font-size: 15px;
18 | }
19 | }
20 | @media screen and (min-width: 600px) {
21 | html,
22 | body {
23 | font-size: 16px;
24 | }
25 | }
26 |
27 | h1,
28 | h2,
29 | p {
30 | font: inherit;
31 | font-size: 100%;
32 | margin: 0;
33 | }
34 |
--------------------------------------------------------------------------------
/packages/todo-mvc/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "declaration": false,
4 | "experimentalDecorators": true,
5 | "jsx": "react",
6 | "jsxFactory": "tsx",
7 | "lib": [
8 | "dom",
9 | "es5",
10 | "es2015.promise",
11 | "es2015.iterable",
12 | "es2015.symbol",
13 | "es2015.symbol.wellknown",
14 | "es2016"
15 | ],
16 | "module": "umd",
17 | "moduleResolution": "node",
18 | "noUnusedLocals": true,
19 | "outDir": "_build/",
20 | "removeComments": false,
21 | "importHelpers": true,
22 | "downlevelIteration": true,
23 | "sourceMap": true,
24 | "strict": true,
25 | "target": "es5",
26 | "types": []
27 | },
28 | "include": [
29 | "./src/**/*.ts",
30 | "./src/**/*.tsx"
31 | ]
32 | }
33 |
--------------------------------------------------------------------------------
/packages/world-clock/src/nls/main.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | locales: {
3 | ar: () => import('./ar/main'),
4 | es: () => import('./es/main'),
5 | hi: () => import('./hi/main'),
6 | fr: () => import('./fr/main'),
7 | ja: () => import('./ja/main')
8 | },
9 | messages: {
10 | arabic: 'Arabic',
11 | english: 'English',
12 | french: 'French',
13 | hindi: 'Hindi',
14 | japanese: 'Japanese',
15 | language: 'Language',
16 | spanish: 'Spanish',
17 |
18 | cairo: 'Cairo',
19 | johannesburg: 'Johannesburg',
20 | london: 'London',
21 | mexicoCity: 'Mexico City',
22 | newDehli: 'New Dehli',
23 | newYork: 'New York',
24 | paris: 'Paris',
25 | tokyo: 'Tokyo',
26 |
27 | multipleLocales: 'Multiple Locales'
28 | }
29 | };
30 |
--------------------------------------------------------------------------------
/packages/static-blog/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "declaration": false,
4 | "experimentalDecorators": true,
5 | "jsx": "react",
6 | "jsxFactory": "tsx",
7 | "lib": [
8 | "dom",
9 | "es5",
10 | "es2015.promise",
11 | "es2015.iterable",
12 | "es2015.symbol",
13 | "es2015.symbol.wellknown"
14 | ],
15 | "module": "umd",
16 | "moduleResolution": "node",
17 | "noUnusedLocals": true,
18 | "outDir": "_build/",
19 | "removeComments": false,
20 | "importHelpers": true,
21 | "downlevelIteration": true,
22 | "sourceMap": true,
23 | "strict": true,
24 | "target": "es5",
25 | "types": [
26 | "node"
27 | ]
28 | },
29 | "include": [
30 | "./src/**/*.ts",
31 | "./src/**/*.tsx"
32 | ]
33 | }
34 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "declaration": false,
4 | "experimentalDecorators": true,
5 | "jsx": "react",
6 | "jsxFactory": "tsx",
7 | "lib": [
8 | "dom",
9 | "es5",
10 | "es2015.promise",
11 | "es2015.iterable",
12 | "es2015.symbol",
13 | "es2015.symbol.wellknown",
14 | "es2016"
15 | ],
16 | "module": "umd",
17 | "moduleResolution": "node",
18 | "noUnusedLocals": true,
19 | "outDir": "_build/",
20 | "removeComments": false,
21 | "importHelpers": true,
22 | "downlevelIteration": true,
23 | "sourceMap": true,
24 | "strict": true,
25 | "target": "es5",
26 | "types": []
27 | },
28 | "include": [
29 | "./src/**/*.ts",
30 | "./src/**/*.tsx"
31 | ]
32 | }
33 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/nls/common.ts:
--------------------------------------------------------------------------------
1 | const locales = {
2 | 'en-PR': () => import('./en-PR/common')
3 | };
4 |
5 | const messages = {
6 | appTitle: 'todos',
7 | clearButtonText: 'Clear completed',
8 | createdTitle: 'Created on ',
9 | detailsTitle: 'Details',
10 | editPlaceholder: 'What needs to be done?',
11 | filterActive: 'Active',
12 | filterAll: 'All',
13 | filterCompleted: 'Completed',
14 | footerInstructions: 'Double-click or press Enter to edit a todo',
15 | footerCredits: 'Credits:',
16 | footerPartOf: 'Part of ',
17 | itemsLeft: `{count, plural,
18 | =1 {item left}
19 | other {items left}}`,
20 | searchPlaceholder: 'Quick Filter',
21 | themeSwitchTitle: 'Pirate Mode'
22 | };
23 |
24 | export default { locales, messages };
25 |
--------------------------------------------------------------------------------
/packages/realworld/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "declaration": false,
4 | "experimentalDecorators": true,
5 | "jsx": "react",
6 | "jsxFactory": "tsx",
7 | "lib": [
8 | "dom",
9 | "es5",
10 | "es2015.promise",
11 | "es2015.iterable",
12 | "es2015.symbol",
13 | "es2015.symbol.wellknown"
14 | ],
15 | "module": "umd",
16 | "moduleResolution": "node",
17 | "noUnusedLocals": true,
18 | "outDir": "_build/",
19 | "removeComments": false,
20 | "importHelpers": true,
21 | "downlevelIteration": true,
22 | "sourceMap": true,
23 | "strict": true,
24 | "skipLibCheck": true,
25 | "target": "es5",
26 | "types": [ "intern" ]
27 | },
28 | "include": [
29 | "./src/**/*.ts",
30 | "./src/**/*.tsx"
31 | ]
32 | }
33 |
--------------------------------------------------------------------------------
/packages/resize-observer/src/widgets/styles/resizableSection.m.css:
--------------------------------------------------------------------------------
1 | .root {
2 | border: 1px solid rgba(0, 0, 0, 0.075);
3 | overflow-y: auto;
4 | transition: width 0.3s ease-in-out;
5 | padding: 10px;
6 | }
7 |
8 | .sizeControls {
9 | margin-bottom: 10px;
10 | }
11 |
12 | .zeroColumns {
13 | width: 0;
14 | border: none;
15 | padding: 0;
16 | }
17 |
18 | .oneColumn {
19 | width: 12.5%;
20 | }
21 |
22 | .twoColumns {
23 | width: 25%;
24 | }
25 |
26 | .threeColumns {
27 | width: 37.5%;
28 | }
29 |
30 | .fourColumns {
31 | width: 50%;
32 | }
33 |
34 | .fiveColumns {
35 | width: 62.5%;
36 | }
37 |
38 | .sixColumns {
39 | width: 75%;
40 | }
41 |
42 | .sevenColumns {
43 | width: 87.5%;
44 | }
45 |
46 | .eightColumns {
47 | width: 100%;
48 | transition: none;
49 | }
50 |
--------------------------------------------------------------------------------
/packages/example-index/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "declaration": false,
4 | "experimentalDecorators": true,
5 | "jsx": "react",
6 | "jsxFactory": "tsx",
7 | "lib": [
8 | "dom",
9 | "es5",
10 | "es2015.promise",
11 | "es2015.iterable",
12 | "es2015.symbol",
13 | "es2015.symbol.wellknown"
14 | ],
15 | "module": "umd",
16 | "moduleResolution": "node",
17 | "noUnusedLocals": true,
18 | "outDir": "_build/",
19 | "removeComments": false,
20 | "importHelpers": true,
21 | "downlevelIteration": true,
22 | "sourceMap": true,
23 | "strict": true,
24 | "target": "es5",
25 | "types": [ "intern" ]
26 | },
27 | "include": [
28 | "./src/**/*.ts",
29 | "./tests/**/*.ts",
30 | "./src/**/*.tsx",
31 | "./tests/**/*.tsx"
32 | ]
33 | }
34 |
--------------------------------------------------------------------------------
/packages/todo-mvc/src/App.m.css.d.ts:
--------------------------------------------------------------------------------
1 | export const todoapp: string;
2 | export const main: string;
3 | export const todoList: string;
4 | export const title: string;
5 | export const newTodo: string;
6 | export const toggleAll: string;
7 | export const todoItem: string;
8 | export const edit: string;
9 | export const editing: string;
10 | export const view: string;
11 | export const toggle: string;
12 | export const todoLabel: string;
13 | export const completed: string;
14 | export const destroy: string;
15 | export const footer: string;
16 | export const todoCountLabel: string;
17 | export const todoCount: string;
18 | export const clearCompleted: string;
19 | export const filters: string;
20 | export const filter: string;
21 | export const filterLink: string;
22 | export const selected: string;
23 |
--------------------------------------------------------------------------------
/packages/skills-matrix/README.md:
--------------------------------------------------------------------------------
1 | The Skills Matrix is a static application that provides engineers the ability to choose technical proficiency for a set of predetermined skills. Results are uniquely hashed in-browser, and managers can visually compare multiple result sets filtered by specific skills.
2 |
3 | ## Usage
4 |
5 | TODO
6 |
7 | ## Notes
8 |
9 | The compact hash computed for each skill set is dependent on a static master list of skills. Any changes to
10 | `skillmatrix.json` invalidates existing hashes.
11 |
12 | ## Development
13 |
14 | ```
15 | # npm i # Install dependencies
16 | # npm run dev # Visit http://localhost:9999/
17 | # npm run test # Run unit tests
18 | ```
19 |
20 | To get help for the commands above or to see all available commands, run `dojo` from the command line.
21 |
--------------------------------------------------------------------------------
/packages/custom-element-menu/src/main.ts:
--------------------------------------------------------------------------------
1 | import { WidgetBase } from '@dojo/framework/core/WidgetBase';
2 | import renderer, { w } from '@dojo/framework/core/vdom';
3 | import { Menu } from './widgets/Menu';
4 | import { MenuItem } from './widgets/MenuItem';
5 |
6 | class Example extends WidgetBase {
7 | private _onSelected(data: any) {
8 | console.log(data);
9 | }
10 |
11 | protected render() {
12 | return w(Menu, { onSelected: this._onSelected }, [
13 | w(MenuItem, { key: 'a', title: 'Menu Item A' }),
14 | w(MenuItem, { key: 'b', title: 'Menu Item B', selected: true }),
15 | w(MenuItem, { key: 'c', title: 'Menu Item C' })
16 | ]);
17 | }
18 | }
19 |
20 | const element = document.getElementById('widget') as HTMLElement;
21 | const r = renderer(() => w(Example, {}));
22 | r.mount({ domNode: element });
23 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/themes/matrix/text-input.m.css:
--------------------------------------------------------------------------------
1 | .input {
2 | border-bottom-left-radius: var(--input-border-radius);
3 | border-top-left-radius: var(--input-border-radius);
4 | border: 1px solid var(--color-light-gray);
5 | color: var(--color-gray);
6 | font-family: inherit;
7 | font-size: var(--font-size-normal);
8 | height: var(--input-height);
9 | outline: none;
10 | padding: 0 calc(var(--grid-size) * 1.25);
11 | width: 100%;
12 | }
13 |
14 | .input:last-child {
15 | border-bottom-right-radius: var(--input-border-radius);
16 | border-top-right-radius: var(--input-border-radius);
17 | }
18 |
19 | .wrapper {
20 | align-items: stretch;
21 | display: flex;
22 | flex-direction: column;
23 | max-width: var(--input-width);
24 | }
25 |
26 | .inputWrapper {
27 | display: flex;
28 | flex-direction: row;
29 | }
30 |
--------------------------------------------------------------------------------
/packages/todo-mvc/src/main.css:
--------------------------------------------------------------------------------
1 | html,
2 | body {
3 | margin: 0;
4 | padding: 0;
5 | }
6 |
7 | button {
8 | margin: 0;
9 | padding: 0;
10 | border: 0;
11 | background: none;
12 | font-size: 100%;
13 | vertical-align: baseline;
14 | font-family: inherit;
15 | font-weight: inherit;
16 | color: inherit;
17 | -webkit-appearance: none;
18 | appearance: none;
19 | -webkit-font-smoothing: antialiased;
20 | -moz-osx-font-smoothing: grayscale;
21 | }
22 |
23 | body {
24 | font: 14px 'Helvetica Neue', Helvetica, Arial, sans-serif;
25 | line-height: 1.4em;
26 | background: #f5f5f5;
27 | color: #4d4d4d;
28 | min-width: 230px;
29 | max-width: 550px;
30 | margin: 0 auto;
31 | -webkit-font-smoothing: antialiased;
32 | -moz-osx-font-smoothing: grayscale;
33 | font-weight: 300;
34 | }
35 |
36 | :focus {
37 | outline: 0;
38 | }
39 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/widgets/Credits.tsx:
--------------------------------------------------------------------------------
1 | import { tsx, create } from '@dojo/framework/core/vdom';
2 | import { theme } from '@dojo/framework/core/middleware/theme';
3 | import { i18n } from '@dojo/framework/core/middleware/i18n';
4 |
5 | import * as css from './styles/credits.m.css';
6 | import bundle from '../nls/common';
7 |
8 | const factory = create({ theme, i18n });
9 |
10 | export default factory(function Credits({ middleware: { theme, i18n } }) {
11 | const { footer } = theme.classes(css);
12 | const { footerCredits, footerInstructions, footerPartOf } = i18n.localize(bundle).messages;
13 | return (
14 |
22 | );
23 | });
24 |
--------------------------------------------------------------------------------
/packages/static-blog/.dojorc:
--------------------------------------------------------------------------------
1 | {
2 | "build-app": {
3 | "build-time-render": {
4 | "static": true,
5 | "root": "app",
6 | "renderer": "jsdom"
7 | },
8 | "pwa": {
9 | "manifest": {
10 | "name": "dojo-blog",
11 | "short_name": "dojo-blog",
12 | "description": "dojo-blog",
13 | "background_color": "#ffffff",
14 | "theme_color": "#222127",
15 | "icons": [
16 | {
17 | "src": "src/logo.png",
18 | "sizes": [
19 | 128,
20 | 256,
21 | 512
22 | ]
23 | }
24 | ]
25 | },
26 | "serviceWorker": {
27 | "clientsClaim": true,
28 | "routes": [
29 | {
30 | "urlPattern": ".*",
31 | "strategy": "networkFirst",
32 | "expiration": {
33 | "maxEntries": 25
34 | }
35 | }
36 | ]
37 | }
38 | }
39 | },
40 | "test-intern": {},
41 | "create-app": {}
42 | }
43 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "examples",
3 | "version": "1.0.0",
4 | "scripts": {
5 | "build": "shx rm -rf output && lerna run build:deploy && shx mkdir output && shx mkdir output/dist && lerna run package",
6 | "prettier": "prettier --write \"**/*.{ts,tsx,md}\" --ignore-path=.gitignore"
7 | },
8 | "devDependencies": {
9 | "husky": "4.2.3",
10 | "lerna": "3.22.1",
11 | "lint-staged": "10.0.10",
12 | "prettier": "2.0.2",
13 | "shx": "0.3.2"
14 | },
15 | "prettier": {
16 | "singleQuote": true,
17 | "tabWidth": 4,
18 | "useTabs": true,
19 | "printWidth": 120,
20 | "arrowParens": "always",
21 | "trailingComma": "none"
22 | },
23 | "lint-staged": {
24 | "*.{ts,tsx,md}": [
25 | "prettier --write"
26 | ]
27 | },
28 | "husky": {
29 | "hooks": {
30 | "pre-commit": "lint-staged"
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/widgets/group-assessment/GroupAssessment.m.css:
--------------------------------------------------------------------------------
1 | @import '../../variables.css';
2 |
3 | .root {
4 | margin-bottom: calc(var(--grid-size) * 6);
5 | }
6 |
7 | .title {
8 | margin-bottom: calc(var(--grid-size) * 2.25);
9 | }
10 |
11 | .row {
12 | align-items: center;
13 | cursor: pointer;
14 | display: flex;
15 | margin-bottom: calc(var(--grid-size) * 2);
16 | user-select: none;
17 | }
18 |
19 | .name {
20 | color: var(--color-gray);
21 | margin-left: calc(var(--grid-size) * 3);
22 | position: relative;
23 | top: calc(var(--grid-size) / -4);
24 | }
25 |
26 | .isNew {
27 | color: var(--color-black);
28 | font-weight: bold;
29 | }
30 |
31 | .isNew .name:after {
32 | content: '(new!)';
33 | display: inline-block;
34 | margin-left: calc(var(--grid-size) / 2);
35 | font-weight: normal;
36 | font-style: italic;
37 | color: var(--color-green);
38 | }
39 |
--------------------------------------------------------------------------------
/packages/hnpwa/src/widgets/App.tsx:
--------------------------------------------------------------------------------
1 | import { create, tsx } from '@dojo/framework/core/vdom';
2 | import Route from '@dojo/framework/routing/Route';
3 |
4 | import Comments from './Comments';
5 | import Content from './Content';
6 | import Menu from './Menu';
7 |
8 | import * as css from './styles/app.m.css';
9 |
10 | const factory = create();
11 |
12 | export default factory(function App() {
13 | return (
14 |
15 |
16 |
17 | {
20 | return ;
21 | }}
22 | />
23 |
30 |
31 | );
32 | });
33 |
--------------------------------------------------------------------------------
/packages/icache-basic/src/main.tsx:
--------------------------------------------------------------------------------
1 | import { tsx, renderer, create } from '@dojo/framework/core/vdom';
2 | import icache from '@dojo/framework/core/middleware/icache';
3 |
4 | const factory = create({ icache });
5 |
6 | const App = factory(function App({ middleware: { icache } }) {
7 | const counter = icache.get('counter') || 0;
8 | return (
9 |
10 |
18 |
26 |
{`${counter}`}
27 |
28 | );
29 | });
30 |
31 | const r = renderer(() => );
32 | r.mount();
33 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/util/crypto.spec.ts:
--------------------------------------------------------------------------------
1 | import { assert } from 'chai';
2 | import { describe, it } from 'intern/lib/interfaces/bdd';
3 |
4 | import { Level } from '../interfaces';
5 | import { base64DecodeBuffer, base64EncodeBuffer, decodeLevels, encodeLevels } from './crypto';
6 |
7 | describe('crypto', () => {
8 | it('encodes and decodes a list of levels', () => {
9 | const levels: Level[] = [0, 1, 2, 3, 2, 1, 0];
10 |
11 | const buffer = encodeLevels(levels);
12 | const actual = Array.from(decodeLevels(buffer));
13 | const expected = [...levels, 0];
14 |
15 | assert.deepEqual(actual, expected);
16 | });
17 |
18 | it('encodes and decodes a buffer to base64', () => {
19 | const buffer = new Uint8Array([27, 144]);
20 | const base64 = base64EncodeBuffer(buffer);
21 | const actual = base64DecodeBuffer(base64);
22 |
23 | assert.deepEqual(actual, buffer);
24 | });
25 | });
26 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/main.tsx:
--------------------------------------------------------------------------------
1 | import { renderer, tsx } from '@dojo/framework/core/vdom';
2 | import { registerRouterInjector } from '@dojo/framework/routing/RouterInjector';
3 | import { registerI18nInjector } from '@dojo/framework/core/mixins/I18n';
4 | import App from './App';
5 | import Registry from '@dojo/framework/core/Registry';
6 |
7 | const registry = new Registry();
8 | registerI18nInjector({ locale: 'en' }, registry);
9 |
10 | const config = [
11 | {
12 | id: 'view',
13 | path: 'view/{view}/{filter}',
14 | outlet: 'view',
15 | defaultParams: {
16 | filter: 'all',
17 | view: 'list'
18 | },
19 | defaultRoute: true,
20 | children: [
21 | {
22 | id: 'edit',
23 | path: 'todo/{id}',
24 | outlet: 'edit'
25 | }
26 | ]
27 | }
28 | ];
29 | registerRouterInjector(config, registry);
30 |
31 | const r = renderer(() => );
32 | r.mount({ registry });
33 |
--------------------------------------------------------------------------------
/packages/realworld/src/widgets/ErrorList.tsx:
--------------------------------------------------------------------------------
1 | import { create, tsx } from '@dojo/framework/core/vdom';
2 | import { Errors } from '../interfaces';
3 |
4 | interface ErrorListProperties {
5 | errors: Errors;
6 | }
7 |
8 | const factory = create({}).properties();
9 |
10 | export const ErrorList = factory(function ErrorList({ properties }) {
11 | const { errors } = properties();
12 | const errorCategories = Object.keys(errors);
13 | let errorList: string[] = [];
14 | for (let i = 0; i < errorCategories.length; i++) {
15 | errorList = [
16 | ...errorList,
17 | ...errors[errorCategories[i]].map((error: string) => `${errorCategories[i]} ${error}`)
18 | ];
19 | }
20 | errorList;
21 |
22 | return (
23 |
24 | {errorList.map((error: string) => (
25 | - {error}
26 | ))}
27 |
28 | );
29 | });
30 |
31 | export default ErrorList;
32 |
--------------------------------------------------------------------------------
/packages/realworld/src/routes.ts:
--------------------------------------------------------------------------------
1 | export default [
2 | {
3 | id: 'login',
4 | path: 'login',
5 | outlet: 'login'
6 | },
7 | {
8 | id: 'register',
9 | path: 'register',
10 | outlet: 'register'
11 | },
12 | {
13 | id: 'user',
14 | path: 'user/{username}',
15 | outlet: 'user'
16 | },
17 | {
18 | id: 'favorites',
19 | path: 'user/{username}/favorites',
20 | outlet: 'favorites'
21 | },
22 | {
23 | id: 'article',
24 | path: 'article/{slug}',
25 | outlet: 'article'
26 | },
27 | {
28 | id: 'settings',
29 | path: 'settings',
30 | outlet: 'settings'
31 | },
32 | {
33 | id: 'new-post',
34 | path: 'editor',
35 | outlet: 'new-post',
36 | children: [
37 | {
38 | id: 'edit-post',
39 | path: 'editor/{slug}',
40 | outlet: 'edit-post'
41 | }
42 | ]
43 | },
44 | {
45 | id: 'home',
46 | path: 'home',
47 | outlet: 'home',
48 | defaultRoute: true
49 | }
50 | ];
51 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/middleware/router.ts:
--------------------------------------------------------------------------------
1 | import injector from '@dojo/framework/core/middleware/injector';
2 | import { create } from '@dojo/framework/core/vdom';
3 | import Router from '@dojo/framework/routing/Router';
4 | import { Params } from '@dojo/framework/routing/interfaces';
5 |
6 | const factory = create({ injector });
7 |
8 | const routerAccess = factory(function ({ middleware: { injector } }) {
9 | return (routerKey: string = 'router') => {
10 | const router = injector.get('router');
11 |
12 | if (!router) {
13 | throw new Error(`router not found with key ${routerKey}`);
14 | }
15 |
16 | return {
17 | router,
18 | go(to: string, params: Params) {
19 | const href = router.link(to, params);
20 | if (href) {
21 | router.setPath(href);
22 | return true;
23 | }
24 | return false;
25 | }
26 | };
27 | };
28 | });
29 |
30 | export default routerAccess;
31 |
--------------------------------------------------------------------------------
/packages/hnpwa/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "hnpwa",
3 | "version": "1.0.0",
4 | "scripts": {
5 | "build": "dojo build",
6 | "build:deploy": "npm install && dojo build --dojorc .dojorc-deploy && shx rm -rf node_modules",
7 | "dev": "dojo build -m dev -w -s",
8 | "lint": "eslint \"src/**/*.{ts,tsx}\"",
9 | "package": "shx cp -r output/dist/ ../../output/dist/hnpwa/",
10 | "test:ci": "echo \"no tests\""
11 | },
12 | "main": "src/main.tsx",
13 | "dependencies": {
14 | "@dojo/framework": "~8.0.0",
15 | "tslib": "~1.9.3"
16 | },
17 | "devDependencies": {
18 | "@dojo/cli": "~8.0.0",
19 | "@dojo/cli-build-app": "~8.0.1",
20 | "@types/node": "^12.12.32",
21 | "@typescript-eslint/eslint-plugin": "2.25.0",
22 | "@typescript-eslint/parser": "2.25.0",
23 | "eslint": "6.8.0",
24 | "eslint-config-prettier": "6.10.1",
25 | "eslint-plugin-import": "2.20.2",
26 | "typescript": "3.4.5"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/variables.css:
--------------------------------------------------------------------------------
1 | :root {
2 | /* Typography */
3 | --font-size-large: 18px;
4 | --font-size-medium: 16px;
5 | --font-size-normal: 14px;
6 |
7 | /* Colors */
8 | --color-blue: #0a2944;
9 | --color-dark-gray: #252525;
10 | --color-gray: #737373;
11 | --color-green: #2ecc71;
12 | --color-light-blue: #3498db;
13 | --color-light-gray: #d7d7d7;
14 | --color-off-white: hsl(207, 8%, 74%);
15 | --color-red: #e74c3c;
16 | --color-teal: #1abc9c;
17 | --color-white: #ffffff;
18 |
19 | /* Layout */
20 | --grid-size: 8px;
21 |
22 | --button-height: calc(var(--grid-size) * 4);
23 | --content-gutter: calc(var(--grid-size) * 4);
24 | --content-height: calc(100vh - var(--header-height));
25 | --content-width: calc(1170px + (2 * var(--content-gutter)));
26 | --header-height: calc(var(--grid-size) * 7.5);
27 | --input-border-radius: calc(var(--grid-size) / 4);
28 | --input-height: calc(var(--grid-size) * 5);
29 | --input-width: 470px;
30 | }
31 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/main.css:
--------------------------------------------------------------------------------
1 | html,
2 | body {
3 | margin: 0;
4 | padding: 0;
5 | }
6 |
7 | button {
8 | margin: 0;
9 | padding: 0;
10 | border: 0;
11 | background: none;
12 | font-size: 100%;
13 | vertical-align: baseline;
14 | font-family: inherit;
15 | font-weight: inherit;
16 | color: inherit;
17 | -webkit-appearance: none;
18 | appearance: none;
19 | -webkit-font-smoothing: antialiased;
20 | -moz-osx-font-smoothing: grayscale;
21 | }
22 |
23 | body {
24 | position: relative;
25 | font: 14px 'Helvetica Neue', Helvetica, Arial, sans-serif;
26 | line-height: 1.4em;
27 | background: #f5f5f5;
28 | min-width: 230px;
29 | max-width: 550px;
30 | margin: 0 auto;
31 | -webkit-font-smoothing: antialiased;
32 | -moz-osx-font-smoothing: grayscale;
33 | font-weight: 300;
34 | }
35 |
36 | :focus {
37 | outline: 0;
38 | }
39 |
40 | @media (max-width: 430px) {
41 | .footer {
42 | height: 50px;
43 | }
44 |
45 | .filters {
46 | bottom: 10px;
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/widgets/header/Header.tsx:
--------------------------------------------------------------------------------
1 | import { create, tsx } from '@dojo/framework/core/vdom';
2 | import Link from '@dojo/framework/routing/Link';
3 | import Route from '@dojo/framework/routing/Route';
4 | import Header from '@dojo/widgets/header';
5 |
6 | import { RouteName } from '../../routes';
7 | import { Icon } from '../icon/Icon';
8 | import * as css from './Header.m.css';
9 |
10 | const factory = create();
11 |
12 | export default factory(function () {
13 | const backArrow = () => (
14 |
15 |
16 |
17 | );
18 |
19 | const leading = (
20 |
21 |
22 |
23 |
24 | );
25 |
26 | return (
27 |
28 |
29 | {{
30 | title: 'Skill Tracker',
31 | leading
32 | }}
33 |
34 |
35 | );
36 | });
37 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/widgets/skill-key/SkillKey.tsx:
--------------------------------------------------------------------------------
1 | import { create, tsx } from '@dojo/framework/core/vdom';
2 |
3 | import { Level } from '../../interfaces';
4 | import { LevelIcon } from '../level-icon/LevelIcon';
5 | import * as css from './SkillKey.m.css';
6 |
7 | const factory = create();
8 |
9 | export const SkillKey = factory(function () {
10 | return (
11 |
12 |
Key
13 |
14 |
15 |
16 | Basic
17 |
18 |
19 |
20 | Proficient
21 |
22 |
23 |
24 | Expert
25 |
26 |
27 |
28 | );
29 | });
30 |
--------------------------------------------------------------------------------
/packages/realworld/src/processes/routeProcesses.ts:
--------------------------------------------------------------------------------
1 | import { createProcess } from '@dojo/framework/stores/process';
2 | import { commandFactory } from './utils';
3 | import { ChangeRoutePayload } from './interfaces';
4 |
5 | function isProfile(currentOutlet: string, outlet: string) {
6 | const outlets = ['user', 'favorites'];
7 | return outlets.indexOf(currentOutlet) > -1 && outlets.indexOf(outlet) > -1;
8 | }
9 |
10 | const changeRouteCommand = commandFactory(({ state, payload: { outlet, context } }) => {
11 | const currentOutlet = state.routing.outlet;
12 |
13 | state.routing.outlet = outlet;
14 | state.routing.params = context.params;
15 | state.settings = {};
16 | state.editor = {};
17 | if (isProfile(currentOutlet, outlet) && state.profile) {
18 | state.profile.feed = {};
19 | } else {
20 | state.profile = {};
21 | }
22 | state.feed = {};
23 | state.errors = {};
24 | });
25 | export const changeRouteProcess = createProcess('change-route', [changeRouteCommand]);
26 |
--------------------------------------------------------------------------------
/packages/resize-observer/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "resize-observer",
3 | "version": "1.0.0",
4 | "scripts": {
5 | "dev": "dojo build app -m dev -w -s",
6 | "build": "dojo build",
7 | "build:deploy": "npm install && dojo build --mode dist --dojorc .dojorc-deploy && shx rm -rf node_modules",
8 | "lint": "eslint \"src/**/*.{ts,tsx}\"",
9 | "package": "shx cp -r output/dist/ ../../output/dist/resize-observer/",
10 | "test:ci": "echo no tests"
11 | },
12 | "main": "src/main.ts",
13 | "dependencies": {
14 | "@dojo/framework": "~8.0.0",
15 | "@dojo/widgets": "~8.0.0",
16 | "tslib": "~1.9.3"
17 | },
18 | "devDependencies": {
19 | "@dojo/cli": "~8.0.0",
20 | "@dojo/cli-build-app": "~8.0.1",
21 | "@typescript-eslint/eslint-plugin": "2.25.0",
22 | "@typescript-eslint/parser": "2.25.0",
23 | "eslint": "6.8.0",
24 | "eslint-config-prettier": "6.10.1",
25 | "eslint-plugin-import": "2.20.2",
26 | "typescript": "~3.4.5"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/widgets/styles/todoFooter.m.css:
--------------------------------------------------------------------------------
1 | .footer {
2 | color: #777;
3 | padding: 10px 15px;
4 | height: 20px;
5 | text-align: center;
6 | border-top: 1px solid #e6e6e6;
7 | }
8 |
9 | .footer:before {
10 | content: '';
11 | position: absolute;
12 | right: 0;
13 | bottom: 0;
14 | left: 0;
15 | height: 50px;
16 | overflow: hidden;
17 | box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2),
18 | 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2);
19 | }
20 |
21 | .todoCountLabel {
22 | float: left;
23 | text-align: left;
24 | }
25 |
26 | .todoCount {
27 | font-weight: 300;
28 | }
29 |
30 | .clearCompleted,
31 | .clearCompleted:active {
32 | float: right;
33 | position: relative;
34 | line-height: 20px;
35 | text-decoration: none;
36 | cursor: pointer;
37 | }
38 |
39 | .clearCompleted:focus {
40 | text-decoration: underline;
41 | }
42 |
43 | .clearCompleted:hover {
44 | text-decoration: underline;
45 | }
46 |
--------------------------------------------------------------------------------
/packages/example-index/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "example-index",
3 | "version": "1.0.0",
4 | "scripts": {
5 | "dev": "dojo build --mode dev --watch --serve",
6 | "build": "dojo build --mode dist",
7 | "build:dev": "dojo build --mode dev",
8 | "build:deploy": "npm install && npm run build && shx rm -rf node_modules",
9 | "package": "shx cp -r output/dist/* ../../output/dist",
10 | "test": "dojo test",
11 | "test:unit": "dojo build --mode unit && dojo test --unit --config local",
12 | "test:functional": "dojo build --mode functional && dojo test --functional --config local",
13 | "test:all": "dojo build --mode unit && dojo build --mode functional && dojo test --all --config local"
14 | },
15 | "dependencies": {
16 | "@dojo/framework": "~8.0.0",
17 | "tslib": "~1.9.1"
18 | },
19 | "devDependencies": {
20 | "@dojo/cli": "~8.0.0",
21 | "@dojo/cli-build-app": "~8.0.1",
22 | "@dojo/cli-test-intern": "~8.0.0",
23 | "@types/node": "^14.0.13",
24 | "typescript": "~3.4.5"
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/packages/static-blog/src/Header.m.css:
--------------------------------------------------------------------------------
1 | .root {
2 | padding: 1rem;
3 | }
4 |
5 | .link {
6 | color: #000;
7 | display: inline-block;
8 | font-weight: bold;
9 | text-decoration: none;
10 | transition: color 0.15s ease-in;
11 | opacity: 1;
12 | transition: opacity 0.15s ease-in;
13 | font-size: 3rem;
14 | text-align: center;
15 | display: block;
16 | }
17 |
18 | .link:hover,
19 | .link:focus {
20 | opacity: 0.5;
21 | transition: opacity 0.15s ease-in;
22 | }
23 |
24 | .link:active {
25 | opacity: 0.8;
26 | transition: opacity 0.15s ease-out;
27 | transition: color 0.15s ease-in;
28 | }
29 |
30 | .link:link,
31 | .link:visited {
32 | transition: color 0.15s ease-in;
33 | }
34 |
35 | .link:hover {
36 | transition: color 0.15s ease-in;
37 | }
38 |
39 | .link:focus {
40 | transition: color 0.15s ease-in;
41 | outline: 1px dotted currentColor;
42 | }
43 |
44 | @media screen and (min-width: 30em) {
45 | .root {
46 | padding: 2rem;
47 | }
48 |
49 | .link {
50 | font-size: 2rem;
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/packages/hnpwa/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | parser: '@typescript-eslint/parser',
3 | parserOptions: {
4 | project: 'tsconfig.json',
5 | sourceType: 'module',
6 | },
7 | plugins: ['@typescript-eslint/eslint-plugin'],
8 | extends: [
9 | 'plugin:@typescript-eslint/eslint-recommended',
10 | 'plugin:@typescript-eslint/recommended',
11 | 'prettier',
12 | 'prettier/@typescript-eslint',
13 | ],
14 | root: true,
15 | env: {
16 | node: true,
17 | },
18 | rules: {
19 | '@typescript-eslint/interface-name-prefix': 'off',
20 | '@typescript-eslint/explicit-function-return-type': 'off',
21 | '@typescript-eslint/no-explicit-any': 'off',
22 | '@typescript-eslint/no-unused-vars': 'off',
23 | '@typescript-eslint/no-empty-function': 'off',
24 | '@typescript-eslint/no-use-before-define': 'off',
25 | '@typescript-eslint/no-empty-interface': 'off',
26 | '@typescript-eslint/camelcase': 'off',
27 | '@typescript-eslint/no-var-requires': 'off'
28 | },
29 | };
30 |
--------------------------------------------------------------------------------
/packages/realworld/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | parser: '@typescript-eslint/parser',
3 | parserOptions: {
4 | project: 'tsconfig.json',
5 | sourceType: 'module',
6 | },
7 | plugins: ['@typescript-eslint/eslint-plugin'],
8 | extends: [
9 | 'plugin:@typescript-eslint/eslint-recommended',
10 | 'plugin:@typescript-eslint/recommended',
11 | 'prettier',
12 | 'prettier/@typescript-eslint',
13 | ],
14 | root: true,
15 | env: {
16 | node: true,
17 | },
18 | rules: {
19 | '@typescript-eslint/interface-name-prefix': 'off',
20 | '@typescript-eslint/explicit-function-return-type': 'off',
21 | '@typescript-eslint/no-explicit-any': 'off',
22 | '@typescript-eslint/no-unused-vars': 'off',
23 | '@typescript-eslint/no-empty-function': 'off',
24 | '@typescript-eslint/no-use-before-define': 'off',
25 | '@typescript-eslint/no-empty-interface': 'off',
26 | '@typescript-eslint/camelcase': 'off',
27 | '@typescript-eslint/no-var-requires': 'off'
28 | },
29 | };
30 |
--------------------------------------------------------------------------------
/packages/static-blog/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | parser: '@typescript-eslint/parser',
3 | parserOptions: {
4 | project: 'tsconfig.json',
5 | sourceType: 'module',
6 | },
7 | plugins: ['@typescript-eslint/eslint-plugin'],
8 | extends: [
9 | 'plugin:@typescript-eslint/eslint-recommended',
10 | 'plugin:@typescript-eslint/recommended',
11 | 'prettier',
12 | 'prettier/@typescript-eslint',
13 | ],
14 | root: true,
15 | env: {
16 | node: true,
17 | },
18 | rules: {
19 | '@typescript-eslint/interface-name-prefix': 'off',
20 | '@typescript-eslint/explicit-function-return-type': 'off',
21 | '@typescript-eslint/no-explicit-any': 'off',
22 | '@typescript-eslint/no-unused-vars': 'off',
23 | '@typescript-eslint/no-empty-function': 'off',
24 | '@typescript-eslint/no-use-before-define': 'off',
25 | '@typescript-eslint/no-empty-interface': 'off',
26 | '@typescript-eslint/camelcase': 'off',
27 | '@typescript-eslint/no-var-requires': 'off'
28 | },
29 | };
30 |
--------------------------------------------------------------------------------
/packages/todo-mvc/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | parser: '@typescript-eslint/parser',
3 | parserOptions: {
4 | project: 'tsconfig.json',
5 | sourceType: 'module',
6 | },
7 | plugins: ['@typescript-eslint/eslint-plugin'],
8 | extends: [
9 | 'plugin:@typescript-eslint/eslint-recommended',
10 | 'plugin:@typescript-eslint/recommended',
11 | 'prettier',
12 | 'prettier/@typescript-eslint',
13 | ],
14 | root: true,
15 | env: {
16 | node: true,
17 | },
18 | rules: {
19 | '@typescript-eslint/interface-name-prefix': 'off',
20 | '@typescript-eslint/explicit-function-return-type': 'off',
21 | '@typescript-eslint/no-explicit-any': 'off',
22 | '@typescript-eslint/no-unused-vars': 'off',
23 | '@typescript-eslint/no-empty-function': 'off',
24 | '@typescript-eslint/no-use-before-define': 'off',
25 | '@typescript-eslint/no-empty-interface': 'off',
26 | '@typescript-eslint/camelcase': 'off',
27 | '@typescript-eslint/no-var-requires': 'off'
28 | },
29 | };
30 |
--------------------------------------------------------------------------------
/packages/world-clock/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | parser: '@typescript-eslint/parser',
3 | parserOptions: {
4 | project: 'tsconfig.json',
5 | sourceType: 'module',
6 | },
7 | plugins: ['@typescript-eslint/eslint-plugin'],
8 | extends: [
9 | 'plugin:@typescript-eslint/eslint-recommended',
10 | 'plugin:@typescript-eslint/recommended',
11 | 'prettier',
12 | 'prettier/@typescript-eslint',
13 | ],
14 | root: true,
15 | env: {
16 | node: true,
17 | },
18 | rules: {
19 | '@typescript-eslint/interface-name-prefix': 'off',
20 | '@typescript-eslint/explicit-function-return-type': 'off',
21 | '@typescript-eslint/no-explicit-any': 'off',
22 | '@typescript-eslint/no-unused-vars': 'off',
23 | '@typescript-eslint/no-empty-function': 'off',
24 | '@typescript-eslint/no-use-before-define': 'off',
25 | '@typescript-eslint/no-empty-interface': 'off',
26 | '@typescript-eslint/camelcase': 'off',
27 | '@typescript-eslint/no-var-requires': 'off'
28 | },
29 | };
30 |
--------------------------------------------------------------------------------
/packages/dgrid-wrapper/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | parser: '@typescript-eslint/parser',
3 | parserOptions: {
4 | project: 'tsconfig.json',
5 | sourceType: 'module',
6 | },
7 | plugins: ['@typescript-eslint/eslint-plugin'],
8 | extends: [
9 | 'plugin:@typescript-eslint/eslint-recommended',
10 | 'plugin:@typescript-eslint/recommended',
11 | 'prettier',
12 | 'prettier/@typescript-eslint',
13 | ],
14 | root: true,
15 | env: {
16 | node: true,
17 | },
18 | rules: {
19 | '@typescript-eslint/interface-name-prefix': 'off',
20 | '@typescript-eslint/explicit-function-return-type': 'off',
21 | '@typescript-eslint/no-explicit-any': 'off',
22 | '@typescript-eslint/no-unused-vars': 'off',
23 | '@typescript-eslint/no-empty-function': 'off',
24 | '@typescript-eslint/no-use-before-define': 'off',
25 | '@typescript-eslint/no-empty-interface': 'off',
26 | '@typescript-eslint/camelcase': 'off',
27 | '@typescript-eslint/no-var-requires': 'off'
28 | },
29 | };
30 |
--------------------------------------------------------------------------------
/packages/icache-advanced/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | parser: '@typescript-eslint/parser',
3 | parserOptions: {
4 | project: 'tsconfig.json',
5 | sourceType: 'module',
6 | },
7 | plugins: ['@typescript-eslint/eslint-plugin'],
8 | extends: [
9 | 'plugin:@typescript-eslint/eslint-recommended',
10 | 'plugin:@typescript-eslint/recommended',
11 | 'prettier',
12 | 'prettier/@typescript-eslint',
13 | ],
14 | root: true,
15 | env: {
16 | node: true,
17 | },
18 | rules: {
19 | '@typescript-eslint/interface-name-prefix': 'off',
20 | '@typescript-eslint/explicit-function-return-type': 'off',
21 | '@typescript-eslint/no-explicit-any': 'off',
22 | '@typescript-eslint/no-unused-vars': 'off',
23 | '@typescript-eslint/no-empty-function': 'off',
24 | '@typescript-eslint/no-use-before-define': 'off',
25 | '@typescript-eslint/no-empty-interface': 'off',
26 | '@typescript-eslint/camelcase': 'off',
27 | '@typescript-eslint/no-var-requires': 'off'
28 | },
29 | };
30 |
--------------------------------------------------------------------------------
/packages/icache-basic/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | parser: '@typescript-eslint/parser',
3 | parserOptions: {
4 | project: 'tsconfig.json',
5 | sourceType: 'module',
6 | },
7 | plugins: ['@typescript-eslint/eslint-plugin'],
8 | extends: [
9 | 'plugin:@typescript-eslint/eslint-recommended',
10 | 'plugin:@typescript-eslint/recommended',
11 | 'prettier',
12 | 'prettier/@typescript-eslint',
13 | ],
14 | root: true,
15 | env: {
16 | node: true,
17 | },
18 | rules: {
19 | '@typescript-eslint/interface-name-prefix': 'off',
20 | '@typescript-eslint/explicit-function-return-type': 'off',
21 | '@typescript-eslint/no-explicit-any': 'off',
22 | '@typescript-eslint/no-unused-vars': 'off',
23 | '@typescript-eslint/no-empty-function': 'off',
24 | '@typescript-eslint/no-use-before-define': 'off',
25 | '@typescript-eslint/no-empty-interface': 'off',
26 | '@typescript-eslint/camelcase': 'off',
27 | '@typescript-eslint/no-var-requires': 'off'
28 | },
29 | };
30 |
--------------------------------------------------------------------------------
/packages/intersection-observer/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "intersection-observer",
3 | "version": "1.0.0",
4 | "main": "src/main.ts",
5 | "scripts": {
6 | "dev": "dojo build app -m dev -w -s",
7 | "build": "dojo build",
8 | "build:deploy": "npm install && dojo build --mode dist --dojorc .dojorc-deploy && shx rm -rf node_modules",
9 | "lint": "eslint \"src/**/*.{ts,tsx}\"",
10 | "package": "shx cp -r output/dist/ ../../output/dist/intersection-observer/",
11 | "test:ci": "echo no tests"
12 | },
13 | "dependencies": {
14 | "@dojo/framework": "~8.0.0",
15 | "tslib": "~1.9.3"
16 | },
17 | "devDependencies": {
18 | "@dojo/cli": "~8.0.0",
19 | "@dojo/cli-build-app": "~8.0.1",
20 | "@dojo/cli-test-intern": "~8.0.0",
21 | "@typescript-eslint/eslint-plugin": "2.25.0",
22 | "@typescript-eslint/parser": "2.25.0",
23 | "eslint": "6.8.0",
24 | "eslint-config-prettier": "6.10.1",
25 | "eslint-plugin-import": "2.20.2",
26 | "typescript": "~3.4.5"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/packages/realworld/src/widgets/Tags.tsx:
--------------------------------------------------------------------------------
1 | import { create, tsx } from '@dojo/framework/core/vdom';
2 | import { fetchFeedProcess } from '../processes/feedProcesses';
3 | import store from '../store';
4 |
5 | const factory = create({ store });
6 |
7 | export const Tags = factory(function Tags({ middleware: { store } }) {
8 | const { get, path, executor } = store;
9 | const tags = get(path('tags')) || [];
10 |
11 | return (
12 |
13 |
14 |
Popular Tags
15 |
30 |
31 |
32 | );
33 | });
34 |
35 | export default Tags;
36 |
--------------------------------------------------------------------------------
/packages/resize-observer/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | parser: '@typescript-eslint/parser',
3 | parserOptions: {
4 | project: 'tsconfig.json',
5 | sourceType: 'module',
6 | },
7 | plugins: ['@typescript-eslint/eslint-plugin'],
8 | extends: [
9 | 'plugin:@typescript-eslint/eslint-recommended',
10 | 'plugin:@typescript-eslint/recommended',
11 | 'prettier',
12 | 'prettier/@typescript-eslint',
13 | ],
14 | root: true,
15 | env: {
16 | node: true,
17 | },
18 | rules: {
19 | '@typescript-eslint/interface-name-prefix': 'off',
20 | '@typescript-eslint/explicit-function-return-type': 'off',
21 | '@typescript-eslint/no-explicit-any': 'off',
22 | '@typescript-eslint/no-unused-vars': 'off',
23 | '@typescript-eslint/no-empty-function': 'off',
24 | '@typescript-eslint/no-use-before-define': 'off',
25 | '@typescript-eslint/no-empty-interface': 'off',
26 | '@typescript-eslint/camelcase': 'off',
27 | '@typescript-eslint/no-var-requires': 'off'
28 | },
29 | };
30 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/routes.ts:
--------------------------------------------------------------------------------
1 | import { RouteConfig } from '@dojo/framework/routing/interfaces';
2 |
3 | export const enum RouteName {
4 | Compare = 'compare',
5 | MultiCompare = 'multiCompare',
6 | EditSkills = 'editSkills',
7 | Home = 'home',
8 | Skills = 'skills'
9 | }
10 |
11 | export const enum OutletName {
12 | Main = 'main'
13 | }
14 |
15 | const routes: RouteConfig[] = [
16 | {
17 | path: '/',
18 | id: RouteName.Home,
19 | outlet: OutletName.Main,
20 | defaultRoute: true
21 | },
22 | {
23 | path: 'skills',
24 | id: RouteName.Skills,
25 | outlet: OutletName.Main,
26 | children: [
27 | {
28 | path: '{hash}',
29 | id: RouteName.EditSkills,
30 | outlet: OutletName.Main
31 | }
32 | ]
33 | },
34 | {
35 | path: 'compare',
36 | id: RouteName.Compare,
37 | outlet: OutletName.Main,
38 | children: [
39 | {
40 | path: '{hashList}',
41 | id: RouteName.MultiCompare,
42 | outlet: OutletName.Main
43 | }
44 | ]
45 | }
46 | ];
47 |
48 | export default routes;
49 |
--------------------------------------------------------------------------------
/packages/store-arrays/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | parser: '@typescript-eslint/parser',
3 | parserOptions: {
4 | project: 'tsconfig.json',
5 | sourceType: 'module',
6 | },
7 | plugins: ['@typescript-eslint/eslint-plugin'],
8 | extends: [
9 | 'plugin:@typescript-eslint/eslint-recommended',
10 | 'plugin:@typescript-eslint/recommended',
11 | 'prettier',
12 | 'prettier/@typescript-eslint',
13 | ],
14 | root: true,
15 | env: {
16 | node: true,
17 | },
18 | rules: {
19 | '@typescript-eslint/interface-name-prefix': 'off',
20 | '@typescript-eslint/explicit-function-return-type': 'off',
21 | '@typescript-eslint/no-explicit-any': 'off',
22 | '@typescript-eslint/no-unused-vars': 'off',
23 | '@typescript-eslint/no-empty-function': 'off',
24 | '@typescript-eslint/no-use-before-define': 'off',
25 | '@typescript-eslint/no-empty-interface': 'off',
26 | '@typescript-eslint/camelcase': 'off',
27 | '@typescript-eslint/no-var-requires': 'off'
28 | },
29 | };
30 |
--------------------------------------------------------------------------------
/packages/custom-element-menu/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | parser: '@typescript-eslint/parser',
3 | parserOptions: {
4 | project: 'tsconfig.json',
5 | sourceType: 'module',
6 | },
7 | plugins: ['@typescript-eslint/eslint-plugin'],
8 | extends: [
9 | 'plugin:@typescript-eslint/eslint-recommended',
10 | 'plugin:@typescript-eslint/recommended',
11 | 'prettier',
12 | 'prettier/@typescript-eslint',
13 | ],
14 | root: true,
15 | env: {
16 | node: true,
17 | },
18 | rules: {
19 | '@typescript-eslint/interface-name-prefix': 'off',
20 | '@typescript-eslint/explicit-function-return-type': 'off',
21 | '@typescript-eslint/no-explicit-any': 'off',
22 | '@typescript-eslint/no-unused-vars': 'off',
23 | '@typescript-eslint/no-empty-function': 'off',
24 | '@typescript-eslint/no-use-before-define': 'off',
25 | '@typescript-eslint/no-empty-interface': 'off',
26 | '@typescript-eslint/camelcase': 'off',
27 | '@typescript-eslint/no-var-requires': 'off'
28 | },
29 | };
30 |
--------------------------------------------------------------------------------
/packages/intersection-observer/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | parser: '@typescript-eslint/parser',
3 | parserOptions: {
4 | project: 'tsconfig.json',
5 | sourceType: 'module',
6 | },
7 | plugins: ['@typescript-eslint/eslint-plugin'],
8 | extends: [
9 | 'plugin:@typescript-eslint/eslint-recommended',
10 | 'plugin:@typescript-eslint/recommended',
11 | 'prettier',
12 | 'prettier/@typescript-eslint',
13 | ],
14 | root: true,
15 | env: {
16 | node: true,
17 | },
18 | rules: {
19 | '@typescript-eslint/interface-name-prefix': 'off',
20 | '@typescript-eslint/explicit-function-return-type': 'off',
21 | '@typescript-eslint/no-explicit-any': 'off',
22 | '@typescript-eslint/no-unused-vars': 'off',
23 | '@typescript-eslint/no-empty-function': 'off',
24 | '@typescript-eslint/no-use-before-define': 'off',
25 | '@typescript-eslint/no-empty-interface': 'off',
26 | '@typescript-eslint/camelcase': 'off',
27 | '@typescript-eslint/no-var-requires': 'off'
28 | },
29 | };
30 |
--------------------------------------------------------------------------------
/packages/resize-middleware/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | parser: '@typescript-eslint/parser',
3 | parserOptions: {
4 | project: 'tsconfig.json',
5 | sourceType: 'module',
6 | },
7 | plugins: ['@typescript-eslint/eslint-plugin'],
8 | extends: [
9 | 'plugin:@typescript-eslint/eslint-recommended',
10 | 'plugin:@typescript-eslint/recommended',
11 | 'prettier',
12 | 'prettier/@typescript-eslint',
13 | ],
14 | root: true,
15 | env: {
16 | node: true,
17 | },
18 | rules: {
19 | '@typescript-eslint/interface-name-prefix': 'off',
20 | '@typescript-eslint/explicit-function-return-type': 'off',
21 | '@typescript-eslint/no-explicit-any': 'off',
22 | '@typescript-eslint/no-unused-vars': 'off',
23 | '@typescript-eslint/no-empty-function': 'off',
24 | '@typescript-eslint/no-use-before-define': 'off',
25 | '@typescript-eslint/no-empty-interface': 'off',
26 | '@typescript-eslint/camelcase': 'off',
27 | '@typescript-eslint/no-var-requires': 'off'
28 | },
29 | };
30 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | parser: '@typescript-eslint/parser',
3 | parserOptions: {
4 | project: 'tsconfig.json',
5 | sourceType: 'module',
6 | },
7 | plugins: ['@typescript-eslint/eslint-plugin'],
8 | extends: [
9 | 'plugin:@typescript-eslint/eslint-recommended',
10 | 'plugin:@typescript-eslint/recommended',
11 | 'prettier',
12 | 'prettier/@typescript-eslint',
13 | ],
14 | root: true,
15 | env: {
16 | node: true,
17 | },
18 | rules: {
19 | '@typescript-eslint/interface-name-prefix': 'off',
20 | '@typescript-eslint/explicit-function-return-type': 'off',
21 | '@typescript-eslint/no-explicit-any': 'off',
22 | '@typescript-eslint/no-unused-vars': 'off',
23 | '@typescript-eslint/no-empty-function': 'off',
24 | '@typescript-eslint/no-use-before-define': 'off',
25 | '@typescript-eslint/no-empty-interface': 'off',
26 | '@typescript-eslint/camelcase': 'off',
27 | '@typescript-eslint/no-var-requires': 'off'
28 | },
29 | };
30 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/themes/matrix.ts:
--------------------------------------------------------------------------------
1 | import * as button from './matrix/button.m.css';
2 | import * as checkbox from './matrix/checkbox.m.css';
3 | import * as chip from './matrix/chip.m.css';
4 | import * as chipTypeahead from './matrix/chip-typeahead.m.css';
5 | import * as header from './matrix/header.m.css';
6 | import * as label from './matrix/label.m.css';
7 | import * as listItem from './matrix/list-item.m.css';
8 | import * as textArea from './matrix/text-area.m.css';
9 | import * as textInput from './matrix/text-input.m.css';
10 | import * as typeahead from './matrix/typeahead.m.css';
11 |
12 | export default {
13 | '@dojo/widgets/button': button,
14 | '@dojo/widgets/checkbox': checkbox,
15 | '@dojo/widgets/chip': chip,
16 | '@dojo/widgets/chip-typeahead': chipTypeahead,
17 | '@dojo/widgets/header': header,
18 | '@dojo/widgets/label': label,
19 | '@dojo/widgets/list-item': listItem,
20 | '@dojo/widgets/text-area': textArea,
21 | '@dojo/widgets/text-input': textInput,
22 | '@dojo/widgets/typeahead': typeahead
23 | };
24 |
--------------------------------------------------------------------------------
/packages/resize-observer/src/widgets/styles/article.m.css:
--------------------------------------------------------------------------------
1 | .root {
2 | background: #fff;
3 | border: 1px solid rgba(0, 0, 0, 0.075);
4 | padding: 1.5em;
5 | position: relative;
6 | overflow: hidden;
7 | }
8 |
9 | .content {
10 | }
11 |
12 | .text {
13 | padding: 0;
14 | margin: 0;
15 | }
16 |
17 | .big {
18 | & .content {
19 | column-count: 3;
20 | }
21 | & .badge {
22 | background: #40bf80;
23 | }
24 | }
25 |
26 | .medium {
27 | & .content {
28 | column-count: 2;
29 | }
30 | & .badge {
31 | background: #ab47bc;
32 | }
33 | }
34 |
35 | .small {
36 | & .content {
37 | column-count: 1;
38 | }
39 | & .badge {
40 | background: #33b2cc;
41 | }
42 | }
43 |
44 | .title {
45 | border-bottom: 1px solid rgba(0, 0, 0, 0.1);
46 | font-weight: 700;
47 | letter-spacing: 0.15em;
48 | margin-bottom: 1em;
49 | padding-bottom: 0.5em;
50 | text-transform: uppercase;
51 | font-size: 1.2em;
52 | }
53 |
54 | .root .paragraph {
55 | margin: 0 0 1em;
56 | }
57 |
58 | .badge {
59 | composes: badge from "./common.m.css";
60 | }
61 |
--------------------------------------------------------------------------------
/packages/hnpwa/src/widgets/Comment.tsx:
--------------------------------------------------------------------------------
1 | import { create, tsx } from '@dojo/framework/core/vdom';
2 | import { CommentItem } from './../interfaces';
3 |
4 | import * as css from './styles/comment.m.css';
5 |
6 | export interface CommentProperties {
7 | comment: CommentItem;
8 | }
9 |
10 | const factory = create().properties();
11 |
12 | const CommentWidget = factory(function Comment({ properties }) {
13 | const {
14 | comment: { user, content, time_ago, comments = [] }
15 | } = properties();
16 |
17 | return (
18 |
19 |
20 | {user && {user}}
21 | {time_ago}
22 |
23 |
24 |
25 | {comments.map((comment, index) => (
26 |
27 | ))}
28 |
29 |
30 | );
31 | });
32 |
33 | export default CommentWidget;
34 |
--------------------------------------------------------------------------------
/packages/intersection-observer/src/widgets/InfiniteList.ts:
--------------------------------------------------------------------------------
1 | import { create, v, w } from '@dojo/framework/core/vdom';
2 | import intersection from '@dojo/framework/core/middleware/intersection';
3 |
4 | import Item from './Item';
5 | import * as css from './styles/infiniteList.m.css';
6 |
7 | export interface InfiniteListProperties {
8 | onRequestItems(): Promise;
9 | data: any[];
10 | isLoading: boolean;
11 | }
12 |
13 | const factory = create({ intersection }).properties();
14 |
15 | export default factory(function InfiniteList({ middleware: { intersection }, properties }) {
16 | const { onRequestItems, data, isLoading } = properties();
17 | const { isIntersecting } = intersection.get('bottom');
18 |
19 | if (isIntersecting && !isLoading) {
20 | onRequestItems();
21 | }
22 |
23 | return v('div', {}, [
24 | v(
25 | 'div',
26 | { key: 'data' },
27 | data.map(({ title, summary }, i) => w(Item, { key: i, title, summary }))
28 | ),
29 | v('div', { key: 'bottom', classes: css.bottom })
30 | ]);
31 | });
32 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/widgets/TodoViewSwitch.tsx:
--------------------------------------------------------------------------------
1 | import { create, tsx } from '@dojo/framework/core/vdom';
2 | import { theme } from '@dojo/framework/core/middleware/theme';
3 | import Link from '@dojo/framework/routing/ActiveLink';
4 |
5 | import * as css from './styles/todoViewSwitch.m.css';
6 |
7 | export interface TodoViewSwitchProperties {
8 | filter: string;
9 | }
10 |
11 | const factory = create({ theme }).properties();
12 |
13 | export default factory(function TodoViewSwitch({ middleware: { theme }, properties }) {
14 | const { filter } = properties();
15 | const { active, viewChooser, list, cards, item, link } = theme.classes(css);
16 | return (
17 |
18 | -
19 |
20 |
21 | -
22 |
23 |
24 |
25 | );
26 | });
27 |
--------------------------------------------------------------------------------
/packages/realworld/src/widgets/ArticleAuthorControls.tsx:
--------------------------------------------------------------------------------
1 | import { create, tsx } from '@dojo/framework/core/vdom';
2 | import { Link } from '@dojo/framework/routing/Link';
3 | import { SlugPayload } from '../processes/interfaces';
4 |
5 | interface ArticleAuthorControlsProperties {
6 | slug: string;
7 | deleteArticle: (opts: SlugPayload) => void;
8 | }
9 |
10 | const factory = create({}).properties();
11 |
12 | export const ArticleAuthorControls = factory(function ArticleAuthorControls({ properties }) {
13 | const { slug, deleteArticle } = properties();
14 | return (
15 |
16 |
17 | Edit Article
18 |
19 |
27 |
28 | );
29 | });
30 |
31 | export default ArticleAuthorControls;
32 |
--------------------------------------------------------------------------------
/packages/icache-basic/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "icache-basic",
3 | "version": "1.0.0",
4 | "scripts": {
5 | "dev": "dojo build --mode dev --watch --serve",
6 | "build": "dojo build --mode dist",
7 | "build:deploy": "npm install && dojo build --mode dist --dojorc .dojorc-deploy && shx rm -rf node_modules",
8 | "build:dev": "dojo build --mode dev",
9 | "lint": "eslint \"src/**/*.{ts,tsx}\"",
10 | "package": "shx cp -r output/dist/ ../../output/dist/icache-basic/",
11 | "test:ci": "echo no tests"
12 | },
13 | "main": "src/main.tsx",
14 | "dependencies": {
15 | "@dojo/framework": "~8.0.0",
16 | "cldrjs": "0.5.0",
17 | "tslib": "~1.9.3"
18 | },
19 | "devDependencies": {
20 | "@dojo/cli": "~8.0.0",
21 | "@dojo/cli-build-app": "~8.0.1",
22 | "@typescript-eslint/eslint-plugin": "2.25.0",
23 | "@typescript-eslint/parser": "2.25.0",
24 | "eslint": "6.8.0",
25 | "eslint-config-prettier": "6.10.1",
26 | "eslint-plugin-import": "2.20.2",
27 | "typescript": "~3.4.5"
28 | },
29 | "keywords": [],
30 | "description": ""
31 | }
32 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/widgets/TodoSearch.tsx:
--------------------------------------------------------------------------------
1 | import { create, tsx } from '@dojo/framework/core/vdom';
2 | import { theme } from '@dojo/framework/core/middleware/theme';
3 | import { i18n } from '@dojo/framework/core/middleware/i18n';
4 | import store from '../store';
5 | import { todoSearch } from '../processes';
6 |
7 | import bundle from '../nls/common';
8 | import * as css from './styles/todoSearch.m.css';
9 |
10 | const factory = create({ theme, store, i18n });
11 |
12 | export default factory(function TodoSearch({ middleware: { store, theme, i18n } }) {
13 | const { get, path, executor } = store;
14 | const { search, searchIcon } = theme.classes(css);
15 | const { searchPlaceholder } = i18n.localize(bundle).messages;
16 | const value = get(path('search'));
17 |
18 | function onInput(event: KeyboardEvent) {
19 | executor(todoSearch)({ search: event.target.value });
20 | }
21 |
22 | return (
23 |
24 |
25 |
26 |
27 | );
28 | });
29 |
--------------------------------------------------------------------------------
/packages/dgrid-wrapper/.dojorc:
--------------------------------------------------------------------------------
1 | {
2 | "build-app": {
3 | "externals": {
4 | "dependencies": [
5 | { "from": "loaderConfig.js", "inject": true },
6 | { "from": "testLoaderConfig.js" },
7 | { "from": "node_modules/dojo", "to": "dojo", "name": "dojo", "inject": "dojo.js", "type": "umd" },
8 | { "from": "node_modules/dijit", "to": "dijit", "name": "dijit", "type": "umd" },
9 | { "from": "node_modules/dgrid", "to": "dgrid", "name": "dgrid", "inject": "css/dgrid.css", "type": "umd" },
10 | { "from": "node_modules/dojo-dstore", "to": "dstore", "name": "dstore", "type": "umd" }
11 | ]
12 | }
13 | },
14 | "test-intern": {
15 | "externals": {
16 | "dependencies": [
17 | { "from": "testLoaderConfig.js", "inject": true },
18 | { "from": "node_modules/dojo", "to": "dojo", "name": "dojo", "inject": "dojo.js" },
19 | { "from": "node_modules/dijit", "to": "dijit", "name": "dijit" },
20 | { "from": "node_modules/dgrid", "to": "dgrid", "name": "dgrid" },
21 | { "from": "node_modules/dojo-dstore", "to": "dstore", "name": "dstore" }
22 | ]
23 | }
24 | },
25 | "create-app": {}
26 | }
27 |
--------------------------------------------------------------------------------
/packages/world-clock/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "world-clock",
3 | "version": "1.0.0",
4 | "scripts": {
5 | "dev": "dojo build app -m dev -w -s",
6 | "build": "dojo build",
7 | "build:deploy": "npm install && dojo build --mode dist --dojorc .dojorc-deploy && shx rm -rf node_modules",
8 | "lint": "eslint \"src/**/*.{ts,tsx}\"",
9 | "package": "shx cp -r output/dist/ ../../output/dist/world-clock/",
10 | "test:ci": "echo no tests"
11 | },
12 | "dependencies": {
13 | "@dojo/framework": "~8.0.0",
14 | "@dojo/widgets": "~8.0.0",
15 | "cldrjs": "0.5.1",
16 | "cldr-data": "36.0.0",
17 | "moment-timezone": "0.5.28",
18 | "tslib": "~1.9.3"
19 | },
20 | "devDependencies": {
21 | "@dojo/cli": "~8.0.0",
22 | "@dojo/cli-build-app": "~8.0.1",
23 | "@types/moment-timezone": "0.5.13",
24 | "@types/node": "^12.12.32",
25 | "@typescript-eslint/eslint-plugin": "2.25.0",
26 | "@typescript-eslint/parser": "2.25.0",
27 | "eslint": "6.8.0",
28 | "eslint-config-prettier": "6.10.1",
29 | "eslint-plugin-import": "2.20.2",
30 | "typescript": "~3.4.5"
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/packages/hnpwa/.dojorc:
--------------------------------------------------------------------------------
1 | {
2 | "build-app": {
3 | "legacy": false,
4 | "pwa": {
5 | "manifest": {
6 | "name": "dojo-2-hn",
7 | "short_name": "dojo-2-hn",
8 | "description": "dojo-2-hn",
9 | "background_color": "#ffffff",
10 | "theme_color": "#222127",
11 | "icons": [
12 | {
13 | "src": "src/img/hn.png",
14 | "sizes": [
15 | 128,
16 | 256,
17 | 512
18 | ]
19 | }
20 | ]
21 | },
22 | "serviceWorker": {
23 | "clientsClaim": true,
24 | "routes": [
25 | {
26 | "urlPattern": "https://node-hnapi.herokuapp.com",
27 | "strategy": "networkFirst",
28 | "expiration": {
29 | "maxEntries": 25
30 | }
31 | }
32 | ]
33 | }
34 | },
35 | "build-time-render": {
36 | "root": "app",
37 | "renderer": "jsdom",
38 | "paths": [
39 | {
40 | "path": "#comments/9999",
41 | "match": [
42 | "#comments\/.*"
43 | ]
44 | },
45 | {
46 | "path": "#dummy/1",
47 | "match": [
48 | "#[a-zA-Z]+\/\\d+"
49 | ]
50 | }
51 | ]
52 | }
53 | },
54 | "test-intern": {}
55 | }
56 |
--------------------------------------------------------------------------------
/packages/custom-element-menu/src/main.css:
--------------------------------------------------------------------------------
1 | html,
2 | body {
3 | margin: 0;
4 | padding: 0;
5 | font-size: 14px;
6 | line-height: 1.3125;
7 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif,
8 | 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
9 | -webkit-text-size-adjust: 100%;
10 | -webkit-tap-highlight-color: rgba(255, 255, 255, 0);
11 | box-sizing: border-box;
12 | }
13 | @media screen and (min-width: 360px) {
14 | html,
15 | body {
16 | font-size: 15px;
17 | }
18 | }
19 | @media screen and (min-width: 600px) {
20 | html,
21 | body {
22 | font-size: 16px;
23 | }
24 | }
25 |
26 | nav,
27 | demo-menu {
28 | margin-top: 10px;
29 | margin-bottom: 10px;
30 | }
31 |
32 | h1,
33 | h2,
34 | h3 {
35 | margin-bottom: 0.5rem;
36 | font-family: inherit;
37 | font-weight: 500;
38 | line-height: 1.2;
39 | color: inherit;
40 | }
41 |
42 | h2 {
43 | font-size: 1.5rem;
44 | border-bottom: 5px solid darkgrey;
45 | line-height: 2em;
46 | }
47 |
48 | h3 {
49 | font-size: 1.15rem;
50 | }
51 |
52 | p {
53 | font: inherit;
54 | font-size: 100%;
55 | margin: 0;
56 | }
57 |
--------------------------------------------------------------------------------
/packages/resize-middleware/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "resize-middleware",
3 | "version": "1.0.0",
4 | "scripts": {
5 | "dev": "dojo build --mode dev --watch --serve",
6 | "build": "dojo build --mode dist",
7 | "build:dev": "dojo build --mode dev",
8 | "build:deploy": "npm install && dojo build --mode dist --dojorc .dojorc-deploy && shx rm -rf node_modules",
9 | "lint": "eslint \"src/**/*.{ts,tsx}\"",
10 | "package": "shx cp -r output/dist/ ../../output/dist/resize-middleware/",
11 | "test:ci": "echo no tests"
12 | },
13 | "main": "src/main.tsx",
14 | "dependencies": {
15 | "@dojo/framework": "~8.0.0",
16 | "tslib": "~1.9.3"
17 | },
18 | "devDependencies": {
19 | "@dojo/cli": "~8.0.0",
20 | "@dojo/cli-build-app": "~8.0.1",
21 | "@typescript-eslint/eslint-plugin": "2.25.0",
22 | "@typescript-eslint/parser": "2.25.0",
23 | "eslint": "6.8.0",
24 | "eslint-config-prettier": "6.10.1",
25 | "eslint-plugin-import": "2.20.2",
26 | "typescript": "~3.4.5"
27 | },
28 | "keywords": [],
29 | "description": "Demonstrates working with an element that changes dimensions"
30 | }
31 |
--------------------------------------------------------------------------------
/packages/store-arrays/src/App.tsx:
--------------------------------------------------------------------------------
1 | import { create, tsx } from '@dojo/framework/core/vdom';
2 | import store from './store';
3 | import { updateNameProcess } from './appProcesses';
4 |
5 | const factory = create({ store });
6 |
7 | export default factory(function App({ middleware: { store } }) {
8 | const companies = store.get(store.path('companies')) || [];
9 | return (
10 |
11 |
12 | {companies.map((company) => (
13 |
14 |
{company.name}
15 |
16 | {company.people.map((person) => (
17 |
18 | {person}
19 |
30 |
31 | ))}
32 |
33 |
34 | ))}
35 |
36 |
37 | );
38 | });
39 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/widgets/ThemeSwitcher.tsx:
--------------------------------------------------------------------------------
1 | import { tsx, create } from '@dojo/framework/core/vdom';
2 | import { theme } from '@dojo/framework/core/middleware/theme';
3 | import { i18n } from '@dojo/framework/core/middleware/i18n';
4 |
5 | import bundle from '../nls/common';
6 | import * as css from './styles/themeSwitcher.m.css';
7 | import pirateThemeStyles from './../themes/pirate';
8 |
9 | const factory = create({ theme, i18n });
10 |
11 | export default factory(function ThemeSwitcher({ middleware: { theme, i18n } }) {
12 | const { themeSwitcher, themeSwitcherCheckbox } = theme.classes(css);
13 | const { themeSwitchTitle } = i18n.localize(bundle).messages;
14 | function switcher(event: MouseEvent) {
15 | const target = event.target as HTMLInputElement;
16 | if (target.checked) {
17 | i18n.set({ locale: 'en-PR' });
18 | theme.set(pirateThemeStyles);
19 | } else {
20 | i18n.set({});
21 | theme.set({});
22 | }
23 | }
24 | return (
25 |
29 | );
30 | });
31 |
--------------------------------------------------------------------------------
/packages/skills-matrix/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "skills-matrix",
3 | "version": "1.0.0",
4 | "scripts": {
5 | "dev": "dojo build --mode dev --watch --serve",
6 | "build": "dojo build --mode dist",
7 | "build:dev": "dojo build --mode dev",
8 | "build:deploy": "npm install && dojo build --mode dist --dojorc .dojorc-deploy && shx rm -rf node_modules",
9 | "package": "shx cp -r output/dist/ ../../output/dist/skills-matrix/",
10 | "test": "dojo test",
11 | "test:unit": "dojo build --mode unit && dojo test --unit --config local",
12 | "test:functional": "dojo build --mode functional && dojo test --functional --config local",
13 | "test:all": "dojo build --mode unit && dojo build --mode functional && dojo test --all --config local"
14 | },
15 | "dependencies": {
16 | "@dojo/framework": "~8.0.0",
17 | "@dojo/widgets": "~8.0.0",
18 | "tslib": "~1.9.3"
19 | },
20 | "devDependencies": {
21 | "@dojo/cli": "~8.0.0",
22 | "@dojo/cli-build-app": "~8.0.1",
23 | "@dojo/cli-test-intern": "~8.0.0",
24 | "@types/node": "^14.0.13",
25 | "atob": "^2.1.2",
26 | "btoa": "^1.2.1",
27 | "node-webcrypto-ossl": "^2.0.1",
28 | "typescript": "^3.8"
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/packages/store-arrays/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "store-arrays",
3 | "version": "1.0.0",
4 | "main": "src/main.tsx",
5 | "scripts": {
6 | "dev": "dojo build --mode dev --watch --serve",
7 | "build": "dojo build --mode dist",
8 | "build:dev": "dojo build --mode dev",
9 | "build:deploy": "npm install && dojo build --mode dist --dojorc .dojorc-deploy && shx rm -rf node_modules",
10 | "lint": "eslint \"src/**/*.{ts,tsx}\"",
11 | "package": "shx cp -r output/dist/ ../../output/dist/store-arrays/",
12 | "test:ci": "echo no tests"
13 | },
14 | "dependencies": {
15 | "@dojo/framework": "~8.0.0",
16 | "faker": "4.1.0",
17 | "tslib": "~1.9.3"
18 | },
19 | "devDependencies": {
20 | "@dojo/cli": "~8.0.0",
21 | "@dojo/cli-build-app": "~8.0.1",
22 | "@types/faker": "4.1.2",
23 | "@typescript-eslint/eslint-plugin": "2.25.0",
24 | "@typescript-eslint/parser": "2.25.0",
25 | "eslint": "6.8.0",
26 | "eslint-config-prettier": "6.10.1",
27 | "eslint-plugin-import": "2.20.2",
28 | "typescript": "~3.4.5"
29 | },
30 | "keywords": [],
31 | "description": "Demonstrates working with arrays in @dojo/stores"
32 | }
33 |
--------------------------------------------------------------------------------
/packages/hnpwa/src/widgets/Menu.tsx:
--------------------------------------------------------------------------------
1 | import { create, tsx } from '@dojo/framework/core/vdom';
2 | import ActiveLink from './ActiveLink';
3 | import Link from '@dojo/framework/routing/Link';
4 |
5 | import * as css from './styles/menu.m.css';
6 | const logo = require('../img/logo.svg');
7 |
8 | export interface MenuProperties {
9 | currentCategory?: string;
10 | }
11 |
12 | const categories = ['top', 'new', 'show', 'ask', 'jobs'];
13 |
14 | const factory = create();
15 |
16 | export default factory(function Menu() {
17 | return (
18 |
38 | );
39 | });
40 |
--------------------------------------------------------------------------------
/packages/realworld/src/widgets/FeedPagination.tsx:
--------------------------------------------------------------------------------
1 | import { create, tsx } from '@dojo/framework/core/vdom';
2 | import { DNode } from '@dojo/framework/core/interfaces';
3 |
4 | interface FeedPaginationProperties {
5 | total: number;
6 | currentPage: number;
7 | fetchFeed: (page: number) => void;
8 | }
9 |
10 | const factory = create({}).properties();
11 |
12 | export const FeedPagination = factory(function ({ properties }) {
13 | const { total, currentPage, fetchFeed } = properties();
14 |
15 | const pageNumbers: DNode[] = [];
16 | for (let page = 0; page < Math.ceil(total / 10); page++) {
17 | const isActive = currentPage === page;
18 | const onclick = (event: MouseEvent) => {
19 | event.preventDefault();
20 | if (page !== currentPage) {
21 | fetchFeed(page);
22 | }
23 | };
24 | pageNumbers.push(
25 |
26 |
27 | {`${page + 1}`}
28 |
29 |
30 | );
31 | }
32 |
33 | return (
34 |
37 | );
38 | });
39 |
40 | export default FeedPagination;
41 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/themes/pirate.ts:
--------------------------------------------------------------------------------
1 | import * as App from './pirate/App.m.css';
2 | import * as todoSearch from './pirate/todoSearch.m.css';
3 | import * as todoHeader from './pirate/todoHeader.m.css';
4 | import * as todoList from './pirate/todoList.m.css';
5 | import * as todoFooter from './pirate/todoFooter.m.css';
6 | import * as todoItem from './pirate/todoItem.m.css';
7 | import * as todoCard from './pirate/todoCard.m.css';
8 | import * as themeSwitcher from './pirate/themeSwitcher.m.css';
9 | import * as todoDetails from './pirate/todoDetails.m.css';
10 | import * as credits from './pirate/credits.m.css';
11 |
12 | export default {
13 | 'dojo2-todo-mvc-kitchensink/App': App,
14 | 'dojo2-todo-mvc-kitchensink/todoSearch': todoSearch,
15 | 'dojo2-todo-mvc-kitchensink/todoHeader': todoHeader,
16 | 'dojo2-todo-mvc-kitchensink/todoList': todoList,
17 | 'dojo2-todo-mvc-kitchensink/todoFooter': todoFooter,
18 | 'dojo2-todo-mvc-kitchensink/todoItem': todoItem,
19 | 'dojo2-todo-mvc-kitchensink/todoCard': todoCard,
20 | 'dojo2-todo-mvc-kitchensink/themeSwitcher': themeSwitcher,
21 | 'dojo2-todo-mvc-kitchensink/credits': credits,
22 | 'dojo2-todo-mvc-kitchensink/todoDetails': todoDetails
23 | };
24 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/themes/pirate/todoDetails.m.css:
--------------------------------------------------------------------------------
1 | .backdrop {
2 | position: fixed;
3 | left: 0;
4 | top: -0;
5 | overflow: hidden;
6 | width: 100%;
7 | height: 100%;
8 | z-index: 99;
9 | background-color: rgba(255, 255, 255, 0.75);
10 | }
11 |
12 | .modal {
13 | position: fixed;
14 | top: 230px;
15 | left: 50%;
16 | width: 600px;
17 | transform: translate(-50%, -50%);
18 | z-index: 100;
19 | background-color: #ebe2a9;
20 | padding: 16px;
21 | border-radius: 6px;
22 | box-shadow: 0 0 2px rgba(0, 0, 0, 0.2);
23 | }
24 |
25 | .close:after {
26 | position: absolute;
27 | top: 8px;
28 | right: 8px;
29 | content: 'X';
30 | cursor: pointer;
31 | }
32 |
33 | .todoDetailsHeader {
34 | font-weight: 300;
35 | font-size: 32px;
36 | margin-bottom: 12px;
37 | }
38 |
39 | .todoDetailsTextArea {
40 | width: calc(100% - 24px);
41 | height: 78px;
42 | padding: 12px;
43 | margin: 0;
44 | font-size: 24px;
45 | font-weight: inherit;
46 | color: inherit;
47 | background-color: #fdf4cb;
48 | border: none;
49 | resize: none;
50 | }
51 |
52 | .lastUpdated {
53 | float: left;
54 | line-height: 40px;
55 | }
56 |
57 | .toggle {
58 | float: right;
59 | position: relative;
60 | }
61 |
--------------------------------------------------------------------------------
/packages/todo-mvc/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "dojo-todo-mvc",
3 | "version": "0.0.1",
4 | "description": "TodoMVC using Dojo",
5 | "main": "src/main.tsx",
6 | "scripts": {
7 | "dev": "dojo build app -m dev -w -s",
8 | "build": "dojo build",
9 | "build:deploy": "npm install && dojo build --mode dist --dojorc .dojorc-deploy && shx rm -rf node_modules",
10 | "build:tests": "dojo build -m unit && dojo build -m functional",
11 | "package": "shx cp -r output/dist/ ../../output/dist/todo-mvc/",
12 | "lint": "eslint \"src/**/*.{ts,tsx}\"",
13 | "test:ci": "echo no tests"
14 | },
15 | "repository": {
16 | "type": "git",
17 | "url": "https://github.com/dojo/examples.git"
18 | },
19 | "license": "BSD-3-Clause",
20 | "dependencies": {
21 | "@dojo/framework": "~8.0.0",
22 | "tslib": "~1.9.3"
23 | },
24 | "devDependencies": {
25 | "@dojo/cli": "~8.0.0",
26 | "@dojo/cli-build-app": "~8.0.1",
27 | "@typescript-eslint/eslint-plugin": "2.25.0",
28 | "@typescript-eslint/parser": "2.25.0",
29 | "eslint": "6.8.0",
30 | "eslint-config-prettier": "6.10.1",
31 | "eslint-plugin-import": "2.20.2",
32 | "typescript": "~3.4.5"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/widgets/assessment/Assessment.tsx:
--------------------------------------------------------------------------------
1 | import { create, tsx } from '@dojo/framework/core/vdom';
2 | import Chip from '@dojo/widgets/chip';
3 |
4 | import { SkillAssessment } from '../../interfaces';
5 | import { LevelIcon } from '../level-icon/LevelIcon';
6 | import * as css from './Assessment.m.css';
7 |
8 | export interface AssessmentProperties {
9 | title: string;
10 | skillAssessments: SkillAssessment[];
11 | }
12 |
13 | const factory = create().properties();
14 |
15 | const Widget = factory(function ({ properties, children }) {
16 | const { title, skillAssessments } = properties();
17 |
18 | return (
19 |
20 |
{title}
21 |
22 | {skillAssessments.length > 0 ? (
23 | skillAssessments.map(({ skill, level }) => (
24 |
25 | {{
26 | label: skill,
27 | icon: () =>
28 | }}
29 |
30 | ))
31 | ) : (
32 |
No matching skills found
33 | )}
34 | {children()}
35 |
36 |
37 | );
38 | });
39 |
40 | export { Widget as Assessment };
41 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/widgets/assessment-list/AssessmentList.m.css:
--------------------------------------------------------------------------------
1 | @import '../../variables.css';
2 |
3 | .root {
4 | margin-top: calc(var(--grid-size) * 3);
5 | font-size: var(--font-size-normal);
6 | }
7 |
8 | .title {
9 | margin-bottom: var(--grid-size);
10 | }
11 |
12 | .row {
13 | align-items: center;
14 | display: flex;
15 | height: calc(var(--grid-size) * 3);
16 | line-height: calc(var(--grid-size) * 3);
17 | margin-bottom: calc(var(--grid-size) * 1.5);
18 | }
19 |
20 | .close {
21 | color: var(--color-gray);
22 | cursor: pointer;
23 | }
24 |
25 | .addControls {
26 | margin-top: calc(var(--grid-size) * 3);
27 | }
28 |
29 | .add {
30 | color: var(--color-light-blue);
31 | cursor: pointer;
32 | font-weight: bold;
33 | }
34 |
35 | .deleteText {
36 | color: var(--color-red);
37 | font-weight: bold;
38 | flex: 1;
39 | }
40 |
41 | .yes {
42 | color: var(--color-gray);
43 | cursor: pointer;
44 | font-weight: bold;
45 | margin-right: calc(var(--grid-size) * 2);
46 | }
47 |
48 | .no {
49 | color: var(--color-black);
50 | cursor: pointer;
51 | font-weight: bold;
52 | }
53 |
54 | .inputButton:not([disabled]) {
55 | background-color: var(--color-green);
56 | border-color: var(--color-green);
57 | }
58 |
--------------------------------------------------------------------------------
/packages/static-blog/src/Blog.tsx:
--------------------------------------------------------------------------------
1 | import { tsx, create } from '@dojo/framework/core/vdom';
2 | import block from '@dojo/framework/core/middleware/block';
3 | import getBlog from './blocks/blog.block';
4 |
5 | import * as css from './Blog.m.css';
6 |
7 | interface BlogProperties {
8 | name: string;
9 | }
10 |
11 | const factory = create({ block }).properties();
12 |
13 | export default factory(function BlogList({ middleware: { block }, properties }) {
14 | const { name } = properties();
15 | const blog = block(getBlog)({ path: `${name}.md` });
16 |
17 | if (!blog) {
18 | return null;
19 | }
20 |
21 | return (
22 |
23 |
35 | {blog.content}
36 |
37 | );
38 | });
39 |
--------------------------------------------------------------------------------
/packages/realworld/src/widgets/FeedList.tsx:
--------------------------------------------------------------------------------
1 | import { create, tsx } from '@dojo/framework/core/vdom';
2 | import store from '../store';
3 |
4 | import { favoriteFeedArticleProcess } from './../processes/feedProcesses';
5 | import { ArticlePreview } from './ArticlePreview';
6 | import { ArticleItem } from '../interfaces';
7 |
8 | interface FeedListProperties {
9 | type: string;
10 | articles: ArticleItem[];
11 | }
12 |
13 | const factory = create({ store }).properties();
14 |
15 | export const FeedList = factory(function Tab({ middleware: { store }, properties }) {
16 | const { executor } = store;
17 | const { articles, type } = properties();
18 | if (articles.length) {
19 | return (
20 |
21 | {articles.map((article) => (
22 |
{
26 | executor(favoriteFeedArticleProcess)({
27 | slug: article.slug,
28 | favorited: article.favorited,
29 | type
30 | });
31 | }}
32 | />
33 | ))}
34 |
35 | );
36 | }
37 |
38 | return No articles here, yet!
;
39 | });
40 |
41 | export default FeedList;
42 |
--------------------------------------------------------------------------------
/packages/hnpwa/src/widgets/styles/menu.m.css:
--------------------------------------------------------------------------------
1 | .root {
2 | position: fixed;
3 | width: 100%;
4 | top: 0;
5 | height: 48px;
6 | z-index: 100;
7 | background-color: #1d1f20;
8 | }
9 |
10 | .menuContainer {
11 | height: 100%;
12 | margin: 0 auto;
13 | }
14 |
15 | .home {
16 | float: left;
17 | cursor: pointer;
18 | }
19 |
20 | .logoLoaded {
21 | height: 38px;
22 | margin: 4px;
23 | animation: fadein 0.5s;
24 | width: 148px;
25 | }
26 |
27 | .logo {
28 | width: 148px;
29 | opacity: 0;
30 | }
31 |
32 | .item {
33 | height: 100%;
34 | display: inline-block;
35 | }
36 |
37 | .link {
38 | color: #fff;
39 | text-decoration: none;
40 | margin: 0 6.4px;
41 | position: relative;
42 | display: flex;
43 | flex-direction: column;
44 | justify-content: center;
45 | height: 100%;
46 | cursor: pointer;
47 | }
48 |
49 | .link::after {
50 | display: block;
51 | content: '';
52 | background: #fff;
53 | height: 2px;
54 | position: absolute;
55 | width: 100%;
56 | bottom: 0;
57 | transition: transform 0.3s ease-out;
58 | transform: translateY(3px);
59 | }
60 |
61 | .selected::after {
62 | transform: translateY(0);
63 | }
64 |
65 | @keyframes fadein {
66 | from {
67 | opacity: 0;
68 | }
69 | to {
70 | opacity: 1;
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/packages/intersection-observer/src/widgets/App.ts:
--------------------------------------------------------------------------------
1 | import { create, w, v } from '@dojo/framework/core/vdom';
2 | import { createICacheMiddleware } from '@dojo/framework/core/middleware/icache';
3 | import { getListItems } from '../listItemGenerator';
4 | import InfiniteList from './InfiniteList';
5 |
6 | import * as css from './styles/app.m.css';
7 |
8 | interface AppState {
9 | data: { title: string; summary: string }[];
10 | loading: boolean;
11 | }
12 |
13 | const icache = createICacheMiddleware();
14 | const factory = create({ icache });
15 |
16 | export default factory(function App({ middleware: { icache } }) {
17 | const data = icache.getOrSet('data', getListItems);
18 | const isLoading = icache.get('loading') || false;
19 |
20 | return v('div', { classes: css.root }, [
21 | v('h1', { classes: css.title }, ['Infinite Scrolling List']),
22 | data !== undefined &&
23 | w(InfiniteList, {
24 | isLoading,
25 | data,
26 | onRequestItems: async () => {
27 | icache.set('loading', true);
28 | const newData = await getListItems();
29 | const data = icache.get('data') || [];
30 | icache.set('loading', false);
31 | icache.set('data', [...data, ...newData]);
32 | }
33 | })
34 | ]);
35 | });
36 |
--------------------------------------------------------------------------------
/packages/static-blog/src/blocks/blog-index.block.ts:
--------------------------------------------------------------------------------
1 | import { join, parse } from 'path';
2 | import { readFileSync } from 'fs';
3 | import * as glob from 'glob';
4 | const unified = require('unified');
5 | const markdown = require('remark-parse');
6 | const frontmatter = require('remark-frontmatter');
7 | const parseFrontmatter = require('remark-parse-yaml');
8 |
9 | function getMetaData(content: string) {
10 | const pipeline = unified().use(markdown, { commonmark: true }).use(frontmatter, 'yaml').use(parseFrontmatter);
11 |
12 | const nodes = pipeline.parse(content);
13 | const result = pipeline.runSync(nodes);
14 | const node = result.children.find((child: any) => Boolean(child.type === 'yaml'));
15 | return node ? node.data.parsedValue : {};
16 | }
17 |
18 | export default async function () {
19 | const files = glob.sync(join(__dirname, '..', '..', 'content', '*.md'));
20 | const blogs: any[] = [];
21 | for (const file of files) {
22 | const content = readFileSync(file, 'utf8');
23 | const meta = getMetaData(content);
24 | blogs.push({
25 | sortDate: new Date(`${meta.date}`),
26 | file: parse(file).name,
27 | meta
28 | });
29 | }
30 |
31 | return blogs.sort((a, b) => b.sortDate.getTime() - a.sortDate.getTime());
32 | }
33 |
--------------------------------------------------------------------------------
/packages/icache-advanced/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "icache-advanced",
3 | "version": "1.0.0",
4 | "scripts": {
5 | "dev": "dojo build --mode dev --watch --serve",
6 | "build": "dojo build --mode dist",
7 | "build:deploy": "npm install && dojo build --mode dist --dojorc .dojorc-deploy && shx rm -rf node_modules",
8 | "build:dev": "dojo build --mode dev",
9 | "lint": "eslint \"src/**/*.{ts,tsx}\"",
10 | "package": "shx cp -r output/dist/ ../../output/dist/icache-advanced/",
11 | "test:ci": "echo no tests"
12 | },
13 | "main": "src/main.tsx",
14 | "dependencies": {
15 | "@dojo/framework": "~8.0.0",
16 | "@material/button": "2.3.0",
17 | "@material/card": "2.3.0",
18 | "@material/typography": "2.3.0",
19 | "cldrjs": "0.5.0",
20 | "tslib": "~1.9.3"
21 | },
22 | "devDependencies": {
23 | "@dojo/cli": "~8.0.0",
24 | "@dojo/cli-build-app": "~8.0.1",
25 | "@typescript-eslint/eslint-plugin": "2.25.0",
26 | "@typescript-eslint/parser": "2.25.0",
27 | "eslint": "6.8.0",
28 | "eslint-config-prettier": "6.10.1",
29 | "eslint-plugin-import": "2.20.2",
30 | "typescript": "~3.4.5"
31 | },
32 | "keywords": [],
33 | "description": "Example of getOrSet icache API"
34 | }
35 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/widgets/skillset-filter/SkillsetFilter.m.css:
--------------------------------------------------------------------------------
1 | @import '../../variables.css';
2 |
3 | .title {
4 | background: var(--color-blue);
5 | border-top-left-radius: calc(var(--grid-size) * 0.75);
6 | border-top-right-radius: calc(var(--grid-size) * 0.75);
7 | border: 1px solid var(--color-blue);
8 | color: var(--color-white);
9 | font-size: var(--font-size-medium);
10 | padding: calc(var(--grid-size) * 2);
11 | }
12 |
13 | .controls {
14 | border-bottom-left-radius: calc(var(--grid-size) * 0.75);
15 | border-bottom-right-radius: calc(var(--grid-size) * 0.75);
16 | border: 1px solid var(--color-light-gray);
17 | padding: calc(var(--grid-size) * 3);
18 | }
19 |
20 | .input {
21 | border-radius: var(--input-border-radius);
22 | border: 1px solid var(--color-light-gray);
23 | color: var(--color-gray);
24 | font-family: inherit;
25 | font-size: var(--font-size-normal);
26 | height: var(--input-height);
27 | outline: none;
28 | padding: 0 calc(var(--grid-size) * 1.25);
29 | width: 100%;
30 | }
31 |
32 | .items {
33 | margin-top: calc(var(--grid-size) * 2);
34 | }
35 |
36 | .menu {
37 | border: 1px solid var(--color-light-gray);
38 | }
39 |
40 | .typeaheadChip {
41 | margin-left: calc(0.5 * var(--grid-size));
42 | }
43 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/widgets/styles/todoDetails.m.css:
--------------------------------------------------------------------------------
1 | .todoDetails {
2 | }
3 |
4 | .title {
5 | }
6 |
7 | .backdrop {
8 | position: fixed;
9 | left: 0;
10 | top: -0;
11 | overflow: hidden;
12 | width: 100%;
13 | height: 100%;
14 | z-index: 99;
15 | background-color: rgba(255, 255, 255, 0.75);
16 | }
17 |
18 | .modal {
19 | position: fixed;
20 | top: 230px;
21 | left: 50%;
22 | width: 600px;
23 | transform: translate(-50%, -50%);
24 | z-index: 100;
25 | background-color: #fafafa;
26 | padding: 16px;
27 | border-radius: 6px;
28 | box-shadow: 0 0 2px rgba(0, 0, 0, 0.2);
29 | }
30 |
31 | .close:after {
32 | position: absolute;
33 | top: 8px;
34 | right: 8px;
35 | content: 'X';
36 | cursor: pointer;
37 | }
38 |
39 | .todoDetailsHeader {
40 | font-weight: 300;
41 | font-size: 32px;
42 | margin-bottom: 12px;
43 | }
44 |
45 | .todoDetailsTextArea {
46 | width: calc(100% - 24px);
47 | height: 78px;
48 | padding: 12px;
49 | margin: 0;
50 | font-size: 24px;
51 | font-weight: inherit;
52 | color: inherit;
53 | border: 1px solid #ededed;
54 | resize: none;
55 | }
56 |
57 | .lastUpdated {
58 | float: left;
59 | line-height: 40px;
60 | }
61 |
62 | .toggle {
63 | float: right;
64 | position: relative !important;
65 | }
66 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "dojo2-todo-mvc-kitchensink",
3 | "version": "0.0.1",
4 | "description": "TodoMVC using Dojo",
5 | "main": "src/main.tsx",
6 | "scripts": {
7 | "dev": "dojo build app -m dev -w -s",
8 | "build": "dojo build",
9 | "build:deploy": "npm install && dojo build --mode dist --dojorc .dojorc-deploy && shx rm -rf node_modules",
10 | "lint": "eslint \"src/**/*.{ts,tsx}\"",
11 | "package": "shx cp -r output/dist/ ../../output/dist/todo-mvc-kitchensink/",
12 | "test:ci": "echo no tests"
13 | },
14 | "repository": {
15 | "type": "git",
16 | "url": "https://github.com/dojo/examples.git"
17 | },
18 | "license": "BSD-3-Clause",
19 | "dependencies": {
20 | "@dojo/framework": "~8.0.0",
21 | "@dojo/widgets": "~8.0.0",
22 | "cldr-data": "~36.0.0",
23 | "cldrjs": "0.5.1",
24 | "globalize": "1.4.0",
25 | "tslib": "~1.9.3"
26 | },
27 | "devDependencies": {
28 | "@dojo/cli": "~8.0.0",
29 | "@dojo/cli-build-app": "~8.0.1",
30 | "@types/node": "^12.12.32",
31 | "@typescript-eslint/eslint-plugin": "2.25.0",
32 | "@typescript-eslint/parser": "2.25.0",
33 | "eslint": "6.8.0",
34 | "eslint-config-prettier": "6.10.1",
35 | "eslint-plugin-import": "2.20.2",
36 | "loader-utils": "^1.2.3",
37 | "typescript": "~3.4.5"
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/App.tsx:
--------------------------------------------------------------------------------
1 | import { tsx, create } from '@dojo/framework/core/vdom';
2 | import { theme } from '@dojo/framework/core/middleware/theme';
3 | import Route from '@dojo/framework/routing/Route';
4 |
5 | import TodoList from './widgets/TodoList';
6 | import ThemeSwitcher from './widgets/ThemeSwitcher';
7 | import TodoHeader from './widgets/TodoHeader';
8 | import TodoSearch from './widgets/TodoSearch';
9 | import TodoFooter from './widgets/TodoFooter';
10 | import Credits from './widgets/Credits';
11 |
12 | import * as css from './App.m.css';
13 |
14 | const factory = create({ theme });
15 |
16 | export default factory(function App({ middleware: { theme } }) {
17 | const { todoapp } = theme.classes(css);
18 | return (
19 |
20 |
21 |
22 |
23 |
24 | {
28 | return ;
29 | }}
30 | />
31 | {
35 | return ;
36 | }}
37 | />
38 |
39 |
40 |
41 | );
42 | });
43 |
--------------------------------------------------------------------------------
/packages/custom-element-menu/src/widgets/MenuItem.ts:
--------------------------------------------------------------------------------
1 | import { WidgetBase } from '@dojo/framework/core/WidgetBase';
2 | import { v } from '@dojo/framework/core/vdom';
3 | import { customElement } from '@dojo/framework/core/decorators/customElement';
4 | import { theme, ThemedMixin } from '@dojo/framework/core/mixins/Themed';
5 |
6 | import * as css from './styles/menuItem.m.css';
7 |
8 | export interface MenuItemProperties {
9 | selected?: boolean;
10 | data?: any;
11 | title?: string;
12 | onSelected?: (data: any) => void;
13 | }
14 |
15 | @customElement({
16 | tag: 'demo-menu-item',
17 | events: ['onSelected'],
18 | attributes: ['title'],
19 | properties: ['data', 'selected']
20 | })
21 | @theme(css)
22 | export class MenuItem extends ThemedMixin(WidgetBase) {
23 | private _onClick() {
24 | this.properties.onSelected && this.properties.onSelected(this.properties.data);
25 | }
26 |
27 | protected render() {
28 | const { selected } = this.properties;
29 |
30 | return v('li', { classes: this.theme(css.root) }, [
31 | v(
32 | 'span',
33 | {
34 | classes: this.theme([css.item, selected ? css.selected : null]),
35 | onclick: this._onClick
36 | },
37 | [this.properties.title]
38 | )
39 | ]);
40 | }
41 | }
42 |
43 | export default MenuItem;
44 |
--------------------------------------------------------------------------------
/packages/realworld/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "realworld-app",
3 | "version": "1.0.0",
4 | "main": "src/main.tsx",
5 | "scripts": {
6 | "dev": "dojo build -m dev -s -w memory",
7 | "build": "dojo build",
8 | "build:deploy": "npm install && dojo build --dojorc .dojorc-deploy && shx rm -rf node_modules",
9 | "build:test": "dojo build -m unit",
10 | "lint": "eslint \"src/**/*.{ts,tsx}\"",
11 | "test": "run-s build:test test:local",
12 | "test:ci": "run-s build:test test:headless",
13 | "package": "shx cp -r output/dist/ ../../output/dist/realworld/",
14 | "test:local": "dojo test -c local",
15 | "test:headless": "dojo test -c headless"
16 | },
17 | "dependencies": {
18 | "@dojo/framework": "~8.0.0",
19 | "snarkdown": "^1.2.2",
20 | "tslib": "^1.10.0"
21 | },
22 | "devDependencies": {
23 | "@dojo/cli": "~8.0.0",
24 | "@dojo/cli-build-app": "~8.0.1",
25 | "@dojo/cli-test-intern": "~8.0.0",
26 | "@dojo/scripts": "^4.0.2",
27 | "@types/node": "^12.12.32",
28 | "@types/sinon": "^7.5.2",
29 | "@typescript-eslint/eslint-plugin": "2.25.0",
30 | "@typescript-eslint/parser": "2.25.0",
31 | "eslint": "6.8.0",
32 | "eslint-config-prettier": "6.10.1",
33 | "eslint-plugin-import": "2.20.2",
34 | "npm-run-all": "4.1.5",
35 | "sinon": "^9.0.1",
36 | "typescript": "~3.9.5"
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/util/clipboard.ts:
--------------------------------------------------------------------------------
1 | import { RouteName } from '../routes';
2 |
3 | export async function copyToClipboard(text: string) {
4 | try {
5 | if (navigator.clipboard) {
6 | await copyWithClipboardApi(text);
7 | return true;
8 | }
9 | } catch (e) {
10 | console.log(`Failed to copy ${e}`);
11 | }
12 | try {
13 | return copyWithExecCommand(text);
14 | } catch (e) {
15 | console.log(`failed to copy using fallback`);
16 | }
17 | return false;
18 | }
19 |
20 | function copyWithClipboardApi(text: string) {
21 | return navigator.clipboard.writeText(text);
22 | }
23 |
24 | function copyWithExecCommand(text: string) {
25 | const result = document.execCommand('copy');
26 | if (!result) {
27 | console.log('Failed to copy using fallback');
28 | }
29 | }
30 |
31 | export function buildCopyUrl(hashList: string[]) {
32 | const separator = window.location.pathname.endsWith('/') ? '' : '/';
33 | if (hashList.length === 1) {
34 | return `${window.location.origin + window.location.pathname}${separator}#${RouteName.Skills}/${hashList[0]}`;
35 | }
36 | return `${window.location.origin + window.location.pathname}${separator}#${RouteName.Compare}/${hashList.join(',')}`;
37 | }
38 |
39 | export function cleanCopyUrl(url: string) {
40 | return url.replace(/^.*(#(skills)|(compare))\//, '');
41 | }
42 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/widgets/TodoFilter.tsx:
--------------------------------------------------------------------------------
1 | import { tsx, create } from '@dojo/framework/core/vdom';
2 | import { theme } from '@dojo/framework/core/middleware/theme';
3 | import { i18n } from '@dojo/framework/core/middleware/i18n';
4 | import Link from '@dojo/framework/routing/ActiveLink';
5 |
6 | import bundle from '../nls/common';
7 | import * as css from './styles/todoFilter.m.css';
8 |
9 | const factory = create({ theme, i18n });
10 |
11 | export default factory(function TodoFilter({ middleware: { theme, i18n } }) {
12 | const { filters, selected, wrapper, link } = theme.classes(css);
13 | const { filterAll, filterActive, filterCompleted } = i18n.localize(bundle).messages;
14 |
15 | return (
16 |
17 | -
18 |
19 | {filterAll}
20 |
21 |
22 | {filterActive}
23 |
24 |
31 | {filterCompleted}
32 |
33 |
34 |
35 | );
36 | });
37 |
--------------------------------------------------------------------------------
/packages/skills-matrix/src/interfaces.ts:
--------------------------------------------------------------------------------
1 | export interface State {
2 | matrix: SkillMatrix;
3 | matrixVersion: string;
4 | matrixHistory: {
5 | [version: string]: SkillMatrix;
6 | };
7 | skills: {
8 | assessment?: Assessment;
9 | hash?: string;
10 | newSkills?: CachedSkill[];
11 | };
12 | compare: {
13 | assessments: Assessment[];
14 | filters?: SkillName[];
15 | outdatedHashes?: string[];
16 | };
17 | }
18 |
19 | export const enum Level {
20 | None = 0,
21 | Basic = 1,
22 | Proficient = 2,
23 | Expert = 3
24 | }
25 |
26 | export type SkillName = string;
27 |
28 | export type SkillHash = string;
29 |
30 | export type CachedSkill = {
31 | skill: string;
32 | category: string;
33 | };
34 |
35 | export interface SkillMatrix {
36 | [group: string]: SkillName[];
37 | }
38 |
39 | export interface Assessment {
40 | hash: string;
41 | name?: string;
42 | skills: AssessmentMatrix;
43 | }
44 |
45 | export type AssessmentMatrix = {
46 | [group: string]: AssessmentGroup;
47 | };
48 |
49 | export type AssessmentGroup = {
50 | [skill: string]: Level;
51 | };
52 |
53 | export type SkillAssessment = {
54 | skill: string;
55 | level: Level;
56 | };
57 |
58 | export interface AssessmentEntry {
59 | active: boolean;
60 | assessment: Assessment;
61 | }
62 |
63 | export interface AssessmentMap {
64 | [hash: string]: boolean;
65 | }
66 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/themes/pirate/todoSearch.m.css:
--------------------------------------------------------------------------------
1 | .search {
2 | width: calc(100% - 16px);
3 | padding: 12px;
4 | border: none;
5 | background-color: transparent;
6 | font: inherit;
7 | font-size: 18px;
8 | padding-left: 60px;
9 | }
10 |
11 | .search::placeholder {
12 | color: #666666;
13 | }
14 |
15 | .searchIcon {
16 | width: 32px;
17 | height: 32px;
18 | position: absolute;
19 | top: 74px;
20 | left: 16px;
21 | }
22 |
23 | .searchIcon:before {
24 | content: url('data:image/svg+xml;utf8,');
25 | }
26 |
--------------------------------------------------------------------------------
/packages/realworld/.dojorc:
--------------------------------------------------------------------------------
1 | {
2 | "build-app": {
3 | "pwa": {
4 | "manifest": {
5 | "name": "dojo-realworld",
6 | "short_name": "dojo-realworld",
7 | "description": "dojo-realworld",
8 | "background_color": "#ffffff",
9 | "theme_color": "#222127",
10 | "icons": [
11 | {
12 | "src": "src/logo.png",
13 | "sizes": [
14 | 128,
15 | 256,
16 | 512
17 | ]
18 | }
19 | ]
20 | },
21 | "serviceWorker": {
22 | "clientsClaim": true,
23 | "routes": [
24 | {
25 | "urlPattern": "https://fonts.googleapis.com/css",
26 | "strategy": "networkFirst",
27 | "expiration": {
28 | "maxEntries": 25
29 | }
30 | },
31 | {
32 | "urlPattern": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css",
33 | "strategy": "networkFirst",
34 | "expiration": {
35 | "maxEntries": 25
36 | }
37 | },
38 | {
39 | "urlPattern": "https://demo.productionready.io",
40 | "strategy": "networkFirst",
41 | "expiration": {
42 | "maxEntries": 25
43 | }
44 | },
45 | {
46 | "urlPattern": "https://conduit.productionready.io/api",
47 | "strategy": "networkFirst",
48 | "expiration": {
49 | "maxEntries": 25
50 | }
51 | }
52 | ]
53 | }
54 | },
55 | "legacy": false
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/packages/static-blog/src/BlogPreview.tsx:
--------------------------------------------------------------------------------
1 | import { tsx, create } from '@dojo/framework/core/vdom';
2 | import intersection from '@dojo/framework/core/middleware/intersection';
3 | import Link from '@dojo/framework/routing/Link';
4 |
5 | import * as css from './BlogPreview.m.css';
6 |
7 | interface BlogPreviewProperties {
8 | author: string;
9 | title: string;
10 | description: string;
11 | image: string;
12 | file: string;
13 | }
14 |
15 | const factory = create({ intersection }).properties();
16 |
17 | export default factory(function BlogPreview({ middleware: { intersection }, properties }) {
18 | const { isIntersecting } = intersection.get('root');
19 | const { image, file, title, description, author } = properties();
20 | let url = '';
21 | if (isIntersecting) {
22 | url = image;
23 | }
24 | return (
25 |
26 |
27 |
28 |
29 |

30 |
31 |
32 |
{title}
33 |
{description}
34 |
{`By ${author}`}
35 |
36 |
37 |
38 |
39 | );
40 | });
41 |
--------------------------------------------------------------------------------
/packages/todo-mvc-kitchensink/src/widgets/styles/todoSearch.m.css:
--------------------------------------------------------------------------------
1 | .search {
2 | width: calc(100% - 16px);
3 | color: inherit;
4 | padding: 12px;
5 | border: none;
6 | background-color: transparent;
7 | font: inherit;
8 | font-size: 18px;
9 | padding-left: 60px;
10 | }
11 |
12 | .search::placeholder {
13 | color: #e6e6e6;
14 | }
15 |
16 | .searchIcon {
17 | width: 32px;
18 | height: 32px;
19 | position: absolute;
20 | top: 74px;
21 | left: 16px;
22 | }
23 |
24 | .searchIcon:before {
25 | content: url('data:image/svg+xml;utf8,');
26 | }
27 |
--------------------------------------------------------------------------------
/packages/dgrid-wrapper/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "dgrid-wrapper-app",
3 | "version": "1.0.0",
4 | "scripts": {
5 | "dev": "dojo build app -m dev -w -s",
6 | "build": "dojo build",
7 | "build:deploy": "npm install && dojo build --dojorc .dojorc-deploy && shx rm -rf node_modules",
8 | "build:test": "dojo build -m unit",
9 | "lint": "eslint \"src/**/*.{ts,tsx}\"",
10 | "package": "shx cp -r output/dist/ ../../output/dist/dgrid-wrapper/",
11 | "test": "run-s build:test test:local",
12 | "test:ci": "run-s build:test test:headless",
13 | "test:local": "dojo test -c local",
14 | "test:headless": "dojo test -c headless"
15 | },
16 | "dependencies": {
17 | "@dojo/framework": "~8.0.0",
18 | "@dojo/interop": "~7.0.0",
19 | "dgrid": "1.2.1",
20 | "dijit": "1.13.0",
21 | "dojo": "1.13.7",
22 | "dojo-dstore": "1.1.2",
23 | "dojo-util": "1.13.0",
24 | "tslib": "1.9.1"
25 | },
26 | "devDependencies": {
27 | "@dojo/cli": "~8.0.0",
28 | "@dojo/cli-build-app": "~8.0.1",
29 | "@dojo/cli-test-intern": "~8.0.0",
30 | "@dojo/scripts": "^4.0.2",
31 | "@types/dojo": "^1.9.42",
32 | "@typescript-eslint/eslint-plugin": "2.25.0",
33 | "@typescript-eslint/parser": "2.25.0",
34 | "eslint": "6.8.0",
35 | "eslint-config-prettier": "6.10.1",
36 | "eslint-plugin-import": "2.20.2",
37 | "npm-run-all": "4.1.5",
38 | "typescript": "3.4.5"
39 | }
40 | }
41 |
--------------------------------------------------------------------------------