@scalar/api-client 0.2.0 → 0.2.1

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 (59) hide show
  1. package/dist/components/SimpleTable/SimpleCell.vue.d.ts.map +1 -1
  2. package/dist/components/SimpleTable/SimpleHeader.vue.d.ts.map +1 -1
  3. package/dist/components/SimpleTable/SimpleRow.vue.d.ts.map +1 -1
  4. package/dist/components/SimpleTable/SimpleTable.vue.d.ts.map +1 -1
  5. package/dist/fixtures/index.d.ts +1 -1
  6. package/dist/fixtures/index.d.ts.map +1 -1
  7. package/dist/index.js +37 -26
  8. package/package.json +6 -6
  9. package/src/components/ApiClient/AddressBar.vue +462 -0
  10. package/src/components/ApiClient/ApiClient.vue +266 -0
  11. package/src/components/ApiClient/Request/Request.vue +271 -0
  12. package/src/components/ApiClient/Request/RequestAuth.vue +221 -0
  13. package/src/components/ApiClient/Request/RequestBody.vue +39 -0
  14. package/src/components/ApiClient/Request/RequestHeaders.vue +24 -0
  15. package/src/components/ApiClient/Request/RequestQuery.vue +25 -0
  16. package/src/components/ApiClient/Request/RequestVariables.vue +25 -0
  17. package/src/components/ApiClient/Request/index.ts +1 -0
  18. package/src/components/ApiClient/RequestHistory.vue +114 -0
  19. package/src/components/ApiClient/RequestHistoryItem.vue +59 -0
  20. package/src/components/ApiClient/Response/Copilot.vue.bak +385 -0
  21. package/src/components/ApiClient/Response/Response.vue +120 -0
  22. package/src/components/ApiClient/Response/ResponseBody.vue +23 -0
  23. package/src/components/ApiClient/Response/ResponseHeaders.vue +52 -0
  24. package/src/components/ApiClient/Response/ResponseMetaInformation.vue +58 -0
  25. package/src/components/ApiClient/Response/index.ts +1 -0
  26. package/src/components/ApiClient/index.ts +1 -0
  27. package/src/components/CodeMirror/CodeMirror.vue +232 -0
  28. package/src/components/CodeMirror/extensions/variables.ts +41 -0
  29. package/src/components/CodeMirror/index.ts +1 -0
  30. package/src/components/CollapsibleSection/CollapsibleSection.vue +149 -0
  31. package/src/components/CollapsibleSection/index.ts +1 -0
  32. package/src/components/FlowModal.vue +133 -0
  33. package/src/components/Grid/Grid.vue +511 -0
  34. package/src/components/Grid/SimpleGrid.vue +33 -0
  35. package/src/components/Grid/index.ts +2 -0
  36. package/src/components/HelpfulLink.vue +19 -0
  37. package/src/components/SimpleTable/SimpleCell.vue +47 -0
  38. package/src/components/SimpleTable/SimpleHeader.vue +17 -0
  39. package/src/components/SimpleTable/SimpleRow.vue +14 -0
  40. package/src/components/SimpleTable/SimpleTable.vue +13 -0
  41. package/src/components/SimpleTable/index.ts +4 -0
  42. package/src/fixtures/httpHeaders.ts +530 -0
  43. package/src/fixtures/httpStatusCodes.ts +259 -0
  44. package/src/fixtures/index.ts +6 -0
  45. package/src/helpers/createPlaceholderRequest.ts +16 -0
  46. package/src/helpers/generateParameters.ts +19 -0
  47. package/src/helpers/generateRequest.ts +26 -0
  48. package/src/helpers/index.ts +5 -0
  49. package/src/helpers/mapFromArray.ts +16 -0
  50. package/src/helpers/sendRequest.ts +94 -0
  51. package/src/hooks/index.ts +2 -0
  52. package/src/hooks/useCopilot.ts +64 -0
  53. package/src/hooks/useOperation.test.ts +7 -0
  54. package/src/hooks/useOperation.ts +43 -0
  55. package/src/index.ts +9 -0
  56. package/src/stores/apiClientRequestStore.ts +103 -0
  57. package/src/stores/apiClientStore.ts +57 -0
  58. package/src/stores/index.ts +5 -0
  59. package/src/types.ts +181 -0
