datajunction-ui 0.0.1-a1

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 (154) hide show
  1. package/.babel-plugin-macrosrc.js +5 -0
  2. package/.env +3 -0
  3. package/.eslintrc.js +20 -0
  4. package/.gitattributes +201 -0
  5. package/.husky/pre-commit +6 -0
  6. package/.nvmrc +1 -0
  7. package/.prettierignore +6 -0
  8. package/.prettierrc +9 -0
  9. package/.stylelintrc +7 -0
  10. package/LICENSE +22 -0
  11. package/Makefile +3 -0
  12. package/README.md +10 -0
  13. package/dj-logo.svg +10 -0
  14. package/internals/testing/loadable.mock.tsx +6 -0
  15. package/package.json +189 -0
  16. package/public/favicon.ico +0 -0
  17. package/public/index.html +26 -0
  18. package/public/manifest.json +15 -0
  19. package/public/robots.txt +3 -0
  20. package/src/__tests__/reportWebVitals.test.jsx +44 -0
  21. package/src/app/__tests__/__snapshots__/index.test.tsx.snap +9 -0
  22. package/src/app/__tests__/index.test.tsx +14 -0
  23. package/src/app/components/DeleteNode.jsx +55 -0
  24. package/src/app/components/ListGroupItem.jsx +24 -0
  25. package/src/app/components/NamespaceHeader.jsx +31 -0
  26. package/src/app/components/QueryInfo.jsx +77 -0
  27. package/src/app/components/Tab.jsx +25 -0
  28. package/src/app/components/ToggleSwitch.jsx +20 -0
  29. package/src/app/components/__tests__/DeleteNode.test.jsx +53 -0
  30. package/src/app/components/__tests__/ListGroupItem.test.tsx +16 -0
  31. package/src/app/components/__tests__/NamespaceHeader.test.jsx +14 -0
  32. package/src/app/components/__tests__/QueryInfo.test.jsx +55 -0
  33. package/src/app/components/__tests__/Tab.test.jsx +27 -0
  34. package/src/app/components/__tests__/ToggleSwitch.test.jsx +43 -0
  35. package/src/app/components/__tests__/__snapshots__/ListGroupItem.test.tsx.snap +29 -0
  36. package/src/app/components/__tests__/__snapshots__/NamespaceHeader.test.jsx.snap +47 -0
  37. package/src/app/components/djgraph/Collapse.jsx +46 -0
  38. package/src/app/components/djgraph/DJNode.jsx +89 -0
  39. package/src/app/components/djgraph/DJNodeColumns.jsx +71 -0
  40. package/src/app/components/djgraph/DJNodeDimensions.jsx +75 -0
  41. package/src/app/components/djgraph/LayoutFlow.jsx +104 -0
  42. package/src/app/components/djgraph/__tests__/Collapse.test.jsx +51 -0
  43. package/src/app/components/djgraph/__tests__/DJNode.test.tsx +24 -0
  44. package/src/app/components/djgraph/__tests__/DJNodeColumns.test.jsx +83 -0
  45. package/src/app/components/djgraph/__tests__/DJNodeDimensions.test.jsx +118 -0
  46. package/src/app/components/djgraph/__tests__/__snapshots__/DJNode.test.tsx.snap +117 -0
  47. package/src/app/constants.js +2 -0
  48. package/src/app/icons/AlertIcon.jsx +32 -0
  49. package/src/app/icons/CollapsedIcon.jsx +15 -0
  50. package/src/app/icons/DJLogo.jsx +36 -0
  51. package/src/app/icons/DeleteIcon.jsx +21 -0
  52. package/src/app/icons/EditIcon.jsx +18 -0
  53. package/src/app/icons/ExpandedIcon.jsx +15 -0
  54. package/src/app/icons/HorizontalHierarchyIcon.jsx +15 -0
  55. package/src/app/icons/InvalidIcon.jsx +14 -0
  56. package/src/app/icons/LoadingIcon.jsx +14 -0
  57. package/src/app/icons/PythonIcon.jsx +52 -0
  58. package/src/app/icons/TableIcon.jsx +14 -0
  59. package/src/app/icons/ValidIcon.jsx +14 -0
  60. package/src/app/index.tsx +108 -0
  61. package/src/app/pages/AddEditNodePage/FormikSelect.jsx +46 -0
  62. package/src/app/pages/AddEditNodePage/FullNameField.jsx +37 -0
  63. package/src/app/pages/AddEditNodePage/Loadable.jsx +16 -0
  64. package/src/app/pages/AddEditNodePage/NodeQueryField.jsx +89 -0
  65. package/src/app/pages/AddEditNodePage/__tests__/AddEditNodePageFormFailed.test.jsx +103 -0
  66. package/src/app/pages/AddEditNodePage/__tests__/AddEditNodePageFormSuccess.test.jsx +132 -0
  67. package/src/app/pages/AddEditNodePage/__tests__/FormikSelect.test.jsx +75 -0
  68. package/src/app/pages/AddEditNodePage/__tests__/FullNameField.test.jsx +31 -0
  69. package/src/app/pages/AddEditNodePage/__tests__/NodeQueryField.test.jsx +30 -0
  70. package/src/app/pages/AddEditNodePage/__tests__/__snapshots__/AddEditNodePageFormFailed.test.jsx.snap +54 -0
  71. package/src/app/pages/AddEditNodePage/__tests__/__snapshots__/AddEditNodePageFormSuccess.test.jsx.snap +3 -0
  72. package/src/app/pages/AddEditNodePage/__tests__/__snapshots__/index.test.jsx.snap +3 -0
  73. package/src/app/pages/AddEditNodePage/__tests__/index.test.jsx +180 -0
  74. package/src/app/pages/AddEditNodePage/index.jsx +396 -0
  75. package/src/app/pages/AddEditTagPage/Loadable.jsx +16 -0
  76. package/src/app/pages/AddEditTagPage/__tests__/AddEditTagPage.test.jsx +107 -0
  77. package/src/app/pages/AddEditTagPage/index.jsx +132 -0
  78. package/src/app/pages/LoginPage/LoginForm.jsx +124 -0
  79. package/src/app/pages/LoginPage/SignupForm.jsx +156 -0
  80. package/src/app/pages/LoginPage/__tests__/index.test.jsx +97 -0
  81. package/src/app/pages/LoginPage/assets/sign-in-with-github.png +0 -0
  82. package/src/app/pages/LoginPage/assets/sign-in-with-google.png +0 -0
  83. package/src/app/pages/LoginPage/index.jsx +17 -0
  84. package/src/app/pages/NamespacePage/AddNamespacePopover.jsx +85 -0
  85. package/src/app/pages/NamespacePage/Explorer.jsx +57 -0
  86. package/src/app/pages/NamespacePage/Loadable.jsx +16 -0
  87. package/src/app/pages/NamespacePage/__tests__/index.test.jsx +217 -0
  88. package/src/app/pages/NamespacePage/index.jsx +199 -0
  89. package/src/app/pages/NodePage/AddBackfillPopover.jsx +166 -0
  90. package/src/app/pages/NodePage/AddMaterializationPopover.jsx +161 -0
  91. package/src/app/pages/NodePage/ClientCodePopover.jsx +46 -0
  92. package/src/app/pages/NodePage/EditColumnPopover.jsx +116 -0
  93. package/src/app/pages/NodePage/LinkDimensionPopover.jsx +149 -0
  94. package/src/app/pages/NodePage/Loadable.jsx +16 -0
  95. package/src/app/pages/NodePage/NodeColumnTab.jsx +200 -0
  96. package/src/app/pages/NodePage/NodeGraphTab.jsx +112 -0
  97. package/src/app/pages/NodePage/NodeHistory.jsx +212 -0
  98. package/src/app/pages/NodePage/NodeInfoTab.jsx +212 -0
  99. package/src/app/pages/NodePage/NodeLineageTab.jsx +84 -0
  100. package/src/app/pages/NodePage/NodeMaterializationTab.jsx +233 -0
  101. package/src/app/pages/NodePage/NodeSQLTab.jsx +82 -0
  102. package/src/app/pages/NodePage/NodeStatus.jsx +28 -0
  103. package/src/app/pages/NodePage/NodesWithDimension.jsx +42 -0
  104. package/src/app/pages/NodePage/PartitionColumnPopover.jsx +153 -0
  105. package/src/app/pages/NodePage/__tests__/AddBackfillPopover.test.jsx +47 -0
  106. package/src/app/pages/NodePage/__tests__/ClientCodePopover.test.jsx +49 -0
  107. package/src/app/pages/NodePage/__tests__/EditColumnPopover.test.jsx +148 -0
  108. package/src/app/pages/NodePage/__tests__/LinkDimensionPopover.test.jsx +165 -0
  109. package/src/app/pages/NodePage/__tests__/NodeGraphTab.test.jsx +591 -0
  110. package/src/app/pages/NodePage/__tests__/NodeLineageTab.test.jsx +57 -0
  111. package/src/app/pages/NodePage/__tests__/NodePage.test.jsx +757 -0
  112. package/src/app/pages/NodePage/__tests__/NodeWithDimension.test.jsx +175 -0
  113. package/src/app/pages/NodePage/__tests__/__snapshots__/NodePage.test.jsx.snap +403 -0
  114. package/src/app/pages/NodePage/index.jsx +210 -0
  115. package/src/app/pages/NotFoundPage/Loadable.tsx +14 -0
  116. package/src/app/pages/NotFoundPage/__tests__/index.test.jsx +16 -0
  117. package/src/app/pages/NotFoundPage/index.tsx +23 -0
  118. package/src/app/pages/RegisterTablePage/Loadable.jsx +16 -0
  119. package/src/app/pages/RegisterTablePage/__tests__/RegisterTablePage.test.jsx +110 -0
  120. package/src/app/pages/RegisterTablePage/__tests__/__snapshots__/RegisterTablePage.test.jsx.snap +37 -0
  121. package/src/app/pages/RegisterTablePage/index.jsx +142 -0
  122. package/src/app/pages/Root/Loadable.tsx +14 -0
  123. package/src/app/pages/Root/__tests__/index.test.jsx +77 -0
  124. package/src/app/pages/Root/assets/dj-logo.png +0 -0
  125. package/src/app/pages/Root/index.tsx +70 -0
  126. package/src/app/pages/SQLBuilderPage/Loadable.jsx +16 -0
  127. package/src/app/pages/SQLBuilderPage/__tests__/index.test.jsx +173 -0
  128. package/src/app/pages/SQLBuilderPage/index.jsx +390 -0
  129. package/src/app/pages/TagPage/Loadable.jsx +16 -0
  130. package/src/app/pages/TagPage/__tests__/TagPage.test.jsx +70 -0
  131. package/src/app/pages/TagPage/index.jsx +79 -0
  132. package/src/app/providers/djclient.jsx +5 -0
  133. package/src/app/services/DJService.js +665 -0
  134. package/src/app/services/__tests__/DJService.test.jsx +804 -0
  135. package/src/index.tsx +48 -0
  136. package/src/mocks/mockNodes.jsx +1430 -0
  137. package/src/react-app-env.d.ts +4 -0
  138. package/src/reportWebVitals.ts +15 -0
  139. package/src/setupTests.ts +36 -0
  140. package/src/styles/dag.css +228 -0
  141. package/src/styles/index.css +1083 -0
  142. package/src/styles/loading.css +34 -0
  143. package/src/styles/login.css +81 -0
  144. package/src/styles/node-creation.scss +197 -0
  145. package/src/styles/styles.scss +44 -0
  146. package/src/styles/styles.scss.d.ts +9 -0
  147. package/src/utils/__tests__/__snapshots__/loadable.test.tsx.snap +17 -0
  148. package/src/utils/__tests__/loadable.test.tsx +53 -0
  149. package/src/utils/__tests__/request.test.ts +82 -0
  150. package/src/utils/form.jsx +23 -0
  151. package/src/utils/loadable.tsx +30 -0
  152. package/src/utils/request.ts +54 -0
  153. package/tsconfig.json +34 -0
  154. package/webpack.config.js +118 -0
