@stachelock/ui 0.1.1 → 0.1.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.
Files changed (196) hide show
  1. package/dist/CalendarHeader.vue_vue_type_script_setup_true_lang-B3KQTxfD.js +70 -0
  2. package/dist/CalendarHeader.vue_vue_type_script_setup_true_lang-B3KQTxfD.js.map +1 -0
  3. package/dist/CheckboxInput.vue_vue_type_script_setup_true_lang-tYAo46wK.js +186 -0
  4. package/dist/CheckboxInput.vue_vue_type_script_setup_true_lang-tYAo46wK.js.map +1 -0
  5. package/dist/ComboboxInput.vue_vue_type_script_setup_true_lang-DoJHjJsA.js +304 -0
  6. package/dist/ComboboxInput.vue_vue_type_script_setup_true_lang-DoJHjJsA.js.map +1 -0
  7. package/dist/DashboardLayout.vue_vue_type_script_setup_true_lang-CClxYrOW.js +186 -0
  8. package/dist/DashboardLayout.vue_vue_type_script_setup_true_lang-CClxYrOW.js.map +1 -0
  9. package/dist/DayCalendar.vue_vue_type_script_setup_true_lang-xE5bCa3O.js +123 -0
  10. package/dist/DayCalendar.vue_vue_type_script_setup_true_lang-xE5bCa3O.js.map +1 -0
  11. package/dist/DefaultLayout.vue_vue_type_script_setup_true_lang-BZAz6aC-.js +85 -0
  12. package/dist/DefaultLayout.vue_vue_type_script_setup_true_lang-BZAz6aC-.js.map +1 -0
  13. package/dist/DynamicForm.vue_vue_type_script_setup_true_lang-BKhcXkNG.js +201 -0
  14. package/dist/DynamicForm.vue_vue_type_script_setup_true_lang-BKhcXkNG.js.map +1 -0
  15. package/dist/DynamicFormField.vue_vue_type_script_setup_true_lang-qAwVNm--.js +153 -0
  16. package/dist/DynamicFormField.vue_vue_type_script_setup_true_lang-qAwVNm--.js.map +1 -0
  17. package/dist/EventCard.vue_vue_type_script_setup_true_lang-B3TP-mWX.js +75 -0
  18. package/dist/EventCard.vue_vue_type_script_setup_true_lang-B3TP-mWX.js.map +1 -0
  19. package/dist/EventsList.vue_vue_type_script_setup_true_lang-Cpc9A9Ev.js +89 -0
  20. package/dist/EventsList.vue_vue_type_script_setup_true_lang-Cpc9A9Ev.js.map +1 -0
  21. package/dist/HeaderLayout.vue_vue_type_script_setup_true_lang-BY2G6hCc.js +49 -0
  22. package/dist/HeaderLayout.vue_vue_type_script_setup_true_lang-BY2G6hCc.js.map +1 -0
  23. package/dist/MonthCalendar.vue_vue_type_script_setup_true_lang-B9Bs0z8j.js +66 -0
  24. package/dist/MonthCalendar.vue_vue_type_script_setup_true_lang-B9Bs0z8j.js.map +1 -0
  25. package/dist/NavigationGroup.vue_vue_type_script_setup_true_lang-2WURj34G.js +29 -0
  26. package/dist/NavigationGroup.vue_vue_type_script_setup_true_lang-2WURj34G.js.map +1 -0
  27. package/dist/NavigationItem.vue_vue_type_script_setup_true_lang-DiNg3gz2.js +51 -0
  28. package/dist/NavigationItem.vue_vue_type_script_setup_true_lang-DiNg3gz2.js.map +1 -0
  29. package/dist/SelectInput.vue_vue_type_script_setup_true_lang-BguP8xMU.js +242 -0
  30. package/dist/SelectInput.vue_vue_type_script_setup_true_lang-BguP8xMU.js.map +1 -0
  31. package/dist/SidebarLayout.vue_vue_type_script_setup_true_lang-CQIW5dy_.js +173 -0
  32. package/dist/SidebarLayout.vue_vue_type_script_setup_true_lang-CQIW5dy_.js.map +1 -0
  33. package/dist/SwitchInput.vue_vue_type_script_setup_true_lang-BagTQ6M0.js +197 -0
  34. package/dist/SwitchInput.vue_vue_type_script_setup_true_lang-BagTQ6M0.js.map +1 -0
  35. package/dist/TagifyInput.vue_vue_type_script_setup_true_lang-RHqhKoK5.js +230 -0
  36. package/dist/TagifyInput.vue_vue_type_script_setup_true_lang-RHqhKoK5.js.map +1 -0
  37. package/dist/TextAreaInput.vue_vue_type_script_setup_true_lang-CbR651TU.js +158 -0
  38. package/dist/TextAreaInput.vue_vue_type_script_setup_true_lang-CbR651TU.js.map +1 -0
  39. package/dist/UiAvatar.vue_vue_type_script_setup_true_lang-CDNjUA1L.js +108 -0
  40. package/dist/UiAvatar.vue_vue_type_script_setup_true_lang-CDNjUA1L.js.map +1 -0
  41. package/dist/UiBreadcrumb.vue_vue_type_script_setup_true_lang-CMH47CoK.js +68 -0
  42. package/dist/UiBreadcrumb.vue_vue_type_script_setup_true_lang-CMH47CoK.js.map +1 -0
  43. package/dist/UiLoading.vue_vue_type_script_setup_true_lang-DCz52-Me.js +131 -0
  44. package/dist/UiLoading.vue_vue_type_script_setup_true_lang-DCz52-Me.js.map +1 -0
  45. package/dist/UiModal.vue_vue_type_script_setup_true_lang-CMk62qeq.js +162 -0
  46. package/dist/UiModal.vue_vue_type_script_setup_true_lang-CMk62qeq.js.map +1 -0
  47. package/dist/UiNavLink.vue_vue_type_script_setup_true_lang-Bz5oiCCk.js +222 -0
  48. package/dist/UiNavLink.vue_vue_type_script_setup_true_lang-Bz5oiCCk.js.map +1 -0
  49. package/dist/UiProgressBar.vue_vue_type_script_setup_true_lang-0zFKwh43.js +46 -0
  50. package/dist/UiProgressBar.vue_vue_type_script_setup_true_lang-0zFKwh43.js.map +1 -0
  51. package/dist/UiRadialProgressBar.vue_vue_type_script_setup_true_lang-BGCBJa2S.js +72 -0
  52. package/dist/UiRadialProgressBar.vue_vue_type_script_setup_true_lang-BGCBJa2S.js.map +1 -0
  53. package/dist/UiTable.vue_vue_type_script_setup_true_lang-hI1_xamh.js +211 -0
  54. package/dist/UiTable.vue_vue_type_script_setup_true_lang-hI1_xamh.js.map +1 -0
  55. package/dist/UiTransition.vue_vue_type_script_setup_true_lang-DwBTj18t.js +66 -0
  56. package/dist/UiTransition.vue_vue_type_script_setup_true_lang-DwBTj18t.js.map +1 -0
  57. package/dist/WeekCalendar.vue_vue_type_script_setup_true_lang-DAFQiRI9.js +154 -0
  58. package/dist/WeekCalendar.vue_vue_type_script_setup_true_lang-DAFQiRI9.js.map +1 -0
  59. package/dist/YearCalendar.vue_vue_type_script_setup_true_lang-BfJkvmpN.js +29 -0
  60. package/dist/YearCalendar.vue_vue_type_script_setup_true_lang-BfJkvmpN.js.map +1 -0
  61. package/dist/_plugin-vue_export-helper-CHgC5LLL.js +10 -0
  62. package/dist/_plugin-vue_export-helper-CHgC5LLL.js.map +1 -0
  63. package/dist/calendar-905Ofszh.js +77 -0
  64. package/dist/calendar-905Ofszh.js.map +1 -0
  65. package/dist/calendars/CalendarDashboard.d.ts +3 -0
  66. package/dist/calendars/CalendarDashboard.js +72 -0
  67. package/dist/calendars/CalendarDashboard.js.map +1 -0
  68. package/dist/calendars/CalendarHeader.d.ts +3 -0
  69. package/dist/calendars/CalendarHeader.js +5 -0
  70. package/dist/calendars/CalendarHeader.js.map +1 -0
  71. package/dist/calendars/DayCalendar.d.ts +3 -0
  72. package/dist/calendars/DayCalendar.js +5 -0
  73. package/dist/calendars/DayCalendar.js.map +1 -0
  74. package/dist/calendars/EventCard.d.ts +3 -0
  75. package/dist/calendars/EventCard.js +5 -0
  76. package/dist/calendars/EventCard.js.map +1 -0
  77. package/dist/calendars/EventsList.d.ts +3 -0
  78. package/dist/calendars/EventsList.js +5 -0
  79. package/dist/calendars/EventsList.js.map +1 -0
  80. package/dist/calendars/MonthCalendar.d.ts +3 -0
  81. package/dist/calendars/MonthCalendar.js +5 -0
  82. package/dist/calendars/MonthCalendar.js.map +1 -0
  83. package/dist/calendars/WeekCalendar.d.ts +3 -0
  84. package/dist/calendars/WeekCalendar.js +5 -0
  85. package/dist/calendars/WeekCalendar.js.map +1 -0
  86. package/dist/calendars/YearCalendar.d.ts +3 -0
  87. package/dist/calendars/YearCalendar.js +5 -0
  88. package/dist/calendars/YearCalendar.js.map +1 -0
  89. package/dist/components/Avatar.d.ts +3 -0
  90. package/dist/components/Avatar.js +5 -0
  91. package/dist/components/Avatar.js.map +1 -0
  92. package/dist/components/Badge.d.ts +3 -0
  93. package/dist/components/Badge.js +42 -0
  94. package/dist/components/Badge.js.map +1 -0
  95. package/dist/components/Breadcrumb.d.ts +3 -0
  96. package/dist/components/Breadcrumb.js +5 -0
  97. package/dist/components/Breadcrumb.js.map +1 -0
  98. package/dist/components/Button.d.ts +3 -0
  99. package/dist/components/Button.js +197 -0
  100. package/dist/components/Button.js.map +1 -0
  101. package/dist/components/Loading.d.ts +3 -0
  102. package/dist/components/Loading.js +5 -0
  103. package/dist/components/Loading.js.map +1 -0
  104. package/dist/components/LoadingDots.d.ts +3 -0
  105. package/dist/components/LoadingDots.js +69 -0
  106. package/dist/components/LoadingDots.js.map +1 -0
  107. package/dist/components/Modal.d.ts +3 -0
  108. package/dist/components/Modal.js +5 -0
  109. package/dist/components/Modal.js.map +1 -0
  110. package/dist/components/NavLink.d.ts +3 -0
  111. package/dist/components/NavLink.js +5 -0
  112. package/dist/components/NavLink.js.map +1 -0
  113. package/dist/components/ProgressBar.d.ts +3 -0
  114. package/dist/components/ProgressBar.js +5 -0
  115. package/dist/components/ProgressBar.js.map +1 -0
  116. package/dist/components/RadialProgressBar.d.ts +3 -0
  117. package/dist/components/RadialProgressBar.js +5 -0
  118. package/dist/components/RadialProgressBar.js.map +1 -0
  119. package/dist/components/Table.d.ts +3 -0
  120. package/dist/components/Table.js +5 -0
  121. package/dist/components/Table.js.map +1 -0
  122. package/dist/components/TextInput.d.ts +3 -0
  123. package/dist/components/TextInput.js +111 -0
  124. package/dist/components/TextInput.js.map +1 -0
  125. package/dist/components/Transition.d.ts +3 -0
  126. package/dist/components/Transition.js +5 -0
  127. package/dist/components/Transition.js.map +1 -0
  128. package/dist/forms/DynamicForm.d.ts +3 -0
  129. package/dist/forms/DynamicForm.js +5 -0
  130. package/dist/forms/DynamicForm.js.map +1 -0
  131. package/dist/forms/DynamicFormField.d.ts +3 -0
  132. package/dist/forms/DynamicFormField.js +5 -0
  133. package/dist/forms/DynamicFormField.js.map +1 -0
  134. package/dist/forms/FormFieldWrapper.d.ts +3 -0
  135. package/dist/forms/FormFieldWrapper.js +158 -0
  136. package/dist/forms/FormFieldWrapper.js.map +1 -0
  137. package/dist/id-DafBB_QF.js +20 -0
  138. package/dist/id-DafBB_QF.js.map +1 -0
  139. package/dist/index.js +246 -4609
  140. package/dist/index.js.map +1 -1
  141. package/dist/inputs/CheckboxInput.d.ts +3 -0
  142. package/dist/inputs/CheckboxInput.js +5 -0
  143. package/dist/inputs/CheckboxInput.js.map +1 -0
  144. package/dist/inputs/ComboboxInput.d.ts +3 -0
  145. package/dist/inputs/ComboboxInput.js +5 -0
  146. package/dist/inputs/ComboboxInput.js.map +1 -0
  147. package/dist/inputs/SelectInput.d.ts +3 -0
  148. package/dist/inputs/SelectInput.js +5 -0
  149. package/dist/inputs/SelectInput.js.map +1 -0
  150. package/dist/inputs/SwitchInput.d.ts +3 -0
  151. package/dist/inputs/SwitchInput.js +5 -0
  152. package/dist/inputs/SwitchInput.js.map +1 -0
  153. package/dist/inputs/TagifyInput.d.ts +3 -0
  154. package/dist/inputs/TagifyInput.js +5 -0
  155. package/dist/inputs/TagifyInput.js.map +1 -0
  156. package/dist/inputs/TextAreaInput.d.ts +3 -0
  157. package/dist/inputs/TextAreaInput.js +5 -0
  158. package/dist/inputs/TextAreaInput.js.map +1 -0
  159. package/dist/layouts/DashboardLayout.d.ts +3 -0
  160. package/dist/layouts/DashboardLayout.js +5 -0
  161. package/dist/layouts/DashboardLayout.js.map +1 -0
  162. package/dist/layouts/DefaultLayout.d.ts +3 -0
  163. package/dist/layouts/DefaultLayout.js +5 -0
  164. package/dist/layouts/DefaultLayout.js.map +1 -0
  165. package/dist/layouts/HeaderLayout.d.ts +3 -0
  166. package/dist/layouts/HeaderLayout.js +5 -0
  167. package/dist/layouts/HeaderLayout.js.map +1 -0
  168. package/dist/layouts/NavigationGroup.d.ts +3 -0
  169. package/dist/layouts/NavigationGroup.js +5 -0
  170. package/dist/layouts/NavigationGroup.js.map +1 -0
  171. package/dist/layouts/NavigationItem.d.ts +3 -0
  172. package/dist/layouts/NavigationItem.js +5 -0
  173. package/dist/layouts/NavigationItem.js.map +1 -0
  174. package/dist/layouts/SidebarLayout.d.ts +3 -0
  175. package/dist/layouts/SidebarLayout.js +5 -0
  176. package/dist/layouts/SidebarLayout.js.map +1 -0
  177. package/dist/src/components/UiLoadingDots.d.ts +1 -1
  178. package/dist/src/components/UiNavLink.d.ts +1 -1
  179. package/dist/src/components/inputs/ComboboxInput.d.ts +2 -2
  180. package/dist/src/components/inputs/SelectInput.d.ts +2 -2
  181. package/dist/src/components/layouts/DefaultLayout.d.ts +1 -1
  182. package/package.json +2 -3
  183. package/dist/CheckboxInput-rWkcde69.js +0 -5
  184. package/dist/CheckboxInput-rWkcde69.js.map +0 -1
  185. package/dist/ComboboxInput-B98P_8CZ.js +0 -5
  186. package/dist/ComboboxInput-B98P_8CZ.js.map +0 -1
  187. package/dist/SelectInput-B5liNv7H.js +0 -5
  188. package/dist/SelectInput-B5liNv7H.js.map +0 -1
  189. package/dist/SwitchInput-D1k9O8gn.js +0 -5
  190. package/dist/SwitchInput-D1k9O8gn.js.map +0 -1
  191. package/dist/TextAreaInput-Di6Kstic.js +0 -5
  192. package/dist/TextAreaInput-Di6Kstic.js.map +0 -1
  193. package/dist/UiLoading-BuzCrLqO.js +0 -5
  194. package/dist/UiLoading-BuzCrLqO.js.map +0 -1
  195. package/dist/index.umd.cjs +0 -11
  196. package/dist/index.umd.cjs.map +0 -1
