vueless 1.3.1-beta.1 → 1.3.2-beta.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 (78) hide show
  1. package/icons/internal/progress_activity.svg +1 -0
  2. package/package.json +1 -1
  3. package/ui.container-accordion/tests/UAccordion.test.ts +6 -9
  4. package/ui.container-accordion-item/tests/UAccordionItem.test.ts +18 -41
  5. package/ui.container-card/config.ts +2 -0
  6. package/ui.container-card/tests/UCard.test.ts +14 -31
  7. package/ui.container-card/types.ts +1 -1
  8. package/ui.container-col/tests/UCol.test.ts +11 -25
  9. package/ui.container-drawer/config.ts +1 -0
  10. package/ui.container-drawer/types.ts +1 -1
  11. package/ui.container-group/tests/UGroup.test.ts +12 -26
  12. package/ui.container-groups/tests/UGroups.test.ts +4 -11
  13. package/ui.container-modal/UModal.vue +1 -1
  14. package/ui.container-modal/config.ts +2 -1
  15. package/ui.container-modal/types.ts +1 -1
  16. package/ui.container-modal-confirm/UModalConfirm.vue +2 -2
  17. package/ui.container-modal-confirm/tests/UModalConfirm.test.ts +28 -57
  18. package/ui.container-modal-confirm/types.ts +1 -1
  19. package/ui.container-page/config.ts +2 -0
  20. package/ui.container-page/tests/UPage.test.ts +18 -38
  21. package/ui.container-page/types.ts +1 -1
  22. package/ui.container-row/tests/URow.test.ts +11 -25
  23. package/ui.form-calendar/config.ts +0 -1
  24. package/ui.form-checkbox/config.ts +14 -15
  25. package/ui.form-checkbox/storybook/docs.mdx +0 -16
  26. package/ui.form-checkbox/storybook/optionKeys.mdx +17 -0
  27. package/ui.form-checkbox/storybook/stories.ts +1 -3
  28. package/ui.form-checkbox-group/storybook/docs.mdx +2 -2
  29. package/ui.form-checkbox-multi-state/storybook/docs.mdx +3 -0
  30. package/ui.loader/ULoader.vue +10 -2
  31. package/ui.loader/config.ts +14 -1
  32. package/ui.loader/storybook/stories.ts +4 -1
  33. package/ui.loader/tests/ULoader.test.ts +74 -17
  34. package/ui.loader/types.ts +5 -0
  35. package/ui.loader-overlay/tests/ULoaderOverlay.test.ts +6 -15
  36. package/ui.loader-progress/tests/ULoaderProgress.test.ts +8 -18
  37. package/ui.navigation-breadcrumbs/tests/UBreadcrumbs.test.ts +18 -40
  38. package/ui.navigation-pagination/tests/UPagination.test.ts +18 -40
  39. package/ui.navigation-progress/tests/UProgress.test.ts +11 -25
  40. package/ui.navigation-tab/tests/UTab.test.ts +21 -46
  41. package/ui.navigation-tabs/tests/UTabs.test.ts +13 -30
  42. package/ui.other-chip/tests/UChip.test.ts +13 -29
  43. package/ui.other-dot/tests/UDot.test.ts +4 -10
  44. package/ui.other-theme-color-toggle/tests/UThemeColorToggle.test.ts +13 -29
  45. package/ui.skeleton/USkeleton.vue +6 -6
  46. package/ui.skeleton/config.ts +1 -13
  47. package/ui.skeleton/storybook/stories.ts +3 -20
  48. package/ui.skeleton/tests/USkeleton.test.ts +2 -27
  49. package/ui.skeleton/types.ts +0 -5
  50. package/ui.skeleton-choice/USkeletonChoice.vue +8 -8
  51. package/ui.skeleton-choice/config.ts +0 -1
  52. package/ui.skeleton-choice/storybook/stories.ts +3 -6
  53. package/ui.skeleton-choice/tests/USkeletonChoice.test.ts +7 -35
  54. package/ui.skeleton-choice/types.ts +0 -5
  55. package/ui.skeleton-input/USkeletonInput.vue +11 -10
  56. package/ui.skeleton-input/config.ts +0 -1
  57. package/ui.skeleton-input/storybook/stories.ts +4 -7
  58. package/ui.skeleton-input/tests/USkeletonInput.test.ts +11 -48
  59. package/ui.skeleton-input/types.ts +0 -5
  60. package/ui.skeleton-text/USkeletonText.vue +8 -8
  61. package/ui.skeleton-text/config.ts +2 -2
  62. package/ui.skeleton-text/storybook/stories.ts +1 -4
  63. package/ui.skeleton-text/tests/USkeletonText.test.ts +5 -32
  64. package/ui.skeleton-text/types.ts +0 -5
  65. package/ui.text-alert/tests/UAlert.test.ts +17 -38
  66. package/ui.text-badge/tests/UBadge.test.ts +19 -42
  67. package/ui.text-block/UText.vue +7 -7
  68. package/ui.text-block/config.ts +8 -7
  69. package/ui.text-block/storybook/stories.ts +13 -25
  70. package/ui.text-block/tests/UText.test.ts +27 -28
  71. package/ui.text-block/types.ts +6 -1
  72. package/ui.text-empty/tests/UEmpty.test.ts +14 -31
  73. package/ui.text-file/tests/UFile.test.ts +13 -30
  74. package/ui.text-files/tests/UFiles.test.ts +14 -32
  75. package/ui.text-header/config.ts +2 -0
  76. package/ui.text-header/tests/UHeader.test.ts +10 -23
  77. package/ui.text-notify/tests/UNotify.test.ts +12 -26
  78. package/ui.text-number/tests/UNumber.test.ts +16 -35
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M480-74.02q-85.48 0-159.53-31.38-74.04-31.38-128.87-86.2-54.82-54.83-86.2-128.87Q74.02-394.52 74.02-480q0-85.47 31.38-159.48 31.37-74.02 86.16-128.91 54.79-54.89 128.86-86.36 74.07-31.47 159.58-31.47 13.67 0 23.87 10.34 10.2 10.33 10.2 23.99 0 13.65-10.2 23.85-10.2 10.19-23.87 10.19-140.29 0-239.07 98.78T142.15-480q0 140.28 98.78 239.07 98.78 98.78 239.07 98.78 140.28 0 239.07-98.78 98.78-98.78 98.78-239.07 0-13.67 10.19-23.87 10.2-10.2 23.85-10.2 13.66 0 23.99 10.2 10.34 10.2 10.34 23.87 0 85.51-31.48 159.58-31.49 74.08-86.32 128.88t-128.88 86.16Q565.5-74.02 480-74.02Z"/></svg>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vueless",
3
- "version": "1.3.1-beta.1",
3
+ "version": "1.3.2-beta.0",
4
4
  "description": "Vue Styleless UI Component Library, powered by Tailwind CSS.",
