@topjoao/top-design-system 0.1.0-beta.2 → 0.1.0-beta.3

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.
@@ -0,0 +1,364 @@
1
+ import { Fragment as e, computed as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createSlots as o, createTextVNode as s, createVNode as c, defineComponent as l, guardReactiveProps as u, mergeProps as ee, nextTick as d, normalizeClass as f, normalizeProps as p, onBeforeUnmount as te, onMounted as m, openBlock as h, ref as g, renderList as _, renderSlot as v, toDisplayString as y, unref as b, useSlots as x, watch as S, withCtx as C, withDirectives as w } from "vue";
2
+ import T from "primevue/button";
3
+ import E from "primevue/tooltip";
4
+ import { twMerge as D } from "tailwind-merge";
5
+ import ne from "primevue/autocomplete";
6
+ //#region src/components/TopButton.vue?vue&type=script&setup=true&lang.ts
7
+ var O = { class: "top-button top-solutions-component h-fit w-fit rounded-[12px] bg-transparent" }, k = /* @__PURE__ */ l({
8
+ __name: "TopButton",
9
+ props: {
10
+ tooltip: { default: "" },
11
+ tooltipClass: { default: "text-xs" },
12
+ label: { default: "" },
13
+ icon: { default: "" },
14
+ loading: {
15
+ type: Boolean,
16
+ default: !1
17
+ },
18
+ class: { default: "" },
19
+ outlined: {
20
+ type: Boolean,
21
+ default: !1
22
+ },
23
+ secondary: {
24
+ type: Boolean,
25
+ default: !1
26
+ },
27
+ disabled: {
28
+ type: Boolean,
29
+ default: !1
30
+ },
31
+ unstyled: {
32
+ type: Boolean,
33
+ default: !1
34
+ },
35
+ type: { default: "button" }
36
+ },
37
+ emits: ["click"],
38
+ setup(e, { emit: r }) {
39
+ let a = x(), s = t(() => !!a.icon), c = e, l = r, u = t(() => {
40
+ let e = c.unstyled ? "" : c.secondary ? "rounded-[10px] border px-2 py-2 font-bold" : c.outlined ? "shrink-0 rounded-[10px] border-primary-800 px-4 py-2 text-primary-800 hover:bg-primary-50" : "rounded-[10px] !border-primary-900 bg-primary-900 px-3 py-2 font-bold text-white hover:!border-primary-800 hover:bg-primary-800 ";
41
+ return D(e, c.class);
42
+ });
43
+ return (t, r) => (h(), i("span", O, [w((h(), n(b(T), {
44
+ type: e.type,
45
+ label: e.label,
46
+ disabled: e.disabled || e.loading,
47
+ icon: s.value ? void 0 : e.icon || void 0,
48
+ loading: e.loading,
49
+ outlined: e.outlined || e.secondary,
50
+ severity: e.secondary ? "secondary" : void 0,
51
+ class: f(u.value),
52
+ pt: { root: { class: u.value } },
53
+ onClick: r[0] ||= (e) => l("click")
54
+ }, o({ _: 2 }, [s.value ? {
55
+ name: "icon",
56
+ fn: C(() => [v(t.$slots, "icon")]),
57
+ key: "0"
58
+ } : void 0]), 1032, [
59
+ "type",
60
+ "label",
61
+ "disabled",
62
+ "icon",
63
+ "loading",
64
+ "outlined",
65
+ "severity",
66
+ "class",
67
+ "pt"
68
+ ])), [[
69
+ b(E),
70
+ {
71
+ value: e.tooltip,
72
+ class: e.tooltipClass
73
+ },
74
+ void 0,
75
+ { top: !0 }
76
+ ]])]));
77
+ }
78
+ }), A = { class: "pointer-events-none absolute left-3 top-3 iconetop z-10 text-primary-800 dark:text-primary-500" }, j = {
79
+ key: 0,
80
+ class: "pi pi-spin pi-spinner"
81
+ }, M = {
82
+ key: 1,
83
+ class: "pi pi-search"
84
+ }, N = {
85
+ key: 1,
86
+ class: "flex items-center gap-1 !text-sm"
87
+ }, re = { class: "flex items-center gap-2 rounded-[9px] bg-primary-500 px-2 py-1 text-white" }, ie = ["onClick"], ae = { class: "line-clamp-1 max-w-[300px] overflow-hidden text-ellipsis" }, oe = {
88
+ key: 1,
89
+ class: "flex min-h-[100px] flex-col items-center justify-center gap-2 py-2"
90
+ }, se = {
91
+ key: 0,
92
+ class: "text-xs font-medium text-primary-600"
93
+ }, ce = {
94
+ key: 2,
95
+ class: "text-xs text-secondary-500"
96
+ }, le = { key: 1 }, ue = {
97
+ key: 1,
98
+ class: "flex items-center gap-2 font-semibold"
99
+ }, P = {
100
+ key: 1,
101
+ class: "flex w-full min-w-0 items-start gap-2 overflow-hidden px-2 py-3 text-sm",
102
+ style: { "white-space": "normal" }
103
+ }, F = ["title"], I = {
104
+ key: 0,
105
+ class: "top-select-option-prefix whitespace-nowrap font-bold text-primary-800 dark:text-primary-100"
106
+ }, L = {
107
+ key: 0,
108
+ class: "rounded-sm bg-primary-200 p-0 font-bold text-black dark:bg-cyan-700 dark:text-white"
109
+ }, R = {
110
+ key: 0,
111
+ class: "rounded-sm bg-primary-200 p-0 font-bold text-black dark:bg-cyan-700 dark:text-white"
112
+ }, z = /* @__PURE__ */ l({
113
+ __name: "TopSelect",
114
+ props: {
115
+ modelValue: { default: null },
116
+ options: { default: () => [] },
117
+ loading: {
118
+ type: Boolean,
119
+ default: !1
120
+ },
121
+ disabled: {
122
+ type: Boolean,
123
+ default: !1
124
+ },
125
+ placeholder: { default: "Search..." },
126
+ optionLabel: {
127
+ type: [String, Function],
128
+ default: "label"
129
+ },
130
+ optionKey: { default: "id" },
131
+ optionPrefix: { default: "" },
132
+ showOptionPrefix: {
133
+ type: Boolean,
134
+ default: !1
135
+ },
136
+ showSelectedPrefix: {
137
+ type: Boolean,
138
+ default: !1
139
+ },
140
+ panelWidth: { default: null },
141
+ scrollHeight: { default: "250px" },
142
+ invalid: {
143
+ type: Boolean,
144
+ default: !1
145
+ },
146
+ showTooltip: {
147
+ type: Boolean,
148
+ default: !0
149
+ },
150
+ optionGroupLabel: { default: null },
151
+ optionGroupChildren: { default: null },
152
+ minQueryLength: { default: 1 },
153
+ emptyMessage: { default: "No results found." },
154
+ loadingMessage: { default: "Loading..." },
155
+ showLoadingMessage: {
156
+ type: Boolean,
157
+ default: !0
158
+ },
159
+ multiple: {
160
+ type: Boolean,
161
+ default: !1
162
+ },
163
+ forceSelection: {
164
+ type: Boolean,
165
+ default: !0
166
+ },
167
+ closeOnSelect: {
168
+ type: Boolean,
169
+ default: !1
170
+ }
171
+ },
172
+ emits: [
173
+ "update:modelValue",
174
+ "search",
175
+ "loadMore",
176
+ "clear",
177
+ "select",
178
+ "change"
179
+ ],
180
+ setup(n, { expose: l, emit: T }) {
181
+ let D = n, O = T, k = x(), z = ne, B = g(""), V = g(!1), H = g(null), U = `top-select-${Math.random().toString(36).slice(2)}`, W = null, G = t({
182
+ get: () => D.modelValue,
183
+ set: (e) => O("update:modelValue", e)
184
+ });
185
+ function K(e, t) {
186
+ return e == null ? "" : String(typeof e == "object" ? e[t] ?? "" : e);
187
+ }
188
+ function q(e) {
189
+ return e == null ? "" : typeof D.optionLabel == "function" ? D.optionLabel(e) : K(e, D.optionLabel);
190
+ }
191
+ function J(e) {
192
+ return D.optionPrefix ? K(e, D.optionPrefix) : "";
193
+ }
194
+ function Y(e, t = D.showSelectedPrefix) {
195
+ let n = q(e), r = J(e);
196
+ return t && r ? `${r} - ${n}` : n;
197
+ }
198
+ function X(e) {
199
+ let t = B.value;
200
+ if (!t) return [{
201
+ text: e,
202
+ highlighted: !1
203
+ }];
204
+ let n = t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), r = RegExp(`(${n})`, "gi");
205
+ return e.split(r).filter(Boolean).map((e) => ({
206
+ text: e,
207
+ highlighted: e.toLowerCase() === t.toLowerCase()
208
+ }));
209
+ }
210
+ function Z() {
211
+ H.value?.hide?.();
212
+ }
213
+ function Q() {
214
+ typeof window > "u" || window.dispatchEvent(new CustomEvent("top-select:close-others", { detail: { instanceId: U } }));
215
+ }
216
+ function $(e) {
217
+ e.detail?.instanceId !== U && Z();
218
+ }
219
+ function de() {
220
+ if (D.disabled || W) {
221
+ Z();
222
+ return;
223
+ }
224
+ V.value = !0, Q();
225
+ }
226
+ function fe() {
227
+ D.closeOnSelect && (V.value = !1, Z(), d(Z), W && clearTimeout(W), W = setTimeout(() => {
228
+ Z(), W = null;
229
+ }, 200));
230
+ }
231
+ return l({ hideDropdown: Z }), m(() => window.addEventListener("top-select:close-others", $)), te(() => {
232
+ window.removeEventListener("top-select:close-others", $), W && clearTimeout(W);
233
+ }), S(() => D.disabled, (e) => {
234
+ e && (V.value = !1, Z());
235
+ }), S(() => D.options, () => {
236
+ V.value || Z();
237
+ }), (t, l) => (h(), i("div", {
238
+ class: f(["top-select top-solutions-component relative w-full", { "pointer-events-none": n.disabled }]),
239
+ onFocusin: de
240
+ }, [a("span", A, [v(t.$slots, "icon", { loading: n.loading }, () => [n.loading ? (h(), i("i", j)) : (h(), i("i", M))])]), c(b(z), {
241
+ ref_key: "autocompleteRef",
242
+ ref: H,
243
+ modelValue: G.value,
244
+ "onUpdate:modelValue": l[0] ||= (e) => G.value = e,
245
+ "option-group-label": n.optionGroupLabel ?? void 0,
246
+ "option-group-children": n.optionGroupChildren ?? void 0,
247
+ suggestions: n.options,
248
+ "data-key": n.optionKey,
249
+ "option-label": (e) => Y(e),
250
+ placeholder: n.placeholder,
251
+ multiple: n.multiple,
252
+ "min-length": n.minQueryLength,
253
+ disabled: n.disabled,
254
+ delay: 500,
255
+ "show-clear": !n.multiple && !n.disabled,
256
+ dropdown: "",
257
+ "dropdown-mode": "current",
258
+ "complete-on-focus": !1,
259
+ invalid: n.invalid,
260
+ fluid: "",
261
+ "force-selection": n.forceSelection,
262
+ "input-class": "text-xs",
263
+ "virtual-scroller-options": {
264
+ lazy: !0,
265
+ onLazyLoad: (e) => O("loadMore", e),
266
+ itemSize: 84,
267
+ showLoader: !0,
268
+ scrollHeight: n.scrollHeight
269
+ },
270
+ pt: {
271
+ root: { class: ["w-full text-xs", n.multiple ? "h-auto" : "h-[40px]"].join(" ") },
272
+ input: { class: ["w-full h-auto text-xs dark:text-zinc-100", n.multiple ? "border-0 bg-transparent py-1 !shadow-none outline-none ring-0 dark:!bg-transparent" : "border border-secondary-600 rounded-[10px] !pl-9 min-h-[36px] dark:border-zinc-600 dark:bg-zinc-800"].join(" ") },
273
+ inputMultiple: { class: ["pl-9 min-h-[40px] dark:border-zinc-600 dark:text-zinc-100", n.disabled ? "dark:!bg-zinc-700 dark:!text-zinc-400" : "dark:bg-zinc-800"].join(" ") },
274
+ inputChip: { class: "py-0" },
275
+ token: { class: "bg-primary-100 text-primary-900 rounded-md gap-2 px-2 my-1 dark:bg-primary-900 dark:text-primary-100" },
276
+ removeTokenIcon: { class: "text-primary-900 w-3 h-3 cursor-pointer dark:text-primary-100" },
277
+ panel: { class: "top-select-panel top-solutions-component max-w-[85vw] overflow-hidden h-fit shadow-xl" },
278
+ listContainer: {
279
+ class: "max-w-full overflow-x-hidden",
280
+ style: {
281
+ overflowX: "hidden",
282
+ maxWidth: n.panelWidth ?? "85vw",
283
+ ...n.panelWidth ? { width: n.panelWidth } : {}
284
+ }
285
+ },
286
+ list: { class: "max-w-full overflow-x-hidden" },
287
+ option: { class: "max-w-full overflow-hidden min-h-[84px]" },
288
+ placeholder: { class: "!text-xs" }
289
+ },
290
+ "search-message": " ",
291
+ onClear: l[1] ||= (e) => {
292
+ B.value = "", O("clear");
293
+ },
294
+ onItemSelect: l[2] ||= (e) => {
295
+ B.value = "", O("select", e), fe();
296
+ },
297
+ onComplete: l[3] ||= (e) => {
298
+ if (n.disabled) {
299
+ Z();
300
+ return;
301
+ }
302
+ B.value = e.query ?? "", Q(), O("search", {
303
+ ...e,
304
+ query: B.value
305
+ });
306
+ },
307
+ onChange: l[4] ||= (e) => O("change", e)
308
+ }, o({
309
+ chip: C((e) => [b(k).chip ? v(t.$slots, "chip", p(u(e)), void 0, void 0, 0) : (h(), i("div", N, [a("div", re, [a("i", {
310
+ class: "pi pi-times-circle shrink-0 cursor-pointer rounded-full hover:bg-primary-800",
311
+ onClick: (t) => e.removeCallback(t)
312
+ }, null, 8, ie), w((h(), i("span", ae, [s(y(Y(e.value)), 1)])), [[
313
+ b(E),
314
+ Y(e.value),
315
+ void 0,
316
+ { top: !0 }
317
+ ]])])]))]),
318
+ empty: C(() => [b(k).empty ? v(t.$slots, "empty", {}, void 0, void 0, 0) : n.loading ? (h(), i("div", oe, [l[5] ||= a("span", { class: "pi pi-spin pi-spinner text-2xl text-primary-600" }, null, -1), n.showLoadingMessage ? (h(), i("span", se, y(n.loadingMessage), 1)) : r("", !0)])) : (h(), i("span", ce, y(n.emptyMessage), 1))]),
319
+ "selected-item": C((e) => [b(k)["selected-item"] ? v(t.$slots, "selected-item", p(u(e)), void 0, void 0, 0) : e.item ? (h(), i("span", le, y(Y(e.item)), 1)) : r("", !0)]),
320
+ optiongroup: C((e) => [b(k)["option-group"] ? v(t.$slots, "option-group", p(u(e)), void 0, void 0, 0) : (h(), i("div", ue, [e.option.icon ? (h(), i("i", {
321
+ key: 0,
322
+ class: f(e.option.icon)
323
+ }, null, 2)) : r("", !0), a("span", null, y(e.option[n.optionGroupLabel ?? "label"]), 1)]))]),
324
+ option: C((o) => [b(k).option ? v(t.$slots, "option", ee(o, {
325
+ label: q(o.option),
326
+ prefix: J(o.option),
327
+ query: B.value
328
+ }), void 0, void 0, 0) : w((h(), i("div", P, [a("span", {
329
+ class: "top-select-option-label line-clamp-2 min-w-0 flex-1 text-secondary-700 dark:text-zinc-200",
330
+ title: q(o.option)
331
+ }, [n.showOptionPrefix && J(o.option) ? (h(), i("span", I, [(h(!0), i(e, null, _(X(J(o.option)), (t, n) => (h(), i(e, { key: n }, [t.highlighted ? (h(), i("mark", L, y(t.text), 1)) : (h(), i(e, { key: 1 }, [s(y(t.text), 1)], 64))], 64))), 128)), l[6] ||= a("span", { class: "font-bold text-secondary-500 dark:text-zinc-400" }, "\xA0-\xA0", -1)])) : r("", !0), (h(!0), i(e, null, _(X(q(o.option)), (t, n) => (h(), i(e, { key: n }, [t.highlighted ? (h(), i("mark", R, y(t.text), 1)) : (h(), i(e, { key: 1 }, [s(y(t.text), 1)], 64))], 64))), 128))], 8, F)])), [[
332
+ b(E),
333
+ n.showTooltip ? q(o.option) : null,
334
+ void 0,
335
+ { top: !0 }
336
+ ]])]),
337
+ _: 2
338
+ }, [b(k).footer ? {
339
+ name: "footer",
340
+ fn: C((e) => [v(t.$slots, "footer", p(u(e)))]),
341
+ key: "0"
342
+ } : void 0]), 1032, [
343
+ "modelValue",
344
+ "option-group-label",
345
+ "option-group-children",
346
+ "suggestions",
347
+ "data-key",
348
+ "option-label",
349
+ "placeholder",
350
+ "multiple",
351
+ "min-length",
352
+ "disabled",
353
+ "show-clear",
354
+ "invalid",
355
+ "force-selection",
356
+ "virtual-scroller-options",
357
+ "pt"
358
+ ])], 34));
359
+ }
360
+ });
361
+ //#endregion
362
+ export { k as n, z as t };
363
+
364
+ //# sourceMappingURL=TopSelect-BtRWj2sh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TopSelect-BtRWj2sh.js","names":[],"sources":["../src/components/TopButton.vue","../src/components/TopButton.vue","../src/components/TopSelect.vue","../src/components/TopSelect.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, useSlots } from 'vue'\r\nimport Button from 'primevue/button'\r\nimport vTooltip from 'primevue/tooltip'\r\nimport { twMerge } from 'tailwind-merge'\r\n\r\nconst slots = useSlots()\r\nconst outrosIcones = computed(() => Boolean(slots.icon))\r\n\r\nconst props = withDefaults(\r\n defineProps<{\r\n tooltip?: string\r\n tooltipClass?: string\r\n label?: string\r\n icon?: string\r\n loading?: boolean\r\n class?: string\r\n outlined?: boolean\r\n secondary?: boolean\r\n disabled?: boolean\r\n unstyled?: boolean\r\n type?: 'button' | 'submit' | 'reset'\r\n }>(),\r\n {\r\n tooltip: '',\r\n tooltipClass: 'text-xs',\r\n label: '',\r\n icon: '',\r\n loading: false,\r\n class: '',\r\n outlined: false,\r\n secondary: false,\r\n disabled: false,\r\n unstyled: false,\r\n type: 'button',\r\n },\r\n)\r\n\r\nconst emit = defineEmits<{\r\n click: []\r\n}>()\r\n\r\nconst buttonClasses = computed(() => {\r\n const baseClasses = !props.unstyled\r\n ? props.secondary\r\n ? 'rounded-[10px] border px-2 py-2 font-bold'\r\n : props.outlined\r\n ? 'shrink-0 rounded-[10px] border-primary-800 px-4 py-2 text-primary-800 hover:bg-primary-50'\r\n : 'rounded-[10px] !border-primary-900 bg-primary-900 px-3 py-2 font-bold text-white hover:!border-primary-800 hover:bg-primary-800 '\r\n : ''\r\n\r\n return twMerge(baseClasses, props.class)\r\n})\r\n</script>\r\n\r\n<template>\r\n <span class=\"top-button top-solutions-component h-fit w-fit rounded-[12px] bg-transparent\">\r\n <Button\r\n v-tooltip.top=\"{\r\n value: tooltip,\r\n class: tooltipClass,\r\n }\"\r\n :type=\"type\"\r\n :label=\"label\"\r\n :disabled=\"disabled || loading\"\r\n :icon=\"outrosIcones ? undefined : icon || undefined\"\r\n :loading=\"loading\"\r\n :outlined=\"outlined || secondary\"\r\n :severity=\"secondary ? 'secondary' : undefined\"\r\n :class=\"buttonClasses\"\r\n :pt=\"{\r\n root: { class: buttonClasses },\r\n }\"\r\n @click=\"emit('click')\"\r\n >\r\n <template v-if=\"outrosIcones\" #icon>\r\n <slot name=\"icon\" />\r\n </template>\r\n </Button>\r\n </span>\r\n</template>\r\n\r\n<style>\r\n.top-button {\r\n width: fit-content;\r\n height: fit-content;\r\n border-radius: 12px;\r\n background-color: transparent;\r\n}\r\n</style>\r\n","<script setup lang=\"ts\">\r\nimport { computed, useSlots } from 'vue'\r\nimport Button from 'primevue/button'\r\nimport vTooltip from 'primevue/tooltip'\r\nimport { twMerge } from 'tailwind-merge'\r\n\r\nconst slots = useSlots()\r\nconst outrosIcones = computed(() => Boolean(slots.icon))\r\n\r\nconst props = withDefaults(\r\n defineProps<{\r\n tooltip?: string\r\n tooltipClass?: string\r\n label?: string\r\n icon?: string\r\n loading?: boolean\r\n class?: string\r\n outlined?: boolean\r\n secondary?: boolean\r\n disabled?: boolean\r\n unstyled?: boolean\r\n type?: 'button' | 'submit' | 'reset'\r\n }>(),\r\n {\r\n tooltip: '',\r\n tooltipClass: 'text-xs',\r\n label: '',\r\n icon: '',\r\n loading: false,\r\n class: '',\r\n outlined: false,\r\n secondary: false,\r\n disabled: false,\r\n unstyled: false,\r\n type: 'button',\r\n },\r\n)\r\n\r\nconst emit = defineEmits<{\r\n click: []\r\n}>()\r\n\r\nconst buttonClasses = computed(() => {\r\n const baseClasses = !props.unstyled\r\n ? props.secondary\r\n ? 'rounded-[10px] border px-2 py-2 font-bold'\r\n : props.outlined\r\n ? 'shrink-0 rounded-[10px] border-primary-800 px-4 py-2 text-primary-800 hover:bg-primary-50'\r\n : 'rounded-[10px] !border-primary-900 bg-primary-900 px-3 py-2 font-bold text-white hover:!border-primary-800 hover:bg-primary-800 '\r\n : ''\r\n\r\n return twMerge(baseClasses, props.class)\r\n})\r\n</script>\r\n\r\n<template>\r\n <span class=\"top-button top-solutions-component h-fit w-fit rounded-[12px] bg-transparent\">\r\n <Button\r\n v-tooltip.top=\"{\r\n value: tooltip,\r\n class: tooltipClass,\r\n }\"\r\n :type=\"type\"\r\n :label=\"label\"\r\n :disabled=\"disabled || loading\"\r\n :icon=\"outrosIcones ? undefined : icon || undefined\"\r\n :loading=\"loading\"\r\n :outlined=\"outlined || secondary\"\r\n :severity=\"secondary ? 'secondary' : undefined\"\r\n :class=\"buttonClasses\"\r\n :pt=\"{\r\n root: { class: buttonClasses },\r\n }\"\r\n @click=\"emit('click')\"\r\n >\r\n <template v-if=\"outrosIcones\" #icon>\r\n <slot name=\"icon\" />\r\n </template>\r\n </Button>\r\n </span>\r\n</template>\r\n\r\n<style>\r\n.top-button {\r\n width: fit-content;\r\n height: fit-content;\r\n border-radius: 12px;\r\n background-color: transparent;\r\n}\r\n</style>\r\n","<script setup lang=\"ts\">\r\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, useSlots, watch } from 'vue'\r\nimport AutoComplete from 'primevue/autocomplete'\r\nimport vTooltip from 'primevue/tooltip'\r\n\r\ntype SelectOption = Record<string, unknown> | string | number\r\n\r\nconst props = withDefaults(\r\n defineProps<{\r\n modelValue?: SelectOption | SelectOption[] | null\r\n options?: SelectOption[]\r\n loading?: boolean\r\n disabled?: boolean\r\n placeholder?: string\r\n optionLabel?: string | ((option: SelectOption) => string)\r\n optionKey?: string\r\n optionPrefix?: string\r\n showOptionPrefix?: boolean\r\n showSelectedPrefix?: boolean\r\n panelWidth?: string | null\r\n scrollHeight?: string\r\n invalid?: boolean\r\n showTooltip?: boolean\r\n optionGroupLabel?: string | null\r\n optionGroupChildren?: string | null\r\n minQueryLength?: number\r\n emptyMessage?: string\r\n loadingMessage?: string\r\n showLoadingMessage?: boolean\r\n multiple?: boolean\r\n forceSelection?: boolean\r\n closeOnSelect?: boolean\r\n }>(),\r\n {\r\n modelValue: null,\r\n options: () => [],\r\n loading: false,\r\n disabled: false,\r\n placeholder: 'Search...',\r\n optionLabel: 'label',\r\n optionKey: 'id',\r\n optionPrefix: '',\r\n showOptionPrefix: false,\r\n showSelectedPrefix: false,\r\n panelWidth: null,\r\n scrollHeight: '250px',\r\n invalid: false,\r\n showTooltip: true,\r\n optionGroupLabel: null,\r\n optionGroupChildren: null,\r\n minQueryLength: 1,\r\n emptyMessage: 'No results found.',\r\n loadingMessage: 'Loading...',\r\n showLoadingMessage: true,\r\n multiple: false,\r\n forceSelection: true,\r\n closeOnSelect: false,\r\n },\r\n)\r\n\r\nconst emit = defineEmits<{\r\n 'update:modelValue': [value: SelectOption | SelectOption[] | null]\r\n search: [event: { originalEvent: Event; query: string }]\r\n loadMore: [event: unknown]\r\n clear: []\r\n select: [event: unknown]\r\n change: [event: unknown]\r\n}>()\r\n\r\nconst slots = useSlots()\r\n// PrimeVue's slot types omit selected-item even though the runtime component supports it.\r\nconst TopAutoComplete = AutoComplete as any\r\nconst query = ref('')\r\nconst focused = ref(false)\r\nconst autocompleteRef = ref<{ hide?: () => void } | null>(null)\r\nconst instanceId = `top-select-${Math.random().toString(36).slice(2)}`\r\nlet closeTimer: ReturnType<typeof setTimeout> | null = null\r\n\r\nconst valueProxy = computed({\r\n get: () => props.modelValue,\r\n set: (value) => emit('update:modelValue', value),\r\n})\r\n\r\nfunction readOptionValue(option: SelectOption | null | undefined, key: string) {\r\n if (option === null || option === undefined) return ''\r\n if (typeof option !== 'object') return String(option)\r\n return String(option[key] ?? '')\r\n}\r\n\r\nfunction getOptionLabel(option: SelectOption | null | undefined) {\r\n if (option === null || option === undefined) return ''\r\n if (typeof props.optionLabel === 'function') return props.optionLabel(option)\r\n return readOptionValue(option, props.optionLabel)\r\n}\r\n\r\nfunction getOptionPrefix(option: SelectOption | null | undefined) {\r\n return props.optionPrefix ? readOptionValue(option, props.optionPrefix) : ''\r\n}\r\n\r\nfunction formatOptionLabel(option: SelectOption | null | undefined, includePrefix = props.showSelectedPrefix) {\r\n const label = getOptionLabel(option)\r\n const prefix = getOptionPrefix(option)\r\n return includePrefix && prefix ? `${prefix} - ${label}` : label\r\n}\r\n\r\nfunction getHighlightedParts(value: string) {\r\n const searchTerm = query.value\r\n if (!searchTerm) return [{ text: value, highlighted: false }]\r\n\r\n const escapedQuery = searchTerm.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\r\n const regex = new RegExp(`(${escapedQuery})`, 'gi')\r\n return value.split(regex).filter(Boolean).map((part) => ({\r\n text: part,\r\n highlighted: part.toLowerCase() === searchTerm.toLowerCase(),\r\n }))\r\n}\r\n\r\nfunction hideDropdown() {\r\n autocompleteRef.value?.hide?.()\r\n}\r\n\r\nfunction closeOtherDropdowns() {\r\n if (typeof window === 'undefined') return\r\n window.dispatchEvent(new CustomEvent('top-select:close-others', { detail: { instanceId } }))\r\n}\r\n\r\nfunction handleOtherDropdownClosing(event: Event) {\r\n const customEvent = event as CustomEvent<{ instanceId?: string }>\r\n if (customEvent.detail?.instanceId !== instanceId) hideDropdown()\r\n}\r\n\r\nfunction handleFocusIn() {\r\n if (props.disabled || closeTimer) {\r\n hideDropdown()\r\n return\r\n }\r\n focused.value = true\r\n closeOtherDropdowns()\r\n}\r\n\r\nfunction closeAfterSelection() {\r\n if (!props.closeOnSelect) return\r\n focused.value = false\r\n hideDropdown()\r\n nextTick(hideDropdown)\r\n if (closeTimer) clearTimeout(closeTimer)\r\n closeTimer = setTimeout(() => {\r\n hideDropdown()\r\n closeTimer = null\r\n }, 200)\r\n}\r\n\r\ndefineExpose({ hideDropdown })\r\n\r\nonMounted(() => window.addEventListener('top-select:close-others', handleOtherDropdownClosing))\r\nonBeforeUnmount(() => {\r\n window.removeEventListener('top-select:close-others', handleOtherDropdownClosing)\r\n if (closeTimer) clearTimeout(closeTimer)\r\n})\r\n\r\nwatch(() => props.disabled, (disabled) => {\r\n if (disabled) {\r\n focused.value = false\r\n hideDropdown()\r\n }\r\n})\r\n\r\nwatch(() => props.options, () => {\r\n if (!focused.value) hideDropdown()\r\n})\r\n</script>\r\n\r\n<template>\r\n <div class=\"top-select top-solutions-component relative w-full\" :class=\"{ 'pointer-events-none': disabled }\" @focusin=\"handleFocusIn\">\r\n <span class=\"pointer-events-none absolute left-3 top-3 iconetop z-10 text-primary-800 dark:text-primary-500\">\r\n <slot name=\"icon\" :loading=\"loading\">\r\n <i v-if=\"loading\" class=\"pi pi-spin pi-spinner\" />\r\n <i v-else class=\"pi pi-search\" />\r\n </slot>\r\n </span>\r\n\r\n <TopAutoComplete\r\n ref=\"autocompleteRef\"\r\n v-model=\"valueProxy\"\r\n :option-group-label=\"optionGroupLabel ?? undefined\"\r\n :option-group-children=\"optionGroupChildren ?? undefined\"\r\n :suggestions=\"options\"\r\n :data-key=\"optionKey\"\r\n :option-label=\"(option: SelectOption) => formatOptionLabel(option)\"\r\n :placeholder=\"placeholder\"\r\n :multiple=\"multiple\"\r\n :min-length=\"minQueryLength\"\r\n :disabled=\"disabled\"\r\n :delay=\"500\"\r\n :show-clear=\"!multiple && !disabled\"\r\n dropdown\r\n dropdown-mode=\"current\"\r\n :complete-on-focus=\"false\"\r\n :invalid=\"invalid\"\r\n fluid\r\n :force-selection=\"forceSelection\"\r\n input-class=\"text-xs\"\r\n :virtual-scroller-options=\"{\r\n lazy: true,\r\n onLazyLoad: (event: unknown) => emit('loadMore', event),\r\n itemSize: 84,\r\n showLoader: true,\r\n scrollHeight,\r\n }\"\r\n :pt=\"{\r\n root: { class: ['w-full text-xs', multiple ? 'h-auto' : 'h-[40px]'].join(' ') },\r\n input: { class: ['w-full h-auto text-xs dark:text-zinc-100', multiple ? 'border-0 bg-transparent py-1 !shadow-none outline-none ring-0 dark:!bg-transparent' : 'border border-secondary-600 rounded-[10px] !pl-9 min-h-[36px] dark:border-zinc-600 dark:bg-zinc-800'].join(' ') },\r\n inputMultiple: { class: ['pl-9 min-h-[40px] dark:border-zinc-600 dark:text-zinc-100', disabled ? 'dark:!bg-zinc-700 dark:!text-zinc-400' : 'dark:bg-zinc-800'].join(' ') },\r\n inputChip: { class: 'py-0' },\r\n token: { class: 'bg-primary-100 text-primary-900 rounded-md gap-2 px-2 my-1 dark:bg-primary-900 dark:text-primary-100' },\r\n removeTokenIcon: { class: 'text-primary-900 w-3 h-3 cursor-pointer dark:text-primary-100' },\r\n panel: { class: 'top-select-panel top-solutions-component max-w-[85vw] overflow-hidden h-fit shadow-xl' },\r\n listContainer: { class: 'max-w-full overflow-x-hidden', style: { overflowX: 'hidden', maxWidth: panelWidth ?? '85vw', ...(panelWidth ? { width: panelWidth } : {}) } },\r\n list: { class: 'max-w-full overflow-x-hidden' }, option: { class: 'max-w-full overflow-hidden min-h-[84px]' }, placeholder: { class: '!text-xs' },\r\n }\"\r\n search-message=\" \"\r\n @clear=\"query = ''; emit('clear')\"\r\n @item-select=\"(event: unknown) => { query = ''; emit('select', event); closeAfterSelection() }\"\r\n @complete=\"(event: { originalEvent: Event; query?: string }) => { if (disabled) { hideDropdown(); return }; query = event.query ?? ''; closeOtherDropdowns(); emit('search', { ...event, query: query }) }\"\r\n @change=\"(event: unknown) => emit('change', event)\"\r\n >\r\n <template #chip=\"slotProps\">\r\n <slot v-if=\"slots.chip\" name=\"chip\" v-bind=\"slotProps\" />\r\n <div v-else class=\"flex items-center gap-1 !text-sm\">\r\n <div class=\"flex items-center gap-2 rounded-[9px] bg-primary-500 px-2 py-1 text-white\">\r\n <i class=\"pi pi-times-circle shrink-0 cursor-pointer rounded-full hover:bg-primary-800\" @click=\"slotProps.removeCallback($event)\" />\r\n <span v-tooltip.top=\"formatOptionLabel(slotProps.value)\" class=\"line-clamp-1 max-w-[300px] overflow-hidden text-ellipsis\">{{ formatOptionLabel(slotProps.value) }}</span>\r\n </div>\r\n </div>\r\n </template>\r\n\r\n <template #empty>\r\n <slot v-if=\"slots.empty\" name=\"empty\" />\r\n <div v-else-if=\"loading\" class=\"flex min-h-[100px] flex-col items-center justify-center gap-2 py-2\">\r\n <span class=\"pi pi-spin pi-spinner text-2xl text-primary-600\" />\r\n <span v-if=\"showLoadingMessage\" class=\"text-xs font-medium text-primary-600\">{{ loadingMessage }}</span>\r\n </div>\r\n <span v-else class=\"text-xs text-secondary-500\">{{ emptyMessage }}</span>\r\n </template>\r\n\r\n <template #selected-item=\"slotProps\">\r\n <slot v-if=\"slots['selected-item']\" name=\"selected-item\" v-bind=\"slotProps\" />\r\n <span v-else-if=\"slotProps.item\">{{ formatOptionLabel(slotProps.item) }}</span>\r\n </template>\r\n\r\n <template #optiongroup=\"slotProps\">\r\n <slot v-if=\"slots['option-group']\" name=\"option-group\" v-bind=\"slotProps\" />\r\n <div v-else class=\"flex items-center gap-2 font-semibold\">\r\n <i v-if=\"slotProps.option.icon\" :class=\"slotProps.option.icon\" />\r\n <span>{{ slotProps.option[optionGroupLabel ?? 'label'] }}</span>\r\n </div>\r\n </template>\r\n\r\n <template #option=\"slotProps\">\r\n <slot v-if=\"slots.option\" name=\"option\" v-bind=\"slotProps\" :label=\"getOptionLabel(slotProps.option)\" :prefix=\"getOptionPrefix(slotProps.option)\" :query=\"query\" />\r\n <div v-else v-tooltip.top=\"showTooltip ? getOptionLabel(slotProps.option) : null\" class=\"flex w-full min-w-0 items-start gap-2 overflow-hidden px-2 py-3 text-sm\" style=\"white-space: normal\">\r\n <span class=\"top-select-option-label line-clamp-2 min-w-0 flex-1 text-secondary-700 dark:text-zinc-200\" :title=\"getOptionLabel(slotProps.option)\">\r\n <span v-if=\"showOptionPrefix && getOptionPrefix(slotProps.option)\" class=\"top-select-option-prefix whitespace-nowrap font-bold text-primary-800 dark:text-primary-100\">\r\n <template v-for=\"(part, index) in getHighlightedParts(getOptionPrefix(slotProps.option))\" :key=\"index\"><mark v-if=\"part.highlighted\" class=\"rounded-sm bg-primary-200 p-0 font-bold text-black dark:bg-cyan-700 dark:text-white\">{{ part.text }}</mark><template v-else>{{ part.text }}</template></template><span class=\"font-bold text-secondary-500 dark:text-zinc-400\">&nbsp;-&nbsp;</span>\r\n </span>\r\n <template v-for=\"(part, index) in getHighlightedParts(getOptionLabel(slotProps.option))\" :key=\"index\"><mark v-if=\"part.highlighted\" class=\"rounded-sm bg-primary-200 p-0 font-bold text-black dark:bg-cyan-700 dark:text-white\">{{ part.text }}</mark><template v-else>{{ part.text }}</template></template>\r\n </span>\r\n </div>\r\n </template>\r\n\r\n <template v-if=\"slots.footer\" #footer=\"slotProps\"><slot name=\"footer\" v-bind=\"slotProps\" /></template>\r\n </TopAutoComplete>\r\n </div>\r\n</template>\r\n\r\n<style>\r\n.top-select {\r\n position: relative;\r\n width: 100%;\r\n}\r\n\r\n.top-select .p-inputtext.p-component.p-inputtext-fluid.p-autocomplete-input {\r\n padding-left: 35px !important;\r\n border-radius: 10px 0 0 10px !important;\r\n}\r\n\r\n.top-select .p-autocomplete-dropdown {\r\n border-radius: 0 10px 10px 0 !important;\r\n}\r\n\r\n.top-select-option-prefix {\r\n color: var(--top-primary-800) !important;\r\n}\r\n\r\n.dark .top-select-option-prefix {\r\n color: var(--top-primary-100) !important;\r\n}\r\n\r\n.top-select-option-label {\r\n min-width: 0;\r\n flex: 1;\r\n display: -webkit-box;\r\n -webkit-box-orient: vertical;\r\n -webkit-line-clamp: 2;\r\n line-clamp: 2;\r\n overflow: hidden;\r\n overflow-wrap: anywhere;\r\n}\r\n\r\n.top-select-panel,\r\n.top-select-panel .p-virtualscroller,\r\n.top-select-panel .p-autocomplete-list-container,\r\n.top-select-panel .p-autocomplete-list { overflow-x: hidden !important; }\r\n.top-select-panel .p-autocomplete-option { max-width: 100%; }\r\n</style>\r\n","<script setup lang=\"ts\">\r\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, useSlots, watch } from 'vue'\r\nimport AutoComplete from 'primevue/autocomplete'\r\nimport vTooltip from 'primevue/tooltip'\r\n\r\ntype SelectOption = Record<string, unknown> | string | number\r\n\r\nconst props = withDefaults(\r\n defineProps<{\r\n modelValue?: SelectOption | SelectOption[] | null\r\n options?: SelectOption[]\r\n loading?: boolean\r\n disabled?: boolean\r\n placeholder?: string\r\n optionLabel?: string | ((option: SelectOption) => string)\r\n optionKey?: string\r\n optionPrefix?: string\r\n showOptionPrefix?: boolean\r\n showSelectedPrefix?: boolean\r\n panelWidth?: string | null\r\n scrollHeight?: string\r\n invalid?: boolean\r\n showTooltip?: boolean\r\n optionGroupLabel?: string | null\r\n optionGroupChildren?: string | null\r\n minQueryLength?: number\r\n emptyMessage?: string\r\n loadingMessage?: string\r\n showLoadingMessage?: boolean\r\n multiple?: boolean\r\n forceSelection?: boolean\r\n closeOnSelect?: boolean\r\n }>(),\r\n {\r\n modelValue: null,\r\n options: () => [],\r\n loading: false,\r\n disabled: false,\r\n placeholder: 'Search...',\r\n optionLabel: 'label',\r\n optionKey: 'id',\r\n optionPrefix: '',\r\n showOptionPrefix: false,\r\n showSelectedPrefix: false,\r\n panelWidth: null,\r\n scrollHeight: '250px',\r\n invalid: false,\r\n showTooltip: true,\r\n optionGroupLabel: null,\r\n optionGroupChildren: null,\r\n minQueryLength: 1,\r\n emptyMessage: 'No results found.',\r\n loadingMessage: 'Loading...',\r\n showLoadingMessage: true,\r\n multiple: false,\r\n forceSelection: true,\r\n closeOnSelect: false,\r\n },\r\n)\r\n\r\nconst emit = defineEmits<{\r\n 'update:modelValue': [value: SelectOption | SelectOption[] | null]\r\n search: [event: { originalEvent: Event; query: string }]\r\n loadMore: [event: unknown]\r\n clear: []\r\n select: [event: unknown]\r\n change: [event: unknown]\r\n}>()\r\n\r\nconst slots = useSlots()\r\n// PrimeVue's slot types omit selected-item even though the runtime component supports it.\r\nconst TopAutoComplete = AutoComplete as any\r\nconst query = ref('')\r\nconst focused = ref(false)\r\nconst autocompleteRef = ref<{ hide?: () => void } | null>(null)\r\nconst instanceId = `top-select-${Math.random().toString(36).slice(2)}`\r\nlet closeTimer: ReturnType<typeof setTimeout> | null = null\r\n\r\nconst valueProxy = computed({\r\n get: () => props.modelValue,\r\n set: (value) => emit('update:modelValue', value),\r\n})\r\n\r\nfunction readOptionValue(option: SelectOption | null | undefined, key: string) {\r\n if (option === null || option === undefined) return ''\r\n if (typeof option !== 'object') return String(option)\r\n return String(option[key] ?? '')\r\n}\r\n\r\nfunction getOptionLabel(option: SelectOption | null | undefined) {\r\n if (option === null || option === undefined) return ''\r\n if (typeof props.optionLabel === 'function') return props.optionLabel(option)\r\n return readOptionValue(option, props.optionLabel)\r\n}\r\n\r\nfunction getOptionPrefix(option: SelectOption | null | undefined) {\r\n return props.optionPrefix ? readOptionValue(option, props.optionPrefix) : ''\r\n}\r\n\r\nfunction formatOptionLabel(option: SelectOption | null | undefined, includePrefix = props.showSelectedPrefix) {\r\n const label = getOptionLabel(option)\r\n const prefix = getOptionPrefix(option)\r\n return includePrefix && prefix ? `${prefix} - ${label}` : label\r\n}\r\n\r\nfunction getHighlightedParts(value: string) {\r\n const searchTerm = query.value\r\n if (!searchTerm) return [{ text: value, highlighted: false }]\r\n\r\n const escapedQuery = searchTerm.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\r\n const regex = new RegExp(`(${escapedQuery})`, 'gi')\r\n return value.split(regex).filter(Boolean).map((part) => ({\r\n text: part,\r\n highlighted: part.toLowerCase() === searchTerm.toLowerCase(),\r\n }))\r\n}\r\n\r\nfunction hideDropdown() {\r\n autocompleteRef.value?.hide?.()\r\n}\r\n\r\nfunction closeOtherDropdowns() {\r\n if (typeof window === 'undefined') return\r\n window.dispatchEvent(new CustomEvent('top-select:close-others', { detail: { instanceId } }))\r\n}\r\n\r\nfunction handleOtherDropdownClosing(event: Event) {\r\n const customEvent = event as CustomEvent<{ instanceId?: string }>\r\n if (customEvent.detail?.instanceId !== instanceId) hideDropdown()\r\n}\r\n\r\nfunction handleFocusIn() {\r\n if (props.disabled || closeTimer) {\r\n hideDropdown()\r\n return\r\n }\r\n focused.value = true\r\n closeOtherDropdowns()\r\n}\r\n\r\nfunction closeAfterSelection() {\r\n if (!props.closeOnSelect) return\r\n focused.value = false\r\n hideDropdown()\r\n nextTick(hideDropdown)\r\n if (closeTimer) clearTimeout(closeTimer)\r\n closeTimer = setTimeout(() => {\r\n hideDropdown()\r\n closeTimer = null\r\n }, 200)\r\n}\r\n\r\ndefineExpose({ hideDropdown })\r\n\r\nonMounted(() => window.addEventListener('top-select:close-others', handleOtherDropdownClosing))\r\nonBeforeUnmount(() => {\r\n window.removeEventListener('top-select:close-others', handleOtherDropdownClosing)\r\n if (closeTimer) clearTimeout(closeTimer)\r\n})\r\n\r\nwatch(() => props.disabled, (disabled) => {\r\n if (disabled) {\r\n focused.value = false\r\n hideDropdown()\r\n }\r\n})\r\n\r\nwatch(() => props.options, () => {\r\n if (!focused.value) hideDropdown()\r\n})\r\n</script>\r\n\r\n<template>\r\n <div class=\"top-select top-solutions-component relative w-full\" :class=\"{ 'pointer-events-none': disabled }\" @focusin=\"handleFocusIn\">\r\n <span class=\"pointer-events-none absolute left-3 top-3 iconetop z-10 text-primary-800 dark:text-primary-500\">\r\n <slot name=\"icon\" :loading=\"loading\">\r\n <i v-if=\"loading\" class=\"pi pi-spin pi-spinner\" />\r\n <i v-else class=\"pi pi-search\" />\r\n </slot>\r\n </span>\r\n\r\n <TopAutoComplete\r\n ref=\"autocompleteRef\"\r\n v-model=\"valueProxy\"\r\n :option-group-label=\"optionGroupLabel ?? undefined\"\r\n :option-group-children=\"optionGroupChildren ?? undefined\"\r\n :suggestions=\"options\"\r\n :data-key=\"optionKey\"\r\n :option-label=\"(option: SelectOption) => formatOptionLabel(option)\"\r\n :placeholder=\"placeholder\"\r\n :multiple=\"multiple\"\r\n :min-length=\"minQueryLength\"\r\n :disabled=\"disabled\"\r\n :delay=\"500\"\r\n :show-clear=\"!multiple && !disabled\"\r\n dropdown\r\n dropdown-mode=\"current\"\r\n :complete-on-focus=\"false\"\r\n :invalid=\"invalid\"\r\n fluid\r\n :force-selection=\"forceSelection\"\r\n input-class=\"text-xs\"\r\n :virtual-scroller-options=\"{\r\n lazy: true,\r\n onLazyLoad: (event: unknown) => emit('loadMore', event),\r\n itemSize: 84,\r\n showLoader: true,\r\n scrollHeight,\r\n }\"\r\n :pt=\"{\r\n root: { class: ['w-full text-xs', multiple ? 'h-auto' : 'h-[40px]'].join(' ') },\r\n input: { class: ['w-full h-auto text-xs dark:text-zinc-100', multiple ? 'border-0 bg-transparent py-1 !shadow-none outline-none ring-0 dark:!bg-transparent' : 'border border-secondary-600 rounded-[10px] !pl-9 min-h-[36px] dark:border-zinc-600 dark:bg-zinc-800'].join(' ') },\r\n inputMultiple: { class: ['pl-9 min-h-[40px] dark:border-zinc-600 dark:text-zinc-100', disabled ? 'dark:!bg-zinc-700 dark:!text-zinc-400' : 'dark:bg-zinc-800'].join(' ') },\r\n inputChip: { class: 'py-0' },\r\n token: { class: 'bg-primary-100 text-primary-900 rounded-md gap-2 px-2 my-1 dark:bg-primary-900 dark:text-primary-100' },\r\n removeTokenIcon: { class: 'text-primary-900 w-3 h-3 cursor-pointer dark:text-primary-100' },\r\n panel: { class: 'top-select-panel top-solutions-component max-w-[85vw] overflow-hidden h-fit shadow-xl' },\r\n listContainer: { class: 'max-w-full overflow-x-hidden', style: { overflowX: 'hidden', maxWidth: panelWidth ?? '85vw', ...(panelWidth ? { width: panelWidth } : {}) } },\r\n list: { class: 'max-w-full overflow-x-hidden' }, option: { class: 'max-w-full overflow-hidden min-h-[84px]' }, placeholder: { class: '!text-xs' },\r\n }\"\r\n search-message=\" \"\r\n @clear=\"query = ''; emit('clear')\"\r\n @item-select=\"(event: unknown) => { query = ''; emit('select', event); closeAfterSelection() }\"\r\n @complete=\"(event: { originalEvent: Event; query?: string }) => { if (disabled) { hideDropdown(); return }; query = event.query ?? ''; closeOtherDropdowns(); emit('search', { ...event, query: query }) }\"\r\n @change=\"(event: unknown) => emit('change', event)\"\r\n >\r\n <template #chip=\"slotProps\">\r\n <slot v-if=\"slots.chip\" name=\"chip\" v-bind=\"slotProps\" />\r\n <div v-else class=\"flex items-center gap-1 !text-sm\">\r\n <div class=\"flex items-center gap-2 rounded-[9px] bg-primary-500 px-2 py-1 text-white\">\r\n <i class=\"pi pi-times-circle shrink-0 cursor-pointer rounded-full hover:bg-primary-800\" @click=\"slotProps.removeCallback($event)\" />\r\n <span v-tooltip.top=\"formatOptionLabel(slotProps.value)\" class=\"line-clamp-1 max-w-[300px] overflow-hidden text-ellipsis\">{{ formatOptionLabel(slotProps.value) }}</span>\r\n </div>\r\n </div>\r\n </template>\r\n\r\n <template #empty>\r\n <slot v-if=\"slots.empty\" name=\"empty\" />\r\n <div v-else-if=\"loading\" class=\"flex min-h-[100px] flex-col items-center justify-center gap-2 py-2\">\r\n <span class=\"pi pi-spin pi-spinner text-2xl text-primary-600\" />\r\n <span v-if=\"showLoadingMessage\" class=\"text-xs font-medium text-primary-600\">{{ loadingMessage }}</span>\r\n </div>\r\n <span v-else class=\"text-xs text-secondary-500\">{{ emptyMessage }}</span>\r\n </template>\r\n\r\n <template #selected-item=\"slotProps\">\r\n <slot v-if=\"slots['selected-item']\" name=\"selected-item\" v-bind=\"slotProps\" />\r\n <span v-else-if=\"slotProps.item\">{{ formatOptionLabel(slotProps.item) }}</span>\r\n </template>\r\n\r\n <template #optiongroup=\"slotProps\">\r\n <slot v-if=\"slots['option-group']\" name=\"option-group\" v-bind=\"slotProps\" />\r\n <div v-else class=\"flex items-center gap-2 font-semibold\">\r\n <i v-if=\"slotProps.option.icon\" :class=\"slotProps.option.icon\" />\r\n <span>{{ slotProps.option[optionGroupLabel ?? 'label'] }}</span>\r\n </div>\r\n </template>\r\n\r\n <template #option=\"slotProps\">\r\n <slot v-if=\"slots.option\" name=\"option\" v-bind=\"slotProps\" :label=\"getOptionLabel(slotProps.option)\" :prefix=\"getOptionPrefix(slotProps.option)\" :query=\"query\" />\r\n <div v-else v-tooltip.top=\"showTooltip ? getOptionLabel(slotProps.option) : null\" class=\"flex w-full min-w-0 items-start gap-2 overflow-hidden px-2 py-3 text-sm\" style=\"white-space: normal\">\r\n <span class=\"top-select-option-label line-clamp-2 min-w-0 flex-1 text-secondary-700 dark:text-zinc-200\" :title=\"getOptionLabel(slotProps.option)\">\r\n <span v-if=\"showOptionPrefix && getOptionPrefix(slotProps.option)\" class=\"top-select-option-prefix whitespace-nowrap font-bold text-primary-800 dark:text-primary-100\">\r\n <template v-for=\"(part, index) in getHighlightedParts(getOptionPrefix(slotProps.option))\" :key=\"index\"><mark v-if=\"part.highlighted\" class=\"rounded-sm bg-primary-200 p-0 font-bold text-black dark:bg-cyan-700 dark:text-white\">{{ part.text }}</mark><template v-else>{{ part.text }}</template></template><span class=\"font-bold text-secondary-500 dark:text-zinc-400\">&nbsp;-&nbsp;</span>\r\n </span>\r\n <template v-for=\"(part, index) in getHighlightedParts(getOptionLabel(slotProps.option))\" :key=\"index\"><mark v-if=\"part.highlighted\" class=\"rounded-sm bg-primary-200 p-0 font-bold text-black dark:bg-cyan-700 dark:text-white\">{{ part.text }}</mark><template v-else>{{ part.text }}</template></template>\r\n </span>\r\n </div>\r\n </template>\r\n\r\n <template v-if=\"slots.footer\" #footer=\"slotProps\"><slot name=\"footer\" v-bind=\"slotProps\" /></template>\r\n </TopAutoComplete>\r\n </div>\r\n</template>\r\n\r\n<style>\r\n.top-select {\r\n position: relative;\r\n width: 100%;\r\n}\r\n\r\n.top-select .p-inputtext.p-component.p-inputtext-fluid.p-autocomplete-input {\r\n padding-left: 35px !important;\r\n border-radius: 10px 0 0 10px !important;\r\n}\r\n\r\n.top-select .p-autocomplete-dropdown {\r\n border-radius: 0 10px 10px 0 !important;\r\n}\r\n\r\n.top-select-option-prefix {\r\n color: var(--top-primary-800) !important;\r\n}\r\n\r\n.dark .top-select-option-prefix {\r\n color: var(--top-primary-100) !important;\r\n}\r\n\r\n.top-select-option-label {\r\n min-width: 0;\r\n flex: 1;\r\n display: -webkit-box;\r\n -webkit-box-orient: vertical;\r\n -webkit-line-clamp: 2;\r\n line-clamp: 2;\r\n overflow: hidden;\r\n overflow-wrap: anywhere;\r\n}\r\n\r\n.top-select-panel,\r\n.top-select-panel .p-virtualscroller,\r\n.top-select-panel .p-autocomplete-list-container,\r\n.top-select-panel .p-autocomplete-list { overflow-x: hidden !important; }\r\n.top-select-panel .p-autocomplete-option { max-width: 100%; }\r\n</style>\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMA,IAAM,IAAQ,EAAS,GACjB,IAAe,QAAe,EAAQ,EAAM,IAAK,GAEjD,IAAQ,GA6BR,IAAO,GAIP,IAAgB,QAAe;GACnC,IAAM,IAAe,EAAM,WAMvB,KALA,EAAM,YACJ,8CACA,EAAM,WACJ,8FACA;GAGR,OAAO,EAAQ,GAAa,EAAM,KAAK;EACzC,CAAC;oBAIC,EAAA,GAAA,EAuBO,QAvBP,GAuBO,CAtBL,GAAA,EAAA,GAAA,EAqBS,EAAA,CAAA,GAAA;GAhBN,MAAM,EAAA;GACN,OAAO,EAAA;GACP,UAAU,EAAA,YAAY,EAAA;GACtB,MAAM,EAAA,QAAe,KAAA,IAAY,EAAA,QAAQ,KAAA;GACzC,SAAS,EAAA;GACT,UAAU,EAAA,YAAY,EAAA;GACtB,UAAU,EAAA,YAAS,cAAiB,KAAA;GACpC,OAAK,EAAE,EAAA,KAAa;GACpB,IAAE,EAA4B,MAAA,EAAA,OAAA,EAAA,MAAa,EAAA;GAG3C,SAAK,AAAA,EAAA,QAAA,MAAE,EAAI,OAAA;EAEI,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,CAAA,EAAA,QAAA;GAAe,MAAA;GAC7B,IAAA,QAAoB,CAApB,EAAoB,EAAA,QAAA,MAAA,CAAA,CAAA;;;;;;;;;;;;;;;IAlBW,OAAA,EAAA;IAAyB,OAAA,EAAA;;;GAAhD,EAAA,KAAV,GAGE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EEtDR,IAAM,IAAQ,GAqDR,IAAO,GASP,IAAQ,EAAS,GAEjB,IAAkB,IAClB,IAAQ,EAAI,EAAE,GACd,IAAU,EAAI,EAAK,GACnB,IAAkB,EAAkC,IAAI,GACxD,IAAa,cAAc,KAAK,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,KAC/D,IAAmD,MAEjD,IAAa,EAAS;GAC1B,WAAW,EAAM;GACjB,MAAM,MAAU,EAAK,qBAAqB,CAAK;EACjD,CAAC;EAED,SAAS,EAAgB,GAAyC,GAAa;GAG7E,OAFI,KAAW,OAAqC,KAE7C,OADH,OAAO,KAAW,WACR,EAAO,MAAQ,KADiB,CAAM;EAEtD;EAEA,SAAS,EAAe,GAAyC;GAG/D,OAFI,KAAW,OAAqC,KAChD,OAAO,EAAM,eAAgB,aAAmB,EAAM,YAAY,CAAM,IACrE,EAAgB,GAAQ,EAAM,WAAW;EAClD;EAEA,SAAS,EAAgB,GAAyC;GAChE,OAAO,EAAM,eAAe,EAAgB,GAAQ,EAAM,YAAY,IAAI;EAC5E;EAEA,SAAS,EAAkB,GAAyC,IAAgB,EAAM,oBAAoB;GAC5G,IAAM,IAAQ,EAAe,CAAM,GAC7B,IAAS,EAAgB,CAAM;GACrC,OAAO,KAAiB,IAAS,GAAG,EAAO,KAAK,MAAU;EAC5D;EAEA,SAAS,EAAoB,GAAe;GAC1C,IAAM,IAAa,EAAM;GACzB,IAAI,CAAC,GAAY,OAAO,CAAC;IAAE,MAAM;IAAO,aAAa;GAAM,CAAC;GAE5D,IAAM,IAAe,EAAW,QAAQ,uBAAuB,MAAM,GAC/D,IAAY,OAAO,IAAI,EAAa,IAAI,IAAI;GAClD,OAAO,EAAM,MAAM,CAAK,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,OAAU;IACvD,MAAM;IACN,aAAa,EAAK,YAAY,MAAM,EAAW,YAAY;GAC7D,EAAE;EACJ;EAEA,SAAS,IAAe;GACtB,EAAgB,OAAO,OAAO;EAChC;EAEA,SAAS,IAAsB;GACzB,OAAO,SAAW,OACtB,OAAO,cAAc,IAAI,YAAY,2BAA2B,EAAE,QAAQ,EAAE,cAAW,EAAE,CAAC,CAAC;EAC7F;EAEA,SAAS,EAA2B,GAAc;GAEhD,AAAI,EAAY,QAAQ,eAAe,KAAY,EAAa;EAClE;EAEA,SAAS,KAAgB;GACvB,IAAI,EAAM,YAAY,GAAY;IAChC,EAAa;IACb;GACF;GAEA,AADA,EAAQ,QAAQ,IAChB,EAAoB;EACtB;EAEA,SAAS,KAAsB;GACxB,EAAM,kBACX,EAAQ,QAAQ,IAChB,EAAa,GACb,EAAS,CAAY,GACjB,KAAY,aAAa,CAAU,GACvC,IAAa,iBAAiB;IAE5B,AADA,EAAa,GACb,IAAa;GACf,GAAG,GAAG;EACR;SAEA,EAAa,EAAE,gBAAa,CAAC,GAE7B,QAAgB,OAAO,iBAAiB,2BAA2B,CAA0B,CAAC,GAC9F,SAAsB;GAEpB,AADA,OAAO,oBAAoB,2BAA2B,CAA0B,GAC5E,KAAY,aAAa,CAAU;EACzC,CAAC,GAED,QAAY,EAAM,WAAW,MAAa;GACxC,AAAI,MACF,EAAQ,QAAQ,IAChB,EAAa;EAEjB,CAAC,GAED,QAAY,EAAM,eAAe;GAC/B,AAAK,EAAQ,SAAO,EAAa;EACnC,CAAC,cAIC,EAAA,GAAA,EAmGM,OAAA;GAnGD,OAAK,EAAA,CAAC,sDAAoD,EAAA,uBAAkC,EAAA,SAAQ,CAAA,CAAA;GAAK,WAAS;EACrH,GAAA,CAAA,EAKO,QALP,GAKO,CAJL,EAGO,EAAA,QAAA,QAAA,EAHY,SAAS,EAAA,QAAO,SAG5B,CAFI,EAAA,WAAT,EAAA,GAAA,EAAkD,KAAlD,CAAkD,MAClD,EAAA,GAAA,EAAiC,KAAjC,CAAiC,EAAA,CAAA,CAAA,CAAA,GAIrC,EA0FkB,EAAA,CAAA,GAAA;GAzFZ,SAAA;GAAJ,KAAI;GACK,YAAA,EAAA;GAAA,uBAAA,AAAA,EAAA,QAAA,MAAA,EAAU,QAAA;GAClB,sBAAoB,EAAA,oBAAoB,KAAA;GACxC,yBAAuB,EAAA,uBAAuB,KAAA;GAC9C,aAAa,EAAA;GACb,YAAU,EAAA;GACV,iBAAe,MAAyB,EAAkB,CAAM;GAChE,aAAa,EAAA;GACb,UAAU,EAAA;GACV,cAAY,EAAA;GACZ,UAAU,EAAA;GACV,OAAO;GACP,cAAU,CAAG,EAAA,YAAQ,CAAK,EAAA;GAC3B,UAAA;GACA,iBAAc;GACb,qBAAmB;GACnB,SAAS,EAAA;GACV,OAAA;GACC,mBAAiB,EAAA;GAClB,eAAY;GACX,4BAAwB;;IAA+C,aAAA,MAAmB,EAAI,YAAa,CAAK;;;IAA8D,cAAA,EAAA;;GAO9K,IAAE;IAA+C,MAAA,EAAA,OAAA,CAAA,kBAAA,EAAA,WAAQ,WAAA,UAAA,CAAA,CAA0B,KAAI,GAAA,EAAA;IAA+E,OAAA,EAAA,OAAA,CAAA,4CAAA,EAAA,WAAQ,uFAAA,qGAAA,CAAA,CAAiM,KAAI,GAAA,EAAA;IAAwG,eAAA,EAAA,OAAA,CAAA,6DAAA,EAAA,WAAQ,0CAAA,kBAAA,CAAA,CAAiE,KAAI,GAAA,EAAA;;;;;IAAsf,eAAA;KAAA,OAAA;KAAA,OAAA;MAAA,WAAA;MAAA,UAAA,EAAA,cAAU;MAAA,GAAgB,EAAA,aAAU,EAAA,OAAY,EAAA,WAAU,IAAA,CAAA;KAAA;IAAA;;;;;GAWzlC,kBAAe;GACd,SAAK,AAAA,EAAA,QAAA,MAAA;IAAc,AAAZ,EAAA,QAAK,IAAO,EAAI,OAAA;GAAA;GACvB,cAAW,AAAA,EAAA,QAAG,MAAc;IAA0C,AAAnC,EAAA,QAAK,IAAO,EAAI,UAAW,CAAK,GAAG,GAAmB;GAAA;GACzF,YAAQ,AAAA,EAAA,QAAG,MAA+C;IAAA,IAAW,EAAA,UAAQ;KAAI,EAAY;KAAA;IAAA;IAAgE,AAAlD,EAAA,QAAQ,EAAM,SAAK,IAAQ,EAAmB,GAAI,EAAI,UAAA;KAAA,GAAgB;KAAK,OAAS,EAAA;IAAK,CAAA;GAAA;GACpM,UAAM,AAAA,EAAA,QAAG,MAAmB,EAAI,UAAW,CAAK;;GAEtC,MAAI,GAAE,MAAS,CACZ,EAAA,CAAA,CAAK,CAAC,OAAlB,EAAyD,EAAA,QAAA,QAAA,EAAA,EAAb,CAAS,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,KACrD,EAAA,GAAA,EAKM,OALN,GAKM,CAJJ,EAGM,OAHN,IAGM,CAFJ,EAAoI,KAAA;IAAjI,OAAM;IAAgF,UAAK,MAAE,EAAU,eAAe,CAAM;GAC/H,GAAA,MAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAyK,QAAzK,IAAyK,CAA5C,EAAA,EAAA,EAAkB,EAAU,KAAK,CAAA,GAAA,CAAA,CAAA,CAAA,IAAA,CAAA;;IAAzI,EAAkB,EAAU,KAAK;;IAAtC,EAAA,KAAV,GAAkD;;GAKnD,OAAK,QAC0B,CAA5B,EAAA,CAAA,CAAK,CAAC,QAAlB,EAAwC,EAAA,QAAA,SAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,IACxB,EAAA,WAAhB,EAAA,GAAA,EAGM,OAHN,IAGM,CAFJ,AAAA,EAAA,OAAA,EAAgE,QAAA,EAA1D,OAAM,kDAAiD,GAAA,MAAA,EAAA,GACjD,EAAA,sBAAZ,EAAA,GAAA,EAAwG,QAAxG,IAAwG,EAAxB,EAAA,cAAc,GAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,CAAA,MAEhG,EAAA,GAAA,EAAyE,QAAzE,IAAyE,EAAtB,EAAA,YAAY,GAAA,CAAA,EAAA,CAAA;GAGtD,iBAAa,GAAE,MAAS,CACrB,EAAA,CAAA,CAAK,CAAA,mBAAjB,EAA8E,EAAA,QAAA,iBAAA,EAAA,EAAb,CAAS,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,IACzD,EAAU,QAA3B,EAAA,GAAA,EAA+E,QAAA,IAAA,EAA3C,EAAkB,EAAU,IAAI,CAAA,GAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,CAAA;GAG3D,aAAW,GAAE,MAAS,CACnB,EAAA,CAAA,CAAK,CAAA,kBAAjB,EAA4E,EAAA,QAAA,gBAAA,EAAA,EAAb,CAAS,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,KACxE,EAAA,GAAA,EAGM,OAHN,IAGM,CAFK,EAAU,OAAO,QAA1B,EAAA,GAAA,EAAiE,KAAA;;IAAhC,OAAK,EAAE,EAAU,OAAO,IAAI;GAC7D,GAAA,MAAA,CAAA,KAAA,EAAA,IAAA,EAAA,GAAA,EAAgE,QAAA,MAAA,EAAvD,EAAU,OAAO,EAAA,oBAAgB,QAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA;GAInC,QAAM,GAAE,MAAS,CACd,EAAA,CAAA,CAAK,CAAC,SAAlB,EAAkK,EAAA,QAAA,UAAlK,GAAgD,GAAS;IAAG,OAAO,EAAe,EAAU,MAAM;IAAI,QAAQ,EAAgB,EAAU,MAAM;IAAI,OAAO,EAAA;GACzJ,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,IAAA,GAAA,EAAA,GAAA,EAOM,OAPN,GAOM,CANJ,EAKO,QAAA;IALD,OAAM;IAA6F,OAAO,EAAe,EAAU,MAAM;GACjI,GAAA,CAAA,EAAA,oBAAoB,EAAgB,EAAU,MAAM,KAAhE,EAAA,GAAA,EAEO,QAFP,GAEO,EADL,EAAA,EAAA,GAAA,EAA6S,GAAA,MAAA,EAA3Q,EAAoB,EAAgB,EAAU,MAAM,CAAA,IAApE,GAAM,OAAwE,EAAA,GAAA,EAAA,GAAA,EAAA,KAAA,EAAK,GAAA,CAAc,EAAK,eAAjB,EAAA,GAAA,EAAgJ,QAAhJ,GAAgJ,EAAnB,EAAK,IAAI,GAAA,CAAA,MAAU,EAAA,GAAA,EAA2C,GAAA,EAAA,KAAA,EAAA,GAAA,CAAvB,EAAA,EAAA,EAAK,IAAI,GAAA,CAAA,CAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAyB,GAAA,GAAA,IAAA,AAAA,EAAA,OAAA,EAAkF,QAAA,EAA5E,OAAM,kDAAiD,GAAC,aAAa,EAAA,CAAA,CAAA,KAAA,EAAA,IAAA,EAAA,IAE1X,EAAA,EAAA,GAAA,EAA4S,GAAA,MAAA,EAA1Q,EAAoB,EAAe,EAAU,MAAM,CAAA,IAAnE,GAAM,OAAuE,EAAA,GAAA,EAAA,GAAA,EAAA,KAAA,EAAK,GAAA,CAAc,EAAK,eAAjB,EAAA,GAAA,EAAgJ,QAAhJ,GAAgJ,EAAnB,EAAK,IAAI,GAAA,CAAA,MAAU,EAAA,GAAA,EAA2C,GAAA,EAAA,KAAA,EAAA,GAAA,CAAvB,EAAA,EAAA,EAAK,IAAI,GAAA,CAAA,CAAA,GAAA,EAAA,EAAA,GAAA,EAAA;;IAL5P,EAAA,cAAc,EAAe,EAAU,MAAM,IAAA;;IAAlD,EAAA,KAAV,GAAqE;;;EAUnE,GAAA,CAAA,EAAA,CAAA,CAAK,CAAC,SAAA;GAAS,MAAA;GAAmB,IAAA,GAAX,MAAS,CAAE,EAAyC,EAAA,QAAA,UAAA,EAAA,EAAb,CAAS,CAAA,CAAA,CAAA,CAAA"}
@@ -0,0 +1,100 @@
1
+ type SelectOption = Record<string, unknown> | string | number;
2
+ type __VLS_Props = {
3
+ modelValue?: SelectOption | SelectOption[] | null;
4
+ options?: SelectOption[];
5
+ loading?: boolean;
6
+ disabled?: boolean;
7
+ placeholder?: string;
8
+ optionLabel?: string | ((option: SelectOption) => string);
9
+ optionKey?: string;
10
+ optionPrefix?: string;
11
+ showOptionPrefix?: boolean;
12
+ showSelectedPrefix?: boolean;
13
+ panelWidth?: string | null;
14
+ scrollHeight?: string;
15
+ invalid?: boolean;
16
+ showTooltip?: boolean;
17
+ optionGroupLabel?: string | null;
18
+ optionGroupChildren?: string | null;
19
+ minQueryLength?: number;
20
+ emptyMessage?: string;
21
+ loadingMessage?: string;
22
+ showLoadingMessage?: boolean;
23
+ multiple?: boolean;
24
+ forceSelection?: boolean;
25
+ closeOnSelect?: boolean;
26
+ };
27
+ declare function hideDropdown(): void;
28
+ declare var __VLS_1: {
29
+ loading: boolean;
30
+ }, __VLS_17: any, __VLS_20: {}, __VLS_23: any, __VLS_26: any, __VLS_29: any, __VLS_32: any;
31
+ type __VLS_Slots = {} & {
32
+ icon?: (props: typeof __VLS_1) => any;
33
+ } & {
34
+ chip?: (props: typeof __VLS_17) => any;
35
+ } & {
36
+ empty?: (props: typeof __VLS_20) => any;
37
+ } & {
38
+ 'selected-item'?: (props: typeof __VLS_23) => any;
39
+ } & {
40
+ 'option-group'?: (props: typeof __VLS_26) => any;
41
+ } & {
42
+ option?: (props: typeof __VLS_29) => any;
43
+ } & {
44
+ footer?: (props: typeof __VLS_32) => any;
45
+ };
46
+ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
47
+ hideDropdown: typeof hideDropdown;
48
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
49
+ search: (event: {
50
+ originalEvent: Event;
51
+ query: string;
52
+ }) => any;
53
+ select: (event: unknown) => any;
54
+ "update:modelValue": (value: SelectOption | SelectOption[] | null) => any;
55
+ loadMore: (event: unknown) => any;
56
+ clear: () => any;
57
+ change: (event: unknown) => any;
58
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
59
+ onSearch?: ((event: {
60
+ originalEvent: Event;
61
+ query: string;
62
+ }) => any) | undefined;
63
+ onSelect?: ((event: unknown) => any) | undefined;
64
+ "onUpdate:modelValue"?: ((value: SelectOption | SelectOption[] | null) => any) | undefined;
65
+ onLoadMore?: ((event: unknown) => any) | undefined;
66
+ onClear?: (() => any) | undefined;
67
+ onChange?: ((event: unknown) => any) | undefined;
68
+ }>, {
69
+ loading: boolean;
70
+ disabled: boolean;
71
+ placeholder: string;
72
+ modelValue: SelectOption | SelectOption[] | null;
73
+ options: SelectOption[];
74
+ optionLabel: string | ((option: SelectOption) => string);
75
+ optionKey: string;
76
+ optionPrefix: string;
77
+ showOptionPrefix: boolean;
78
+ showSelectedPrefix: boolean;
79
+ panelWidth: string | null;
80
+ scrollHeight: string;
81
+ invalid: boolean;
82
+ showTooltip: boolean;
83
+ optionGroupLabel: string | null;
84
+ optionGroupChildren: string | null;
85
+ minQueryLength: number;
86
+ emptyMessage: string;
87
+ loadingMessage: string;
88
+ showLoadingMessage: boolean;
89
+ multiple: boolean;
90
+ forceSelection: boolean;
91
+ closeOnSelect: boolean;
92
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
93
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
94
+ declare const _default: typeof __VLS_export;
95
+ export default _default;
96
+ type __VLS_WithSlots<T, S> = T & {
97
+ new (): {
98
+ $slots: S;
99
+ };
100
+ };
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./TopButton-CDKgguLF.cjs");var t={primary:{50:`#EEF9FF`,100:`#DFF4FF`,200:`#C5E6F8`,300:`#8EC4DF`,400:`#66ACD1`,500:`#2488BC`,600:`#036DA3`,700:`#1B5783`,800:`#02466B`,900:`#052F4A`,950:`#0C192D`},secondary:{50:`#FAFAFA`,100:`#F4F4F5`,200:`#E9E9E9`,300:`#D8D8D8`,400:`#B8B8B8`,500:`#8E8E8E`,600:`#676767`,700:`#4B4B4B`,800:`#343434`,900:`#1C1917`,950:`#0C0A09`},success:{50:`#FAFFFA`,100:`#F4FBF6`,200:`#DFF6DE`,300:`#CBE3CA`,400:`#A3CCA1`,500:`#6BA968`,600:`#358F30`,700:`#2C7B27`,800:`#1E631A`,900:`#10430D`,950:`#062804`},warn:{50:`#FFF7ED`,100:`#FDF3D8`,200:`#FDE9B2`,300:`#FDD566`,400:`#FFB900`,500:`#FFA515`,600:`#FD9024`,700:`#DD781F`,800:`#BC4E00`,900:`#A42D02`,950:`#792202`},danger:{50:`#F8E6E4`,100:`#FFDDD9`,200:`#EEC1BC`,300:`#E3938C`,400:`#E3675C`,500:`#DC3F32`,600:`#CF150E`,700:`#B10404`,800:`#820907`,900:`#5D0803`,950:`#450501`}};exports.TopButton=e.t,exports.colors=t;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./TopSelect-B30Dk8R7.cjs");let t=require("@primeuix/themes"),n=require("@primeuix/themes/aura");n=e.r(n,1);var r={primary:{50:`#EEF9FF`,100:`#DFF4FF`,200:`#C5E6F8`,300:`#8EC4DF`,400:`#66ACD1`,500:`#2488BC`,600:`#036DA3`,700:`#1B5783`,800:`#02466B`,900:`#052F4A`,950:`#0C192D`},secondary:{50:`#FAFAFA`,100:`#F4F4F5`,200:`#E9E9E9`,300:`#D8D8D8`,400:`#B8B8B8`,500:`#8E8E8E`,600:`#676767`,700:`#4B4B4B`,800:`#343434`,900:`#1C1917`,950:`#0C0A09`},success:{50:`#FAFFFA`,100:`#F4FBF6`,200:`#DFF6DE`,300:`#CBE3CA`,400:`#A3CCA1`,500:`#6BA968`,600:`#358F30`,700:`#2C7B27`,800:`#1E631A`,900:`#10430D`,950:`#062804`},warn:{50:`#FFF7ED`,100:`#FDF3D8`,200:`#FDE9B2`,300:`#FDD566`,400:`#FFB900`,500:`#FFA515`,600:`#FD9024`,700:`#DD781F`,800:`#BC4E00`,900:`#A42D02`,950:`#792202`},danger:{50:`#F8E6E4`,100:`#FFDDD9`,200:`#EEC1BC`,300:`#E3938C`,400:`#E3675C`,500:`#DC3F32`,600:`#CF150E`,700:`#B10404`,800:`#820907`,900:`#5D0803`,950:`#450501`}},i=(0,t.definePreset)(n.default,{semantic:{primary:r.primary,secondary:r.secondary,success:r.success,warn:r.warn,danger:r.danger}});exports.TopButton=e.n,exports.TopSelect=e.t,exports.TopSolutionsPreset=i,exports.colors=r;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../src/tokens/colors.ts"],"sourcesContent":["export const colors = {\n primary: {\n 50: '#EEF9FF',\n 100: '#DFF4FF',\n 200: '#C5E6F8',\n 300: '#8EC4DF',\n 400: '#66ACD1',\n 500: '#2488BC',\n 600: '#036DA3',\n 700: '#1B5783',\n 800: '#02466B',\n 900: '#052F4A',\n 950: '#0C192D',\n },\n secondary: {\n 50: '#FAFAFA',\n 100: '#F4F4F5',\n 200: '#E9E9E9',\n 300: '#D8D8D8',\n 400: '#B8B8B8',\n 500: '#8E8E8E',\n 600: '#676767',\n 700: '#4B4B4B',\n 800: '#343434',\n 900: '#1C1917',\n 950: '#0C0A09',\n },\n success: {\n 50: '#FAFFFA',\n 100: '#F4FBF6',\n 200: '#DFF6DE',\n 300: '#CBE3CA',\n 400: '#A3CCA1',\n 500: '#6BA968',\n 600: '#358F30',\n 700: '#2C7B27',\n 800: '#1E631A',\n 900: '#10430D',\n 950: '#062804',\n },\n warn: {\n 50: '#FFF7ED',\n 100: '#FDF3D8',\n 200: '#FDE9B2',\n 300: '#FDD566',\n 400: '#FFB900',\n 500: '#FFA515',\n 600: '#FD9024',\n 700: '#DD781F',\n 800: '#BC4E00',\n 900: '#A42D02',\n 950: '#792202',\n },\n danger: {\n 50: '#F8E6E4',\n 100: '#FFDDD9',\n 200: '#EEC1BC',\n 300: '#E3938C',\n 400: '#E3675C',\n 500: '#DC3F32',\n 600: '#CF150E',\n 700: '#B10404',\n 800: '#820907',\n 900: '#5D0803',\n 950: '#450501',\n },\n} as const\n"],"mappings":"+GAAA,IAAa,EAAS,CACpB,QAAS,CACP,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACP,EACA,UAAW,CACT,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACP,EACA,QAAS,CACP,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACP,EACA,KAAM,CACJ,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACP,EACA,OAAQ,CACN,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACP,CACF"}
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../src/tokens/colors.ts","../src/theme/topSolutions.ts"],"sourcesContent":["export const colors = {\n primary: {\n 50: '#EEF9FF',\n 100: '#DFF4FF',\n 200: '#C5E6F8',\n 300: '#8EC4DF',\n 400: '#66ACD1',\n 500: '#2488BC',\n 600: '#036DA3',\n 700: '#1B5783',\n 800: '#02466B',\n 900: '#052F4A',\n 950: '#0C192D',\n },\n secondary: {\n 50: '#FAFAFA',\n 100: '#F4F4F5',\n 200: '#E9E9E9',\n 300: '#D8D8D8',\n 400: '#B8B8B8',\n 500: '#8E8E8E',\n 600: '#676767',\n 700: '#4B4B4B',\n 800: '#343434',\n 900: '#1C1917',\n 950: '#0C0A09',\n },\n success: {\n 50: '#FAFFFA',\n 100: '#F4FBF6',\n 200: '#DFF6DE',\n 300: '#CBE3CA',\n 400: '#A3CCA1',\n 500: '#6BA968',\n 600: '#358F30',\n 700: '#2C7B27',\n 800: '#1E631A',\n 900: '#10430D',\n 950: '#062804',\n },\n warn: {\n 50: '#FFF7ED',\n 100: '#FDF3D8',\n 200: '#FDE9B2',\n 300: '#FDD566',\n 400: '#FFB900',\n 500: '#FFA515',\n 600: '#FD9024',\n 700: '#DD781F',\n 800: '#BC4E00',\n 900: '#A42D02',\n 950: '#792202',\n },\n danger: {\n 50: '#F8E6E4',\n 100: '#FFDDD9',\n 200: '#EEC1BC',\n 300: '#E3938C',\n 400: '#E3675C',\n 500: '#DC3F32',\n 600: '#CF150E',\n 700: '#B10404',\n 800: '#820907',\n 900: '#5D0803',\n 950: '#450501',\n },\n} as const\n","import { definePreset } from '@primeuix/themes'\r\nimport Aura from '@primeuix/themes/aura'\r\nimport { colors } from '../tokens/colors'\r\n\r\n/**\r\n * Preset visual compartilhado da TopSolutions para componentes PrimeVue.\r\n *\r\n * É derivado de Aura para preservar a base de acessibilidade e comportamento\r\n * do PrimeVue, substituindo apenas os tokens semânticos pela paleta da marca.\r\n */\r\nexport const TopSolutionsPreset = definePreset(Aura, {\r\n semantic: {\r\n primary: colors.primary,\r\n secondary: colors.secondary,\r\n success: colors.success,\r\n warn: colors.warn,\r\n danger: colors.danger,\r\n },\r\n})\r\n"],"mappings":"+LAAA,IAAa,EAAS,CACpB,QAAS,CACP,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACP,EACA,UAAW,CACT,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACP,EACA,QAAS,CACP,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACP,EACA,KAAM,CACJ,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACP,EACA,OAAQ,CACN,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACP,CACF,ECxDa,GAAA,EAAqB,EAAA,aAAA,CAAa,EAAA,QAAM,CACnD,SAAU,CACR,QAAS,EAAO,QAChB,UAAW,EAAO,UAClB,QAAS,EAAO,QAChB,KAAM,EAAO,KACb,OAAQ,EAAO,MACjB,CACF,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,4 @@
1
1
  export { default as TopButton } from './components/TopButton.vue';
