@neo4j-cypher/react-codemirror 2.0.0-next.2 → 2.0.0-next.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/CHANGELOG.md +166 -0
  2. package/dist/{types/CypherEditor.d.ts → CypherEditor.d.ts} +82 -3
  3. package/dist/CypherEditor.js +326 -0
  4. package/dist/CypherEditor.js.map +1 -0
  5. package/dist/CypherEditor.test.js +151 -0
  6. package/dist/CypherEditor.test.js.map +1 -0
  7. package/dist/constants.d.ts +1 -0
  8. package/dist/constants.js +2 -0
  9. package/dist/constants.js.map +1 -0
  10. package/dist/e2e_tests/autoCompletion.spec.js +318 -0
  11. package/dist/e2e_tests/autoCompletion.spec.js.map +1 -0
  12. package/dist/e2e_tests/configuration.spec.js +83 -0
  13. package/dist/e2e_tests/configuration.spec.js.map +1 -0
  14. package/dist/e2e_tests/debounce.spec.js +66 -0
  15. package/dist/e2e_tests/debounce.spec.js.map +1 -0
  16. package/dist/{types/e2e_tests/e2e-utils.d.ts → e2e_tests/e2eUtils.d.ts} +1 -0
  17. package/dist/e2e_tests/e2eUtils.js +71 -0
  18. package/dist/e2e_tests/e2eUtils.js.map +1 -0
  19. package/dist/e2e_tests/extraKeybindings.spec.js +43 -0
  20. package/dist/e2e_tests/extraKeybindings.spec.js.map +1 -0
  21. package/dist/e2e_tests/historyNavigation.spec.js +227 -0
  22. package/dist/e2e_tests/historyNavigation.spec.js.map +1 -0
  23. package/dist/e2e_tests/performanceTest.spec.d.ts +6 -0
  24. package/dist/e2e_tests/performanceTest.spec.js +97 -0
  25. package/dist/e2e_tests/performanceTest.spec.js.map +1 -0
  26. package/dist/e2e_tests/sanityChecks.spec.js +53 -0
  27. package/dist/e2e_tests/sanityChecks.spec.js.map +1 -0
  28. package/dist/e2e_tests/signatureHelp.spec.js +228 -0
  29. package/dist/e2e_tests/signatureHelp.spec.js.map +1 -0
  30. package/dist/e2e_tests/snippets.spec.js +62 -0
  31. package/dist/e2e_tests/snippets.spec.js.map +1 -0
  32. package/dist/e2e_tests/syntaxHighlighting.spec.d.ts +1 -0
  33. package/dist/e2e_tests/syntaxHighlighting.spec.js +90 -0
  34. package/dist/e2e_tests/syntaxHighlighting.spec.js.map +1 -0
  35. package/dist/e2e_tests/syntaxValidation.spec.d.ts +1 -0
  36. package/dist/e2e_tests/syntaxValidation.spec.js +116 -0
  37. package/dist/e2e_tests/syntaxValidation.spec.js.map +1 -0
  38. package/dist/historyNavigation.js +163 -0
  39. package/dist/historyNavigation.js.map +1 -0
  40. package/dist/{types/icons.d.ts → icons.d.ts} +1 -1
  41. package/dist/icons.js +62 -0
  42. package/dist/icons.js.map +1 -0
  43. package/dist/index.d.ts +4 -0
  44. package/dist/index.js +5 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/lang-cypher/autocomplete.d.ts +6 -0
  47. package/dist/lang-cypher/autocomplete.js +115 -0
  48. package/dist/lang-cypher/autocomplete.js.map +1 -0
  49. package/dist/{types/lang-cypher → lang-cypher}/constants.d.ts +11 -0
  50. package/dist/lang-cypher/constants.js +69 -0
  51. package/dist/lang-cypher/constants.js.map +1 -0
  52. package/dist/lang-cypher/contants.test.d.ts +1 -0
  53. package/dist/lang-cypher/contants.test.js +103 -0
  54. package/dist/lang-cypher/contants.test.js.map +1 -0
  55. package/dist/lang-cypher/createCypherTheme.js +182 -0
  56. package/dist/lang-cypher/createCypherTheme.js.map +1 -0
  57. package/dist/lang-cypher/langCypher.d.ts +14 -0
  58. package/dist/lang-cypher/langCypher.js +23 -0
  59. package/dist/lang-cypher/langCypher.js.map +1 -0
  60. package/dist/lang-cypher/lintWorker.d.ts +12 -0
  61. package/dist/lang-cypher/lintWorker.js +14 -0
  62. package/dist/lang-cypher/lintWorker.js.map +1 -0
  63. package/dist/lang-cypher/parser-adapter.d.ts +19 -0
  64. package/dist/lang-cypher/parser-adapter.js +113 -0
  65. package/dist/lang-cypher/parser-adapter.js.map +1 -0
  66. package/dist/lang-cypher/signatureHelp.d.ts +4 -0
  67. package/dist/lang-cypher/signatureHelp.js +109 -0
  68. package/dist/lang-cypher/signatureHelp.js.map +1 -0
  69. package/dist/{types/lang-cypher/syntax-validation.d.ts → lang-cypher/syntaxValidation.d.ts} +2 -1
  70. package/dist/lang-cypher/syntaxValidation.js +52 -0
  71. package/dist/lang-cypher/syntaxValidation.js.map +1 -0
  72. package/dist/lang-cypher/themeIcons.js +22 -0
  73. package/dist/lang-cypher/themeIcons.js.map +1 -0
  74. package/dist/lang-cypher/utils.d.ts +2 -0
  75. package/dist/lang-cypher/utils.js +10 -0
  76. package/dist/lang-cypher/utils.js.map +1 -0
  77. package/dist/ndlTokensCopy.d.ts +570 -0
  78. package/dist/ndlTokensCopy.js +571 -0
  79. package/dist/ndlTokensCopy.js.map +1 -0
  80. package/dist/ndlTokensCopy.test.d.ts +1 -0
  81. package/dist/ndlTokensCopy.test.js +12 -0
  82. package/dist/ndlTokensCopy.test.js.map +1 -0
  83. package/dist/neo4jSetup.d.ts +6 -0
  84. package/dist/neo4jSetup.js +120 -0
  85. package/dist/neo4jSetup.js.map +1 -0
  86. package/dist/{types/themes.d.ts → themes.d.ts} +1 -1
  87. package/dist/themes.js +93 -0
  88. package/dist/themes.js.map +1 -0
  89. package/dist/tsconfig.tsbuildinfo +1 -0
  90. package/package.json +32 -34
  91. package/src/CypherEditor.test.tsx +200 -0
  92. package/src/CypherEditor.tsx +311 -41
  93. package/src/constants.ts +1 -0
  94. package/src/e2e_tests/autoCompletion.spec.tsx +546 -0
  95. package/src/e2e_tests/configuration.spec.tsx +111 -0
  96. package/src/e2e_tests/debounce.spec.tsx +106 -0
  97. package/src/e2e_tests/{e2e-utils.ts → e2eUtils.ts} +24 -2
  98. package/src/e2e_tests/{extra-keybindings.spec.tsx → extraKeybindings.spec.tsx} +1 -3
  99. package/src/e2e_tests/{history-navigation.spec.tsx → historyNavigation.spec.tsx} +137 -18
  100. package/src/e2e_tests/performanceTest.spec.tsx +163 -0
  101. package/src/e2e_tests/{sanity-checks.spec.tsx → sanityChecks.spec.tsx} +7 -22
  102. package/src/e2e_tests/signatureHelp.spec.tsx +445 -0
  103. package/src/e2e_tests/snippets.spec.tsx +92 -0
  104. package/src/e2e_tests/{syntax-highlighting.spec.tsx → syntaxHighlighting.spec.tsx} +26 -24
  105. package/src/e2e_tests/{syntax-validation.spec.tsx → syntaxValidation.spec.tsx} +97 -10
  106. package/src/{history-navigation.ts → historyNavigation.ts} +1 -1
  107. package/src/icons.ts +3 -0
  108. package/src/index.ts +2 -2
  109. package/src/lang-cypher/autocomplete.ts +100 -18
  110. package/src/lang-cypher/constants.ts +27 -0
  111. package/src/lang-cypher/contants.test.ts +6 -2
  112. package/src/lang-cypher/{create-cypher-theme.ts → createCypherTheme.ts} +44 -2
  113. package/src/lang-cypher/langCypher.ts +43 -0
  114. package/src/lang-cypher/lintWorker.ts +31 -0
  115. package/src/lang-cypher/parser-adapter.ts +145 -0
  116. package/src/lang-cypher/signatureHelp.ts +151 -0
  117. package/src/lang-cypher/syntaxValidation.ts +66 -0
  118. package/src/lang-cypher/utils.ts +9 -0
  119. package/src/{ndl-tokens-copy.test.ts → ndlTokensCopy.test.ts} +2 -1
  120. package/src/ndlTokensCopy.ts +570 -0
  121. package/src/{neo4j-setup.tsx → neo4jSetup.tsx} +78 -17
  122. package/src/themes.ts +45 -70
  123. package/src/viteEnv.d.ts +1 -0
  124. package/dist/cjs/index.cjs +0 -1440
  125. package/dist/cjs/index.cjs.map +0 -7
  126. package/dist/esm/index.mjs +0 -1463
  127. package/dist/esm/index.mjs.map +0 -7
  128. package/dist/types/e2e_tests/mock-data.d.ts +0 -3779
  129. package/dist/types/index.d.ts +0 -4
  130. package/dist/types/lang-cypher/ParserAdapter.d.ts +0 -14
  131. package/dist/types/lang-cypher/autocomplete.d.ts +0 -3
  132. package/dist/types/lang-cypher/lang-cypher.d.ts +0 -7
  133. package/dist/types/ndl-tokens-copy.d.ts +0 -379
  134. package/dist/types/neo4j-setup.d.ts +0 -2
  135. package/dist/types/tsconfig.tsbuildinfo +0 -1
  136. package/src/e2e_tests/auto-completion.spec.tsx +0 -232
  137. package/src/e2e_tests/mock-data.ts +0 -4310
  138. package/src/e2e_tests/performance-test.spec.tsx +0 -71
  139. package/src/lang-cypher/ParserAdapter.ts +0 -92
  140. package/src/lang-cypher/lang-cypher.ts +0 -32
  141. package/src/lang-cypher/syntax-validation.ts +0 -24
  142. package/src/ndl-tokens-copy.ts +0 -379
  143. /package/dist/{types/e2e_tests/auto-completion.spec.d.ts → CypherEditor.test.d.ts} +0 -0
  144. /package/dist/{types/e2e_tests/extra-keybindings.spec.d.ts → e2e_tests/autoCompletion.spec.d.ts} +0 -0
  145. /package/dist/{types/e2e_tests/history-navigation.spec.d.ts → e2e_tests/configuration.spec.d.ts} +0 -0
  146. /package/dist/{types/e2e_tests/performance-test.spec.d.ts → e2e_tests/debounce.spec.d.ts} +0 -0
  147. /package/dist/{types/e2e_tests/sanity-checks.spec.d.ts → e2e_tests/extraKeybindings.spec.d.ts} +0 -0
  148. /package/dist/{types/e2e_tests/syntax-highlighting.spec.d.ts → e2e_tests/historyNavigation.spec.d.ts} +0 -0
  149. /package/dist/{types/e2e_tests/syntax-validation.spec.d.ts → e2e_tests/sanityChecks.spec.d.ts} +0 -0
  150. /package/dist/{types/lang-cypher/contants.test.d.ts → e2e_tests/signatureHelp.spec.d.ts} +0 -0
  151. /package/dist/{types/ndl-tokens-copy.test.d.ts → e2e_tests/snippets.spec.d.ts} +0 -0
  152. /package/dist/{types/history-navigation.d.ts → historyNavigation.d.ts} +0 -0
  153. /package/dist/{types/lang-cypher/create-cypher-theme.d.ts → lang-cypher/createCypherTheme.d.ts} +0 -0
  154. /package/dist/{types/lang-cypher/theme-icons.d.ts → lang-cypher/themeIcons.d.ts} +0 -0
  155. /package/src/lang-cypher/{theme-icons.ts → themeIcons.ts} +0 -0
