@brumaombra/ui-vintage 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/dist/{AlertDialogTitle.vue_vue_type_script_setup_true_lang-Ca0g2mVz.js → AlertDialogTitle.vue_vue_type_script_setup_true_lang-_UW48pv7.js} +6 -5
  2. package/dist/{BackgroundGrid-Cxvbtefm.js → BackgroundGrid-BJDDcLzF.js} +1 -1
  3. package/dist/{Busy-1BeD2TRH.js → Busy-BaCc_Jo8.js} +2 -1
  4. package/dist/{CalendarPrevButton.vue_vue_type_script_setup_true_lang-BklOxtD-.js → CalendarPrevButton.vue_vue_type_script_setup_true_lang-DdzS6YGM.js} +18 -11
  5. package/dist/Card.vue_vue_type_script_setup_true_lang-D0pFVflK.js +30 -0
  6. package/dist/{Card.vue_vue_type_script_setup_true_lang-6ol3rxy1.js → CardContent.vue_vue_type_script_setup_true_lang-dBzO0q1t.js} +3 -8
  7. package/dist/{CardFooter.vue_vue_type_script_setup_true_lang-B1eS9wge.js → CardFooter.vue_vue_type_script_setup_true_lang-B5EqgrgN.js} +1 -19
  8. package/dist/CardText.vue_vue_type_script_setup_true_lang-DbDhSd3h.js +22 -0
  9. package/dist/{Collection-Coi6nyvb.js → Collection-4P3HQ4uU.js} +1 -1
  10. package/dist/{ConfigProvider-D2O0Jles.js → ConfigProvider-DYO65bNW.js} +1 -1
  11. package/dist/DatePicker.vue_vue_type_script_setup_true_lang-C2Ug81pX.js +88 -0
  12. package/dist/{DialogClose-DDtZ0Em0.js → DialogClose-DxCTEp0d.js} +2 -2
  13. package/dist/{DialogPortal-D81oXsCY.js → DialogPortal-BiMJAKLg.js} +1 -1
  14. package/dist/{DialogTitle-CLuntLBB.js → DialogTitle-jKgSCoXM.js} +10 -6
  15. package/dist/{DialogTitle.vue_vue_type_script_setup_true_lang-BMXrxvBF.js → DialogTitle.vue_vue_type_script_setup_true_lang-CycrzAMT.js} +23 -14
  16. package/dist/{DialogTrigger-CjJ8QNL_.js → DialogTrigger-Cb3rLcid.js} +3 -3
  17. package/dist/EmptyStateCard.vue_vue_type_script_setup_true_lang-BYKX6WRQ.js +59 -0
  18. package/dist/{FocusScope-DYbCtSNc.js → FocusScope-mzbqk6Y_.js} +8 -14
  19. package/dist/HugeiconsIcon.vue-By2RXWWz.js +111 -0
  20. package/dist/{Input.vue_vue_type_script_setup_true_lang-6SfPeT8d.js → Input.vue_vue_type_script_setup_true_lang-BdjbS5s7.js} +1 -1
  21. package/dist/{Label.vue_vue_type_script_setup_true_lang-pMIzCHzV.js → Label.vue_vue_type_script_setup_true_lang-CdLIMAdF.js} +2 -2
  22. package/dist/LandingContent.vue_vue_type_script_setup_true_lang-Wgtl_yeD.js +21 -0
  23. package/dist/LandingFooter.vue_vue_type_script_setup_true_lang-CDy30mYg.js +159 -0
  24. package/dist/LandingNavbar.vue_vue_type_script_setup_true_lang-0jX2tmdb.js +59 -0
  25. package/dist/LandingShell.vue_vue_type_script_setup_true_lang-BXwdQR24.js +49 -0
  26. package/dist/LanguageFlag.vue_vue_type_script_setup_true_lang-CgszKeNv.js +68 -0
  27. package/dist/LoadMoreButton.vue_vue_type_script_setup_true_lang-CGhFcsF-.js +61 -0
  28. package/dist/LoadingStateCard.vue_vue_type_script_setup_true_lang-DwyQjtZ3.js +53 -0
  29. package/dist/MessageToast-uKrMyOZf.js +79 -0
  30. package/dist/{NativeSelectOption.vue_vue_type_script_setup_true_lang-Ce5VmA0n.js → NativeSelectOption.vue_vue_type_script_setup_true_lang-CNcUI9Yh.js} +4 -3
  31. package/dist/{PopoverTrigger.vue_vue_type_script_setup_true_lang-DFZJvU_P.js → PopoverTrigger.vue_vue_type_script_setup_true_lang-Cf33q_yT.js} +11 -8
  32. package/dist/{PopperContent-h-thLTz8.js → PopperContent-DUJ8a4i0.js} +4 -4
  33. package/dist/Presence-CTmUEdMR.js +168 -0
  34. package/dist/Progress.vue_vue_type_script_setup_true_lang-BDJfyW-d.js +188 -0
  35. package/dist/{Separator.vue_vue_type_script_setup_true_lang-CMRkdntA.js → Separator.vue_vue_type_script_setup_true_lang-D9BozdWD.js} +1 -1
  36. package/dist/{SheetTitle.vue_vue_type_script_setup_true_lang-Csr3nKnG.js → SheetTitle.vue_vue_type_script_setup_true_lang-Ja7-gmXd.js} +6 -18
  37. package/dist/{Slider.vue_vue_type_script_setup_true_lang-C_CsSGAt.js → Slider.vue_vue_type_script_setup_true_lang-CSOSwGGr.js} +10 -9
  38. package/dist/{Switch.vue_vue_type_script_setup_true_lang-BG6nkPSO.js → Switch.vue_vue_type_script_setup_true_lang-C8mqOepU.js} +7 -6
  39. package/dist/{Teleport-CV0tKbq5.js → Teleport-DTOwRCqx.js} +7 -185
  40. package/dist/TimePicker.vue_vue_type_script_setup_true_lang-tbOoMfZu.js +51 -0
  41. package/dist/{TooltipTrigger.vue_vue_type_script_setup_true_lang-DEPKysA_.js → TooltipTrigger.vue_vue_type_script_setup_true_lang-BMdZRPa3.js} +9 -6
  42. package/dist/{VisuallyHiddenInput-1G1IEkBL.js → VisuallyHiddenInput-D5eipDQU.js} +1 -1
  43. package/dist/alert-dialog.js +7 -7
  44. package/dist/alert.js +8 -18
  45. package/dist/background-grid.js +1 -1
  46. package/dist/badge.js +9 -36
  47. package/dist/breadcrumb.js +159 -0
  48. package/dist/busy-indicator.js +1 -1
  49. package/dist/busy.js +1 -1
  50. package/dist/button.js +11 -7
  51. package/dist/calendar.js +1 -1
  52. package/dist/card-grid.js +58 -0
  53. package/dist/card.js +9 -6
  54. package/dist/chip.js +47 -0
  55. package/dist/color-tokens-D9BviGPK.js +40 -0
  56. package/dist/command.js +17 -33
  57. package/dist/components/card-grid/CardGrid.vue.d.ts +88 -0
  58. package/dist/components/card-grid/index.d.ts +2 -0
  59. package/dist/components/chip/Chip.vue.d.ts +17 -0
  60. package/dist/components/chip/index.d.ts +2 -0
  61. package/dist/components/confirm-dialog/confirm-dialog-state.d.ts +11 -8
  62. package/dist/components/dashboard-shell/DashboardShell.vue.d.ts +12 -2
  63. package/dist/components/data-list/DataList.vue.d.ts +21 -0
  64. package/dist/components/data-list/DataListItem.vue.d.ts +21 -0
  65. package/dist/components/data-list/DataListLabel.vue.d.ts +21 -0
  66. package/dist/components/data-list/DataListText.vue.d.ts +21 -0
  67. package/dist/components/data-list/DataListValue.vue.d.ts +21 -0
  68. package/dist/components/data-list/index.d.ts +5 -0
  69. package/dist/components/empty-state-card/EmptyStateCard.vue.d.ts +73 -0
  70. package/dist/components/empty-state-card/index.d.ts +2 -0
  71. package/dist/components/info-card/InfoCard.vue.d.ts +46 -0
  72. package/dist/components/info-card/index.d.ts +2 -0
  73. package/dist/components/landing/index.d.ts +6 -0
  74. package/dist/components/landing/landing-content/LandingContent.vue.d.ts +21 -0
  75. package/dist/components/landing/landing-content/index.d.ts +2 -0
  76. package/dist/components/landing/landing-footer/LandingFooter.vue.d.ts +39 -0
  77. package/dist/components/landing/landing-footer/index.d.ts +3 -0
  78. package/dist/components/landing/landing-navbar/LandingNavbar.vue.d.ts +32 -0
  79. package/dist/components/landing/landing-navbar/index.d.ts +2 -0
  80. package/dist/components/landing/landing-shell/LandingShell.vue.d.ts +31 -0
  81. package/dist/components/landing/landing-shell/index.d.ts +2 -0
  82. package/dist/components/language-flag/LanguageFlag.vue.d.ts +14 -0
  83. package/dist/components/language-flag/flags/EnglishFlag.vue.d.ts +2 -0
  84. package/dist/components/language-flag/flags/ItalianFlag.vue.d.ts +2 -0
  85. package/dist/components/language-flag/index.d.ts +4 -0
  86. package/dist/components/language-selector/LanguageSelector.vue.d.ts +35 -0
  87. package/dist/components/language-selector/index.d.ts +3 -0
  88. package/dist/components/load-more-button/LoadMoreButton.vue.d.ts +36 -0
  89. package/dist/components/load-more-button/index.d.ts +2 -0
  90. package/dist/components/loading-state-card/LoadingStateCard.vue.d.ts +55 -0
  91. package/dist/components/loading-state-card/index.d.ts +2 -0
  92. package/dist/components/message-dialog/message-dialog-state.d.ts +9 -7
  93. package/dist/components/message-toast/MessageToast.vue.d.ts +2 -0
  94. package/dist/components/message-toast/index.d.ts +2 -0
  95. package/dist/components/message-toast/message-toast-state.d.ts +18 -0
  96. package/dist/components/page-header/PageHeader.vue.d.ts +48 -0
  97. package/dist/components/page-header/index.d.ts +2 -0
  98. package/dist/components/progress-component/ProgressComponent.vue.d.ts +47 -0
  99. package/dist/components/progress-component/index.d.ts +2 -0
  100. package/dist/components/single-value-card/SingleValueCard.vue.d.ts +40 -0
  101. package/dist/components/single-value-card/index.d.ts +2 -0
  102. package/dist/components/slider-form-component/SliderFormComponent.vue.d.ts +2 -2
  103. package/dist/components/text-link/TextLink.vue.d.ts +35 -0
  104. package/dist/components/text-link/index.d.ts +2 -0
  105. package/dist/components/theme-selector/ThemeSelector.vue.d.ts +2 -0
  106. package/dist/components/theme-selector/index.d.ts +2 -0
  107. package/dist/components/ui/alert/Alert.vue.d.ts +2 -2
  108. package/dist/components/ui/alert/index.d.ts +6 -5
  109. package/dist/components/ui/badge/Badge.vue.d.ts +7 -20
  110. package/dist/components/ui/badge/index.d.ts +0 -5
  111. package/dist/components/ui/breadcrumb/Breadcrumb.vue.d.ts +21 -0
  112. package/dist/components/ui/breadcrumb/BreadcrumbEllipsis.vue.d.ts +21 -0
  113. package/dist/components/ui/breadcrumb/BreadcrumbItem.vue.d.ts +21 -0
  114. package/dist/components/ui/breadcrumb/BreadcrumbLink.vue.d.ts +24 -0
  115. package/dist/components/ui/breadcrumb/BreadcrumbList.vue.d.ts +21 -0
  116. package/dist/components/ui/breadcrumb/BreadcrumbPage.vue.d.ts +21 -0
  117. package/dist/components/ui/breadcrumb/BreadcrumbSeparator.vue.d.ts +21 -0
  118. package/dist/components/ui/breadcrumb/index.d.ts +7 -0
  119. package/dist/components/ui/button/index.d.ts +6 -6
  120. package/dist/components/ui/card/Card.vue.d.ts +3 -0
  121. package/dist/components/ui/card/CardText.vue.d.ts +21 -0
  122. package/dist/components/ui/card/index.d.ts +1 -0
  123. package/dist/components/ui/date-picker/DatePicker.vue.d.ts +2 -0
  124. package/dist/components/ui/date-time-picker/DateTimePicker.vue.d.ts +27 -0
  125. package/dist/components/ui/date-time-picker/index.d.ts +2 -0
  126. package/dist/components/ui/dialog/DialogFooter.vue.d.ts +1 -4
  127. package/dist/components/ui/dialog/DialogScrollContent.vue.d.ts +4 -1
  128. package/dist/components/ui/field/index.d.ts +4 -4
  129. package/dist/components/ui/progress/Progress.vue.d.ts +9 -0
  130. package/dist/components/ui/progress/index.d.ts +1 -0
  131. package/dist/components/ui/scroll-area/ScrollArea.vue.d.ts +22 -0
  132. package/dist/components/ui/scroll-area/ScrollBar.vue.d.ts +9 -0
  133. package/dist/components/ui/scroll-area/index.d.ts +2 -0
  134. package/dist/components/ui/select/SelectItemContent.vue.d.ts +15 -0
  135. package/dist/components/ui/select/SelectValueContent.vue.d.ts +16 -0
  136. package/dist/components/ui/select/index.d.ts +2 -0
  137. package/dist/components/ui/sidebar/index.d.ts +4 -4
  138. package/dist/components/ui/table/Table.vue.d.ts +21 -0
  139. package/dist/components/ui/table/TableBody.vue.d.ts +21 -0
  140. package/dist/components/ui/table/TableCaption.vue.d.ts +21 -0
  141. package/dist/components/ui/table/TableCell.vue.d.ts +21 -0
  142. package/dist/components/ui/table/TableEmpty.vue.d.ts +24 -0
  143. package/dist/components/ui/table/TableFooter.vue.d.ts +21 -0
  144. package/dist/components/ui/table/TableHead.vue.d.ts +21 -0
  145. package/dist/components/ui/table/TableHeader.vue.d.ts +21 -0
  146. package/dist/components/ui/table/TableRow.vue.d.ts +21 -0
  147. package/dist/components/ui/table/index.d.ts +9 -0
  148. package/dist/components/ui/tabs/Tabs.vue.d.ts +28 -0
  149. package/dist/components/ui/tabs/TabsContent.vue.d.ts +22 -0
  150. package/dist/components/ui/tabs/TabsList.vue.d.ts +22 -0
  151. package/dist/components/ui/tabs/TabsTrigger.vue.d.ts +22 -0
  152. package/dist/components/ui/tabs/index.d.ts +4 -0
  153. package/dist/components/ui/textarea/Textarea.vue.d.ts +12 -0
  154. package/dist/components/ui/textarea/index.d.ts +1 -0
  155. package/dist/components/ui/time-picker/TimePicker.vue.d.ts +21 -0
  156. package/dist/components/ui/time-picker/index.d.ts +2 -0
  157. package/dist/confirm-dialog.js +15 -11
  158. package/dist/createContext-BabAT1K8.js +19 -0
  159. package/dist/dashboard-shell.js +89 -39
  160. package/dist/data-list.js +97 -0
  161. package/dist/date-picker.js +3 -82
  162. package/dist/date-time-picker.js +140 -0
  163. package/dist/dialog.js +32 -37
  164. package/dist/empty-state-card.js +5 -0
  165. package/dist/error-page.js +9 -7
  166. package/dist/field.js +2 -2
  167. package/dist/getActiveElement-Bmy6QsUb.js +9 -0
  168. package/dist/i18n/en.json.d.ts +57 -0
  169. package/dist/i18n/it.json.d.ts +57 -0
  170. package/dist/i18n.js +148 -0
  171. package/dist/{index-qGMU40e1.js → index-DDJjWaIl.js} +64 -0
  172. package/dist/{index-Cq9Ekgtb.js → index-Dw56kNV0.js} +10 -10
  173. package/dist/index.min-CZ9FIOXr.js +23 -0
  174. package/dist/info-card.js +65 -0
  175. package/dist/input.js +1 -1
  176. package/dist/label.js +1 -1
  177. package/dist/landing-content.js +5 -0
  178. package/dist/landing-footer.js +5 -0
  179. package/dist/landing-navbar.js +5 -0
  180. package/dist/landing-shell.js +5 -0
  181. package/dist/landing.js +11 -0
  182. package/dist/language-flag.js +7 -0
  183. package/dist/language-selector.js +123 -0
  184. package/dist/lib/color-tokens.d.ts +6 -0
  185. package/dist/lib/i18n.d.ts +222 -0
  186. package/dist/load-more-button.js +5 -0
  187. package/dist/loading-state-card.js +5 -0
  188. package/dist/message-dialog.js +34 -18
  189. package/dist/message-toast.js +103 -0
  190. package/dist/native-select.js +1 -1
  191. package/dist/nullish-D3tMkl6i.js +6 -0
  192. package/dist/page-header.js +57 -0
  193. package/dist/popover.js +4 -4
  194. package/dist/progress-component.js +51 -0
  195. package/dist/progress.js +4 -0
  196. package/dist/scroll-area.js +1080 -0
  197. package/dist/select.js +149 -53
  198. package/dist/separator.js +1 -1
  199. package/dist/sheet.js +3 -3
  200. package/dist/sidebar.js +10 -9
  201. package/dist/single-value-card.js +64 -0
  202. package/dist/slider-form-component.js +2 -2
  203. package/dist/slider.js +1 -1
  204. package/dist/style.css +1012 -175
  205. package/dist/switch-form-component.js +2 -2
  206. package/dist/switch.js +1 -1
  207. package/dist/table.js +193 -0
  208. package/dist/tabs.js +658 -0
  209. package/dist/text-link.js +39 -0
  210. package/dist/textarea.js +37 -0
  211. package/dist/theme-selector.js +159 -0
  212. package/dist/time-picker.js +5 -0
  213. package/dist/tooltip.js +2 -2
  214. package/dist/{useDirection-SIyEYNxv.js → useDirection-B2bMgzzV.js} +1 -1
  215. package/dist/{useFocusGuards-WYWvpJy2.js → useFocusGuards-2C1jyYW5.js} +1 -1
  216. package/dist/{useFormControl-CyoJwp9r.js → useFormControl-DZ4LnB9F.js} +1 -1
  217. package/dist/{useForwardExpose-BiRQH8eO.js → useForwardExpose-BcX3VRdS.js} +1 -1
  218. package/dist/{useForwardPropsEmits-DmumnZO5.js → useForwardPropsEmits-GlUGKcIz.js} +1 -17
  219. package/dist/useId-CF6wz41D.js +16 -0
  220. package/dist/useNonce-CWj1JlPB.js +12 -0
  221. package/dist/{usePrimitiveElement-Bk3ZOslv.js → usePrimitiveElement-BCpwlakH.js} +1 -1
  222. package/dist/{useSize-BLYTFgnQ.js → useSize-DUgGY9t1.js} +1 -1
  223. package/dist/{useTypeahead-KTl4-oeq.js → useTypeahead-4RK0Emcv.js} +2 -2
  224. package/dist/{utils-BXBXPGDA.js → utils-DbR1EZn-.js} +1 -1
  225. package/dist/utils-hdwtyAF3.js +44 -0
  226. package/package.json +119 -2
  227. package/dist/HugeiconsIcon.vue-BJ-_Wtmk.js +0 -124
