@solfacil/girassol 0.1.0 → 0.1.5

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 (65) hide show
  1. package/.vscode/extensions.json +2 -1
  2. package/.vscode/settings.json +15 -5
  3. package/README.md +14 -3
  4. package/cli/src/commands/create:component.ts +91 -0
  5. package/cli/src/commands/generate:plugin.ts +17 -7
  6. package/cli/src/commands/generate:types.ts +5 -4
  7. package/cli/src/commands/girassol.ts +2 -2
  8. package/cli/src/extensions/cli-extension.ts +1 -1
  9. package/cli/src/templates/components/component.spec.ts.ejs +20 -0
  10. package/cli/src/templates/components/component.stories.mdx.ejs +74 -0
  11. package/cli/src/templates/components/component.vue.ejs +23 -0
  12. package/cli/src/templates/components/index.ts.ejs +10 -0
  13. package/cli/src/templates/windi.config.ts.ejs +3 -0
  14. package/dist/girassol.es.js +1022 -111
  15. package/dist/girassol.umd.js +5 -5
  16. package/dist/style.css +1 -1
  17. package/dist/theme/solfacil/colors.d.ts +2 -2
  18. package/dist/theme/solfacil/index.d.ts +2 -0
  19. package/dist/theme/solfacil/utilities.d.ts +2 -0
  20. package/dist/types/components/dropdown/Dropdown.vue.d.ts +75 -0
  21. package/dist/types/components/dropdown/dropdown.spec.d.ts +1 -0
  22. package/dist/types/components/dropdown/index.d.ts +2 -0
  23. package/dist/types/components/forms/button/Button.vue.d.ts +4 -4
  24. package/dist/types/components/forms/button/button.spec.d.ts +1 -0
  25. package/dist/types/components/forms/checkbox/CheckboxGroup.vue.d.ts +1 -1
  26. package/dist/types/components/forms/checkbox/checkbox-group.spec.d.ts +1 -0
  27. package/dist/types/components/forms/checkbox/checkbox-type.d.ts +2 -2
  28. package/dist/types/components/forms/checkbox/checkbox.spec.d.ts +1 -0
  29. package/dist/types/components/forms/checkbox/index.d.ts +1 -1
  30. package/dist/types/components/forms/input/index.d.ts +1 -1
  31. package/dist/types/components/forms/input/input.spec.d.ts +1 -0
  32. package/dist/types/components/forms/radio/RadioGroup.vue.d.ts +1 -1
  33. package/dist/types/components/forms/radio/index.d.ts +1 -1
  34. package/dist/types/components/forms/radio/radio-group.spec.d.ts +1 -0
  35. package/dist/types/components/forms/radio/radio-type.d.ts +2 -2
  36. package/dist/types/components/forms/radio/radio.spec.d.ts +1 -0
  37. package/dist/types/components/forms/switch/Switch.vue.d.ts +33 -0
  38. package/dist/types/components/forms/switch/index.d.ts +2 -0
  39. package/dist/types/components/forms/switch/switch.spec.d.ts +1 -0
  40. package/dist/types/components/forms/textarea/Textarea.vue.d.ts +50 -0
  41. package/dist/types/components/forms/textarea/index.d.ts +2 -0
  42. package/dist/types/components/forms/textarea/textarea.spec.d.ts +1 -0
  43. package/dist/types/components/forms/textfield/Textfield.vue.d.ts +1 -1
  44. package/dist/types/components/forms/textfield/index.d.ts +1 -1
  45. package/dist/types/components/forms/textfield/textfield-password.spec.d.ts +1 -0
  46. package/dist/types/components/forms/textfield/textfield.spec.d.ts +1 -0
  47. package/dist/types/composables/use-toast/Toast.vue.d.ts +66 -0
  48. package/dist/types/composables/use-toast/index.d.ts +9 -0
  49. package/dist/types/composables/use-toast/types.d.ts +23 -0
  50. package/dist/types/composables/use-toast/use-toast.spec.d.ts +1 -0
  51. package/dist/types/composables/use-toast/useTimer.d.ts +9 -0
  52. package/dist/types/composables/use-toast/useTransition.d.ts +57 -0
  53. package/dist/types/index.d.ts +6 -2
  54. package/dist/vite.config.d.ts +1 -1
  55. package/package.json +65 -32
  56. package/theme/solfacil/borders.ts +2 -2
  57. package/theme/solfacil/colors.ts +4 -4
  58. package/theme/solfacil/effects.ts +3 -3
  59. package/theme/solfacil/index.ts +4 -2
  60. package/theme/solfacil/miscs.ts +2 -2
  61. package/theme/solfacil/spacing.ts +1 -1
  62. package/theme/solfacil/typography.ts +2 -2
  63. package/theme/solfacil/utilities.ts +71 -3
  64. package/vite.config.ts +17 -5
  65. package/windi.config.ts +5 -3
@@ -1,9 +1,28 @@
1
- import { defineComponent, useSlots, computed, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, renderSlot, toDisplayString, createCommentVNode, createVNode, mergeProps, isRef, ref, createBlock, withCtx, withDirectives, vShow, Fragment, renderList } from "vue";
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ import { defineComponent, useSlots, computed, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, renderSlot, toDisplayString, createCommentVNode, createVNode, mergeProps, isRef, ref, createBlock, withCtx, withDirectives, vShow, vModelText, Fragment, renderList, getCurrentScope, onScopeDispose, watch, withModifiers, withKeys, createTextVNode, reactive, onMounted, onUnmounted, Transition as Transition$1, normalizeStyle, render as render$7 } from "vue";
2
21
  var Button_vue_vue_type_style_index_0_lang = "";
