Copying boilerplate from template application.
This commit is contained in:
10
.dockerignore
Executable file
10
.dockerignore
Executable file
@@ -0,0 +1,10 @@
|
|||||||
|
node_modules
|
||||||
|
npm-debug.log
|
||||||
|
README.rst
|
||||||
|
LICENSE
|
||||||
|
.babelrc
|
||||||
|
.eslintignore
|
||||||
|
.eslintrc.json
|
||||||
|
.gitignore
|
||||||
|
.npmignore
|
||||||
|
commitlint.config.js
|
||||||
16
.env
Normal file
16
.env
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
NODE_ENV='production'
|
||||||
|
ACCESS_TOKEN_COOKIE_NAME=null
|
||||||
|
BASE_URL=null
|
||||||
|
CREDENTIALS_BASE_URL=null
|
||||||
|
CSRF_TOKEN_API_PATH=null
|
||||||
|
ECOMMERCE_BASE_URL=null
|
||||||
|
LANGUAGE_PREFERENCE_COOKIE_NAME=null
|
||||||
|
LMS_BASE_URL=null
|
||||||
|
LOGIN_URL=null
|
||||||
|
LOGOUT_URL=null
|
||||||
|
MARKETING_SITE_BASE_URL=null
|
||||||
|
ORDER_HISTORY_URL=null
|
||||||
|
REFRESH_ACCESS_TOKEN_ENDPOINT=null
|
||||||
|
SEGMENT_KEY=null
|
||||||
|
SITE_NAME=null
|
||||||
|
USER_INFO_COOKIE_NAME=null
|
||||||
17
.env.development
Normal file
17
.env.development
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
NODE_ENV='development'
|
||||||
|
PORT=8080
|
||||||
|
ACCESS_TOKEN_COOKIE_NAME='edx-jwt-cookie-header-payload'
|
||||||
|
BASE_URL='localhost:8080'
|
||||||
|
CREDENTIALS_BASE_URL='http://localhost:18150'
|
||||||
|
CSRF_TOKEN_API_PATH='/csrf/api/v1/token'
|
||||||
|
ECOMMERCE_BASE_URL='http://localhost:18130'
|
||||||
|
LANGUAGE_PREFERENCE_COOKIE_NAME='openedx-language-preference'
|
||||||
|
LMS_BASE_URL='http://localhost:18000'
|
||||||
|
LOGIN_URL='http://localhost:18000/login'
|
||||||
|
LOGOUT_URL='http://localhost:18000/login'
|
||||||
|
MARKETING_SITE_BASE_URL='http://localhost:18000'
|
||||||
|
ORDER_HISTORY_URL='localhost:1996/orders'
|
||||||
|
REFRESH_ACCESS_TOKEN_ENDPOINT='http://localhost:18000/login_refresh'
|
||||||
|
SEGMENT_KEY=null
|
||||||
|
SITE_NAME='edX'
|
||||||
|
USER_INFO_COOKIE_NAME='edx-user-info'
|
||||||
15
.env.test
Normal file
15
.env.test
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
ACCESS_TOKEN_COOKIE_NAME='edx-jwt-cookie-header-payload'
|
||||||
|
BASE_URL='localhost:1995'
|
||||||
|
CREDENTIALS_BASE_URL='http://localhost:18150'
|
||||||
|
CSRF_TOKEN_API_PATH='/csrf/api/v1/token'
|
||||||
|
ECOMMERCE_BASE_URL='http://localhost:18130'
|
||||||
|
LANGUAGE_PREFERENCE_COOKIE_NAME='openedx-language-preference'
|
||||||
|
LMS_BASE_URL='http://localhost:18000'
|
||||||
|
LOGIN_URL='http://localhost:18000/login'
|
||||||
|
LOGOUT_URL='http://localhost:18000/login'
|
||||||
|
MARKETING_SITE_BASE_URL='http://localhost:18000'
|
||||||
|
ORDER_HISTORY_URL='localhost:1996/orders'
|
||||||
|
REFRESH_ACCESS_TOKEN_ENDPOINT='http://localhost:18000/login_refresh'
|
||||||
|
SEGMENT_KEY=null
|
||||||
|
SITE_NAME='edX'
|
||||||
|
USER_INFO_COOKIE_NAME='edx-user-info'
|
||||||
4
.eslintignore
Executable file
4
.eslintignore
Executable file
@@ -0,0 +1,4 @@
|
|||||||
|
coverage/*
|
||||||
|
dist/
|
||||||
|
node_modules/
|
||||||
|
jest.config.js
|
||||||
3
.eslintrc.js
Normal file
3
.eslintrc.js
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
const { createConfig } = require('@edx/frontend-build');
|
||||||
|
|
||||||
|
module.exports = createConfig('eslint');
|
||||||
18
.gitignore
vendored
Executable file
18
.gitignore
vendored
Executable file
@@ -0,0 +1,18 @@
|
|||||||
|
.DS_Store
|
||||||
|
.eslintcache
|
||||||
|
.idea
|
||||||
|
node_modules
|
||||||
|
npm-debug.log
|
||||||
|
coverage
|
||||||
|
|
||||||
|
dist/
|
||||||
|
src/i18n/transifex_input.json
|
||||||
|
temp/babel-plugin-react-intl
|
||||||
|
|
||||||
|
### pyenv ###
|
||||||
|
.python-version
|
||||||
|
|
||||||
|
### Emacs ###
|
||||||
|
*~
|
||||||
|
/temp
|
||||||
|
/.vscode
|
||||||
12
.npmignore
Executable file
12
.npmignore
Executable file
@@ -0,0 +1,12 @@
|
|||||||
|
.eslintignore
|
||||||
|
.eslintrc.json
|
||||||
|
.gitignore
|
||||||
|
.travis.yml
|
||||||
|
docker-compose.yml
|
||||||
|
Dockerfile
|
||||||
|
Makefile
|
||||||
|
npm-debug.log
|
||||||
|
|
||||||
|
coverage
|
||||||
|
node_modules
|
||||||
|
public
|
||||||
15
.travis.yml
Executable file
15
.travis.yml
Executable file
@@ -0,0 +1,15 @@
|
|||||||
|
language: node_js
|
||||||
|
node_js: 12
|
||||||
|
before_install:
|
||||||
|
- npm install -g npm@6
|
||||||
|
install:
|
||||||
|
- npm ci
|
||||||
|
script:
|
||||||
|
- make validate-no-uncommitted-package-lock-changes
|
||||||
|
- npm run i18n_extract
|
||||||
|
- npm run lint
|
||||||
|
- npm run test
|
||||||
|
- npm run build
|
||||||
|
- npm run is-es5
|
||||||
|
after_success:
|
||||||
|
- codecov
|
||||||
54
Makefile
Executable file
54
Makefile
Executable file
@@ -0,0 +1,54 @@
|
|||||||
|
transifex_resource = frontend-template-application
|
||||||
|
transifex_langs = "ar,fr,es_419,zh_CN"
|
||||||
|
|
||||||
|
transifex_utils = ./node_modules/.bin/transifex-utils.js
|
||||||
|
i18n = ./src/i18n
|
||||||
|
transifex_input = $(i18n)/transifex_input.json
|
||||||
|
tx_url1 = https://www.transifex.com/api/2/project/edx-platform/resource/$(transifex_resource)/translation/en/strings/
|
||||||
|
tx_url2 = https://www.transifex.com/api/2/project/edx-platform/resource/$(transifex_resource)/source/
|
||||||
|
|
||||||
|
# This directory must match .babelrc .
|
||||||
|
transifex_temp = ./temp/babel-plugin-react-intl
|
||||||
|
|
||||||
|
precommit:
|
||||||
|
npm run lint
|
||||||
|
npm audit
|
||||||
|
|
||||||
|
requirements:
|
||||||
|
npm install
|
||||||
|
|
||||||
|
i18n.extract:
|
||||||
|
# Pulling display strings from .jsx files into .json files...
|
||||||
|
rm -rf $(transifex_temp)
|
||||||
|
npm run-script i18n_extract
|
||||||
|
|
||||||
|
i18n.concat:
|
||||||
|
# Gathering JSON messages into one file...
|
||||||
|
$(transifex_utils) $(transifex_temp) $(transifex_input)
|
||||||
|
|
||||||
|
extract_translations: | requirements i18n.extract i18n.concat
|
||||||
|
|
||||||
|
# Despite the name, we actually need this target to detect changes in the incoming translated message files as well.
|
||||||
|
detect_changed_source_translations:
|
||||||
|
# Checking for changed translations...
|
||||||
|
git diff --exit-code $(i18n)
|
||||||
|
|
||||||
|
# Pushes translations to Transifex. You must run make extract_translations first.
|
||||||
|
push_translations:
|
||||||
|
# Pushing strings to Transifex...
|
||||||
|
tx push -s
|
||||||
|
# Fetching hashes from Transifex...
|
||||||
|
./node_modules/reactifex/bash_scripts/get_hashed_strings.sh $(tx_url1)
|
||||||
|
# Writing out comments to file...
|
||||||
|
$(transifex_utils) $(transifex_temp) --comments
|
||||||
|
# Pushing comments to Transifex...
|
||||||
|
./node_modules/reactifex/bash_scripts/put_comments.sh $(tx_url2)
|
||||||
|
|
||||||
|
# Pulls translations from Transifex.
|
||||||
|
pull_translations:
|
||||||
|
tx pull -f --mode reviewed --language=$(transifex_langs)
|
||||||
|
|
||||||
|
# This target is used by Travis.
|
||||||
|
validate-no-uncommitted-package-lock-changes:
|
||||||
|
# Checking for package-lock.json changes...
|
||||||
|
git diff --exit-code package-lock.json
|
||||||
10
codecov.yml
Normal file
10
codecov.yml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
coverage:
|
||||||
|
status:
|
||||||
|
project:
|
||||||
|
default:
|
||||||
|
target: auto
|
||||||
|
threshold: 0%
|
||||||
|
patch:
|
||||||
|
default:
|
||||||
|
target: auto
|
||||||
|
threshold: 0%
|
||||||
32
docs/decisions/0001-record-architecture-decisions.rst
Normal file
32
docs/decisions/0001-record-architecture-decisions.rst
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
1. Record Architecture Decisions
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
Status
|
||||||
|
------
|
||||||
|
|
||||||
|
Accepted
|
||||||
|
|
||||||
|
Context
|
||||||
|
-------
|
||||||
|
|
||||||
|
We would like to keep a historical record on the architectural
|
||||||
|
decisions we make with this app as it evolves over time.
|
||||||
|
|
||||||
|
Decision
|
||||||
|
--------
|
||||||
|
|
||||||
|
We will use Architecture Decision Records, as described by
|
||||||
|
Michael Nygard in `Documenting Architecture Decisions`_
|
||||||
|
|
||||||
|
.. _Documenting Architecture Decisions: http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions
|
||||||
|
|
||||||
|
Consequences
|
||||||
|
------------
|
||||||
|
|
||||||
|
See Michael Nygard's article, linked above.
|
||||||
|
|
||||||
|
References
|
||||||
|
----------
|
||||||
|
|
||||||
|
* https://resources.sei.cmu.edu/asset_files/Presentation/2017_017_001_497746.pdf
|
||||||
|
* https://github.com/npryce/adr-tools/tree/master/doc/adr
|
||||||
11
jest.config.js
Normal file
11
jest.config.js
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
const { createConfig } = require('@edx/frontend-build');
|
||||||
|
|
||||||
|
module.exports = createConfig('jest', {
|
||||||
|
setupFiles: [
|
||||||
|
'<rootDir>/src/setupTest.js',
|
||||||
|
],
|
||||||
|
coveragePathIgnorePatterns: [
|
||||||
|
'src/setupTest.js',
|
||||||
|
'src/i18n',
|
||||||
|
],
|
||||||
|
});
|
||||||
5
openedx.yaml
Normal file
5
openedx.yaml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# This file describes this Open edX repo, as described in OEP-2:
|
||||||
|
# https://open-edx-proposals.readthedocs.io/en/latest/oep-0002-bp-repo-metadata.html#specification
|
||||||
|
|
||||||
|
oeps: {}
|
||||||
|
owner: edx/platform-core-tnl
|
||||||
18348
package-lock.json
generated
Normal file
18348
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
64
package.json
Normal file
64
package.json
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
{
|
||||||
|
"name": "@edx/frontend-app-learn",
|
||||||
|
"version": "1.0.0-semantically-released",
|
||||||
|
"description": "Frontend learning application.",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/edx/frontend-app-learn.git"
|
||||||
|
},
|
||||||
|
"browserslist": [
|
||||||
|
"last 2 versions",
|
||||||
|
"ie 11"
|
||||||
|
],
|
||||||
|
"scripts": {
|
||||||
|
"build": "fedx-scripts webpack",
|
||||||
|
"i18n_extract": "BABEL_ENV=i18n fedx-scripts babel src --quiet > /dev/null",
|
||||||
|
"is-es5": "es-check es5 ./dist/*.js",
|
||||||
|
"lint": "fedx-scripts eslint",
|
||||||
|
"snapshot": "fedx-scripts jest --updateSnapshot",
|
||||||
|
"start": "fedx-scripts webpack-dev-server --progress",
|
||||||
|
"test": "fedx-scripts jest --coverage --passWithNoTests"
|
||||||
|
},
|
||||||
|
"husky": {
|
||||||
|
"hooks": {
|
||||||
|
"pre-commit": "npm run lint"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"author": "edX",
|
||||||
|
"license": "AGPL-3.0",
|
||||||
|
"homepage": "https://github.com/edx/frontend-app-learn#readme",
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/edx/frontend-app-learn/issues"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@edx/frontend-component-footer": "^10.0.6",
|
||||||
|
"@edx/frontend-component-header": "^2.0.3",
|
||||||
|
"@edx/frontend-platform": "^1.1.11",
|
||||||
|
"@edx/paragon": "^7.2.0",
|
||||||
|
"@fortawesome/fontawesome-svg-core": "^1.2.26",
|
||||||
|
"@fortawesome/free-brands-svg-icons": "^5.12.0",
|
||||||
|
"@fortawesome/free-regular-svg-icons": "^5.12.0",
|
||||||
|
"@fortawesome/free-solid-svg-icons": "^5.12.0",
|
||||||
|
"@fortawesome/react-fontawesome": "^0.1.8",
|
||||||
|
"babel-polyfill": "^6.26.0",
|
||||||
|
"prop-types": "^15.7.2",
|
||||||
|
"react": "^16.12.0",
|
||||||
|
"react-dom": "^16.12.0",
|
||||||
|
"react-redux": "^7.1.3",
|
||||||
|
"react-router": "^5.1.2",
|
||||||
|
"react-router-dom": "^5.1.2",
|
||||||
|
"redux": "^4.0.4"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@edx/frontend-build": "^2.0.5",
|
||||||
|
"codecov": "^3.6.1",
|
||||||
|
"es-check": "^5.1.0",
|
||||||
|
"glob": "^7.1.6",
|
||||||
|
"husky": "^3.1.0",
|
||||||
|
"jest": "^24.9.0",
|
||||||
|
"reactifex": "^1.1.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
12
public/index.html
Normal file
12
public/index.html
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
<title>Application Template | edX</title>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="root"></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
9
renovate.json
Normal file
9
renovate.json
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"extends": [
|
||||||
|
"config:base"
|
||||||
|
],
|
||||||
|
"patch": {
|
||||||
|
"automerge": true
|
||||||
|
},
|
||||||
|
"rebaseStalePrs": true
|
||||||
|
}
|
||||||
BIN
src/assets/favicon.ico
Normal file
BIN
src/assets/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 34 KiB |
12
src/example/ExamplePage.jsx
Normal file
12
src/example/ExamplePage.jsx
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function ExamplePage() {
|
||||||
|
return (
|
||||||
|
<main>
|
||||||
|
<div className="container-fluid">
|
||||||
|
<h1>Example Page</h1>
|
||||||
|
<p>Hello world!</p>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
);
|
||||||
|
}
|
||||||
5
src/example/ExamplePage.test.jsx
Normal file
5
src/example/ExamplePage.test.jsx
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
describe('example', () => {
|
||||||
|
it('will pass because it is an example', () => {
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
0
src/example/data/.gitkeep
Normal file
0
src/example/data/.gitkeep
Normal file
4
src/example/data/README.rst
Normal file
4
src/example/data/README.rst
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
data folder
|
||||||
|
===========
|
||||||
|
|
||||||
|
This folder is the home for non-component files, such as redux reducers, actions, selectors, API client services, etc. See `Feature-based Application Organization <https://github.com/edx/frontend-template-application/blob/master/docs/decisions/0002-feature-based-application-organization.rst>`_. for more detail.
|
||||||
0
src/example/index.scss
Normal file
0
src/example/index.scss
Normal file
32
src/i18n/index.jsx
Normal file
32
src/i18n/index.jsx
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
import arMessages from './messages/ar.json';
|
||||||
|
import caMessages from './messages/ca.json';
|
||||||
|
// no need to import en messages-- they are in the defaultMessage field
|
||||||
|
import es419Messages from './messages/es_419.json';
|
||||||
|
import frMessages from './messages/fr.json';
|
||||||
|
import zhcnMessages from './messages/zh_CN.json';
|
||||||
|
import heMessages from './messages/he.json';
|
||||||
|
import idMessages from './messages/id.json';
|
||||||
|
import kokrMessages from './messages/ko_kr.json';
|
||||||
|
import plMessages from './messages/pl.json';
|
||||||
|
import ptbrMessages from './messages/pt_br.json';
|
||||||
|
import ruMessages from './messages/ru.json';
|
||||||
|
import thMessages from './messages/th.json';
|
||||||
|
import ukMessages from './messages/uk.json';
|
||||||
|
|
||||||
|
const messages = {
|
||||||
|
ar: arMessages,
|
||||||
|
'es-419': es419Messages,
|
||||||
|
fr: frMessages,
|
||||||
|
'zh-cn': zhcnMessages,
|
||||||
|
ca: caMessages,
|
||||||
|
he: heMessages,
|
||||||
|
id: idMessages,
|
||||||
|
'ko-kr': kokrMessages,
|
||||||
|
pl: plMessages,
|
||||||
|
'pt-br': ptbrMessages,
|
||||||
|
ru: ruMessages,
|
||||||
|
th: thMessages,
|
||||||
|
uk: ukMessages,
|
||||||
|
};
|
||||||
|
|
||||||
|
export default messages;
|
||||||
1
src/i18n/messages/ar.json
Normal file
1
src/i18n/messages/ar.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
1
src/i18n/messages/ca.json
Normal file
1
src/i18n/messages/ca.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
1
src/i18n/messages/es_419.json
Normal file
1
src/i18n/messages/es_419.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
1
src/i18n/messages/fr.json
Normal file
1
src/i18n/messages/fr.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
1
src/i18n/messages/he.json
Normal file
1
src/i18n/messages/he.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
1
src/i18n/messages/id.json
Normal file
1
src/i18n/messages/id.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
1
src/i18n/messages/ko_kr.json
Normal file
1
src/i18n/messages/ko_kr.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
1
src/i18n/messages/pl.json
Normal file
1
src/i18n/messages/pl.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
1
src/i18n/messages/pt_br.json
Normal file
1
src/i18n/messages/pt_br.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
1
src/i18n/messages/ru.json
Normal file
1
src/i18n/messages/ru.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
1
src/i18n/messages/th.json
Normal file
1
src/i18n/messages/th.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
1
src/i18n/messages/uk.json
Normal file
1
src/i18n/messages/uk.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
1
src/i18n/messages/zh_CN.json
Normal file
1
src/i18n/messages/zh_CN.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
38
src/index.jsx
Executable file
38
src/index.jsx
Executable file
@@ -0,0 +1,38 @@
|
|||||||
|
import 'babel-polyfill';
|
||||||
|
|
||||||
|
import { APP_INIT_ERROR, APP_READY, subscribe, initialize } from '@edx/frontend-platform';
|
||||||
|
import { AppProvider, ErrorPage } from '@edx/frontend-platform/react';
|
||||||
|
import React from 'react';
|
||||||
|
import ReactDOM from 'react-dom';
|
||||||
|
|
||||||
|
import Header, { messages as headerMessages } from '@edx/frontend-component-header';
|
||||||
|
import Footer, { messages as footerMessages } from '@edx/frontend-component-footer';
|
||||||
|
|
||||||
|
import appMessages from './i18n';
|
||||||
|
import ExamplePage from './example/ExamplePage';
|
||||||
|
|
||||||
|
import './index.scss';
|
||||||
|
import './assets/favicon.ico';
|
||||||
|
|
||||||
|
subscribe(APP_READY, () => {
|
||||||
|
ReactDOM.render(
|
||||||
|
<AppProvider>
|
||||||
|
<Header />
|
||||||
|
<ExamplePage />
|
||||||
|
<Footer />
|
||||||
|
</AppProvider>,
|
||||||
|
document.getElementById('root'),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
subscribe(APP_INIT_ERROR, (error) => {
|
||||||
|
ReactDOM.render(<ErrorPage message={error.message} />, document.getElementById('root'));
|
||||||
|
});
|
||||||
|
|
||||||
|
initialize({
|
||||||
|
messages: [
|
||||||
|
appMessages,
|
||||||
|
headerMessages,
|
||||||
|
footerMessages,
|
||||||
|
],
|
||||||
|
});
|
||||||
6
src/index.scss
Executable file
6
src/index.scss
Executable file
@@ -0,0 +1,6 @@
|
|||||||
|
@import '~@edx/paragon/scss/edx/theme.scss';
|
||||||
|
|
||||||
|
@import './example/index.scss';
|
||||||
|
|
||||||
|
@import "~@edx/frontend-component-header/dist/index";
|
||||||
|
@import "~@edx/frontend-component-footer/dist/footer";
|
||||||
1
src/setupTest.js
Executable file
1
src/setupTest.js
Executable file
@@ -0,0 +1 @@
|
|||||||
|
import 'babel-polyfill';
|
||||||
Reference in New Issue
Block a user