scrubbed-tailwind-components-v2 2.0.2 → 2.0.4-b

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.
package/README.md CHANGED
@@ -1,51 +1,81 @@
1
- # scrubbed-tailwind-components-v2
1
+ # Scrubbed Tailwind Components v2
2
2
 
3
- This template should help get you started developing with Vue 3 in Vite.
3
+ Scrubbed Tailwind Components v2 is a Vue 3 component library that provides a set of pre-built and beautifully styled components using Tailwind CSS. This library is designed to help you quickly build modern and responsive user interfaces.
4
4
 
5
- ## Recommended IDE Setup
5
+ ## Installation
6
6
 
7
- [VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur).
7
+ To use Scrubbed Tailwind Components v2 in your project, you can install it via npm:
8
8
 
9
- ## Customize configuration
9
+ ```sh
10
+ npm install scrubbed-tailwind-components-v2
11
+ ```
10
12
 
11
- See [Vite Configuration Reference](https://vite.dev/config/).
13
+ ## Usage
12
14
 
13
- ## Project Setup
15
+ You can import and use the components in your Vue application like this:
14
16
 
15
- ```sh
16
- npm install
17
+ ```vue
18
+ <script setup>
19
+ import { Button } from "scrubbed-tailwind-components-v2";
20
+ </script>
21
+
22
+ <template>
23
+ <Button>Click me</Button>
24
+ </template>
17
25
  ```
18
26
 
19
- ### Compile and Hot-Reload for Development
27
+ ## Development
20
28
 
21
- ```sh
22
- npm run dev
23
- ```
29
+ This project uses Vite for development and building.
24
30
 
25
- ### Compile and Minify for Production
31
+ ### Recommended IDE Setup
26
32
 
27
- ```sh
28
- npm run build
29
- ```
33
+ - [VSCode](https://code.visualstudio.com/)
34
+ - [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur)
30
35
 
31
- ### Run Headed Component Tests with [Cypress Component Testing](https://on.cypress.io/component)
36
+ ### Project Setup
37
+
38
+ To set up the development environment, clone the repository and install the dependencies:
32
39
 
33
40
  ```sh
34
- npm run test:unit:dev # or `npm run test:unit` for headless testing
41
+ git clone https://[your-username]@bitbucket.org/devteam_scrubbed/scrubbed-tailwind-components-v2.git
42
+ cd scrubbed-tailwind-components-v2
43
+ npm install
35
44
  ```
36
45
 
37
- ### Run End-to-End Tests with [Cypress](https://www.cypress.io/)
46
+ ### Compile and Hot-Reload for Development
47
+
48
+ To start the development server with hot-reloading, run the following command:
38
49
 
39
50
  ```sh
40
- npm run test:e2e:dev
51
+ npm run dev
41
52
  ```
42
53
 
43
- This runs the end-to-end tests against the Vite development server.
44
- It is much faster than the production build.
54
+ ### Compile and Minify for Production
45
55
 
46
- But it's still recommended to test the production build with `test:e2e` before deploying (e.g. in CI environments):
56
+ To build the library for production, run:
47
57
 
48
58
  ```sh
49
59
  npm run build
50
- npm run test:e2e
51
60
  ```
61
+
62
+ ### Testing
63
+
64
+ This project uses Cypress for both component and end-to-end testing.
65
+
66
+ - **Run component tests (headless):**
67
+ ```sh
68
+ npm run test:unit
69
+ ```
70
+ - **Run component tests (headed):**
71
+ ```sh
72
+ npm run test:unit:dev
73
+ ```
74
+ - **Run end-to-end tests (headless):**
75
+ ```sh
76
+ npm run test:e2e
77
+ ```
78
+ - **Run end-to-end tests (headed):**
79
+ ```sh
80
+ npm run test:e2e:dev
81
+ ```
@@ -1 +1 @@
1
- @starting-style{.backdrop[data-v-aaece1c7]{opacity:0}}
1
+ @starting-style{.backdrop[data-v-aaece1c7]{opacity:0}}.link[data-v-0fab71c0]{border:1px solid transparent}.link[data-v-0fab71c0]:has(.router-link-active){border:1px solid rgba(255,255,255,.75);background:linear-gradient(101deg,#e9eef54d 6.76%,#105fa24d 100.14%);box-shadow:0 4px 17px -1px #30537426;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.tab[data-v-9e06f71f]{border:1px solid transparent}.tab-active[data-v-9e06f71f]{border-radius:10px;border:1px solid rgba(255,255,255,.75);background:linear-gradient(101deg,#e9eef54d 6.76%,#105fa24d 100.14%);box-shadow:0 4px 17px -1px #30537426;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}
@@ -1,18 +1,18 @@
1
- import { inject as m, createElementBlock as l, openBlock as a, normalizeClass as h, unref as u, createElementVNode as d, renderSlot as i, createBlock as $, withCtx as g, ref as f, provide as w, createVNode as B, Fragment as y, Teleport as R, normalizeStyle as M, watch as N, createCommentVNode as k, resolveComponent as j, mergeProps as v, useModel as V, withDirectives as A, vModelCheckbox as G, onMounted as z, onUnmounted as E, vModelText as D, vModelRadio as W, renderList as T, toDisplayString as C, createTextVNode as H, computed as q } from "vue";
2
- import { RouterLink as S, useRoute as L } from "vue-router";
3
- const O = { class: "flex w-full items-center justify-between" }, U = { class: "flex items-center gap-2" }, Z = { class: "flex items-center gap-10" }, J = { class: "hidden gap-6 sm:flex" }, Y = {
1
+ import { inject as m, createElementBlock as a, openBlock as s, normalizeClass as b, unref as u, createElementVNode as d, renderSlot as l, createBlock as $, withCtx as g, ref as h, provide as T, createVNode as V, Fragment as k, Teleport as L, normalizeStyle as M, watch as j, createCommentVNode as y, resolveComponent as G, mergeProps as _, useModel as w, withDirectives as v, vModelCheckbox as z, onMounted as N, onUnmounted as E, vModelText as D, vModelRadio as H, vModelSelect as W, renderList as I, toDisplayString as B, createTextVNode as q, computed as U } from "vue";
2
+ import { RouterLink as A, useRoute as P } from "vue-router";
3
+ const O = { class: "flex w-full items-center justify-between" }, Z = { class: "flex items-center gap-2" }, J = { class: "flex items-center gap-10" }, Y = { class: "hidden gap-6 sm:flex" }, F = {
4
4
  __name: "AppHeader",
5
5
  setup(e) {
6
- const o = m("APP_DATA"), { isSidebarToggled: r, toggleSidebar: n } = o;
7
- return (t, s) => (a(), l("header", {
8
- class: h(["fixed flex h-16 w-dvw items-center bg-white/50 px-3 backdrop-blur sm:px-6", { "rounded-t-2xl": u(r) }])
6
+ const t = m("APP_DATA"), { isSidebarToggled: r, toggleSidebar: n } = t;
7
+ return (o, i) => (s(), a("header", {
8
+ class: b(["fixed flex h-16 w-dvw items-center bg-white/50 px-3 backdrop-blur sm:px-6", { "rounded-t-2xl": u(r) }])
9
9
  }, [
10
10
  d("nav", O, [
11
- d("div", U, [
11
+ d("div", Z, [
12
12
  d("button", {
13
- onClick: s[0] || (s[0] = (c) => u(n)()),
13
+ onClick: i[0] || (i[0] = (c) => u(n)()),
14
14
  class: "block cursor-pointer rounded-full p-2 hover:bg-neutral-100 sm:hidden"
15
- }, s[1] || (s[1] = [
15
+ }, i[1] || (i[1] = [
16
16
  d("svg", {
17
17
  xmlns: "http://www.w3.org/2000/svg",
18
18
  width: "24",
@@ -30,152 +30,132 @@ const O = { class: "flex w-full items-center justify-between" }, U = { class: "f
30
30
  d("path", { d: "M4 6h16" })
31
31
  ], -1)
32
32
  ])),
33
- i(t.$slots, "header-img")
33
+ l(o.$slots, "header-img")
34
34
  ]),
35
- d("div", Z, [
36
- d("ul", J, [
37
- i(t.$slots, "header-links")
35
+ d("div", J, [
36
+ d("ul", Y, [
37
+ l(o.$slots, "header-links")
38
38
  ]),
39
- i(t.$slots, "header-actions")
39
+ l(o.$slots, "header-actions")
40
40
  ])
41
41
  ])
42
42
  ], 2));
43
43
  }
44
- }, F = ["href"], X = {
44
+ }, X = ["href"], Q = {
45
45
  __name: "AppHeaderLink",
46
46
  props: {
47
47
  to: { type: String, required: !0 }
48
48
  },
49
49
  setup(e) {
50
- const o = e;
51
- return (r, n) => (a(), l("li", null, [
52
- o.to.startsWith("/") ? (a(), $(u(S), {
50
+ const t = e;
51
+ return (r, n) => (s(), a("li", null, [
52
+ t.to.startsWith("/") ? (s(), $(u(A), {
53
53
  key: 0,
54
54
  class: "hover:text-primary-950 [&.router-link-active]:text-primary-950 text-xs uppercase text-neutral-600 hover:transition-all [&.router-link-active]:font-semibold",
55
- to: o.to
55
+ to: t.to
56
56
  }, {
57
57
  default: g(() => [
58
- i(r.$slots, "default")
58
+ l(r.$slots, "default")
59
59
  ]),
60
60
  _: 3
61
- }, 8, ["to"])) : (a(), l("a", {
61
+ }, 8, ["to"])) : (s(), a("a", {
62
62
  key: 1,
63
63
  class: "hover:text-primary-950 text-xs uppercase text-neutral-600 hover:transition-all",
64
- href: o.to
64
+ href: t.to
65
65
  }, [
66
- i(r.$slots, "default")
67
- ], 8, F))
66
+ l(r.$slots, "default")
67
+ ], 8, X))
68
68
  ]));
69
69
  }
70
- }, Q = { class: "relative" }, K = { class: "flex" }, ee = {
70
+ }, K = { class: "relative" }, ee = { class: "flex" }, te = {
71
71
  __name: "AppLayout",
72
72
  setup(e) {
73
- const o = f(!1);
73
+ const t = h(!1);
74
74
  function r() {
75
- window.innerWidth <= 640 ? (o.value = !o.value, n()) : o.value && (o.value = !1, n());
75
+ window.innerWidth <= 640 ? (t.value = !t.value, n()) : t.value && (t.value = !1, n());
76
76
  }
77
77
  function n() {
78
- const t = document.querySelector("body");
79
- t.classList.contains("bg-black") ? t.classList.remove("bg-black") : t.classList.add("bg-black");
78
+ const o = document.querySelector("body");
79
+ o.classList.contains("bg-black") ? o.classList.remove("bg-black") : o.classList.add("bg-black");
80
80
  }
81
- return w("APP_DATA", { isSidebarToggled: o, toggleSidebar: r }), (t, s) => (a(), l("div", {
82
- class: h(["bg-white transition-all duration-500 ease-[cubic-bezier(.32,.72,0,1)]", {
83
- "scale-93 origin-[center_top] translate-y-4": o.value
81
+ return T("APP_DATA", { isSidebarToggled: t, toggleSidebar: r }), (o, i) => (s(), a("div", {
82
+ class: b(["bg-white transition-all duration-500 ease-[cubic-bezier(.32,.72,0,1)]", {
83
+ "scale-93 origin-[center_top] translate-y-4": t.value
84
84
  }])
85
85
  }, [
86
- d("div", Q, [
87
- i(t.$slots, "header"),
88
- d("div", K, [
89
- i(t.$slots, "content")
86
+ d("div", K, [
87
+ l(o.$slots, "header"),
88
+ d("div", ee, [
89
+ l(o.$slots, "content")
90
90
  ])
91
91
  ])
92
92
  ], 2));
93
93
  }
94
- }, te = {
94
+ }, oe = {
95
95
  __name: "AppMain",
96
96
  setup(e) {
97
- const o = m("APP_DATA"), { isSidebarToggled: r } = o;
98
- return (n, t) => (a(), l("main", {
99
- class: h([
97
+ const t = m("APP_DATA"), { isSidebarToggled: r } = t;
98
+ return (n, o) => (s(), a("main", {
99
+ class: b([
100
100
  "bg-background-main fixed z-[-1] h-svh w-full overflow-auto px-6 pb-9 pt-24 sm:top-16 sm:ml-[223px] sm:h-[calc(100dvh-4rem)] sm:w-[calc(100dvw-223px)] sm:pt-9",
101
101
  u(r) ? "overflow-hidden rounded-t-xl sm:rounded-none" : "sm:rounded-tl-2xl"
102
102
  ])
103
103
  }, [
104
- i(n.$slots, "default")
104
+ l(n.$slots, "default")
105
105
  ], 2));
106
106
  }
107
- }, oe = { class: "group flex w-full overflow-x-auto border-b-[1px] border-neutral-200" }, re = {
108
- __name: "AppNavTabs",
109
- setup(e) {
110
- const o = f(null);
111
- function r(t, s, c) {
112
- o.value.style = `left: ${t}px; top: calc(${s}px + 6px); opacity: 1; width: ${c}px`;
113
- }
114
- function n(t, s, c) {
115
- o.value.style = `left: ${t}px; top: calc(${s}px + 6px); opacity: 0; width: ${c}px`;
116
- }
117
- return w("NAV_TABS", {
118
- setSelectorAttributes: r,
119
- resetSelectorOpacity: n
120
- }), (t, s) => (a(), l("div", oe, [
121
- i(t.$slots, "default"),
122
- d("div", {
123
- class: "bg-brand-primary-700 absolute left-0 z-[-1] h-[32px] w-10 rounded-lg opacity-0 transition-all ease-in-out",
124
- ref_key: "selector",
125
- ref: o
126
- }, null, 512)
127
- ]));
128
- }
129
- }, ne = {
107
+ }, f = (e, t) => {
108
+ const r = e.__vccOpts || e;
109
+ for (const [n, o] of t)
110
+ r[n] = o;
111
+ return r;
112
+ }, re = {}, ne = { class: "flex w-full overflow-x-auto border-b-[1px] border-neutral-200 [&::-webkit-scrollbar]:hidden" };
113
+ function se(e, t) {
114
+ return s(), a("div", ne, [
115
+ l(e.$slots, "default")
116
+ ]);
117
+ }
118
+ const ae = /* @__PURE__ */ f(re, [["render", se]]), le = { class: "shrink-0" }, ie = {
130
119
  __name: "AppNavTab",
131
120
  props: {
132
121
  to: { type: String, required: !0 }
133
122
  },
134
123
  setup(e) {
135
- const o = e, r = m("NAV_TABS"), { setSelectorAttributes: n, resetSelectorOpacity: t } = r, s = f(null);
136
- return (c, p) => (a(), l("div", {
137
- onMouseover: p[0] || (p[0] = (x) => u(n)(s.value.offsetLeft, s.value.offsetTop, s.value.clientWidth)),
138
- onMouseleave: p[1] || (p[1] = (x) => u(t)(s.value.offsetLeft, s.value.offsetTop, s.value.clientWidth)),
139
- class: "shrink-0",
140
- ref_key: "el",
141
- ref: s
142
- }, [
143
- B(u(S), {
144
- class: "[&.router-link-exact-active]:text-primary-950 [&.router-link-exact-active]:border-brand-primary-700 flex h-12 shrink-0 items-center justify-between gap-2 border-b-2 border-transparent px-3 text-sm text-neutral-600 transition-all hover:font-medium hover:text-white [&.router-link-exact-active]:font-medium [&.router-link-exact-active]:hover:text-white",
145
- to: o.to
124
+ const t = e;
125
+ return h(null), (r, n) => (s(), a("div", le, [
126
+ V(u(A), {
127
+ class: "[&.router-link-exact-active]:text-primary-950 [&.router-link-exact-active]:border-brand-primary-700 hover:text-brand-primary-700 group relative flex h-12 shrink-0 items-center justify-between gap-2 border-b-2 border-transparent px-3 text-sm text-neutral-600 transition-all [&.router-link-exact-active]:font-medium",
128
+ to: t.to
146
129
  }, {
147
130
  default: g(() => [
148
- i(c.$slots, "default")
131
+ l(r.$slots, "default"),
132
+ n[0] || (n[0] = d("div", { class: "bg-primary-100 absolute inset-x-0 z-[-1] h-8 w-full rounded-lg opacity-0 transition-all contain-strict group-hover:transform-none group-hover:opacity-100 group-hover:[transform-origin:50%_50%_0px]" }, null, -1))
149
133
  ]),
150
- _: 3
134
+ _: 3,
135
+ __: [0]
151
136
  }, 8, ["to"])
152
- ], 544));
137
+ ]));
153
138
  }
154
- }, _ = (e, o) => {
155
- const r = e.__vccOpts || e;
156
- for (const [n, t] of o)
157
- r[n] = t;
158
- return r;
159
- }, se = { class: "fixed left-0 top-0 hidden w-[223px] space-y-4 bg-white px-4 py-8 sm:top-[64px] sm:block" }, ae = {
139
+ }, de = { class: "fixed left-0 top-0 hidden w-[223px] space-y-4 bg-white px-4 py-8 sm:top-[64px] sm:block" }, ue = {
160
140
  __name: "AppSidebar",
161
141
  setup(e) {
162
- const o = m("APP_DATA"), { isSidebarToggled: r, toggleSidebar: n } = o;
163
- return (t, s) => (a(), l(y, null, [
164
- d("aside", se, [
165
- i(t.$slots, "default", {}, void 0, !0)
142
+ const t = m("APP_DATA"), { isSidebarToggled: r, toggleSidebar: n } = t;
143
+ return (o, i) => (s(), a(k, null, [
144
+ d("aside", de, [
145
+ l(o.$slots, "default", {}, void 0, !0)
166
146
  ]),
167
- (a(), $(R, { to: "body" }, [
147
+ (s(), $(L, { to: "body" }, [
168
148
  d("div", {
169
149
  class: "shadow-t-2xl fixed bottom-0 z-50 h-[60svh] w-full space-y-4 overflow-y-scroll rounded-t-2xl bg-white p-4 transition-all duration-500 ease-[cubic-bezier(.32,.72,0,1)] [&::-webkit-scrollbar]:hidden",
170
150
  style: M(
171
151
  u(r) ? "transform: translateZ(0)" : "transform: translate3d(0,60svh,0)"
172
152
  )
173
153
  }, [
174
- i(t.$slots, "default", {}, void 0, !0)
154
+ l(o.$slots, "default", {}, void 0, !0)
175
155
  ], 4),
176
156
  d("div", {
177
- onClick: s[0] || (s[0] = (c) => u(n)()),
178
- class: h([
157
+ onClick: i[0] || (i[0] = (c) => u(n)()),
158
+ class: b([
179
159
  "backdrop backdrop-blur-[0.50px] transition-all duration-300 [transition-behavior:allow-discrete]",
180
160
  u(r) ? "fixed inset-0 z-40 block bg-black/80 opacity-100" : "hidden"
181
161
  ])
@@ -183,53 +163,53 @@ const O = { class: "flex w-full items-center justify-between" }, U = { class: "f
183
163
  ]))
184
164
  ], 64));
185
165
  }
186
- }, le = /* @__PURE__ */ _(ae, [["__scopeId", "data-v-aaece1c7"]]), ie = { class: "flex flex-col" }, de = {
166
+ }, ce = /* @__PURE__ */ f(ue, [["__scopeId", "data-v-aaece1c7"]]), pe = { class: "flex flex-col" }, me = {
187
167
  __name: "AppSidebarItem",
188
168
  setup(e) {
189
- L();
190
- const o = f(!1);
169
+ P();
170
+ const t = h(!1);
191
171
  function r() {
192
- o.value = !o.value;
172
+ t.value = !t.value;
193
173
  }
194
- return w("SIDEBAR_TOGGLE", { toggled: o, toggleSidebarItem: r }), (n, t) => (a(), l("div", ie, [
195
- i(n.$slots, "default")
174
+ return T("SIDEBAR_TOGGLE", { toggled: t, toggleSidebarItem: r }), (n, o) => (s(), a("div", pe, [
175
+ l(n.$slots, "default")
196
176
  ]));
197
177
  }
198
- }, ue = ["to"], ce = {
178
+ }, fe = ["to"], be = {
199
179
  __name: "AppSidebarItemChild",
200
180
  props: {
201
181
  to: { type: String, required: !0 }
202
182
  },
203
183
  setup(e) {
204
- const o = e;
205
- return (r, n) => o.to.startsWith("/") ? (a(), $(u(S), {
184
+ const t = e;
185
+ return (r, n) => t.to.startsWith("/") ? (s(), $(u(A), {
206
186
  key: 0,
207
187
  class: "[&.router-link-exact-active]:text-primary-950 [&.router-link-exact-active]:bg-background-main text-primary-950 hover:bg-background-main block h-10 items-center gap-3 overflow-hidden text-ellipsis whitespace-nowrap rounded-lg px-3 text-xs leading-[40px] transition-all [&.router-link-exact-active]:font-medium",
208
- to: o.to
188
+ to: t.to
209
189
  }, {
210
190
  default: g(() => [
211
- i(r.$slots, "default")
191
+ l(r.$slots, "default")
212
192
  ]),
213
193
  _: 3
214
- }, 8, ["to"])) : (a(), l("a", {
194
+ }, 8, ["to"])) : (s(), a("a", {
215
195
  key: 1,
216
196
  class: "text-primary-950 hover:bg-background-main block h-10 items-center gap-3 overflow-hidden text-ellipsis whitespace-nowrap rounded-lg px-3 text-xs leading-[40px] transition-all",
217
- to: o.to
197
+ to: t.to
218
198
  }, [
219
- i(r.$slots, "default")
220
- ], 8, ue));
199
+ l(r.$slots, "default")
200
+ ], 8, fe));
221
201
  }
222
- }, pe = {
202
+ }, he = {
223
203
  __name: "AppSidebarItemChildren",
224
204
  setup(e) {
225
- const o = m("SIDEBAR_TOGGLE"), { toggled: r } = o;
226
- return (n, t) => (a(), l("div", {
227
- class: h(["max-h-0 overflow-y-hidden rounded-b-lg opacity-0 transition-all", { "mt-2 max-h-max overflow-y-auto px-2 opacity-100": u(r) }])
205
+ const t = m("SIDEBAR_TOGGLE"), { toggled: r } = t;
206
+ return (n, o) => (s(), a("div", {
207
+ class: b(["max-h-0 overflow-y-hidden rounded-b-lg opacity-0 transition-all", { "mt-2 max-h-max overflow-y-auto px-2 opacity-100": u(r) }])
228
208
  }, [
229
- i(n.$slots, "default")
209
+ l(n.$slots, "default")
230
210
  ], 2));
231
211
  }
232
- }, me = { class: "group/sidebar-item hover:bg-background-main has-[&.router-link-active]:bg-background-main peer flex h-10 items-center justify-between rounded-lg px-3 transition-all" }, fe = ["href"], be = {
212
+ }, _e = { class: "link group/sidebar-item hover:bg-background-main has-[&.router-link-active]:bg-background-main peer flex h-10 items-center justify-between rounded-lg px-3 transition-all" }, ge = ["href"], ve = {
233
213
  __name: "AppSidebarItemParent",
234
214
  props: {
235
215
  to: { type: String, required: !0 },
@@ -237,37 +217,37 @@ const O = { class: "flex w-full items-center justify-between" }, U = { class: "f
237
217
  hasChildren: { type: Boolean, default: !1 }
238
218
  },
239
219
  setup(e) {
240
- const o = L(), r = e, n = m("SIDEBAR_TOGGLE"), t = m("APP_DATA"), { toggled: s, toggleSidebarItem: c } = n, { toggleSidebar: p } = t;
241
- function x() {
242
- o.matched.some(
243
- (b) => r.name === b.name
244
- ) ? s.value = !0 : s.value = !1;
220
+ const t = P(), r = e, n = m("SIDEBAR_TOGGLE"), o = m("APP_DATA"), { toggled: i, toggleSidebarItem: c } = n, { toggleSidebar: x } = o;
221
+ function C() {
222
+ t.matched.some(
223
+ (p) => r.name === p.name
224
+ ) ? i.value = !0 : i.value = !1;
245
225
  }
246
- return N(o, () => x(), { immediate: !0 }), (I, b) => (a(), l("div", me, [
247
- r.to.startsWith("/") ? (a(), $(u(S), {
226
+ return j(t, () => C(), { immediate: !0 }), (S, p) => (s(), a("div", _e, [
227
+ r.to.startsWith("/") ? (s(), $(u(A), {
248
228
  key: 0,
249
- onClick: b[0] || (b[0] = (P) => u(p)()),
250
- class: "[&.router-link-active]:text-primary-950 [&.router-link-active]:text-primary-950 text-primary-950 peer flex h-full w-full items-center gap-3 text-xs [&.router-link-active]:font-medium",
229
+ onClick: p[0] || (p[0] = (R) => u(x)()),
230
+ class: "[&.router-link-active]:text-primary-800 [&.router-link-active]:text-primary-800 text-primary-950 peer flex h-full w-full items-center gap-3 text-xs [&.router-link-active]:font-medium",
251
231
  to: r.to
252
232
  }, {
253
233
  default: g(() => [
254
- i(I.$slots, "default")
234
+ l(S.$slots, "default", {}, void 0, !0)
255
235
  ]),
256
236
  _: 3
257
- }, 8, ["to"])) : (a(), l("a", {
237
+ }, 8, ["to"])) : (s(), a("a", {
258
238
  key: 1,
259
239
  class: "text-primary-950 peer flex h-full w-full items-center gap-3 text-xs",
260
240
  href: r.to
261
241
  }, [
262
- i(I.$slots, "default")
263
- ], 8, fe)),
264
- r.hasChildren ? (a(), l("button", {
242
+ l(S.$slots, "default", {}, void 0, !0)
243
+ ], 8, ge)),
244
+ r.hasChildren ? (s(), a("button", {
265
245
  key: 2,
266
- onClick: b[1] || (b[1] = (P) => u(c)()),
246
+ onClick: p[1] || (p[1] = (R) => u(c)()),
267
247
  class: "cursor-pointer rounded-full p-1 transition-all hover:bg-neutral-100",
268
248
  type: "button"
269
249
  }, [
270
- (a(), l("svg", {
250
+ (s(), a("svg", {
271
251
  xmlns: "http://www.w3.org/2000/svg",
272
252
  width: "16",
273
253
  height: "16",
@@ -277,31 +257,31 @@ const O = { class: "flex w-full items-center justify-between" }, U = { class: "f
277
257
  "stroke-width": "2",
278
258
  "stroke-linecap": "round",
279
259
  "stroke-linejoin": "round",
280
- class: h(["lucide lucide-chevron-down-icon lucide-chevron-down stroke-primary-950 transition-all duration-300", { "rotate-180": u(s) }])
281
- }, b[2] || (b[2] = [
260
+ class: b(["lucide lucide-chevron-down-icon lucide-chevron-down stroke-primary-800 transition-all duration-300", { "rotate-180": u(i) }])
261
+ }, p[2] || (p[2] = [
282
262
  d("path", { d: "m6 9 6 6 6-6" }, null, -1)
283
263
  ]), 2))
284
- ])) : k("", !0)
264
+ ])) : y("", !0)
285
265
  ]));
286
266
  }
287
- }, he = { class: "hover:bg-background-main has-[&.router-link-active]:active has-[&.router-link-active]:bg-primary-700 peer flex h-10 items-center justify-between rounded-lg px-3 transition-all" }, ve = {
267
+ }, xe = /* @__PURE__ */ f(ve, [["__scopeId", "data-v-0fab71c0"]]), ke = { class: "hover:bg-background-main has-[&.router-link-active]:active has-[&.router-link-active]:bg-primary-700 peer flex h-10 items-center justify-between rounded-lg px-3 transition-all" }, ye = {
288
268
  __name: "AppSidebarToggle",
289
269
  setup(e) {
290
- const o = m("SIDEBAR_TOGGLE");
270
+ const t = m("SIDEBAR_TOGGLE");
291
271
  return (r, n) => {
292
- const t = j("RouterLink");
293
- return a(), l("div", he, [
294
- B(t, {
272
+ const o = G("RouterLink");
273
+ return s(), a("div", ke, [
274
+ V(o, {
295
275
  class: "text-primary-950 peer flex h-full w-full items-center gap-3 text-xs [&.router-link-active]:font-medium [&.router-link-active]:text-white",
296
276
  to: "/"
297
277
  }, {
298
278
  default: g(() => [
299
- i(r.$slots, "default")
279
+ l(r.$slots, "default")
300
280
  ]),
301
281
  _: 3
302
282
  }),
303
283
  d("button", {
304
- onClick: n[0] || (n[0] = (s) => u(o).toggleSidebarItem()),
284
+ onClick: n[0] || (n[0] = (i) => u(t).toggleSidebarItem()),
305
285
  class: "cursor-pointer",
306
286
  type: "button"
307
287
  }, n[1] || (n[1] = [
@@ -323,33 +303,33 @@ const O = { class: "flex w-full items-center justify-between" }, U = { class: "f
323
303
  ]);
324
304
  };
325
305
  }
326
- }, ge = {}, _e = {
306
+ }, $e = {}, we = {
327
307
  key: 0,
328
308
  class: "text-primary-950 px-1 text-sm font-medium"
329
- }, xe = { class: "mt-2" };
330
- function ye(e, o) {
331
- return a(), l("nav", null, [
332
- e.$slots.title ? (a(), l("b", _e, [
333
- i(e.$slots, "title")
334
- ])) : k("", !0),
335
- d("div", xe, [
336
- i(e.$slots, "items")
309
+ }, Ae = { class: "mt-2" };
310
+ function Se(e, t) {
311
+ return s(), a("nav", null, [
312
+ e.$slots.title ? (s(), a("b", we, [
313
+ l(e.$slots, "title")
314
+ ])) : y("", !0),
315
+ d("div", Ae, [
316
+ l(e.$slots, "items")
337
317
  ])
338
318
  ]);
339
319
  }
340
- const ke = /* @__PURE__ */ _(ge, [["render", ye]]), $e = {}, we = { class: "rounded-full px-3 py-1 text-xs font-medium" };
341
- function Ae(e, o) {
342
- return a(), l("div", we, [
343
- i(e.$slots, "default")
320
+ const Ie = /* @__PURE__ */ f($e, [["render", Se]]), Te = {}, Ce = { class: "rounded-full px-3 py-1 text-xs font-medium" };
321
+ function Be(e, t) {
322
+ return s(), a("div", Ce, [
323
+ l(e.$slots, "default")
344
324
  ]);
345
325
  }
346
- const Se = /* @__PURE__ */ _($e, [["render", Ae]]), Ie = {
326
+ const Ve = /* @__PURE__ */ f(Te, [["render", Be]]), De = {
347
327
  __name: "Button",
348
328
  props: {
349
329
  variant: { type: String, default: "primary" }
350
330
  },
351
331
  setup(e) {
352
- const o = e, r = {
332
+ const t = e, r = {
353
333
  primary: [
354
334
  "bg-brand-primary-700",
355
335
  "text-white",
@@ -370,19 +350,19 @@ const Se = /* @__PURE__ */ _($e, [["render", Ae]]), Ie = {
370
350
  "hover:bg-danger-600-hovered"
371
351
  ]
372
352
  };
373
- return (n, t) => (a(), l("button", v(n.$attrs, {
374
- class: ["cursor-pointer rounded-lg px-4 py-2 text-xs transition-all disabled:cursor-not-allowed disabled:opacity-50", r[o.variant]]
353
+ return (n, o) => (s(), a("button", _(n.$attrs, {
354
+ class: ["cursor-pointer rounded-lg px-4 py-2 text-xs transition-all disabled:cursor-not-allowed disabled:opacity-50", r[t.variant]]
375
355
  }), [
376
- i(n.$slots, "default")
356
+ l(n.$slots, "default")
377
357
  ], 16));
378
358
  }
379
- }, Te = {}, Ce = { class: "rounded-2xl bg-white p-6" };
380
- function Be(e, o) {
381
- return a(), l("div", Ce, [
382
- i(e.$slots, "default")
359
+ }, Pe = {}, Re = { class: "rounded-2xl bg-white p-6" };
360
+ function Le(e, t) {
361
+ return s(), a("div", Re, [
362
+ l(e.$slots, "default")
383
363
  ]);
384
364
  }
385
- const Ve = /* @__PURE__ */ _(Te, [["render", Be]]), De = {
365
+ const Me = /* @__PURE__ */ f(Pe, [["render", Le]]), je = {
386
366
  __name: "Checkbox",
387
367
  props: {
388
368
  modelValue: {},
@@ -390,12 +370,12 @@ const Ve = /* @__PURE__ */ _(Te, [["render", Be]]), De = {
390
370
  },
391
371
  emits: ["update:modelValue"],
392
372
  setup(e) {
393
- const o = V(e, "modelValue"), r = f(null);
394
- return (n, t) => (a(), l("button", {
395
- onClick: t[1] || (t[1] = (s) => r.value.click()),
373
+ const t = w(e, "modelValue"), r = h(null);
374
+ return (n, o) => (s(), a("button", {
375
+ onClick: o[1] || (o[1] = (i) => r.value.click()),
396
376
  class: "group/checkbox bg-neutral-100 has-checked:bg-primary-700 flex size-4 cursor-pointer items-center justify-center rounded-sm transition-all"
397
377
  }, [
398
- t[2] || (t[2] = d("svg", {
378
+ o[2] || (o[2] = d("svg", {
399
379
  xmlns: "http://www.w3.org/2000/svg",
400
380
  width: "14",
401
381
  height: "14",
@@ -409,48 +389,51 @@ const Ve = /* @__PURE__ */ _(Te, [["render", Be]]), De = {
409
389
  }, [
410
390
  d("path", { d: "M20 6 9 17l-5-5" })
411
391
  ], -1)),
412
- A(d("input", v(n.$attrs, {
413
- "onUpdate:modelValue": t[0] || (t[0] = (s) => o.value = s),
392
+ v(d("input", _(n.$attrs, {
393
+ "onUpdate:modelValue": o[0] || (o[0] = (i) => t.value = i),
414
394
  type: "checkbox",
415
395
  ref_key: "checkboxRef",
416
396
  ref: r,
417
397
  hidden: ""
418
398
  }), null, 16), [
419
- [G, o.value]
399
+ [z, t.value]
420
400
  ])
421
401
  ]));
422
402
  }
423
- }, Le = { class: "pointer-events-auto fixed inset-0 z-[100] min-h-screen bg-black/80 backdrop-blur-[2px]" }, Pe = {
403
+ }, Ge = { class: "pointer-events-auto fixed inset-0 z-[100] min-h-screen bg-black/80 backdrop-blur-[2px]" }, ze = {
424
404
  __name: "DialogBackground",
425
405
  setup(e) {
426
- return z(() => {
406
+ return N(() => {
427
407
  document.querySelector("body").classList.add("overflow-hidden");
428
408
  }), E(() => {
429
409
  document.querySelector("body").classList.remove("overflow-hidden");
430
- }), (o, r) => (a(), l("div", Le, [
431
- i(o.$slots, "default")
410
+ }), (t, r) => (s(), a("div", Ge, [
411
+ l(t.$slots, "default")
432
412
  ]));
433
413
  }
434
- }, Re = {
414
+ }, Ne = {
435
415
  __name: "Input",
436
- props: ["modelValue"],
416
+ props: {
417
+ modelValue: {},
418
+ modelModifiers: {}
419
+ },
420
+ emits: ["update:modelValue"],
437
421
  setup(e) {
438
- const r = f(e.modelValue);
439
- return (n, t) => A((a(), l("input", {
440
- "onUpdate:modelValue": t[0] || (t[0] = (s) => r.value = s),
441
- onInput: t[1] || (t[1] = (s) => n.$emit("update:modelValue", s.target.value)),
422
+ const t = w(e, "modelValue");
423
+ return (r, n) => v((s(), a("input", {
424
+ "onUpdate:modelValue": n[0] || (n[0] = (o) => t.value = o),
442
425
  class: "text-primary-950 focus:ring-primary-700 neutral-400:text-neutral-400 rounded-lg border-[1px] border-neutral-200 bg-white px-3 py-2 text-xs outline-none transition-all focus:ring-2 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"
443
- }, null, 544)), [
444
- [D, r.value]
426
+ }, null, 512)), [
427
+ [D, t.value]
445
428
  ]);
446
429
  }
447
- }, Me = {};
448
- function Ne(e, o) {
449
- return a(), l("label", v(e.$attrs, { class: "text-primary-950 text-xs transition-all" }), [
450
- i(e.$slots, "default")
430
+ }, Ee = {};
431
+ function He(e, t) {
432
+ return s(), a("label", _(e.$attrs, { class: "text-primary-950 text-xs transition-all" }), [
433
+ l(e.$slots, "default")
451
434
  ], 16);
452
435
  }
453
- const je = /* @__PURE__ */ _(Me, [["render", Ne]]), Ge = {
436
+ const We = /* @__PURE__ */ f(Ee, [["render", He]]), qe = {
454
437
  __name: "Radio",
455
438
  props: {
456
439
  modelValue: {},
@@ -458,147 +441,161 @@ const je = /* @__PURE__ */ _(Me, [["render", Ne]]), Ge = {
458
441
  },
459
442
  emits: ["update:modelValue"],
460
443
  setup(e) {
461
- const o = V(e, "modelValue"), r = f(null);
462
- return (n, t) => (a(), l("button", {
463
- onClick: t[1] || (t[1] = (s) => r.value.click()),
444
+ const t = w(e, "modelValue"), r = h(null);
445
+ return (n, o) => (s(), a("button", {
446
+ onClick: o[1] || (o[1] = (i) => r.value.click()),
464
447
  class: "group/radio bg-neutral-100 has-checked:bg-white has-checked:border-primary-700 flex size-4 cursor-pointer items-center justify-center rounded-full border-[1px] border-transparent"
465
448
  }, [
466
- t[2] || (t[2] = d("div", { class: "group-has-checked/radio:bg-primary-700 group-has-checked/radio:opacity-100 size-[10px] rounded-full opacity-0 transition-all" }, null, -1)),
467
- A(d("input", v(n.$attrs, {
468
- "onUpdate:modelValue": t[0] || (t[0] = (s) => o.value = s),
449
+ o[2] || (o[2] = d("div", { class: "group-has-checked/radio:bg-primary-700 group-has-checked/radio:opacity-100 size-[10px] rounded-full opacity-0 transition-all" }, null, -1)),
450
+ v(d("input", _(n.$attrs, {
451
+ "onUpdate:modelValue": o[0] || (o[0] = (i) => t.value = i),
469
452
  type: "radio",
470
453
  ref_key: "radioRef",
471
454
  ref: r,
472
455
  hidden: ""
473
456
  }), null, 16), [
474
- [W, o.value]
457
+ [H, t.value]
475
458
  ])
476
459
  ]));
477
460
  }
478
- }, ze = "bg-[url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiM1YjYxNmUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1jaGV2cm9uLWRvd24iPjxwYXRoIGQ9Im02IDkgNiA2IDYtNiIvPjwvc3ZnPg==')]", Ee = {
461
+ }, Ue = "bg-[url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiM1YjYxNmUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1jaGV2cm9uLWRvd24iPjxwYXRoIGQ9Im02IDkgNiA2IDYtNiIvPjwvc3ZnPg==')]", Oe = {
479
462
  __name: "Select",
463
+ props: {
464
+ modelValue: {},
465
+ modelModifiers: {}
466
+ },
467
+ emits: ["update:modelValue"],
480
468
  setup(e) {
481
- return (o, r) => (a(), l("select", v(o.$attrs, {
482
- onChange: r[0] || (r[0] = (n) => o.$emit("update:modelValue", n.target.value)),
483
- class: ["border-neutral-200 text-primary-950 focus:ring-primary-700 appearance-none rounded-lg border-[1px] bg-white bg-[length:16px] bg-[right_12px_center] bg-no-repeat px-3 py-2 text-xs outline-none transition-all focus:ring-2 focus:ring-offset-2", ze]
469
+ const t = w(e, "modelValue");
470
+ return (r, n) => v((s(), a("select", _(r.$attrs, {
471
+ "onUpdate:modelValue": n[0] || (n[0] = (o) => t.value = o),
472
+ class: ["text-primary-950 focus:ring-primary-700 appearance-none rounded-lg border-[1px] border-neutral-200 bg-white bg-[length:16px] bg-[right_12px_center] bg-no-repeat px-3 py-2 text-xs outline-none transition-all focus:ring-2 focus:ring-offset-2", Ue]
484
473
  }), [
485
- i(o.$slots, "default")
486
- ], 16));
474
+ l(r.$slots, "default")
475
+ ], 16)), [
476
+ [W, t.value]
477
+ ]);
487
478
  }
488
- }, We = { class: "w-full" }, He = { class: "h-16" }, qe = { key: 0 }, Oe = {
479
+ }, Ze = { class: "w-full" }, Je = { class: "h-16" }, Ye = { key: 0 }, Fe = {
489
480
  key: 0,
490
481
  class: "pe-4"
491
- }, Ue = {
482
+ }, Xe = {
492
483
  __name: "Table",
493
484
  props: {
494
485
  columns: { type: Array, required: !0 },
495
486
  data: { type: Array, required: !0 }
496
487
  },
497
488
  setup(e) {
498
- const o = e;
499
- return (r, n) => (a(), l("table", We, [
489
+ const t = e;
490
+ return (r, n) => (s(), a("table", Ze, [
500
491
  d("thead", null, [
501
- d("tr", He, [
502
- (a(!0), l(y, null, T(o.columns, (t) => (a(), l("th", {
503
- key: t.key,
492
+ d("tr", Je, [
493
+ (s(!0), a(k, null, I(t.columns, (o) => (s(), a("th", {
494
+ key: o.key,
504
495
  class: "text-xs font-medium text-neutral-600 first-of-type:ps-4"
505
- }, C(t.label), 1))), 128)),
506
- r.$slots.actions ? (a(), l("th", qe)) : k("", !0)
496
+ }, B(o.label), 1))), 128)),
497
+ r.$slots.actions ? (s(), a("th", Ye)) : y("", !0)
507
498
  ])
508
499
  ]),
509
500
  d("tbody", null, [
510
- (a(!0), l(y, null, T(o.data, (t, s) => (a(), l("tr", {
511
- key: s,
501
+ (s(!0), a(k, null, I(t.data, (o, i) => (s(), a("tr", {
502
+ key: i,
512
503
  class: "odd:bg-background-main/50 hover:bg-background-main min-h-16 rounded-md transition-all"
513
504
  }, [
514
- (a(!0), l(y, null, T(o.columns, (c) => (a(), l("td", {
505
+ (s(!0), a(k, null, I(t.columns, (c) => (s(), a("td", {
515
506
  key: c.key,
516
507
  class: "text-primary-950 py-4 text-xs first-of-type:rounded-s-md first-of-type:ps-4 last-of-type:rounded-e-md last-of-type:pe-4"
517
508
  }, [
518
- i(r.$slots, c.key, { row: t }, () => [
519
- H(C(t[c.key]), 1)
509
+ l(r.$slots, c.key, { row: o }, () => [
510
+ q(B(o[c.key]), 1)
520
511
  ])
521
512
  ]))), 128)),
522
- r.$slots.actions ? (a(), l("td", Oe, [
523
- i(r.$slots, "actions", { row: t })
524
- ])) : k("", !0)
513
+ r.$slots.actions ? (s(), a("td", Fe, [
514
+ l(r.$slots, "actions", { row: o })
515
+ ])) : y("", !0)
525
516
  ]))), 128))
526
517
  ])
527
518
  ]));
528
519
  }
529
- }, Ze = { class: "bg-neutral-100/50 overflow-x-scroll rounded-xl p-1 [&::-webkit-scrollbar]:hidden" }, Je = {
520
+ }, Qe = { class: "overflow-x-scroll rounded-xl bg-neutral-100/50 p-1 [&::-webkit-scrollbar]:hidden" }, Ke = {
530
521
  __name: "Tabs",
531
522
  props: {
532
523
  default: { default: null }
533
524
  },
534
525
  setup(e) {
535
- const r = f(e.default);
536
- function n(t) {
537
- r.value = t;
526
+ const r = h(e.default);
527
+ function n(o) {
528
+ r.value = o;
538
529
  }
539
- return w("TAB_DATA", { currentValue: r, setCurrentValue: n }), (t, s) => (a(), l("div", Ze, [
540
- i(t.$slots, "default")
530
+ return T("TAB_DATA", { currentValue: r, setCurrentValue: n }), (o, i) => (s(), a("div", Qe, [
531
+ l(o.$slots, "default")
541
532
  ]));
542
533
  }
543
- }, Ye = {
534
+ }, et = {
544
535
  __name: "TabItem",
545
536
  props: {
546
537
  value: { required: !0 }
547
538
  },
548
539
  setup(e) {
549
- const o = e, r = m("TAB_DATA"), { currentValue: n, setCurrentValue: t } = r, s = q(() => n.value === o.value ? ["bg-white", "font-medium", "text-primary-700", "shadow-xl"] : "text-neutral-600");
550
- return (c, p) => (a(), l("button", {
551
- onClick: p[0] || (p[0] = (x) => u(t)(o.value)),
552
- class: h(["h-8 cursor-pointer rounded-lg px-3 text-xs transition-all disabled:cursor-not-allowed disabled:opacity-50", s.value])
540
+ const t = e, r = m("TAB_DATA"), { currentValue: n, setCurrentValue: o } = r, i = U(() => n.value === t.value ? [
541
+ "bg-white",
542
+ "font-medium",
543
+ "text-primary-700",
544
+ "shadow-xl",
545
+ "tab-active"
546
+ ] : "text-neutral-600");
547
+ return (c, x) => (s(), a("button", {
548
+ onClick: x[0] || (x[0] = (C) => u(o)(t.value)),
549
+ class: b(["tab h-8 cursor-pointer rounded-lg px-3 text-xs transition-all disabled:cursor-not-allowed disabled:opacity-50", i.value])
553
550
  }, [
554
- i(c.$slots, "default")
551
+ l(c.$slots, "default", {}, void 0, !0)
555
552
  ], 2));
556
553
  }
557
- }, Fe = {
554
+ }, tt = /* @__PURE__ */ f(et, [["__scopeId", "data-v-9e06f71f"]]), ot = {
558
555
  __name: "TextArea",
559
556
  props: ["modelValue"],
560
557
  setup(e) {
561
- const r = f(e.modelValue);
562
- return (n, t) => A((a(), l("textarea", v({
563
- onInput: t[0] || (t[0] = (s) => n.$emit("update:modelValue", s.target.value))
558
+ const r = h(e.modelValue);
559
+ return (n, o) => v((s(), a("textarea", _({
560
+ onInput: o[0] || (o[0] = (i) => n.$emit("update:modelValue", i.target.value))
564
561
  }, n.$attrs, {
565
- "onUpdate:modelValue": t[1] || (t[1] = (s) => r.value = s),
562
+ "onUpdate:modelValue": o[1] || (o[1] = (i) => r.value = i),
566
563
  class: "border-neutral-200 text-primary-950 neutral-400:text-neutral-400 focus:ring-primary-700 rounded-lg border-[1px] px-3 py-2 text-xs outline-none transition-all focus:ring-2 focus:ring-offset-2"
567
564
  }), null, 16)), [
568
565
  [D, r.value]
569
566
  ]);
570
567
  }
571
- }, Ke = {
568
+ }, st = {
572
569
  install(e) {
573
- e.component("AppHeader", Y), e.component("AppHeaderLink", X), e.component("AppLayout", ee), e.component("AppMain", te), e.component("AppNavTabs", re), e.component("AppNavTab", ne), e.component("AppSidebar", le), e.component("AppSidebarItem", de), e.component("AppSidebarItemChild", ce), e.component("AppSidebarItemChildren", pe), e.component("AppSidebarItemParent", be), e.component("AppSidebarToggle", ve), e.component("AppSidebarNavSection", ke), e.component("Badge", Se), e.component("Button", Ie), e.component("Checkbox", De), e.component("Card", Ve), e.component("DialogBackground", Pe), e.component("Input", Re), e.component("Label", je), e.component("Radio", Ge), e.component("Select", Ee), e.component("Table", Ue), e.component("Tabs", Je), e.component("TabItem", Ye), e.component("TextArea", Fe);
570
+ e.component("AppHeader", F), e.component("AppHeaderLink", Q), e.component("AppLayout", te), e.component("AppMain", oe), e.component("AppNavTabs", ae), e.component("AppNavTab", ie), e.component("AppSidebar", ce), e.component("AppSidebarItem", me), e.component("AppSidebarItemChild", be), e.component("AppSidebarItemChildren", he), e.component("AppSidebarItemParent", xe), e.component("AppSidebarToggle", ye), e.component("AppSidebarNavSection", Ie), e.component("Badge", Ve), e.component("Button", De), e.component("Checkbox", je), e.component("Card", Me), e.component("DialogBackground", ze), e.component("Input", Ne), e.component("Label", We), e.component("Radio", qe), e.component("Select", Oe), e.component("Table", Xe), e.component("Tabs", Ke), e.component("TabItem", tt), e.component("TextArea", ot);
574
571
  }
575
572
  };
576
573
  export {
577
- Y as AppHeader,
578
- X as AppHeaderLink,
579
- ee as AppLayout,
580
- te as AppMain,
581
- ne as AppNavTab,
582
- re as AppNavTabs,
583
- le as AppSidebar,
584
- de as AppSidebarItem,
585
- ce as AppSidebarItemChild,
586
- pe as AppSidebarItemChildren,
587
- be as AppSidebarItemParent,
588
- ke as AppSidebarNavSection,
589
- ve as AppSidebarToggle,
590
- Se as Badge,
591
- Ie as Button,
592
- Ve as Card,
593
- De as Checkbox,
594
- Pe as DialogBackground,
595
- Re as Input,
596
- je as Label,
597
- Ge as Radio,
598
- Ee as Select,
599
- Ye as TabItem,
600
- Ue as Table,
601
- Je as Tabs,
602
- Fe as TextArea,
603
- Ke as default
574
+ F as AppHeader,
575
+ Q as AppHeaderLink,
576
+ te as AppLayout,
577
+ oe as AppMain,
578
+ ie as AppNavTab,
579
+ ae as AppNavTabs,
580
+ ce as AppSidebar,
581
+ me as AppSidebarItem,
582
+ be as AppSidebarItemChild,
583
+ he as AppSidebarItemChildren,
584
+ xe as AppSidebarItemParent,
585
+ Ie as AppSidebarNavSection,
586
+ ye as AppSidebarToggle,
587
+ Ve as Badge,
588
+ De as Button,
589
+ Me as Card,
590
+ je as Checkbox,
591
+ ze as DialogBackground,
592
+ Ne as Input,
593
+ We as Label,
594
+ qe as Radio,
595
+ Oe as Select,
596
+ tt as TabItem,
597
+ Xe as Table,
598
+ Ke as Tabs,
599
+ ot as TextArea,
600
+ st as default
604
601
  };
@@ -1 +1 @@
1
- (function(s,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("vue-router")):typeof define=="function"&&define.amd?define(["exports","vue","vue-router"],e):(s=typeof globalThis<"u"?globalThis:s||self,e(s.ScrubbedTailwindComponentsV2={},s.Vue,s.vueRouter))})(this,function(s,e,p){"use strict";const W={class:"flex w-full items-center justify-between"},H={class:"flex items-center gap-2"},q={class:"flex items-center gap-10"},O={class:"hidden gap-6 sm:flex"},k={__name:"AppHeader",setup(t){const o=e.inject("APP_DATA"),{isSidebarToggled:n,toggleSidebar:l}=o;return(r,a)=>(e.openBlock(),e.createElementBlock("header",{class:e.normalizeClass(["fixed flex h-16 w-dvw items-center bg-white/50 px-3 backdrop-blur sm:px-6",{"rounded-t-2xl":e.unref(n)}])},[e.createElementVNode("nav",W,[e.createElementVNode("div",H,[e.createElementVNode("button",{onClick:a[0]||(a[0]=i=>e.unref(l)()),class:"block cursor-pointer rounded-full p-2 hover:bg-neutral-100 sm:hidden"},a[1]||(a[1]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-menu-icon lucide-menu size-5 stroke-neutral-600"},[e.createElementVNode("path",{d:"M4 12h16"}),e.createElementVNode("path",{d:"M4 18h16"}),e.createElementVNode("path",{d:"M4 6h16"})],-1)])),e.renderSlot(r.$slots,"header-img")]),e.createElementVNode("div",q,[e.createElementVNode("ul",O,[e.renderSlot(r.$slots,"header-links")]),e.renderSlot(r.$slots,"header-actions")])])],2))}},U=["href"],b={__name:"AppHeaderLink",props:{to:{type:String,required:!0}},setup(t){const o=t;return(n,l)=>(e.openBlock(),e.createElementBlock("li",null,[o.to.startsWith("/")?(e.openBlock(),e.createBlock(e.unref(p.RouterLink),{key:0,class:"hover:text-primary-950 [&.router-link-active]:text-primary-950 text-xs uppercase text-neutral-600 hover:transition-all [&.router-link-active]:font-semibold",to:o.to},{default:e.withCtx(()=>[e.renderSlot(n.$slots,"default")]),_:3},8,["to"])):(e.openBlock(),e.createElementBlock("a",{key:1,class:"hover:text-primary-950 text-xs uppercase text-neutral-600 hover:transition-all",href:o.to},[e.renderSlot(n.$slots,"default")],8,U))]))}},Z={class:"relative"},J={class:"flex"},h={__name:"AppLayout",setup(t){const o=e.ref(!1);function n(){window.innerWidth<=640?(o.value=!o.value,l()):o.value&&(o.value=!1,l())}function l(){const r=document.querySelector("body");r.classList.contains("bg-black")?r.classList.remove("bg-black"):r.classList.add("bg-black")}return e.provide("APP_DATA",{isSidebarToggled:o,toggleSidebar:n}),(r,a)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["bg-white transition-all duration-500 ease-[cubic-bezier(.32,.72,0,1)]",{"scale-93 origin-[center_top] translate-y-4":o.value}])},[e.createElementVNode("div",Z,[e.renderSlot(r.$slots,"header"),e.createElementVNode("div",J,[e.renderSlot(r.$slots,"content")])])],2))}},g={__name:"AppMain",setup(t){const o=e.inject("APP_DATA"),{isSidebarToggled:n}=o;return(l,r)=>(e.openBlock(),e.createElementBlock("main",{class:e.normalizeClass(["bg-background-main fixed z-[-1] h-svh w-full overflow-auto px-6 pb-9 pt-24 sm:top-16 sm:ml-[223px] sm:h-[calc(100dvh-4rem)] sm:w-[calc(100dvw-223px)] sm:pt-9",e.unref(n)?"overflow-hidden rounded-t-xl sm:rounded-none":"sm:rounded-tl-2xl"])},[e.renderSlot(l.$slots,"default")],2))}},Y={class:"group flex w-full overflow-x-auto border-b-[1px] border-neutral-200"},_={__name:"AppNavTabs",setup(t){const o=e.ref(null);function n(r,a,i){o.value.style=`left: ${r}px; top: calc(${a}px + 6px); opacity: 1; width: ${i}px`}function l(r,a,i){o.value.style=`left: ${r}px; top: calc(${a}px + 6px); opacity: 0; width: ${i}px`}return e.provide("NAV_TABS",{setSelectorAttributes:n,resetSelectorOpacity:l}),(r,a)=>(e.openBlock(),e.createElementBlock("div",Y,[e.renderSlot(r.$slots,"default"),e.createElementVNode("div",{class:"bg-brand-primary-700 absolute left-0 z-[-1] h-[32px] w-10 rounded-lg opacity-0 transition-all ease-in-out",ref_key:"selector",ref:o},null,512)]))}},x={__name:"AppNavTab",props:{to:{type:String,required:!0}},setup(t){const o=t,n=e.inject("NAV_TABS"),{setSelectorAttributes:l,resetSelectorOpacity:r}=n,a=e.ref(null);return(i,c)=>(e.openBlock(),e.createElementBlock("div",{onMouseover:c[0]||(c[0]=u=>e.unref(l)(a.value.offsetLeft,a.value.offsetTop,a.value.clientWidth)),onMouseleave:c[1]||(c[1]=u=>e.unref(r)(a.value.offsetLeft,a.value.offsetTop,a.value.clientWidth)),class:"shrink-0",ref_key:"el",ref:a},[e.createVNode(e.unref(p.RouterLink),{class:"[&.router-link-exact-active]:text-primary-950 [&.router-link-exact-active]:border-brand-primary-700 flex h-12 shrink-0 items-center justify-between gap-2 border-b-2 border-transparent px-3 text-sm text-neutral-600 transition-all hover:font-medium hover:text-white [&.router-link-exact-active]:font-medium [&.router-link-exact-active]:hover:text-white",to:o.to},{default:e.withCtx(()=>[e.renderSlot(i.$slots,"default")]),_:3},8,["to"])],544))}},m=(t,o)=>{const n=t.__vccOpts||t;for(const[l,r]of o)n[l]=r;return n},F={class:"fixed left-0 top-0 hidden w-[223px] space-y-4 bg-white px-4 py-8 sm:top-[64px] sm:block"},y=m({__name:"AppSidebar",setup(t){const o=e.inject("APP_DATA"),{isSidebarToggled:n,toggleSidebar:l}=o;return(r,a)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("aside",F,[e.renderSlot(r.$slots,"default",{},void 0,!0)]),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createElementVNode("div",{class:"shadow-t-2xl fixed bottom-0 z-50 h-[60svh] w-full space-y-4 overflow-y-scroll rounded-t-2xl bg-white p-4 transition-all duration-500 ease-[cubic-bezier(.32,.72,0,1)] [&::-webkit-scrollbar]:hidden",style:e.normalizeStyle(e.unref(n)?"transform: translateZ(0)":"transform: translate3d(0,60svh,0)")},[e.renderSlot(r.$slots,"default",{},void 0,!0)],4),e.createElementVNode("div",{onClick:a[0]||(a[0]=i=>e.unref(l)()),class:e.normalizeClass(["backdrop backdrop-blur-[0.50px] transition-all duration-300 [transition-behavior:allow-discrete]",e.unref(n)?"fixed inset-0 z-40 block bg-black/80 opacity-100":"hidden"])},null,2)]))],64))}},[["__scopeId","data-v-aaece1c7"]]),X={class:"flex flex-col"},B={__name:"AppSidebarItem",setup(t){p.useRoute();const o=e.ref(!1);function n(){o.value=!o.value}return e.provide("SIDEBAR_TOGGLE",{toggled:o,toggleSidebarItem:n}),(l,r)=>(e.openBlock(),e.createElementBlock("div",X,[e.renderSlot(l.$slots,"default")]))}},Q=["to"],w={__name:"AppSidebarItemChild",props:{to:{type:String,required:!0}},setup(t){const o=t;return(n,l)=>o.to.startsWith("/")?(e.openBlock(),e.createBlock(e.unref(p.RouterLink),{key:0,class:"[&.router-link-exact-active]:text-primary-950 [&.router-link-exact-active]:bg-background-main text-primary-950 hover:bg-background-main block h-10 items-center gap-3 overflow-hidden text-ellipsis whitespace-nowrap rounded-lg px-3 text-xs leading-[40px] transition-all [&.router-link-exact-active]:font-medium",to:o.to},{default:e.withCtx(()=>[e.renderSlot(n.$slots,"default")]),_:3},8,["to"])):(e.openBlock(),e.createElementBlock("a",{key:1,class:"text-primary-950 hover:bg-background-main block h-10 items-center gap-3 overflow-hidden text-ellipsis whitespace-nowrap rounded-lg px-3 text-xs leading-[40px] transition-all",to:o.to},[e.renderSlot(n.$slots,"default")],8,Q))}},$={__name:"AppSidebarItemChildren",setup(t){const o=e.inject("SIDEBAR_TOGGLE"),{toggled:n}=o;return(l,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["max-h-0 overflow-y-hidden rounded-b-lg opacity-0 transition-all",{"mt-2 max-h-max overflow-y-auto px-2 opacity-100":e.unref(n)}])},[e.renderSlot(l.$slots,"default")],2))}},K={class:"group/sidebar-item hover:bg-background-main has-[&.router-link-active]:bg-background-main peer flex h-10 items-center justify-between rounded-lg px-3 transition-all"},v=["href"],S={__name:"AppSidebarItemParent",props:{to:{type:String,required:!0},name:{type:String},hasChildren:{type:Boolean,default:!1}},setup(t){const o=p.useRoute(),n=t,l=e.inject("SIDEBAR_TOGGLE"),r=e.inject("APP_DATA"),{toggled:a,toggleSidebarItem:i}=l,{toggleSidebar:c}=r;function u(){o.matched.some(d=>n.name===d.name)?a.value=!0:a.value=!1}return e.watch(o,()=>u(),{immediate:!0}),(f,d)=>(e.openBlock(),e.createElementBlock("div",K,[n.to.startsWith("/")?(e.openBlock(),e.createBlock(e.unref(p.RouterLink),{key:0,onClick:d[0]||(d[0]=ye=>e.unref(c)()),class:"[&.router-link-active]:text-primary-950 [&.router-link-active]:text-primary-950 text-primary-950 peer flex h-full w-full items-center gap-3 text-xs [&.router-link-active]:font-medium",to:n.to},{default:e.withCtx(()=>[e.renderSlot(f.$slots,"default")]),_:3},8,["to"])):(e.openBlock(),e.createElementBlock("a",{key:1,class:"text-primary-950 peer flex h-full w-full items-center gap-3 text-xs",href:n.to},[e.renderSlot(f.$slots,"default")],8,v)),n.hasChildren?(e.openBlock(),e.createElementBlock("button",{key:2,onClick:d[1]||(d[1]=ye=>e.unref(i)()),class:"cursor-pointer rounded-full p-1 transition-all hover:bg-neutral-100",type:"button"},[(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:e.normalizeClass(["lucide lucide-chevron-down-icon lucide-chevron-down stroke-primary-950 transition-all duration-300",{"rotate-180":e.unref(a)}])},d[2]||(d[2]=[e.createElementVNode("path",{d:"m6 9 6 6 6-6"},null,-1)]),2))])):e.createCommentVNode("",!0)]))}},ee={class:"hover:bg-background-main has-[&.router-link-active]:active has-[&.router-link-active]:bg-primary-700 peer flex h-10 items-center justify-between rounded-lg px-3 transition-all"},A={__name:"AppSidebarToggle",setup(t){const o=e.inject("SIDEBAR_TOGGLE");return(n,l)=>{const r=e.resolveComponent("RouterLink");return e.openBlock(),e.createElementBlock("div",ee,[e.createVNode(r,{class:"text-primary-950 peer flex h-full w-full items-center gap-3 text-xs [&.router-link-active]:font-medium [&.router-link-active]:text-white",to:"/"},{default:e.withCtx(()=>[e.renderSlot(n.$slots,"default")]),_:3}),e.createElementVNode("button",{onClick:l[0]||(l[0]=a=>e.unref(o).toggleSidebarItem()),class:"cursor-pointer",type:"button"},l[1]||(l[1]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-chevron-down-icon lucide-chevron-down stroke-white"},[e.createElementVNode("path",{d:"m6 9 6 6 6-6"})],-1)]))])}}},te={},oe={key:0,class:"text-primary-950 px-1 text-sm font-medium"},re={class:"mt-2"};function ne(t,o){return e.openBlock(),e.createElementBlock("nav",null,[t.$slots.title?(e.openBlock(),e.createElementBlock("b",oe,[e.renderSlot(t.$slots,"title")])):e.createCommentVNode("",!0),e.createElementVNode("div",re,[e.renderSlot(t.$slots,"items")])])}const E=m(te,[["render",ne]]),le={},ae={class:"rounded-full px-3 py-1 text-xs font-medium"};function se(t,o){return e.openBlock(),e.createElementBlock("div",ae,[e.renderSlot(t.$slots,"default")])}const V=m(le,[["render",se]]),T={__name:"Button",props:{variant:{type:String,default:"primary"}},setup(t){const o=t,n={primary:["bg-brand-primary-700","text-white","active:bg-primary-950 hover:bg-primary-800"],secondary:["bg-neutral-100","text-primary-900"],outlined:["border-[1px]","border-neutral-200","text-primary-900","hover:bg-neutral-100"],ghost:["font-medium","text-primary-900","hover:bg-neutral-100"],destructive:["bg-danger-600","text-white","active:bg-danger-600-active","hover:bg-danger-600-hovered"]};return(l,r)=>(e.openBlock(),e.createElementBlock("button",e.mergeProps(l.$attrs,{class:["cursor-pointer rounded-lg px-4 py-2 text-xs transition-all disabled:cursor-not-allowed disabled:opacity-50",n[o.variant]]}),[e.renderSlot(l.$slots,"default")],16))}},ie={},ce={class:"rounded-2xl bg-white p-6"};function de(t,o){return e.openBlock(),e.createElementBlock("div",ce,[e.renderSlot(t.$slots,"default")])}const I=m(ie,[["render",de]]),N={__name:"Checkbox",props:{modelValue:{},modelModifiers:{}},emits:["update:modelValue"],setup(t){const o=e.useModel(t,"modelValue"),n=e.ref(null);return(l,r)=>(e.openBlock(),e.createElementBlock("button",{onClick:r[1]||(r[1]=a=>n.value.click()),class:"group/checkbox bg-neutral-100 has-checked:bg-primary-700 flex size-4 cursor-pointer items-center justify-center rounded-sm transition-all"},[r[2]||(r[2]=e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-check-icon lucide-check hidden stroke-white group-has-[:checked]/checkbox:block"},[e.createElementVNode("path",{d:"M20 6 9 17l-5-5"})],-1)),e.withDirectives(e.createElementVNode("input",e.mergeProps(l.$attrs,{"onUpdate:modelValue":r[0]||(r[0]=a=>o.value=a),type:"checkbox",ref_key:"checkboxRef",ref:n,hidden:""}),null,16),[[e.vModelCheckbox,o.value]])]))}},pe={class:"pointer-events-auto fixed inset-0 z-[100] min-h-screen bg-black/80 backdrop-blur-[2px]"},C={__name:"DialogBackground",setup(t){return e.onMounted(()=>{document.querySelector("body").classList.add("overflow-hidden")}),e.onUnmounted(()=>{document.querySelector("body").classList.remove("overflow-hidden")}),(o,n)=>(e.openBlock(),e.createElementBlock("div",pe,[e.renderSlot(o.$slots,"default")]))}},D={__name:"Input",props:["modelValue"],setup(t){const o=t,n=e.ref(o.modelValue);return(l,r)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",{"onUpdate:modelValue":r[0]||(r[0]=a=>n.value=a),onInput:r[1]||(r[1]=a=>l.$emit("update:modelValue",a.target.value)),class:"text-primary-950 focus:ring-primary-700 neutral-400:text-neutral-400 rounded-lg border-[1px] border-neutral-200 bg-white px-3 py-2 text-xs outline-none transition-all focus:ring-2 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"},null,544)),[[e.vModelText,n.value]])}},me={};function ue(t,o){return e.openBlock(),e.createElementBlock("label",e.mergeProps(t.$attrs,{class:"text-primary-950 text-xs transition-all"}),[e.renderSlot(t.$slots,"default")],16)}const L=m(me,[["render",ue]]),P={__name:"Radio",props:{modelValue:{},modelModifiers:{}},emits:["update:modelValue"],setup(t){const o=e.useModel(t,"modelValue"),n=e.ref(null);return(l,r)=>(e.openBlock(),e.createElementBlock("button",{onClick:r[1]||(r[1]=a=>n.value.click()),class:"group/radio bg-neutral-100 has-checked:bg-white has-checked:border-primary-700 flex size-4 cursor-pointer items-center justify-center rounded-full border-[1px] border-transparent"},[r[2]||(r[2]=e.createElementVNode("div",{class:"group-has-checked/radio:bg-primary-700 group-has-checked/radio:opacity-100 size-[10px] rounded-full opacity-0 transition-all"},null,-1)),e.withDirectives(e.createElementVNode("input",e.mergeProps(l.$attrs,{"onUpdate:modelValue":r[0]||(r[0]=a=>o.value=a),type:"radio",ref_key:"radioRef",ref:n,hidden:""}),null,16),[[e.vModelRadio,o.value]])]))}},fe="bg-[url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiM1YjYxNmUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1jaGV2cm9uLWRvd24iPjxwYXRoIGQ9Im02IDkgNiA2IDYtNiIvPjwvc3ZnPg==')]",j={__name:"Select",setup(t){return(o,n)=>(e.openBlock(),e.createElementBlock("select",e.mergeProps(o.$attrs,{onChange:n[0]||(n[0]=l=>o.$emit("update:modelValue",l.target.value)),class:["border-neutral-200 text-primary-950 focus:ring-primary-700 appearance-none rounded-lg border-[1px] bg-white bg-[length:16px] bg-[right_12px_center] bg-no-repeat px-3 py-2 text-xs outline-none transition-all focus:ring-2 focus:ring-offset-2",fe]}),[e.renderSlot(o.$slots,"default")],16))}},ke={class:"w-full"},be={class:"h-16"},he={key:0},ge={key:0,class:"pe-4"},M={__name:"Table",props:{columns:{type:Array,required:!0},data:{type:Array,required:!0}},setup(t){const o=t;return(n,l)=>(e.openBlock(),e.createElementBlock("table",ke,[e.createElementVNode("thead",null,[e.createElementVNode("tr",be,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.columns,r=>(e.openBlock(),e.createElementBlock("th",{key:r.key,class:"text-xs font-medium text-neutral-600 first-of-type:ps-4"},e.toDisplayString(r.label),1))),128)),n.$slots.actions?(e.openBlock(),e.createElementBlock("th",he)):e.createCommentVNode("",!0)])]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.data,(r,a)=>(e.openBlock(),e.createElementBlock("tr",{key:a,class:"odd:bg-background-main/50 hover:bg-background-main min-h-16 rounded-md transition-all"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.columns,i=>(e.openBlock(),e.createElementBlock("td",{key:i.key,class:"text-primary-950 py-4 text-xs first-of-type:rounded-s-md first-of-type:ps-4 last-of-type:rounded-e-md last-of-type:pe-4"},[e.renderSlot(n.$slots,i.key,{row:r},()=>[e.createTextVNode(e.toDisplayString(r[i.key]),1)])]))),128)),n.$slots.actions?(e.openBlock(),e.createElementBlock("td",ge,[e.renderSlot(n.$slots,"actions",{row:r})])):e.createCommentVNode("",!0)]))),128))])]))}},_e={class:"bg-neutral-100/50 overflow-x-scroll rounded-xl p-1 [&::-webkit-scrollbar]:hidden"},R={__name:"Tabs",props:{default:{default:null}},setup(t){const o=t,n=e.ref(o.default);function l(r){n.value=r}return e.provide("TAB_DATA",{currentValue:n,setCurrentValue:l}),(r,a)=>(e.openBlock(),e.createElementBlock("div",_e,[e.renderSlot(r.$slots,"default")]))}},z={__name:"TabItem",props:{value:{required:!0}},setup(t){const o=t,n=e.inject("TAB_DATA"),{currentValue:l,setCurrentValue:r}=n,a=e.computed(()=>l.value===o.value?["bg-white","font-medium","text-primary-700","shadow-xl"]:"text-neutral-600");return(i,c)=>(e.openBlock(),e.createElementBlock("button",{onClick:c[0]||(c[0]=u=>e.unref(r)(o.value)),class:e.normalizeClass(["h-8 cursor-pointer rounded-lg px-3 text-xs transition-all disabled:cursor-not-allowed disabled:opacity-50",a.value])},[e.renderSlot(i.$slots,"default")],2))}},G={__name:"TextArea",props:["modelValue"],setup(t){const o=t,n=e.ref(o.modelValue);return(l,r)=>e.withDirectives((e.openBlock(),e.createElementBlock("textarea",e.mergeProps({onInput:r[0]||(r[0]=a=>l.$emit("update:modelValue",a.target.value))},l.$attrs,{"onUpdate:modelValue":r[1]||(r[1]=a=>n.value=a),class:"border-neutral-200 text-primary-950 neutral-400:text-neutral-400 focus:ring-primary-700 rounded-lg border-[1px] px-3 py-2 text-xs outline-none transition-all focus:ring-2 focus:ring-offset-2"}),null,16)),[[e.vModelText,n.value]])}},xe={install(t){t.component("AppHeader",k),t.component("AppHeaderLink",b),t.component("AppLayout",h),t.component("AppMain",g),t.component("AppNavTabs",_),t.component("AppNavTab",x),t.component("AppSidebar",y),t.component("AppSidebarItem",B),t.component("AppSidebarItemChild",w),t.component("AppSidebarItemChildren",$),t.component("AppSidebarItemParent",S),t.component("AppSidebarToggle",A),t.component("AppSidebarNavSection",E),t.component("Badge",V),t.component("Button",T),t.component("Checkbox",N),t.component("Card",I),t.component("DialogBackground",C),t.component("Input",D),t.component("Label",L),t.component("Radio",P),t.component("Select",j),t.component("Table",M),t.component("Tabs",R),t.component("TabItem",z),t.component("TextArea",G)}};s.AppHeader=k,s.AppHeaderLink=b,s.AppLayout=h,s.AppMain=g,s.AppNavTab=x,s.AppNavTabs=_,s.AppSidebar=y,s.AppSidebarItem=B,s.AppSidebarItemChild=w,s.AppSidebarItemChildren=$,s.AppSidebarItemParent=S,s.AppSidebarNavSection=E,s.AppSidebarToggle=A,s.Badge=V,s.Button=T,s.Card=I,s.Checkbox=N,s.DialogBackground=C,s.Input=D,s.Label=L,s.Radio=P,s.Select=j,s.TabItem=z,s.Table=M,s.Tabs=R,s.TextArea=G,s.default=xe,Object.defineProperties(s,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
1
+ (function(a,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("vue-router")):typeof define=="function"&&define.amd?define(["exports","vue","vue-router"],e):(a=typeof globalThis<"u"?globalThis:a||self,e(a.ScrubbedTailwindComponentsV2={},a.Vue,a.vueRouter))})(this,function(a,e,p){"use strict";const H={class:"flex w-full items-center justify-between"},W={class:"flex items-center gap-2"},q={class:"flex items-center gap-10"},O={class:"hidden gap-6 sm:flex"},f={__name:"AppHeader",setup(t){const o=e.inject("APP_DATA"),{isSidebarToggled:n,toggleSidebar:l}=o;return(r,s)=>(e.openBlock(),e.createElementBlock("header",{class:e.normalizeClass(["fixed flex h-16 w-dvw items-center bg-white/50 px-3 backdrop-blur sm:px-6",{"rounded-t-2xl":e.unref(n)}])},[e.createElementVNode("nav",H,[e.createElementVNode("div",W,[e.createElementVNode("button",{onClick:s[0]||(s[0]=i=>e.unref(l)()),class:"block cursor-pointer rounded-full p-2 hover:bg-neutral-100 sm:hidden"},s[1]||(s[1]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-menu-icon lucide-menu size-5 stroke-neutral-600"},[e.createElementVNode("path",{d:"M4 12h16"}),e.createElementVNode("path",{d:"M4 18h16"}),e.createElementVNode("path",{d:"M4 6h16"})],-1)])),e.renderSlot(r.$slots,"header-img")]),e.createElementVNode("div",q,[e.createElementVNode("ul",O,[e.renderSlot(r.$slots,"header-links")]),e.renderSlot(r.$slots,"header-actions")])])],2))}},U=["href"],k={__name:"AppHeaderLink",props:{to:{type:String,required:!0}},setup(t){const o=t;return(n,l)=>(e.openBlock(),e.createElementBlock("li",null,[o.to.startsWith("/")?(e.openBlock(),e.createBlock(e.unref(p.RouterLink),{key:0,class:"hover:text-primary-950 [&.router-link-active]:text-primary-950 text-xs uppercase text-neutral-600 hover:transition-all [&.router-link-active]:font-semibold",to:o.to},{default:e.withCtx(()=>[e.renderSlot(n.$slots,"default")]),_:3},8,["to"])):(e.openBlock(),e.createElementBlock("a",{key:1,class:"hover:text-primary-950 text-xs uppercase text-neutral-600 hover:transition-all",href:o.to},[e.renderSlot(n.$slots,"default")],8,U))]))}},Z={class:"relative"},J={class:"flex"},b={__name:"AppLayout",setup(t){const o=e.ref(!1);function n(){window.innerWidth<=640?(o.value=!o.value,l()):o.value&&(o.value=!1,l())}function l(){const r=document.querySelector("body");r.classList.contains("bg-black")?r.classList.remove("bg-black"):r.classList.add("bg-black")}return e.provide("APP_DATA",{isSidebarToggled:o,toggleSidebar:n}),(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["bg-white transition-all duration-500 ease-[cubic-bezier(.32,.72,0,1)]",{"scale-93 origin-[center_top] translate-y-4":o.value}])},[e.createElementVNode("div",Z,[e.renderSlot(r.$slots,"header"),e.createElementVNode("div",J,[e.renderSlot(r.$slots,"content")])])],2))}},h={__name:"AppMain",setup(t){const o=e.inject("APP_DATA"),{isSidebarToggled:n}=o;return(l,r)=>(e.openBlock(),e.createElementBlock("main",{class:e.normalizeClass(["bg-background-main fixed z-[-1] h-svh w-full overflow-auto px-6 pb-9 pt-24 sm:top-16 sm:ml-[223px] sm:h-[calc(100dvh-4rem)] sm:w-[calc(100dvw-223px)] sm:pt-9",e.unref(n)?"overflow-hidden rounded-t-xl sm:rounded-none":"sm:rounded-tl-2xl"])},[e.renderSlot(l.$slots,"default")],2))}},c=(t,o)=>{const n=t.__vccOpts||t;for(const[l,r]of o)n[l]=r;return n},Y={},F={class:"flex w-full overflow-x-auto border-b-[1px] border-neutral-200 [&::-webkit-scrollbar]:hidden"};function X(t,o){return e.openBlock(),e.createElementBlock("div",F,[e.renderSlot(t.$slots,"default")])}const _=c(Y,[["render",X]]),Q={class:"shrink-0"},g={__name:"AppNavTab",props:{to:{type:String,required:!0}},setup(t){const o=t;return e.ref(null),(n,l)=>(e.openBlock(),e.createElementBlock("div",Q,[e.createVNode(e.unref(p.RouterLink),{class:"[&.router-link-exact-active]:text-primary-950 [&.router-link-exact-active]:border-brand-primary-700 hover:text-brand-primary-700 group relative flex h-12 shrink-0 items-center justify-between gap-2 border-b-2 border-transparent px-3 text-sm text-neutral-600 transition-all [&.router-link-exact-active]:font-medium",to:o.to},{default:e.withCtx(()=>[e.renderSlot(n.$slots,"default"),l[0]||(l[0]=e.createElementVNode("div",{class:"bg-primary-100 absolute inset-x-0 z-[-1] h-8 w-full rounded-lg opacity-0 transition-all contain-strict group-hover:transform-none group-hover:opacity-100 group-hover:[transform-origin:50%_50%_0px]"},null,-1))]),_:3,__:[0]},8,["to"])]))}},K={class:"fixed left-0 top-0 hidden w-[223px] space-y-4 bg-white px-4 py-8 sm:top-[64px] sm:block"},x=c({__name:"AppSidebar",setup(t){const o=e.inject("APP_DATA"),{isSidebarToggled:n,toggleSidebar:l}=o;return(r,s)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("aside",K,[e.renderSlot(r.$slots,"default",{},void 0,!0)]),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createElementVNode("div",{class:"shadow-t-2xl fixed bottom-0 z-50 h-[60svh] w-full space-y-4 overflow-y-scroll rounded-t-2xl bg-white p-4 transition-all duration-500 ease-[cubic-bezier(.32,.72,0,1)] [&::-webkit-scrollbar]:hidden",style:e.normalizeStyle(e.unref(n)?"transform: translateZ(0)":"transform: translate3d(0,60svh,0)")},[e.renderSlot(r.$slots,"default",{},void 0,!0)],4),e.createElementVNode("div",{onClick:s[0]||(s[0]=i=>e.unref(l)()),class:e.normalizeClass(["backdrop backdrop-blur-[0.50px] transition-all duration-300 [transition-behavior:allow-discrete]",e.unref(n)?"fixed inset-0 z-40 block bg-black/80 opacity-100":"hidden"])},null,2)]))],64))}},[["__scopeId","data-v-aaece1c7"]]),v={class:"flex flex-col"},y={__name:"AppSidebarItem",setup(t){p.useRoute();const o=e.ref(!1);function n(){o.value=!o.value}return e.provide("SIDEBAR_TOGGLE",{toggled:o,toggleSidebarItem:n}),(l,r)=>(e.openBlock(),e.createElementBlock("div",v,[e.renderSlot(l.$slots,"default")]))}},ee=["to"],B={__name:"AppSidebarItemChild",props:{to:{type:String,required:!0}},setup(t){const o=t;return(n,l)=>o.to.startsWith("/")?(e.openBlock(),e.createBlock(e.unref(p.RouterLink),{key:0,class:"[&.router-link-exact-active]:text-primary-950 [&.router-link-exact-active]:bg-background-main text-primary-950 hover:bg-background-main block h-10 items-center gap-3 overflow-hidden text-ellipsis whitespace-nowrap rounded-lg px-3 text-xs leading-[40px] transition-all [&.router-link-exact-active]:font-medium",to:o.to},{default:e.withCtx(()=>[e.renderSlot(n.$slots,"default")]),_:3},8,["to"])):(e.openBlock(),e.createElementBlock("a",{key:1,class:"text-primary-950 hover:bg-background-main block h-10 items-center gap-3 overflow-hidden text-ellipsis whitespace-nowrap rounded-lg px-3 text-xs leading-[40px] transition-all",to:o.to},[e.renderSlot(n.$slots,"default")],8,ee))}},w={__name:"AppSidebarItemChildren",setup(t){const o=e.inject("SIDEBAR_TOGGLE"),{toggled:n}=o;return(l,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["max-h-0 overflow-y-hidden rounded-b-lg opacity-0 transition-all",{"mt-2 max-h-max overflow-y-auto px-2 opacity-100":e.unref(n)}])},[e.renderSlot(l.$slots,"default")],2))}},te={class:"link group/sidebar-item hover:bg-background-main has-[&.router-link-active]:bg-background-main peer flex h-10 items-center justify-between rounded-lg px-3 transition-all"},oe=["href"],$=c({__name:"AppSidebarItemParent",props:{to:{type:String,required:!0},name:{type:String},hasChildren:{type:Boolean,default:!1}},setup(t){const o=p.useRoute(),n=t,l=e.inject("SIDEBAR_TOGGLE"),r=e.inject("APP_DATA"),{toggled:s,toggleSidebarItem:i}=l,{toggleSidebar:m}=r;function G(){o.matched.some(d=>n.name===d.name)?s.value=!0:s.value=!1}return e.watch(o,()=>G(),{immediate:!0}),(u,d)=>(e.openBlock(),e.createElementBlock("div",te,[n.to.startsWith("/")?(e.openBlock(),e.createBlock(e.unref(p.RouterLink),{key:0,onClick:d[0]||(d[0]=$e=>e.unref(m)()),class:"[&.router-link-active]:text-primary-800 [&.router-link-active]:text-primary-800 text-primary-950 peer flex h-full w-full items-center gap-3 text-xs [&.router-link-active]:font-medium",to:n.to},{default:e.withCtx(()=>[e.renderSlot(u.$slots,"default",{},void 0,!0)]),_:3},8,["to"])):(e.openBlock(),e.createElementBlock("a",{key:1,class:"text-primary-950 peer flex h-full w-full items-center gap-3 text-xs",href:n.to},[e.renderSlot(u.$slots,"default",{},void 0,!0)],8,oe)),n.hasChildren?(e.openBlock(),e.createElementBlock("button",{key:2,onClick:d[1]||(d[1]=$e=>e.unref(i)()),class:"cursor-pointer rounded-full p-1 transition-all hover:bg-neutral-100",type:"button"},[(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:e.normalizeClass(["lucide lucide-chevron-down-icon lucide-chevron-down stroke-primary-800 transition-all duration-300",{"rotate-180":e.unref(s)}])},d[2]||(d[2]=[e.createElementVNode("path",{d:"m6 9 6 6 6-6"},null,-1)]),2))])):e.createCommentVNode("",!0)]))}},[["__scopeId","data-v-0fab71c0"]]),re={class:"hover:bg-background-main has-[&.router-link-active]:active has-[&.router-link-active]:bg-primary-700 peer flex h-10 items-center justify-between rounded-lg px-3 transition-all"},S={__name:"AppSidebarToggle",setup(t){const o=e.inject("SIDEBAR_TOGGLE");return(n,l)=>{const r=e.resolveComponent("RouterLink");return e.openBlock(),e.createElementBlock("div",re,[e.createVNode(r,{class:"text-primary-950 peer flex h-full w-full items-center gap-3 text-xs [&.router-link-active]:font-medium [&.router-link-active]:text-white",to:"/"},{default:e.withCtx(()=>[e.renderSlot(n.$slots,"default")]),_:3}),e.createElementVNode("button",{onClick:l[0]||(l[0]=s=>e.unref(o).toggleSidebarItem()),class:"cursor-pointer",type:"button"},l[1]||(l[1]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-chevron-down-icon lucide-chevron-down stroke-white"},[e.createElementVNode("path",{d:"m6 9 6 6 6-6"})],-1)]))])}}},ne={},le={key:0,class:"text-primary-950 px-1 text-sm font-medium"},ae={class:"mt-2"};function se(t,o){return e.openBlock(),e.createElementBlock("nav",null,[t.$slots.title?(e.openBlock(),e.createElementBlock("b",le,[e.renderSlot(t.$slots,"title")])):e.createCommentVNode("",!0),e.createElementVNode("div",ae,[e.renderSlot(t.$slots,"items")])])}const A=c(ne,[["render",se]]),ie={},ce={class:"rounded-full px-3 py-1 text-xs font-medium"};function de(t,o){return e.openBlock(),e.createElementBlock("div",ce,[e.renderSlot(t.$slots,"default")])}const E=c(ie,[["render",de]]),V={__name:"Button",props:{variant:{type:String,default:"primary"}},setup(t){const o=t,n={primary:["bg-brand-primary-700","text-white","active:bg-primary-950 hover:bg-primary-800"],secondary:["bg-neutral-100","text-primary-900"],outlined:["border-[1px]","border-neutral-200","text-primary-900","hover:bg-neutral-100"],ghost:["font-medium","text-primary-900","hover:bg-neutral-100"],destructive:["bg-danger-600","text-white","active:bg-danger-600-active","hover:bg-danger-600-hovered"]};return(l,r)=>(e.openBlock(),e.createElementBlock("button",e.mergeProps(l.$attrs,{class:["cursor-pointer rounded-lg px-4 py-2 text-xs transition-all disabled:cursor-not-allowed disabled:opacity-50",n[o.variant]]}),[e.renderSlot(l.$slots,"default")],16))}},pe={},me={class:"rounded-2xl bg-white p-6"};function ue(t,o){return e.openBlock(),e.createElementBlock("div",me,[e.renderSlot(t.$slots,"default")])}const I=c(pe,[["render",ue]]),T={__name:"Checkbox",props:{modelValue:{},modelModifiers:{}},emits:["update:modelValue"],setup(t){const o=e.useModel(t,"modelValue"),n=e.ref(null);return(l,r)=>(e.openBlock(),e.createElementBlock("button",{onClick:r[1]||(r[1]=s=>n.value.click()),class:"group/checkbox bg-neutral-100 has-checked:bg-primary-700 flex size-4 cursor-pointer items-center justify-center rounded-sm transition-all"},[r[2]||(r[2]=e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-check-icon lucide-check hidden stroke-white group-has-[:checked]/checkbox:block"},[e.createElementVNode("path",{d:"M20 6 9 17l-5-5"})],-1)),e.withDirectives(e.createElementVNode("input",e.mergeProps(l.$attrs,{"onUpdate:modelValue":r[0]||(r[0]=s=>o.value=s),type:"checkbox",ref_key:"checkboxRef",ref:n,hidden:""}),null,16),[[e.vModelCheckbox,o.value]])]))}},fe={class:"pointer-events-auto fixed inset-0 z-[100] min-h-screen bg-black/80 backdrop-blur-[2px]"},C={__name:"DialogBackground",setup(t){return e.onMounted(()=>{document.querySelector("body").classList.add("overflow-hidden")}),e.onUnmounted(()=>{document.querySelector("body").classList.remove("overflow-hidden")}),(o,n)=>(e.openBlock(),e.createElementBlock("div",fe,[e.renderSlot(o.$slots,"default")]))}},N={__name:"Input",props:{modelValue:{},modelModifiers:{}},emits:["update:modelValue"],setup(t){const o=e.useModel(t,"modelValue");return(n,l)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",{"onUpdate:modelValue":l[0]||(l[0]=r=>o.value=r),class:"text-primary-950 focus:ring-primary-700 neutral-400:text-neutral-400 rounded-lg border-[1px] border-neutral-200 bg-white px-3 py-2 text-xs outline-none transition-all focus:ring-2 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"},null,512)),[[e.vModelText,o.value]])}},ke={};function be(t,o){return e.openBlock(),e.createElementBlock("label",e.mergeProps(t.$attrs,{class:"text-primary-950 text-xs transition-all"}),[e.renderSlot(t.$slots,"default")],16)}const D=c(ke,[["render",be]]),P={__name:"Radio",props:{modelValue:{},modelModifiers:{}},emits:["update:modelValue"],setup(t){const o=e.useModel(t,"modelValue"),n=e.ref(null);return(l,r)=>(e.openBlock(),e.createElementBlock("button",{onClick:r[1]||(r[1]=s=>n.value.click()),class:"group/radio bg-neutral-100 has-checked:bg-white has-checked:border-primary-700 flex size-4 cursor-pointer items-center justify-center rounded-full border-[1px] border-transparent"},[r[2]||(r[2]=e.createElementVNode("div",{class:"group-has-checked/radio:bg-primary-700 group-has-checked/radio:opacity-100 size-[10px] rounded-full opacity-0 transition-all"},null,-1)),e.withDirectives(e.createElementVNode("input",e.mergeProps(l.$attrs,{"onUpdate:modelValue":r[0]||(r[0]=s=>o.value=s),type:"radio",ref_key:"radioRef",ref:n,hidden:""}),null,16),[[e.vModelRadio,o.value]])]))}},he="bg-[url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiM1YjYxNmUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1jaGV2cm9uLWRvd24iPjxwYXRoIGQ9Im02IDkgNiA2IDYtNiIvPjwvc3ZnPg==')]",L={__name:"Select",props:{modelValue:{},modelModifiers:{}},emits:["update:modelValue"],setup(t){const o=e.useModel(t,"modelValue");return(n,l)=>e.withDirectives((e.openBlock(),e.createElementBlock("select",e.mergeProps(n.$attrs,{"onUpdate:modelValue":l[0]||(l[0]=r=>o.value=r),class:["text-primary-950 focus:ring-primary-700 appearance-none rounded-lg border-[1px] border-neutral-200 bg-white bg-[length:16px] bg-[right_12px_center] bg-no-repeat px-3 py-2 text-xs outline-none transition-all focus:ring-2 focus:ring-offset-2",he]}),[e.renderSlot(n.$slots,"default")],16)),[[e.vModelSelect,o.value]])}},_e={class:"w-full"},ge={class:"h-16"},xe={key:0},ye={key:0,class:"pe-4"},M={__name:"Table",props:{columns:{type:Array,required:!0},data:{type:Array,required:!0}},setup(t){const o=t;return(n,l)=>(e.openBlock(),e.createElementBlock("table",_e,[e.createElementVNode("thead",null,[e.createElementVNode("tr",ge,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.columns,r=>(e.openBlock(),e.createElementBlock("th",{key:r.key,class:"text-xs font-medium text-neutral-600 first-of-type:ps-4"},e.toDisplayString(r.label),1))),128)),n.$slots.actions?(e.openBlock(),e.createElementBlock("th",xe)):e.createCommentVNode("",!0)])]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.data,(r,s)=>(e.openBlock(),e.createElementBlock("tr",{key:s,class:"odd:bg-background-main/50 hover:bg-background-main min-h-16 rounded-md transition-all"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.columns,i=>(e.openBlock(),e.createElementBlock("td",{key:i.key,class:"text-primary-950 py-4 text-xs first-of-type:rounded-s-md first-of-type:ps-4 last-of-type:rounded-e-md last-of-type:pe-4"},[e.renderSlot(n.$slots,i.key,{row:r},()=>[e.createTextVNode(e.toDisplayString(r[i.key]),1)])]))),128)),n.$slots.actions?(e.openBlock(),e.createElementBlock("td",ye,[e.renderSlot(n.$slots,"actions",{row:r})])):e.createCommentVNode("",!0)]))),128))])]))}},Be={class:"overflow-x-scroll rounded-xl bg-neutral-100/50 p-1 [&::-webkit-scrollbar]:hidden"},j={__name:"Tabs",props:{default:{default:null}},setup(t){const o=t,n=e.ref(o.default);function l(r){n.value=r}return e.provide("TAB_DATA",{currentValue:n,setCurrentValue:l}),(r,s)=>(e.openBlock(),e.createElementBlock("div",Be,[e.renderSlot(r.$slots,"default")]))}},R=c({__name:"TabItem",props:{value:{required:!0}},setup(t){const o=t,n=e.inject("TAB_DATA"),{currentValue:l,setCurrentValue:r}=n,s=e.computed(()=>l.value===o.value?["bg-white","font-medium","text-primary-700","shadow-xl","tab-active"]:"text-neutral-600");return(i,m)=>(e.openBlock(),e.createElementBlock("button",{onClick:m[0]||(m[0]=G=>e.unref(r)(o.value)),class:e.normalizeClass(["tab h-8 cursor-pointer rounded-lg px-3 text-xs transition-all disabled:cursor-not-allowed disabled:opacity-50",s.value])},[e.renderSlot(i.$slots,"default",{},void 0,!0)],2))}},[["__scopeId","data-v-9e06f71f"]]),z={__name:"TextArea",props:["modelValue"],setup(t){const o=t,n=e.ref(o.modelValue);return(l,r)=>e.withDirectives((e.openBlock(),e.createElementBlock("textarea",e.mergeProps({onInput:r[0]||(r[0]=s=>l.$emit("update:modelValue",s.target.value))},l.$attrs,{"onUpdate:modelValue":r[1]||(r[1]=s=>n.value=s),class:"border-neutral-200 text-primary-950 neutral-400:text-neutral-400 focus:ring-primary-700 rounded-lg border-[1px] px-3 py-2 text-xs outline-none transition-all focus:ring-2 focus:ring-offset-2"}),null,16)),[[e.vModelText,n.value]])}},we={install(t){t.component("AppHeader",f),t.component("AppHeaderLink",k),t.component("AppLayout",b),t.component("AppMain",h),t.component("AppNavTabs",_),t.component("AppNavTab",g),t.component("AppSidebar",x),t.component("AppSidebarItem",y),t.component("AppSidebarItemChild",B),t.component("AppSidebarItemChildren",w),t.component("AppSidebarItemParent",$),t.component("AppSidebarToggle",S),t.component("AppSidebarNavSection",A),t.component("Badge",E),t.component("Button",V),t.component("Checkbox",T),t.component("Card",I),t.component("DialogBackground",C),t.component("Input",N),t.component("Label",D),t.component("Radio",P),t.component("Select",L),t.component("Table",M),t.component("Tabs",j),t.component("TabItem",R),t.component("TextArea",z)}};a.AppHeader=f,a.AppHeaderLink=k,a.AppLayout=b,a.AppMain=h,a.AppNavTab=g,a.AppNavTabs=_,a.AppSidebar=x,a.AppSidebarItem=y,a.AppSidebarItemChild=B,a.AppSidebarItemChildren=w,a.AppSidebarItemParent=$,a.AppSidebarNavSection=A,a.AppSidebarToggle=S,a.Badge=E,a.Button=V,a.Card=I,a.Checkbox=T,a.DialogBackground=C,a.Input=N,a.Label=D,a.Radio=P,a.Select=L,a.TabItem=R,a.Table=M,a.Tabs=j,a.TextArea=z,a.default=we,Object.defineProperties(a,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scrubbed-tailwind-components-v2",
3
- "version": "2.0.2",
3
+ "version": "2.0.4-b",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/scrubbed-tailwind-components-v2.umd.js",