@nixweb/nixloc-ui 1.19.0 → 1.20.0

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 (110) hide show
  1. package/package.json +1 -1
  2. package/src/component/forms/ButtonFilter.vue +104 -104
  3. package/src/component/forms/ButtonGroup.vue +66 -66
  4. package/src/component/forms/ButtonGroupInline.vue +210 -210
  5. package/src/component/forms/ButtonSub.vue +97 -97
  6. package/src/component/forms/ButtonToggle.vue +76 -76
  7. package/src/component/forms/DateYearMonth.vue +192 -192
  8. package/src/component/forms/ImageUpload.vue +214 -214
  9. package/src/component/forms/IncrementDecrement.vue +151 -151
  10. package/src/component/forms/InputAddressGoogle.vue +171 -171
  11. package/src/component/forms/InputCallToAction.vue +135 -135
  12. package/src/component/forms/InputDecimalDiscount.vue +146 -146
  13. package/src/component/forms/InputTag.vue +124 -124
  14. package/src/component/forms/InputTextEdit.vue +69 -69
  15. package/src/component/forms/InputWhatsApp.vue +47 -47
  16. package/src/component/forms/SideBar.vue +99 -99
  17. package/src/component/forms/Toggle.vue +72 -72
  18. package/src/component/layout/Account.vue +131 -131
  19. package/src/component/layout/AnimatedPhrase.vue +68 -68
  20. package/src/component/layout/BarFloating.vue +67 -67
  21. package/src/component/layout/BottomActionsBar.vue +205 -205
  22. package/src/component/layout/ColorPicker.vue +175 -175
  23. package/src/component/layout/Gantt.vue +128 -128
  24. package/src/component/layout/HideShow.vue +61 -61
  25. package/src/component/layout/IconMolded.vue +58 -58
  26. package/src/component/layout/IconPicker.vue +161 -161
  27. package/src/component/layout/NewAccount.vue +136 -136
  28. package/src/component/layout/NewHeader.vue +59 -59
  29. package/src/component/layout/NewIconMolded.vue +70 -70
  30. package/src/component/layout/NewMenu.vue +472 -472
  31. package/src/component/layout/Tab.vue +259 -259
  32. package/src/component/layout/Tag.vue +97 -97
  33. package/src/component/layout/Tooltip.vue +155 -155
  34. package/src/component/layout/Zoom.vue +111 -111
  35. package/src/component/rental/DisplayCalculatePeriod.vue +48 -48
  36. package/src/component/rental/DisplayPeriodRent.vue +55 -55
  37. package/src/component/rental/DisplayTotalization.vue +86 -86
  38. package/src/component/report/Fields.vue +108 -108
  39. package/src/component/report/Report.vue +377 -377
  40. package/src/component/report/ReportTable.vue +111 -111
  41. package/src/component/report/Totalization.vue +33 -33
  42. package/src/component/shared/CodeEditor.vue +128 -128
  43. package/src/component/shared/Confirmation.vue +74 -74
  44. package/src/component/shared/DocumentEditor.vue +99 -99
  45. package/src/component/shared/DocumentPreview.vue +105 -105
  46. package/src/component/shared/DocumentPublic.vue +33 -33
  47. package/src/component/shared/ExportExcel.vue +56 -56
  48. package/src/component/shared/FullCalendar.vue +175 -175
  49. package/src/component/shared/HeaderReport.vue +47 -47
  50. package/src/component/shared/ListNotifications.vue +70 -70
  51. package/src/component/shared/Loading.vue +1 -4
  52. package/src/component/shared/LoadingCard.vue +64 -64
  53. package/src/component/shared/ParameterLegend.vue +169 -169
  54. package/src/component/shared/Report.vue +250 -250
  55. package/src/component/shared/SaveCancel.vue +99 -117
  56. package/src/component/shared/SelectOption.vue +162 -162
  57. package/src/component/shared/TableDraggable.vue +117 -117
  58. package/src/component/shared/TableImport.vue +93 -93
  59. package/src/component/shared/TableItem.vue +228 -228
  60. package/src/component/shared/TableTotalPerPage.vue +114 -114
  61. package/src/component/shared/TableTotalRecords.vue +44 -44
  62. package/src/component/shared/TimeLine.vue +41 -41
  63. package/src/component/shared/Timer.vue +77 -77
  64. package/src/component/shared/ToggleTheme.vue +127 -127
  65. package/src/component/shared/TotalizationReport.vue +86 -86
  66. package/src/component/shared/actions/ActionButtons.vue +53 -53
  67. package/src/component/shared/actions/ActionErrorContent.vue +103 -103
  68. package/src/component/shared/actions/ActionFooter.vue +93 -99
  69. package/src/component/shared/actions/ActionHeader.vue +110 -110
  70. package/src/component/shared/actions/ActionItemList.vue +143 -143
  71. package/src/component/shared/actions/ActionsOptions.vue +209 -209
  72. package/src/component/shared/actions/ActionsSelected.vue +262 -262
  73. package/src/component/shared/automation/ActivitiesList.vue +43 -43
  74. package/src/component/shared/automation/AddRule.vue +60 -60
  75. package/src/component/shared/automation/AutomationBuilder.vue +26 -26
  76. package/src/component/shared/automation/DynamicComponentList.vue +85 -85
  77. package/src/component/shared/automation/SelectRule.vue +97 -97
  78. package/src/component/shared/automation/components/BillingByRent.vue +97 -97
  79. package/src/component/shared/automation/components/SendEmail.vue +93 -93
  80. package/src/component/shared/file-manager/FileManager.vue +390 -390
  81. package/src/component/shared/filter-builder/FilterBuilder.vue +220 -220
  82. package/src/component/shared/filter-builder/FilterQuery.vue +95 -95
  83. package/src/component/shared/query-builder/ConvertToOdata.js +86 -86
  84. package/src/component/shared/query-builder/DynamicComponent.vue +161 -161
  85. package/src/component/shared/query-builder/Fields.vue +93 -93
  86. package/src/component/shared/query-builder/Rules.vue +68 -68
  87. package/src/component/shared/query-builder/SelectRule.vue +97 -97
  88. package/src/component/shared/query-builder/Tags.vue +59 -59
  89. package/src/component/signature/Payment.vue +160 -160
  90. package/src/component/signature/Warning.vue +75 -75
  91. package/src/component/template/ReportCreateUpdate.vue +110 -110
  92. package/src/component/template/ViewTemplateDocumentView.vue +213 -213
  93. package/src/component/template/ViewTemplateImportFile.vue +347 -347
  94. package/src/component/template/ViewTemplateReportList.vue +240 -240
  95. package/src/component/template/ViewTemplateReportPreview.vue +521 -521
  96. package/src/component/template/ViewTemplateSelectOption.vue +46 -46
  97. package/src/component/template/model/Report.js +5 -5
  98. package/src/component/training/Course.vue +343 -343
  99. package/src/component/training/CourseView.vue +198 -198
  100. package/src/component/value-objects/Address.js +10 -10
  101. package/src/component/value-objects/Address.vue +173 -173
  102. package/src/component/value-objects/Contact.js +6 -6
  103. package/src/component/value-objects/Contact.vue +106 -106
  104. package/src/component/value-objects/Person.js +10 -10
  105. package/src/component/value-objects/Person.vue +130 -130
  106. package/src/store/modules/automation.js +30 -30
  107. package/src/store/modules/generic.js +15 -1
  108. package/src/store/modules/report.js +277 -277
  109. package/src/store/modules/user.js +69 -69
  110. package/src/store/modules/util.js +25 -25