@@ -0,0 +1,111 @@
1
+ import { defineComponent, computed, openBlock, createElementBlock, mergeProps, Fragment, renderList, createBlock, resolveDynamicComponent } from "vue";
2
+ var _sfc_main = defineComponent({
3
+ name: "HugeiconsIcon",
4
+ inheritAttrs: false,
5
+ props: {
6
+ icon: {
7
+ type: Array,
8
+ required: true
9
+ },
10
+ size: {
11
+ type: [Number, String],
12
+ default: 24,
13
+ validator(value) {
14
+ const size = typeof value === "string" ? parseInt(value, 10) : value;
15
+ return !isNaN(size) && size > 0;
16
+ }
17
+ },
18
+ strokeWidth: {
19
+ type: Number,
20
+ default: void 0
21
+ },
22
+ absoluteStrokeWidth: {
23
+ type: Boolean,
24
+ default: false
25
+ },
26
+ altIcon: {
27
+ type: Array,
28
+ default: void 0
29
+ },
30
+ showAlt: {
31
+ type: Boolean,
32
+ default: false
33
+ },
34
+ color: {
35
+ type: String,
36
+ default: "currentColor"
37
+ }
38
+ },
39
+ setup(props) {
40
+ const computedSize = computed(() => {
41
+ const size = typeof props.size === "string" ? parseInt(props.size, 10) : props.size;
42
+ return !isNaN(size) && size > 0 ? size : 24;
43
+ });
44
+ const calculatedStrokeWidth = computed(() => {
45
+ if (props.strokeWidth === void 0) return void 0;
46
+ return props.absoluteStrokeWidth ? props.strokeWidth * 24 / computedSize.value : props.strokeWidth;
47
+ });
48
+ const currentIcon = computed(() => {
49
+ return props.altIcon && props.showAlt ? props.altIcon : props.icon;
50
+ });
51
+ const transformAttrs = (attrs, strokeWidth) => {
52
+ const result = {};
53
+ for (const [key, value] of Object.entries(attrs)) {
54
+ const kebabKey = key.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
55
+ result[kebabKey] = value;
56
+ }
57
+ if (strokeWidth !== void 0) {
58
+ result["stroke-width"] = strokeWidth;
59
+ result["stroke"] = "currentColor";
60
+ }
61
+ return result;
62
+ };
63
+ return {
64
+ computedSize,
65
+ calculatedStrokeWidth,
66
+ transformAttrs,
67
+ currentIcon
68
+ };
69
+ }
70
+ });
71
+ var _export_sfc = (sfc, props) => {
72
+ const target = sfc.__vccOpts || sfc;
73
+ for (const [key, val] of props) {
74
+ target[key] = val;
75
+ }
76
+ return target;
77
+ };
78
+ const _hoisted_1 = ["width", "height", "color"];
79
+ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
80
+ return openBlock(), createElementBlock("svg", mergeProps({
81
+ width: _ctx.computedSize,
82
+ height: _ctx.computedSize,
83
+ viewBox: `0 0 24 24`,
84
+ xmlns: "http://www.w3.org/2000/svg",
85
+ fill: "none",
86
+ color: _ctx.color
87
+ }, _ctx.$attrs), [
88
+ (openBlock(true), createElementBlock(
89
+ Fragment,
90
+ null,
91
+ renderList(_ctx.currentIcon, (element, index) => {
92
+ return openBlock(), createBlock(
93
+ resolveDynamicComponent(element[0]),
94
+ mergeProps({
95
+ key: index,
96
+ ref_for: true
97
+ }, _ctx.transformAttrs(element[1], _ctx.calculatedStrokeWidth)),
98
+ null,
99
+ 16
100
+ /* FULL_PROPS */
101
+ );
102
+ }),
103
+ 128
104
+ /* KEYED_FRAGMENT */
105
+ ))
106
+ ], 16, _hoisted_1);
107
+ }
108
+ var HugeiconsIcon = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__file", "/Users/mahmudulhasan/Desktop/Projects/Hugeicons/packages/vue/src/components/HugeiconsIcon.vue"]]);
109
+ export {
110
+ HugeiconsIcon as H
111
+ };
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, withDirectives, openBlock, createElementBlock, normalizeClass, unref, isRef, vModelText } from "vue";
2
- import { u as useVModel } from "./index-Cq9Ekgtb.js";
2
+ import { a as useVModel } from "./index-Dw56kNV0.js";
3
3
  import { c as cn } from "./utils-Bz4m9VPB.js";
