decentraland-ui2 0.0.0-9008705175.commit-ca18515
Sign up to get free protection for your applications and to get access to all the features.
- package/LICENSE +13 -0
- package/README.md +55 -0
- package/dist/colors.d.ts +80 -0
- package/dist/colors.js +145 -0
- package/dist/components/Atlas/Atlas.d.ts +46 -0
- package/dist/components/Atlas/Atlas.js +96 -0
- package/dist/components/Atlas/Atlas.stories.d.ts +11 -0
- package/dist/components/Atlas/Atlas.stories.js +275 -0
- package/dist/components/Atlas/util.d.ts +3 -0
- package/dist/components/Atlas/util.js +41 -0
- package/dist/components/Atlas/util.test.d.ts +0 -0
- package/dist/components/Atlas/util.test.js +5 -0
- package/dist/config/env/dev.json +11 -0
- package/dist/config/env/prod.json +11 -0
- package/dist/config/env/stg.json +11 -0
- package/dist/config/index.d.ts +1 -0
- package/dist/config/index.js +15 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +27 -0
- package/dist/theme.d.ts +2 -0
- package/dist/theme.js +75 -0
- package/package.json +90 -0
package/LICENSE
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
Copyright 2019 Metaverse Holdings Ltd.
|
2
|
+
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
you may not use files included in this repository except in compliance
|
5
|
+
with the License. You may obtain a copy of the License at
|
6
|
+
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
|
9
|
+
Unless required by applicable law or agreed to in writing, software
|
10
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
See the License for the specific language governing permissions and
|
13
|
+
limitations under the License.
|
package/README.md
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
<img src="https://ui.decentraland.org/decentraland_256x256.png" height="128" width="128" />
|
2
|
+
|
3
|
+
# Decentraland UI v2
|
4
|
+
|
5
|
+
This is basically `Material UI` themed with Decentrland's look & feel + some of our own components
|
6
|
+
|
7
|
+
See: [ui2.decentraland.org](https://ui2.decentraland.org)
|
8
|
+
|
9
|
+
## Usage
|
10
|
+
|
11
|
+
Install it:
|
12
|
+
|
13
|
+
```bash
|
14
|
+
npm install --save decentraland-ui2
|
15
|
+
```
|
16
|
+
|
17
|
+
### Import Decentraland UI v2's theme styles in your App's entry point
|
18
|
+
|
19
|
+
In your main ReactDOM renderer import Theme Provider and the theme you want to use
|
20
|
+
|
21
|
+
```tsx
|
22
|
+
// ./src/index.ts
|
23
|
+
...
|
24
|
+
import { ThemeProvider } from '@mui/material/styles'
|
25
|
+
import { dark } from 'decentraland-ui2/lib/themes/theme'
|
26
|
+
...
|
27
|
+
|
28
|
+
<ThemeProvider theme={dark}>
|
29
|
+
...
|
30
|
+
</ThemeProvider>
|
31
|
+
...
|
32
|
+
```
|
33
|
+
|
34
|
+
Now you can use Decentraland UI v2's components:
|
35
|
+
|
36
|
+
```tsx
|
37
|
+
import React from "react"
|
38
|
+
import { Button } from "decentraland-ui2/lib/@mui"
|
39
|
+
|
40
|
+
export const CustomButton = (props) => {
|
41
|
+
return <Button {...props}>Save</Button>
|
42
|
+
}
|
43
|
+
```
|
44
|
+
|
45
|
+
## Development
|
46
|
+
|
47
|
+
Prerequisites: Node.js 16 React 17|18 (or compatible)
|
48
|
+
|
49
|
+
Install dependencies and start Storybook:
|
50
|
+
|
51
|
+
```
|
52
|
+
$ npm install
|
53
|
+
$ npm run generate:storybooks //This will regenerate @MUI components
|
54
|
+
$ npm run start
|
55
|
+
```
|
package/dist/colors.d.ts
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
export declare const neutral: {
|
2
|
+
white: string;
|
3
|
+
softWhite: string;
|
4
|
+
gray5: string;
|
5
|
+
gray4: string;
|
6
|
+
gray3: string;
|
7
|
+
gray2: string;
|
8
|
+
gray1: string;
|
9
|
+
gray0: string;
|
10
|
+
softBlack2: string;
|
11
|
+
softBlack1: string;
|
12
|
+
black: string;
|
13
|
+
};
|
14
|
+
export declare const textOnNeutral: typeof neutral;
|
15
|
+
export declare const base: {
|
16
|
+
primary: string;
|
17
|
+
primaryLight2: string;
|
18
|
+
primaryLight1: string;
|
19
|
+
primaryDark: string;
|
20
|
+
primaryAlt: string;
|
21
|
+
};
|
22
|
+
export declare const textOnBase: typeof base;
|
23
|
+
export declare const state: {
|
24
|
+
success: string;
|
25
|
+
successDark: string;
|
26
|
+
warning: string;
|
27
|
+
warningDark: string;
|
28
|
+
error: string;
|
29
|
+
errorDark: string;
|
30
|
+
};
|
31
|
+
export declare const textOnState: typeof state;
|
32
|
+
export declare const rarity: {
|
33
|
+
common: string;
|
34
|
+
uncommon: string;
|
35
|
+
rare: string;
|
36
|
+
epic: string;
|
37
|
+
legendary: string;
|
38
|
+
mythic: string;
|
39
|
+
unique: string;
|
40
|
+
};
|
41
|
+
export declare const rarityGradient: typeof rarity;
|
42
|
+
export declare const textOnRarity: typeof rarity;
|
43
|
+
export declare const brand: {
|
44
|
+
yellow: string;
|
45
|
+
melon: string;
|
46
|
+
orange: string;
|
47
|
+
ruby: string;
|
48
|
+
lavander: string;
|
49
|
+
voilet: string;
|
50
|
+
purpel: string;
|
51
|
+
};
|
52
|
+
export declare const textOnBrand: typeof brand;
|
53
|
+
export declare const gradient: {
|
54
|
+
flare: string;
|
55
|
+
cerise: string;
|
56
|
+
amin: string;
|
57
|
+
common: string;
|
58
|
+
uncommon: string;
|
59
|
+
rare: string;
|
60
|
+
epic: string;
|
61
|
+
legendary: string;
|
62
|
+
mythic: string;
|
63
|
+
unique: string;
|
64
|
+
};
|
65
|
+
export declare const textOnGradient: typeof gradient;
|
66
|
+
export declare const opacity: {
|
67
|
+
backdrop: number;
|
68
|
+
blurry: number;
|
69
|
+
soft: number;
|
70
|
+
subtle: number;
|
71
|
+
};
|
72
|
+
export declare const blackTransparent: {
|
73
|
+
backdrop: string;
|
74
|
+
blurry: string;
|
75
|
+
soft: string;
|
76
|
+
subtle: string;
|
77
|
+
};
|
78
|
+
export declare const textOnBlackTransparent: typeof blackTransparent;
|
79
|
+
export declare const whiteTransparent: typeof blackTransparent;
|
80
|
+
export declare const textOnWhiteTransparent: typeof blackTransparent;
|
package/dist/colors.js
ADDED
@@ -0,0 +1,145 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.textOnWhiteTransparent = exports.whiteTransparent = exports.textOnBlackTransparent = exports.blackTransparent = exports.opacity = exports.textOnGradient = exports.gradient = exports.textOnBrand = exports.brand = exports.textOnRarity = exports.rarityGradient = exports.rarity = exports.textOnState = exports.state = exports.textOnBase = exports.base = exports.textOnNeutral = exports.neutral = void 0;
|
4
|
+
exports.neutral = {
|
5
|
+
white: `#FFFFFF`,
|
6
|
+
softWhite: `#FCFCFC`,
|
7
|
+
gray5: `#ECEBED`,
|
8
|
+
gray4: `#CFCDD4`,
|
9
|
+
gray3: `#A09BA8`,
|
10
|
+
gray2: `#716B7C`,
|
11
|
+
gray1: `#5E5B67`,
|
12
|
+
gray0: `#43404A`,
|
13
|
+
softBlack2: `#242129`,
|
14
|
+
softBlack1: `#161518`,
|
15
|
+
black: `#000000`,
|
16
|
+
};
|
17
|
+
exports.textOnNeutral = {
|
18
|
+
white: exports.neutral.softBlack2,
|
19
|
+
softWhite: exports.neutral.softBlack2,
|
20
|
+
gray5: exports.neutral.softBlack2,
|
21
|
+
gray4: exports.neutral.softBlack2,
|
22
|
+
gray3: exports.neutral.white,
|
23
|
+
gray2: exports.neutral.white,
|
24
|
+
gray1: exports.neutral.white,
|
25
|
+
gray0: exports.neutral.white,
|
26
|
+
softBlack2: exports.neutral.white,
|
27
|
+
softBlack1: exports.neutral.white,
|
28
|
+
black: exports.neutral.white,
|
29
|
+
};
|
30
|
+
exports.base = {
|
31
|
+
primary: "#FF2D55",
|
32
|
+
primaryLight2: `#FFD8DF`,
|
33
|
+
primaryLight1: `#FFBFCB`,
|
34
|
+
primaryDark: `#DF1F43`,
|
35
|
+
primaryAlt: `#FF7439`,
|
36
|
+
};
|
37
|
+
exports.textOnBase = {
|
38
|
+
primary: exports.neutral.white,
|
39
|
+
primaryLight2: exports.neutral.black,
|
40
|
+
primaryLight1: exports.neutral.black,
|
41
|
+
primaryDark: exports.neutral.white,
|
42
|
+
primaryAlt: exports.neutral.white,
|
43
|
+
};
|
44
|
+
exports.state = {
|
45
|
+
success: `#34CE76`,
|
46
|
+
successDark: `#279E5A`,
|
47
|
+
warning: `#FFC95B`,
|
48
|
+
warningDark: `#E9AB2E`,
|
49
|
+
error: `#FB3B3B`,
|
50
|
+
errorDark: `#DA2828`,
|
51
|
+
};
|
52
|
+
exports.textOnState = {
|
53
|
+
success: exports.neutral.white,
|
54
|
+
successDark: exports.neutral.white,
|
55
|
+
warning: exports.neutral.softBlack2,
|
56
|
+
warningDark: exports.neutral.softBlack2,
|
57
|
+
error: exports.neutral.white,
|
58
|
+
errorDark: exports.neutral.white,
|
59
|
+
};
|
60
|
+
exports.rarity = {
|
61
|
+
common: `#73D3D3`,
|
62
|
+
uncommon: `#FF8362`,
|
63
|
+
rare: `#34CE76`,
|
64
|
+
epic: `#438FFF`,
|
65
|
+
legendary: `#A14BF3`,
|
66
|
+
mythic: `#FF4BED`,
|
67
|
+
unique: `#FEA217`,
|
68
|
+
};
|
69
|
+
const rarityLight = {
|
70
|
+
common: `#D2F9F9`,
|
71
|
+
uncommon: `#F9E4DF`,
|
72
|
+
rare: `#C1F2D6`,
|
73
|
+
epic: `#C0D3EF`,
|
74
|
+
legendary: `#E1C1FF`,
|
75
|
+
mythic: `#FDC4F7`,
|
76
|
+
unique: `#F3E5CF`,
|
77
|
+
};
|
78
|
+
exports.rarityGradient = {
|
79
|
+
common: `radial-gradient(circle, ${rarityLight.common} 0%, ${exports.rarity.common} 100%)`,
|
80
|
+
uncommon: `radial-gradient(circle, ${rarityLight.uncommon} 0%, ${exports.rarity.uncommon} 100%)`,
|
81
|
+
rare: `radial-gradient(circle, ${rarityLight.rare} 0%, ${exports.rarity.rare} 100%)`,
|
82
|
+
epic: `radial-gradient(circle, ${rarityLight.epic} 0%, ${exports.rarity.epic} 100%)`,
|
83
|
+
legendary: `radial-gradient(circle, ${rarityLight.legendary} 0%, ${exports.rarity.legendary} 100%)`,
|
84
|
+
mythic: `radial-gradient(circle, ${rarityLight.mythic} 0%, ${exports.rarity.mythic} 100%)`,
|
85
|
+
unique: `radial-gradient(circle, ${rarityLight.unique} 0%, ${exports.rarity.unique} 100%)`,
|
86
|
+
};
|
87
|
+
exports.textOnRarity = {
|
88
|
+
common: exports.neutral.white,
|
89
|
+
uncommon: exports.neutral.white,
|
90
|
+
rare: exports.neutral.white,
|
91
|
+
epic: exports.neutral.white,
|
92
|
+
legendary: exports.neutral.white,
|
93
|
+
mythic: exports.neutral.white,
|
94
|
+
unique: exports.neutral.white,
|
95
|
+
};
|
96
|
+
exports.brand = {
|
97
|
+
yellow: `#FFBC5B`,
|
98
|
+
melon: `#FFA25A`,
|
99
|
+
orange: `#FF7439`,
|
100
|
+
ruby: `#FF2D55`,
|
101
|
+
lavander: `#C640CD`,
|
102
|
+
voilet: `#A524B3`,
|
103
|
+
purpel: `#691FA9`,
|
104
|
+
};
|
105
|
+
exports.textOnBrand = {
|
106
|
+
yellow: exports.neutral.softBlack2,
|
107
|
+
melon: exports.neutral.softBlack2,
|
108
|
+
orange: exports.neutral.white,
|
109
|
+
ruby: exports.neutral.white,
|
110
|
+
lavander: exports.neutral.white,
|
111
|
+
voilet: exports.neutral.white,
|
112
|
+
purpel: exports.neutral.white,
|
113
|
+
};
|
114
|
+
exports.gradient = Object.assign(Object.assign({}, exports.rarityGradient), { flare: `linear-gradient(135deg, ${exports.brand.ruby} 0%, ${exports.brand.yellow} 100%)`, cerise: `linear-gradient(135deg, ${exports.brand.ruby} 0%, ${exports.brand.lavander} 100%)`, amin: `linear-gradient(135deg, ${exports.brand.lavander} 0%, ${exports.brand.purpel} 100%)` });
|
115
|
+
exports.textOnGradient = Object.assign(Object.assign({}, exports.textOnRarity), { flare: exports.neutral.white, cerise: exports.neutral.white, amin: exports.neutral.white });
|
116
|
+
exports.opacity = {
|
117
|
+
backdrop: 0.6,
|
118
|
+
blurry: 0.4,
|
119
|
+
soft: 0.2,
|
120
|
+
subtle: 0.1,
|
121
|
+
};
|
122
|
+
exports.blackTransparent = {
|
123
|
+
backdrop: `rgba(0, 0, 0, ${exports.opacity.backdrop})`,
|
124
|
+
blurry: `rgba(0, 0, 0, ${exports.opacity.blurry})`,
|
125
|
+
soft: `rgba(0, 0, 0, ${exports.opacity.soft})`,
|
126
|
+
subtle: `rgba(0, 0, 0, ${exports.opacity.subtle})`,
|
127
|
+
};
|
128
|
+
exports.textOnBlackTransparent = {
|
129
|
+
backdrop: exports.neutral.white,
|
130
|
+
blurry: exports.neutral.white,
|
131
|
+
soft: exports.neutral.black,
|
132
|
+
subtle: exports.neutral.black,
|
133
|
+
};
|
134
|
+
exports.whiteTransparent = {
|
135
|
+
backdrop: `rgba(255, 255, 255, ${exports.opacity.backdrop})`,
|
136
|
+
blurry: `rgba(255, 255, 255, ${exports.opacity.blurry})`,
|
137
|
+
soft: `rgba(255, 255, 255, ${exports.opacity.soft})`,
|
138
|
+
subtle: `rgba(255, 255, 255, ${exports.opacity.subtle})`,
|
139
|
+
};
|
140
|
+
exports.textOnWhiteTransparent = {
|
141
|
+
backdrop: exports.neutral.softBlack2,
|
142
|
+
blurry: exports.neutral.softBlack2,
|
143
|
+
soft: exports.neutral.softBlack2,
|
144
|
+
subtle: exports.neutral.softBlack2,
|
145
|
+
};
|
@@ -0,0 +1,46 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import { Coord, Layer, TileMapProps } from "react-tile-map";
|
3
|
+
import "react-tile-map/dist/styles.css";
|
4
|
+
export declare enum AtlasColor {
|
5
|
+
OWNED = "#3D3A46",
|
6
|
+
UNOWNED = "#09080A",
|
7
|
+
PLAZA = "#70AC76",
|
8
|
+
ROAD = "#716C7A",
|
9
|
+
DISTRICT = "#5054D4",
|
10
|
+
ODD = "#110E13",
|
11
|
+
EVEN = "#0D0B0E"
|
12
|
+
}
|
13
|
+
export declare enum AtlasTileType {
|
14
|
+
OWNED = "owned",
|
15
|
+
UNOWNED = "unowned",
|
16
|
+
PLAZA = "plaza",
|
17
|
+
ROAD = "road",
|
18
|
+
DISTRICT = "district"
|
19
|
+
}
|
20
|
+
export type AtlasTileProps = {
|
21
|
+
id?: string;
|
22
|
+
x: number;
|
23
|
+
y: number;
|
24
|
+
updatedAt: number;
|
25
|
+
type: AtlasTileType;
|
26
|
+
top?: boolean;
|
27
|
+
left?: boolean;
|
28
|
+
topLeft?: boolean;
|
29
|
+
name?: string;
|
30
|
+
estateId?: string;
|
31
|
+
owner: string;
|
32
|
+
tokenId?: string;
|
33
|
+
};
|
34
|
+
export { Layer, Coord };
|
35
|
+
export type AtlasProps = Omit<TileMapProps, "layers" | "className"> & {
|
36
|
+
layers?: Layer[];
|
37
|
+
tiles?: Record<string, AtlasTileProps>;
|
38
|
+
/** @deprecated */
|
39
|
+
className?: string;
|
40
|
+
};
|
41
|
+
export type AtlasStateProps = {
|
42
|
+
tiles?: Record<string, AtlasTileProps>;
|
43
|
+
};
|
44
|
+
export interface AtlasInterface extends AtlasProps {
|
45
|
+
}
|
46
|
+
export declare const Atlas: React.MemoExoticComponent<(props: AtlasProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
|
@@ -0,0 +1,96 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
+
}) : function(o, v) {
|
16
|
+
o["default"] = v;
|
17
|
+
});
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
+
if (mod && mod.__esModule) return mod;
|
20
|
+
var result = {};
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
+
__setModuleDefault(result, mod);
|
23
|
+
return result;
|
24
|
+
};
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
26
|
+
exports.Atlas = exports.AtlasTileType = exports.AtlasColor = void 0;
|
27
|
+
const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
|
28
|
+
const react_1 = __importStar(require("react"));
|
29
|
+
const react_tile_map_1 = require("react-tile-map");
|
30
|
+
const react_2 = require("@emotion/react");
|
31
|
+
const util_1 = require("./util");
|
32
|
+
const colors_1 = require("../../colors");
|
33
|
+
require("react-tile-map/dist/styles.css");
|
34
|
+
var AtlasColor;
|
35
|
+
(function (AtlasColor) {
|
36
|
+
AtlasColor["OWNED"] = "#3D3A46";
|
37
|
+
AtlasColor["UNOWNED"] = "#09080A";
|
38
|
+
AtlasColor["PLAZA"] = "#70AC76";
|
39
|
+
AtlasColor["ROAD"] = "#716C7A";
|
40
|
+
AtlasColor["DISTRICT"] = "#5054D4";
|
41
|
+
AtlasColor["ODD"] = "#110E13";
|
42
|
+
AtlasColor["EVEN"] = "#0D0B0E";
|
43
|
+
})(AtlasColor || (exports.AtlasColor = AtlasColor = {}));
|
44
|
+
var AtlasTileType;
|
45
|
+
(function (AtlasTileType) {
|
46
|
+
AtlasTileType["OWNED"] = "owned";
|
47
|
+
AtlasTileType["UNOWNED"] = "unowned";
|
48
|
+
AtlasTileType["PLAZA"] = "plaza";
|
49
|
+
AtlasTileType["ROAD"] = "road";
|
50
|
+
AtlasTileType["DISTRICT"] = "district";
|
51
|
+
})(AtlasTileType || (exports.AtlasTileType = AtlasTileType = {}));
|
52
|
+
exports.Atlas = react_1.default.memo((props) => {
|
53
|
+
const { layers } = props;
|
54
|
+
const [tiles, setTiles] = (0, react_1.useState)(props.tiles);
|
55
|
+
const mountedRef = react_1.default.useRef(true);
|
56
|
+
const layer = (0, react_1.useCallback)((x, y) => {
|
57
|
+
const id = x + "," + y;
|
58
|
+
if (tiles && id in tiles) {
|
59
|
+
const tile = tiles[id];
|
60
|
+
return {
|
61
|
+
color: (0, util_1.getColorByType)(tile.type),
|
62
|
+
top: tile.top,
|
63
|
+
left: tile.left,
|
64
|
+
topLeft: tile.topLeft,
|
65
|
+
};
|
66
|
+
}
|
67
|
+
else {
|
68
|
+
return {
|
69
|
+
color: (x + y) % 2 === 0 ? AtlasColor.ODD : AtlasColor.EVEN,
|
70
|
+
};
|
71
|
+
}
|
72
|
+
}, [tiles]);
|
73
|
+
(0, react_1.useEffect)(() => {
|
74
|
+
if (!tiles) {
|
75
|
+
(0, util_1.getTiles)().then(handleUpdateTiles);
|
76
|
+
}
|
77
|
+
return () => {
|
78
|
+
mountedRef.current = false;
|
79
|
+
};
|
80
|
+
}, [tiles]);
|
81
|
+
(0, react_1.useEffect)(() => {
|
82
|
+
if (props.tiles && props.tiles !== tiles) {
|
83
|
+
setTiles(props.tiles);
|
84
|
+
}
|
85
|
+
}, [props.tiles]);
|
86
|
+
const handleUpdateTiles = (updatedTiles) => {
|
87
|
+
if (mountedRef.current) {
|
88
|
+
setTiles(updatedTiles);
|
89
|
+
}
|
90
|
+
};
|
91
|
+
const atlasStyle = (0, react_2.css)({
|
92
|
+
background: colors_1.neutral.softBlack1,
|
93
|
+
});
|
94
|
+
const layersMemo = (0, react_1.useMemo)(() => [layer, ...(layers || [])], [layer, layers]);
|
95
|
+
return ((0, jsx_runtime_1.jsx)(react_tile_map_1.TileMap, Object.assign({}, react_tile_map_1.TileMap.defaultProps, props, { css: atlasStyle, layers: layersMemo })));
|
96
|
+
});
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { AtlasProps } from "./Atlas";
|
2
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
3
|
+
declare const meta: Meta<AtlasProps>;
|
4
|
+
export default meta;
|
5
|
+
type Story = StoryObj<AtlasProps>;
|
6
|
+
export declare const Uncontrolled: Story;
|
7
|
+
export declare const Controlled: Story;
|
8
|
+
export declare const ForSale: Story;
|
9
|
+
export declare const ClickToSelect: Story;
|
10
|
+
export declare const HoverToHighlight: Story;
|
11
|
+
export declare const WithZoomControl: Story;
|
@@ -0,0 +1,275 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
+
};
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
+
exports.WithZoomControl = exports.HoverToHighlight = exports.ClickToSelect = exports.ForSale = exports.Controlled = exports.Uncontrolled = void 0;
|
16
|
+
const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
|
17
|
+
const styled_1 = __importDefault(require("@emotion/styled"));
|
18
|
+
const blocks_1 = require("@storybook/blocks");
|
19
|
+
const Atlas_1 = require("./Atlas");
|
20
|
+
const util_1 = require("./util");
|
21
|
+
let tiles;
|
22
|
+
if (window) {
|
23
|
+
(0, util_1.getTiles)().then((_tiles) => (tiles = _tiles));
|
24
|
+
}
|
25
|
+
// For Sale
|
26
|
+
const forSaleLayer = (x, y) => {
|
27
|
+
const key = x + "," + y;
|
28
|
+
if (tiles && tiles[key] && "price" in tiles[key]) {
|
29
|
+
return { color: "#00d3ff" };
|
30
|
+
}
|
31
|
+
return null;
|
32
|
+
};
|
33
|
+
// Selection
|
34
|
+
let selected = [];
|
35
|
+
function isSelected(x, y) {
|
36
|
+
return selected.some((coord) => coord.x === x && coord.y === y);
|
37
|
+
}
|
38
|
+
const selectedStrokeLayer = (x, y) => {
|
39
|
+
return isSelected(x, y) ? { color: "#ff0044", scale: 1.4 } : null;
|
40
|
+
};
|
41
|
+
const selectedFillLayer = (x, y) => {
|
42
|
+
return isSelected(x, y) ? { color: "#ff9990", scale: 1.2 } : null;
|
43
|
+
};
|
44
|
+
const handleClick = (x, y) => {
|
45
|
+
console.log(x, y);
|
46
|
+
if (isSelected(x, y)) {
|
47
|
+
selected = selected.filter((coord) => coord.x !== x || coord.y !== y);
|
48
|
+
}
|
49
|
+
else {
|
50
|
+
selected.push({ x, y });
|
51
|
+
}
|
52
|
+
};
|
53
|
+
// Hover
|
54
|
+
let hover;
|
55
|
+
const isValid = () => {
|
56
|
+
if (!hover)
|
57
|
+
return false;
|
58
|
+
// only valid if it fits in central plaza
|
59
|
+
return hover.x >= -5 && hover.x <= 6 && hover.y >= -5 && hover.y <= 5;
|
60
|
+
};
|
61
|
+
const isHighlighted = (x, y) => {
|
62
|
+
if (!hover)
|
63
|
+
return false;
|
64
|
+
// only highlight a 10x10 area centered around hover coords
|
65
|
+
const radius = 5;
|
66
|
+
return (x > hover.x - radius &&
|
67
|
+
x < hover.x + radius &&
|
68
|
+
y > hover.y - radius &&
|
69
|
+
y < hover.y + radius);
|
70
|
+
};
|
71
|
+
const handleHover = (x, y) => {
|
72
|
+
hover = { x, y };
|
73
|
+
};
|
74
|
+
const hoverStrokeLayer = (x, y) => {
|
75
|
+
if (isHighlighted(x, y)) {
|
76
|
+
return {
|
77
|
+
color: isValid() ? "#44ff00" : "#ff0044",
|
78
|
+
scale: 1.5,
|
79
|
+
};
|
80
|
+
}
|
81
|
+
return null;
|
82
|
+
};
|
83
|
+
const hoverFillLayer = (x, y) => {
|
84
|
+
if (isHighlighted(x, y)) {
|
85
|
+
return {
|
86
|
+
color: isValid() ? "#99ff90" : "#ff9990",
|
87
|
+
scale: 1.2,
|
88
|
+
};
|
89
|
+
}
|
90
|
+
return null;
|
91
|
+
};
|
92
|
+
const AtlasContainer = styled_1.default.div({
|
93
|
+
width: "90vw",
|
94
|
+
height: "90vh",
|
95
|
+
backgroundColor: "black",
|
96
|
+
});
|
97
|
+
const meta = {
|
98
|
+
component: Atlas_1.Atlas,
|
99
|
+
title: "Decentraland UI/Atlas",
|
100
|
+
tags: ["autodocs"],
|
101
|
+
argTypes: {
|
102
|
+
layers: {
|
103
|
+
description: "layer to render on the map",
|
104
|
+
},
|
105
|
+
className: {
|
106
|
+
description: "custom class name",
|
107
|
+
},
|
108
|
+
x: {
|
109
|
+
description: "where to position the map in the X axis",
|
110
|
+
},
|
111
|
+
y: {
|
112
|
+
description: "where to position the map in the Y axis",
|
113
|
+
},
|
114
|
+
initialX: {
|
115
|
+
description: "where to initially position the map in the X axis",
|
116
|
+
},
|
117
|
+
initialY: {
|
118
|
+
description: "where to initially position the map in the Y axis",
|
119
|
+
},
|
120
|
+
size: {
|
121
|
+
description: "size of each parcel, i.e: size=5 makes each parcel of 5x5 pixels",
|
122
|
+
},
|
123
|
+
width: {
|
124
|
+
description: "width of the canvas in pixels",
|
125
|
+
},
|
126
|
+
height: {
|
127
|
+
description: "height of the canvas in pixels",
|
128
|
+
},
|
129
|
+
zoom: {
|
130
|
+
description: "zoom level of the map, this changes in the end the size on which parcels are rendered, i.e: size=10 and zoom=0.5 makes each parcel of 5x5 pixels",
|
131
|
+
},
|
132
|
+
minX: {
|
133
|
+
description: "min values for x(ie. the map boundaries)",
|
134
|
+
},
|
135
|
+
maxX: {
|
136
|
+
description: "max values for x(ie. the map boundaries)",
|
137
|
+
},
|
138
|
+
minY: {
|
139
|
+
description: "min values for y (ie. the map boundaries)",
|
140
|
+
},
|
141
|
+
maxY: {
|
142
|
+
description: "max values for y (ie. the map boundaries)",
|
143
|
+
},
|
144
|
+
minSize: {
|
145
|
+
description: "minimum size that parcels can take (after applying zoom)",
|
146
|
+
},
|
147
|
+
maxSize: {
|
148
|
+
description: "maximum size that parcels can take (after applying zoom)",
|
149
|
+
},
|
150
|
+
panX: {
|
151
|
+
description: "initial panning in the X axis, this changes the initial position of the map adding an offset to the prop `x`",
|
152
|
+
},
|
153
|
+
panY: {
|
154
|
+
description: "initial panning in the Y axis, this changes the initial position of the map adding an offset to the prop `y`",
|
155
|
+
},
|
156
|
+
isDraggable: {
|
157
|
+
description: "whether the map should be draggable or not",
|
158
|
+
},
|
159
|
+
padding: {
|
160
|
+
description: "amount of padding tiles",
|
161
|
+
},
|
162
|
+
withZoomControls: {
|
163
|
+
description: "whether the zoom controls should appear",
|
164
|
+
},
|
165
|
+
onMouseDown: {
|
166
|
+
description: "callbacks",
|
167
|
+
},
|
168
|
+
onMouseUp: {
|
169
|
+
description: "callbacks",
|
170
|
+
},
|
171
|
+
onClick: {
|
172
|
+
description: "callbacks",
|
173
|
+
},
|
174
|
+
onHover: {
|
175
|
+
description: " - ",
|
176
|
+
},
|
177
|
+
onPopup: { description: " - " },
|
178
|
+
onChange: { description: " - " },
|
179
|
+
onCenterChange: { description: " - " },
|
180
|
+
renderMap: {
|
181
|
+
description: "renderer",
|
182
|
+
},
|
183
|
+
},
|
184
|
+
parameters: {
|
185
|
+
docs: {
|
186
|
+
page: () => ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(blocks_1.Title, {}), (0, jsx_runtime_1.jsx)(blocks_1.ArgTypes, {})] })),
|
187
|
+
},
|
188
|
+
layout: "centered",
|
189
|
+
canvas: true,
|
190
|
+
},
|
191
|
+
loaders: [
|
192
|
+
() => __awaiter(void 0, void 0, void 0, function* () {
|
193
|
+
return ({
|
194
|
+
tiles: yield (0, util_1.getTiles)(),
|
195
|
+
});
|
196
|
+
}),
|
197
|
+
],
|
198
|
+
decorators: [
|
199
|
+
(Story) => ((0, jsx_runtime_1.jsx)(AtlasContainer, { children: (0, jsx_runtime_1.jsx)(Story, {}) })),
|
200
|
+
],
|
201
|
+
render: (args, { loaded: { tiles } }) => (0, jsx_runtime_1.jsx)(Atlas_1.Atlas, Object.assign({}, args, { tiles: tiles })),
|
202
|
+
};
|
203
|
+
exports.default = meta;
|
204
|
+
exports.Uncontrolled = {
|
205
|
+
args: {},
|
206
|
+
loaders: [
|
207
|
+
() => __awaiter(void 0, void 0, void 0, function* () {
|
208
|
+
return ({
|
209
|
+
tiles: null,
|
210
|
+
});
|
211
|
+
}),
|
212
|
+
],
|
213
|
+
};
|
214
|
+
exports.Controlled = {
|
215
|
+
args: {},
|
216
|
+
loaders: [
|
217
|
+
() => __awaiter(void 0, void 0, void 0, function* () {
|
218
|
+
return ({
|
219
|
+
tiles: yield (0, util_1.getTiles)(),
|
220
|
+
});
|
221
|
+
}),
|
222
|
+
],
|
223
|
+
};
|
224
|
+
exports.ForSale = {
|
225
|
+
args: {
|
226
|
+
layers: [forSaleLayer],
|
227
|
+
},
|
228
|
+
loaders: [
|
229
|
+
() => __awaiter(void 0, void 0, void 0, function* () {
|
230
|
+
return ({
|
231
|
+
tiles: yield (0, util_1.getTiles)(),
|
232
|
+
});
|
233
|
+
}),
|
234
|
+
],
|
235
|
+
};
|
236
|
+
exports.ClickToSelect = {
|
237
|
+
args: {
|
238
|
+
layers: [selectedStrokeLayer, selectedFillLayer],
|
239
|
+
onClick: handleClick,
|
240
|
+
},
|
241
|
+
loaders: [
|
242
|
+
() => __awaiter(void 0, void 0, void 0, function* () {
|
243
|
+
return ({
|
244
|
+
tiles: yield (0, util_1.getTiles)(),
|
245
|
+
});
|
246
|
+
}),
|
247
|
+
],
|
248
|
+
};
|
249
|
+
exports.HoverToHighlight = {
|
250
|
+
args: {
|
251
|
+
layers: [hoverStrokeLayer, hoverFillLayer],
|
252
|
+
onHover: handleHover,
|
253
|
+
},
|
254
|
+
loaders: [
|
255
|
+
() => __awaiter(void 0, void 0, void 0, function* () {
|
256
|
+
return ({
|
257
|
+
tiles: yield (0, util_1.getTiles)(),
|
258
|
+
});
|
259
|
+
}),
|
260
|
+
],
|
261
|
+
};
|
262
|
+
exports.WithZoomControl = {
|
263
|
+
args: {
|
264
|
+
layers: [hoverStrokeLayer, hoverFillLayer],
|
265
|
+
onHover: handleHover,
|
266
|
+
withZoomControls: true,
|
267
|
+
},
|
268
|
+
loaders: [
|
269
|
+
() => __awaiter(void 0, void 0, void 0, function* () {
|
270
|
+
return ({
|
271
|
+
tiles: yield (0, util_1.getTiles)(),
|
272
|
+
});
|
273
|
+
}),
|
274
|
+
],
|
275
|
+
};
|
@@ -0,0 +1,3 @@
|
|
1
|
+
import { AtlasColor, AtlasTileProps, AtlasTileType } from "./Atlas";
|
2
|
+
export declare const getTiles: () => Promise<Record<string, AtlasTileProps>>;
|
3
|
+
export declare function getColorByType(type: AtlasTileType): AtlasColor.OWNED | AtlasColor.UNOWNED | AtlasColor.PLAZA | AtlasColor.ROAD | AtlasColor.DISTRICT;
|
@@ -0,0 +1,41 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
+
exports.getColorByType = exports.getTiles = void 0;
|
13
|
+
const radash_1 = require("radash");
|
14
|
+
const Atlas_1 = require("./Atlas");
|
15
|
+
const TILES_URL = "https://api.decentraland.org/v2/tiles";
|
16
|
+
exports.getTiles = (0, radash_1.memo)(() => __awaiter(void 0, void 0, void 0, function* () {
|
17
|
+
try {
|
18
|
+
const tilesFetch = yield fetch(TILES_URL);
|
19
|
+
const tilesJson = yield tilesFetch.json();
|
20
|
+
return tilesJson.data;
|
21
|
+
}
|
22
|
+
catch (error) {
|
23
|
+
return {};
|
24
|
+
}
|
25
|
+
}), { ttl: 10 * 60 * 1000 } // 10 minutes
|
26
|
+
);
|
27
|
+
function getColorByType(type) {
|
28
|
+
switch (type) {
|
29
|
+
case Atlas_1.AtlasTileType.OWNED:
|
30
|
+
return Atlas_1.AtlasColor.OWNED;
|
31
|
+
case Atlas_1.AtlasTileType.UNOWNED:
|
32
|
+
return Atlas_1.AtlasColor.UNOWNED;
|
33
|
+
case Atlas_1.AtlasTileType.PLAZA:
|
34
|
+
return Atlas_1.AtlasColor.PLAZA;
|
35
|
+
case Atlas_1.AtlasTileType.ROAD:
|
36
|
+
return Atlas_1.AtlasColor.ROAD;
|
37
|
+
case Atlas_1.AtlasTileType.DISTRICT:
|
38
|
+
return Atlas_1.AtlasColor.DISTRICT;
|
39
|
+
}
|
40
|
+
}
|
41
|
+
exports.getColorByType = getColorByType;
|
File without changes
|
@@ -0,0 +1,11 @@
|
|
1
|
+
{
|
2
|
+
"WEARABLE_PREVIEW_URL": "https://wearable-preview.decentraland.zone",
|
3
|
+
"ACCOUNT_URL": "https://account.decentraland.zone",
|
4
|
+
"PROFILE_URL": "https://profile.decentraland.zone",
|
5
|
+
"MARKETPLACE_URL": "https://market.decentraland.zone",
|
6
|
+
"BUILDER_URL": "https://builder.decentraland.zone",
|
7
|
+
"DAO_URL": "https://dao.decentraland.zone",
|
8
|
+
"GOVERNANCE_URL": "https://governance.decentraland.zone",
|
9
|
+
"EVENTS_URL": "https://events.decentraland.zone",
|
10
|
+
"PLACES_URL": "https://places.decentraland.zone"
|
11
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
{
|
2
|
+
"WEARABLE_PREVIEW_URL": "https://wearable-preview.decentraland.org",
|
3
|
+
"ACCOUNT_URL": "https://account.decentraland.org",
|
4
|
+
"PROFILE_URL": "https://profile.decentraland.org",
|
5
|
+
"MARKETPLACE_URL": "https://market.decentraland.org",
|
6
|
+
"BUILDER_URL": "https://builder.decentraland.org",
|
7
|
+
"DAO_URL": "https://dao.decentraland.org",
|
8
|
+
"GOVERNANCE_URL": "https://governance.decentraland.org",
|
9
|
+
"EVENTS_URL": "https://events.decentraland.org",
|
10
|
+
"PLACES_URL": "https://places.decentraland.org"
|
11
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
{
|
2
|
+
"WEARABLE_PREVIEW_URL": "https://wearable-preview.decentraland.today",
|
3
|
+
"ACCOUNT_URL": "https://account.decentraland.today",
|
4
|
+
"PROFILE_URL": "https://profile.decentraland.today",
|
5
|
+
"MARKETPLACE_URL": "https://market.decentraland.today",
|
6
|
+
"BUILDER_URL": "https://builder.decentraland.today",
|
7
|
+
"DAO_URL": "https://dao.decentraland.today",
|
8
|
+
"GOVERNANCE_URL": "https://governance.decentraland.today",
|
9
|
+
"EVENTS_URL": "https://events.decentraland.today",
|
10
|
+
"PLACES_URL": "https://places.decentraland.today"
|
11
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const config: import("@dcl/ui-env/dist/config").IConfig;
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.config = void 0;
|
7
|
+
const ui_env_1 = require("@dcl/ui-env");
|
8
|
+
const dev_json_1 = __importDefault(require("./env/dev.json"));
|
9
|
+
const prod_json_1 = __importDefault(require("./env/prod.json"));
|
10
|
+
const stg_json_1 = __importDefault(require("./env/stg.json"));
|
11
|
+
exports.config = (0, ui_env_1.createConfig)({
|
12
|
+
[ui_env_1.Env.DEVELOPMENT]: dev_json_1.default,
|
13
|
+
[ui_env_1.Env.STAGING]: stg_json_1.default,
|
14
|
+
[ui_env_1.Env.PRODUCTION]: prod_json_1.default,
|
15
|
+
});
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
+
};
|
16
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
17
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
18
|
+
};
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
20
|
+
exports.emotionCache = exports.emotionStyled = exports.emotionReact = void 0;
|
21
|
+
__exportStar(require("@mui/material"), exports);
|
22
|
+
const cache_1 = __importDefault(require("@emotion/cache"));
|
23
|
+
exports.emotionCache = cache_1.default;
|
24
|
+
const react_1 = __importDefault(require("@emotion/react"));
|
25
|
+
exports.emotionReact = react_1.default;
|
26
|
+
const styled_1 = __importDefault(require("@emotion/styled"));
|
27
|
+
exports.emotionStyled = styled_1.default;
|
package/dist/theme.d.ts
ADDED
package/dist/theme.js
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.dark = exports.light = void 0;
|
4
|
+
const styles_1 = require("@mui/material/styles");
|
5
|
+
const colors_1 = require("./colors");
|
6
|
+
function theme(type) {
|
7
|
+
const isDark = type === "dark";
|
8
|
+
const textColor = isDark ? colors_1.neutral.white : colors_1.neutral.black;
|
9
|
+
return {
|
10
|
+
palette: {
|
11
|
+
mode: type,
|
12
|
+
primary: {
|
13
|
+
main: colors_1.base.primary,
|
14
|
+
},
|
15
|
+
secondary: {
|
16
|
+
main: colors_1.neutral.white,
|
17
|
+
},
|
18
|
+
background: {
|
19
|
+
default: isDark ? colors_1.neutral.softBlack2 : colors_1.neutral.softWhite,
|
20
|
+
paper: isDark ? colors_1.neutral.softBlack1 : colors_1.neutral.white,
|
21
|
+
},
|
22
|
+
text: {
|
23
|
+
primary: colors_1.base.primary,
|
24
|
+
},
|
25
|
+
},
|
26
|
+
shape: {
|
27
|
+
borderRadius: 8,
|
28
|
+
},
|
29
|
+
typography: {
|
30
|
+
fontFamily: "Inter, -apple-system, system-ui, sans-serif",
|
31
|
+
h1: {
|
32
|
+
fontSize: 96,
|
33
|
+
fontWeight: 600,
|
34
|
+
marginBlock: "0.5em",
|
35
|
+
color: textColor,
|
36
|
+
},
|
37
|
+
h2: {
|
38
|
+
fontSize: 60,
|
39
|
+
fontWeight: 600,
|
40
|
+
marginBlock: "0.5em",
|
41
|
+
color: textColor,
|
42
|
+
},
|
43
|
+
h3: {
|
44
|
+
fontSize: 48,
|
45
|
+
fontWeight: 500,
|
46
|
+
marginBlock: "0.5em",
|
47
|
+
color: textColor,
|
48
|
+
},
|
49
|
+
h4: {
|
50
|
+
fontSize: 34,
|
51
|
+
fontWeight: 600,
|
52
|
+
marginBlock: "0.5em",
|
53
|
+
color: textColor,
|
54
|
+
},
|
55
|
+
h5: {
|
56
|
+
fontSize: 20,
|
57
|
+
fontWeight: 600,
|
58
|
+
marginBlock: "0.5em",
|
59
|
+
color: textColor,
|
60
|
+
},
|
61
|
+
button: {
|
62
|
+
textTransform: "uppercase",
|
63
|
+
fontWeight: 600,
|
64
|
+
},
|
65
|
+
body1: {
|
66
|
+
color: textColor,
|
67
|
+
},
|
68
|
+
body2: {
|
69
|
+
color: textColor,
|
70
|
+
},
|
71
|
+
},
|
72
|
+
};
|
73
|
+
}
|
74
|
+
exports.light = (0, styles_1.createTheme)(theme("light"));
|
75
|
+
exports.dark = (0, styles_1.createTheme)(theme("dark"));
|
package/package.json
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
{
|
2
|
+
"name": "decentraland-ui2",
|
3
|
+
"version": "0.0.0-9008705175.commit-ca18515",
|
4
|
+
"description": "Decentraland's UI components and styles",
|
5
|
+
"main": "index.js",
|
6
|
+
"author": "Decentraland",
|
7
|
+
"license": "Apache-2.0",
|
8
|
+
"scripts": {
|
9
|
+
"test": "jest",
|
10
|
+
"fix:prettier": "prettier --write ./src",
|
11
|
+
"start": "storybook dev -p 6006",
|
12
|
+
"build": "npm run build:dist",
|
13
|
+
"build:dist": "rm -Rf dist && tsc -p . -d --outDir dist --declarationDir dist --sourceMap false --skipLibCheck",
|
14
|
+
"build-storybook": "npm run generate:storybooks && npx storybook@7 build",
|
15
|
+
"format": "prettier --write '**/*.{ts,tsx,js,jsx,json,md,mdx,css}'",
|
16
|
+
"lint": "eslint --ext .ts,.tsx,.js,.jsx ./src",
|
17
|
+
"lint:check": "eslint --ext .ts,.tsx,.js,.jsx ./src",
|
18
|
+
"lint:fix": "npm run lint -- --fix",
|
19
|
+
"generate:storybooks": "ts-node ./bin/storybookGenerator.ts && npm run lint:fix"
|
20
|
+
},
|
21
|
+
"repository": {
|
22
|
+
"type": "git",
|
23
|
+
"url": "git+https://github.com/decentraland/ui2.git"
|
24
|
+
},
|
25
|
+
"keywords": [
|
26
|
+
"decentraland",
|
27
|
+
"ui",
|
28
|
+
"react",
|
29
|
+
"semantic-ui",
|
30
|
+
"components",
|
31
|
+
"styles",
|
32
|
+
"themes"
|
33
|
+
],
|
34
|
+
"bugs": {
|
35
|
+
"url": "https://github.com/decentraland/ui2/issues"
|
36
|
+
},
|
37
|
+
"homepage": "https://github.com/decentraland/ui2#readme",
|
38
|
+
"dependencies": {
|
39
|
+
"@dcl/schemas": "^9.7.0",
|
40
|
+
"@dcl/ui-env": "^1.4.0",
|
41
|
+
"@emotion/react": "^11.11.1",
|
42
|
+
"@emotion/styled": "^11.11.0",
|
43
|
+
"@mui/icons-material": "^5.14.14",
|
44
|
+
"@mui/material": "^5.14.14",
|
45
|
+
"autoprefixer": "^10.4.16",
|
46
|
+
"radash": "^11.0.0",
|
47
|
+
"react": "^17.0.2",
|
48
|
+
"react-dom": "^17.0.2",
|
49
|
+
"react-tile-map": "^0.4.1"
|
50
|
+
},
|
51
|
+
"devDependencies": {
|
52
|
+
"@babel/preset-env": "^7.23.2",
|
53
|
+
"@babel/preset-react": "^7.22.15",
|
54
|
+
"@babel/preset-typescript": "^7.23.2",
|
55
|
+
"@dcl/eslint-config": "^1.1.12",
|
56
|
+
"@storybook/addon-docs": "^7.5.2",
|
57
|
+
"@storybook/addon-essentials": "^7.5.2",
|
58
|
+
"@storybook/addon-links": "^7.5.2",
|
59
|
+
"@storybook/addon-storysource": "^7.5.2",
|
60
|
+
"@storybook/addon-themes": "^7.5.2",
|
61
|
+
"@storybook/blocks": "^7.5.2",
|
62
|
+
"@storybook/react": "^7.5.2",
|
63
|
+
"@storybook/react-webpack5": "^7.5.2",
|
64
|
+
"@storybook/testing-library": "^0.2.2",
|
65
|
+
"@types/jest": "^29.5.12",
|
66
|
+
"@types/react": "^17.0.69",
|
67
|
+
"@typescript-eslint/eslint-plugin": "^6.8.0",
|
68
|
+
"@typescript-eslint/parser": "^6.8.0",
|
69
|
+
"eslint": "^8.51.0",
|
70
|
+
"eslint-config-prettier": "^9.0.0",
|
71
|
+
"eslint-import-resolver-babel-module": "^5.3.2",
|
72
|
+
"eslint-import-resolver-jest": "^3.0.2",
|
73
|
+
"eslint-import-resolver-typescript": "^3.6.1",
|
74
|
+
"eslint-plugin-autofix": "^1.1.0",
|
75
|
+
"eslint-plugin-css-import-order": "^1.1.0",
|
76
|
+
"eslint-plugin-import": "^2.28.1",
|
77
|
+
"eslint-plugin-prettier": "^5.0.0",
|
78
|
+
"eslint-plugin-storybook": "^0.6.15",
|
79
|
+
"jest": "^29.7.0",
|
80
|
+
"prettier": "^3.0.3",
|
81
|
+
"storybook": "^7.5.2",
|
82
|
+
"ts-jest": "^29.1.2",
|
83
|
+
"ts-node": "^10.9.1",
|
84
|
+
"typescript": "^5.2.2"
|
85
|
+
},
|
86
|
+
"files": [
|
87
|
+
"dist"
|
88
|
+
],
|
89
|
+
"commit": "ca18515ed9c0b195c085361a61e752be0e3abedb"
|
90
|
+
}
|