5
5
  "author": "Johnny Grid <hello@vueless.com> (https://vueless.com)",
6
6
  "homepage": "https://vueless.com",
@@ -11,9 +11,8 @@ describe("UAccordion", () => {
11
11
  { value: "b", title: "B" },
12
12
  ];
13
13
 
14
- // Props
15
14
  describe("Props", () => {
16
- it("renders items from options", () => {
15
+ it("Options – renders items from options", () => {
17
16
  const component = mount(UAccordion, {
18
17
  props: { options },
19
18
  });
@@ -23,7 +22,7 @@ describe("UAccordion", () => {
23
22
  expect(items.length).toBe(options.length);
24
23
  });
25
24
 
26
- it("passes base props down to items", () => {
25
+ it("Base Props – passes base props down to items", () => {
27
26
  const component = mount(UAccordion, {
28
27
  props: { size: "md", disabled: true, options },
29
28
  });
@@ -34,7 +33,7 @@ describe("UAccordion", () => {
34
33
  expect(item.props("disabled")).toBe(true);
35
34
  });
36
35
 
37
- it("applies data-test attribute to wrapper", () => {
36
+ it("Data Test – applies data-test attribute to wrapper", () => {
38
37
  const dataTest = "accordion-test";
39
38
 
40
39
  const component = mount(UAccordion, {
@@ -45,9 +44,8 @@ describe("UAccordion", () => {
45
44
  });
46
45
  });
47
46
 
48
- // Exposed refs
49
47
  describe("Exposed refs", () => {
50
- it("exposes accordionRef", () => {
48
+ it("accordionRef – exposes accordionRef", () => {
51
49
  const component = mount(UAccordion);
52
50
 
53
51
  expect(component.vm.accordionRef).toBeDefined();
@@ -55,9 +53,8 @@ describe("UAccordion", () => {
55
53
  });
56
54
  });
57
55
 
58
- // Events
59
56
  describe("Events", () => {
60
- it("emits update:modelValue when an item is toggled (single)", async () => {
57
+ it("Model Value – emits update:modelValue when an item is toggled (single)", async () => {
61
58
  const modelValue = ref<string | null>(null);
62
59
 
63
60
  const component = mount(UAccordion, {
@@ -86,7 +83,7 @@ describe("UAccordion", () => {
86
83
  expect(updates2?.[1]).toEqual([null]);
87
84
  });
88
85
 
89
- it("emits update:modelValue with arrays when multiple=true", async () => {
86
+ it("Model Value – emits update:modelValue with arrays when multiple=true", async () => {
90
87
  const modelValue = ref<string[]>([]);
91
88
 
92
89
  const component = mount(UAccordion, {
@@ -7,10 +7,8 @@ import UIcon from "../../ui.image-icon/UIcon.vue";
7
7
  import type { Props } from "../types";
8
8
 
9
9
  describe("UAccordionItem", () => {
10
- // Props
11
10
  describe("Props", () => {
12
- // Title prop
13
- it("renders with title prop", () => {
11
+ it("Title – renders with title prop", () => {
14
12
  const title = "Accordion Title";
15
13
 
16
14
  const component = mount(UAccordionItem, {
@@ -22,8 +20,7 @@ describe("UAccordionItem", () => {
22
20
  expect(component.find("[vl-key='title']").text()).toContain(title);
23
21
  });
24
22
 
25
- // Description prop
26
- it("renders with description prop", () => {
23
+ it("Description – renders with description prop", () => {
27
24
  const description = "Accordion Description";
28
25
 
29
26
  const component = mount(UAccordionItem, {
@@ -35,8 +32,7 @@ describe("UAccordionItem", () => {
35
32
  expect(component.find("[vl-key='description']").text()).toBe(description);
36
33
  });
37
34
 
38
- // Size prop
39
- it("applies correct size classes", () => {
35
+ it("Size – applies correct size classes", () => {
40
36
  const sizeClasses = {
41
37
  sm: "text-small",
42
38
  md: "text-medium",
@@ -54,8 +50,7 @@ describe("UAccordionItem", () => {
54
50
  });
55
51
  });
56
52
 
57
- // ToggleIcon prop
58
- it("applies correct toggle icon behavior", () => {
53
+ it("Toggle Icon – applies correct toggle icon behavior", () => {
59
54
  const toggleIconTests = [
60
55
  { toggleIcon: true, exists: true, iconName: "keyboard_arrow_down" },
61
56
  { toggleIcon: "custom_icon", exists: true, iconName: "custom_icon" },
@@ -79,8 +74,7 @@ describe("UAccordionItem", () => {
79
74
  });
80
75
  });
81
76
 
82
- // ID prop
83
- it("uses provided id prop", () => {
77
+ it("ID – uses provided id prop", () => {
84
78
  const id = "custom-id";
85
79
  const description = "some text";
86
80
 
@@ -94,8 +88,7 @@ describe("UAccordionItem", () => {
94
88
  expect(component.find(`[vl-key='description']`).exists()).toBe(true);
95
89
  });
96
90
 
97
- // DataTest prop
98
- it("applies data-test attribute", () => {
91
+ it("Data Test – applies data-test attribute", () => {
99
92
  const dataTest = "accordion-test";
100
93
 
101
94
  const component = mount(UAccordionItem, {
@@ -108,10 +101,8 @@ describe("UAccordionItem", () => {
108
101
  });
109
102
  });
110
103
 
111
- // Slots
112
104
  describe("Slots", () => {
113
- // Toggle slot
114
- it("renders default toggle icon when toggle slot is not provided", () => {
105
+ it("Toggle – renders default toggle icon when toggle slot is not provided", () => {
115
106
  const toggleIcon = true;
116
107
 
117
108
  const component = mount(UAccordionItem, {
@@ -125,8 +116,7 @@ describe("UAccordionItem", () => {
125
116
  expect(icon.exists()).toBe(true);
126
117
  });
127
118
 
128
- // Custom toggle slot
129
- it("renders custom content in toggle slot", () => {
119
+ it("Toggle renders custom content in toggle slot", () => {
130
120
  const toggleIcon = true;
131
121
  const slotClass = "custom-toggle";
132
122
  const slotContent = "Custom Toggle";
@@ -145,8 +135,7 @@ describe("UAccordionItem", () => {
145
135
  expect(component.findComponent(UIcon).exists()).toBe(false);
146
136
  });
147
137
 
148
- // Toggle slot bindings
149
- it("provides icon-name and opened bindings to toggle slot", async () => {
138
+ it("Toggle – provides icon-name and opened bindings to toggle slot", async () => {
150
139
  const toggleIcon = true;
151
140
  const toggleClass = "custom-toggle";
152
141
  const defaultIconName = "keyboard_arrow_down";
@@ -176,8 +165,7 @@ describe("UAccordionItem", () => {
176
165
  expect(toggleElement.attributes("data-opened")).toBe("true");
177
166
  });
178
167
 
179
- // Title slot
180
- it("renders custom content in title slot", () => {
168
+ it("Title – renders custom content in title slot", () => {
181
169
  const title = "Original Title";
182
170
  const slotClass = "custom-title";
183
171
  const slotContent = "Custom Title Content";
@@ -195,8 +183,7 @@ describe("UAccordionItem", () => {
195
183
  expect(component.text()).not.toContain(title);
196
184
  });
197
185
 
198
- // Title slot bindings
199
- it("provides title binding to title slot", () => {
186
+ it("Title – provides title binding to title slot", () => {
200
187
  const title = "Test Title";
201
188
  const slotClass = "custom-title";
202
189
 
@@ -217,8 +204,7 @@ describe("UAccordionItem", () => {
217
204
  expect(titleElement.attributes("data-title")).toBe(title);
218
205
  });
219
206
 
220
- // Description slot
221
- it("renders custom content in description slot", () => {
207
+ it("Description – renders custom content in description slot", () => {
222
208
  const description = "Original Description";
223
209
  const slotClass = "custom-description";
224
210
  const slotContent = "Custom Description Content";
@@ -236,8 +222,7 @@ describe("UAccordionItem", () => {
236
222
  expect(component.text()).not.toContain(description);
237
223
  });
238
224
 
239
- // Description slot bindings
240
- it("provides description binding to description slot", () => {
225
+ it("Description – provides description binding to description slot", () => {
241
226
  const description = "Test Description";
242
227
  const slotClass = "custom-description";
243
228
 
@@ -274,8 +259,7 @@ describe("UAccordionItem", () => {
274
259
  expect(component.find(`.${slotClass}`).text()).toBe(slotContent);
275
260
  });
276
261
 
277
- // Default slot
278
- it("renders default slot content when accordion is opened", async () => {
262
+ it("Default – renders default slot content when accordion is opened", async () => {
279
263
  const slotContent = "Custom accordion content";
280
264
  const slotClass = "custom-content";
281
265
 
@@ -320,8 +304,7 @@ describe("UAccordionItem", () => {
320
304
  expect(component.find("[vl-key='content']").exists()).toBe(false);
321
305
  });
322
306
 
323
- // Slot interactions with accordion behavior
324
- it("title slot content is clickable and toggles accordion", async () => {
307
+ it("Title title slot content is clickable and toggles accordion", async () => {
325
308
  const title = "Test Title";
326
309
  const slotClass = "custom-title";
327
310
  const slotContent = "Custom Title Content";
@@ -409,10 +392,8 @@ describe("UAccordionItem", () => {
409
392
  });
410
393
  });
411
394
 
412
- // Events
413
395
  describe("Events", () => {
414
- // Click event
415
- it("emits click event with id and opened state when clicked", async () => {
396
+ it("Click – emits click event with id and opened state when clicked", async () => {
416
397
  const id = "test-id";
417
398
 
418
399
  const component = mount(UAccordionItem, {
@@ -437,10 +418,8 @@ describe("UAccordionItem", () => {
437
418
  });
438
419
  });
439
420
 
440
- // Exposed refs
441
421
  describe("Exposed refs", () => {
442
- // WrapperRef
443
- it("exposes wrapperRef", () => {
422
+ it("wrapperRef – exposes wrapperRef", () => {
444
423
  const component = mount(UAccordionItem);
445
424
 
446
425
  expect(component.vm.wrapperRef).toBeDefined();
@@ -448,10 +427,8 @@ describe("UAccordionItem", () => {
448
427
  });
449
428
  });
450
429
 
451
- // Component behavior
452
430
  describe("Component behavior", () => {
453
- // Toggle behavior
454
- it("toggles opened state when clicked", async () => {
431
+ it("Toggle – toggles opened state when clicked", async () => {
455
432
  const description = "Test Description";
456
433
  const openedClass = "opacity-100";
457
434
 
@@ -7,6 +7,7 @@ export default /*tw*/ {
7
7
  outlined: "bg-default border-muted",
8
8
  subtle: "bg-muted border-default/50",
9
9
  soft: "bg-muted border-transparent",
10
+ inverted: "bg-inverted border-transparent",
10
11
  },
11
12
  },
12
13
  },
@@ -23,6 +24,7 @@ export default /*tw*/ {
23
24
  outlined: "border-muted",
24
25
  subtle: "border-default/50",
25
26
  soft: "border-default/50",
27
+ inverted: "border-default/50",
26
28
  },
27
29
  },
28
30
  },
@@ -7,10 +7,8 @@ import UHeader from "../../ui.text-header/UHeader.vue";
7
7
  import type { Props } from "../types";
8
8
 
9
9
  describe("UCard", () => {
10
- // Props
11
10
  describe("Props", () => {
12
- // Title prop
13
- it("renders with title prop", () => {
11
+ it("Title – renders with title prop", () => {
14
12
  const title = "Card Title";
15
13
 
16
14
  const component = mount(UCard, {
@@ -25,15 +23,13 @@ describe("UCard", () => {
25
23
  expect(header.props("label")).toBe(title);
26
24
  });
27
25
 
28
- // Title prop - Header visibility without props or slots
29
- it("does not show header when no title or slots are provided", () => {
26
+ it("Title does not show header when no title or slots are provided", () => {
30
27
  const component = mount(UCard);
31
28
 
32
29
  expect(component.findComponent(UHeader).exists()).toBe(false);
33
30
  });
34
31
 
35
- // Description prop
36
- it("renders with description prop", () => {
32
+ it("Description – renders with description prop", () => {
37
33
  const title = "Card Title";
38
34
  const description = "Card Description";
39
35
 
@@ -47,8 +43,7 @@ describe("UCard", () => {
47
43
  expect(component.find("[vl-key='description']").text()).toContain(description);
48
44
  });
49
45
 
50
- // Variant prop
51
- it("applies correct variant classes", () => {
46
+ it("Variant – applies correct variant classes", () => {
52
47
  const variants = {
53
48
  solid: "bg-default border-transparent",
54
49
  outlined: "bg-default border-muted",
@@ -67,8 +62,7 @@ describe("UCard", () => {
67
62
  });
68
63
  });
69
64
 
70
- // DataTest prop
71
- it("applies data-test attribute", () => {
65
+ it("Data Test – applies data-test attribute", () => {
72
66
  const dataTest = "card-test";
73
67
 
74
68
  const component = mount(UCard, {
@@ -81,10 +75,8 @@ describe("UCard", () => {
81
75
  });
82
76
  });
83
77
 
84
- // Slots
85
78
  describe("Slots", () => {
86
- // Default slot
87
- it("renders content in default slot", () => {
79
+ it("Default – renders content in default slot", () => {
88
80
  const slotClass = "default-content";
89
81
  const slotContent = "Default Content";
90
82
 
@@ -98,8 +90,7 @@ describe("UCard", () => {
98
90
  expect(component.find(`.${slotClass}`).text()).toBe(slotContent);
99
91
  });
100
92
 
101
- // Title slot
102
- it("renders custom content in title slot", () => {
93
+ it("Title – renders custom content in title slot", () => {
103
94
  const title = "Original Title";
104
95
  const slotClass = "custom-title";
105
96
  const slotContent = "Custom Title";
@@ -118,8 +109,7 @@ describe("UCard", () => {
118
109
  expect(component.findComponent(UHeader).exists()).toBe(false);
119
110
  });
120
111
 
121
- // Before-title slot
122
- it("renders content in before-title slot", () => {
112
+ it("Before-title – renders content in before-title slot", () => {
123
113
  const title = "Card Title";
124
114
  const slotClass = "before-title";
125
115
  const slotContent = "Before Title";
@@ -137,8 +127,7 @@ describe("UCard", () => {
137
127
  expect(component.find(`.${slotClass}`).text()).toBe(slotContent);
138
128
  });
139
129
 
140
- // After-title slot
141
- it("renders content in after-title slot", () => {
130
+ it("After-title – renders content in after-title slot", () => {
142
131
  const title = "Card Title";
143
132
  const slotClass = "after-title";
144
133
  const slotContent = "After Title";
@@ -156,8 +145,7 @@ describe("UCard", () => {
156
145
  expect(component.find(`.${slotClass}`).text()).toBe(slotContent);
157
146
  });
158
147
 
159
- // Actions slot
160
- it("renders content in actions slot", () => {
148
+ it("Actions – renders content in actions slot", () => {
161
149
  const title = "Card Title";
162
150
  const slotClass = "actions";
163
151
  const slotContent = "Actions";
@@ -175,8 +163,7 @@ describe("UCard", () => {
175
163
  expect(component.find(`.${slotClass}`).text()).toBe(slotContent);
176
164
  });
177
165
 
178
- // Footer-left slot
179
- it("renders content in footer-left slot", () => {
166
+ it("Footer-left – renders content in footer-left slot", () => {
180
167
  const slotClass = "footer-left";
181
168
  const slotContent = "Footer Left";
182
169
 
@@ -191,8 +178,7 @@ describe("UCard", () => {
191
178
  expect(component.text()).toContain(slotContent);
192
179
  });
193
180
 
194
- // Footer-right slot
195
- it("renders content in footer-right slot", () => {
181
+ it("Footer-right – renders content in footer-right slot", () => {
196
182
  const slotClass = "footer-right";
197
183
  const slotContent = "Footer Right";
198
184
 
@@ -207,8 +193,7 @@ describe("UCard", () => {
207
193
  expect(component.text()).toContain(slotContent);
208
194
  });
209
195
 
210
- // Footer visibility without slots
211
- it("does not show footer when no footer slots are provided", () => {
196
+ it("Footer does not show footer when no footer slots are provided", () => {
212
197
  const component = mount(UCard);
213
198
 
214
199
  expect(component.find("[vl-key='footerLeft']").exists()).toBe(false);
@@ -216,10 +201,8 @@ describe("UCard", () => {
216
201
  });
217
202
  });
218
203
 
219
- // Exposed refs
220
204
  describe("Exposed refs", () => {
221
- // WrapperRef
222
- it("exposes wrapperRef", () => {
205
+ it("wrapperRef – exposes wrapperRef", () => {
223
206
  const component = mount(UCard);
224
207
 
225
208
  expect(component.vm.wrapperRef).toBeDefined();
@@ -17,7 +17,7 @@ export interface Props {
17
17
  /**
18
18
  * Card variant.
19
19
  */
20
- variant?: "solid" | "outlined" | "subtle" | "soft";
20
+ variant?: "solid" | "outlined" | "subtle" | "soft" | "inverted";
21
21
 
22
22
  /**
23
23
  * Component config object.
@@ -6,10 +6,8 @@ import UCol from "../UCol.vue";
6
6
  import type { Props } from "../types";
7
7
 
8
8
  describe("UCol.vue", () => {
9
- // Props tests
10
9
  describe("Props", () => {
11
- // Gap prop
12
- it("applies the correct gap class", () => {
10
+ it("Gap – applies the correct gap class", () => {
13
11
  const gapClasses = {
14
12
  none: "gap-0",
15
13
  "3xs": "gap-0.5",
@@ -34,8 +32,7 @@ describe("UCol.vue", () => {
34
32
  });
35
33
  });
36
34
 
37
- // Align prop
38
- it("applies the correct align class", () => {
35
+ it("Align – applies the correct align class", () => {
39
36
  const alignClasses = {
40
37
  start: "items-start",
41
38
  end: "items-end",
@@ -55,8 +52,7 @@ describe("UCol.vue", () => {
55
52
  });
56
53
  });
57
54
 
58
- // Content prop
59
- it("applies the correct content class", () => {
55
+ it("Content – applies the correct content class", () => {
60
56
  const contentClasses = {
61
57
  start: "content-start",
62
58
  end: "content-end",
@@ -80,8 +76,7 @@ describe("UCol.vue", () => {
80
76
  });
81
77
  });
82
78
 
83
- // Justify prop
84
- it("applies the correct justify class", () => {
79
+ it("Justify – applies the correct justify class", () => {
85
80
  const justifyClasses = {
86
81
  start: "justify-start",
87
82
  end: "justify-end",
@@ -102,8 +97,7 @@ describe("UCol.vue", () => {
102
97
  });
103
98
  });
104
99
 
105
- // Reverse prop
106
- it("applies the correct reverse class", () => {
100
+ it("Reverse – applies the correct reverse class", () => {
107
101
  const reverseClasses = {
108
102
  true: "flex-col-reverse",
109
103
  false: "flex-col",
@@ -120,8 +114,7 @@ describe("UCol.vue", () => {
120
114
  });
121
115
  });
122
116
 
123
- // Wrap prop
124
- it("applies the correct wrap class", () => {
117
+ it("Wrap – applies the correct wrap class", () => {
125
118
  const wrap = true;
126
119
  const expectedClasses = "flex-wrap";
127
120
 
@@ -134,8 +127,7 @@ describe("UCol.vue", () => {
134
127
  expect(component.attributes("class")).toContain(expectedClasses);
135
128
  });
136
129
 
137
- // Block prop
138
- it("applies the correct block class", () => {
130
+ it("Block – applies the correct block class", () => {
139
131
  const block = true;
140
132
  const expectedClasses = "w-full";
141
133
 
@@ -148,8 +140,7 @@ describe("UCol.vue", () => {
148
140
  expect(component.attributes("class")).toContain(expectedClasses);
149
141
  });
150
142
 
151
- // Tag prop
152
- it("renders the correct HTML tag", () => {
143
+ it("Tag – renders the correct HTML tag", () => {
153
144
  const tags = ["div", "section", "article", "main", "aside", "nav", "span"];
154
145
 
155
146
  tags.forEach((tag) => {
@@ -163,8 +154,7 @@ describe("UCol.vue", () => {
163
154
  });
164
155
  });
165
156
 
166
- // DataTest prop
167
- it("applies the correct data-test attribute", () => {
157
+ it("Data Test – applies the correct data-test attribute", () => {
168
158
  const dataTest = "col-test";
169
159
 
170
160
  const component = mount(UCol, {
@@ -177,10 +167,8 @@ describe("UCol.vue", () => {
177
167
  });
178
168
  });
179
169
 
180
- // Slots tests
181
170
  describe("Slots", () => {
182
- // Default slot
183
- it("renders content from default slot", () => {
171
+ it("Default – renders content from default slot", () => {
184
172
  const slotContent = "Custom Content";
185
173
 
186
174
  const component = mount(UCol, {
@@ -193,10 +181,8 @@ describe("UCol.vue", () => {
193
181
  });
194
182
  });
195
183
 
196
- // Exposed refs tests
197
184
  describe("Exposed refs", () => {
198
- // wrapperRef
199
- it("exposes wrapperRef", () => {
185
+ it("wrapperRef – exposes wrapperRef", () => {
200
186
  const component = mount(UCol);
201
187
 
202
188
  expect(component.vm.wrapperRef).toBeDefined();
@@ -86,6 +86,7 @@ export default /*tw*/ {
86
86
  outlined: "bg-default border-muted",
87
87
  subtle: "bg-muted border-default/50",
88
88
  soft: "bg-muted border-transparent",
89
+ inverted: "bg-inverted border-transparent",
89
90
  },
90
91
  position: {
91
92
  top: "top-0 flex-col rounded-b-large w-full h-auto",
@@ -28,7 +28,7 @@ export interface Props {
28
28
  /**
29
29
  * Drawer variant.
30
30
  */
31
- variant?: "solid" | "outlined" | "subtle" | "soft";
31
+ variant?: "solid" | "outlined" | "subtle" | "soft" | "inverted";
32
32
 
33
33
  /**
34
34
  * Control whether the Drawer has a handle or not.