@salesforce/design-system-react
Version:
Salesforce Lightning Design System for React
122 lines (95 loc) • 3.29 kB
Markdown
Design System React has a peerDependency on [Salesforce Lightning Design System (SLDS)](https://github.com/salesforce-ux/design-system). Design System React has kept this as a peer dependency for giving flexibility for developers to choose different versions of SLDS.
If you are planning to use Design System React in a standalone application you need to bring in the stylesheets provided by SLDS.
## Option 1: Include stylesheet directly
The classic way to do this is [download](https://www.lightningdesignsystem.com/downloads) the SLDS stylesheets and serve it up in your `public` static assets folder and include the stylesheet:
```
<link rel="stylesheet" href="your/public/assets/salesforce-lightning-design-system.min.css">
```
This has a disadvantage of maintaining the versions later.
These are the relevant portions of the changes you will need to do in order to wire up Design System React in a standalone application.
```
"scripts": {
...,
"postinstall": "node postinstall.js",
"build": "webpack",
...
},
"devDependencies": {
...,
"@salesforce-ux/design-system": "^[VERSION]",
"design-system-react": "git+ssh://git@github.com:salesforce/design-system-react.git#v[VERSION]",
"fs-extra": "^4.0.2",
"style-loader": "^0.18.2",
"webpack": "^3.8.1",
...
},
```
```
...
module: {
rules: [
...,
{
test: /\.min\.css$/,
use: [
'style-loader',
{ loader: 'css-loader' }
]
},
{
test: /\.(eot|svg|ttf|woff|woff2)$/,
loader: 'file-loader',
options: {
name: '[name].[ext]',
outputPath: 'your/desired/output/path/'
// Serve this up using your static web server
}
},
...
]
}
...
```
Create symlinks from `node_modules` to your public folder in order to serve static assets
```
// Code to run post npm install
const path = require('path');
const fs = require('fs-extra');
const directories = [
'fonts',
'icons',
'images',
'styles'
];
// Create symlinks from node_modules -> /your/public/folder/
directories.forEach((folderName) => {
const srcPath = path.resolve(__dirname, `../node_modules/@salesforce-ux/design-system/assets/${folderName}`);
// Choose the target path based on your project
// Serve this up using your static web server
const targetPath = path.resolve(__dirname, `public/css/lds/${folderName}`);
fs.ensureSymlinkSync(srcPath, targetPath);
});
```
```
import React, { Component } from 'react';
import '@salesforce-ux/design-system/assets/styles/salesforce-lightning-design-system.min.css';
import IconSettings from '@salesforce/design-system-react/components/icon-settings';
...
...
class App extends Component {
render() {
return (
<IconSettings iconPath="public/css/lds/icons">
<YourApp />
</IconSettings>
);
}
}
export default App;
```