@@ -0,0 +1,511 @@
1
+ <script setup lang="ts">
2
+ import { ref } from 'vue'
3
+
4
+ defineProps<{ items: any[] }>()
5
+
6
+ const showDescription = ref(false)
7
+ </script>
8
+ <template>
9
+ <div class="table">
10
+ <div class="table-row">
11
+ <div class="table-row-item">
12
+ <label>Key</label>
13
+ </div>
14
+ <div class="table-row-item">
15
+ <label>Value</label>
16
+ </div>
17
+ <div
18
+ v-show="showDescription"
19
+ class="table-row-item">
20
+ <label>Description</label>
21
+ </div>
22
+ <div
23
+ class="table-row-meta"
24
+ @click="showDescription = !showDescription">
25
+ <svg
26
+ fill="currentColor"
27
+ height="12"
28
+ viewBox="0 0 18 12"
29
+ width="18"
30
+ xmlns="http://www.w3.org/2000/svg">
31
+ <path
32
+ d="M0 12h12v-2H0v2zM0 0v2h18V0H0zm0 7h18V5H0v2z"
33
+ fill-rule="nonzero" />
34
+ </svg>
35
+ </div>
36
+ </div>
37
+ <div
38
+ v-for="item in items"
39
+ :key="item.id"
40
+ class="table-row"
41
+ :class="item.customClass">
42
+ <div class="table-row-item">
43
+ <input
44
+ disabled
45
+ :value="item.name" />
46
+ <!-- <MultilineEditor
47
+ :elID="`key_${item}`"
48
+ :focus="newlyAdded === `key_${item}` ? true : false"
49
+ :placeholder="''"
50
+ :singleLineEditor="true"
51
+ :value="dataObject[item].key"
52
+ @update="value => $emit('updateKey', item, value)" /> -->
53
+ <!-- <input :value="dataObject[item].key" @input="$emit('updateKey', item, $event.target.value)" type="text"> -->
54
+ </div>
55
+ <div class="table-row-item">
56
+ <input
57
+ v-model="item.value"
58
+ placeholder="value" />
59
+ <!-- <MultilineEditor
60
+ :elID="`value_${item}`"
61
+ :focus="newlyAdded === `value_${item}` ? true : false"
62
+ :placeholder="''"
63
+ :singleLineEditor="true"
64
+ :value="dataObject[item].value"
65
+ @update="value => $emit('updateValue', item, value)" /> -->
66
+ <!-- <input :ref="`value_${item}`" :value="dataObject[item].value" @input="$emit('updateValue', item, $event.target.value)" type="text"> -->
67
+ <div class="table-row-item-menu">
68
+ <svg
69
+ height="16"
70
+ viewBox="0 0 4 16"
71
+ width="4"
72
+ xmlns="http://www.w3.org/2000/svg">
73
+ <path
74
+ d="M2 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2C.9 6 0 6.9 0 8s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"
75
+ fill-rule="nonzero" />
76
+ </svg>
77
+ </div>
78
+ </div>
79
+ <div
80
+ v-show="showDescription"
81
+ class="table-row-item">
82
+ <!-- <input
83
+ :ref="`description_${item}`"
84
+ type="text"
85
+ :value="dataObject[item].description"
86
+ @input="$emit('updateDescription', item, $event.target.value)"> -->
87
+ </div>
88
+ <div class="table-row-meta">
89
+ <label class="meta-check">
90
+ <input type="checkbox" />
91
+ <span class="meta-checkmark" />
92
+ </label>
93
+ <!-- @click="$emit('deleteItem', item)">
94
+ <polyline points="3 6 5 6 21 6" /><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" -->
95
+ </div>
96
+ </div>
97
+ </div>
98
+ </template>
99
+ <style>
100
+ .table {
101
+ border: 1px solid var(--theme-border-color);
102
+ background: transparent;
103
+ border-radius: var(--theme-radius-lg);
104
+ width: 100%;
105
+ }
106
+ .table-row {
107
+ border-bottom: 1px solid var(--theme-border-color);
108
+ display: flex;
109
+ position: relative;
110
+ }
111
+ .table-row__add {
112
+ border-radius: 0 0 var(--theme-radius-lg) var(--theme-radius-lg);
113
+ border-bottom: none;
114
+ }
115
+ .table-row.required-parameter .table-row-item:nth-of-type(2):after {
116
+ content: 'Required';
117
+ position: absolute;
118
+ top: 4px;
119
+ right: 0;
120
+ padding: 5px 9px 5px 6px;
121
+ font-weight: var(--theme-semibold);
122
+ font-size: 12px;
123
+ background: var(--theme-background-2);
124
+ box-shadow: -2px 0 4px var(--theme-background-2);
125
+ }
126
+ .table-row.required-parameter
127
+ .table-row-item:nth-of-type(2):focus-within:after {
128
+ display: none;
129
+ }
130
+ .table-row:last-of-type {
131
+ border-bottom: none;
132
+ }
133
+ .table-row__active {
134
+ border-radius: 0 0 var(--theme-radius-lg) var(--theme-radius-lg);
135
+ }
136
+ .table-row-drag {
137
+ width: 20px;
138
+ flex-shrink: 0;
139
+ border-right: 1px solid var(--theme-border-color);
140
+ align-items: center;
141
+ justify-content: center;
142
+ display: none;
143
+ }
144
+ .table-row-drag svg {
145
+ width: 6px;
146
+ fill: var(--theme-color-disabled);
147
+ }
148
+ .table-row-drag .table-row-drag-add {
149
+ width: 8px;
150
+ }
151
+ .table-row-item {
152
+ width: 100%;
153
+ border-right: 1px solid var(--theme-border-color);
154
+ position: relative;
155
+ }
156
+ .table-row-item-menu {
157
+ position: absolute;
158
+ right: 12px;
159
+ background: var(--theme-background-3);
160
+ border: 1px solid var(--theme-border-color);
161
+ width: 24px;
162
+ height: 24px;
163
+ top: 50%;
164
+ transform: translate3d(0, -50%, 0);
165
+ border-radius: var(--theme-radius-lg);
166
+ display: flex;
167
+ align-items: center;
168
+ justify-content: center;
169
+ opacity: 0;
170
+ cursor: pointer;
171
+ }
172
+ .table-row-item input:focus + .table-row-item-menu,
173
+ .table-row-item:hover .table-row-item-menu {
174
+ opacity: 1;
175
+ }
176
+ .table-row-item-menu svg {
177
+ height: 12px;
178
+ width: initial;
179
+ fill: var(--theme-color-disabled);
180
+ }
181
+ .table-row-item input {
182
+ border: none;
183
+ appearance: none;
184
+ outline: none;
185
+ padding: 9px;
186
+ width: 100%;
187
+ color: var(--theme-color-1);
188
+ font-size: 12px;
189
+ }
190
+ .table-row-item input[disabled] {
191
+ background: transparent;
192
+ font-family: var(--theme-font-code);
193
+ }
194
+ .table-row-item input:focus {
195
+ background: var(--theme-background-2);
196
+ }
197
+ .table-row-item label {
198
+ background: transparent;
199
+ text-transform: uppercase;
200
+ display: block;
201
+ padding: 9px;
202
+ font-weight: var(--theme-bold);
203
+ color: var(--theme-color-disabled);
204
+ font-size: 12px;
205
+ }
206
+ .table-row-meta {
207
+ overflow: hidden;
208
+ flex-shrink: 0;
209
+ transition: all 0.15s ease-in-out;
210
+ display: flex;
211
+ align-items: center;
212
+ justify-content: center;
213
+ width: 32px;
214
+ user-select: none;
215
+ }
216
+ .table-row-meta-check {
217
+ width: 18px;
218
+ height: 18px;
219
+ border-radius: var(--theme-radius-lg);
220
+ background: rgba(47, 177, 228, 0.1);
221
+ }
222
+ .table-row-meta svg {
223
+ width: 13px;
224
+ height: 13px;
225
+ margin: 0 1px;
226
+ color: var(--theme-color-disabled);
227
+ cursor: pointer;
228
+ }
229
+ .table-row-meta svg:hover {
230
+ color: var(--theme-color-2);
231
+ }
232
+ .meta-check {
233
+ display: flex;
234
+ position: relative;
235
+ cursor: pointer;
236
+ align-items: center;
237
+ font-size: 12px;
238
+ border-radius: var(--theme-radius-lg);
239
+ user-select: none;
240
+ margin: 0 1px;
241
+ transition: all 0.15s ease-in-out;
242
+ }
243
+ .meta-check input {
244
+ position: absolute;
245
+ opacity: 0;
246
+ cursor: pointer;
247
+ height: 0;
248
+ width: 0;
249
+ }
250
+ .meta-checkmark {
251
+ height: 15px;
252
+ width: 15px;
253
+ background: var(--theme-background-1);
254
+ border-radius: 3px;
255
+ display: flex;
256
+ align-items: center;
257
+ justify-content: center;
258
+ position: relative;
259
+ }
260
+ .meta-check .meta-checkmark:after {
261
+ content: '';
262
+ display: none;
263
+ width: 5px;
264
+ height: 8px;
265
+ border: solid var(--theme-color-1);
266
+ border-width: 0 1.5px 1.5px 0;
267
+ transform: rotate(45deg) translate3d(0, -1px, 0);
268
+ }
269
+ .meta-check input:checked ~ .meta-checkmark:after {
270
+ display: block;
271
+ }
272
+ </style>
273
+ <style>
274
+ .navtable {
275
+ width: 100%;
276
+ }
277
+ .navtable-follow {
278
+ background-color: black;
279
+ color: white;
280
+ font-size: 9px;
281
+ padding: 6px;
282
+ display: -webkit-box;
283
+ max-width: 250px;
284
+ -webkit-line-clamp: 12;
285
+ border-radius: 3px;
286
+ -webkit-box-orient: vertical;
287
+ overflow: hidden;
288
+ line-height: 1.24;
289
+ transform: translate3d(10px, 0, 0);
290
+ }
291
+ .navtable-follow:after {
292
+ content: '';
293
+ position: absolute;
294
+ bottom: 0;
295
+ width: 100%;
296
+ height: 6px;
297
+ background-color: black;
298
+ }
299
+ .navtable-follow * {
300
+ font-family: var(--theme-font-code) !important;
301
+ }
302
+ .navtable-table {
303
+ position: relative;
304
+ display: flex;
305
+ flex-direction: column;
306
+ min-height: 381px;
307
+ }
308
+ .navtable-item {
309
+ display: flex;
310
+ position: relative;
311
+ color: var(--theme-color-1);
312
+ border-top: 1px solid var(--theme-border-color);
313
+ font-weight: var(--theme-semibold);
314
+ }
315
+ .navtable-item > div {
316
+ word-wrap: break-word;
317
+ }
318
+ .navtable-item > div:not(:first-child) {
319
+ border-left: 1px solid var(--theme-border-color);
320
+ }
321
+ .navtable-item-action {
322
+ color: var(--theme-color-2);
323
+ font-size: 12px;
324
+ font-weight: var(--theme-bold);
325
+ background: var(--scalar-api-client-bg3);
326
+ border: none;
327
+ border-radius: 30px;
328
+ appearance: none;
329
+ max-height: 25px;
330
+ margin-left: 12px;
331
+ margin-right: 6px;
332
+ padding: 4px 8px;
333
+ outline: none;
334
+ cursor: pointer;
335
+ opacity: 0;
336
+ transition: opacity 0.15s ease-in-out;
337
+ white-space: nowrap;
338
+ position: relative;
339
+ }
340
+ .navtable-item-action:hover {
341
+ color: var(--theme-color-1);
342
+ background: var(--scalar-api-client-gradient);
343
+ box-shadow: 0 0 0 1px var(--theme-border-color);
344
+ }
345
+ .navtable-item-action:focus {
346
+ background: var(--theme-background-2);
347
+ }
348
+ .navtable-item:hover,
349
+ .navtable-item:focus-within .navtable-item-action {
350
+ opacity: 1;
351
+ }
352
+ .navtable-item-add {
353
+ display: flex;
354
+ align-items: center;
355
+ padding: 9px;
356
+ font-weight: var(--theme-bold);
357
+ outline: none;
358
+ border: none;
359
+ appearance: none;
360
+ background: transparent;
361
+ color: var(--theme-color-1);
362
+ }
363
+ .navtable-item-add:hover {
364
+ background: var(--theme-background-2);
365
+ cursor: pointer;
366
+ }
367
+ .navtable-item-25 {
368
+ width: 25%;
369
+ font-size: 12px;
370
+ display: flex;
371
+ align-items: center;
372
+ }
373
+ .navtable-item-33 {
374
+ width: 33.33333%;
375
+ display: flex;
376
+ font-size: 12px;
377
+ align-items: center;
378
+ }
379
+ .navtable-item-66 {
380
+ width: 66.6666%;
381
+ display: flex;
382
+ font-size: 12px;
383
+ align-items: center;
384
+ }
385
+ .navtable-item-75 {
386
+ width: 75%;
387
+ display: flex;
388
+ align-items: center;
389
+ }
390
+ .navtable-item-75:focus-within {
391
+ background: var(--theme-background-2);
392
+ }
393
+ .navtable-item-40 {
394
+ width: 40%;
395
+ display: flex;
396
+ align-items: center;
397
+ }
398
+ .navtable-item-20 {
399
+ width: 20%;
400
+ display: flex;
401
+ align-items: center;
402
+ }
403
+ .navtable-item-50 {
404
+ width: 50%;
405
+ display: flex;
406
+ align-items: center;
407
+ }
408
+ .navtable-item-50:focus-within {
409
+ background: var(--theme-background-2);
410
+ }
411
+ .navtable-item p {
412
+ padding: 9px;
413
+ }
414
+ .navtable-item input {
415
+ padding: 12px 6px;
416
+ border: none;
417
+ outline: none;
418
+ appearance: none;
419
+ font-size: 12px;
420
+ color: var(--theme-color-1);
421
+ background: transparent;
422
+ width: 100%;
423
+ }
424
+ .navtable-item input:focus {
425
+ background: var(--theme-background-2);
426
+ }
427
+ .navtable-item-select {
428
+ position: relative;
429
+ }
430
+ .navtable-item-select select {
431
+ background: transparent;
432
+ outline: none;
433
+ border: none;
434
+ font-size: 12px;
435
+ appearance: none;
436
+ width: 100%;
437
+ padding: 12px 6px;
438
+ top: 0;
439
+ position: relative;
440
+ cursor: pointer;
441
+ color: var(--theme-color-2);
442
+ }
443
+ .navtable-item-select svg {
444
+ position: absolute;
445
+ right: 6px;
446
+ color: var(--theme-color-ghost);
447
+ width: 6px;
448
+ top: 12px;
449
+ pointer-events: none;
450
+ }
451
+ .navtable-item .option {
452
+ padding: 12px 6px;
453
+ font-size: 12px;
454
+ color: var(--theme-color-1);
455
+ width: 100%;
456
+ }
457
+ .navtable-item label {
458
+ color: var(--theme-color-disabled);
459
+ font-size: 12px;
460
+ font-weight: var(--theme-bold);
461
+ text-transform: uppercase;
462
+ padding: 9px;
463
+ display: block;
464
+ width: 100%;
465
+ }
466
+ .navtable-item-response {
467
+ padding: 0 9px;
468
+ }
469
+ .navtable-item-response span {
470
+ font-size: 12px;
471
+ display: flex;
472
+ align-items: center;
473
+ margin-right: 6px;
474
+ min-width: 50px;
475
+ }
476
+ .scalar-api-client__status--1xx:before,
477
+ .scalar-api-client__status--2xx:before,
478
+ .scalar-api-client__status--3xx:before,
479
+ .scalar-api-client__status--4xx:before,
480
+ .scalar-api-client__status--5xx:before,
481
+ .scalar-api-client__status--6xx:before {
482
+ content: '';
483
+ width: 12px;
484
+ height: 12px;
485
+ border-radius: 50%;
486
+ margin-right: 4px;
487
+ background: var(--theme-background-2);
488
+ }
489
+ .scalar-api-client__status--2xx:before {
490
+ background: green;
491
+ }
492
+ .scalar-api-client__status--3xx:before {
493
+ background: orange;
494
+ }
495
+ .scalar-api-client__status--4xx:before {
496
+ background: red;
497
+ }
498
+ .navtable-item-response span:empty {
499
+ display: none;
500
+ }
501
+ .simpletable.navtable {
502
+ padding: 0;
503
+ }
504
+ .simpletable.navtable .navtable-item-66,
505
+ .simpletable.navtable .navtable-item-33 {
506
+ display: block;
507
+ }
508
+ .simpletable.navtable .navtable-table {
509
+ height: fit-content;
510
+ }
511
+ </style>
@@ -0,0 +1,33 @@
1
+ <script setup lang="ts">
2
+ defineProps<{ items: any[] }>()
3
+ </script>
4
+
5
+ <template>
6
+ <div class="navtable simpletable">
7
+ <div class="navtable-table">
8
+ <div class="navtable-item navtable-item__top">
9
+ <div class="navtable-item-33">
10
+ <label for="">Name</label>
11
+ </div>
12
+ <div class="navtable-item-66">
13
+ <label for="">Value</label>
14
+ </div>
15
+ </div>
16
+ <div
17
+ v-for="item in items"
18
+ :key="item.id"
19
+ class="navtable-item">
20
+ <div class="navtable-item-33">
21
+ <p>
22
+ {{ item.name }}
23
+ </p>
24
+ </div>
25
+ <div class="navtable-item-66">
26
+ <p>
27
+ {{ item.value }}
28
+ </p>
29
+ </div>
30
+ </div>
31
+ </div>
32
+ </div>
33
+ </template>
@@ -0,0 +1,2 @@
1
+ export { default as Grid } from './Grid.vue'
2
+ export { default as SimpleGrid } from './SimpleGrid.vue'
@@ -0,0 +1,19 @@
1
+ <script lang="ts" setup>
2
+ defineProps<{ href: string }>()
3
+ </script>
4
+ <template>
5
+ <a
6
+ :href="href"
7
+ rel="noopener noreferrer"
8
+ target="_blank">
9
+ <slot />
10
+ </a>
11
+ </template>
12
+ <style scoped>
13
+ a {
14
+ text-decoration: underline;
15
+ text-decoration-color: var(--theme-border-color);
16
+ text-underline-offset: 2px;
17
+ cursor: help;
18
+ }
19
+ </style>
@@ -0,0 +1,47 @@
1
+ <script lang="ts" setup>
2
+ import HelpfulLink from '../HelpfulLink.vue'
3
+
4
+ withDefaults(
5
+ defineProps<{ wrap?: boolean; strong?: boolean; href?: string | null }>(),
6
+ {
7
+ wrap: true,
8
+ strong: false,
9
+ href: null,
10
+ },
11
+ )
12
+ </script>
13
+ <template>
14
+ <td
15
+ class="simple-cell"
16
+ :class="{ wrap: wrap, strong: strong }">
17
+ <template v-if="href">
18
+ <HelpfulLink :href="href">
19
+ <slot />
20
+ </HelpfulLink>
21
+ </template>
22
+ <template v-else>
23
+ <slot />
24
+ </template>
25
+ </td>
26
+ </template>
27
+ <style scoped>
28
+ .simple-cell {
29
+ border-right: 1px solid var(--theme-border-color);
30
+ position: relative;
31
+ padding: 0.75em;
32
+ color: var(--theme-color-1);
33
+ white-space: nowrap;
34
+ }
35
+
36
+ .simple-cell:last-of-type {
37
+ border-right: none;
38
+ }
39
+
40
+ .simple-cell.wrap {
41
+ white-space: normal;
42
+ }
43
+
44
+ .simple-cell.strong {
45
+ font-weight: var(--theme-semibold);
46
+ }
47
+ </style>
@@ -0,0 +1,17 @@
1
+ <script lang="ts" setup>
2
+ import SimpleCell from './SimpleCell.vue'
3
+ </script>
4
+ <template>
5
+ <SimpleCell
6
+ as="th"
7
+ class="simple-header">
8
+ <slot />
9
+ </SimpleCell>
10
+ </template>
11
+ <style scoped>
12
+ .simple-header {
13
+ color: var(--theme-color-disabled);
14
+ font-weight: var(--theme-bold);
15
+ text-transform: uppercase;
16
+ }
17
+ </style>
@@ -0,0 +1,14 @@
1
+ <template>
2
+ <tr class="simple-row">
3
+ <slot />
4
+ </tr>
5
+ </template>
6
+ <style scoped>
7
+ .simple-row {
8
+ border-top: 1px solid var(--theme-border-color);
9
+ }
10
+
11
+ .simple-row:last-of-type {
12
+ border-bottom: 1px solid var(--theme-border-color);
13
+ }
14
+ </style>
@@ -0,0 +1,13 @@
1
+ <template>
2
+ <table class="simple-table">
3
+ <slot />
4
+ </table>
5
+ </template>
6
+
7
+ <style scoped>
8
+ .simple-table {
9
+ display: table;
10
+ width: 100%;
11
+ margin: 1em 0;
12
+ }
13
+ </style>
@@ -0,0 +1,4 @@
1
+ export { default as SimpleCell } from './SimpleCell.vue'
2
+ export { default as SimpleHeader } from './SimpleHeader.vue'
3
+ export { default as SimpleRow } from './SimpleRow.vue'
4
+ export { default as SimpleTable } from './SimpleTable.vue'