ixbrl-viewer 1.4.39__py3-none-any.whl → 1.4.40__py3-none-any.whl

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.

Potentially problematic release.


This version of ixbrl-viewer might be problematic. Click here for more details.

Files changed (95) hide show
  1. iXBRLViewerPlugin/__init__.py +25 -22
  2. iXBRLViewerPlugin/_version.py +2 -2
  3. iXBRLViewerPlugin/constants.py +86 -1
  4. iXBRLViewerPlugin/featureConfig.py +4 -1
  5. iXBRLViewerPlugin/iXBRLViewer.py +28 -14
  6. iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js +1 -1
  7. iXBRLViewerPlugin/viewer/i18next-parser.config.js +1 -1
  8. iXBRLViewerPlugin/viewer/src/html/fact-details.html +69 -38
  9. iXBRLViewerPlugin/viewer/src/html/footer-logo.html +4 -0
  10. iXBRLViewerPlugin/viewer/src/html/footnote-details.html +1 -1
  11. iXBRLViewerPlugin/viewer/src/html/inspector.html +318 -211
  12. iXBRLViewerPlugin/viewer/src/i18n/cy/balancetypes.json +1 -0
  13. iXBRLViewerPlugin/viewer/src/i18n/cy/currencies.json +13 -0
  14. iXBRLViewerPlugin/viewer/src/i18n/cy/datatypes.json +9 -0
  15. iXBRLViewerPlugin/viewer/src/i18n/cy/labelroles.json +24 -0
  16. iXBRLViewerPlugin/viewer/src/i18n/cy/referenceparts.json +10 -0
  17. iXBRLViewerPlugin/viewer/src/i18n/cy/scale.json +16 -0
  18. iXBRLViewerPlugin/viewer/src/i18n/cy/tooltips.json +17 -0
  19. iXBRLViewerPlugin/viewer/src/i18n/cy/translation.json +179 -0
  20. iXBRLViewerPlugin/viewer/src/i18n/en/balancetypes.json +4 -0
  21. iXBRLViewerPlugin/viewer/src/i18n/en/datatypes.json +10 -0
  22. iXBRLViewerPlugin/viewer/src/i18n/en/labelroles.json +4 -0
  23. iXBRLViewerPlugin/viewer/src/i18n/en/scale.json +16 -0
  24. iXBRLViewerPlugin/viewer/src/i18n/en/tooltips.json +17 -0
  25. iXBRLViewerPlugin/viewer/src/i18n/en/translation.json +50 -25
  26. iXBRLViewerPlugin/viewer/src/i18n/es/balancetypes.json +4 -0
  27. iXBRLViewerPlugin/viewer/src/i18n/es/datatypes.json +10 -0
  28. iXBRLViewerPlugin/viewer/src/i18n/es/labelroles.json +24 -0
  29. iXBRLViewerPlugin/viewer/src/i18n/es/scale.json +16 -0
  30. iXBRLViewerPlugin/viewer/src/i18n/es/tooltips.json +17 -0
  31. iXBRLViewerPlugin/viewer/src/i18n/es/translation.json +66 -40
  32. iXBRLViewerPlugin/viewer/src/icons/dark-mode.svg +4 -0
  33. iXBRLViewerPlugin/viewer/src/img/arelle-dark.svg +179 -0
  34. iXBRLViewerPlugin/viewer/src/img/inline-viewer-dark.svg +59 -0
  35. iXBRLViewerPlugin/viewer/src/js/accordian.js +2 -1
  36. iXBRLViewerPlugin/viewer/src/js/aspect.js +18 -7
  37. iXBRLViewerPlugin/viewer/src/js/balance.js +14 -0
  38. iXBRLViewerPlugin/viewer/src/js/chart.js +10 -6
  39. iXBRLViewerPlugin/viewer/src/js/concept.js +28 -1
  40. iXBRLViewerPlugin/viewer/src/js/concept.test.js +23 -2
  41. iXBRLViewerPlugin/viewer/src/js/datatype.js +20 -0
  42. iXBRLViewerPlugin/viewer/src/js/datatype.test.js +62 -0
  43. iXBRLViewerPlugin/viewer/src/js/dialog.js +3 -1
  44. iXBRLViewerPlugin/viewer/src/js/fact.js +16 -0
  45. iXBRLViewerPlugin/viewer/src/js/fact.test.js +3 -0
  46. iXBRLViewerPlugin/viewer/src/js/index.js +11 -3
  47. iXBRLViewerPlugin/viewer/src/js/inspector.js +498 -120
  48. iXBRLViewerPlugin/viewer/src/js/inspector.test.js +1 -1
  49. iXBRLViewerPlugin/viewer/src/js/ixbrlviewer.js +128 -30
  50. iXBRLViewerPlugin/viewer/src/js/ixbrlviewer.test.js +133 -20
  51. iXBRLViewerPlugin/viewer/src/js/menu.js +21 -3
  52. iXBRLViewerPlugin/viewer/src/js/outline.js +2 -2
  53. iXBRLViewerPlugin/viewer/src/js/report.js +60 -8
  54. iXBRLViewerPlugin/viewer/src/js/report.test.js +51 -5
  55. iXBRLViewerPlugin/viewer/src/js/reportset.js +20 -0
  56. iXBRLViewerPlugin/viewer/src/js/reportset.test.js +3 -3
  57. iXBRLViewerPlugin/viewer/src/js/search.js +23 -2
  58. iXBRLViewerPlugin/viewer/src/js/search.test.js +2 -2
  59. iXBRLViewerPlugin/viewer/src/js/summary.js +14 -0
  60. iXBRLViewerPlugin/viewer/src/js/tableExport.js +2 -1
  61. iXBRLViewerPlugin/viewer/src/js/taxonomynamer.js +34 -0
  62. iXBRLViewerPlugin/viewer/src/js/taxonomynamer.test.js +32 -0
  63. iXBRLViewerPlugin/viewer/src/js/theme.js +36 -0
  64. iXBRLViewerPlugin/viewer/src/js/unit.js +17 -2
  65. iXBRLViewerPlugin/viewer/src/js/util.js +16 -16
  66. iXBRLViewerPlugin/viewer/src/js/viewer.js +13 -7
  67. iXBRLViewerPlugin/viewer/src/less/accordian.less +8 -4
  68. iXBRLViewerPlugin/viewer/src/less/block-list.less +12 -6
  69. iXBRLViewerPlugin/viewer/src/less/calculation-inspector.less +2 -2
  70. iXBRLViewerPlugin/viewer/src/less/chart.less +8 -5
  71. iXBRLViewerPlugin/viewer/src/less/colours-dark-mode.less +40 -0
  72. iXBRLViewerPlugin/viewer/src/less/colours.less +28 -21
  73. iXBRLViewerPlugin/viewer/src/less/common.less +1 -1
  74. iXBRLViewerPlugin/viewer/src/less/components.less +3 -3
  75. iXBRLViewerPlugin/viewer/src/less/core.less +2 -0
  76. iXBRLViewerPlugin/viewer/src/less/dialog.less +13 -10
  77. iXBRLViewerPlugin/viewer/src/less/form-controls.less +33 -11
  78. iXBRLViewerPlugin/viewer/src/less/inspector.less +538 -299
  79. iXBRLViewerPlugin/viewer/src/less/loader.less +2 -2
  80. iXBRLViewerPlugin/viewer/src/less/menu.less +33 -15
  81. iXBRLViewerPlugin/viewer/src/less/summary.less +16 -6
  82. iXBRLViewerPlugin/viewer/src/less/tabs.less +5 -5
  83. iXBRLViewerPlugin/viewer/src/less/text-mixins.less +2 -1
  84. iXBRLViewerPlugin/viewer/src/less/validation-report.less +1 -1
  85. iXBRLViewerPlugin/viewer/src/less/viewer.less +30 -18
  86. {ixbrl_viewer-1.4.39.dist-info → ixbrl_viewer-1.4.40.dist-info}/METADATA +33 -5
  87. {ixbrl_viewer-1.4.39.dist-info → ixbrl_viewer-1.4.40.dist-info}/RECORD +95 -66
  88. {ixbrl_viewer-1.4.39.dist-info → ixbrl_viewer-1.4.40.dist-info}/WHEEL +1 -1
  89. tests/puppeteer/framework/page_objects/doc_frame.js +1 -1
  90. tests/puppeteer/tests/fact_properties.test.js +4 -4
  91. tests/unit_tests/iXBRLViewerPlugin/test_iXBRLViewer.py +69 -28
  92. {ixbrl_viewer-1.4.39.dist-info → ixbrl_viewer-1.4.40.dist-info}/LICENSE +0 -0
  93. {ixbrl_viewer-1.4.39.dist-info → ixbrl_viewer-1.4.40.dist-info}/NOTICE +0 -0
  94. {ixbrl_viewer-1.4.39.dist-info → ixbrl_viewer-1.4.40.dist-info}/entry_points.txt +0 -0
  95. {ixbrl_viewer-1.4.39.dist-info → ixbrl_viewer-1.4.40.dist-info}/top_level.txt +0 -0