4
4
  const _sfc_main = /* @__PURE__ */ defineComponent({
5
5
  __name: "Input",
@@ -1,8 +1,8 @@
1
1
  import { defineComponent, openBlock, createBlock, unref, mergeProps, withCtx, renderSlot } from "vue";
2
- import { u as useForwardExpose } from "./useForwardExpose-BiRQH8eO.js";
2
+ import { u as useForwardExpose } from "./useForwardExpose-BcX3VRdS.js";
3
3
  import { P as Primitive } from "./Primitive-D3IcFg81.js";
4
4
  import { c as cn } from "./utils-Bz4m9VPB.js";
5
- import { r as reactiveOmit } from "./index-qGMU40e1.js";
5
+ import { r as reactiveOmit } from "./index-DDJjWaIl.js";
6
6
  var Label_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
7
7
  __name: "Label",
8
8
  props: {
@@ -0,0 +1,21 @@
1
+ import { defineComponent, openBlock, createElementBlock, normalizeClass, unref, renderSlot } from "vue";
2
+ import { c as cn } from "./utils-Bz4m9VPB.js";
3
+ const _sfc_main = /* @__PURE__ */ defineComponent({
4
+ __name: "LandingContent",
5
+ props: {
6
+ class: {}
7
+ },
8
+ setup(__props) {
9
+ const props = __props;
10
+ return (_ctx, _cache) => {
11
+ return openBlock(), createElementBlock("div", {
12
+ class: normalizeClass(unref(cn)("mx-auto w-full max-w-6xl px-3 py-6 sm:px-6 lg:px-8 lg:py-14", props.class))
13
+ }, [
14
+ renderSlot(_ctx.$slots, "default")
15
+ ], 2);
16
+ };
17
+ }
18
+ });
19
+ export {
20
+ _sfc_main as _
21
+ };
@@ -0,0 +1,159 @@
1
+ import { defineComponent, computed, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, createCommentVNode, toDisplayString, Fragment, renderList, createBlock, resolveDynamicComponent, mergeProps, withCtx, createTextVNode, createVNode } from "vue";
2
+ import { D as DB } from "./index.min-CZ9FIOXr.js";
3
+ import { H as HugeiconsIcon } from "./HugeiconsIcon.vue-By2RXWWz.js";
4
+ import { useI18n } from "vue-i18n";
5
+ import { c as cn } from "./utils-Bz4m9VPB.js";
6
+ const _hoisted_1 = { class: "mb-4 inline-flex items-center gap-2 text-lg font-semibold tracking-tight text-foreground" };
7
+ const _hoisted_2 = ["src", "alt"];
8
+ const _hoisted_3 = {
9
+ key: 0,
10
+ class: "max-w-sm text-xs md:text-sm leading-relaxed text-muted-foreground"
11
+ };
12
+ const _hoisted_4 = { class: "md:text-right" };
13
+ const _hoisted_5 = { class: "mb-4 font-semibold text-foreground" };
14
+ const _hoisted_6 = { class: "space-y-3 text-xs sm:text-sm" };
15
+ const _hoisted_7 = {
16
+ key: 1,
17
+ class: "flex flex-col gap-8 md:max-w-[60%] md:flex-row md:flex-wrap md:justify-end md:gap-16"
18
+ };
19
+ const _hoisted_8 = { class: "mb-4 font-semibold text-foreground" };
20
+ const _hoisted_9 = { class: "space-y-3 text-xs sm:text-sm" };
21
+ const _hoisted_10 = {
22
+ key: 0,
23
+ class: "flex flex-wrap items-center justify-center gap-1.5 md:justify-end"
24
+ };
25
+ const _hoisted_11 = ["href"];
26
+ const _sfc_main = /* @__PURE__ */ defineComponent({
27
+ __name: "LandingFooter",
28
+ props: {
29
+ appName: {},
30
+ appLogo: {},
31
+ appDescription: { default: "" },
32
+ sections: { default: () => [] },
33
+ linkComponent: { default: "a" },
34
+ authorName: { default: "" },
35
+ authorLink: { default: "" },
36
+ year: { default: () => (/* @__PURE__ */ new Date()).getFullYear() },
37
+ showBottomBar: { type: Boolean, default: true },
38
+ class: {},
39
+ containerClass: {},
40
+ brandClass: {},
41
+ sectionsClass: {},
42
+ bottomBarClass: {}
43
+ },
44
+ setup(__props) {
45
+ const props = __props;
46
+ const { t } = useI18n();
47
+ const hasSingleSection = computed(() => props.sections.length === 1);
48
+ const getLinkProps = (link) => {
49
+ const sharedProps = link.newTab ? { target: "_blank", rel: "noopener noreferrer" } : {};
50
+ if (props.linkComponent === "a") {
51
+ return {
52
+ href: link.href ?? "#",
53
+ ...sharedProps
54
+ };
55
+ }
56
+ return {
57
+ to: link.to ?? link.href ?? "/",
58
+ ...sharedProps
59
+ };
60
+ };
61
+ return (_ctx, _cache) => {
62
+ var _a, _b;
63
+ return openBlock(), createElementBlock("footer", {
64
+ class: normalizeClass(unref(cn)("relative z-10 border-t border-border bg-card", props.class))
65
+ }, [
66
+ createElementVNode("div", {
67
+ class: normalizeClass(unref(cn)("mx-auto max-w-7xl px-4 py-12 sm:px-6 lg:px-8", props.containerClass))
68
+ }, [
69
+ createElementVNode("div", {
70
+ class: normalizeClass(unref(cn)("flex flex-col gap-8", !hasSingleSection.value && "md:flex-row md:items-start md:justify-between"))
71
+ }, [
72
+ createElementVNode("div", {
73
+ class: normalizeClass(unref(cn)("max-w-md flex-1", props.brandClass))
74
+ }, [
75
+ createElementVNode("div", _hoisted_1, [
76
+ props.appLogo ? (openBlock(), createElementBlock("img", {
77
+ key: 0,
78
+ src: props.appLogo,
79
+ alt: `${props.appName} logo`,
80
+ class: "size-8 shrink-0 object-contain"
81
+ }, null, 8, _hoisted_2)) : createCommentVNode("", true),
82
+ createElementVNode("span", null, toDisplayString(props.appName), 1)
83
+ ]),
84
+ props.appDescription ? (openBlock(), createElementBlock("p", _hoisted_3, toDisplayString(props.appDescription), 1)) : createCommentVNode("", true)
85
+ ], 2),
86
+ hasSingleSection.value ? (openBlock(), createElementBlock("div", {
87
+ key: 0,
88
+ class: normalizeClass(unref(cn)("min-w-0 md:flex md:justify-end", props.sectionsClass))
89
+ }, [
90
+ createElementVNode("div", _hoisted_4, [
91
+ createElementVNode("h3", _hoisted_5, toDisplayString((_a = props.sections[0]) == null ? void 0 : _a.title), 1),
92
+ createElementVNode("ul", _hoisted_6, [
93
+ (openBlock(true), createElementBlock(Fragment, null, renderList((_b = props.sections[0]) == null ? void 0 : _b.links, (link) => {
94
+ return openBlock(), createElementBlock("li", {
95
+ key: link.id
96
+ }, [
97
+ (openBlock(), createBlock(resolveDynamicComponent(props.linkComponent), mergeProps({ ref_for: true }, getLinkProps(link), { class: "text-muted-foreground transition-colors duration-200 hover:text-foreground" }), {
98
+ default: withCtx(() => [
99
+ createTextVNode(toDisplayString(link.label), 1)
100
+ ]),
101
+ _: 2
102
+ }, 1040))
103
+ ]);
104
+ }), 128))
105
+ ])
106
+ ])
107
+ ], 2)) : (openBlock(), createElementBlock("div", _hoisted_7, [
108
+ (openBlock(true), createElementBlock(Fragment, null, renderList(props.sections, (section) => {
109
+ return openBlock(), createElementBlock("div", {
110
+ key: section.id,
111
+ class: normalizeClass(unref(cn)("min-w-28", props.sectionsClass))
112
+ }, [
113
+ createElementVNode("h3", _hoisted_8, toDisplayString(section.title), 1),
114
+ createElementVNode("ul", _hoisted_9, [
115
+ (openBlock(true), createElementBlock(Fragment, null, renderList(section.links, (link) => {
116
+ return openBlock(), createElementBlock("li", {
117
+ key: link.id
118
+ }, [
119
+ (openBlock(), createBlock(resolveDynamicComponent(props.linkComponent), mergeProps({ ref_for: true }, getLinkProps(link), { class: "text-muted-foreground transition-colors duration-200 hover:text-foreground" }), {
120
+ default: withCtx(() => [
121
+ createTextVNode(toDisplayString(link.label), 1)
122
+ ]),
123
+ _: 2
124
+ }, 1040))
125
+ ]);
126
+ }), 128))
127
+ ])
128
+ ], 2);
129
+ }), 128))
130
+ ]))
131
+ ], 2),
132
+ props.showBottomBar ? (openBlock(), createElementBlock("div", {
133
+ key: 0,
134
+ class: normalizeClass(unref(cn)("mt-12 flex flex-col items-center justify-between gap-4 border-t border-border pt-8 text-xs md:text-sm text-muted-foreground md:flex-row", props.bottomBarClass))
135
+ }, [
136
+ createElementVNode("div", null, " © " + toDisplayString(props.year) + " " + toDisplayString(props.appName) + ". " + toDisplayString(unref(t)("ui.footer.allRightsReserved")), 1),
137
+ props.authorName && props.authorLink ? (openBlock(), createElementBlock("div", _hoisted_10, [
138
+ createElementVNode("span", null, toDisplayString(unref(t)("ui.footer.madeWith")), 1),
139
+ createVNode(unref(HugeiconsIcon), {
140
+ icon: unref(DB),
141
+ class: "size-4 shrink-0 text-red-700 dark:text-red-400"
142
+ }, null, 8, ["icon"]),
143
+ createElementVNode("span", null, toDisplayString(unref(t)("ui.footer.by")), 1),
144
+ createElementVNode("a", {
145
+ href: props.authorLink,
146
+ target: "_blank",
147
+ rel: "noopener noreferrer",
148
+ class: "font-medium text-foreground hover:underline"
149
+ }, toDisplayString(props.authorName), 9, _hoisted_11)
150
+ ])) : createCommentVNode("", true)
151
+ ], 2)) : createCommentVNode("", true)
152
+ ], 2)
153
+ ], 2);
154
+ };
155
+ }
156
+ });
157
+ export {
158
+ _sfc_main as _
159
+ };
@@ -0,0 +1,59 @@
1
+ import { defineComponent, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, renderSlot, createCommentVNode, toDisplayString } from "vue";
2
+ import { c as cn } from "./utils-Bz4m9VPB.js";
3
+ const _hoisted_1 = ["href"];
4
+ const _hoisted_2 = ["src", "alt"];
5
+ const _hoisted_3 = {
6
+ key: 1,
7
+ class: "hidden sm:inline text-xl font-bold tracking-tight text-foreground"
8
+ };
9
+ const _sfc_main = /* @__PURE__ */ defineComponent({
10
+ __name: "LandingNavbar",
11
+ props: {
12
+ appName: { default: "" },
13
+ appLogo: { default: "" },
14
+ appLinkTo: { default: "/" },
15
+ class: {},
16
+ containerClass: {},
17
+ leftClass: {},
18
+ rightClass: {}
19
+ },
20
+ setup(__props) {
21
+ const props = __props;
22
+ return (_ctx, _cache) => {
23
+ return openBlock(), createElementBlock("header", {
24
+ class: normalizeClass(unref(cn)("z-30 flex h-20 w-full flex-wrap sm:flex-nowrap sm:justify-start", props.class))
25
+ }, [
26
+ createElementVNode("nav", {
27
+ class: normalizeClass(unref(cn)("mx-auto flex max-w-6xl basis-full items-center justify-between px-3 sm:px-6 lg:px-8", props.containerClass))
28
+ }, [
29
+ createElementVNode("div", {
30
+ class: normalizeClass(unref(cn)("flex items-center", props.leftClass))
31
+ }, [
32
+ renderSlot(_ctx.$slots, "left", {}, () => [
33
+ createElementVNode("a", {
34
+ href: props.appLinkTo,
35
+ class: "inline-flex items-center gap-2 transition-opacity hover:opacity-80"
36
+ }, [
37
+ props.appLogo ? (openBlock(), createElementBlock("img", {
38
+ key: 0,
39
+ src: props.appLogo,
40
+ alt: `${props.appName} logo`,
41
+ class: "size-11 sm:size-9 shrink-0 object-contain"
42
+ }, null, 8, _hoisted_2)) : createCommentVNode("", true),
43
+ props.appName ? (openBlock(), createElementBlock("span", _hoisted_3, toDisplayString(props.appName), 1)) : createCommentVNode("", true)
44
+ ], 8, _hoisted_1)
45
+ ])
46
+ ], 2),
47
+ createElementVNode("div", {
48
+ class: normalizeClass(unref(cn)("flex items-center justify-end gap-2 sm:gap-3", props.rightClass))
49
+ }, [
50
+ renderSlot(_ctx.$slots, "right")
51
+ ], 2)
52
+ ], 2)
53
+ ], 2);
54
+ };
55
+ }
56
+ });
57
+ export {
58
+ _sfc_main as _
59
+ };
@@ -0,0 +1,49 @@
1
+ import { defineComponent, useSlots, computed, openBlock, createElementBlock, normalizeClass, unref, createBlock, createCommentVNode, Fragment, createElementVNode, renderSlot } from "vue";
2
+ import { B as BackgroundGrid } from "./BackgroundGrid-BJDDcLzF.js";
3
+ import { c as cn } from "./utils-Bz4m9VPB.js";
4
+ const _sfc_main = /* @__PURE__ */ defineComponent({
5
+ __name: "LandingShell",
6
+ props: {
7
+ showBackground: { type: Boolean, default: true },
8
+ rootClass: {},
9
+ navbarClass: {},
10
+ mainClass: {},
11
+ footerClass: {}
12
+ },
13
+ setup(__props) {
14
+ const props = __props;
15
+ const slots = useSlots();
16
+ const hasStructuredSlots = computed(() => {
17
+ return Boolean(slots.navbar || slots.content || slots.footer);
18
+ });
19
+ return (_ctx, _cache) => {
20
+ return openBlock(), createElementBlock("div", {
21
+ class: normalizeClass(unref(cn)("relative flex min-h-screen flex-col bg-background text-foreground", props.rootClass))
22
+ }, [
23
+ props.showBackground ? (openBlock(), createBlock(BackgroundGrid, { key: 0 })) : createCommentVNode("", true),
24
+ hasStructuredSlots.value ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
25
+ createElementVNode("header", {
26
+ class: normalizeClass(unref(cn)("relative z-10", props.navbarClass))
27
+ }, [
28
+ renderSlot(_ctx.$slots, "navbar")
29
+ ], 2),
30
+ createElementVNode("main", {
31
+ class: normalizeClass(unref(cn)("relative z-10", props.mainClass))
32
+ }, [
33
+ renderSlot(_ctx.$slots, "content", {}, () => [
34
+ renderSlot(_ctx.$slots, "default")
35
+ ])
36
+ ], 2),
37
+ createElementVNode("footer", {
38
+ class: normalizeClass(unref(cn)("relative z-10", props.footerClass))
39
+ }, [
40
+ renderSlot(_ctx.$slots, "footer")
41
+ ], 2)
42
+ ], 64)) : renderSlot(_ctx.$slots, "default", { key: 2 })
43
+ ], 2);
44
+ };
45
+ }
46
+ });
47
+ export {
48
+ _sfc_main as _
49
+ };
@@ -0,0 +1,68 @@
1
+ import { openBlock, createElementBlock, createStaticVNode, createElementVNode, defineComponent, computed, createBlock, resolveDynamicComponent, normalizeProps, guardReactiveProps } from "vue";
2
+ import { _ as _export_sfc } from "./_plugin-vue_export-helper-1tPrXgE0.js";
3
+ const _sfc_main$2 = {};
4
+ const _hoisted_1$1 = {
5
+ xmlns: "http://www.w3.org/2000/svg",
6
+ viewBox: "0 0 640 480",
7
+ "aria-hidden": "true",
8
+ focusable: "false"
9
+ };
10
+ function _sfc_render$1(_ctx, _cache) {
11
+ return openBlock(), createElementBlock("svg", _hoisted_1$1, _cache[0] || (_cache[0] = [
12
+ createStaticVNode('<path fill="#012169" d="M0 0h640v480H0z"></path><path fill="#FFF" d="m75 0 244 181L562 0h78v62L400 241l240 178v61h-80L320 301 81 480H0v-60l239-178L0 64V0z"></path><path fill="#C8102E" d="m424 281 216 159v40L369 281zm-184 20 6 35L54 480H0zM640 0v3L391 191l2-44L590 0zM0 0l239 176h-60L0 42z"></path><path fill="#FFF" d="M241 0v480h160V0zM0 160v160h640V160z"></path><path fill="#C8102E" d="M0 193v96h640v-96zM273 0v480h96V0z"></path>', 5)
13
+ ]));
14
+ }
15
+ const EnglishFlag = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$1]]);
16
+ const _sfc_main$1 = {};
17
+ const _hoisted_1 = {
18
+ xmlns: "http://www.w3.org/2000/svg",
19
+ viewBox: "0 0 640 480",
20
+ "aria-hidden": "true",
21
+ focusable: "false"
22
+ };
23
+ function _sfc_render(_ctx, _cache) {
24
+ return openBlock(), createElementBlock("svg", _hoisted_1, _cache[0] || (_cache[0] = [
25
+ createElementVNode("g", {
26
+ "fill-rule": "evenodd",
27
+ "stroke-width": "1pt"
28
+ }, [
29
+ createElementVNode("path", {
30
+ fill: "#fff",
31
+ d: "M0 0h640v480H0z"
32
+ }),
33
+ createElementVNode("path", {
34
+ fill: "#009246",
35
+ d: "M0 0h213.3v480H0z"
36
+ }),
37
+ createElementVNode("path", {
38
+ fill: "#ce2b37",
39
+ d: "M426.7 0H640v480H426.7z"
40
+ })
41
+ ], -1)
42
+ ]));
43
+ }
44
+ const ItalianFlag = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render]]);
45
+ const _sfc_main = /* @__PURE__ */ defineComponent({
46
+ __name: "LanguageFlag",
47
+ props: {
48
+ code: { type: String, default: "en" }
49
+ },
50
+ setup(__props) {
51
+ const props = __props;
52
+ const flagComponentMap = {
53
+ en: EnglishFlag,
54
+ it: ItalianFlag
55
+ };
56
+ const flagComponent = computed(() => {
57
+ return flagComponentMap[props.code] || EnglishFlag;
58
+ });
59
+ return (_ctx, _cache) => {
60
+ return openBlock(), createBlock(resolveDynamicComponent(flagComponent.value), normalizeProps(guardReactiveProps(_ctx.$attrs)), null, 16);
61
+ };
62
+ }
63
+ });
64
+ export {
65
+ EnglishFlag as E,
66
+ ItalianFlag as I,
67
+ _sfc_main as _
68
+ };
@@ -0,0 +1,61 @@
1
+ import { defineComponent, computed, openBlock, createElementBlock, createBlock, unref, withCtx, createVNode, createTextVNode, toDisplayString } from "vue";
2
+ import { useI18n } from "vue-i18n";
3
+ import { S as Ser, a as dn } from "./index.min-CZ9FIOXr.js";
4
+ import { H as HugeiconsIcon } from "./HugeiconsIcon.vue-By2RXWWz.js";
5
+ import { Button as _sfc_main$1 } from "./button.js";
6
+ const _hoisted_1 = { class: "flex justify-center" };
7
+ const _sfc_main = /* @__PURE__ */ defineComponent({
8
+ __name: "LoadMoreButton",
9
+ props: {
10
+ busy: { type: Boolean, default: false },
11
+ text: { type: String, default: "" },
12
+ loadingText: { type: String, default: "" }
13
+ },
14
+ emits: ["load-more"],
15
+ setup(__props, { emit: __emit }) {
16
+ const props = __props;
17
+ const emits = __emit;
18
+ const { t } = useI18n();
19
+ const resolvedText = computed(() => props.text || t("ui.buttons.loadMore") || "Load more");
20
+ const resolvedLoadingText = computed(() => props.loadingText || t("ui.buttons.loading") || "Loading");
21
+ const handleClick = () => {
22
+ emits("load-more");
23
+ };
24
+ return (_ctx, _cache) => {
25
+ return openBlock(), createElementBlock("div", _hoisted_1, [
26
+ props.busy ? (openBlock(), createBlock(unref(_sfc_main$1), {
27
+ key: 0,
28
+ variant: "secondary",
29
+ class: "w-full md:w-auto",
30
+ disabled: true
31
+ }, {
32
+ default: withCtx(() => [
33
+ createVNode(unref(HugeiconsIcon), {
34
+ icon: unref(Ser),
35
+ class: "size-4 animate-spin"
36
+ }, null, 8, ["icon"]),
37
+ createTextVNode(" " + toDisplayString(resolvedLoadingText.value), 1)
38
+ ]),
39
+ _: 1
40
+ })) : (openBlock(), createBlock(unref(_sfc_main$1), {
41
+ key: 1,
42
+ variant: "secondary",
43
+ class: "w-full md:w-auto",
44
+ onClick: handleClick
45
+ }, {
46
+ default: withCtx(() => [
47
+ createVNode(unref(HugeiconsIcon), {
48
+ icon: unref(dn),
49
+ class: "size-4"
50
+ }, null, 8, ["icon"]),
51
+ createTextVNode(" " + toDisplayString(resolvedText.value), 1)
52
+ ]),
53
+ _: 1
54
+ }))
55
+ ]);
56
+ };
57
+ }
58
+ });
59
+ export {
60
+ _sfc_main as _
61
+ };
@@ -0,0 +1,53 @@
1
+ import { defineComponent, computed, openBlock, createBlock, unref, withCtx, createVNode, createElementVNode, createElementBlock, toDisplayString, createCommentVNode, renderSlot } from "vue";
2
+ import { useI18n } from "vue-i18n";
3
+ import { b as SK } from "./index.min-CZ9FIOXr.js";
4
+ import { H as HugeiconsIcon } from "./HugeiconsIcon.vue-By2RXWWz.js";
5
+ import { _ as _sfc_main$1 } from "./Card.vue_vue_type_script_setup_true_lang-D0pFVflK.js";
6
+ import { _ as _sfc_main$2 } from "./CardContent.vue_vue_type_script_setup_true_lang-dBzO0q1t.js";
7
+ const _hoisted_1 = { class: "flex items-center justify-center text-4xl text-[var(--text-secondary-light)] opacity-60 dark:text-[var(--text-secondary-dark)]" };
8
+ const _hoisted_2 = {
9
+ key: 0,
10
+ class: "text-sm font-bold text-[var(--text-primary-light)] dark:text-[var(--text-primary-dark)] md:text-lg"
11
+ };
12
+ const _hoisted_3 = {
13
+ key: 1,
14
+ class: "max-w-md text-xs text-[var(--text-secondary-light)] dark:text-[var(--text-secondary-dark)] md:text-sm"
15
+ };
16
+ const _sfc_main = /* @__PURE__ */ defineComponent({
17
+ __name: "LoadingStateCard",
18
+ props: {
19
+ icon: { type: [Object, Array], default: () => SK },
20
+ title: { type: String, default: "" },
21
+ description: { type: String, default: "" }
22
+ },
23
+ setup(__props) {
24
+ const props = __props;
25
+ const { t } = useI18n();
26
+ const resolvedTitle = computed(() => props.title || t("ui.common.loading.title") || "Loading...");
27
+ const resolvedDescription = computed(() => props.description || t("ui.common.loading.description") || "Please wait a moment while we load the content.");
28
+ return (_ctx, _cache) => {
29
+ return openBlock(), createBlock(unref(_sfc_main$1), { class: "flex flex-col items-center justify-center px-4 py-8 text-center md:py-12" }, {
30
+ default: withCtx(() => [
31
+ createVNode(unref(_sfc_main$2), { class: "flex flex-col items-center justify-center !p-0 text-center" }, {
32
+ default: withCtx(() => [
33
+ createElementVNode("div", _hoisted_1, [
34
+ createVNode(unref(HugeiconsIcon), {
35
+ icon: props.icon,
36
+ class: "size-10 animate-spin"
37
+ }, null, 8, ["icon"])
38
+ ]),
39
+ resolvedTitle.value ? (openBlock(), createElementBlock("h3", _hoisted_2, toDisplayString(resolvedTitle.value), 1)) : createCommentVNode("", true),
40
+ resolvedDescription.value ? (openBlock(), createElementBlock("p", _hoisted_3, toDisplayString(resolvedDescription.value), 1)) : createCommentVNode("", true),
41
+ renderSlot(_ctx.$slots, "default")
42
+ ]),
43
+ _: 3
44
+ })
45
+ ]),
46
+ _: 3
47
+ });
48
+ };
49
+ }
50
+ });
51
+ export {
52
+ _sfc_main as _
53
+ };