3
- const _hoisted_1$9 = ["data-testid"];
4
- const _hoisted_2$7 = { class: "icon -left" };
5
- const _hoisted_3$5 = { class: "icon -right" };
6
- const _sfc_main$7 = /* @__PURE__ */ defineComponent({
22
+ const _hoisted_1$i = ["data-testid"];
23
+ const _hoisted_2$g = { class: "icon -left" };
24
+ const _hoisted_3$e = { class: "icon -right" };
25
+ const _sfc_main$b = /* @__PURE__ */ defineComponent({
7
26
  props: {
8
27
  variant: { default: "primary" },
9
28
  dense: { type: Boolean, default: false },
@@ -27,23 +46,23 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
27
46
  `]),
28
47
  type: "button"
29
48
  }, [
30
- createElementVNode("div", _hoisted_2$7, [
49
+ createElementVNode("div", _hoisted_2$g, [
31
50
  renderSlot(_ctx.$slots, "icon-left")
32
51
  ]),
33
52
  renderSlot(_ctx.$slots, "default"),
34
- createElementVNode("div", _hoisted_3$5, [
53
+ createElementVNode("div", _hoisted_3$e, [
35
54
  renderSlot(_ctx.$slots, "icon-right")
36
55
  ])
37
- ], 10, _hoisted_1$9);
56
+ ], 10, _hoisted_1$i);
38
57
  };
39
58
  }
40
59
  });
41
- _sfc_main$7.install = (app) => {
42
- app.component("SolButton", _sfc_main$7);
60
+ _sfc_main$b.install = (app) => {
61
+ app.component("SolButton", _sfc_main$b);
43
62
  };
44
63
  var Input_vue_vue_type_style_index_0_lang = "";
45
- const _hoisted_1$8 = ["id", "data-testid", "value"];
46
- const _sfc_main$6 = /* @__PURE__ */ defineComponent({
64
+ const _hoisted_1$h = ["id", "data-testid", "value"];
65
+ const _sfc_main$a = /* @__PURE__ */ defineComponent({
47
66
  props: {
48
67
  id: null,
49
68
  modelValue: null,
@@ -63,20 +82,20 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
63
82
  value: __props.modelValue,
64
83
  class: normalizeClass(["sol-input-core", { "-invert": __props.invert, "-error": __props.error }]),
65
84
  onInput: emitInput
66
- }, null, 42, _hoisted_1$8);
85
+ }, null, 42, _hoisted_1$h);
67
86
  };
68
87
  }
69
88
  });
70
- _sfc_main$6.install = (app) => {
71
- app.component("SolButton", _sfc_main$6);
89
+ _sfc_main$a.install = (app) => {
90
+ app.component("SolInput", _sfc_main$a);
72
91
  };
73
92
  var Textfield_vue_vue_type_style_index_0_lang = "";
74
- const _hoisted_1$7 = ["id", "data-testid"];
75
- const _hoisted_2$6 = ["for"];
76
- const _hoisted_3$4 = { class: "container-input" };
77
- const _hoisted_4$2 = ["id"];
78
- const _hoisted_5 = ["id"];
79
- const _sfc_main$5 = /* @__PURE__ */ defineComponent({
93
+ const _hoisted_1$g = ["id", "data-testid"];
94
+ const _hoisted_2$f = ["for"];
95
+ const _hoisted_3$d = { class: "container-input" };
96
+ const _hoisted_4$6 = ["id"];
97
+ const _hoisted_5$3 = ["id"];
98
+ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
80
99
  props: {
81
100
  id: null,
82
101
  class: null,
@@ -106,11 +125,11 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
106
125
  return null;
107
126
  }
108
127
  return (_ctx, _cache) => {
109
- var _a;
128
+ var _a2;
110
129
  return openBlock(), createElementBlock("div", {
111
130
  id: `textfield-${__props.id}`,
112
131
  "data-testid": `textfield-${__props.id}`,
113
- class: normalizeClass([[`${(_a = _ctx.$props.class) != null ? _a : ""}`, { "-invert": __props.invert }], "sol-textfield-core"])
132
+ class: normalizeClass([[`${(_a2 = _ctx.$props.class) != null ? _a2 : ""}`, { "-invert": __props.invert }], "sol-textfield-core"])
114
133
  }, [
115
134
  renderSlot(_ctx.$slots, "label", {}, () => [
116
135
  __props.label ? (openBlock(), createElementBlock("label", {
@@ -119,20 +138,20 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
119
138
  class: "label"
120
139
  }, [
121
140
  createElementVNode("span", null, toDisplayString(__props.label), 1)
122
- ], 8, _hoisted_2$6)) : createCommentVNode("", true)
141
+ ], 8, _hoisted_2$f)) : createCommentVNode("", true)
123
142
  ]),
124
- createElementVNode("div", _hoisted_3$4, [
143
+ createElementVNode("div", _hoisted_3$d, [
125
144
  renderSlot(_ctx.$slots, "default", {}, () => [
126
- createVNode(_sfc_main$6, mergeProps(_ctx.$attrs, {
145
+ createVNode(_sfc_main$a, mergeProps(_ctx.$attrs, {
146
+ id: __props.id,
127
147
  modelValue: unref(model),
128
148
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(model) ? model.value = $event : null),
129
- id: __props.id,
130
149
  "data-testid": `input-${__props.id}`,
131
150
  class: [__props.error && "-error", "input"],
132
151
  invert: __props.invert,
133
152
  "aria-invalid": !!__props.error,
134
153
  "aria-describedby": ariaDescribedby(__props.hint, __props.error)
135
- }), null, 16, ["modelValue", "id", "data-testid", "class", "invert", "aria-invalid", "aria-describedby"])
154
+ }), null, 16, ["id", "modelValue", "data-testid", "class", "invert", "aria-invalid", "aria-describedby"])
136
155
  ]),
137
156
  renderSlot(_ctx.$slots, "icon")
138
157
  ]),
@@ -140,51 +159,51 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
140
159
  key: 0,
141
160
  id: `hint-${__props.id}`,
142
161
  class: "hint"
143
- }, toDisplayString(__props.hint), 9, _hoisted_4$2)) : __props.error ? (openBlock(), createElementBlock("span", {
162
+ }, toDisplayString(__props.hint), 9, _hoisted_4$6)) : __props.error ? (openBlock(), createElementBlock("span", {
144
163
  key: 1,
145
164
  id: `error-${__props.id}`,
146
165
  class: "error"
147
- }, toDisplayString(__props.error), 9, _hoisted_5)) : createCommentVNode("", true)
148
- ], 10, _hoisted_1$7);
166
+ }, toDisplayString(__props.error), 9, _hoisted_5$3)) : createCommentVNode("", true)
167
+ ], 10, _hoisted_1$g);
149
168
  };
150
169
  }
151
170
  });
152
- const _hoisted_1$6 = {
171
+ const _hoisted_1$f = {
153
172
  preserveAspectRatio: "xMidYMid meet",
154
173
  viewBox: "0 0 24 24",
155
174
  width: "1.2em",
156
175
  height: "1.2em"
157
176
  };
158
- const _hoisted_2$5 = /* @__PURE__ */ createElementVNode("g", { fill: "currentColor" }, [
177
+ const _hoisted_2$e = /* @__PURE__ */ createElementVNode("g", { fill: "currentColor" }, [
159
178
  /* @__PURE__ */ createElementVNode("path", { d: "M15 12a3 3 0 1 1-6 0a3 3 0 0 1 6 0z" }),
160
179
  /* @__PURE__ */ createElementVNode("path", { d: "M21.894 11.553C19.736 7.236 15.904 5 12 5c-3.903 0-7.736 2.236-9.894 6.553a1 1 0 0 0 0 .894C4.264 16.764 8.096 19 12 19c3.903 0 7.736-2.236 9.894-6.553a1 1 0 0 0 0-.894zM12 17c-2.969 0-6.002-1.62-7.87-5C5.998 8.62 9.03 7 12 7c2.969 0 6.002 1.62 7.87 5c-1.868 3.38-4.901 5-7.87 5z" })
161
180
  ], -1);
162
- const _hoisted_3$3 = [
163
- _hoisted_2$5
181
+ const _hoisted_3$c = [
182
+ _hoisted_2$e
164
183
  ];
165
- function render$1(_ctx, _cache) {
166
- return openBlock(), createElementBlock("svg", _hoisted_1$6, _hoisted_3$3);
184
+ function render$6(_ctx, _cache) {
185
+ return openBlock(), createElementBlock("svg", _hoisted_1$f, _hoisted_3$c);
167
186
  }
168
- var EyeOn = { name: "mi-eye", render: render$1 };
169
- const _hoisted_1$5 = {
187
+ var EyeOn = { name: "mi-eye", render: render$6 };
188
+ const _hoisted_1$e = {
170
189
  preserveAspectRatio: "xMidYMid meet",
171
190
  viewBox: "0 0 24 24",
172
191
  width: "1.2em",
173
192
  height: "1.2em"
174
193
  };
175
- const _hoisted_2$4 = /* @__PURE__ */ createElementVNode("path", {
194
+ const _hoisted_2$d = /* @__PURE__ */ createElementVNode("path", {
176
195
  fill: "currentColor",
177
196
  d: "M4.707 3.293a1 1 0 0 0-1.414 1.414l2.424 2.424c-1.43 1.076-2.678 2.554-3.611 4.422a1 1 0 0 0 0 .894C4.264 16.764 8.096 19 12 19c1.555 0 3.1-.355 4.53-1.055l2.763 2.762a1 1 0 0 0 1.414-1.414l-16-16zm10.307 13.135c-.98.383-2 .572-3.014.572c-2.969 0-6.002-1.62-7.87-5c.817-1.479 1.858-2.62 3.018-3.437l2.144 2.144a3 3 0 0 0 4.001 4.001l1.72 1.72zm3.538-2.532c.483-.556.926-1.187 1.318-1.896c-1.868-3.38-4.9-5-7.87-5c-.112 0-.224.002-.336.007L9.879 5.223A10.215 10.215 0 0 1 12 5c3.903 0 7.736 2.236 9.894 6.553a1 1 0 0 1 0 .894a13.106 13.106 0 0 1-1.925 2.865l-1.417-1.416z"
178
197
  }, null, -1);
179
- const _hoisted_3$2 = [
180
- _hoisted_2$4
198
+ const _hoisted_3$b = [
199
+ _hoisted_2$d
181
200
  ];
182
- function render(_ctx, _cache) {
183
- return openBlock(), createElementBlock("svg", _hoisted_1$5, _hoisted_3$2);
201
+ function render$5(_ctx, _cache) {
202
+ return openBlock(), createElementBlock("svg", _hoisted_1$e, _hoisted_3$b);
184
203
  }
185
- var EyeOff = { name: "mi-eye-off", render };
186
- const _hoisted_1$4 = ["aria-label"];
187
- const _sfc_main$4 = /* @__PURE__ */ defineComponent({
204
+ var EyeOff = { name: "mi-eye-off", render: render$5 };
205
+ const _hoisted_1$d = ["aria-label"];
206
+ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
188
207
  props: {
189
208
  id: { default: "" },
190
209
  label: { default: "Sua senha" }
@@ -193,7 +212,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
193
212
  const passwordIsVisible = ref(false);
194
213
  const inputType = computed(() => passwordIsVisible.value ? "text" : "password");
195
214
  return (_ctx, _cache) => {
196
- return openBlock(), createBlock(_sfc_main$5, {
215
+ return openBlock(), createBlock(_sfc_main$9, {
197
216
  id: __props.id,
198
217
  required: "",
199
218
  type: unref(inputType),
@@ -213,23 +232,108 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
213
232
  withDirectives(createVNode(unref(EyeOff), { "aria-hidden": "true" }, null, 512), [
214
233
  [vShow, !passwordIsVisible.value]
215
234
  ])
216
- ], 8, _hoisted_1$4)
235
+ ], 8, _hoisted_1$d)
217
236
  ]),
218
237
  _: 1
219
238
  }, 8, ["id", "type", "label"]);
220
239
  };
221
240
  }
222
241
  });
223
- _sfc_main$5.install = (app) => {
224
- app.component("SolTextfield", _sfc_main$5);
242
+ _sfc_main$9.install = (app) => {
243
+ app.component("SolTextfield", _sfc_main$9);
225
244
  };
226
- _sfc_main$4.install = (app) => {
227
- app.component("SolTextfieldPassword", _sfc_main$4);
245
+ _sfc_main$8.install = (app) => {
246
+ app.component("SolTextfieldPassword", _sfc_main$8);
247
+ };
248
+ var Textarea_vue_vue_type_style_index_0_lang = "";
249
+ const _hoisted_1$c = ["id", "data-testid"];
250
+ const _hoisted_2$c = ["for"];
251
+ const _hoisted_3$a = { class: "container-textarea" };
252
+ const _hoisted_4$5 = ["id", "data-testid", "invert", "aria-invalid", "aria-describedby"];
253
+ const _hoisted_5$2 = ["id"];
254
+ const _hoisted_6$2 = ["id"];
255
+ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
256
+ props: {
257
+ id: null,
258
+ class: null,
259
+ modelValue: { default: "" },
260
+ label: { default: "label" },
261
+ hint: null,
262
+ invert: { type: Boolean },
263
+ resize: { default: "both" },
264
+ error: null
265
+ },
266
+ emits: ["update:modelValue"],
267
+ setup(__props, { emit }) {
268
+ const props = __props;
269
+ const model = computed({
270
+ get: () => props.modelValue,
271
+ set: (inputValue) => {
272
+ emit("update:modelValue", inputValue);
273
+ }
274
+ });
275
+ function showHint(hint, error) {
276
+ return !!hint && !error;
277
+ }
278
+ function ariaDescribedby(hint, error) {
279
+ if (error)
280
+ return `error-${props.id}`;
281
+ if (showHint(hint, error))
282
+ return `hint-${props.id}`;
283
+ return null;
284
+ }
285
+ return (_ctx, _cache) => {
286
+ var _a2;
287
+ return openBlock(), createElementBlock("div", {
288
+ id: `textarea-${__props.id}`,
289
+ "data-testid": `textarea-${__props.id}`,
290
+ class: normalizeClass([[`${(_a2 = _ctx.$props.class) != null ? _a2 : ""}`, { "-invert": __props.invert }], "sol-textarea-core"])
291
+ }, [
292
+ renderSlot(_ctx.$slots, "label", {}, () => [
293
+ __props.label ? (openBlock(), createElementBlock("label", {
294
+ key: 0,
295
+ for: `input-${__props.id}`,
296
+ class: "label"
297
+ }, [
298
+ createElementVNode("span", null, toDisplayString(__props.label), 1)
299
+ ], 8, _hoisted_2$c)) : createCommentVNode("", true)
300
+ ]),
301
+ createElementVNode("div", _hoisted_3$a, [
302
+ renderSlot(_ctx.$slots, "default", {}, () => [
303
+ withDirectives(createElementVNode("textarea", mergeProps(_ctx.$attrs, {
304
+ id: `input-${__props.id}`,
305
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(model) ? model.value = $event : null),
306
+ "data-testid": `input-${__props.id}`,
307
+ class: [__props.error && "-error", "textarea"],
308
+ invert: __props.invert,
309
+ style: { resize: __props.resize },
310
+ "aria-invalid": !!__props.error,
311
+ "aria-describedby": ariaDescribedby(__props.hint, __props.error)
312
+ }), null, 16, _hoisted_4$5), [
313
+ [vModelText, unref(model)]
314
+ ])
315
+ ])
316
+ ]),
317
+ showHint(__props.hint, __props.error) ? (openBlock(), createElementBlock("span", {
318
+ key: 0,
319
+ id: `hint-${__props.id}`,
320
+ class: "hint"
321
+ }, toDisplayString(__props.hint), 9, _hoisted_5$2)) : __props.error ? (openBlock(), createElementBlock("span", {
322
+ key: 1,
323
+ id: `error-${__props.id}`,
324
+ class: "error"
325
+ }, toDisplayString(__props.error), 9, _hoisted_6$2)) : createCommentVNode("", true)
326
+ ], 10, _hoisted_1$c);
327
+ };
328
+ }
329
+ });
330
+ _sfc_main$7.install = (app) => {
331
+ app.component("SolTextarea", _sfc_main$7);
228
332
  };
229
333
  var Radio_vue_vue_type_style_index_0_lang = "";
230
- const _hoisted_1$3 = ["id", "data-testid", "checked", "value", "name"];
231
- const _hoisted_2$3 = ["for"];
232
- const _sfc_main$3 = /* @__PURE__ */ defineComponent({
334
+ const _hoisted_1$b = ["id", "data-testid", "checked", "value", "name"];
335
+ const _hoisted_2$b = ["for"];
336
+ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
233
337
  props: {
234
338
  id: null,
235
339
  name: null,
@@ -242,32 +346,32 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
242
346
  setup(__props, { emit }) {
243
347
  return (_ctx, _cache) => {
244
348
  return openBlock(), createElementBlock("div", {
245
- class: normalizeClass(["sol-radio-core", __props.class])
349
+ class: normalizeClass(["sol-radio-core", _ctx.$props.class])
246
350
  }, [
247
351
  createElementVNode("input", mergeProps(_ctx.$attrs, {
352
+ id: `radio-${__props.name}-${__props.id}`,
248
353
  type: "radio",
249
354
  class: "radio",
250
- id: `radio-${__props.name}-${__props.id}`,
251
355
  "data-testid": `radio-${__props.name}-${__props.id}`,
252
356
  checked: __props.checked,
253
357
  value: __props.value,
254
358
  name: __props.name,
255
359
  onChange: _cache[0] || (_cache[0] = ($event) => emit("change", __props.value))
256
- }), null, 16, _hoisted_1$3),
360
+ }), null, 16, _hoisted_1$b),
257
361
  createElementVNode("label", {
258
362
  class: "label",
259
363
  for: `radio-${__props.name}-${__props.id}`
260
- }, toDisplayString(__props.label), 9, _hoisted_2$3)
364
+ }, toDisplayString(__props.label), 9, _hoisted_2$b)
261
365
  ], 2);
262
366
  };
263
367
  }
264
368
  });
265
369
  var RadioGroup_vue_vue_type_style_index_0_lang = "";
266
- const _hoisted_1$2 = ["aria-labelledby"];
267
- const _hoisted_2$2 = ["id", "data-testid"];
268
- const _hoisted_3$1 = ["id"];
269
- const _hoisted_4$1 = ["id"];
270
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
370
+ const _hoisted_1$a = ["aria-labelledby"];
371
+ const _hoisted_2$a = ["id", "data-testid"];
372
+ const _hoisted_3$9 = ["id"];
373
+ const _hoisted_4$4 = ["id"];
374
+ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
271
375
  props: {
272
376
  id: null,
273
377
  title: null,
@@ -307,10 +411,10 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
307
411
  id: `radio-group-title-${__props.id}`
308
412
  }, () => [
309
413
  createElementVNode("legend", {
310
- class: normalizeClass(["title", { "sr-only": __props.hideTitle }]),
311
414
  id: `radio-group-title-${__props.id}`,
415
+ class: normalizeClass(["title", { "sr-only": __props.hideTitle }]),
312
416
  "data-testid": `radio-group-title-${__props.id}`
313
- }, toDisplayString(__props.title), 11, _hoisted_2$2)
417
+ }, toDisplayString(__props.title), 11, _hoisted_2$a)
314
418
  ]),
315
419
  createElementVNode("ul", {
316
420
  class: normalizeClass(["container-radios", { "flex-col": __props.direction === "column" }])
@@ -320,11 +424,11 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
320
424
  direction: __props.direction
321
425
  }, () => [
322
426
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.radios, (radio, index) => {
323
- var _a;
427
+ var _a2;
324
428
  return openBlock(), createElementBlock("li", { key: index }, [
325
- createVNode(_sfc_main$3, mergeProps(_ctx.$attrs, {
429
+ createVNode(_sfc_main$6, mergeProps(_ctx.$attrs, {
430
+ id: (_a2 = radio == null ? void 0 : radio.id) != null ? _a2 : `${radio.value}`,
326
431
  class: ["radio", { "mb-micro": __props.direction === "column", "mr-micro": __props.direction === "row" }],
327
- id: (_a = radio == null ? void 0 : radio.id) != null ? _a : `${radio.value}`,
328
432
  name: radio.name,
329
433
  value: radio.value,
330
434
  label: radio.label,
@@ -332,7 +436,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
332
436
  "aria-invalid": !!__props.error,
333
437
  "aria-describedby": ariaDescribedby(__props.hint, __props.error),
334
438
  onChange: ($event) => emitUpdatedValue(radio)
335
- }), null, 16, ["class", "id", "name", "value", "label", "checked", "aria-invalid", "aria-describedby", "onChange"])
439
+ }), null, 16, ["id", "class", "name", "value", "label", "checked", "aria-invalid", "aria-describedby", "onChange"])
336
440
  ]);
337
441
  }), 128))
338
442
  ])
@@ -341,19 +445,25 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
341
445
  key: 0,
342
446
  id: `hint-${__props.id}`,
343
447
  class: "hint"
344
- }, toDisplayString(__props.hint), 9, _hoisted_3$1)) : __props.error ? (openBlock(), createElementBlock("p", {
448
+ }, toDisplayString(__props.hint), 9, _hoisted_3$9)) : __props.error ? (openBlock(), createElementBlock("p", {
345
449
  key: 1,
346
450
  id: `error-${__props.id}`,
347
451
  class: "error"
348
- }, toDisplayString(__props.error), 9, _hoisted_4$1)) : createCommentVNode("", true)
349
- ], 8, _hoisted_1$2);
452
+ }, toDisplayString(__props.error), 9, _hoisted_4$4)) : createCommentVNode("", true)
453
+ ], 8, _hoisted_1$a);
350
454
  };
351
455
  }
352
456
  });
457
+ _sfc_main$6.install = (app) => {
458
+ app.component("SolRadio", _sfc_main$6);
459
+ };
460
+ _sfc_main$5.install = (app) => {
461
+ app.component("SolRadioGroup", _sfc_main$5);
462
+ };
353
463
  var Checkbox_vue_vue_type_style_index_0_lang = "";
354
- const _hoisted_1$1 = ["id", "data-testid", "checked", "value", "name"];
355
- const _hoisted_2$1 = ["for"];
356
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
464
+ const _hoisted_1$9 = ["id", "data-testid", "checked", "value", "name"];
465
+ const _hoisted_2$9 = ["for"];
466
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
357
467
  props: {
358
468
  id: null,
359
469
  name: null,
@@ -366,32 +476,32 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
366
476
  setup(__props, { emit }) {
367
477
  return (_ctx, _cache) => {
368
478
  return openBlock(), createElementBlock("div", {
369
- class: normalizeClass(["sol-checkbox-core", __props.class])
479
+ class: normalizeClass(["sol-checkbox-core", _ctx.$props.class])
370
480
  }, [
371
481
  createElementVNode("input", mergeProps(_ctx.$attrs, {
482
+ id: `checkbox-${__props.name}-${__props.id}`,
372
483
  type: "checkbox",
373
484
  class: "checkbox",
374
- id: `checkbox-${__props.name}-${__props.id}`,
375
485
  "data-testid": `checkbox-${__props.name}-${__props.id}`,
376
486
  checked: __props.checked,
377
487
  value: __props.value,
378
488
  name: __props.name,
379
489
  onChange: _cache[0] || (_cache[0] = ($event) => emit("change", __props.value))
380
- }), null, 16, _hoisted_1$1),
490
+ }), null, 16, _hoisted_1$9),
381
491
  createElementVNode("label", {
382
492
  class: "label",
383
493
  for: `checkbox-${__props.name}-${__props.id}`
384
- }, toDisplayString(__props.label), 9, _hoisted_2$1)
494
+ }, toDisplayString(__props.label), 9, _hoisted_2$9)
385
495
  ], 2);
386
496
  };
387
497
  }
388
498
  });
389
499
  var CheckboxGroup_vue_vue_type_style_index_0_lang = "";
390
- const _hoisted_1 = ["aria-labelledby"];
391
- const _hoisted_2 = ["id", "data-testid"];
392
- const _hoisted_3 = ["id"];
393
- const _hoisted_4 = ["id"];
394
- const _sfc_main = /* @__PURE__ */ defineComponent({
500
+ const _hoisted_1$8 = ["aria-labelledby"];
501
+ const _hoisted_2$8 = ["id", "data-testid"];
502
+ const _hoisted_3$8 = ["id"];
503
+ const _hoisted_4$3 = ["id"];
504
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
395
505
  props: {
396
506
  id: null,
397
507
  title: null,
@@ -416,21 +526,20 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
416
526
  return null;
417
527
  }
418
528
  function isChecked(value) {
419
- var _a;
420
- return (_a = props == null ? void 0 : props.modelValue) == null ? void 0 : _a.includes(value);
529
+ var _a2;
530
+ return (_a2 = props == null ? void 0 : props.modelValue) == null ? void 0 : _a2.includes(value);
421
531
  }
422
532
  function sanitizeNewModelValue(value) {
423
533
  return Array.isArray(props == null ? void 0 : props.modelValue) ? [...props.modelValue, value] : [value];
424
534
  }
425
535
  function emitUpdatedValue(checkbox) {
426
- var _a;
536
+ var _a2;
427
537
  emit("change", checkbox.value);
428
- const checked = isChecked(checkbox.value) ? (_a = props.modelValue) == null ? void 0 : _a.filter((value) => value !== checkbox.value) : sanitizeNewModelValue(checkbox.value);
538
+ const checked = isChecked(checkbox.value) ? (_a2 = props.modelValue) == null ? void 0 : _a2.filter((value) => value !== checkbox.value) : sanitizeNewModelValue(checkbox.value);
429
539
  emit("update:modelValue", checked);
430
540
  }
431
541
  return (_ctx, _cache) => {
432
542
  return openBlock(), createElementBlock("fieldset", {
433
- role: "group",
434
543
  class: "sol-checkbox-group-core",
435
544
  "aria-labelledby": `checkbox-group-title-${__props.id}`
436
545
  }, [
@@ -438,10 +547,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
438
547
  id: `checkbox-group-title-${__props.id}`
439
548
  }, () => [
440
549
  createElementVNode("legend", {
441
- class: normalizeClass(["title", { "sr-only": __props.hideTitle }]),
442
550
  id: `checkbox-group-title-${__props.id}`,
551
+ class: normalizeClass(["title", { "sr-only": __props.hideTitle }]),
443
552
  "data-testid": `checkbox-group-title-${__props.id}`
444
- }, toDisplayString(__props.title), 11, _hoisted_2)
553
+ }, toDisplayString(__props.title), 11, _hoisted_2$8)
445
554
  ]),
446
555
  createElementVNode("ul", {
447
556
  class: normalizeClass(["container-checkboxes", { "flex-col": __props.direction === "column" }])
@@ -451,11 +560,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
451
560
  direction: __props.direction
452
561
  }, () => [
453
562
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.checkboxes, (checkbox, index) => {
454
- var _a;
563
+ var _a2;
455
564
  return openBlock(), createElementBlock("li", { key: index }, [
456
- createVNode(_sfc_main$1, mergeProps(_ctx.$attrs, {
565
+ createVNode(_sfc_main$4, mergeProps(_ctx.$attrs, {
566
+ id: (_a2 = checkbox == null ? void 0 : checkbox.id) != null ? _a2 : `${checkbox.value}`,
457
567
  class: ["checkbox", { "mb-micro": __props.direction === "column", "mr-micro": __props.direction === "row" }],
458
- id: (_a = checkbox == null ? void 0 : checkbox.id) != null ? _a : `${checkbox.value}`,
459
568
  label: checkbox.label,
460
569
  name: checkbox.name,
461
570
  value: checkbox.value,
@@ -463,7 +572,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
463
572
  "aria-invalid": !!__props.error,
464
573
  "aria-describedby": ariaDescribedby(__props.hint, __props.error),
465
574
  onChange: ($event) => emitUpdatedValue(checkbox)
466
- }), null, 16, ["class", "id", "label", "name", "value", "checked", "aria-invalid", "aria-describedby", "onChange"])
575
+ }), null, 16, ["id", "class", "label", "name", "value", "checked", "aria-invalid", "aria-describedby", "onChange"])
467
576
  ]);
468
577
  }), 128))
469
578
  ])
@@ -472,37 +581,839 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
472
581
  key: 0,
473
582
  id: `hint-${__props.id}`,
474
583
  class: "hint"
475
- }, toDisplayString(__props.hint), 9, _hoisted_3)) : __props.error ? (openBlock(), createElementBlock("p", {
584
+ }, toDisplayString(__props.hint), 9, _hoisted_3$8)) : __props.error ? (openBlock(), createElementBlock("p", {
476
585
  key: 1,
477
586
  id: `error-${__props.id}`,
478
587
  class: "error"
479
- }, toDisplayString(__props.error), 9, _hoisted_4)) : createCommentVNode("", true)
480
- ], 8, _hoisted_1);
588
+ }, toDisplayString(__props.error), 9, _hoisted_4$3)) : createCommentVNode("", true)
589
+ ], 8, _hoisted_1$8);
590
+ };
591
+ }
592
+ });
593
+ _sfc_main$4.install = (app) => {
594
+ app.component("SolCheckbox", _sfc_main$4);
595
+ };
596
+ _sfc_main$3.install = (app) => {
597
+ app.component("SolCheckboxGroup", _sfc_main$3);
598
+ };
599
+ var Switch_vue_vue_type_style_index_0_lang = "";
600
+ const _hoisted_1$7 = ["id", "for", "data-testid"];
601
+ const _hoisted_2$7 = { class: "switch-container" };
602
+ const _hoisted_3$7 = ["id", "aria-checked", "aria-labelledby", "data-testid", "checked", "value", "name"];
603
+ const _hoisted_4$2 = /* @__PURE__ */ createElementVNode("span", { class: "ellipse" }, null, -1);
604
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
605
+ props: {
606
+ id: null,
607
+ name: null,
608
+ value: null,
609
+ label: null,
610
+ checked: { type: Boolean },
611
+ class: null,
612
+ hideLabel: { type: Boolean },
613
+ horizontalLabel: { type: Boolean }
614
+ },
615
+ emits: ["change"],
616
+ setup(__props, { emit }) {
617
+ return (_ctx, _cache) => {
618
+ return openBlock(), createElementBlock("div", {
619
+ class: normalizeClass(["sol-switch-core", [_ctx.$props.class, { "-horizontal": __props.horizontalLabel }]])
620
+ }, [
621
+ createElementVNode("label", {
622
+ id: `switch-label-${__props.name}-${__props.id}`,
623
+ class: normalizeClass(["label", { "mb-1": !__props.horizontalLabel, "sr-only": __props.hideLabel }]),
624
+ for: `switch-${__props.name}-${__props.id}`,
625
+ "data-testid": `switch-label-${__props.name}-${__props.id}`
626
+ }, toDisplayString(__props.label), 11, _hoisted_1$7),
627
+ createElementVNode("div", _hoisted_2$7, [
628
+ createElementVNode("input", mergeProps(_ctx.$attrs, {
629
+ id: `switch-${__props.name}-${__props.id}`,
630
+ type: "checkbox",
631
+ class: "switch",
632
+ role: "switch",
633
+ "aria-checked": __props.checked,
634
+ "aria-labelledby": `switch-label-${__props.name}-${__props.id}`,
635
+ "data-testid": `switch-${__props.name}-${__props.id}`,
636
+ checked: __props.checked,
637
+ value: __props.value,
638
+ name: __props.name,
639
+ onChange: _cache[0] || (_cache[0] = ($event) => emit("change", __props.value))
640
+ }), null, 16, _hoisted_3$7),
641
+ _hoisted_4$2
642
+ ])
643
+ ], 2);
644
+ };
645
+ }
646
+ });
647
+ _sfc_main$2.install = (app) => {
648
+ app.component("SolSwitch", _sfc_main$2);
649
+ };
650
+ function tryOnScopeDispose(fn) {
651
+ if (getCurrentScope()) {
652
+ onScopeDispose(fn);
653
+ return true;
654
+ }
655
+ return false;
656
+ }
657
+ const isClient = typeof window !== "undefined";
658
+ const isString = (val) => typeof val === "string";
659
+ const noop = () => {
660
+ };
661
+ function unrefElement(elRef) {
662
+ var _a2;
663
+ const plain = unref(elRef);
664
+ return (_a2 = plain == null ? void 0 : plain.$el) != null ? _a2 : plain;
665
+ }
666
+ const defaultWindow = isClient ? window : void 0;
667
+ isClient ? window.document : void 0;
668
+ isClient ? window.navigator : void 0;
669
+ isClient ? window.location : void 0;
670
+ function useEventListener(...args) {
671
+ let target;
672
+ let event;
673
+ let listener;
674
+ let options;
675
+ if (isString(args[0])) {
676
+ [event, listener, options] = args;
677
+ target = defaultWindow;
678
+ } else {
679
+ [target, event, listener, options] = args;
680
+ }
681
+ if (!target)
682
+ return noop;
683
+ let cleanup = noop;
684
+ const stopWatch = watch(() => unrefElement(target), (el) => {
685
+ cleanup();
686
+ if (!el)
687
+ return;
688
+ el.addEventListener(event, listener, options);
689
+ cleanup = () => {
690
+ el.removeEventListener(event, listener, options);
691
+ cleanup = noop;
692
+ };
693
+ }, { immediate: true, flush: "post" });
694
+ const stop = () => {
695
+ stopWatch();
696
+ cleanup();
697
+ };
698
+ tryOnScopeDispose(stop);
699
+ return stop;
700
+ }
701
+ function onClickOutside(target, handler, options = {}) {
702
+ const { window: window2 = defaultWindow, ignore, capture = true } = options;
703
+ if (!window2)
704
+ return;
705
+ const shouldListen = ref(true);
706
+ const listener = (event) => {
707
+ const el = unrefElement(target);
708
+ const composedPath = event.composedPath();
709
+ if (!el || el === event.target || composedPath.includes(el) || !shouldListen.value)
710
+ return;
711
+ if (ignore && ignore.length > 0) {
712
+ if (ignore.some((target2) => {
713
+ const el2 = unrefElement(target2);
714
+ return el2 && (event.target === el2 || composedPath.includes(el2));
715
+ }))
716
+ return;
717
+ }
718
+ handler(event);
719
+ };
720
+ const cleanup = [
721
+ useEventListener(window2, "click", listener, { passive: true, capture }),
722
+ useEventListener(window2, "pointerdown", (e) => {
723
+ const el = unrefElement(target);
724
+ shouldListen.value = !!el && !e.composedPath().includes(el);
725
+ }, { passive: true })
726
+ ];
727
+ const stop = () => cleanup.forEach((fn) => fn());
728
+ return stop;
729
+ }
730
+ const _global = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
731
+ const globalKey = "__vueuse_ssr_handlers__";
732
+ _global[globalKey] = _global[globalKey] || {};
733
+ _global[globalKey];
734
+ var _a, _b;
735
+ isClient && (window == null ? void 0 : window.navigator) && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.platform) && /iP(ad|hone|od)/.test((_b = window == null ? void 0 : window.navigator) == null ? void 0 : _b.platform);
736
+ const _hoisted_1$6 = {
737
+ preserveAspectRatio: "xMidYMid meet",
738
+ viewBox: "0 0 24 24",
739
+ width: "1.2em",
740
+ height: "1.2em"
741
+ };
742
+ const _hoisted_2$6 = /* @__PURE__ */ createElementVNode("path", {
743
+ fill: "currentColor",
744
+ d: "M10 4a6 6 0 1 0 0 12a6 6 0 0 0 0-12zm-8 6a8 8 0 1 1 14.32 4.906l5.387 5.387a1 1 0 0 1-1.414 1.414l-5.387-5.387A8 8 0 0 1 2 10z"
745
+ }, null, -1);
746
+ const _hoisted_3$6 = [
747
+ _hoisted_2$6
748
+ ];
749
+ function render$4(_ctx, _cache) {
750
+ return openBlock(), createElementBlock("svg", _hoisted_1$6, _hoisted_3$6);
751
+ }
752
+ var IconSearch = { name: "mi-search", render: render$4 };
753
+ var Dropdown_vue_vue_type_style_index_0_lang = "";
754
+ const _hoisted_1$5 = ["data-testid"];
755
+ const _hoisted_2$5 = ["id", "disabled", "data-testid", "aria-expanded", "aria-controls", "aria-activedescendant", "onClick", "onKeyup"];
756
+ const _hoisted_3$5 = { class: "dropdown-container" };
757
+ const _hoisted_4$1 = ["id", "data-testid", "aria-labelledby"];
758
+ const _hoisted_5$1 = ["id", "data-testid", "selected", "aria-selected", "onClick", "onKeyup"];
759
+ const _hoisted_6$1 = {
760
+ key: 0,
761
+ class: "no-data"
762
+ };
763
+ const _hoisted_7 = /* @__PURE__ */ createTextVNode(" Sem dados ");
764
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
765
+ props: {
766
+ id: null,
767
+ disabled: { type: Boolean },
768
+ loading: { type: Boolean, default: false },
769
+ searchable: { type: Boolean, default: false },
770
+ closeOnSelect: { type: Boolean, default: true },
771
+ fetchOnSearch: { type: Boolean, default: false },
772
+ isMultipleSelect: { type: Boolean },
773
+ searchPlaceholder: null,
774
+ selected: null,
775
+ options: { default: () => [] }
776
+ },
777
+ emits: ["closeDropdown", "search", "update:selected"],
778
+ setup(__props, { emit }) {
779
+ const props = __props;
780
+ const el = ref();
781
+ const isDropdownOpen = ref(false);
782
+ const elementFocus = ref("");
783
+ const filter = ref("");
784
+ const filtered = computed(() => {
785
+ var _a2;
786
+ return props.fetchOnSearch ? props.options : (_a2 = props.options) == null ? void 0 : _a2.filter((option) => typeof option === "string" ? option.includes(filter.value) : option.name.includes(filter.value));
787
+ });
788
+ const selectedSanitize = computed(() => Array.isArray(props.selected) ? props.selected.join(", ").trim() : props.selected);
789
+ onClickOutside(el, () => {
790
+ if (isDropdownOpen.value)
791
+ close2();
792
+ });
793
+ function toggleDropdown() {
794
+ if (!props.disabled) {
795
+ isDropdownOpen.value ? close2() : open();
796
+ }
797
+ }
798
+ function open() {
799
+ isDropdownOpen.value = true;
800
+ }
801
+ function close2() {
802
+ resetStates();
803
+ emit("closeDropdown");
804
+ }
805
+ function sanitizeMultipleSelection(selectedValue) {
806
+ const selected = new Set(props.selected);
807
+ selected.has(selectedValue) ? selected.delete(selectedValue) : selected.add(selectedValue);
808
+ return [...selected];
809
+ }
810
+ function select(selected) {
811
+ const value = typeof selected === "string" ? selected : selected.value;
812
+ const sanitize = props.isMultipleSelect ? sanitizeMultipleSelection(value) : value;
813
+ emit("update:selected", sanitize);
814
+ if (props.closeOnSelect && !props.isMultipleSelect)
815
+ close2();
816
+ }
817
+ function isSelected(option) {
818
+ if (Array.isArray(props.selected)) {
819
+ return typeof option === "string" ? props.selected.includes(option) : props.selected.includes(option.value);
820
+ }
821
+ return typeof option === "string" ? option === props.selected : option.value === props.selected;
822
+ }
823
+ const listItemFocusIndex = ref(0);
824
+ function navigation({ key, code }) {
825
+ const focusListItem = (index) => {
826
+ const indexItem = index != null ? index : listItemFocusIndex.value;
827
+ if (!!index)
828
+ listItemFocusIndex.value = index;
829
+ setTimeout(() => {
830
+ const list = el.value.children[1].lastChild;
831
+ const item = list.children[indexItem];
832
+ elementFocus.value = item.id;
833
+ item.focus();
834
+ }, 0);
835
+ };
836
+ const focusSearch = () => {
837
+ var _a2;
838
+ if (props.searchable) {
839
+ listItemFocusIndex.value = 0;
840
+ (_a2 = el.value.children[1].firstChild.firstElementChild) == null ? void 0 : _a2.focus();
841
+ }
842
+ };
843
+ switch (code) {
844
+ case "ArrowUp":
845
+ listItemFocusIndex.value > 0 && (listItemFocusIndex.value -= 1);
846
+ return focusListItem();
847
+ case "ArrowDown":
848
+ if (!isDropdownOpen.value) {
849
+ open();
850
+ return focusListItem(0);
851
+ }
852
+ listItemFocusIndex.value < filtered.value.length - 1 && (listItemFocusIndex.value += 1);
853
+ return focusListItem();
854
+ case "Home":
855
+ return focusListItem(0);
856
+ case "End":
857
+ return focusListItem(props.options.length - 1);
858
+ case "Escape":
859
+ return close2();
860
+ default:
861
+ !["Enter", "NumpadEnter", "Space"].includes(code) && focusSearch();
862
+ }
863
+ }
864
+ function resetStates() {
865
+ isDropdownOpen.value = false;
866
+ listItemFocusIndex.value = 0;
867
+ filter.value = "";
868
+ }
869
+ function getOption(option, key) {
870
+ return typeof option === "string" ? option : option[key != null ? key : "value"];
871
+ }
872
+ return (_ctx, _cache) => {
873
+ return openBlock(), createElementBlock("div", {
874
+ ref_key: "el",
875
+ ref: el,
876
+ class: "sol-dropdown-core",
877
+ "data-testid": `dropdown-${__props.id}`,
878
+ onKeydownPassive: navigation
879
+ }, [
880
+ createElementVNode("button", {
881
+ id: `toggle-dropdown-${__props.id}`,
882
+ role: "combobox",
883
+ disabled: __props.disabled,
884
+ "data-testid": `toggle-dropdown-${__props.id}`,
885
+ class: "button-toggle-dropdown toggle-dropdown",
886
+ "aria-haspopup": "listbox",
887
+ "aria-expanded": isDropdownOpen.value,
888
+ "aria-controls": `dropdown-list-${__props.id}`,
889
+ "aria-activedescendant": elementFocus.value,
890
+ onClick: withModifiers(toggleDropdown, ["stop"]),
891
+ onKeyup: withKeys(toggleDropdown, ["space"])
892
+ }, [
893
+ renderSlot(_ctx.$slots, "toggle-dropdown", {
894
+ toggle: { open, close: close2, toggleDropdown },
895
+ selectedSanitized: unref(selectedSanitize),
896
+ selected: __props.selected
897
+ }, () => [
898
+ createTextVNode(toDisplayString(unref(selectedSanitize) || "Selecione"), 1)
899
+ ])
900
+ ], 40, _hoisted_2$5),
901
+ withDirectives(createElementVNode("div", _hoisted_3$5, [
902
+ __props.searchable ? (openBlock(), createElementBlock("div", {
903
+ key: 0,
904
+ class: normalizeClass(["search-container", { "-loading": __props.loading }])
905
+ }, [
906
+ renderSlot(_ctx.$slots, "search", { filter: filter.value }, () => [
907
+ createVNode(_sfc_main$a, {
908
+ id: `search-dropdown-${__props.id}`,
909
+ modelValue: filter.value,
910
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => filter.value = $event),
911
+ "data-testid": `search-dropdown-${__props.id}`,
912
+ role: "searchbox",
913
+ class: "search",
914
+ "aria-autocomplete": "list",
915
+ placeholder: __props.searchPlaceholder,
916
+ "aria-expanded": isDropdownOpen.value,
917
+ "aria-haspopup": "listbox",
918
+ "aria-controls": `dropdown-list-${__props.id}`,
919
+ "aria-activedescendant": elementFocus.value,
920
+ "aria-label": `Pesquisar dentro da lista ${__props.id}`,
921
+ onClick: _cache[1] || (_cache[1] = withModifiers(() => {
922
+ }, ["stop"])),
923
+ onInput: _cache[2] || (_cache[2] = ($event) => {
924
+ var _a2;
925
+ return emit("search", (_a2 = $event.target) == null ? void 0 : _a2.value);
926
+ })
927
+ }, null, 8, ["id", "modelValue", "data-testid", "placeholder", "aria-expanded", "aria-controls", "aria-activedescendant", "aria-label"]),
928
+ createVNode(unref(IconSearch), {
929
+ "aria-hidden": "true",
930
+ class: "icon"
931
+ })
932
+ ])
933
+ ], 2)) : createCommentVNode("", true),
934
+ createElementVNode("ul", {
935
+ id: `dropdown-list-${__props.id}`,
936
+ "data-testid": `dropdown-list-${__props.id}`,
937
+ role: "listbox",
938
+ tabindex: "-1",
939
+ "aria-labelledby": `toggle-dropdown-${__props.id}`,
940
+ class: "dropdown-list-core"
941
+ }, [
942
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(filtered), (option, index) => {
943
+ return openBlock(), createElementBlock("li", {
944
+ id: `option-${__props.id}-${getOption(option, "value")}`,
945
+ key: index,
946
+ "data-testid": `option-${__props.id}-${getOption(option, "value")}`,
947
+ role: "option",
948
+ tabindex: "-1",
949
+ class: "dropdown-item",
950
+ selected: isSelected(option),
951
+ "aria-selected": isSelected(option),
952
+ onClick: ($event) => select(option),
953
+ onKeyup: [
954
+ withKeys(($event) => select(option), ["enter"]),
955
+ withKeys(($event) => select(option), ["space"])
956
+ ]
957
+ }, [
958
+ renderSlot(_ctx.$slots, "default", {
959
+ text: getOption(option, "name"),
960
+ option,
961
+ isSelect: isSelected
962
+ }, () => [
963
+ createTextVNode(toDisplayString(getOption(option, "name")), 1)
964
+ ])
965
+ ], 40, _hoisted_5$1);
966
+ }), 128)),
967
+ !unref(filtered).length ? (openBlock(), createElementBlock("li", _hoisted_6$1, [
968
+ renderSlot(_ctx.$slots, "no-data", {}, () => [
969
+ _hoisted_7
970
+ ])
971
+ ])) : createCommentVNode("", true)
972
+ ], 8, _hoisted_4$1)
973
+ ], 512), [
974
+ [vShow, isDropdownOpen.value]
975
+ ])
976
+ ], 40, _hoisted_1$5);
481
977
  };
482
978
  }
483
979
  });
980
+ _sfc_main$1.install = (app) => {
981
+ app.component("SolDropdown", _sfc_main$1);
982
+ };
484
983
  var windiBase = "";
485
984
  var windiComponents = "";
486
985
  var windiUtilities = "";
487
986
  var style = "";
987
+ const TOAST_GAP = 12;
988
+ const DEFAULT_OPTIONS = {
989
+ type: "success",
990
+ timeout: 5e3,
991
+ showIcon: true,
992
+ showCloseButton: true,
993
+ position: "top-right",
994
+ hideProgressBar: false
995
+ };
996
+ const _hoisted_1$4 = {
997
+ preserveAspectRatio: "xMidYMid meet",
998
+ viewBox: "0 0 24 24",
999
+ width: "1.2em",
1000
+ height: "1.2em"
1001
+ };
1002
+ const _hoisted_2$4 = /* @__PURE__ */ createElementVNode("path", {
1003
+ fill: "currentColor",
1004
+ d: "M12 4a8 8 0 1 0 0 16a8 8 0 0 0 0-16zM2 12C2 6.477 6.477 2 12 2s10 4.477 10 10s-4.477 10-10 10S2 17.523 2 12zm14.664-3.247a1 1 0 0 1 .083 1.411l-5.333 6a1 1 0 0 1-1.495 0l-2.666-3a1 1 0 0 1 1.494-1.328l1.92 2.159l4.586-5.16a1 1 0 0 1 1.411-.082z"
1005
+ }, null, -1);
1006
+ const _hoisted_3$4 = [
1007
+ _hoisted_2$4
1008
+ ];
1009
+ function render$3(_ctx, _cache) {
1010
+ return openBlock(), createElementBlock("svg", _hoisted_1$4, _hoisted_3$4);
1011
+ }
1012
+ var Success = { name: "mi-circle-check", render: render$3 };
1013
+ const _hoisted_1$3 = {
1014
+ preserveAspectRatio: "xMidYMid meet",
1015
+ viewBox: "0 0 24 24",
1016
+ width: "1.2em",
1017
+ height: "1.2em"
1018
+ };
1019
+ const _hoisted_2$3 = /* @__PURE__ */ createElementVNode("path", {
1020
+ fill: "currentColor",
1021
+ d: "M12 4a8 8 0 1 0 0 16a8 8 0 0 0 0-16zM2 12C2 6.477 6.477 2 12 2s10 4.477 10 10s-4.477 10-10 10S2 17.523 2 12zm5.793-4.207a1 1 0 0 1 1.414 0L12 10.586l2.793-2.793a1 1 0 1 1 1.414 1.414L13.414 12l2.793 2.793a1 1 0 0 1-1.414 1.414L12 13.414l-2.793 2.793a1 1 0 0 1-1.414-1.414L10.586 12L7.793 9.207a1 1 0 0 1 0-1.414z"
1022
+ }, null, -1);
1023
+ const _hoisted_3$3 = [
1024
+ _hoisted_2$3
1025
+ ];
1026
+ function render$2(_ctx, _cache) {
1027
+ return openBlock(), createElementBlock("svg", _hoisted_1$3, _hoisted_3$3);
1028
+ }
1029
+ var Error$1 = { name: "mi-circle-error", render: render$2 };
1030
+ const _hoisted_1$2 = {
1031
+ preserveAspectRatio: "xMidYMid meet",
1032
+ viewBox: "0 0 24 24",
1033
+ width: "1.2em",
1034
+ height: "1.2em"
1035
+ };
1036
+ const _hoisted_2$2 = /* @__PURE__ */ createElementVNode("g", { fill: "currentColor" }, [
1037
+ /* @__PURE__ */ createElementVNode("path", { d: "M12 4a8 8 0 1 0 0 16a8 8 0 0 0 0-16zM2 12C2 6.477 6.477 2 12 2s10 4.477 10 10s-4.477 10-10 10S2 17.523 2 12z" }),
1038
+ /* @__PURE__ */ createElementVNode("path", { d: "M12 14a1 1 0 0 1-1-1V7a1 1 0 1 1 2 0v6a1 1 0 0 1-1 1zm-1.5 2.5a1.5 1.5 0 1 1 3 0a1.5 1.5 0 0 1-3 0z" })
1039
+ ], -1);
1040
+ const _hoisted_3$2 = [
1041
+ _hoisted_2$2
1042
+ ];
1043
+ function render$1(_ctx, _cache) {
1044
+ return openBlock(), createElementBlock("svg", _hoisted_1$2, _hoisted_3$2);
1045
+ }
1046
+ var Info = { name: "mi-circle-warning", render: render$1 };
1047
+ const _hoisted_1$1 = {
1048
+ preserveAspectRatio: "xMidYMid meet",
1049
+ viewBox: "0 0 24 24",
1050
+ width: "1.2em",
1051
+ height: "1.2em"
1052
+ };
1053
+ const _hoisted_2$1 = /* @__PURE__ */ createElementVNode("path", {
1054
+ fill: "currentColor",
1055
+ d: "M5.293 5.293a1 1 0 0 1 1.414 0L12 10.586l5.293-5.293a1 1 0 1 1 1.414 1.414L13.414 12l5.293 5.293a1 1 0 0 1-1.414 1.414L12 13.414l-5.293 5.293a1 1 0 0 1-1.414-1.414L10.586 12L5.293 6.707a1 1 0 0 1 0-1.414z"
1056
+ }, null, -1);
1057
+ const _hoisted_3$1 = [
1058
+ _hoisted_2$1
1059
+ ];
1060
+ function render(_ctx, _cache) {
1061
+ return openBlock(), createElementBlock("svg", _hoisted_1$1, _hoisted_3$1);
1062
+ }
1063
+ var Close = { name: "mi-close", render };
1064
+ function useTimer(callback, delay) {
1065
+ const timer = reactive({
1066
+ id: null,
1067
+ intervalId: null,
1068
+ startTime: 0,
1069
+ remaining: delay
1070
+ });
1071
+ const progress = ref(100);
1072
+ function stop() {
1073
+ clearInterval(timer.intervalId);
1074
+ clearTimeout(timer.id);
1075
+ timer.remaining -= Date.now() - timer.startTime;
1076
+ }
1077
+ function start() {
1078
+ timer.startTime = Date.now();
1079
+ clearTimeout(timer.id);
1080
+ timer.intervalId = setInterval(() => {
1081
+ progress.value--;
1082
+ }, delay / 100 - 5);
1083
+ timer.id = setTimeout(callback, timer.remaining);
1084
+ }
1085
+ function clear() {
1086
+ clearInterval(timer.intervalId);
1087
+ clearTimeout(timer.id);
1088
+ progress.value = 100;
1089
+ }
1090
+ onMounted(() => {
1091
+ if (delay <= 0)
1092
+ return;
1093
+ });
1094
+ onUnmounted(() => {
1095
+ clear();
1096
+ });
1097
+ return {
1098
+ start,
1099
+ stop,
1100
+ clear,
1101
+ progress
1102
+ };
1103
+ }
1104
+ function usePosition(fn) {
1105
+ const stylePosition = computed(() => {
1106
+ const { position, offset } = fn();
1107
+ switch (position) {
1108
+ case "top-left":
1109
+ return {
1110
+ left: "0",
1111
+ top: `${offset}px`
1112
+ };
1113
+ case "bottom-left":
1114
+ return {
1115
+ left: "0",
1116
+ bottom: `${offset}px`
1117
+ };
1118
+ case "bottom-right":
1119
+ return {
1120
+ right: "0",
1121
+ bottom: `${offset}px`
1122
+ };
1123
+ case "top-center":
1124
+ return {
1125
+ top: `${offset}px`,
1126
+ left: "0",
1127
+ right: "0",
1128
+ marginRight: "auto",
1129
+ marginLeft: "auto"
1130
+ };
1131
+ case "bottom-center":
1132
+ return {
1133
+ bottom: `${offset}px`,
1134
+ left: "0",
1135
+ right: "0",
1136
+ marginRight: "auto",
1137
+ marginLeft: "auto"
1138
+ };
1139
+ default:
1140
+ return {
1141
+ right: "0",
1142
+ top: `${offset}px`
1143
+ };
1144
+ }
1145
+ });
1146
+ return {
1147
+ stylePosition
1148
+ };
1149
+ }
1150
+ var Transition = /* @__PURE__ */ ((Transition2) => {
1151
+ Transition2["top-left"] = "bounce-left";
1152
+ Transition2["top-right"] = "bounce-right";
1153
+ Transition2["top-center"] = "bounce-down";
1154
+ Transition2["bottom-left"] = "bounce-left";
1155
+ Transition2["bottom-center"] = "bounce-up";
1156
+ Transition2["bottom-right"] = "bounce-right";
1157
+ return Transition2;
1158
+ })(Transition || {});
1159
+ var Toast_vue_vue_type_style_index_0_lang = "";
1160
+ const _hoisted_1 = ["id", "data-testid"];
1161
+ const _hoisted_2 = { class: "content-wrapper" };
1162
+ const _hoisted_3 = {
1163
+ key: 0,
1164
+ class: "icon-container",
1165
+ "aria-hidden": "true"
1166
+ };
1167
+ const _hoisted_4 = { class: "content" };
1168
+ const _hoisted_5 = {
1169
+ key: 0,
1170
+ class: "description"
1171
+ };
1172
+ const _hoisted_6 = ["data-testid"];
1173
+ const _sfc_main = /* @__PURE__ */ defineComponent({
1174
+ props: {
1175
+ id: null,
1176
+ type: { default: DEFAULT_OPTIONS.type },
1177
+ visible: { type: Boolean, default: false },
1178
+ title: null,
1179
+ description: null,
1180
+ timeout: null,
1181
+ hideProgressBar: { type: Boolean, default: DEFAULT_OPTIONS.hideProgressBar },
1182
+ showIcon: { type: Boolean, default: DEFAULT_OPTIONS.showIcon },
1183
+ offset: { default: 0 },
1184
+ onClose: null,
1185
+ onCloseHandler: null,
1186
+ position: { default: DEFAULT_OPTIONS.position }
1187
+ },
1188
+ setup(__props) {
1189
+ const props = __props;
1190
+ const { start, stop, progress } = useTimer(() => {
1191
+ var _a2;
1192
+ (_a2 = props.onCloseHandler) == null ? void 0 : _a2.call(props);
1193
+ }, props.timeout);
1194
+ const { stylePosition } = usePosition(() => ({
1195
+ offset: props.offset,
1196
+ position: props.position
1197
+ }));
1198
+ const isMultiline = computed(() => props.title && props.description);
1199
+ function onMouseEnter() {
1200
+ if (props.timeout > 0) {
1201
+ stop();
1202
+ }
1203
+ }
1204
+ function onMouseLeave() {
1205
+ start();
1206
+ }
1207
+ onMounted(() => {
1208
+ start();
1209
+ });
1210
+ return (_ctx, _cache) => {
1211
+ return openBlock(), createBlock(Transition$1, {
1212
+ name: unref(Transition)[__props.position],
1213
+ type: "animation"
1214
+ }, {
1215
+ default: withCtx(() => [
1216
+ __props.visible ? (openBlock(), createElementBlock("div", {
1217
+ key: 0,
1218
+ id: `toast-${__props.type}-${__props.id}`,
1219
+ role: "status",
1220
+ "data-testid": `toast-${__props.type}-${__props.id}`,
1221
+ style: normalizeStyle(unref(stylePosition)),
1222
+ class: normalizeClass(["sol-toast-core", [`-${__props.type}`, { "-multiline": unref(isMultiline) }]]),
1223
+ onKeyup: _cache[1] || (_cache[1] = withKeys((...args) => __props.onCloseHandler && __props.onCloseHandler(...args), ["esc"])),
1224
+ onMouseenter: onMouseEnter,
1225
+ onMouseleave: onMouseLeave,
1226
+ onFocusin: onMouseEnter,
1227
+ onFocusout: onMouseLeave
1228
+ }, [
1229
+ createElementVNode("section", _hoisted_2, [
1230
+ __props.showIcon ? (openBlock(), createElementBlock("div", _hoisted_3, [
1231
+ renderSlot(_ctx.$slots, "icon-status", { type: __props.type }, () => [
1232
+ __props.type === "success" ? (openBlock(), createBlock(unref(Success), {
1233
+ key: 0,
1234
+ class: "icon"
1235
+ })) : createCommentVNode("", true),
1236
+ __props.type === "info" ? (openBlock(), createBlock(unref(Info), {
1237
+ key: 1,
1238
+ class: "icon"
1239
+ })) : createCommentVNode("", true),
1240
+ __props.type === "danger" ? (openBlock(), createBlock(unref(Error$1), {
1241
+ key: 2,
1242
+ class: "icon"
1243
+ })) : createCommentVNode("", true)
1244
+ ])
1245
+ ])) : createCommentVNode("", true),
1246
+ createElementVNode("div", _hoisted_4, [
1247
+ createElementVNode("p", {
1248
+ class: normalizeClass(["title", { "-multiline": unref(isMultiline) }])
1249
+ }, [
1250
+ renderSlot(_ctx.$slots, "title", {}, () => [
1251
+ createTextVNode(toDisplayString(__props.title), 1)
1252
+ ])
1253
+ ], 2),
1254
+ __props.description ? (openBlock(), createElementBlock("p", _hoisted_5, [
1255
+ renderSlot(_ctx.$slots, "description", {}, () => [
1256
+ createTextVNode(toDisplayString(__props.description), 1)
1257
+ ])
1258
+ ])) : createCommentVNode("", true)
1259
+ ])
1260
+ ]),
1261
+ createElementVNode("button", {
1262
+ type: "button",
1263
+ class: normalizeClass(["close", { "-multiline": unref(isMultiline) }]),
1264
+ "data-testid": `toast-close-button-${__props.type}-${__props.id}`,
1265
+ "aria-label": "close notification",
1266
+ onClick: _cache[0] || (_cache[0] = (...args) => __props.onCloseHandler && __props.onCloseHandler(...args))
1267
+ }, [
1268
+ createVNode(unref(Close), { class: "icon" })
1269
+ ], 10, _hoisted_6),
1270
+ !__props.hideProgressBar ? (openBlock(), createElementBlock("div", {
1271
+ key: 0,
1272
+ class: "progressbar",
1273
+ "aria-hidden": "true",
1274
+ style: normalizeStyle({ width: `${unref(progress)}%` })
1275
+ }, null, 4)) : createCommentVNode("", true)
1276
+ ], 46, _hoisted_1)) : createCommentVNode("", true)
1277
+ ]),
1278
+ _: 3
1279
+ }, 8, ["name"]);
1280
+ };
1281
+ }
1282
+ });
1283
+ const toasts = {
1284
+ "top-left": [],
1285
+ "top-right": [],
1286
+ "top-center": [],
1287
+ "bottom-left": [],
1288
+ "bottom-right": [],
1289
+ "bottom-center": []
1290
+ };
1291
+ function useToast() {
1292
+ let toastId = 0;
1293
+ function clearAllToasts() {
1294
+ Object.entries(toasts).forEach(([position, toastsInAPosition]) => {
1295
+ if (toastsInAPosition.length) {
1296
+ toastsInAPosition.forEach((toast) => {
1297
+ var _a2;
1298
+ const id = (_a2 = toast.toastVNode.props) == null ? void 0 : _a2.id;
1299
+ close(id, position);
1300
+ });
1301
+ }
1302
+ });
1303
+ }
1304
+ const createToast = (content, options) => {
1305
+ const id = toastId++;
1306
+ const initializedOptions = options ? initializeOptions(options) : DEFAULT_OPTIONS;
1307
+ if (options == null ? void 0 : options.showOneToast)
1308
+ clearAllToasts();
1309
+ const transformContent = typeof content === "string" ? { title: content } : content;
1310
+ setupVNode(id, initializedOptions, transformContent);
1311
+ return {
1312
+ close: () => close(id, initializedOptions.position)
1313
+ };
1314
+ };
1315
+ return {
1316
+ createToast,
1317
+ clearAllToasts
1318
+ };
1319
+ }
1320
+ function initializeOptions(options) {
1321
+ const processedOptions = __spreadProps(__spreadValues(__spreadValues({}, DEFAULT_OPTIONS), options), {
1322
+ showIcon: options.showIcon
1323
+ });
1324
+ processedOptions.hideProgressBar = !!(processedOptions.timeout && (processedOptions == null ? void 0 : processedOptions.timeout) <= 0);
1325
+ if (options.hideProgressBar) {
1326
+ processedOptions.hideProgressBar = options.hideProgressBar;
1327
+ }
1328
+ return processedOptions;
1329
+ }
1330
+ function setupVNode(id, options, content) {
1331
+ setTimeout(() => {
1332
+ const verticalOffset = moveToastsOnAdd(options, toasts, TOAST_GAP);
1333
+ const container = document.createElement("div");
1334
+ document.body.appendChild(container);
1335
+ const toastVNode = createVNode(_sfc_main, setupVNodeProps(options, id, verticalOffset, close, content));
1336
+ render$7(toastVNode, container);
1337
+ toasts[options.position].push({ toastVNode, container });
1338
+ if (toastVNode.component)
1339
+ toastVNode.component.props.visible = true;
1340
+ }, 1);
1341
+ }
1342
+ function setupVNodeProps(options, id, offset, closeFn, content) {
1343
+ return __spreadProps(__spreadValues(__spreadValues({}, options), content), {
1344
+ id,
1345
+ offset,
1346
+ visible: false,
1347
+ onCloseHandler() {
1348
+ closeFn(id, options.position ? options.position : "top-right");
1349
+ }
1350
+ });
1351
+ }
1352
+ function moveToastsOnAdd(options, toasts2, toastGap) {
1353
+ if (!options.position)
1354
+ throw new Error("no position");
1355
+ return toasts2[options.position].reduce((acc, { toastVNode }) => {
1356
+ const offsetHeight = toastVNode.el.offsetHeight + toastGap;
1357
+ acc += offsetHeight || 0;
1358
+ return acc;
1359
+ }, toastGap);
1360
+ }
1361
+ function moveToastsOnClose(index, toastArr, position, toastHeight) {
1362
+ for (let i = index; i < toastArr.length; i++) {
1363
+ const { toastVNode } = toastArr[i];
1364
+ if (!toastVNode.el)
1365
+ return;
1366
+ const verticalPosition = position.split("-")[0] || "top";
1367
+ const positionLessOneToast = parseInt(toastVNode.el.style[verticalPosition], 10) - toastHeight - TOAST_GAP;
1368
+ if (!toastVNode.component)
1369
+ return;
1370
+ toastVNode.component.props.offset = positionLessOneToast;
1371
+ }
1372
+ }
1373
+ function close(id, position) {
1374
+ var _a2;
1375
+ const toastArr = toasts[position];
1376
+ const index = toastArr.findIndex(({ toastVNode: toastVNode2 }) => {
1377
+ var _a3;
1378
+ return id === ((_a3 = toastVNode2 == null ? void 0 : toastVNode2.props) == null ? void 0 : _a3.id);
1379
+ });
1380
+ if (index === -1)
1381
+ return;
1382
+ const { container, toastVNode } = toastArr[index];
1383
+ const height = (_a2 = toastVNode == null ? void 0 : toastVNode.el) == null ? void 0 : _a2.offsetHeight;
1384
+ toasts[position].splice(index, 1);
1385
+ moveToastsOnClose(index, toastArr, position, height);
1386
+ if (!toastVNode.component)
1387
+ return;
1388
+ const componentProps = toastVNode.component.props;
1389
+ componentProps.visible = false;
1390
+ componentProps.onClose && componentProps.onClose();
1391
+ setTimeout(() => {
1392
+ render$7(null, container);
1393
+ document.body.removeChild(container);
1394
+ }, 1e3);
1395
+ }
488
1396
  console.log("%c\u{1F33B}[Girassol]\u{1F33B}", "padding: 8px;background: #212121;color: gold; font-family: 'Fira code'; font-weight: bold; font-size: 1.2rem");
489
1397
  const components = {
490
- SolButton: _sfc_main$7,
491
- SolInput: _sfc_main$6,
492
- SolTextfield: _sfc_main$5,
493
- SolTextfieldPassword: _sfc_main$4,
494
- SolRadio: _sfc_main$3,
495
- SolRadioGroup: _sfc_main$2,
496
- SolCheckbox: _sfc_main$1,
497
- SolCheckboxGroup: _sfc_main
1398
+ SolButton: _sfc_main$b,
1399
+ SolInput: _sfc_main$a,
1400
+ SolTextarea: _sfc_main$7,
1401
+ SolTextfield: _sfc_main$9,
1402
+ SolTextfieldPassword: _sfc_main$8,
1403
+ SolRadio: _sfc_main$6,
1404
+ SolRadioGroup: _sfc_main$5,
1405
+ SolCheckbox: _sfc_main$4,
1406
+ SolCheckboxGroup: _sfc_main$3,
1407
+ SolSwitch: _sfc_main$2,
1408
+ SolDropdown: _sfc_main$1
498
1409
  };
499
- function install(App2) {
1410
+ function install(App) {
500
1411
  for (const component in components) {
501
- App2.component(component, components[component]);
1412
+ App.component(component, components[component]);
502
1413
  }
503
1414
  }
504
1415
  const componentsNames = [];
505
1416
  for (const component in components) {
506
1417
  componentsNames.push(component);
507
1418
  }
508
- export { _sfc_main$7 as SolButton, _sfc_main$1 as SolCheckbox, _sfc_main as SolCheckboxGroup, _sfc_main$6 as SolInput, _sfc_main$3 as SolRadio, _sfc_main$2 as SolRadioGroup, _sfc_main$5 as SolTextfield, _sfc_main$4 as SolTextfieldPassword, componentsNames, install };
1419
+ export { _sfc_main$b as SolButton, _sfc_main$4 as SolCheckbox, _sfc_main$3 as SolCheckboxGroup, _sfc_main$1 as SolDropdown, _sfc_main$a as SolInput, _sfc_main$6 as SolRadio, _sfc_main$5 as SolRadioGroup, _sfc_main$2 as SolSwitch, _sfc_main$7 as SolTextarea, _sfc_main$9 as SolTextfield, _sfc_main$8 as SolTextfieldPassword, componentsNames, install, useToast };