@@ -3,6 +3,7 @@
3
3
  @import url("core.less");
4
4
  @import url("fonts.less");
5
5
  @import url("colours.less");
6
+ @import url("colours-dark-mode.less");
6
7
  @import url("common.less");
7
8
  @import (reference) "components.less";
8
9
  @import url("form-controls.less");
@@ -21,22 +22,102 @@
21
22
 
22
23
  @top-bar-height: 3.5rem;
23
24
 
25
+ :root {
26
+ --colour-bg-selected: @colour-bg-selected;
27
+ --colour-bg-tag: @colour-bg-tag;
28
+ --colour-bg: @colour-bg;
29
+ --colour-bg-fade: @colour-bg-fade;
30
+ --colour-border-grey: @colour-border-grey;
31
+ --colour-button-bg: @colour-button-bg;
32
+ --colour-button-primary-bg: @colour-button-primary-bg;
33
+ --colour-button-primary-border: @colour-button-primary-border;
34
+ --colour-foreground: @colour-foreground;
35
+ --colour-highlight-1: @colour-highlight-1;
36
+ --colour-highlight-2: @colour-highlight-2;
37
+ --colour-highlight-default: @colour-highlight-default;
38
+ --colour-icon-grey: @colour-icon-grey;
39
+ --colour-linked-fact: @colour-linked-fact;
40
+ --colour-loader: @colour-loader;
41
+ --colour-primary-focus: @colour-primary-focus;
42
+ --colour-primary: @colour-primary;
43
+ --colour-related-fact: @colour-related-fact;
44
+ --colour-row-odd: @colour-row-odd;
45
+ --colour-row-hover: @colour-row-hover;
46
+ --colour-text-form-value: @colour-text-form-value;
47
+ --colour-text-light: @colour-text-light;
48
+ --colour-text-title: @colour-text-title;
49
+ --colour-text: @colour-text;
50
+ --colour-warning: @colour-warning;
51
+ --top-bar-height: @top-bar-height;
52
+
53
+ .only-dark {
54
+ display: none;
55
+ }
56
+ }
57
+
58
+ :root[data-theme="theme-dark"] {
59
+ --colour-bg-selected: @colour-bg-selected-d;
60
+ --colour-bg-tag: @colour-bg-tag-d;
61
+ --colour-bg: @colour-bg-d;
62
+ --colour-bg-fade: @colour-bg-fade-d;
63
+ --colour-border-grey: @colour-border-grey-d;
64
+ --colour-button-bg: @colour-button-bg-d;
65
+ --colour-button-primary-bg: @colour-button-primary-bg-d;
66
+ --colour-button-primary-border: @colour-button-primary-border-d;
67
+ --colour-foreground: @colour-foreground-d;
68
+ --colour-highlight-1: @colour-highlight-1-d;
69
+ --colour-highlight-2: @colour-highlight-2-d;
70
+ --colour-highlight-default: @colour-highlight-default-d;
71
+ --colour-icon-grey: @colour-icon-grey-d;
72
+ --colour-linked-fact: @colour-linked-fact-d;
73
+ --colour-loader: @colour-loader-d;
74
+ --colour-primary-focus: @colour-primary-focus-d;
75
+ --colour-primary: @colour-primary-d;
76
+ --colour-related-fact: @colour-related-fact-d;
77
+ --colour-row-odd: @colour-row-odd-d;
78
+ --colour-row-hover: @colour-row-hover-d;
79
+ --colour-text-form-value: @colour-text-form-value-d;
80
+ --colour-text-light: @colour-text-light-d;
81
+ --colour-text-title: @colour-text-title-d;
82
+ --colour-text: @colour-text-d;
83
+ --colour-warning: @colour-warning-d;
84
+ --top-bar-height: @top-bar-height;
85
+
86
+ .only-dark {
87
+ display: initial;
88
+ }
89
+
90
+ .only-light {
91
+ display: none;
92
+ }
93
+ }
94
+
24
95
  #ixv {