@@ -0,0 +1,1083 @@
1
+ @import url('https://fonts.googleapis.com/css?family=Jost');
2
+ @import url('https://fonts.googleapis.com/css2?family=Raleway:wght@300;600&display=swap');
3
+ @import url('https://fonts.googleapis.com/css?family=Lato');
4
+
5
+ body {
6
+ margin: 0;
7
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell,
8
+ Noto Sans, sans-serif, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial,
9
+ sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
10
+ -webkit-font-smoothing: antialiased;
11
+ -moz-osx-font-smoothing: grayscale;
12
+ }
13
+ *,
14
+ ::after,
15
+ ::before {
16
+ box-sizing: border-box;
17
+ }
18
+ div {
19
+ display: block;
20
+ }
21
+ h2 {
22
+ font-family: 'Raleway', system-ui;
23
+ font-weight: 300;
24
+ }
25
+ h2 b {
26
+ font-weight: 600;
27
+ }
28
+ p {
29
+ display: block;
30
+ margin-block-start: 1em;
31
+ margin-block-end: 1em;
32
+ margin-inline-start: 0px;
33
+ margin-inline-end: 0px;
34
+ width: 100%;
35
+ }
36
+ a,
37
+ a:hover {
38
+ text-decoration: none;
39
+ color: #005c72;
40
+ font-family: 'Montserrat', sans-serif;
41
+ }
42
+ a:hover {
43
+ text-decoration: underline;
44
+ }
45
+ button.nav-link {
46
+ background: none;
47
+ color: #007acc;
48
+ border: inherit;
49
+ padding: inherit;
50
+ font: inherit;
51
+ cursor: pointer;
52
+ outline: inherit;
53
+ }
54
+ code {
55
+ font-family: Consolas, source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
56
+ monospace;
57
+ }
58
+ .link-body-emphasis {
59
+ font-weight: normal;
60
+ color: #5e5e5e;
61
+ text-decoration: none;
62
+ }
63
+
64
+ .link-body-emphasis:hover {
65
+ color: #3f4254;
66
+ }
67
+
68
+ .link-table {
69
+ color: #3b506c;
70
+ font-weight: normal;
71
+ text-decoration: none;
72
+ }
73
+ .breadcrumb-chevron {
74
+ --bs-breadcrumb-divider: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%236c757d'%3E%3Cpath fill-rule='evenodd' d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E");
75
+ gap: 0.5rem;
76
+ }
77
+ .breadcrumb-item + .breadcrumb-item::before {
78
+ float: left;
79
+ padding-right: var(--bs-breadcrumb-item-padding-x);
80
+ color: var(--bs-breadcrumb-divider-color);
81
+ content: var(--bs-breadcrumb-divider, '/');
82
+ }
83
+ .rounded-3 {
84
+ border-radius: 0.5rem !important;
85
+ }
86
+
87
+ .bg-body-tertiary {
88
+ --bs-bg-opacity: 1;
89
+ background-color: rgba(248, 249, 250, 1) !important;
90
+ }
91
+ .p-3 {
92
+ padding: 1rem !important;
93
+ }
94
+ .fw-semibold {
95
+ font-weight: 600 !important;
96
+ }
97
+ .breadcrumb {
98
+ --bs-breadcrumb-padding-x: 0;
99
+ --bs-breadcrumb-padding-y: 0;
100
+ --bs-breadcrumb-margin-bottom: 1rem;
101
+ --bs-breadcrumb-bg: #ffffff;
102
+ --bs-breadcrumb-border-radius: 0.5rem;
103
+ --bs-breadcrumb-divider-color: rgba(33, 37, 41, 0.75);
104
+ --bs-breadcrumb-item-padding-x: 0.5rem;
105
+ --bs-breadcrumb-item-active-color: rgba(33, 37, 41, 0.75);
106
+ display: flex;
107
+ flex-wrap: wrap;
108
+ padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);
109
+ margin-bottom: var(--bs-breadcrumb-margin-bottom);
110
+ list-style: none;
111
+ line-height: 1em;
112
+ background-color: var(--bs-breadcrumb-bg);
113
+ border-radius: var(--bs-breadcrumb-border-radius);
114
+ }
115
+ dl,
116
+ ol,
117
+ ul {
118
+ margin-top: 0;
119
+ margin-bottom: 1rem;
120
+ }
121
+
122
+ .list-group {
123
+ width: 100%;
124
+ max-width: fit-content;
125
+ border-radius: 0.375rem;
126
+ }
127
+ .list-group-item {
128
+ position: relative;
129
+ display: block;
130
+ padding: 0.5rem 1rem;
131
+ color: #212529;
132
+ text-decoration: none;
133
+ background-color: #ffffff;
134
+ min-width: fit-content;
135
+ }
136
+ .list-group-item + .list-group-item {
137
+ border-top-width: 0;
138
+ }
139
+ .list-group-item:first-child {
140
+ border-top-left-radius: inherit;
141
+ border-top-right-radius: inherit;
142
+ }
143
+ .li {
144
+ cursor: pointer;
145
+ }
146
+ .raw-node-list {
147
+ flex: 0 0 50px;
148
+ }
149
+ .d-flex {
150
+ display: flex !important;
151
+ }
152
+ .gap-2 {
153
+ gap: 0.5rem !important;
154
+ }
155
+ .justify-content-between {
156
+ justify-content: space-between !important;
157
+ }
158
+ .w-100 {
159
+ width: 100% !important;
160
+ }
161
+ .mb-0 {
162
+ margin-bottom: 0 !important;
163
+ }
164
+ .h6,
165
+ h6 {
166
+ margin: 0;
167
+ font-family: 'Jost';
168
+ text-transform: uppercase;
169
+ font-size: 0.8125rem;
170
+ font-weight: 600;
171
+ letter-spacing: 0.08em;
172
+ color: #95aac9;
173
+ }
174
+ .larger {
175
+ font-size: 120%;
176
+ }
177
+ .py-3 {
178
+ padding-top: 1rem !important;
179
+ padding-bottom: 1rem !important;
180
+ }
181
+ .align-items-center {
182
+ align-items: center !important;
183
+ }
184
+ .p-4 {
185
+ padding: 1.5rem !important;
186
+ }
187
+ .flex-md-row {
188
+ flex-direction: row !important;
189
+ }
190
+ .py-md-5 {
191
+ padding-top: 3rem !important;
192
+ padding-bottom: 3rem !important;
193
+ }
194
+ .badge {
195
+ vertical-align: middle;
196
+ }
197
+ .badge.bg-secondary-soft {
198
+ color: #6e84a3;
199
+ }
200
+ .badge.bg-secondary-error {
201
+ color: #6e84a3;
202
+ background-color: #fad7dd;
203
+ }
204
+ .badge.rounded-pill {
205
+ padding-right: 0.6em;
206
+ padding-left: 0.6em;
207
+ }
208
+ .bg-secondary-soft {
209
+ background-color: #e2e6ed !important;
210
+ }
211
+ .rounded-pill {
212
+ border-radius: 50rem !important;
213
+ }
214
+ .badge {
215
+ --bs-badge-padding-x: 0.5em;
216
+ --bs-badge-padding-y: 0.33em;
217
+ --bs-badge-font-size: 76%;
218
+ --bs-badge-font-weight: 400;
219
+ --bs-badge-color: #fff;
220
+ --bs-badge-border-radius: 0.375rem;
221
+ display: inline-block;
222
+ padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x);
223
+ font-size: var(--bs-badge-font-size);
224
+ font-weight: var(--bs-badge-font-weight);
225
+ line-height: 1;
226
+ color: var(--bs-badge-color);
227
+ text-align: center;
228
+ white-space: nowrap;
229
+ vertical-align: baseline;
230
+ border-radius: var(--bs-badge-border-radius);
231
+ }
232
+ table {
233
+ display: table;
234
+ border-collapse: collapse;
235
+ box-sizing: border-box;
236
+ text-indent: initial;
237
+ border-spacing: 2px;
238
+ border-color: gray;
239
+ caption-side: bottom;
240
+ }
241
+ tr {
242
+ display: table-row;
243
+ vertical-align: inherit;
244
+ border-color: inherit;
245
+ }
246
+ .card-table {
247
+ margin-bottom: 0;
248
+ width: 100%;
249
+ font-size: 0.8125rem;
250
+ color: #12263f;
251
+ vertical-align: top;
252
+ border-color: #12263f;
253
+ }
254
+
255
+ .card {
256
+ box-shadow: 0 0.75rem 1.5rem rgba(18, 38, 63, 0.03);
257
+ position: relative;
258
+ display: flex;
259
+ flex-direction: column;
260
+ min-width: 0;
261
+ word-wrap: break-word;
262
+ background-color: #fff;
263
+ background-clip: border-box;
264
+ border-radius: 1rem;
265
+ margin: 2rem;
266
+ padding-bottom: 2rem;
267
+ }
268
+
269
+ .card-light-shadow {
270
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
271
+ transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
272
+ padding: 1rem;
273
+ }
274
+
275
+ .sidebar {
276
+ position: sticky;
277
+ top: 0;
278
+ left: 0;
279
+ }
280
+
281
+ .table-responsive,
282
+ .table-vertical {
283
+ overflow-x: auto;
284
+ -webkit-overflow-scrolling: touch;
285
+ display: grid;
286
+ grid-template-columns: auto auto auto;
287
+ grid-gap: 8px;
288
+ padding: 8px;
289
+ }
290
+ .table-vertical {
291
+ display: contents;
292
+ }
293
+ .table > thead {
294
+ vertical-align: bottom;
295
+ }
296
+
297
+ tbody,
298
+ td,
299
+ tfoot,
300
+ th,
301
+ thead,
302
+ tr {
303
+ border: 0 solid;
304
+ border-color: inherit;
305
+ }
306
+
307
+ thead {
308
+ display: table-header-group;
309
+ vertical-align: middle;
310
+ border-color: inherit;
311
+ }
312
+
313
+ tr {
314
+ display: table-row;
315
+ vertical-align: inherit;
316
+ border-color: inherit;
317
+ }
318
+
319
+ .card-table tbody td:first-child,
320
+ .card-table thead th:first-child {
321
+ padding-left: 1.5rem !important;
322
+ }
323
+ .table thead th {
324
+ text-transform: uppercase;
325
+ font-size: 0.8125rem;
326
+ font-weight: 600;
327
+ letter-spacing: 0.08em;
328
+ color: #95aac9;
329
+ font-family: 'Jost';
330
+ }
331
+
332
+ .card-table thead th {
333
+ border-top-width: 0;
334
+ }
335
+ .table thead th {
336
+ font-size: 0.625rem;
337
+ }
338
+ .table thead th,
339
+ td,
340
+ tbody th {
341
+ vertical-align: middle;
342
+ text-align: left;
343
+ }
344
+ .table [data-sort],
345
+ .table-nowrap td,
346
+ .table-nowrap th {
347
+ white-space: nowrap;
348
+ }
349
+ .table thead th {
350
+ background-color: #f9fbfd;
351
+ text-transform: uppercase;
352
+ font-size: 0.8125rem;
353
+ font-weight: 600;
354
+ letter-spacing: 0.08em;
355
+ color: #95aac9;
356
+ padding: 1rem;
357
+ }
358
+ .text-start {
359
+ text-align: left !important;
360
+ }
361
+ .card-inner-table {
362
+ margin-top: 2rem;
363
+ }
364
+ .card-inner-table thead th {
365
+ background-color: #fff;
366
+ }
367
+ .table td,
368
+ .table th {
369
+ border-top: 1px solid #edf2f9;
370
+ border-bottom: 0;
371
+ padding: 1rem;
372
+ max-width: 25rem;
373
+ }
374
+ .card-inner-table td,
375
+ .card-inner-table th {
376
+ border-top: 1px dashed #edf2f9;
377
+ }
378
+ .mid {
379
+ flex: 0 0 auto;
380
+ width: 100%;
381
+ }
382
+ .table > :not(caption) > * > * {
383
+ background-color: transparent;
384
+ border-bottom-width: 1px;
385
+ box-shadow: inset 0 0 0 9999px transparent;
386
+ }
387
+ .node_type_creation_heading {
388
+ text-transform: capitalize;
389
+ padding: 5px;
390
+ }
391
+
392
+ /* Nodes */
393
+ .node_type {
394
+ background-color: #fad7dd !important;
395
+ color: #e63757;
396
+ text-transform: uppercase;
397
+ vertical-align: middle;
398
+ padding: 0.44rem;
399
+ border-radius: 0.375rem;
400
+ word-wrap: break-word;
401
+ white-space: break-spaces;
402
+ margin-right: 0.5rem;
403
+ }
404
+
405
+ /* Nodes */
406
+ .node_type__source {
407
+ font-family: 'Jost';
408
+ background-color: #ccf7e5 !important;
409
+ color: #00b368;
410
+ }
411
+ .react-flow__node .node_type__source {
412
+ background-color: #7eb46150 !important;
413
+ color: #7eb461;
414
+ }
415
+
416
+ .node_type__transform {
417
+ font-family: 'Jost';
418
+ background-color: #ccefff !important;
419
+ color: #0063b4;
420
+ }
421
+
422
+ .node_type__transform:hover {
423
+ background-color: #ccefff !important;
424
+ }
425
+ .react-flow__node .node_type__transform {
426
+ background-color: #6daaa750 !important;
427
+ color: #6daaa7;
428
+ }
429
+
430
+ .node_type__metric {
431
+ font-family: 'Jost';
432
+ background-color: #fad7dd !important;
433
+ color: #a2283e;
434
+ }
435
+ .react-flow__node .node_type__metric {
436
+ background-color: #a27e8650 !important;
437
+ color: #a27e86;
438
+ }
439
+
440
+ .node_type__dimension {
441
+ font-family: 'Jost';
442
+ background-color: #ffefd0 !important;
443
+ color: #a96621;
444
+ }
445
+ .react-flow__node .node_type__dimension {
446
+ background-color: #cf7d2950 !important;
447
+ color: #cf7d29;
448
+ }
449
+
450
+ .node_type__cube {
451
+ font-family: 'Jost';
452
+ background-color: #dbafff !important;
453
+ color: #580076;
454
+ }
455
+
456
+ .node_type__blank {
457
+ font-family: 'Jost';
458
+ background-color: #ffffff !important;
459
+ color: #a96621;
460
+ }
461
+ .entity__tag {
462
+ font-family: 'Jost';
463
+ background-color: #afd4ff !important;
464
+ color: #002176;
465
+ }
466
+ .react-flow__node .node_type__cube {
467
+ background-color: #c2180750 !important;
468
+ color: #c2180750;
469
+ }
470
+
471
+ .history_type__create {
472
+ background-color: #ccf7e5 !important;
473
+ color: #00b368;
474
+ }
475
+
476
+ .history_type__delete {
477
+ background-color: #ffc8c8 !important;
478
+ color: #9b5a5a;
479
+ }
480
+
481
+ .history_type__restore {
482
+ background-color: #ccf7e5 !important;
483
+ color: #00b368;
484
+ }
485
+
486
+ .history_type__modify {
487
+ background-color: #ffefd0 !important;
488
+ color: #a96621;
489
+ }
490
+
491
+ .history_type__link {
492
+ background-color: #a8a8a8 !important;
493
+ color: #855e5e;
494
+ }
495
+
496
+ .history_type__tag {
497
+ background-color: #a8a8a8 !important;
498
+ color: #855e5e;
499
+ }
500
+
501
+ .history_type__set_attribute {
502
+ background-color: #e6f5ff !important;
503
+ color: #487c8c;
504
+ }
505
+
506
+ .history_type__status_change {
507
+ background-color: #ffe9db !important;
508
+ color: #573d3d;
509
+ }
510
+
511
+ .partition_value {
512
+ border: solid #00b368 0.025em;
513
+ background-color: #ccf7e525;
514
+ margin: 0.25rem;
515
+ }
516
+
517
+ .partition_value_highlight {
518
+ border: solid #5c3b8f 0.025em;
519
+ color: #5c3b8f;
520
+ background-color: #5c3b8f25;
521
+ margin: 0.25rem;
522
+ }
523
+
524
+ .dimension_option {
525
+ border: solid #5c3b8f 0.025em;
526
+ color: #5c3b8f;
527
+ background-color: #5c3b8f25;
528
+ margin: 0.25rem;
529
+ font-size: 16px;
530
+ }
531
+
532
+ .dimension_option_subheading {
533
+ background-color: #ffffff !important;
534
+ color: #580076;
535
+ padding: 0.4rem;
536
+ margin: 0.4rem;
537
+ font-size: 12px;
538
+ }
539
+
540
+ .upstreams {
541
+ width: 260px;
542
+ display: flex;
543
+ }
544
+ .upstream_tables {
545
+ width: 260px;
546
+ font-size: 14px;
547
+ word-wrap: break-word;
548
+ padding: 12px;
549
+ }
550
+
551
+ .bi-table {
552
+ }
553
+
554
+ .name {
555
+ display: block;
556
+ flex-grow: 1;
557
+ line-height: 18px;
558
+ }
559
+
560
+ .entity-info {
561
+ color: #757575;
562
+ font-size: 12px;
563
+ padding: 0.25rem;
564
+ flex-grow: 1;
565
+ line-height: 24px;
566
+ letter-spacing: normal;
567
+ }
568
+
569
+ .node_name {
570
+ word-wrap: break-word;
571
+ max-width: 200px;
572
+ }
573
+
574
+ .cron {
575
+ background-color: rgb(255 215 215) !important;
576
+ color: #b34b00;
577
+ font-size: 1rem;
578
+ }
579
+ .cron-description {
580
+ text-transform: lowercase;
581
+ color: #777777;
582
+ }
583
+
584
+ .status__valid {
585
+ color: #00b368;
586
+ }
587
+
588
+ .status__invalid {
589
+ color: #b34b00;
590
+ }
591
+
592
+ .status {
593
+ text-transform: capitalize;
594
+ vertical-align: middle;
595
+ text-align: center;
596
+ }
597
+
598
+ .align-items-center {
599
+ align-items: center !important;
600
+ }
601
+ .col {
602
+ flex: 0 1;
603
+ padding: 1.5rem;
604
+ }
605
+
606
+ .col.active {
607
+ padding-bottom: 1.15rem;
608
+ color: #a1a5b7;
609
+ border-bottom: solid 0.2em #2c7be5;
610
+ text-align: center;
611
+ }
612
+
613
+ .row > * {
614
+ flex-shrink: 0;
615
+ width: 100%;
616
+ max-width: 100%;
617
+ padding-right: calc(var(--bs-gutter-x) * 0.5);
618
+ padding-left: calc(var(--bs-gutter-x) * 0.5);
619
+ margin-top: var(--bs-gutter-y);
620
+ }
621
+ .row {
622
+ --bs-gutter-x: 1.5rem;
623
+ --bs-gutter-y: 0;
624
+ display: flex;
625
+ flex-wrap: wrap;
626
+ }
627
+
628
+ .header {
629
+ --bs-header-margin-bottom: 1.5rem;
630
+ --bs-header-spacing-y: 1.5rem;
631
+ --bs-header-body-border-width: 1px;
632
+ --bs-header-body-border-color: #e3ebf6;
633
+ --bs-header-body-border-color-dark: rgba(227, 235, 246, 0.1);
634
+ height: 90px;
635
+ transition: none;
636
+ display: flex;
637
+ align-items: center;
638
+ background-color: transparent;
639
+ }
640
+ *,
641
+ :after,
642
+ :before {
643
+ box-sizing: border-box;
644
+ }
645
+ .header-tabs {
646
+ margin-bottom: calc(var(--bs-header-spacing-y) * -1);
647
+ border-bottom-width: 0;
648
+ }
649
+ .nav-tabs .nav-item:first-child {
650
+ margin-left: 0;
651
+ }
652
+ .nav-tabs .nav-item {
653
+ margin-left: 0.75rem;
654
+ margin-right: 0.75rem;
655
+ }
656
+ .nav-tabs .nav-item.show .nav-link,
657
+ .nav-tabs .nav-link.active {
658
+ color: #12263f;
659
+ background-color: transparent;
660
+ border-color: #2c7be5;
661
+ }
662
+ .nav-link {
663
+ display: block;
664
+ color: #a1a5b7;
665
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
666
+ border-color 0.15s ease-in-out;
667
+ }
668
+ .nav-overflow {
669
+ display: flex;
670
+ flex-wrap: nowrap;
671
+ overflow-x: auto;
672
+ padding-bottom: 1px;
673
+ }
674
+
675
+ pre {
676
+ border-radius: 1rem;
677
+ padding-right: 2rem;
678
+ }
679
+
680
+ .container {
681
+ max-width: 1320px;
682
+ width: 100%;
683
+ padding-left: 30px !important;
684
+ padding-right: 30px !important;
685
+ }
686
+
687
+ .logo {
688
+ margin-right: 3.75rem !important;
689
+ flex-grow: 0 !important;
690
+ }
691
+ .logo img {
692
+ padding: 15px;
693
+ margin-bottom: 0.2rem;
694
+ }
695
+
696
+ .menu-lg-row > .menu-item {
697
+ display: flex;
698
+ align-items: center;
699
+ }
700
+ .menu-item {
701
+ display: block;
702
+ padding: 0.15rem 0;
703
+ }
704
+ .me-lg-2 {
705
+ margin-right: 0.5rem !important;
706
+ }
707
+ .menu,
708
+ .menu-wrapper {
709
+ display: flex;
710
+ padding: 0;
711
+ margin: 0;
712
+ list-style: none;
713
+ }
714
+ .menu-item .menu-link {
715
+ cursor: pointer;
716
+ align-items: center;
717
+ flex: 0 0 100%;
718
+ padding: 0.65rem 1rem;
719
+ transition: none;
720
+ outline: none !important;
721
+ font-family: Inter, Helvetica, sans-serif;
722
+ }
723
+ .menu-title a {
724
+ color: #7e8299;
725
+ cursor: pointer;
726
+ }
727
+ .menu-title a:hover {
728
+ color: #3f4254;
729
+ cursor: pointer;
730
+ }
731
+
732
+ .node__header,
733
+ .mid {
734
+ background-color: #f4f4f4;
735
+ padding-bottom: 2rem;
736
+ }
737
+
738
+ .mid {
739
+ padding-top: 0.4rem;
740
+ }
741
+
742
+ .rounded-box {
743
+ border-radius: 1rem !important;
744
+ background-color: #ffffff;
745
+ max-width: fit-content;
746
+ }
747
+
748
+ .card-header {
749
+ align-items: center;
750
+ margin: 0.5rem;
751
+ margin-left: 0;
752
+ padding: 0 2.25rem 0 2.25rem;
753
+ }
754
+
755
+ .card-header h2 {
756
+ font-family: 'Jost';
757
+ }
758
+
759
+ .text-gray-400 {
760
+ color: #b5b5c3 !important;
761
+ }
762
+
763
+ .filters_attribute {
764
+ width: 30%;
765
+ display: block;
766
+ margin: 0 3rem 3rem 3rem;
767
+ float: left;
768
+ }
769
+
770
+ .switch {
771
+ position: relative;
772
+ display: inline-block;
773
+ width: 40px;
774
+ height: 20px;
775
+ background-color: #eee;
776
+ border-radius: 20px;
777
+ vertical-align: middle;
778
+ }
779
+
780
+ .switch::after {
781
+ content: '';
782
+ position: absolute;
783
+ width: 18px;
784
+ height: 18px;
785
+ border-radius: 50%;
786
+ background-color: white;
787
+ top: 1px;
788
+ left: 1px;
789
+ transition: all 0.3s;
790
+ }
791
+
792
+ .checkbox:checked + .switch::after {
793
+ left: 20px;
794
+ }
795
+ .checkbox:checked + .switch {
796
+ background-color: #7983ff;
797
+ }
798
+
799
+ .checkbox {
800
+ display: none;
801
+ }
802
+
803
+ .button-3 {
804
+ appearance: none;
805
+ border: 1px solid rgba(27, 31, 35, 0.15);
806
+ border-radius: 6px;
807
+ box-shadow: rgba(27, 31, 35, 0.1) 0 1px 0;
808
+ box-sizing: border-box;
809
+ cursor: pointer;
810
+ display: inline-block;
811
+ font-weight: 600;
812
+ line-height: 20px;
813
+ padding: 6px 16px;
814
+ margin: 5px;
815
+ position: relative;
816
+ text-align: center;
817
+ text-decoration: none;
818
+ user-select: none;
819
+ -webkit-user-select: none;
820
+ touch-action: manipulation;
821
+ vertical-align: middle;
822
+ white-space: nowrap;
823
+ }
824
+
825
+ .button-3:focus:not(:focus-visible):not(.focus-visible) {
826
+ box-shadow: none;
827
+ outline: none;
828
+ }
829
+
830
+ .execute-button {
831
+ background-color: #00b368;
832
+ color: #fff;
833
+ }
834
+
835
+ .executing-button {
836
+ background-color: #bbbbbb;
837
+ color: #fff;
838
+ }
839
+
840
+ .neutral-button {
841
+ background-color: #f6f8fa;
842
+ color: #24292f;
843
+ }
844
+ .text-black {
845
+ color: #000000 !important;
846
+ }
847
+
848
+ .cube-element {
849
+ color: #757575;
850
+ font-size: 14px;
851
+ padding: 0.25rem;
852
+ flex-grow: 1;
853
+ display: table;
854
+ line-height: 24px;
855
+ letter-spacing: normal;
856
+ }
857
+ .cube-element .badge {
858
+ margin-left: 0.4rem;
859
+ }
860
+
861
+ .code-button {
862
+ display: inline-flex;
863
+ -webkit-box-align: center;
864
+ align-items: center;
865
+ -webkit-box-pack: center;
866
+ justify-content: center;
867
+ position: relative;
868
+ box-sizing: border-box;
869
+ -webkit-tap-highlight-color: transparent;
870
+ background-color: transparent;
871
+ outline: 0;
872
+ border: 0;
873
+ margin: 0;
874
+ cursor: pointer;
875
+ user-select: none;
876
+ vertical-align: middle;
877
+ appearance: none;
878
+ text-decoration: none;
879
+ text-align: center;
880
+ flex: 0 0 auto;
881
+ font-size: 1.5rem;
882
+ padding: 0;
883
+ border-radius: 50%;
884
+ overflow: visible;
885
+ color: rgba(0, 0, 0, 0.54);
886
+ transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
887
+ }
888
+
889
+ #node-create-code pre {
890
+ padding: 1rem !important;
891
+ max-height: 300px;
892
+ overflow: scroll;
893
+ text-align: left;
894
+ position: absolute;
895
+ max-width: 75%;
896
+ z-index: 1;
897
+ }
898
+
899
+ .popover {
900
+ padding: 1rem 1rem 0.6rem 1rem !important;
901
+ margin-top: 1rem;
902
+ background-color: #ffffff;
903
+ border: 1px solid #c5c5c5;
904
+ border-radius: 10px;
905
+ text-align: left;
906
+ position: absolute;
907
+ min-width: 210px;
908
+ max-width: 100%;
909
+ z-index: 100000;
910
+ }
911
+
912
+ .centerPopover {
913
+ position: absolute !important;
914
+ top: 1%;
915
+ left: 25%;
916
+
917
+ padding: 1rem 1rem 0.6rem 1rem !important;
918
+ margin-top: 1rem;
919
+ border-radius: 10px;
920
+ text-align: left;
921
+ position: absolute;
922
+ min-width: 210px;
923
+ max-width: 100%;
924
+ z-index: 100000;
925
+ background-color: #fff;
926
+ background-clip: padding-box;
927
+ border: 1px solid rgba(0, 0, 0, 0.2);
928
+ -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
929
+ box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
930
+ outline: 0;
931
+ }
932
+
933
+ .centerPopover h2 {
934
+ margin-top: 0;
935
+ margin-bottom: 1rem;
936
+ }
937
+
938
+ .select-name {
939
+ margin-top: 5px;
940
+ padding: 7px 7px;
941
+ width: fit-content;
942
+ border-radius: 4px;
943
+ cursor: default;
944
+ font-size: 0.9125rem;
945
+ color: #95aac9;
946
+ }
947
+
948
+ .select-name:hover {
949
+ background-color: #bdbaba3c;
950
+ }
951
+
952
+ .select-name-highlight {
953
+ font-weight: 600;
954
+ background-color: #bdbaba3c;
955
+ border: 1px solid rgba(94, 94, 94, 0.24);
956
+ }
957
+
958
+ .inactive {
959
+ display: none;
960
+ }
961
+
962
+ .dropdown {
963
+ position: relative;
964
+ display: inline-block;
965
+ float: right;
966
+ }
967
+
968
+ .dropdown-content {
969
+ display: none;
970
+ position: absolute;
971
+ margin-top: 6px;
972
+ box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
973
+ min-width: 115px;
974
+ }
975
+
976
+ .dropdown:hover .dropdown-content {
977
+ display: block;
978
+ }
979
+
980
+ .dropdown-content a:hover {
981
+ text-decoration: none;
982
+ }
983
+
984
+ .dropdown-content a div {
985
+ padding: 12px 16px;
986
+ background-color: #ffffff !important;
987
+ }
988
+
989
+ .dropdown-content a div:hover {
990
+ background-color: #f3eeff !important;
991
+ }
992
+
993
+ .add_node {
994
+ background-color: #5d2f86 !important;
995
+ color: #fff;
996
+ text-transform: none;
997
+ vertical-align: middle;
998
+ padding-right: 1rem;
999
+ padding-left: 1rem;
1000
+ padding-top: 0.5rem;
1001
+ padding-bottom: 0.5rem;
1002
+ font-size: 1rem;
1003
+ border-radius: 0.5rem;
1004
+ word-wrap: break-word;
1005
+ white-space: break-spaces;
1006
+ }
1007
+
1008
+ .add_button {
1009
+ background-color: #f0f8ff !important;
1010
+ color: #24518f;
1011
+ text-transform: uppercase;
1012
+ vertical-align: middle;
1013
+ padding: 0.2rem 0.5rem 0.1rem 0.5rem;
1014
+ border: 1px solid #819bc0;
1015
+ font-size: 1.2rem;
1016
+ border-radius: 0.5rem;
1017
+ word-wrap: break-word;
1018
+ white-space: break-spaces;
1019
+ margin-left: 1rem;
1020
+ }
1021
+
1022
+ .edit_button {
1023
+ background: none;
1024
+ color: inherit;
1025
+ border: none;
1026
+ padding: 0;
1027
+ font: inherit;
1028
+ cursor: pointer;
1029
+ outline: inherit;
1030
+ margin-left: 1rem;
1031
+ }
1032
+
1033
+ .deleteNode {
1034
+ display: inline-block;
1035
+ }
1036
+
1037
+ .tag_value {
1038
+ color: #5c3b8f;
1039
+ background-color: #5c3b8f25;
1040
+ margin: 0.25rem;
1041
+ font-size: 100%;
1042
+ }
1043
+
1044
+ .tag_value:hover {
1045
+ background-color: #5c3b8f50;
1046
+ }
1047
+
1048
+ .modal-backdrop.in {
1049
+ filter: alpha(opacity=50);
1050
+ opacity: 0.5;
1051
+ }
1052
+ .modal-backdrop.fade {
1053
+ filter: alpha(opacity=0);
1054
+ opacity: 0;
1055
+ }
1056
+ .fade.in {
1057
+ opacity: 1;
1058
+ }
1059
+ .modal-backdrop {
1060
+ z-index: 1 !important;
1061
+ }
1062
+ .modal-backdrop {
1063
+ z-index: 1;
1064
+ }
1065
+ .modal-backdrop {
1066
+ position: fixed;
1067
+ top: 0;
1068
+ right: 0;
1069
+ bottom: 0;
1070
+ left: 0;
1071
+ z-index: 1;
1072
+ background-color: #00000075;
1073
+ }
1074
+ .fade {
1075
+ opacity: 0;
1076
+ -webkit-transition: opacity 0.15s linear;
1077
+ -o-transition: opacity 0.15s linear;
1078
+ transition: opacity 0.15s linear;
1079
+ }
1080
+
1081
+ .partitionLink:hover {
1082
+ text-decoration: none;
1083
+ }