@@ -1,71 +0,0 @@
1
- import { expect, test } from '@playwright/experimental-ct-react';
2
- import { CypherEditor } from '../CypherEditor';
3
- import { CypherEditorPage } from './e2e-utils';
4
- import { largeQuery, mockSchema } from './mock-data';
5
-
6
- test.use({ viewport: { width: 1000, height: 500 } });
7
-
8
- test('performance test session ', async ({ mount, page }) => {
9
- test.setTimeout(30 * 1000);
10
- const editorPage = new CypherEditorPage(page);
11
- const component = await mount(
12
- <CypherEditor prompt="neo4j>" theme="dark" lint schema={mockSchema} />,
13
- );
14
-
15
- // pressSequentially is less efficient -> we want to test the performance of the editor
16
- await editorPage.getEditor().pressSequentially(`
17
- MATCH (n:Person) RETURN m;`);
18
-
19
- await editorPage.checkErrorMessage('m', 'Variable `m` not defined');
20
-
21
- // set and unset large query a few times
22
- await component.update(
23
- <CypherEditor value={largeQuery} schema={mockSchema} />,
24
- );
25
- await component.update(<CypherEditor value="" schema={mockSchema} />);
26
-
27
- await component.update(
28
- <CypherEditor value={largeQuery} schema={mockSchema} />,
29
- );
30
- await component.update(<CypherEditor value="" />);
31
-
32
- await component.update(
33
- <CypherEditor value={largeQuery} schema={mockSchema} />,
34
- );
35
- await component.update(<CypherEditor value="" schema={mockSchema} />);
36
-
37
- await component.update(
38
- <CypherEditor value={largeQuery} schema={mockSchema} />,
39
- );
40
- await component.update(<CypherEditor value="" schema={mockSchema} />);
41
-
42
- await component.update(
43
- <CypherEditor value={largeQuery} schema={mockSchema} />,
44
- );
45
-
46
- await editorPage.getEditor().pressSequentially(`
47
- MATCH (n:P`);
48
-
49
- await expect(
50
- page.locator('.cm-tooltip-autocomplete').getByText('Person'),
51
- ).toBeVisible();
52
-
53
- await page.locator('.cm-tooltip-autocomplete').getByText('Person').click();
54
-
55
- await expect(page.locator('.cm-tooltip-autocomplete')).not.toBeVisible();
56
-
57
- await expect(component).toContainText('MATCH (n:Person');
58
-
59
- await editorPage.getEditor().pressSequentially(') RETRN my');
60
-
61
- await expect(component).toContainText('MATCH (n:Person) RETRN m');
62
-
63
- await editorPage.checkErrorMessage(
64
- 'RETRN',
65
- 'Unexpected token. Did you mean RETURN?',
66
- );
67
-
68
- await editorPage
69
- .getEditor()
70
- .pressSequentially('veryveryveryverylongvariable');
71
- });
@@ -1,92 +0,0 @@
1
- import { Facet } from '@codemirror/state';
2
- import { Input, NodeType, Parser, PartialParse, Tree } from '@lezer/common';
3
- import {
4
- applySyntaxColouring,
5
- CypherTokenType,
6
- ParsedCypherToken,
7
- } from '@neo4j-cypher/language-support';
8
- import { cypherTokenTypeToNode, parserAdapterNodeSet } from './constants';
9
-
10
- const DEFAULT_NODE_GROUP_SIZE = 4;
11
-
12
- export class ParserAdapter extends Parser {
13
- cypherTokenTypeToNode: Record<CypherTokenType, NodeType> & {
14
- topNode: NodeType;
15
- };
16
-
17
- constructor(facet: Facet<unknown>) {
18
- super();
19
- this.cypherTokenTypeToNode = cypherTokenTypeToNode(facet);
20
- }
21
-
22
- private createBufferForTokens(tokens: ParsedCypherToken[]) {
23
- return tokens.map((token) => {
24
- const nodeTypeId = this.cypherTokenTypeToNode[token.tokenType].id;
25
- const startOffset = token.position.startOffset;
26
- const endOffset = token.position.startOffset + token.length;
27
-
28
- return [nodeTypeId, startOffset, endOffset, DEFAULT_NODE_GROUP_SIZE];
29
- });
30
- }
31
-
32
- private addTopNodeToBuffer(buffer: number[][], document: string) {
33
- const id = this.cypherTokenTypeToNode.topNode.id;
34
- const startOffset = 0;
35
- const endOffset = document.length;
36
- const totalBufferLength = buffer.length * DEFAULT_NODE_GROUP_SIZE;
37
-
38
- buffer.push([
39
- id,
40
- startOffset,
41
- endOffset,
42
- totalBufferLength + DEFAULT_NODE_GROUP_SIZE,
43
- ]);
44
- }
45
-
46
- private buildTree(document: string) {
47
- const tokens = applySyntaxColouring(document);
48
-
49
- if (tokens.length < 1) {
50
- return Tree.build({
51
- buffer: [
52
- this.cypherTokenTypeToNode.topNode.id,
53
- 0,
54
- document.length,
55
- DEFAULT_NODE_GROUP_SIZE,
56
- ],
57
- nodeSet: parserAdapterNodeSet(this.cypherTokenTypeToNode),
58
- topID: this.cypherTokenTypeToNode.topNode.id,
59
- });
60
- }
61
-
62
- const buffer = this.createBufferForTokens(tokens);
63
- this.addTopNodeToBuffer(buffer, document);
64
-
65
- return Tree.build({
66
- buffer: buffer.flat(),
67
- nodeSet: parserAdapterNodeSet(this.cypherTokenTypeToNode),
68
- topID: this.cypherTokenTypeToNode.topNode.id,
69
- });
70
- }
71
-
72
- createParse(input: Input): PartialParse {
73
- return this.startParse(input);
74
- }
75
-
76
- /* There are more arguments, but since we don't do any incremental parsing, they are not useful */
77
- startParse(input: string | Input): PartialParse {
78
- const document =
79
- typeof input === 'string' ? input : input.read(0, input.length);
80
-
81
- const tree = this.buildTree(document);
82
-
83
- return {
84
- stoppedAt: input.length,
85
- parsedPos: input.length,
86
- stopAt: () => {
87
- return undefined;
88
- },
89
- advance: () => tree,
90
- };
91
- }
92
- }
@@ -1,32 +0,0 @@
1
- import {
2
- defineLanguageFacet,
3
- Language,
4
- LanguageSupport,
5
- } from '@codemirror/language';
6
- import type { DbSchema } from '@neo4j-cypher/language-support';
7
- import { cypherAutocomplete } from './autocomplete';
8
- import { ParserAdapter } from './ParserAdapter';
9
- import { cypherLinter } from './syntax-validation';
10
-
11
- const facet = defineLanguageFacet({
12
- commentTokens: { block: { open: '/*', close: '*/' }, line: '//' },
13
- closeBrackets: { brackets: ['(', '[', '{', "'", '"', '`'] },
14
- });
15
-
16
- const parserAdapter = new ParserAdapter(facet);
17
-
18
- const cypherLanguage = new Language(facet, parserAdapter, [], 'cypher');
19
-
20
- export type CypherConfig = {
21
- lint?: boolean;
22
- schema?: DbSchema;
23
- };
24
-
25
- export function cypher(config: CypherConfig) {
26
- return new LanguageSupport(cypherLanguage, [
27
- cypherLanguage.data.of({
28
- autocomplete: cypherAutocomplete(config),
29
- }),
30
- cypherLinter(config),
31
- ]);
32
- }
@@ -1,24 +0,0 @@
1
- import { linter } from '@codemirror/lint';
2
- import { Extension } from '@codemirror/state';
3
- import { validateSyntax } from '@neo4j-cypher/language-support';
4
- import { DiagnosticSeverity } from 'vscode-languageserver-types';
5
- import type { CypherConfig } from './lang-cypher';
6
-
7
- export const cypherLinter: (config: CypherConfig) => Extension = (config) =>
8
- linter((view) => {
9
- if (!config.lint) {
10
- return [];
11
- }
12
-
13
- return validateSyntax(view.state.doc.toString(), config.schema).map(
14
- (diagnostic) => ({
15
- from: diagnostic.offsets.start,
16
- to: diagnostic.offsets.end,
17
- severity:
18
- diagnostic.severity === DiagnosticSeverity.Error
19
- ? 'error'
20
- : 'warning',
21
- message: diagnostic.message,
22
- }),
23
- );
24
- });
@@ -1,379 +0,0 @@
1
- export const tokens = {
2
- borderRadius: {
3
- '1xl': '12px',
4
- '2xl': '14px',
5
- '3xl': '16px',
6
- '4xl': '18px',
7
- '5xl': '20px',
8
- full: '9999px',
9
- lg: '8px',
10
- md: '6px',
11
- none: '0px',
12
- sm: '4px',
13
- xl: '10px',
14
- },
15
- boxShadow: {
16
- l2: '0px 1px 2px 0px rgba(12, 26, 37, 0.18)',
17
- l3: '0px 4px 8px 0px rgba(12, 26, 37, 0.04)',
18
- l4: '0px 4px 8px 0px rgba(12, 26, 37, 0.08)',
19
- l5: '0px 8px 20px 0px rgba(12, 26, 37, 0.12)',
20
- },
21
- breakpoints: {
22
- '2xl': '1536px',
23
- lg: '1024px',
24
- md: '768px',
25
- sm: '640px',
26
- xl: '1280px',
27
- xs: '450px',
28
- },
29
- colors: {
30
- blueberry: {
31
- '10': '#E8EBF6',
32
- '20': '#C4CCE9',
33
- '30': '#9DABD9',
34
- '40': '#768ACA',
35
- '50': '#3557B4',
36
- '60': '#25459E',
37
- '70': '#0B297D',
38
- },
39
- danger: {
40
- '10': '#ffe6e9',
41
- '20': '#ffb8c4',
42
- '30': '#ff668a',
43
- '40': '#ed1252',
44
- '50': '#cc254b',
45
- '60': '#a1003b',
46
- '70': '#7a0031',
47
- },
48
- mint: {
49
- '10': '#F0FFFA',
50
- '20': '#D1FFF4',
51
- '30': '#A8FFEE',
52
- '40': '#55F9E2',
53
- '50': '#3DD4C5',
54
- '60': '#2AADA5',
55
- '70': '#116161',
56
- },
57
- neutral: {
58
- '10': '#FFFFFF',
59
- '20': '#F5F7FA',
60
- '30': '#EEF1F6',
61
- '40': '#E6E9EE',
62
- '50': '#C4C8CD',
63
- '60': '#B2B7BD',
64
- '70': '#717780',
65
- '80': '#535B66',
66
- '90': '#151E29',
67
- },
68
- primary: {
69
- '10': '#e6f8ff',
70
- '20': '#a3e2ff',
71
- '30': '#7ad1ff',
72
- '40': '#018bff',
73
- '50': '#006FD6',
74
- '60': '#0056b3',
75
- '70': '#004092',
76
- },
77
- success: {
78
- '10': '#E1FAEF',
79
- '20': '#98EDCB',
80
- '30': '#44D4A4',
81
- '40': '#00BA88',
82
- '50': '#327D60',
83
- '60': '#006E58',
84
- '70': '#00473B',
85
- },
86
- warning: {
87
- '10': '#FFFBDE',
88
- '20': '#FFF4B5',
89
- '30': '#FFEA8C',
90
- '40': '#FFDE63',
91
- '50': '#D9B54A',
92
- '60': '#966c2e',
93
- '70': '#664817',
94
- },
95
- },
96
- font: {
97
- size: {
98
- 'body-large': '1rem',
99
- 'body-medium': '0.875rem',
100
- 'body-small': '0.75rem',
101
- code: '0.875rem',
102
- h1: '3rem',
103
- h2: '2.5rem',
104
- h3: '1.875rem',
105
- h4: '1.5rem',
106
- h5: '1.25rem',
107
- h6: '1rem',
108
- label: '0.875rem',
109
- 'subheading-large': '1.25rem',
110
- 'subheading-medium': '1rem',
111
- 'subheading-small': '0.875rem',
112
- },
113
- weight: {
114
- bold: '700',
115
- light: '300',
116
- medium: '500',
117
- normal: '400',
118
- semibold: '600',
119
- },
120
- },
121
- palette: {
122
- categorical: {
123
- '1': '#55BDC5',
124
- '10': '#BF732D',
125
- '11': '#478A6E',
126
- '12': '#ADE86B',
127
- '2': '#4D49CB',
128
- '3': '#DC8B39',
129
- '4': '#C9458D',
130
- '5': '#8E8CF3',
131
- '6': '#78DE7C',
132
- '7': '#3F80E3',
133
- '8': '#673FAB',
134
- '9': '#DBBF40',
135
- },
136
- dark: {
137
- danger: {
138
- bg: {
139
- strong: '#ffb8c4',
140
- weak: '68, 61, 72',
141
- },
142
- border: {
143
- strong: '#ffb8c4',
144
- weak: '114, 91, 103',
145
- },
146
- hover: {
147
- strong: '#ff668a',
148
- weak: 'rgba(255, 102, 138,0.08)',
149
- },
150
- icon: '#ffb8c4',
151
- pressed: {
152
- strong: '#ff668a',
153
- weak: 'rgba(255, 102, 138,0.12)',
154
- },
155
- text: '#ffb8c4',
156
- },
157
- neutral: {
158
- bg: {
159
- default: '#151E29',
160
- strong: '45, 53, 63',
161
- strongest: '#FFFFFF',
162
- weak: '29, 38, 49',
163
- },
164
- border: {
165
- strong: '#717780',
166
- weak: '37, 47, 59',
167
- },
168
- hover: 'rgba(196, 200, 205,0.1)',
169
- icon: '#C4C8CD',
170
- pressed: 'rgba(196, 200, 205,0.2)',
171
- text: {
172
- default: '#F5F7FA',
173
- inverse: '#151E29',
174
- weak: '#C4C8CD',
175
- weaker: '#B2B7BD',
176
- weakest: '#717780',
177
- },
178
- },
179
- primary: {
180
- bg: {
181
- strong: '#a3e2ff',
182
- weak: '49, 69, 84',
183
- },
184
- border: {
185
- strong: '#a3e2ff',
186
- weak: '78, 108, 126',
187
- },
188
- focus: '#7ad1ff',
189
- hover: {
190
- strong: '#7ad1ff',
191
- weak: 'rgba(122, 209, 255,0.08)',
192
- },
193
- icon: '#a3e2ff',
194
- pressed: {
195
- strong: '#7ad1ff',
196
- weak: 'rgba(122, 209, 255,0.12)',
197
- },
198
- text: '#a3e2ff',
199
- },
200
- success: {
201
- bg: {
202
- strong: '#98EDCB',
203
- weak: '47, 71, 73',
204
- },
205
- border: {
206
- strong: '#98EDCB',
207
- weak: '73, 113, 106',
208
- },
209
- icon: '#98EDCB',
210
- text: '#98EDCB',
211
- },
212
- warning: {
213
- bg: {
214
- strong: '#FFEA8C',
215
- weak: '68, 71, 60',
216
- },
217
- border: {
218
- strong: '#FFEA8C',
219
- weak: '114, 111, 80',
220
- },
221
- icon: '#FFEA8C',
222
- text: '#FFEA8C',
223
- },
224
- },
225
- graph: {
226
- '1': '#FFDF81',
227
- '10': '#FFC354',
228
- '11': '#DA7294',
229
- '12': '#579380',
230
- '2': '#C990C0',
231
- '3': '#F79767',
232
- '4': '#56C7E4',
233
- '5': '#F16767',
234
- '6': '#D8C7AE',
235
- '7': '#8DCC93',
236
- '8': '#ECB4C9',
237
- '9': '#4D8DDA',
238
- },
239
- light: {
240
- danger: {
241
- bg: {
242
- strong: '#cc254b',
243
- weak: '#ffe6e9',
244
- },
245
- border: {
246
- strong: '#cc254b',
247
- weak: '#ffb8c4',
248
- },
249
- hover: {
250
- strong: '#a1003b',
251
- weak: 'rgba(237,18,82,0.08)',
252
- },
253
- icon: '#cc254b',
254
- pressed: {
255
- strong: '#7a0031',
256
- weak: 'rgba(237,18,82,0.12)',
257
- },
258
- text: '#cc254b',
259
- },
260
- neutral: {
261
- bg: {
262
- default: '#F5F7FA',
263
- strong: '#E6E9EE',
264
- strongest: '#535B66',
265
- weak: '#FFFFFF',
266
- },
267
- border: {
268
- strong: '#C4C8CD',
269
- weak: '#EEF1F6',
270
- },
271
- hover: 'rgba(113,119,128,0.1)',
272
- icon: '#535B66',
273
- pressed: 'rgba(113,119,128,0.2)',
274
- text: {
275
- default: '#151E29',
276
- inverse: '#FFFFFF',
277
- weak: '#535B66',
278
- weaker: '#717780',
279
- weakest: '#B2B7BD',
280
- },
281
- },
282
- primary: {
283
- bg: {
284
- strong: '#006FD6',
285
- weak: '#e6f8ff',
286
- },
287
- border: {
288
- strong: '#006FD6',
289
- weak: '#7ad1ff',
290
- },
291
- focus: '#018bff',
292
- hover: {
293
- strong: '#0056b3',
294
- weak: 'rgba(1,139,255,0.08)',
295
- },
296
- icon: '#006FD6',
297
- pressed: {
298
- strong: '#004092',
299
- weak: 'rgba(1,139,255,0.12)',
300
- },
301
- text: '#006FD6',
302
- },
303
- success: {
304
- bg: {
305
- strong: '#327D60',
306
- weak: '#E1FAEF',
307
- },
308
- border: {
309
- strong: '#327D60',
310
- weak: '#98EDCB',
311
- },
312
- icon: '#327D60',
313
- text: '#327D60',
314
- },
315
- warning: {
316
- bg: {
317
- strong: '#966c2e',
318
- weak: '#FFFBDE',
319
- },
320
- border: {
321
- strong: '#966c2e',
322
- weak: '#FFEA8C',
323
- },
324
- icon: '#966c2e',
325
- text: '#966c2e',
326
- },
327
- },
328
- },
329
- space: {
330
- '0': '0px',
331
- '1': '1px',
332
- '10': '64px',
333
- '11': '96px',
334
- '12': '128px',
335
- '13': '320px',
336
- '2': '2px',
337
- '3': '4px',
338
- '4': '8px',
339
- '5': '12px',
340
- '6': '16px',
341
- '7': '24px',
342
- '8': '32px',
343
- '9': '48px',
344
- },
345
- transitions: {
346
- default: 'all 100ms cubic-bezier(0.420, 0.000, 0.580, 1.000)',
347
- stripped: '100ms cubic-bezier(0.420, 0.000, 0.580, 1.000)',
348
- values: {
349
- duration: {
350
- default: '100ms',
351
- },
352
- properties: {
353
- default: 'all',
354
- },
355
- 'timing-function': {
356
- default: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',
357
- },
358
- },
359
- },
360
- zIndex: {
361
- '0': 0,
362
- '10': 10,
363
- '20': 20,
364
- '30': 30,
365
- '40': 40,
366
- '50': 50,
367
- '60': 60,
368
- alias: {
369
- banner: 20,
370
- blanket: 30,
371
- modal: 60,
372
- overlay: 10,
373
- popover: 40,
374
- tooltip: 50,
375
- },
376
- auto: 'auto',
377
- deep: -999999,
378
- },
379
- };