@@ -0,0 +1,186 @@
1
+ import { defineComponent as h, ref as b, createElementBlock as d, openBlock as f, createVNode as o, createElementVNode as s, unref as a, withCtx as i, renderSlot as t, normalizeClass as p, createCommentVNode as m } from "vue";
2
+ import { TransitionRoot as v, Dialog as y, TransitionChild as c, DialogPanel as _ } from "@headlessui/vue";
3
+ import { XMarkIcon as w, Bars3Icon as k } from "@heroicons/vue/24/outline";
4
+ const $ = { class: "sl-min-h-screen sl-bg-gray-50" }, C = { class: "sl-fixed sl-inset-0 sl-flex" }, S = { class: "sl-absolute sl-left-full sl-top-0 sl-flex sl-w-16 sl-justify-center sl-pt-5" }, z = { class: "sl-flex sl-grow sl-flex-col sl-gap-y-5 sl-bg-stachelock-600 sl-px-6 sl-pb-2 sl-ring-1 sl-ring-white/10" }, B = { class: "sl-flex sl-h-16 sl-shrink-0 sl-items-center" }, W = { class: "sl-flex sl-flex-1 sl-flex-col" }, D = {
5
+ role: "list",
6
+ class: "-sl-mx-2 sl-flex-1 sl-space-y-1"
7
+ }, L = { class: "sl-mt-auto" }, N = { class: "sl-flex sl-h-16 sl-shrink-0 sl-items-center sl-px-6" }, V = { class: "sl-mt-8 sl-flex sl-flex-col sl-justify-between sl-h-full" }, j = { class: "sl-absolute sl-bottom-4 sl-left-0 sl-right-0 sl-px-6" }, E = { class: "sl-sticky sl-top-0 sl-z-40 sl-flex sl-h-16 sl-shrink-0 sl-items-center sl-gap-x-4 sl-border-b sl-border-gray-200 sl-bg-white sl-px-4 sl-shadow-sm sm:sl-gap-x-6 sm:sl-px-6 lg:sl-px-8" }, I = { class: "sl-flex sl-flex-1 sl-gap-x-4 sm:sl-self-stretch lg:sl-gap-x-6" }, O = { class: "sl-relative sl-flex sl-flex-1" }, T = { class: "sl-flex sl-items-center sl-gap-x-4 lg:sl-gap-x-6" }, M = {
8
+ key: 0,
9
+ class: "sl-border-b sl-border-gray-200 sl-bg-white sl-px-4 sl-py-6 sm:sl-px-6 lg:sl-px-8"
10
+ }, P = { class: "sl-px-4 sm:sl-px-6 lg:sl-px-8 sl-py-6" }, R = {
11
+ key: 1,
12
+ class: "sl-border-t sl-border-gray-200 sl-bg-white sl-px-4 sl-py-6 sm:sl-px-6 lg:sl-px-8"
13
+ }, G = /* @__PURE__ */ h({
14
+ __name: "DashboardLayout",
15
+ props: {
16
+ isWideSidebar: {
17
+ type: Boolean,
18
+ default: !1
19
+ }
20
+ },
21
+ emits: ["sidebar-toggle"],
22
+ setup(n, { emit: X }) {
23
+ const r = b(!1), g = () => {
24
+ r.value = !1;
25
+ }, x = () => {
26
+ r.value = !0;
27
+ };
28
+ return (e, l) => (f(), d("div", $, [
29
+ o(a(v), {
30
+ as: "template",
31
+ show: r.value
32
+ }, {
33
+ default: i(() => [
34
+ o(a(y), {
35
+ as: "div",
36
+ class: "sl-relative sl-z-50 lg:sl-hidden",
37
+ onClose: g
38
+ }, {
39
+ default: i(() => [
40
+ o(a(c), {
41
+ as: "template",
42
+ enter: "sl-transition-opacity sl-ease-linear sl-duration-300",
43
+ "enter-from": "sl-opacity-0",
44
+ "enter-to": "sl-opacity-100",
45
+ leave: "sl-transition-opacity sl-ease-linear sl-duration-300",
46
+ "leave-from": "sl-opacity-100",
47
+ "leave-to": "sl-opacity-0"
48
+ }, {
49
+ default: i(() => l[2] || (l[2] = [
50
+ s("div", { class: "sl-fixed sl-inset-0 sl-bg-gray-900/80" }, null, -1)
51
+ ])),
52
+ _: 1,
53
+ __: [2]
54
+ }),
55
+ s("div", C, [
56
+ o(a(c), {
57
+ as: "template",
58
+ enter: "sl-transition sl-ease-in-out sl-duration-300 sl-transform",
59
+ "enter-from": "-sl-translate-x-full",
60
+ "enter-to": "sl-translate-x-0",
61
+ leave: "sl-transition sl-ease-in-out sl-duration-300 sl-transform",
62
+ "leave-from": "sl-translate-x-0",
63
+ "leave-to": "-sl-translate-x-full"
64
+ }, {
65
+ default: i(() => [
66
+ o(a(_), { class: "sl-relative sl-mr-16 sl-flex sl-w-full sl-max-w-xs sl-flex-1" }, {
67
+ default: i(() => [
68
+ o(a(c), {
69
+ as: "template",
70
+ enter: "sl-ease-in-out sl-duration-300",
71
+ "enter-from": "sl-opacity-0",
72
+ "enter-to": "sl-opacity-100",
73
+ leave: "sl-ease-in-out sl-duration-300",
74
+ "leave-from": "sl-opacity-100",
75
+ "leave-to": "sl-opacity-0"
76
+ }, {
77
+ default: i(() => [
78
+ s("div", S, [
79
+ s("button", {
80
+ type: "button",
81
+ class: "-sl-m-2.5 sl-p-2.5",
82
+ onClick: l[0] || (l[0] = (u) => g())
83
+ }, [
84
+ l[3] || (l[3] = s("span", { class: "sl-sr-only" }, "Close sidebar", -1)),
85
+ o(a(w), {
86
+ class: "sl-h-6 sl-w-6 sl-text-stachelock-050",
87
+ "aria-hidden": "true"
88
+ })
89
+ ])
90
+ ])
91
+ ]),
92
+ _: 1
93
+ }),
94
+ s("div", z, [
95
+ s("div", B, [
96
+ t(e.$slots, "logo", {}, () => [
97
+ l[4] || (l[4] = s("div", { class: "sl-text-stachelock-050 sl-font-semibold sl-text-lg" }, "Logo", -1))
98
+ ])
99
+ ]),
100
+ s("nav", W, [
101
+ s("ul", D, [
102
+ t(e.$slots, "navigation")
103
+ ])
104
+ ]),
105
+ s("div", L, [
106
+ t(e.$slots, "sidebar-footer")
107
+ ])
108
+ ])
109
+ ]),
110
+ _: 3
111
+ })
112
+ ]),
113
+ _: 3
114
+ })
115
+ ])
116
+ ]),
117
+ _: 3
118
+ })
119
+ ]),
120
+ _: 3
121
+ }, 8, ["show"]),
122
+ s("div", {
123
+ class: p(["sl-hidden lg:sl-fixed lg:sl-inset-y-0 lg:sl-left-0 lg:sl-z-50 lg:sl-block lg:sl-pb-4 sl-pt-4 lg:sl-bg-stachelock-600", n.isWideSidebar ? "lg:sl-w-72" : "lg:sl-w-20"])
124
+ }, [
125
+ s("div", N, [
126
+ t(e.$slots, "logo", {}, () => [
127
+ l[5] || (l[5] = s("div", { class: "sl-text-stachelock-050 sl-font-semibold sl-text-lg" }, "Logo", -1))
128
+ ])
129
+ ]),
130
+ s("nav", V, [
131
+ s("ul", {
132
+ role: "list",
133
+ class: p(n.isWideSidebar ? "sl-flex sl-flex-col sl-items-start sl-mx-4 sl-space-y-1" : "sl-flex sl-flex-col sl-items-center sl-space-y-1")
134
+ }, [
135
+ t(e.$slots, "navigation")
136
+ ], 2),
137
+ s("div", j, [
138
+ t(e.$slots, "sidebar-footer")
139
+ ])
140
+ ])
141
+ ], 2),
142
+ s("div", {
143
+ class: p(["lg:sl-pl-20", n.isWideSidebar ? "lg:sl-pl-72" : "lg:sl-pl-20"])
144
+ }, [
145
+ s("div", E, [
146
+ s("button", {
147
+ type: "button",
148
+ class: "-sl-m-2.5 sl-p-2.5 sl-text-gray-700 lg:sl-hidden",
149
+ onClick: l[1] || (l[1] = (u) => x())
150
+ }, [
151
+ l[6] || (l[6] = s("span", { class: "sl-sr-only" }, "Open sidebar", -1)),
152
+ o(a(k), {
153
+ class: "sl-h-6 sl-w-6",
154
+ "aria-hidden": "true"
155
+ })
156
+ ]),
157
+ l[7] || (l[7] = s("div", {
158
+ class: "sl-h-6 sl-w-px sl-bg-gray-900/10 lg:sl-hidden",
159
+ "aria-hidden": "true"
160
+ }, null, -1)),
161
+ s("div", I, [
162
+ s("div", O, [
163
+ t(e.$slots, "header-content")
164
+ ]),
165
+ s("div", T, [
166
+ t(e.$slots, "header-right")
167
+ ])
168
+ ])
169
+ ]),
170
+ e.$slots["page-header"] ? (f(), d("div", M, [
171
+ t(e.$slots, "page-header")
172
+ ])) : m("", !0),
173
+ s("main", P, [
174
+ t(e.$slots, "main")
175
+ ]),
176
+ e.$slots.footer ? (f(), d("footer", R, [
177
+ t(e.$slots, "footer")
178
+ ])) : m("", !0)
179
+ ], 2)
180
+ ]));
181
+ }
182
+ });
183
+ export {
184
+ G as _
185
+ };
186
+ //# sourceMappingURL=DashboardLayout.vue_vue_type_script_setup_true_lang-CClxYrOW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardLayout.vue_vue_type_script_setup_true_lang-CClxYrOW.js","sources":["../src/components/layouts/DashboardLayout.vue"],"sourcesContent":["<template>\n <div class=\"sl-min-h-screen sl-bg-gray-50\">\n <!-- Mobile sidebar overlay -->\n <TransitionRoot as=\"template\" :show=\"sidebarOpen\">\n <Dialog as=\"div\" class=\"sl-relative sl-z-50 lg:sl-hidden\" @close=\"closeSidebar\">\n <TransitionChild as=\"template\" enter=\"sl-transition-opacity sl-ease-linear sl-duration-300\" enter-from=\"sl-opacity-0\"\n enter-to=\"sl-opacity-100\" leave=\"sl-transition-opacity sl-ease-linear sl-duration-300\" leave-from=\"sl-opacity-100\"\n leave-to=\"sl-opacity-0\">\n <div class=\"sl-fixed sl-inset-0 sl-bg-gray-900/80\" />\n </TransitionChild>\n\n <div class=\"sl-fixed sl-inset-0 sl-flex\">\n <TransitionChild as=\"template\" enter=\"sl-transition sl-ease-in-out sl-duration-300 sl-transform\"\n enter-from=\"-sl-translate-x-full\" enter-to=\"sl-translate-x-0\"\n leave=\"sl-transition sl-ease-in-out sl-duration-300 sl-transform\" leave-from=\"sl-translate-x-0\"\n leave-to=\"-sl-translate-x-full\">\n <DialogPanel class=\"sl-relative sl-mr-16 sl-flex sl-w-full sl-max-w-xs sl-flex-1\">\n <TransitionChild as=\"template\" enter=\"sl-ease-in-out sl-duration-300\" enter-from=\"sl-opacity-0\"\n enter-to=\"sl-opacity-100\" leave=\"sl-ease-in-out sl-duration-300\" leave-from=\"sl-opacity-100\" leave-to=\"sl-opacity-0\">\n <div class=\"sl-absolute sl-left-full sl-top-0 sl-flex sl-w-16 sl-justify-center sl-pt-5\">\n <button type=\"button\" class=\"-sl-m-2.5 sl-p-2.5\" @click=\"closeSidebar()\">\n <span class=\"sl-sr-only\">Close sidebar</span>\n <XMarkIcon class=\"sl-h-6 sl-w-6 sl-text-stachelock-050\" aria-hidden=\"true\" />\n </button>\n </div>\n </TransitionChild>\n\n <div class=\"sl-flex sl-grow sl-flex-col sl-gap-y-5 sl-bg-stachelock-600 sl-px-6 sl-pb-2 sl-ring-1 sl-ring-white/10\">\n <div class=\"sl-flex sl-h-16 sl-shrink-0 sl-items-center\">\n <slot name=\"logo\">\n <div class=\"sl-text-stachelock-050 sl-font-semibold sl-text-lg\">Logo</div>\n </slot>\n </div>\n <nav class=\"sl-flex sl-flex-1 sl-flex-col\">\n <ul role=\"list\" class=\"-sl-mx-2 sl-flex-1 sl-space-y-1\">\n <slot name=\"navigation\">\n <!-- Default navigation slot -->\n </slot>\n </ul>\n </nav>\n <div class=\"sl-mt-auto\">\n <slot name=\"sidebar-footer\">\n <!-- Sidebar footer content -->\n </slot>\n </div>\n </div>\n </DialogPanel>\n </TransitionChild>\n </div>\n </Dialog>\n </TransitionRoot>\n\n <!-- Desktop sidebar -->\n <div class=\"sl-hidden lg:sl-fixed lg:sl-inset-y-0 lg:sl-left-0 lg:sl-z-50 lg:sl-block lg:sl-pb-4 sl-pt-4 lg:sl-bg-stachelock-600\"\n :class=\"isWideSidebar ? 'lg:sl-w-72' : 'lg:sl-w-20'\">\n <div class=\"sl-flex sl-h-16 sl-shrink-0 sl-items-center sl-px-6\">\n <slot name=\"logo\">\n <div class=\"sl-text-stachelock-050 sl-font-semibold sl-text-lg\">Logo</div>\n </slot>\n </div>\n <nav class=\"sl-mt-8 sl-flex sl-flex-col sl-justify-between sl-h-full\">\n <ul role=\"list\" :class=\"isWideSidebar ? 'sl-flex sl-flex-col sl-items-start sl-mx-4 sl-space-y-1' : 'sl-flex sl-flex-col sl-items-center sl-space-y-1'\">\n <slot name=\"navigation\">\n <!-- Default navigation slot -->\n </slot>\n </ul>\n <div class=\"sl-absolute sl-bottom-4 sl-left-0 sl-right-0 sl-px-6\">\n <slot name=\"sidebar-footer\">\n <!-- Sidebar footer content -->\n </slot>\n </div>\n </nav>\n </div>\n\n <!-- Main content area -->\n <div :class=\"['lg:sl-pl-20', isWideSidebar ? 'lg:sl-pl-72' : 'lg:sl-pl-20']\">\n <!-- Header -->\n <div class=\"sl-sticky sl-top-0 sl-z-40 sl-flex sl-h-16 sl-shrink-0 sl-items-center sl-gap-x-4 sl-border-b sl-border-gray-200 sl-bg-white sl-px-4 sl-shadow-sm sm:sl-gap-x-6 sm:sl-px-6 lg:sl-px-8\">\n <button type=\"button\" class=\"-sl-m-2.5 sl-p-2.5 sl-text-gray-700 lg:sl-hidden\" @click=\"openSidebar()\">\n <span class=\"sl-sr-only\">Open sidebar</span>\n <Bars3Icon class=\"sl-h-6 sl-w-6\" aria-hidden=\"true\" />\n </button>\n\n <!-- Separator -->\n <div class=\"sl-h-6 sl-w-px sl-bg-gray-900/10 lg:sl-hidden\" aria-hidden=\"true\" />\n\n <div class=\"sl-flex sl-flex-1 sl-gap-x-4 sm:sl-self-stretch lg:sl-gap-x-6\">\n <div class=\"sl-relative sl-flex sl-flex-1\">\n <slot name=\"header-content\">\n <!-- Header content -->\n </slot>\n </div>\n <div class=\"sl-flex sl-items-center sl-gap-x-4 lg:sl-gap-x-6\">\n <slot name=\"header-right\">\n <!-- Header right content (notifications, profile, etc.) -->\n </slot>\n </div>\n </div>\n </div>\n\n <!-- Page header -->\n <div v-if=\"$slots['page-header']\" class=\"sl-border-b sl-border-gray-200 sl-bg-white sl-px-4 sl-py-6 sm:sl-px-6 lg:sl-px-8\">\n <slot name=\"page-header\">\n <!-- Page header content -->\n </slot>\n </div>\n\n <!-- Main content -->\n <main class=\"sl-px-4 sm:sl-px-6 lg:sl-px-8 sl-py-6\">\n <slot name=\"main\">\n <!-- Main content slot -->\n </slot>\n </main>\n\n <!-- Footer -->\n <footer v-if=\"$slots.footer\" class=\"sl-border-t sl-border-gray-200 sl-bg-white sl-px-4 sl-py-6 sm:sl-px-6 lg:sl-px-8\">\n <slot name=\"footer\">\n <!-- Footer content -->\n </slot>\n </footer>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Dialog, DialogPanel, TransitionChild, TransitionRoot } from '@headlessui/vue';\nimport { Bars3Icon, XMarkIcon } from '@heroicons/vue/24/outline';\n\nconst props = defineProps({\n isWideSidebar: {\n type: Boolean,\n default: false\n }\n});\n\nconst emit = defineEmits(['sidebar-toggle']);\n\nconst sidebarOpen = ref(false);\n\nconst closeSidebar = () => {\n sidebarOpen.value = false;\n};\n\nconst openSidebar = () => {\n sidebarOpen.value = true;\n};\n\n\n</script>\n\n<style scoped>\n</style>\n"],"names":["sidebarOpen","ref","closeSidebar","openSidebar","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_unref","TransitionRoot","Dialog","TransitionChild","_cache","_createElementVNode","_hoisted_2","DialogPanel","_hoisted_3","XMarkIcon","_hoisted_4","_hoisted_5","_renderSlot","_ctx","_hoisted_6","_hoisted_7","_hoisted_8","_normalizeClass","__props","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","Bars3Icon","_hoisted_13","_hoisted_14","_hoisted_15","$slots","_hoisted_16","_hoisted_17","_hoisted_18"],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ import { defineComponent as A, ref as d, computed as P, onMounted as D, createElementBlock as n, openBlock as i, Fragment as r, createElementVNode as s, renderList as u, createTextVNode as T, toDisplayString as a, normalizeClass as C, createCommentVNode as E, normalizeStyle as N, unref as m } from "vue";
2
+ import { c as z, a as H, f as S } from "./calendar-905Ofszh.js";
3
+ const $ = { class: "sl-isolate sl-flex sl-flex-auto sl-overflow-hidden sl-bg-white" }, O = { class: "sl-grid sl-grid-cols-7 sl-text-sm sl-leading-6 sl-text-gray-500 xl:sl-hidden" }, V = ["onClick"], j = { class: "sl-flex sl-flex-auto" }, B = { class: "sl-grid sl-flex-auto sl-grid-cols-1 sl-grid-rows-1" }, G = {
4
+ class: "sl-col-start-1 sl-col-end-2 sl-row-start-1 sl-grid sl-divide-y sl-divide-gray-100",
5
+ style: { "grid-template-rows": "repeat(48, minmax(3.5rem, 1fr))" }
6
+ }, F = { class: "sl-relative" }, L = { class: "sl-sticky sl-left-0 sl-z-20 -sl-ml-14 -sl-mt-2.5 sl-w-14 sl-pr-2 sl-text-right sl-text-xs sl-leading-5 sl-text-gray-400" }, R = {
7
+ class: "sl-col-end-2 sl-row-start-1 sl-grid sl-grid-cols-1",
8
+ style: { "grid-template-rows": "1.75rem repeat(288, minmax(0, 1fr)) auto" }
9
+ }, Z = ["onClick"], q = { class: "sl-order-1 sl-font-semibold sl-text-blue-700" }, I = { class: "sl-text-blue-500 group-hover:sl-text-blue-700" }, J = ["datetime"], W = /* @__PURE__ */ A({
10
+ __name: "DayCalendar",
11
+ props: {
12
+ days: {}
13
+ },
14
+ emits: ["selectDay", "select:event"],
15
+ setup(p, { emit: y }) {
16
+ const h = p, f = y, g = d(null), x = d(null), v = d(null), c = d(null), _ = [
17
+ "12AM",
18
+ "1AM",
19
+ "2AM",
20
+ "3AM",
21
+ "4AM",
22
+ "5AM",
23
+ "6AM",
24
+ "7AM",
25
+ "8AM",
26
+ "9AM",
27
+ "10AM",
28
+ "11AM",
29
+ "12PM",
30
+ "1PM",
31
+ "2PM",
32
+ "3PM",
33
+ "4PM",
34
+ "5PM",
35
+ "6PM",
36
+ "7PM",
37
+ "8PM",
38
+ "9PM",
39
+ "10PM",
40
+ "11PM"
41
+ ], M = (t) => c.value === t, b = (t) => {
42
+ c.value = t, f("selectDay", t);
43
+ }, w = (t) => f("select:event", t), k = P(() => c.value ? [c.value] : h.days);
44
+ return D(() => {
45
+ const t = (/* @__PURE__ */ new Date()).getHours() * 60, o = g.value, l = x.value, e = v.value;
46
+ o && l && e && (o.scrollTop = (o.scrollHeight - l.offsetHeight - e.offsetHeight) * t / 1440);
47
+ }), (t, o) => (i(), n(r, null, [
48
+ s("div", $, [
49
+ s("div", {
50
+ ref_key: "container",
51
+ ref: g,
52
+ class: "sl-flex sl-flex-auto sl-flex-col sl-overflow-auto"
53
+ }, [
54
+ s("div", {
55
+ ref_key: "containerNav",
56
+ ref: x,
57
+ class: "sl-sticky sl-top-0 sl-z-10 sl-bg-white sl-text-xs sl-text-gray-500 sl-shadow sl-ring-1 sl-ring-black sl-ring-opacity-5 md:sl-hidden"
58
+ }, [
59
+ s("div", O, [
60
+ (i(!0), n(r, null, u(t.days, (l) => (i(), n("button", {
61
+ key: l.date,
62
+ type: "button",
63
+ class: "sl-flex sl-flex-col sl-items-center sl-pb-3 sl-pt-2",
64
+ onClick: (e) => b(l)
65
+ }, [
66
+ T(a(l.shortDay) + " ", 1),
67
+ s("span", {
68
+ class: C(["sl-mt-1 sl-flex sl-h-8 sl-w-8 sl-items-center sl-justify-center sl-font-semibold sl-text-gray-800", M(l) ? "sl-rounded-full sl-bg-stachelock-600 sl-font-semibold sl-text-white" : ""])
69
+ }, a(l.day), 3)
70
+ ], 8, V))), 128))
71
+ ])
72
+ ], 512),
73
+ s("div", j, [
74
+ o[1] || (o[1] = s("div", { class: "sl-w-14 sl-flex-none sl-bg-white sl-ring-1 sl-ring-gray-100" }, null, -1)),
75
+ s("div", B, [
76
+ s("div", G, [
77
+ s("div", {
78
+ ref_key: "containerOffset",
79
+ ref: v,
80
+ class: "sl-row-end-1 sl-h-7"
81
+ }, null, 512),
82
+ (i(), n(r, null, u(_, (l) => (i(), n(r, { key: l }, [
83
+ s("div", F, [
84
+ s("div", L, a(l), 1)
85
+ ]),
86
+ o[0] || (o[0] = s("div", null, null, -1))
87
+ ], 64))), 64))
88
+ ]),
89
+ s("ol", R, [
90
+ (i(!0), n(r, null, u(k.value, (l) => (i(), n(r, {
91
+ key: l.date
92
+ }, [
93
+ l.events && l.events.length ? (i(!0), n(r, { key: 0 }, u(l.events, (e) => (i(), n("li", {
94
+ key: e.id,
95
+ class: "sl-relative sl-mt-px sl-flex",
96
+ style: N(`grid-row: ${m(z)(e.datetime)} / span ${m(H)(e.startTime?.dateTime, e.endTime?.dateTime)}`)
97
+ }, [
98
+ s("button", {
99
+ onClick: (K) => w(e.id),
100
+ class: "sl-justify-start sl-group sl-absolute sl-inset-1 sl-flex sl-flex-col sl-overflow-y-auto sl-rounded-lg sl-bg-blue-50 sl-p-2 sl-text-xs sl-leading-5 hover:sl-bg-blue-100"
101
+ }, [
102
+ s("p", q, a(e.name), 1),
103
+ s("p", I, [
104
+ s("time", {
105
+ datetime: e.datetime
106
+ }, a(m(S)(e.datetime)) + " " + a(e.startTime?.shortTimeZone), 9, J)
107
+ ])
108
+ ], 8, Z)
109
+ ], 4))), 128)) : E("", !0)
110
+ ], 64))), 128))
111
+ ])
112
+ ])
113
+ ])
114
+ ], 512)
115
+ ]),
116
+ o[2] || (o[2] = s("div", { class: "md:sl-block sl-hidden sl-w-1/2 sl-max-w-md sl-flex-none sl-border-l sl-border-gray-100 sl-px-8 sl-py-10" }, null, -1))
117
+ ], 64));
118
+ }
119
+ });
120
+ export {
121
+ W as _
122
+ };
123
+ //# sourceMappingURL=DayCalendar.vue_vue_type_script_setup_true_lang-xE5bCa3O.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DayCalendar.vue_vue_type_script_setup_true_lang-xE5bCa3O.js","sources":["../src/components/calendars/DayCalendar.vue"],"sourcesContent":["<template>\n <div class=\"sl-isolate sl-flex sl-flex-auto sl-overflow-hidden sl-bg-white\">\n <div ref=\"container\" class=\"sl-flex sl-flex-auto sl-flex-col sl-overflow-auto\">\n <!-- Mobile sticky nav with days -->\n <div ref=\"containerNav\" class=\"sl-sticky sl-top-0 sl-z-10 sl-bg-white sl-text-xs sl-text-gray-500 sl-shadow sl-ring-1 sl-ring-black sl-ring-opacity-5 md:sl-hidden\">\n <div class=\"sl-grid sl-grid-cols-7 sl-text-sm sl-leading-6 sl-text-gray-500 xl:sl-hidden\">\n <button v-for=\"day in days\" :key=\"day.date\" type=\"button\" class=\"sl-flex sl-flex-col sl-items-center sl-pb-3 sl-pt-2\" @click=\"setActiveDay(day)\">\n {{ day.shortDay }}\n <span class=\"sl-mt-1 sl-flex sl-h-8 sl-w-8 sl-items-center sl-justify-center sl-font-semibold sl-text-gray-800\" :class=\"isActiveDay(day) ? 'sl-rounded-full sl-bg-stachelock-600 sl-font-semibold sl-text-white' : ''\">\n {{ day.day }}\n </span>\n </button>\n </div>\n </div>\n\n <div class=\"sl-flex sl-flex-auto\">\n <div class=\"sl-w-14 sl-flex-none sl-bg-white sl-ring-1 sl-ring-gray-100\" />\n <div class=\"sl-grid sl-flex-auto sl-grid-cols-1 sl-grid-rows-1\">\n <!-- Hour grid -->\n <div class=\"sl-col-start-1 sl-col-end-2 sl-row-start-1 sl-grid sl-divide-y sl-divide-gray-100\" style=\"grid-template-rows: repeat(48, minmax(3.5rem, 1fr))\">\n <div ref=\"containerOffset\" class=\"sl-row-end-1 sl-h-7\"></div>\n <template v-for=\"hour in hours\" :key=\"hour\">\n <div class=\"sl-relative\">\n <div class=\"sl-sticky sl-left-0 sl-z-20 -sl-ml-14 -sl-mt-2.5 sl-w-14 sl-pr-2 sl-text-right sl-text-xs sl-leading-5 sl-text-gray-400\">{{ hour }}</div>\n </div>\n <div></div>\n </template>\n </div>\n\n <!-- Events -->\n <ol class=\"sl-col-end-2 sl-row-start-1 sl-grid sl-grid-cols-1\" style=\"grid-template-rows: 1.75rem repeat(288, minmax(0, 1fr)) auto\">\n <template v-for=\"day in filteredDays\" :key=\"day.date\">\n <template v-if=\"day.events && day.events.length\">\n <li v-for=\"event in day.events\" :key=\"event.id\" class=\"sl-relative sl-mt-px sl-flex\" :style=\"`grid-row: ${calculateGridRow(event.datetime)} / span ${calculateGridSpan(event.startTime?.dateTime, event.endTime?.dateTime)}`\">\n <button @click=\"handleSelectEvent(event.id)\" class=\"sl-justify-start sl-group sl-absolute sl-inset-1 sl-flex sl-flex-col sl-overflow-y-auto sl-rounded-lg sl-bg-blue-50 sl-p-2 sl-text-xs sl-leading-5 hover:sl-bg-blue-100\">\n <p class=\"sl-order-1 sl-font-semibold sl-text-blue-700\">{{ event.name }}</p>\n <p class=\"sl-text-blue-500 group-hover:sl-text-blue-700\">\n <time :datetime=\"event.datetime\">{{ formatTime(event.datetime) }} {{ event.startTime?.shortTimeZone }}</time>\n </p>\n </button>\n </li>\n </template>\n </template>\n </ol>\n </div>\n </div>\n </div>\n </div>\n <div class=\"md:sl-block sl-hidden sl-w-1/2 sl-max-w-md sl-flex-none sl-border-l sl-border-gray-100 sl-px-8 sl-py-10\">\n <!-- Placeholder for side panel hook (omitted for library) -->\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, onMounted } from 'vue';\nimport type { CalendarDay } from '@/utils/calendar';\nimport { calculateGridRow, calculateGridSpan, formatTime } from '@/utils/calendar';\n\nconst props = defineProps<{ days: Array<CalendarDay> }>();\nconst emit = defineEmits(['selectDay', 'select:event']);\n\nconst container = ref<HTMLElement | null>(null);\nconst containerNav = ref<HTMLElement | null>(null);\nconst containerOffset = ref<HTMLElement | null>(null);\nconst activeDay = ref<CalendarDay | null>(null);\n\nconst hours = [\n '12AM','1AM','2AM','3AM','4AM','5AM','6AM','7AM','8AM','9AM','10AM','11AM',\n '12PM','1PM','2PM','3PM','4PM','5PM','6PM','7PM','8PM','9PM','10PM','11PM'\n];\n\nconst isActiveDay = (day: CalendarDay) => activeDay.value === day;\nconst setActiveDay = (day: CalendarDay) => { activeDay.value = day; emit('selectDay', day); };\nconst handleSelectEvent = (eventId: string | number) => emit('select:event', eventId);\n\nconst filteredDays = computed(() => activeDay.value ? [activeDay.value] : props.days);\n\nonMounted(() => {\n const currentMinute = new Date().getHours() * 60;\n const containerElement = container.value;\n const containerNavElement = containerNav.value;\n const containerOffsetElement = containerOffset.value;\n if (containerElement && containerNavElement && containerOffsetElement) {\n containerElement.scrollTop = ((containerElement.scrollHeight - containerNavElement.offsetHeight - containerOffsetElement.offsetHeight) * currentMinute) / 1440;\n }\n});\n</script>\n\n<style scoped>\n</style>\n\n\n"],"names":["props","__props","emit","__emit","container","ref","containerNav","containerOffset","activeDay","hours","isActiveDay","day","setActiveDay","handleSelectEvent","eventId","filteredDays","computed","onMounted","currentMinute","containerElement","containerNavElement","containerOffsetElement","_createElementVNode","_hoisted_1","_hoisted_2","_createElementBlock","_Fragment","_renderList","days","$event","_normalizeClass","_toDisplayString","_hoisted_4","_hoisted_5","_hoisted_6","hour","_hoisted_7","_hoisted_8","_hoisted_9","_openBlock","event","_unref","calculateGridRow","calculateGridSpan","_hoisted_11","_hoisted_12","formatTime","_hoisted_13"],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import { defineComponent as m, createElementBlock as t, openBlock as e, createCommentVNode as i, renderSlot as a, createElementVNode as o, normalizeClass as n, toDisplayString as r } from "vue";
2
+ const u = { class: "sl-relative" }, c = {
3
+ key: 0,
4
+ class: "sl-py-16 lg:sl-ml-12 sl-mx-2"
5
+ }, g = { class: "sl-mx-auto sl-max-w-7xl" }, h = { class: "sl-mx-auto sl-max-w-2xl lg:sl-mx-0" }, y = { class: "sl-h-2" }, f = {
6
+ key: 0,
7
+ class: "sl-mt-1"
8
+ }, x = {
9
+ key: 1,
10
+ class: "sl-mx-auto sl-z-50 sl-flex sl-h-16 lg:sl-h-16 sl-border-gray-900/10"
11
+ }, b = { class: "sl-flex sl-h-16 lg:sl-h-16 sl-w-full sl-px-4 sm:sl-px-6 lg:sl-px-8 sl-justify-between" }, v = { class: "sl-flex sl-justify-end sl-items-center sl-ml-auto" }, $ = {
12
+ key: 2,
13
+ class: "lg:sl-mx-12 sl-mx-2 sl-pb-16"
14
+ }, k = {
15
+ key: 5,
16
+ class: "lg:sl-mx-12 sl-mx-2 sl-pb-16"
17
+ }, C = /* @__PURE__ */ m({
18
+ __name: "DefaultLayout",
19
+ props: {
20
+ title: {
21
+ type: String,
22
+ required: !1,
23
+ default: ""
24
+ },
25
+ titleClass: {
26
+ type: String,
27
+ default: "sl-text-4xl sl-font-bold sl-tracking-tight sl-text-gray-800"
28
+ },
29
+ subtitle: {
30
+ type: String,
31
+ required: !1,
32
+ default: ""
33
+ },
34
+ subtitleClass: {
35
+ type: String,
36
+ default: "sl-text-lg sl-leading-8 sl-text-gray-600"
37
+ }
38
+ },
39
+ setup(l) {
40
+ return (s, d) => (e(), t("div", u, [
41
+ l.title ? (e(), t("div", c, [
42
+ o("div", g, [
43
+ o("div", h, [
44
+ o("h1", {
45
+ class: n(l.titleClass)
46
+ }, r(l.title), 3),
47
+ l.subtitle ? (e(), t("p", {
48
+ key: 0,
49
+ class: n([l.subtitleClass, "sl-mt-6"])
50
+ }, r(l.subtitle), 3)) : i("", !0),
51
+ o("div", y, [
52
+ s.$slots.bottomCaption ? (e(), t("div", f, [
53
+ a(s.$slots, "bottomCaption")
54
+ ])) : i("", !0)
55
+ ])
56
+ ])
57
+ ])
58
+ ])) : !l.title && s.$slots.right ? (e(), t("header", x, [
59
+ o("div", b, [
60
+ d[0] || (d[0] = o("div", { class: "sl-hidden lg:sl-flex lg:sl-justify-start lg:sl-items-center" }, null, -1)),
61
+ o("div", v, [
62
+ a(s.$slots, "right")
63
+ ])
64
+ ])
65
+ ])) : i("", !0),
66
+ s.$slots.main ? (e(), t("div", $, [
67
+ a(s.$slots, "main")
68
+ ])) : i("", !0),
69
+ s.$slots.container ? (e(), t("div", {
70
+ key: 3,
71
+ class: n(l.title ? "sl-pb-12" : "sl-my-4 sm:sl-py-12")
72
+ }, [
73
+ a(s.$slots, "container")
74
+ ], 2)) : i("", !0),
75
+ s.$slots.home ? a(s.$slots, "home", { key: 4 }) : i("", !0),
76
+ s.$slots.default ? (e(), t("div", k, [
77
+ a(s.$slots, "default")
78
+ ])) : i("", !0)
79
+ ]));
80
+ }
81
+ });
82
+ export {
83
+ C as _
84
+ };
85
+ //# sourceMappingURL=DefaultLayout.vue_vue_type_script_setup_true_lang-BZAz6aC-.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultLayout.vue_vue_type_script_setup_true_lang-BZAz6aC-.js","sources":["../src/components/layouts/DefaultLayout.vue"],"sourcesContent":["<template>\n <div class=\"sl-relative\">\n <!-- Header with title -->\n <div v-if=\"title\" class=\"sl-py-16 lg:sl-ml-12 sl-mx-2\">\n <div class=\"sl-mx-auto sl-max-w-7xl\">\n <div class=\"sl-mx-auto sl-max-w-2xl lg:sl-mx-0\">\n <h1 :class=\"titleClass\">{{ title }}</h1>\n <p v-if=\"subtitle\" :class=\"subtitleClass\" class=\"sl-mt-6\">{{ subtitle }}</p>\n <div class=\"sl-h-2\">\n <template v-if=\"$slots.bottomCaption\">\n <div class=\"sl-mt-1\">\n <slot name=\"bottomCaption\"></slot>\n </div>\n </template>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Header without title - for right slot only -->\n <header v-else-if=\"!title && $slots.right\" class=\"sl-mx-auto sl-z-50 sl-flex sl-h-16 lg:sl-h-16 sl-border-gray-900/10\">\n <div class=\"sl-flex sl-h-16 lg:sl-h-16 sl-w-full sl-px-4 sm:sl-px-6 lg:sl-px-8 sl-justify-between\">\n <div class=\"sl-hidden lg:sl-flex lg:sl-justify-start lg:sl-items-center\">\n <!-- Empty space to match positioning -->\n </div>\n <div class=\"sl-flex sl-justify-end sl-items-center sl-ml-auto\">\n <slot name=\"right\"></slot>\n </div>\n </div>\n </header>\n\n <!-- Main content slot -->\n <template v-if=\"$slots.main\">\n <div class=\"lg:sl-mx-12 sl-mx-2 sl-pb-16\">\n <slot name=\"main\"></slot>\n </div>\n </template>\n\n <!-- Container slot -->\n <template v-if=\"$slots.container\">\n <div :class=\"!title ? 'sl-my-4 sm:sl-py-12' : 'sl-pb-12'\">\n <slot name=\"container\"></slot>\n </div>\n </template>\n\n <!-- Home slot -->\n <template v-if=\"$slots.home\">\n <slot name=\"home\"></slot>\n </template>\n\n <!-- Default slot -->\n <template v-if=\"$slots.default\">\n <div class=\"lg:sl-mx-12 sl-mx-2 sl-pb-16\">\n <slot></slot>\n </div>\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\ndefineProps({\n title: {\n type: String,\n required: false,\n default: ''\n },\n titleClass: {\n type: String,\n default: 'sl-text-4xl sl-font-bold sl-tracking-tight sl-text-gray-800'\n },\n subtitle: {\n type: String,\n required: false,\n default: ''\n },\n subtitleClass: {\n type: String,\n default: 'sl-text-lg sl-leading-8 sl-text-gray-600'\n }\n});\n</script>\n\n<style scoped>\n</style>\n"],"names":["_openBlock","_createElementBlock","_hoisted_1","__props","_hoisted_2","_createElementVNode","_hoisted_3","_hoisted_4","_normalizeClass","_hoisted_5","$slots","_hoisted_6","_renderSlot","_ctx","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBACEA,EAAA,GAAAC,EAuDM,OAvDNC,GAuDM;AAAA,MArDOC,EAAA,SAAXH,EAAA,GAAAC,EAcM,OAdNG,GAcM;AAAA,QAbJC,EAYM,OAZNC,GAYM;AAAA,UAXJD,EAUM,OAVNE,GAUM;AAAA,YATJF,EAAwC,MAAA;AAAA,cAAnC,SAAOF,EAAA,UAAU;AAAA,YAAA,KAAKA,EAAA,KAAK,GAAA,CAAA;AAAA,YACvBA,EAAA,iBAATF,EAA4E,KAAA;AAAA;cAAxD,OAAKO,EAAA,CAAEL,EAAA,eAAqB,SAAS,CAAA;AAAA,YAAA,KAAIA,EAAA,QAAQ,GAAA,CAAA;YACrEE,EAMM,OANNI,GAMM;AAAA,cALYC,EAAAA,OAAO,iBACrBV,KAAAC,EAEM,OAFNU,GAEM;AAAA,gBADJC,EAAkCC,EAAA,QAAA,eAAA;AAAA,cAAA;;;;aAS1BV,EAAA,SAASO,EAAAA,OAAO,SAApCV,EAAA,GAAAC,EASS,UATTa,GASS;AAAA,QARPT,EAOM,OAPNU,GAOM;AAAA,0BANJV,EAEM,OAAA,EAFD,OAAM,8DAAA,GAA6D,MAAA,EAAA;AAAA,UAGxEA,EAEM,OAFNW,GAEM;AAAA,YADJJ,EAA0BC,EAAA,QAAA,OAAA;AAAA,UAAA;;;MAMhBH,EAAAA,OAAO,QACrBV,KAAAC,EAEM,OAFNgB,GAEM;AAAA,QADJL,EAAyBC,EAAA,QAAA,MAAA;AAAA,MAAA;MAKbH,EAAAA,OAAO,kBACrBT,EAEM,OAAA;AAAA;QAFA,SAAQE,EAAA,QAAK,aAAA,qBAAA;AAAA,MAAA;QACjBS,EAA8BC,EAAA,QAAA,WAAA;AAAA,MAAA;MAKlBH,EAAAA,OAAO,OACrBE,EAAyBC,EAAA,QAAA,QAAA,EAAA,KAAA,EAAA,CAAA;MAIXH,EAAAA,OAAO,WACrBV,KAAAC,EAEM,OAFNiB,GAEM;AAAA,QADJN,EAAaC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;"}
@@ -0,0 +1,201 @@
1
+ import { defineComponent as L, ref as q, reactive as G, watch as v, computed as h, createElementBlock as o, openBlock as l, withModifiers as J, normalizeClass as d, unref as p, createCommentVNode as n, toDisplayString as r, Fragment as V, renderList as k, createElementVNode as i, createBlock as C, createVNode as B, withCtx as F, createTextVNode as _ } from "vue";
2
+ import { useForm as K } from "vee-validate";
3
+ import { ExclamationCircleIcon as P } from "@heroicons/vue/24/outline";
4
+ import S from "./components/Button.js";
5
+ import { _ as Q } from "./DynamicFormField.vue_vue_type_script_setup_true_lang-qAwVNm--.js";
6
+ const W = {
7
+ key: 0,
8
+ class: "sl-mb-6"
9
+ }, X = {
10
+ key: 0,
11
+ class: "sl-text-lg sl-font-semibold sl-text-gray-900 sl-mb-2"
12
+ }, Y = {
13
+ key: 1,
14
+ class: "sl-text-sm sl-text-gray-600"
15
+ }, Z = {
16
+ key: 0,
17
+ class: "sl-mb-4"
18
+ }, ee = {
19
+ key: 0,
20
+ class: "sl-text-md sl-font-medium sl-text-gray-900 sl-mb-1"
21
+ }, te = {
22
+ key: 1,
23
+ class: "sl-text-sm sl-text-gray-600"
24
+ }, se = {
25
+ key: 2,
26
+ class: "sl-mt-4"
27
+ }, ae = { class: "sl-bg-red-50 sl-border sl-border-red-200 sl-rounded-md sl-p-4" }, le = { class: "sl-flex" }, oe = { class: "sl-ml-3" }, ne = { class: "sl-mt-2 sl-text-sm sl-text-red-700" }, ge = /* @__PURE__ */ L({
28
+ __name: "DynamicForm",
29
+ props: {
30
+ schema: {},
31
+ modelValue: {},
32
+ loading: { type: Boolean },
33
+ showActions: { type: Boolean, default: !0 },
34
+ showCancelButton: { type: Boolean, default: !1 },
35
+ submitButtonText: {},
36
+ cancelButtonText: {},
37
+ submitButtonVariant: { default: "primary" },
38
+ actionsAlignment: { default: "right" },
39
+ formError: {}
40
+ },
41
+ emits: ["update:modelValue", "submit", "cancel", "field-change"],
42
+ setup(E, { expose: w, emit: N }) {
43
+ const c = E, u = N, f = q(), a = G({}), { handleSubmit: j, setErrors: x, meta: g } = K({
44
+ keepValuesOnUnmount: !0
45
+ }), b = () => {
46
+ const e = { ...c.modelValue };
47
+ c.schema.sections.forEach((t) => {
48
+ t.fields.forEach((s) => {
49
+ s.name in e || (e[s.name] = s.defaultValue ?? $(s.type));
50
+ });
51
+ }), Object.assign(a, e);
52
+ };
53
+ v(
54
+ () => c.modelValue,
55
+ (e) => {
56
+ e && Object.assign(a, e);
57
+ },
58
+ { deep: !0 }
59
+ ), v(
60
+ a,
61
+ (e) => {
62
+ u("update:modelValue", { ...e });
63
+ },
64
+ { deep: !0 }
65
+ ), b();
66
+ const D = h(() => c.schema.sections.filter(
67
+ (e) => e.condition ? e.condition(a) : !0
68
+ )), A = h(() => {
69
+ const e = ["sl-space-y-6"];
70
+ return c.schema.className && e.push(c.schema.className), e.join(" ");
71
+ }), T = (e) => {
72
+ const t = [
73
+ "sl-grid",
74
+ "sl-gap-4"
75
+ ], s = e.columns || 1;
76
+ return t.push("sl-grid-cols-1"), s > 1 && t.push(`md:sl-grid-cols-${Math.min(s, 3)}`), e.className && t.push(e.className), t.join(" ");
77
+ }, O = (e) => {
78
+ const t = [];
79
+ return e.colSpan && e.colSpan > 1 && t.push(`sl-col-span-${Math.min(e.colSpan, 3)}`), e.className && t.push(e.className), t.join(" ");
80
+ }, M = (e) => e.condition ? e.condition(a, e) : !0, U = h(() => g.value.valid), $ = (e) => {
81
+ switch (e) {
82
+ case "checkbox":
83
+ case "switch":
84
+ return !1;
85
+ case "select":
86
+ return null;
87
+ case "number":
88
+ return 0;
89
+ default:
90
+ return "";
91
+ }
92
+ }, y = j((e) => {
93
+ u("submit", e, { setErrors: x });
94
+ }), z = () => {
95
+ u("cancel");
96
+ }, R = (e, t) => {
97
+ u("field-change", e, t, a), e.onFieldChange && e.onFieldChange(t, e, a);
98
+ };
99
+ return w({
100
+ validate: async () => g.value.valid,
101
+ reset: () => {
102
+ Object.keys(a).forEach((e) => {
103
+ delete a[e];
104
+ }), b();
105
+ },
106
+ setFieldValue: (e, t) => {
107
+ a[e] = t;
108
+ },
109
+ getFieldValue: (e) => a[e],
110
+ formData: a,
111
+ formRef: f
112
+ }), (e, t) => (l(), o("form", {
113
+ ref_key: "formRef",
114
+ ref: f,
115
+ class: d(A.value),
116
+ onSubmit: t[0] || (t[0] = J(
117
+ //@ts-ignore
118
+ (...s) => p(y) && p(y)(...s),
119
+ ["prevent"]
120
+ ))
121
+ }, [
122
+ e.schema.title || e.schema.description ? (l(), o("div", W, [
123
+ e.schema.title ? (l(), o("h2", X, r(e.schema.title), 1)) : n("", !0),
124
+ e.schema.description ? (l(), o("p", Y, r(e.schema.description), 1)) : n("", !0)
125
+ ])) : n("", !0),
126
+ (l(!0), o(V, null, k(D.value, (s, H) => (l(), o("div", {
127
+ key: s.id || H
128
+ }, [
129
+ s.title || s.description ? (l(), o("div", Z, [
130
+ s.title ? (l(), o("h3", ee, r(s.title), 1)) : n("", !0),
131
+ s.description ? (l(), o("p", te, r(s.description), 1)) : n("", !0)
132
+ ])) : n("", !0),
133
+ i("div", {
134
+ class: d(T(s))
135
+ }, [
136
+ (l(!0), o(V, null, k(s.fields, (m) => (l(), o("div", {
137
+ key: m.name,
138
+ class: d(O(m))
139
+ }, [
140
+ M(m) ? (l(), C(Q, {
141
+ key: 0,
142
+ field: m,
143
+ modelValue: a[m.name],
144
+ "onUpdate:modelValue": (I) => a[m.name] = I,
145
+ "form-data": a,
146
+ onFieldChange: R
147
+ }, null, 8, ["field", "modelValue", "onUpdate:modelValue", "form-data"])) : n("", !0)
148
+ ], 2))), 128))
149
+ ], 2)
150
+ ]))), 128)),
151
+ e.showActions ? (l(), o("div", {
152
+ key: 1,
153
+ class: d([
154
+ "sl-flex sl-gap-3",
155
+ e.actionsAlignment === "center" ? "sl-justify-center" : e.actionsAlignment === "right" ? "sl-justify-end" : "sl-justify-start"
156
+ ])
157
+ }, [
158
+ e.showCancelButton ? (l(), C(S, {
159
+ key: 0,
160
+ variant: "outline",
161
+ disabled: e.loading,
162
+ type: "button",
163
+ onClick: z
164
+ }, {
165
+ default: F(() => [
166
+ _(r(e.cancelButtonText || "Cancel"), 1)
167
+ ]),
168
+ _: 1
169
+ }, 8, ["disabled"])) : n("", !0),
170
+ B(S, {
171
+ variant: e.submitButtonVariant,
172
+ loading: e.loading,
173
+ disabled: !U.value || e.loading,
174
+ type: "submit"
175
+ }, {
176
+ default: F(() => [
177
+ _(r(e.submitButtonText || "Submit"), 1)
178
+ ]),
179
+ _: 1
180
+ }, 8, ["variant", "loading", "disabled"])
181
+ ], 2)) : n("", !0),
182
+ e.formError ? (l(), o("div", se, [
183
+ i("div", ae, [
184
+ i("div", le, [
185
+ B(p(P), { class: "sl-h-5 sl-w-5 sl-text-red-400" }),
186
+ i("div", oe, [
187
+ t[1] || (t[1] = i("h3", { class: "sl-text-sm sl-font-medium sl-text-red-800" }, " Form Error ", -1)),
188
+ i("div", ne, [
189
+ i("p", null, r(e.formError), 1)
190
+ ])
191
+ ])
192
+ ])
193
+ ])
194
+ ])) : n("", !0)
195
+ ], 34));
196
+ }
197
+ });
198
+ export {
199
+ ge as _
200
+ };
201
+ //# sourceMappingURL=DynamicForm.vue_vue_type_script_setup_true_lang-BKhcXkNG.js.map