2
+ export { default as TopSelect } from './components/TopSelect.vue';
3
+ export { TopSolutionsPreset } from './theme/topSolutions';
2
4
  export { colors } from './tokens/colors';
package/dist/index.js CHANGED
@@ -1,6 +1,8 @@
1
- import { t as e } from "./TopButton-9IIdtUbJ.js";
1
+ import { n as e, t } from "./TopSelect-BtRWj2sh.js";
2
+ import { definePreset as n } from "@primeuix/themes";
3
+ import r from "@primeuix/themes/aura";
2
4
  //#region src/tokens/colors.ts
3
- var t = {
5
+ var i = {
4
6
  primary: {
5
7
  50: "#EEF9FF",
6
8
  100: "#DFF4FF",
@@ -66,8 +68,14 @@ var t = {
66
68
  900: "#5D0803",
67
69
  950: "#450501"
68
70
  }
69
- };
71
+ }, a = n(r, { semantic: {
72
+ primary: i.primary,
73
+ secondary: i.secondary,
74
+ success: i.success,
75
+ warn: i.warn,
76
+ danger: i.danger
77
+ } });
70
78
  //#endregion
71
- export { e as TopButton, t as colors };
79
+ export { e as TopButton, t as TopSelect, a as TopSolutionsPreset, i as colors };
72
80
 
73
81
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/tokens/colors.ts"],"sourcesContent":["export const colors = {\n primary: {\n 50: '#EEF9FF',\n 100: '#DFF4FF',\n 200: '#C5E6F8',\n 300: '#8EC4DF',\n 400: '#66ACD1',\n 500: '#2488BC',\n 600: '#036DA3',\n 700: '#1B5783',\n 800: '#02466B',\n 900: '#052F4A',\n 950: '#0C192D',\n },\n secondary: {\n 50: '#FAFAFA',\n 100: '#F4F4F5',\n 200: '#E9E9E9',\n 300: '#D8D8D8',\n 400: '#B8B8B8',\n 500: '#8E8E8E',\n 600: '#676767',\n 700: '#4B4B4B',\n 800: '#343434',\n 900: '#1C1917',\n 950: '#0C0A09',\n },\n success: {\n 50: '#FAFFFA',\n 100: '#F4FBF6',\n 200: '#DFF6DE',\n 300: '#CBE3CA',\n 400: '#A3CCA1',\n 500: '#6BA968',\n 600: '#358F30',\n 700: '#2C7B27',\n 800: '#1E631A',\n 900: '#10430D',\n 950: '#062804',\n },\n warn: {\n 50: '#FFF7ED',\n 100: '#FDF3D8',\n 200: '#FDE9B2',\n 300: '#FDD566',\n 400: '#FFB900',\n 500: '#FFA515',\n 600: '#FD9024',\n 700: '#DD781F',\n 800: '#BC4E00',\n 900: '#A42D02',\n 950: '#792202',\n },\n danger: {\n 50: '#F8E6E4',\n 100: '#FFDDD9',\n 200: '#EEC1BC',\n 300: '#E3938C',\n 400: '#E3675C',\n 500: '#DC3F32',\n 600: '#CF150E',\n 700: '#B10404',\n 800: '#820907',\n 900: '#5D0803',\n 950: '#450501',\n },\n} as const\n"],"mappings":";;AAAA,IAAa,IAAS;CACpB,SAAS;EACP,IAAI;EACJ,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;CACP;CACA,WAAW;EACT,IAAI;EACJ,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;CACP;CACA,SAAS;EACP,IAAI;EACJ,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;CACP;CACA,MAAM;EACJ,IAAI;EACJ,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;CACP;CACA,QAAQ;EACN,IAAI;EACJ,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;CACP;AACF"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/tokens/colors.ts","../src/theme/topSolutions.ts"],"sourcesContent":["export const colors = {\n primary: {\n 50: '#EEF9FF',\n 100: '#DFF4FF',\n 200: '#C5E6F8',\n 300: '#8EC4DF',\n 400: '#66ACD1',\n 500: '#2488BC',\n 600: '#036DA3',\n 700: '#1B5783',\n 800: '#02466B',\n 900: '#052F4A',\n 950: '#0C192D',\n },\n secondary: {\n 50: '#FAFAFA',\n 100: '#F4F4F5',\n 200: '#E9E9E9',\n 300: '#D8D8D8',\n 400: '#B8B8B8',\n 500: '#8E8E8E',\n 600: '#676767',\n 700: '#4B4B4B',\n 800: '#343434',\n 900: '#1C1917',\n 950: '#0C0A09',\n },\n success: {\n 50: '#FAFFFA',\n 100: '#F4FBF6',\n 200: '#DFF6DE',\n 300: '#CBE3CA',\n 400: '#A3CCA1',\n 500: '#6BA968',\n 600: '#358F30',\n 700: '#2C7B27',\n 800: '#1E631A',\n 900: '#10430D',\n 950: '#062804',\n },\n warn: {\n 50: '#FFF7ED',\n 100: '#FDF3D8',\n 200: '#FDE9B2',\n 300: '#FDD566',\n 400: '#FFB900',\n 500: '#FFA515',\n 600: '#FD9024',\n 700: '#DD781F',\n 800: '#BC4E00',\n 900: '#A42D02',\n 950: '#792202',\n },\n danger: {\n 50: '#F8E6E4',\n 100: '#FFDDD9',\n 200: '#EEC1BC',\n 300: '#E3938C',\n 400: '#E3675C',\n 500: '#DC3F32',\n 600: '#CF150E',\n 700: '#B10404',\n 800: '#820907',\n 900: '#5D0803',\n 950: '#450501',\n },\n} as const\n","import { definePreset } from '@primeuix/themes'\r\nimport Aura from '@primeuix/themes/aura'\r\nimport { colors } from '../tokens/colors'\r\n\r\n/**\r\n * Preset visual compartilhado da TopSolutions para componentes PrimeVue.\r\n *\r\n * É derivado de Aura para preservar a base de acessibilidade e comportamento\r\n * do PrimeVue, substituindo apenas os tokens semânticos pela paleta da marca.\r\n */\r\nexport const TopSolutionsPreset = definePreset(Aura, {\r\n semantic: {\r\n primary: colors.primary,\r\n secondary: colors.secondary,\r\n success: colors.success,\r\n warn: colors.warn,\r\n danger: colors.danger,\r\n },\r\n})\r\n"],"mappings":";;;;AAAA,IAAa,IAAS;CACpB,SAAS;EACP,IAAI;EACJ,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;CACP;CACA,WAAW;EACT,IAAI;EACJ,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;CACP;CACA,SAAS;EACP,IAAI;EACJ,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;CACP;CACA,MAAM;EACJ,IAAI;EACJ,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;CACP;CACA,QAAQ;EACN,IAAI;EACJ,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;CACP;AACF,GCxDa,IAAqB,EAAa,GAAM,EACnD,UAAU;CACR,SAAS,EAAO;CAChB,WAAW,EAAO;CAClB,SAAS,EAAO;CAChB,MAAM,EAAO;CACb,QAAQ,EAAO;AACjB,EACF,CAAC"}
package/dist/nuxt.cjs CHANGED
@@ -1,2 +1,2 @@
1
- let e=require("@nuxt/kit");var t=`@topjoao/top-design-system`,n=`${t}/style.css`,r=(0,e.defineNuxtModule)({meta:{name:t,configKey:`topDesignSystem`,compatibility:{nuxt:`^3.0.0 || ^4.0.0`}},setup(r,i){i.options.css.some(e=>e===n)||i.options.css.push(n),(0,e.addComponent)({name:`TopButton`,export:`TopButton`,filePath:t})}});module.exports=r;
1
+ let e=require("@nuxt/kit");var t=`@topjoao/top-design-system`,n=`${t}/style.css`,r=(0,e.defineNuxtModule)({meta:{name:t,configKey:`topDesignSystem`,compatibility:{nuxt:`^3.0.0 || ^4.0.0`}},setup(r,i){i.options.css.some(e=>e===n)||i.options.css.push(n),(0,e.addComponent)({name:`TopButton`,export:`TopButton`,filePath:t}),(0,e.addComponent)({name:`TopSelect`,export:`TopSelect`,filePath:t})}});module.exports=r;
2
2
  //# sourceMappingURL=nuxt.cjs.map