@@ -1,70 +1,70 @@
1
- <template>
2
- <div>
3
- <ScrollBar :minHeight="400" :maxHeight="400">
4
- <div>
5
- <br />
6
- <table class="table table-responsive-xs">
7
- <thead>
8
- <tr>
9
- <th class="title-header">Mensagem</th>
10
- </tr>
11
- </thead>
12
- <tbody v-for="error in listError">
13
- <tr>
14
- <td>
15
- <span class="message"> {{ error }}</span>
16
- </td>
17
- </tr>
18
- </tbody>
19
- </table>
20
- </div>
21
- </ScrollBar>
22
- </div>
23
- </template>
24
-
25
- <script>
26
- import ScrollBar from "@nixweb/nixloc-ui/src/component/layout/ScrollBar.vue";
27
-
28
- export default {
29
- name: "ListNotifications",
30
- props: {
31
- listError: Array,
32
- },
33
- components: {
34
- ScrollBar,
35
- },
36
- };
37
- </script><style scoped>
38
- .table th,
39
- .table td {
40
- height: 10px !important;
41
- padding-left: 5px !important;
42
- padding-top: 7px !important;
43
- padding-bottom: 5px !important;
44
- padding-right: 5px !important;
45
- padding-left: 10px !important;
46
- border-bottom: 0px !important;
47
- }
48
-
49
- .title-header {
50
- font-size: 14px;
51
- color: #757d8c;
52
- font-weight: 400;
53
- }
54
-
55
- .tabela-principal {
56
- font-size: 14px;
57
- max-width: 200px;
58
- }
59
-
60
- .tabela-descricao {
61
- white-space: nowrap;
62
- overflow: hidden;
63
- text-overflow: ellipsis;
64
- max-width: 200px;
65
- }
66
-
67
- .message {
68
- color: red;
69
- }
70
- </style>
1
+ <template>
2
+ <div>
3
+ <ScrollBar :minHeight="400" :maxHeight="400">
4
+ <div>
5
+ <br />
6
+ <table class="table table-responsive-xs">
7
+ <thead>
8
+ <tr>
9
+ <th class="title-header">Mensagem</th>
10
+ </tr>
11
+ </thead>
12
+ <tbody v-for="error in listError">
13
+ <tr>
14
+ <td>
15
+ <span class="message"> {{ error }}</span>
16
+ </td>
17
+ </tr>
18
+ </tbody>
19
+ </table>
20
+ </div>
21
+ </ScrollBar>
22
+ </div>
23
+ </template>
24
+
25
+ <script>
26
+ import ScrollBar from "@nixweb/nixloc-ui/src/component/layout/ScrollBar.vue";
27
+
28
+ export default {
29
+ name: "ListNotifications",
30
+ props: {
31
+ listError: Array,
32
+ },
33
+ components: {
34
+ ScrollBar,
35
+ },
36
+ };
37
+ </script><style scoped>
38
+ .table th,
39
+ .table td {
40
+ height: 10px !important;
41
+ padding-left: 5px !important;
42
+ padding-top: 7px !important;
43
+ padding-bottom: 5px !important;
44
+ padding-right: 5px !important;
45
+ padding-left: 10px !important;
46
+ border-bottom: 0px !important;
47
+ }
48
+
49
+ .title-header {
50
+ font-size: 14px;
51
+ color: #757d8c;
52
+ font-weight: 400;
53
+ }
54
+
55
+ .tabela-principal {
56
+ font-size: 14px;
57
+ max-width: 200px;
58
+ }
59
+
60
+ .tabela-descricao {
61
+ white-space: nowrap;
62
+ overflow: hidden;
63
+ text-overflow: ellipsis;
64
+ max-width: 200px;
65
+ }
66
+
67
+ .message {
68
+ color: red;
69
+ }
70
+ </style>
@@ -1,9 +1,6 @@
1
1
  <template>