25
96
  /* Specify these here, not on body in case the iXBRL document has its own
26
97
  * style attribute */
27
98
  &,
28
- table {
99
+ table,
100
+ dialog {
29
101
  .default-font();
30
102
  .text-md();
31
103
  }
32
104
 
105
+ a {
106
+ text-decoration: none;
107
+ color: var(--colour-primary);
108
+
109
+ &:hover {
110
+ text-decoration: underline;
111
+ }
112
+ }
113
+
33
114
  #ixv-progress {
34
115
  position: fixed;
35
116
  top: 20px;
36
117
  left: 20px;
37
118
  width: 500px;
38
119
  height: 200px;
39
- background-color: #fff;
120
+ background-color: var(--colour-bg);
40
121
  border: solid #000 1px;
41
122
  text-align: center;
42
123
  }
@@ -46,7 +127,7 @@
46
127
  box-sizing: border-box;
47
128
  position: fixed;
48
129
  left: 0;
49
- top: @top-bar-height;
130
+ top: var(--top-bar-height);
50
131
  bottom: 0;
51
132
  z-index: 0;
52
133
  display: flex;
@@ -58,6 +139,8 @@
58
139
  }
59
140
 
60
141
  #iframe-container {
142
+ background-color:white;
143
+ color:black;
61
144
  position: relative;
62
145
  flex: 1 1 auto;
63
146
 
@@ -134,53 +217,66 @@
134
217
  .default-font();
135
218
  .text-md();
136
219
 
137
- color: @text;
220
+ display: flex;
221
+ align-items: center;
222
+ color: var(--colour-text);
138
223
  position: fixed;
139
224
  top: 0;
140
225
  left: 0;
141
226
  right: 0;
142
- height: @top-bar-height;
227
+ height: var(--top-bar-height);
143
228
  border-bottom: solid 1px #ccc;
144
229
  z-index: 5;
145
230
 
231
+ #home-link {
232
+ font-size: 2.2rem;
233
+ font-weight: bold;
234
+ margin-left: 1rem;
235
+ }
236
+
146
237
  .header {
147
- position: absolute;
148
- top: 0;
149
- left: 0;
150
- bottom: 0;
151
238
  height: 100%;
152
239
  }
153
240
 
154
241
  .document-title {
155
- position: absolute;
156
242
  box-sizing: border-box;
157
- left: 160px;
158
- top: 0;
159
243
  padding-right: 1.6rem;
160
- padding-top: 1.3rem;
244
+ line-height: var(--top-bar-height);
161
245
  border-right: solid 0.1rem #ccc;
162
- height: @top-bar-height;
246
+ height: var(--top-bar-height);
163
247
  overflow: hidden;
248
+ font-size: inherit;
249
+ font-weight: inherit;
250
+ margin: 0;
164
251
  }
165
252
 
166
253
  .top-bar-controls {
167
254
  position: absolute;
168
- right: 1.8rem;
255
+ display: flex;
256
+ right: 0;
169
257
  top: 0;
170
- line-height: @top-bar-height;
258
+ line-height: var(--top-bar-height);
259
+ height: var(--top-bar-height);
260
+ background: var(--colour-bg);
261
+ padding-left: 1.8rem;
171
262
 
172
- * {
173
- vertical-align: middle;
263
+ & > * {
264
+ margin-right: 0.8rem;
174
265
  }
175
266
 
176
- .content {
177
- input {
267
+ .horizontal-menu {
268
+ * {
269
+ vertical-align: middle;
270
+ }
271
+
272
+ .content > * {
178
273
  position: relative;
179
274
  top: -0.1rem;
180
275
  margin-right: 0.6rem;
181
276
  }
182
277
  }
183
278
 
279
+
184
280
  .highlight-key {
185
281
  margin-left: 0.6rem;
186
282
  margin-right: 1.5rem;
@@ -196,8 +292,9 @@
196
292
  position: absolute;
197
293
  top: 3.2rem;
198
294
  left: -2rem;
199
- background: #fff;
200
- border: solid 1px @text;
295
+ background: white;
296
+ color: black;
297
+ border: solid 1px black;
201
298
  border-radius: 0.3rem;
202
299
  line-height: 1.6rem;
203
300
 
@@ -207,10 +304,10 @@
207
304
  left: 1.1rem;
208
305
  width: 1.5rem;
209
306
  height: 1.5rem;
210
- border-top: solid 0.1rem @text;
211
- border-left: solid 0.1rem @text;
307
+ border-top: solid 0.1rem black;
308
+ border-left: solid 0.1rem black;
212
309
  transform: translate(50%, -50%) rotate(45deg);
213
- background: #fff;
310
+ background: white;
214
311
  }
215
312
 
216
313
  .item {
@@ -226,15 +323,15 @@
226
323
  }
227
324
 
228
325
  .sample-0 {
229
- background: @highlight-default;
326
+ background: var(--colour-highlight-default);
230
327
  }
231
328
 
232
329
  .sample-1 {
233
- background: @highlight-1;
330
+ background: var(--colour-highlight-1);
234
331
  }
235
332
 
236
333
  .sample-2 {
237
- background: @highlight-2;
334
+ background: var(--colour-highlight-2);
238
335
  }
239
336
  }
240
337
  }
@@ -250,6 +347,22 @@
250
347
  .icon-warning();
251
348
  }
252
349
  }