package/dist/nuxt.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"nuxt.cjs","names":[],"sources":["../src/nuxt.ts"],"sourcesContent":["import { addComponent, defineNuxtModule } from '@nuxt/kit'\n\nconst packageName = '@topjoao/top-design-system'\nconst stylePath = `${packageName}/style.css`\n\nexport default defineNuxtModule({\n meta: {\n name: packageName,\n configKey: 'topDesignSystem',\n compatibility: {\n nuxt: '^3.0.0 || ^4.0.0',\n },\n },\n setup(_options, nuxt) {\n if (!nuxt.options.css.some((style) => style === stylePath)) {\n nuxt.options.css.push(stylePath)\n }\n\n addComponent({\n name: 'TopButton',\n export: 'TopButton',\n filePath: packageName,\n })\n },\n})\n"],"mappings":"2BAEA,IAAM,EAAc,6BACd,EAAY,GAAG,EAAY,YAEjC,GAAA,EAAe,EAAA,iBAAA,CAAiB,CAC9B,KAAM,CACJ,KAAM,EACN,UAAW,kBACX,cAAe,CACb,KAAM,kBACR,CACF,EACA,MAAM,EAAU,EAAM,CACf,EAAK,QAAQ,IAAI,KAAM,GAAU,IAAU,CAAS,GACvD,EAAK,QAAQ,IAAI,KAAK,CAAS,GAGjC,EAAA,EAAA,aAAA,CAAa,CACX,KAAM,YACN,OAAQ,YACR,SAAU,CACZ,CAAC,CACH,CACF,CAAC"}
1
+ {"version":3,"file":"nuxt.cjs","names":[],"sources":["../src/nuxt.ts"],"sourcesContent":["import { addComponent, defineNuxtModule } from '@nuxt/kit'\r\n\r\nconst packageName = '@topjoao/top-design-system'\r\nconst stylePath = `${packageName}/style.css`\r\n\r\nexport default defineNuxtModule({\r\n meta: {\r\n name: packageName,\r\n configKey: 'topDesignSystem',\r\n compatibility: {\r\n nuxt: '^3.0.0 || ^4.0.0',\r\n },\r\n },\r\n setup(_options, nuxt) {\r\n if (!nuxt.options.css.some((style) => style === stylePath)) {\r\n nuxt.options.css.push(stylePath)\r\n }\r\n\r\n addComponent({\r\n name: 'TopButton',\r\n export: 'TopButton',\r\n filePath: packageName,\r\n })\r\n addComponent({\r\n name: 'TopSelect',\r\n export: 'TopSelect',\r\n filePath: packageName,\r\n })\r\n },\r\n})\r\n"],"mappings":"2BAEA,IAAM,EAAc,6BACd,EAAY,GAAG,EAAY,YAEjC,GAAA,EAAe,EAAA,iBAAA,CAAiB,CAC9B,KAAM,CACJ,KAAM,EACN,UAAW,kBACX,cAAe,CACb,KAAM,kBACR,CACF,EACA,MAAM,EAAU,EAAM,CACf,EAAK,QAAQ,IAAI,KAAM,GAAU,IAAU,CAAS,GACvD,EAAK,QAAQ,IAAI,KAAK,CAAS,GAGjC,EAAA,EAAA,aAAA,CAAa,CACX,KAAM,YACN,OAAQ,YACR,SAAU,CACZ,CAAC,GACD,EAAA,EAAA,aAAA,CAAa,CACX,KAAM,YACN,OAAQ,YACR,SAAU,CACZ,CAAC,CACH,CACF,CAAC"}