2
2
  <div>
3
- <div
4
- v-if="type == 'bubbles'"
5
- :class="{ loading: center }"
6
- >
3
+ <div v-if="type == 'bubbles'" :class="{ loading: center }">
7
4
  <vue-loading
8
5
  type="bubbles"
9
6
  :color="color"
@@ -1,65 +1,65 @@
1
- <template>
2
- <div class="loading-skeleton" :style="'height:' + height + 'px'">
3
- <div v-for="index in totalLine" :key="index" class="line"
4
- :style="{ height: getRandomHeight() + 'px', width: '100%' }"></div>
5
- </div>
6
- </template>
7
-
8
- <script>
9
- export default {
10
- name: "LoadingCard",
11
- props: {
12
- totalLine: {
13
- type: Number,
14
- default: 3,
15
- validator(value) {
16
- return value >= 1 && value <= 10;
17
- }
18
- },
19
- height: {
20
- type: Number,
21
- default: 200,
22
- validator(value) {
23
- return value > 0;
24
- }
25
- }
26
- },
27
- methods: {
28
- getRandomHeight() {
29
- const minHeight = 10;
30
- const maxHeight = 30;
31
- return Math.floor(Math.random() * (maxHeight - minHeight + 1)) + minHeight;
32
- }
33
- }
34
- };
35
- </script>
36
-
37
- <style scoped>
38
- .loading-skeleton {
39
- display: flex;
40
- flex-direction: column;
41
- gap: 12px;
42
- max-width: 400px;
43
- margin: 0 auto;
44
- overflow: hidden;
45
- }
46
-
47
- .line {
48
- width: 100%;
49
- background: linear-gradient(90deg, #f0f0f0 25%, #d8d8d8 50%, #f0f0f0 75%);
50
- background-size: 200% 100%;
51
- animation: shimmer 1.5s infinite linear;
52
- border-radius: 4px;
53
- opacity: 0.4;
54
- }
55
-
56
- @keyframes shimmer {
57
- 0% {
58
- background-position: -200% 0;
59
- }
60
-
61
- 100% {
62
- background-position: 200% 0;
63
- }
64
- }
1
+ <template>
2
+ <div class="loading-skeleton" :style="'height:' + height + 'px'">
3
+ <div v-for="index in totalLine" :key="index" class="line"
4
+ :style="{ height: getRandomHeight() + 'px', width: '100%' }"></div>
5
+ </div>
6
+ </template>
7
+
8
+ <script>
9
+ export default {
10
+ name: "LoadingCard",
11
+ props: {
12
+ totalLine: {
13
+ type: Number,
14
+ default: 3,
15
+ validator(value) {
16
+ return value >= 1 && value <= 10;
17
+ }
18
+ },
19
+ height: {
20
+ type: Number,
21
+ default: 200,
22
+ validator(value) {
23
+ return value > 0;
24
+ }
25
+ }
26
+ },
27
+ methods: {
28
+ getRandomHeight() {
29
+ const minHeight = 10;
30
+ const maxHeight = 30;
31
+ return Math.floor(Math.random() * (maxHeight - minHeight + 1)) + minHeight;
32
+ }
33
+ }
34
+ };
35
+ </script>
36
+
37
+ <style scoped>
38
+ .loading-skeleton {
39
+ display: flex;
40
+ flex-direction: column;
41
+ gap: 12px;
42
+ max-width: 400px;
43
+ margin: 0 auto;
44
+ overflow: hidden;
45
+ }
46
+
47
+ .line {
48
+ width: 100%;
49
+ background: linear-gradient(90deg, #f0f0f0 25%, #d8d8d8 50%, #f0f0f0 75%);
50
+ background-size: 200% 100%;
51
+ animation: shimmer 1.5s infinite linear;
52
+ border-radius: 4px;
53
+ opacity: 0.4;
54
+ }
55
+
56
+ @keyframes shimmer {
57
+ 0% {
58
+ background-position: -200% 0;
59
+ }
60
+
61
+ 100% {
62
+ background-position: 200% 0;
63
+ }
64
+ }
65
65
  </style>
@@ -1,169 +1,169 @@
1
- <template>
2
- <div>
3
- <Search />
4
- <br />
5
- <ScrollBar :minHeight="400" :maxHeight="400">
6
- <table class="table table-responsive-xs">
7
- <thead>
8
- <tr>
9
- <th><span class="title-header">Descrição</span></th>
10
- <th><span class="title-header">Exemplo</span></th>
11
- <th><span class="title-header">Parâmetro</span></th>
12
- </tr>
13
- </thead>
14
- <tbody v-for="(legendLocal, groupName) in grouped">
15
- <td class="group text-center" colspan="8">
16
- <div>{{ groupName }}</div>
17
- </td>
18
- <tr v-for="item in legendLocal">
19
- <td class="description">
20
- <span> {{ item.description }}</span>
21
- </td>
22
- <td>
23
- <span class="exemplo"> {{ item.example }}</span>
24
- </td>
25
- <td class="parametro">
26
- <span @click="copy(item.parameter)" v-clipboard="item.parameter">
27
- {{ item.parameter }}
28
- <span v-if="item.parameter">
29
- <span class="copy" v-if="copied != item.parameter">
30
- <span>Copiar</span>
31
- </span>
32
- <span class="copied" v-else>
33
- <span>Copiado</span>
34
- </span>
35
- </span>
36
- </span>
37
- </td>
38
- </tr>
39
- </tbody>
40
- </table>
41
- </ScrollBar>
42
- </div>
43
- </template>
44
- <script>
45
- import Search from "@nixweb/nixloc-ui/src/component/shared/Search.vue";
46
- import ScrollBar from "@nixweb/nixloc-ui/src/component/layout/ScrollBar.vue";
47
-
48
- import { mapGetters, mapState, mapMutations } from "vuex";
49
-
50
- export default {
51
- name: "ParameterLegend",
52
- components: {
53
- ScrollBar,
54
- Search,
55
- },
56
- props: {
57
- legend: [],
58
- module: String,
59
- },
60
- data() {
61
- return {
62
- legendLocal: [],
63
- copied: "",
64
- };
65
- },
66
- mounted() {
67
- this.legendLocal = this.legend;
68
- },
69
- methods: {
70
- ...mapMutations("generic", ["removeLoading"]),
71
- copy(parameter) {
72
- this.copied = parameter;
73
- },
74
- },
75
- computed: {
76
- ...mapGetters("generic", ["groupBy"]),
77
- ...mapState("generic", ["search", "executedSearch", "clearedSearch"]),
78
- grouped() {
79
- let legend = [];
80
- /* this.legendLocal.forEach((item) => {
81
- if (item.showModule.includes(this.module) || item.showModule == "all")
82
- legend.push(item);
83
- });*/
84
-
85
- var list = this.groupBy({ array: this.legendLocal, key: "groupName" });
86
- return list;
87
- },
88
- },
89
- watch: {
90
- executedSearch: function () {
91
- let legend = [];
92
- let self = this;
93
- setTimeout(function () {
94
- if (self.search.content) {
95
- self.legend.forEach(function (item) {
96
- if (self.search.filter.content == "equal") {
97
- if (item.description == self.search.content) legend.push(item);
98
- }
99
- if (self.search.filter.content == "contains") {
100
- if (item.description.includes(self.search.content))
101
- legend.push(item);
102
- }
103
- });
104
- self.legendLocal = legend;
105
- }
106
- self.removeLoading(["btnSearch", "btnClean"]);
107
- }, 300);
108
- },
109
- clearedSearch: function () {
110
- let self = this;
111
- setTimeout(function () {
112
- self.legendLocal = self.legend;
113
- self.removeLoading(["btnSearch", "btnClean"]);
114
- }, 300);
115
- },
116
- },
117
- };
118
- </script>
119
- <style scoped>
120
- .table th,
121
- .table td {
122
- height: 10px !important;
123
- padding-left: 5px !important;
124
- padding-top: 7px !important;
125
- padding-bottom: 5px !important;
126
- padding-right: 5px !important;
127
- border-bottom: 0px !important;
128
- }
129
-
130
- .title-header {
131
- font-size: 14px;
132
- color: #757d8c;
133
- font-weight: 400;
134
- text-transform: uppercase;
135
- }
136
-
137
- .group {
138
- background-color: #fafafc;
139
- font-size: 14px;
140
- font-weight: 500;
141
- }
142
-
143
- .description {
144
- width: 350px;
145
- }
146
-
147
- .div-warning {
148
- margin-bottom: 20px;
149
- }
150
-
151
- .parametro {
152
- font: 12px;
153
- width: 340px;
154
- cursor: pointer;
155
- }
156
-
157
- .exemplo {
158
- font-size: 14px;
159
- color: rgb(31, 31, 82);
160
- }
161
-
162
- .copy {
163
- color: rgb(31, 31, 82);
164
- }
165
-
166
- .copied {
167
- color: red;
168
- }
169
- </style>
1
+ <template>
2
+ <div>
3
+ <Search />
4
+ <br />
5
+ <ScrollBar :minHeight="400" :maxHeight="400">
6
+ <table class="table table-responsive-xs">
7
+ <thead>
8
+ <tr>
9
+ <th><span class="title-header">Descrição</span></th>
10
+ <th><span class="title-header">Exemplo</span></th>
11
+ <th><span class="title-header">Parâmetro</span></th>
12
+ </tr>
13
+ </thead>
14
+ <tbody v-for="(legendLocal, groupName) in grouped">
15
+ <td class="group text-center" colspan="8">
16
+ <div>{{ groupName }}</div>
17
+ </td>
18
+ <tr v-for="item in legendLocal">
19
+ <td class="description">
20
+ <span> {{ item.description }}</span>
21
+ </td>
22
+ <td>
23
+ <span class="exemplo"> {{ item.example }}</span>
24
+ </td>
25
+ <td class="parametro">
26
+ <span @click="copy(item.parameter)" v-clipboard="item.parameter">
27
+ {{ item.parameter }}
28
+ <span v-if="item.parameter">
29
+ <span class="copy" v-if="copied != item.parameter">
30
+ <span>Copiar</span>
31
+ </span>
32
+ <span class="copied" v-else>
33
+ <span>Copiado</span>
34
+ </span>
35
+ </span>
36
+ </span>
37
+ </td>
38
+ </tr>
39
+ </tbody>
40
+ </table>
41
+ </ScrollBar>
42
+ </div>
43
+ </template>
44
+ <script>
45
+ import Search from "@nixweb/nixloc-ui/src/component/shared/Search.vue";
46
+ import ScrollBar from "@nixweb/nixloc-ui/src/component/layout/ScrollBar.vue";
47
+
48
+ import { mapGetters, mapState, mapMutations } from "vuex";
49
+
50
+ export default {
51
+ name: "ParameterLegend",
52
+ components: {
53
+ ScrollBar,
54
+ Search,
55
+ },
56
+ props: {
57
+ legend: [],
58
+ module: String,
59
+ },
60
+ data() {
61
+ return {
62
+ legendLocal: [],
63
+ copied: "",
64
+ };
65
+ },
66
+ mounted() {
67
+ this.legendLocal = this.legend;
68
+ },
69
+ methods: {
70
+ ...mapMutations("generic", ["removeLoading"]),
71
+ copy(parameter) {
72
+ this.copied = parameter;
73
+ },
74
+ },
75
+ computed: {
76
+ ...mapGetters("generic", ["groupBy"]),
77
+ ...mapState("generic", ["search", "executedSearch", "clearedSearch"]),
78
+ grouped() {
79
+ let legend = [];
80
+ /* this.legendLocal.forEach((item) => {
81
+ if (item.showModule.includes(this.module) || item.showModule == "all")
82
+ legend.push(item);
83
+ });*/
84
+
85
+ var list = this.groupBy({ array: this.legendLocal, key: "groupName" });
86
+ return list;
87
+ },
88
+ },
89
+ watch: {
90
+ executedSearch: function () {
91
+ let legend = [];
92
+ let self = this;
93
+ setTimeout(function () {
94
+ if (self.search.content) {
95
+ self.legend.forEach(function (item) {
96
+ if (self.search.filter.content == "equal") {
97
+ if (item.description == self.search.content) legend.push(item);
98
+ }
99
+ if (self.search.filter.content == "contains") {
100
+ if (item.description.includes(self.search.content))
101
+ legend.push(item);
102
+ }
103
+ });
104
+ self.legendLocal = legend;
105
+ }
106
+ self.removeLoading(["btnSearch", "btnClean"]);
107
+ }, 300);
108
+ },
109
+ clearedSearch: function () {
110
+ let self = this;
111
+ setTimeout(function () {
112
+ self.legendLocal = self.legend;
113
+ self.removeLoading(["btnSearch", "btnClean"]);
114
+ }, 300);
115
+ },
116
+ },
117
+ };
118
+ </script>
119
+ <style scoped>
120
+ .table th,
121
+ .table td {
122
+ height: 10px !important;
123
+ padding-left: 5px !important;
124
+ padding-top: 7px !important;
125
+ padding-bottom: 5px !important;
126
+ padding-right: 5px !important;
127
+ border-bottom: 0px !important;
128
+ }
129
+
130
+ .title-header {
131
+ font-size: 14px;
132
+ color: #757d8c;
133
+ font-weight: 400;
134
+ text-transform: uppercase;
135
+ }
136
+
137
+ .group {
138
+ background-color: #fafafc;
139
+ font-size: 14px;
140
+ font-weight: 500;
141
+ }
142
+
143
+ .description {
144
+ width: 350px;
145
+ }
146
+
147
+ .div-warning {
148
+ margin-bottom: 20px;
149
+ }
150
+
151
+ .parametro {
152
+ font: 12px;
153
+ width: 340px;
154
+ cursor: pointer;
155
+ }
156
+
157
+ .exemplo {
158
+ font-size: 14px;
159
+ color: rgb(31, 31, 82);
160
+ }
161
+
162
+ .copy {
163
+ color: rgb(31, 31, 82);
164
+ }
165
+
166
+ .copied {
167
+ color: red;
168
+ }
169
+ </style>