350
+
351
+ #toggle-dark-mode {
352
+ border: none;
353
+
354
+ &::before {
355
+ .icon-dark-mode();
356
+
357
+ cursor: pointer;
358
+ }
359
+ }
360
+
361
+ .menu .menu-title::before {
362
+ .icon-cog();
363
+
364
+ font-size: 2rem;
365
+ }
253
366
  }
254
367
  }
255
368
 
@@ -261,15 +374,16 @@
261
374
  h2,
262
375
  h3 {
263
376
  font-weight: normal;
264
- border-bottom: solid 1px @border-grey;
265
377
  width: 100%;
266
378
  box-sizing: border-box;
267
- padding-bottom: 5px;
268
- color: @text-title;
379
+ color: var(--colour-text-title);
269
380
  }
270
381
 
271
382
  h2 {
272
383
  text-align: center;
384
+ font-size: 1.8rem;
385
+ line-height: 3.2rem;
386
+ margin: 0.8rem 0;
273
387
  }
274
388
 
275
389
  h3 {
@@ -278,65 +392,28 @@
278
392
 
279
393
  h4 {
280
394
  font-weight: bold;
281
- color: @text-title;
395
+ color: var(--colour-text-title);
282
396
  margin-bottom: 1.4em;
283
397
  }
284
398
 
285
399
  #inspector-head {
286
400
  padding: 0;
287
401
  position: relative;
288
- border-bottom: solid 1px @border-grey;
289
-
290
- .title {
291
- text-align: center;
292
- position: relative;
293
- border-bottom: @simple-border;
294
-
295
- h1 {
296
- margin: 0.8rem 0;
297
- border: none;
298
- padding: 0;
299
- font-size: 1.8rem;
300
- line-height: 3.2rem;
301
- }
302
-
303
- .back {
304
- .square-button-bare();
305
-
306
- top: 0;
307
- left: 0;
308
- position: absolute;
309
-
310
- &::before {
311
- .icon-chevron-left();
312
- }
313
- }
314
-
315
- .menu {
316
- top: 0;
317
- right: 0;
318
- position: absolute;
319
-
320
- .menu-title::before {
321
- .icon-cog();
322
-
323
- font-size: 2rem;
324
- }
325
- }
326
- }
402
+ border-bottom: solid 1px var(--colour-border-grey);
327
403
 
328
404
  .controls {
329
405
  position: relative;
330
406
  height: 3.2rem;
331
- margin: 0.8rem 0.9rem;
407
+ padding: 0.8rem 0.9rem;
408
+ display: flex;
409
+
410
+ & > * {
411
+ margin: 0.8rem 0.9rem;
412
+ }
332
413
 
333
414
  .search-button {
334
415
  .square-button();
335
416
 
336
- position: absolute;
337
- top: 0;
338
- left: 7.7rem;
339
-
340
417
  &::before {
341
418
  .icon-search();
342
419
 
@@ -347,10 +424,6 @@
347
424
  .outline-button {
348
425
  .square-button();
349
426
 
350
- position: absolute;
351
- top: 0;
352
- left: 3.6rem;
353
-
354
427
  &::before {
355
428
  .icon-outline();
356
429
 
@@ -361,10 +434,6 @@
361
434
  .summary-button {
362
435
  .square-button();
363
436
 
364
- position: absolute;
365
- top: 0;
366
- left: 0;
367
-
368
437
  &::before {
369
438
  .icon-summary();
370
439
 
@@ -372,35 +441,61 @@
372
441
  }
373
442
  }
374
443
 
375
- .next-prev {
376
- position: absolute;
377
- top: 0;
378
- right: 0;
444
+ .ixbrl-prev-tag {
445
+ .square-button();
379
446
 
380
- .ixbrl-next-tag,
381
- .ixbrl-prev-tag {
382
- .square-button();
447
+ margin-left: auto;
383
448
 
384
- position: relative;
385
- display: inline-block;
449
+ &::before {
450
+ .icon-chevron-left();
386
451
  }
452
+ }
453
+
454
+ .ixbrl-next-tag {
455
+ .square-button();
387
456
 
388
- .ixbrl-next-tag::before {
457
+ &::before {
389
458
  .icon-chevron-right();
390
459
  }
460
+ }
461
+ }
462
+ }
463
+
464
+ .inspector-container {
465
+ flex-grow: 1;
466
+ overflow: hidden;
467
+ display: flex;
468
+ flex-direction: column;
469
+
470
+ .inspector-title {
471
+ text-align: center;
472
+ position: relative;
473
+ margin: 0.8rem 0;
474
+
475
+ h2 {
476
+ margin: 0;
477
+ padding: 0;
478
+ }
479
+
480
+ .back {
481
+ .square-button-bare();
482
+
483
+ top: 0;
484
+ left: 0.9rem;
485
+ position: absolute;
391
486
 
392
- .ixbrl-prev-tag::before {
487
+ &::before {
393
488
  .icon-chevron-left();
394
489
  }
395
490
  }
396
491
  }
397
492
 
398
493
  .search-controls {
399
- margin: 0.8rem 0.9rem;
494
+ margin: 0 0 0.8rem;
400
495
 
401
496
  .search-input {
402
497
  display: flex;
403
- padding: 0;
498
+ padding: 0 0.9rem;
404
499
 
405
500
  input#ixbrl-search {
406
501
  flex-grow: 1;
@@ -416,12 +511,32 @@
416
511
  }
417
512
  }
418
513
 
514
+ .filter-info {
515
+ text-align: center;
516
+ font-style: italic;
517
+ margin-top: 0.8rem;
518
+ position: relative;
519
+
520
+ .reset {
521
+ .bare-button();
522
+ .text-md();
523
+
524
+ position: absolute;
525
+ right: 0.8rem;
526
+ top: -0.3rem;
527
+ }
528
+ }
529
+
419
530
  &:not(.show-filters) .search-filters {
420
531
  display: none;
421
532
  }
422
533
 
423
- &.show-filters .filter-toggle {
424
- color: @primary;
534
+ &.active-filters .filter-toggle {
535
+ color: var(--colour-primary);
536
+ }
537
+
538
+ &:not(.active-filters) .reset {
539
+ display: none;
425
540
  }
426
541
 
427
542
  .search-filters {
@@ -429,19 +544,17 @@
429
544
  // Ensure the filter pane never grows too large to hide the results pane
430
545
  max-height: 60vh;
431
546
  overflow-y: auto;
547
+ padding: 0 0.9rem;
432
548
 
433
- .reset {
434
- .clickable();
435
-
436
- position: absolute;
437
- right: 0;
438
- top: 0;
439
- }
440
549
 
441
550
  h3 {
442
551
  border: none;
443
552
  font-weight: bold;
444
553
  padding-bottom: 0;
554
+
555
+ button {
556
+ font-weight: inherit;
557
+ }
445
558
  }
446
559
 
447
560
  .filter-group {
@@ -488,123 +601,130 @@
488
601
  }
489
602
  }
490
603
 
491
- .filter-info {
492
- text-align: center;
493
- font-style: italic;
494
- font-size: 1.1rem;
604
+
605
+ .datatype-conflict-warning {
606
+ margin: 1rem 0;
607
+ color: var(--colour-warning);
608
+ display: none;
495
609
  }
496
610
  }
497
611
  }
498
- }
499
612
 
500
- .inspector-body {
501
- flex-grow: 1;
502
- width: 100%;
503
- position: relative;
504
- overflow: hidden;
613
+ .inspector-body {
614
+ border-top: solid 1px var(--colour-border-grey);
615
+ width: 100%;
616
+ position: relative;
617
+ overflow-y: auto;
618
+ flex-grow: 1;
505
619
 
506
- .no-fact-overlay,
507
- .no-outline-overlay {
508
- display: block;
509
- position: absolute;
510
- left: 50%;
511
- top: 50%;
512
- transform: translate(-50%, -50%);
513
- width: 80%;
514
- text-align: center;
515
- color: @text-light;
620
+ .no-fact-overlay,
621
+ .no-outline-overlay {
622
+ position: absolute;
623
+ left: 50%;
624
+ top: 50%;
625
+ transform: translate(-50%, -50%);
626
+ width: 80%;
627
+ text-align: center;
628
+ color: var(--colour-text-light);
516
629
 
517
- .no-fact-overlay-icon::before {
518
- .icon-tag();
630
+ .no-fact-overlay-icon::before {
631
+ .icon-tag();
519
632
 
520
- font-size: 10rem;
521
- }
633
+ font-size: 10rem;
634
+ line-height: normal;
635
+ }
522
636
 
523
- .no-outline-overlay-icon::before {
524
- .icon-outline();
637
+ .no-outline-overlay-icon::before {
638
+ .icon-outline();
525
639
 
526
- font-size: 10rem;
527
- }
640
+ font-size: 10rem;
641
+ line-height: normal;
642
+ }
528
643
 
529
- .title {
530
- font-size: x-large;
644
+ .title {
645
+ font-size: x-large;
646
+ line-height: normal;
647
+ }
531
648
  }
532
- }
533
649
 
534
- .inspector-body-fact {
535
- overflow-y: auto;
536
- height: 100%;
537
- position: relative;
538
- }
650
+ .inspector-body {
651
+ overflow-y: auto;
652
+ height: 100%;
653
+ position: relative;
654
+ }
539
655
 
540
- .search-results {
541
- overflow-y: auto;
542
- height: 100%;
543
- .panel-indent();
656
+ .search-results {
657
+ overflow-y: auto;
658
+ height: 100%;
659
+ .panel-indent();
544
660
 
545
- .search-overlay {
546
- transform: translate(-50%, -50%);
547
- position: absolute;
548
- top: 50%;
549
- left: 50%;
550
- color: @text-light;
551
- width: 85%;
661
+ .search-overlay {
662
+ transform: translate(-50%, -50%);
663
+ position: absolute;
664
+ top: 50%;
665
+ left: 50%;
666
+ color: var(--colour-text-light);
667
+ width: 85%;
668
+
669
+ .search-overlay-icon {
670
+ text-align: center;
671
+ font-size: 10rem;
672
+ line-height: normal;
673
+
674
+ &::before {
675
+ .icon-search();
676
+ }
677
+ }
552
678
 
553
- .search-overlay-icon {
554
- text-align: center;
555
- font-size: 10rem;
679
+ .search-overlay-text {
680
+ text-align: center;
681
+ font-size: medium;
682
+ line-height: normal;
556
683
 
557
- &::before {
558
- .icon-search();
684
+ .title {
685
+ font-size: x-large;
686
+ line-height: normal;
687
+ }
559
688
  }
560
689
  }
561
690
 
562
- .search-overlay-text {
563
- text-align: center;
564
- font-size: medium;
691
+ .select-icon {
692
+ float: right;
693
+ .square-button();
694
+ .clickable();
565
695
 
566
- .title {
567
- font-size: x-large;
696
+ &:first-of-type {
697
+ margin-left: 0.5rem;
698
+ }
699
+
700
+ &::before {
701
+ .icon-select();
568
702
  }
569
703
  }
570
- }
571
704
 
572
- .select-icon {
573
- float: right;
574
- .square-button();
575
- .clickable();
705
+ .more-results {
706
+ .clickable();
576
707
 
577
- &:first-of-type {
578
- margin-left: 0.5rem;
708
+ padding: 1rem;
709
+ text-align: center;
579
710
  }
711
+ } /* search results */
580
712
 
581
- &::before {
582
- .icon-select();
583
- }
713
+ .outline {
714
+ overflow-y: auto;
715
+ height: 100%;
584
716
  }
585
717
 
586
- .more-results {
587
- .clickable();
588
-
589
- padding: 1rem;
590
- text-align: center;
718
+ .summary {
719
+ overflow-y: auto;
720
+ height: 100%;
591
721
  }
592
- } /* search results */
593
-
594
- .outline {
595
- overflow-y: auto;
596
- height: 100%;
597
- }
598
722
 
599
- .summary {
600
- overflow-y: auto;
601
- height: 100%;
602
- }
603
-
604
- .body {
605
- .panel-indent();
606
- }
607
- } /* inspector body */
723
+ .body {
724
+ .panel-indent();
725
+ }
726
+ } /* inspector body */
727
+ } /* inspector container */
608
728
 
609
729
  .std-label {
610
730
  margin-left: 30px;
@@ -612,15 +732,25 @@
612
732
  position: relative;
613
733
 
614
734
  &::before {
615
- color: @primary;
735
+ color: var(--colour-primary);
616
736
  content: "\2022";
617
737
  position: absolute;
618
- top: -5px;
619
738
  left: -20px;
620
739
  font-size: x-large;
621
740
  }
622
741
  }
623
742
 
743
+ dt {
744
+ font-weight: bold;
745
+ color: var(--colour-text-title);
746
+ margin-bottom: 1.4rem;
747
+ margin-top: 1.4rem;
748
+ }
749
+
750
+ dd {
751
+ margin-inline-start: 2rem;
752
+ }
753
+
624
754
  #concept {
625
755
  margin-top: 20px;
626
756
  font-size: small;
@@ -639,7 +769,7 @@
639
769
  &::before {
640
770
  .icon-dimension();
641
771
 
642
- color: @primary;
772
+ color: var(--colour-primary);
643
773
  position: absolute;
644
774
  top: 0;
645
775
  left: -2.3rem;
@@ -655,7 +785,7 @@
655
785
  .icon-dimension-member();
656
786
 
657
787
  position: absolute;
658
- color: @primary;
788
+ color: var(--colour-primary);
659
789
  top: 0;
660
790
  left: -2.3rem;
661
791
  font-size: 120%;
@@ -663,10 +793,16 @@
663
793
  }
664
794
  }
665
795
 
666
- .analyse {
796
+ .inline-button {
797
+ display: inline;
667
798
  cursor: pointer;
668
- padding-left: 0.7rem;
669
- color: @primary;
799
+ color: var(--colour-primary);
800
+ padding: 0.3rem;
801
+ border: none;
802
+ }
803
+
804
+ .analyse {
805
+ margin-left: 0.4rem;
670
806
  }
671
807
 
672
808
  .analyse::before {
@@ -676,7 +812,7 @@
676
812
  top: 1px;
677
813
  }
678
814
 
679
- .inspector-body-fact .tags {
815
+ .inspector-body .tags {
680
816
  position: absolute;
681
817
  top: 1.5rem;
682
818
  right: 0.9rem;
@@ -695,53 +831,6 @@
695
831
  }
696
832
  }
697
833
 
698
- table.fact-properties {
699
- table-layout: fixed;
700
- width: 100%;
701
-
702
- th {
703
- width: 75px;
704
- text-align: right;
705
- padding-right: 20px;
706
- color: @text-title;
707
- }
708
-
709
- th,
710
- td {
711
- padding-top: 2px;
712
- padding-bottom: 2px;
713
- }
714
-
715
- tr.value {
716
- .show-all {
717
- color: @primary;
718
- cursor: pointer;
719
- }
720
-
721
- &:not(.truncated) .show-all {
722
- display: none;
723
- }
724
-
725
- &.text-block .expand-text-block {
726
- color: @primary;
727
- cursor: pointer;
728
-
729
- &::before {
730
- .icon-text-block();
731
- }
732
- }
733
- }
734
-
735
- td {
736
- overflow: hidden;
737
- text-overflow: ellipsis;
738
- color: @text-form-value;
739
- }
740
-
741
- tr.uri > td {
742
- white-space: nowrap;
743
- }
744
- }
745
834
 
746
835
  .duplicates {
747
836
  text-align: center;
@@ -805,21 +894,12 @@
805
894
 
806
895
  width: 25%;
807
896
  position: absolute;
808
- top: @top-bar-height;
897
+ top: var(--top-bar-height);
809
898
  right: 0;
810
899
  bottom: 0;
811
900
  box-sizing: border-box;
812
901
  overflow: hidden;
813
- border-left: @simple-border;
814
-
815
- a {
816
- text-decoration: none;
817
- color: @primary;
818
-
819
- &:hover {
820
- text-decoration: underline;
821
- }
822
- }
902
+ border-left: solid 0.1rem var(--colour-border-grey);
823
903
 
824
904
  .inspector-section {
825
905
  padding-left: 0.9rem;
@@ -833,21 +913,32 @@
833
913
 
834
914
  .collapsible-header {
835
915
  position: relative;
836
- padding-left: 12px;
916
+ padding: 0 0 0.5rem 1.2rem;
837
917
  cursor: pointer;
838
918
  user-select: none;
839
919
  white-space: nowrap;
920
+ border-bottom: solid 1px var(--colour-border-grey);
840
921
 
841
- &::before {
842
- .icon-chevron-right();
922
+ button:first-of-type {
923
+ .text-md();
843
924
 
844
- font-size: 1.8rem;
845
- position: relative;
846
- top: 0.4rem;
847
- left: -0.3rem;
848
- transform: rotate(90deg);
849
- transition: all 0.25s ease;
850
- display: inline-block;
925
+ border: none;
926
+ color: var(--colour-text-title);
927
+ text-align: left;
928
+ position: relative;
929
+ padding: 0.4rem 0.9rem 0.4rem 2.3rem;
930
+
931
+ &::before {
932
+ .icon-chevron-right();
933
+
934
+ font-size: 1.8rem;
935
+ position: absolute;
936
+ top: 0.4rem;
937
+ left: 0;
938
+ transform: rotate(90deg);
939
+ transition: all 0.25s ease;
940
+ display: inline-block;
941
+ }
851
942
  }
852
943
 
853
944
  .collapsible-subheader {
@@ -855,19 +946,19 @@
855
946
  font-weight: normal;
856
947
  font-style: italic;
857
948
  font-size: 1.3rem;
858
- color: @text-form-value;
949
+ color: var(--colour-text-form-value);
859
950
  }
860
951
  }
861
952
 
862
953
  &.collapsed {
863
- .collapsible-header::before {
954
+ .collapsible-header button::before {
864
955
  transform: rotate(0);
865
956
  top: 0.3rem;
866
957
  left: -0.2rem;
867
958
  }
868
959
 
869
960
  .collapsible-subheader {
870
- color: @primary;
961
+ color: var(--colour-primary);
871
962
  }
872
963
  }
873
964
 
@@ -883,7 +974,7 @@
883
974
  padding-right: 0.75rem;
884
975
  position: relative;
885
976
  top: 0.2rem;
886
- color: @warning-orange;
977
+ color: var(--colour-warning);
887
978
 
888
979
  &::before {
889
980
  .icon-circle-cross();
@@ -894,7 +985,7 @@
894
985
  padding-right: 0.75rem;
895
986
  position: relative;
896
987
  top: 0.2rem;
897
- color: @workiva-green;
988
+ color: var(--colour-primary);
898
989
 
899
990
  &::before {
900
991
  .icon-circle-tick();
@@ -919,9 +1010,13 @@
919
1010
 
920
1011
  tr.item {
921
1012
  td {
922
- padding: 5px 0;
1013
+ padding: 0.2rem 0;
923
1014
  line-height: 1.8rem;
924
1015
 
1016
+ &.weight {
1017
+ text-align: center;
1018
+ }
1019
+
925
1020
  &.value {
926
1021
  text-align: right;
927
1022
  }
@@ -931,12 +1026,27 @@
931
1026
  color: #777;
932
1027
  }
933
1028
 
1029
+ &:not(.calc-fact-link) {
1030
+ td {
1031
+ .text-md();
1032
+
1033
+ &.concept-name {
1034
+ // Compensate for padding that gets added by button on clickable rows.
1035
+ padding: 0.3rem;
1036
+ }
1037
+ }
1038
+ }
1039
+
934
1040
  &.calc-fact-link {
935
1041
  cursor: pointer;
936
1042
 
937
1043
  .concept-name,
938
1044
  .value {
939
- color: @primary;
1045
+ color: var(--colour-primary);
1046
+
1047
+ button {
1048
+ .text-md();
1049
+ }
940
1050
  }
941
1051
  }
942
1052
 
@@ -946,28 +1056,34 @@
946
1056
  }
947
1057
 
948
1058
  &.total td {
949
- border-top: solid 1px @border-grey;
1059
+ border-top: solid 1px var(--colour-border-grey);
950
1060
  padding-bottom: 1.2rem;
951
1061
  }
952
1062
  }
953
1063
  }
954
1064
 
955
1065
  .calculation-details-link {
956
- color: @primary;
957
- cursor: pointer;
1066
+ .inline-button();
1067
+ .text-md();
958
1068
  }
959
1069
  }
960
1070
  }
961
1071
 
962
- .reset-multiselect {
963
- float: right;
964
- line-height: 0;
1072
+ .resetable-multiselect {
965
1073
  position: relative;
966
- bottom: 1rem;
967
- cursor: pointer;
968
1074
 
969
- &::after {
970
- .icon-close();
1075
+ .reset-multiselect {
1076
+ position: absolute;
1077
+ top: -2.5rem;
1078
+ right: -0.5rem;
1079
+ cursor: pointer;
1080
+ border: none;
1081
+ padding: 0.3rem;
1082
+
1083
+
1084
+ &::after {
1085
+ .icon-close();
1086
+ }
971
1087
  }
972
1088
  }
973
1089
 
@@ -1030,12 +1146,12 @@
1030
1146
 
1031
1147
  text-align: center;
1032
1148
  flex-shrink: 0;
1033
- background: #fff;
1149
+ background: var(--colour-bg);
1034
1150
  width: 100%;
1035
1151
  height: 3rem;
1036
1152
  margin: 0;
1037
1153
  box-sizing: border-box;
1038
- border-top: @simple-border;
1154
+ border-top: solid 0.1rem var(--colour-border-grey);
1039
1155
  position: relative;
1040
1156
 
1041
1157
  img {
@@ -1050,7 +1166,7 @@
1050
1166
  right: 5px;
1051
1167
  font-size: small;
1052
1168
  line-height: 3rem;
1053
- color: #999;
1169
+ color: var(--colour-text-light);
1054
1170
  }
1055
1171
  }
1056
1172
 
@@ -1086,7 +1202,7 @@
1086
1202
 
1087
1203
  &.failed-to-load .failed-to-load-mask {
1088
1204
  display: block;
1089
- background-color: rgb(0 0 0 / 50%);
1205
+ background-color: var(--colour-bg-fade);
1090
1206
  position: absolute;
1091
1207
  width: 100%;
1092
1208
  height: 100%;
@@ -1107,14 +1223,71 @@
1107
1223
  background-color: rgb(0 0 0 / 50%);
1108
1224
  }
1109
1225
  }
1226
+
1227
+ table.property-table {
1228
+ &:not(.numeric) {
1229
+ table-layout: fixed;
1230
+ width: 100%;
1231
+ }
1232
+
1233
+ td, th {
1234
+ padding: 0;
1235
+ line-height: 2.6rem;
1236
+ }
1237
+
1238
+ th {
1239
+ width: 90px;
1240
+ text-align: right;
1241
+ padding-right: 30px;
1242
+ color: var(--colour-text-title);
1243
+
1244
+ &.has-tooltip {
1245
+ padding-right: 10px;
1246
+ }
1247
+ }
1248
+
1249
+ tr.value {
1250
+ .show-all {
1251
+ color: var(--colour-primary);
1252
+ cursor: pointer;
1253
+ }
1254
+
1255
+ &:not(.truncated) .show-all {
1256
+ display: none;
1257
+ }
1258
+
1259
+ &.text-block .expand-text-block {
1260
+ color: var(--colour-primary);
1261
+ cursor: pointer;
1262
+
1263
+ &::before {
1264
+ .icon-text-block();
1265
+ }
1266
+ }
1267
+ }
1268
+
1269
+ td {
1270
+ overflow: clip visible;
1271
+ text-overflow: ellipsis;
1272
+ color: var(--colour-text-form-value);
1273
+ }
1274
+
1275
+ tr.uri > td {
1276
+ white-space: nowrap;
1277
+ }
1278
+
1279
+ &.numeric td {
1280
+ text-align: right;
1281
+ }
1282
+ }
1110
1283
  }
1111
1284
 
1112
1285
  .fact-link {
1113
1286
  cursor: pointer;
1114
- color: @primary;
1287
+ color: var(--colour-primary);
1115
1288
 
1116
1289
  &:hover {
1117
- outline: solid 0.125em @linked-fact;
1290
+ outline: solid 0.125em var(--colour-linked-fact);
1118
1291
  outline-offset: 0.0625em;
1119
1292
  }
1120
1293
  }
@@ -1124,15 +1297,21 @@
1124
1297
  .block-list-item();
1125
1298
 
1126
1299
  .title {
1127
- color: @text-title;
1300
+ color: var(--colour-text-title);
1128
1301
  font-weight: bold;
1129
1302
  }
1130
1303
 
1131
1304
  .dimension {
1132
- color: @text;
1305
+ color: var(--colour-text);
1133
1306
  margin: 0.6rem 0;
1134
1307
  }
1135
1308
 
1309
+ .datatype {
1310
+ color: var(--colour-text);
1311
+ margin: 0.6rem 0;
1312
+ font-style: italic;
1313
+ }
1314
+
1136
1315
  .hidden {
1137
1316
  .tag();
1138
1317
  }
@@ -1143,14 +1322,16 @@
1143
1322
  }
1144
1323
 
1145
1324
  .dimension {
1146
- color: @text;
1325
+ color: var(--colour-text);
1147
1326
  }
1148
1327
  }
1328
+
1149
1329
  }
1150
1330
  }
1151
1331
 
1332
+
1152
1333
  .dialog-mask {
1153
- background-color: rgb(0 0 0 / 60%);
1334
+ background-color: var(--colour-bg-fade);
1154
1335
  position: fixed;
1155
1336
  inset: 0;
1156
1337
  z-index: 10;
@@ -1162,12 +1343,12 @@
1162
1343
  }
1163
1344
 
1164
1345
  .copy-icon {
1165
- color: @primary;
1346
+ color: var(--colour-primary);
1166
1347
  border-radius: 0.3rem;
1167
1348
 
1168
1349
  &:active {
1169
- background-color: @primary;
1170
- color: #fff;
1350
+ background-color: var(--colour-primary);
1351
+ color: var(--colour-bg);
1171
1352
  }
1172
1353
 
1173
1354
  &::before {
@@ -1176,4 +1357,62 @@
1176
1357
  cursor: pointer;
1177
1358
  }
1178
1359
  }
1360
+
1361
+ .has-tooltip {
1362
+ white-space: nowrap;
1363
+
1364
+ & > * {
1365
+ vertical-align: middle;
1366
+ }
1367
+
1368
+ .tooltip-icon {
1369
+ .inline-button();
1370
+
1371
+ cursor: help;
1372
+ margin-left: -0.3rem;
1373
+ vertical-align: middle;
1374
+
1375
+ &::after {
1376
+ content: "\24d8";
1377
+ }
1378
+ }
1379
+
1380
+ button + .tooltip-icon {
1381
+ margin-left: -1rem;
1382
+ }
1383
+ }
1384
+
1385
+ .tooltip {
1386
+ position: fixed;
1387
+ visibility: hidden;
1388
+ transition: all 0.5s ease;
1389
+ background-color: var(--colour-bg);
1390
+ z-index: 1;
1391
+ border: solid 0.1rem var(--colour-border-grey);
1392
+ border-radius: 0.4rem;
1393
+ padding: 0.8rem;
1394
+ box-shadow: rgb(0 0 0 / 30%) 0.2rem 0.2rem 0.2rem;
1395
+ font-weight: normal;
1396
+ opacity: 0;
1397
+ cursor: default;
1398
+ color: var(--colour-text);
1399
+ text-align: left;
1400
+
1401
+ &.show,
1402
+ &.hover-show {
1403
+ visibility: visible;
1404
+ opacity: 1;
1405
+ transition: opacity 0.5s ease;
1406
+ }
1407
+
1408
+ &.with-glossary-link .glossary-link {
1409
+ display: block;
1410
+ }
1411
+
1412
+ .glossary-link {
1413
+ margin-top: 0.8rem;
1414
+ font-size: smaller;
1415
+ display: none;
1416
+ }
1417
+ }
1179
1418
  }