@mixd-id/web-scaffold 0.2.240705 → 0.2.250801009

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 (220) hide show
  1. package/docs/components/Dashboard.md +56 -0
  2. package/log.txt +7 -0
  3. package/package.json +27 -19
  4. package/src/components/404.vue +61 -0
  5. package/src/components/AccountIcon.vue +19 -0
  6. package/src/components/Ahref.vue +1 -1
  7. package/src/components/Alert.vue +4 -13
  8. package/src/components/ArrayList.vue +49 -0
  9. package/src/components/Article.vue +24 -30
  10. package/src/components/Button.vue +79 -167
  11. package/src/components/Card.vue +235 -0
  12. package/src/components/Carousel.vue +61 -60
  13. package/src/components/Cart.vue +192 -0
  14. package/src/components/CartIcon.vue +89 -0
  15. package/src/components/ChartBar.vue +2 -3
  16. package/src/components/Checkbox.vue +20 -11
  17. package/src/components/Checkout.vue +373 -0
  18. package/src/components/CheckoutDelivery.vue +267 -0
  19. package/src/components/CodeEditor.vue +5 -16
  20. package/src/components/CollapsiblePanel.vue +70 -0
  21. package/src/components/ColorPicker.vue +8 -3
  22. package/src/components/ColorPicker2.vue +41 -19
  23. package/src/components/ColorPicker3.vue +100 -0
  24. package/src/components/Confirm.vue +9 -7
  25. package/src/components/ContextMenu.vue +122 -206
  26. package/src/components/ContextMenuItem.vue +53 -0
  27. package/src/components/Dashboard.vue +243 -0
  28. package/src/components/Dashboard2.vue +118 -0
  29. package/src/components/DashboardComponentSelector.vue +96 -0
  30. package/src/components/DashboardConfigs.vue +202 -0
  31. package/src/components/Datepicker.vue +102 -41
  32. package/src/components/DayTimeRange.vue +3 -2
  33. package/src/components/Dropdown.vue +7 -4
  34. package/src/components/Flex.vue +14 -40
  35. package/src/components/GHeatMaps.vue +2 -2
  36. package/src/components/Grid.vue +6 -6
  37. package/src/components/HTMLEditor.vue +27 -14
  38. package/src/components/Image.vue +62 -108
  39. package/src/components/ImagePreview.vue +14 -4
  40. package/src/components/ImageUploader.vue +114 -0
  41. package/src/components/ImportModal.vue +3 -3
  42. package/src/components/Link.vue +62 -6
  43. package/src/components/List.vue +524 -402
  44. package/src/components/ListContextMenu.vue +88 -0
  45. package/src/components/ListItem.vue +5 -3
  46. package/src/components/ListPage1.vue +14 -15
  47. package/src/components/ListView.vue +5 -6
  48. package/src/components/ListViewSettings.vue +2 -2
  49. package/src/components/LogViewerItem.vue +1 -1
  50. package/src/components/MarkdownEdit.vue +128 -0
  51. package/src/components/MarkdownPreview.vue +102 -0
  52. package/src/components/MenuItem1.vue +36 -0
  53. package/src/components/Modal.vue +95 -43
  54. package/src/components/MultiDropdown.vue +124 -0
  55. package/src/components/MultilineText.vue +1 -4
  56. package/src/components/OTPField.vue +11 -17
  57. package/src/components/ObjectTree.vue +1 -1
  58. package/src/components/PageBuilder.vue +3 -3
  59. package/src/components/Paragraph.vue +1 -2
  60. package/src/components/PresetSelectorFilterItem.vue +107 -95
  61. package/src/components/Radio.vue +1 -1
  62. package/src/components/SearchModal.vue +153 -0
  63. package/src/components/Slider.vue +1 -1
  64. package/src/components/Svg.vue +1 -1
  65. package/src/components/SvgEditor.vue +173 -0
  66. package/src/components/Switch.vue +4 -5
  67. package/src/components/Table.vue +2 -2
  68. package/src/components/TableView.vue +2 -3
  69. package/src/components/TableViewHead.vue +2 -2
  70. package/src/components/Tabs.vue +1 -1
  71. package/src/components/Testimonial.vue +2 -2
  72. package/src/components/Text.vue +7 -22
  73. package/src/components/TextEditor.vue +3 -3
  74. package/src/components/TextWithTag.vue +61 -30
  75. package/src/components/Textarea.vue +11 -16
  76. package/src/components/Textbox.vue +9 -19
  77. package/src/components/Timepicker.vue +25 -15
  78. package/src/components/Toast.vue +5 -3
  79. package/src/components/TreeMenu.vue +122 -0
  80. package/src/components/TreeView.vue +15 -10
  81. package/src/components/TreeView2.vue +38 -0
  82. package/src/components/TreeViewItem.vue +58 -29
  83. package/src/components/TreeViewItem2.vue +55 -0
  84. package/src/components/Uploader.vue +45 -0
  85. package/src/components/Video.vue +119 -0
  86. package/src/components/VirtualGrid.vue +24 -7
  87. package/src/components/VirtualTable.vue +363 -128
  88. package/src/configs/dashboard/data-table.js +9 -0
  89. package/src/configs/web-page-builder.js +118 -0
  90. package/src/directives/intersect.js +26 -0
  91. package/src/hooks/device.js +14 -0
  92. package/src/index.js +62 -107
  93. package/src/mixin/component.js +147 -67
  94. package/src/themes/default/index.js +83 -155
  95. package/src/utils/dashboard.js +22 -962
  96. package/src/utils/helpers.cjs +635 -0
  97. package/src/utils/helpers.js +91 -60
  98. package/src/utils/helpers.mjs +245 -12
  99. package/src/utils/importer.js +22 -3
  100. package/src/utils/list.mjs +1509 -0
  101. package/src/utils/preset-selector.cjs +1455 -0
  102. package/src/utils/preset-selector.js +489 -95
  103. package/src/utils/preset-selector.mjs +59 -20
  104. package/src/utils/queue.js +63 -0
  105. package/src/utils/web.mjs +120 -0
  106. package/src/utils/wss.js +37 -29
  107. package/src/utils/wss.mjs +24 -19
  108. package/src/widgets/AhrefSetting.vue +16 -13
  109. package/src/widgets/ArticleSetting.vue +15 -27
  110. package/src/widgets/BackgroundColorSetting.vue +153 -0
  111. package/src/widgets/BorderColorSetting.vue +57 -0
  112. package/src/widgets/BotEditor/BotEditorActions.vue +3 -2
  113. package/src/widgets/BotEditor/BotEditorSettings.vue +21 -0
  114. package/src/widgets/BotEditor.vue +35 -15
  115. package/src/widgets/ButtonSetting.vue +12 -13
  116. package/src/widgets/CarouselSetting.vue +33 -45
  117. package/src/widgets/CartSetting.vue +46 -0
  118. package/src/widgets/CheckoutSetting.vue +46 -0
  119. package/src/widgets/CollapsiblePanelSetting.vue +46 -0
  120. package/src/widgets/ColumnSelector.vue +29 -5
  121. package/src/widgets/ComponentSetting.vue +1 -1
  122. package/src/widgets/ComponentSetting2.vue +112 -234
  123. package/src/widgets/ComponentSetting3.vue +1 -1
  124. package/src/widgets/ContactForm.vue +3 -3
  125. package/src/widgets/ContactFormSetting.vue +41 -30
  126. package/src/widgets/Dashboard/BarChart.vue +47 -11
  127. package/src/widgets/Dashboard/BarChartSetting.vue +1 -1
  128. package/src/widgets/Dashboard/DataTable.vue +125 -0
  129. package/src/widgets/Dashboard/DataTableSetting.vue +243 -0
  130. package/src/widgets/Dashboard/DatasourceSelector.vue +1 -1
  131. package/src/widgets/Dashboard/Doughnut.vue +49 -7
  132. package/src/widgets/Dashboard/DoughnutSetting.vue +2 -2
  133. package/src/widgets/Dashboard/Metric.vue +78 -19
  134. package/src/widgets/Dashboard/MetricSetting.vue +81 -28
  135. package/src/widgets/Dashboard/Pie.vue +55 -6
  136. package/src/widgets/Dashboard/PieSetting.vue +1 -1
  137. package/src/widgets/Dashboard/PolarArea.vue +49 -7
  138. package/src/widgets/Dashboard/PolarAreaSetting.vue +1 -1
  139. package/src/widgets/Dashboard/SharingModal.vue +4 -5
  140. package/src/widgets/Dashboard/ViewSelector.vue +2 -2
  141. package/src/widgets/Dashboard/VirtualTableSetting.vue +121 -184
  142. package/src/widgets/{Dashboard.vue → Dashboard0.vue} +426 -343
  143. package/src/widgets/EmbeddedVideoSetting.vue +7 -5
  144. package/src/widgets/FAQ.vue +16 -3
  145. package/src/widgets/FAQSetting.vue +53 -47
  146. package/src/widgets/FeatureList.vue +3 -0
  147. package/src/widgets/FeatureListSetting.vue +112 -102
  148. package/src/widgets/FlexSetting.vue +83 -106
  149. package/src/widgets/GridSetting.vue +71 -196
  150. package/src/widgets/Header2.vue +34 -71
  151. package/src/widgets/Header2Setting.vue +95 -179
  152. package/src/widgets/HeaderSetting.vue +16 -18
  153. package/src/widgets/IconListSetting.vue +69 -65
  154. package/src/widgets/ImageSetting.vue +33 -60
  155. package/src/widgets/LinkSetting.vue +60 -37
  156. package/src/widgets/LinkSettingModal.vue +173 -0
  157. package/src/widgets/LogViewer.vue +1 -1
  158. package/src/widgets/MarginSetting.vue +2 -2
  159. package/src/widgets/MenuEditor.vue +1 -1
  160. package/src/widgets/MenuItem1Setting.vue +78 -0
  161. package/src/widgets/ModalSetting.vue +42 -44
  162. package/src/widgets/MultiValueSetting.vue +2 -2
  163. package/src/widgets/MultiValueSetting2.vue +78 -45
  164. package/src/widgets/OGSettingModal.vue +103 -0
  165. package/src/widgets/PaddingSetting.vue +2 -2
  166. package/src/widgets/ParagraphSetting.vue +16 -13
  167. package/src/widgets/PositionSetting.vue +209 -0
  168. package/src/widgets/PresetBar.vue +359 -210
  169. package/src/widgets/PresetBarPivot.vue +31 -19
  170. package/src/widgets/PresetSelector.vue +29 -17
  171. package/src/widgets/SearchModalSetting.vue +70 -0
  172. package/src/widgets/Share.vue +1 -2
  173. package/src/widgets/ShareSetting.vue +67 -60
  174. package/src/widgets/StyleSetting.vue +227 -116
  175. package/src/widgets/TestimonialSetting.vue +97 -88
  176. package/src/widgets/TextBlockSetting.vue +16 -13
  177. package/src/widgets/UserActionBuilder/UserActionConsole.vue +30 -10
  178. package/src/widgets/UserActionBuilder/UserActionOutput.vue +2 -2
  179. package/src/widgets/UserActionBuilder/UserActionOutputReply.vue +64 -87
  180. package/src/widgets/UserActionBuilder/UserActionProps.vue +3 -3
  181. package/src/widgets/UserActionBuilder.vue +4 -16
  182. package/src/widgets/WebComponentSelector.vue +15 -11
  183. package/src/widgets/WebLayoutSelector.vue +41 -270
  184. package/src/widgets/WebPageBuilder.vue +693 -704
  185. package/src/widgets/WebPageBuilder2.vue +7 -7
  186. package/src/widgets/WebPageBuilder4/ButtonSetting.vue +0 -8
  187. package/src/widgets/WebPageBuilder4/CarouselSetting.vue +63 -7
  188. package/src/widgets/WebPageBuilder4/FlexAlignSetting.vue +3 -3
  189. package/src/widgets/WebPageBuilder4/FlexSetting.vue +1 -10
  190. package/src/widgets/WebPageBuilder4/MultiValueSetting.vue +2 -2
  191. package/src/widgets/WebPageBuilder4/PropertySetting.vue +0 -7
  192. package/src/widgets/WebPageBuilder4/WebPageComponentSelector.vue +1 -7
  193. package/src/widgets/WebPageBuilder4.vue +289 -575
  194. package/src/widgets/WebPageSelector.vue +1 -1
  195. package/src/widgets/YoutubeVideoSetting.vue +16 -13
  196. package/tailwind.config.js +3 -35
  197. package/docs/schema/user-action.json +0 -266
  198. package/src/App.vue +0 -25
  199. package/src/components/SearchButton.vue +0 -57
  200. package/src/entry-client.js +0 -27
  201. package/src/entry-server.js +0 -73
  202. package/src/events/event.js +0 -2
  203. package/src/main.js +0 -29
  204. package/src/mixin/website.js +0 -121
  205. package/src/router.js +0 -57
  206. package/src/widgets/MobileMenu.vue +0 -182
  207. package/src/widgets/WebPageBuilder4/ActionSetting.vue +0 -158
  208. package/src/widgets/WebPageBuilder4/ColorSetting.vue +0 -63
  209. package/src/widgets/WebPageBuilder4/DataSetting.vue +0 -92
  210. package/src/widgets/WebPageBuilder4/FontSizeSetting.vue +0 -76
  211. package/src/widgets/WebPageBuilder4/LinkSetting.vue +0 -68
  212. package/src/widgets/WebPageBuilder4/MobileMenuSetting.vue +0 -106
  213. package/src/widgets/WebPageBuilder4/Setting.vue +0 -73
  214. package/src/widgets/WebPageBuilder4/StyleSetting.vue +0 -77
  215. package/src/widgets/WebPageBuilder4/SvgSetting.vue +0 -207
  216. package/src/widgets/WebPageBuilder4/TextTransformSetting.vue +0 -70
  217. package/src/widgets/WebPageBuilder4/WebPageDataEdit.vue +0 -121
  218. package/test.json +0 -22
  219. /package/src/widgets/{Header1.vue → Header0.vue} +0 -0
  220. /package/src/widgets/{Header1Setting.vue → Header0Setting.vue} +0 -0
@@ -0,0 +1,9 @@
1
+ export const component = {
2
+
3
+ type:"DataTable",
4
+
5
+ props:{
6
+ height:[ "h-[50vh]", "md:h-[50vh]", "", "" ]
7
+ }
8
+
9
+ }
@@ -0,0 +1,118 @@
1
+ export default {
2
+
3
+ components: [
4
+
5
+ { type:"Flex", name:"3 Column Layout", group:"Layouts", thumbnailUrl:"/images/templates/3-column-layout1.png", items:[{ type:"Flex", name:"Flex", group:"Components","items":[{ type:"Article", name:"Article", group:"Components","props":{"htmlText":"Left","padding":["p-6",""],enabled:true,"direction":["flex-column"],"gap":["gap-2"], name:"Dummy Text"}}],"props":{"direction":["flex-col"],enabled:true,"width":["","md:w-2/12"], name:"Left"}},{ type:"Flex", name:"Flex", group:"Components","items":[{ type:"Article", name:"Article", group:"Components","props":{"htmlText":"Middle","padding":["p-6",""],enabled:true,"direction":["flex-column"],"gap":["gap-2"], name:"Dummy Text"}}],"props":{"direction":["flex-col"],enabled:true,"width":[null,"md:flex-1"], name:"Middle"}},{ type:"Flex", name:"Flex", group:"Components","items":[{ type:"Article", name:"Article", group:"Components","props":{"htmlText":"Right","padding":["p-6",""],enabled:true,"direction":["flex-column"],"gap":["gap-2"], name:"Dummy Text"}}],"props":{"direction":["flex-col"],enabled:true,"width":[null,"md:w-3/12"], name:"RIght"}}],"props":{"direction":["flex-col","md:flex-row"],"gap":[null,"md:gap-4"],enabled:true, name:"3 Column Layout"}},
6
+
7
+ { type:"Flex", name:"Thumbnails", group:"Sections", thumbnailUrl:"/images/templates/thumbnails.gif","items":[{ type:"Flex", name:"Flex", group:"Components","items":[{ type:"TextBlock", name:"TextBlock", group:"Components","props":{"htmlText":"",enabled:true,"direction":["flex-column"],"gap":["gap-2"],"text":"Thumbnails","tagName":"h5","flex":["flex-1"]}},{ type:"Link", name:"Link", group:"Components","props":{ enabled:true,"textColor":["text-primary-500"],"direction":["flex-column"],"gap":["gap-2"],"text":"More Thumbnails"},"items":[]}],"props":{"direction":["flex-row"],enabled:true,"flexAlign":["items-center"]}},{ type:"Flex", name:"Flex", group:"Components","items":[{ type:"Thumbnail", name:"Thumbnail", group:"Components","props":{ enabled:true,"width":["w-5/12"],"direction":["flex-column"],"gap":["gap-2"],"flex":["flex-0"]},"items":[]},{ type:"Thumbnail", name:"Thumbnail", group:"Components","props":{ enabled:true,"width":["w-5/12"],"direction":["flex-column"],"gap":["gap-2"],"flex":["flex-0"]},"items":[]},{ type:"Thumbnail", name:"Thumbnail", group:"Components","props":{ enabled:true,"width":["w-5/12"],"direction":["flex-column"],"gap":["gap-2"],"flex":["flex-0"]},"items":[]}],"props":{"direction":["flex-row"],"gap":["gap-4"],enabled:true,"overflow":["overflow-x-scroll"],"width":["w-full"],"minWidth":["min-w-0"]}}],"props":{"direction":["flex-col"],"gap":["gap-2"],enabled:true,"padding":["p-5",""], name:"Thumbnails"}},
8
+
9
+ { type:"Carousel", name:"Image Carousel", group:"Sections", thumbnailUrl:"/images/templates/carousel1.png","items":[{ type:"Image", name:"Image", group:"Components","props":{"src":["/assets/web/banner1.jpg"],enabled:true,"direction":["flex-column"],"gap":["gap-2"],"bdRadius":["rounded-xl"],"aspectRatio":["aspect-[2/1]"],"bgColors":["bg-amber-300"]}},{ type:"Image", name:"Image", group:"Components","props":{"src":["/assets/web/banner1.jpg"],enabled:true,"direction":["flex-column"],"gap":["gap-2"],"bdRadius":["rounded-xl"],"aspectRatio":["aspect-[2/1]"],"bgColors":["bg-lime-300"]}},{ type:"Image", name:"Image", group:"Components","props":{"src":["/assets/web/banner1.jpg"],enabled:true,"direction":["flex-column"],"gap":["gap-2"],"bdRadius":["rounded-xl"],"aspectRatio":["aspect-[2/1]"],"bgColors":["bg-blue-300"]}}],"props":{ enabled:true,"containerGap":["gap-2"],"padding":["p-4",""],"direction":["flex-column"],"gap":["gap-2"],"useLegend":true}},
10
+
11
+ { type:"Link", name:"Icon Link", group:"Sections", thumbnailUrl:"/images/templates/icon-link.png","props":{ enabled:true,name:"Icon Link"},"items":[{ type:"Image", name:"Image", group:"Components","props":{"src":[],enabled:true,"direction":["flex-column"],"gap":["gap-2"]}},{ type:"TextBlock", name:"TextBlock", group:"Components","props":{"htmlText":"","fontWeight":["font-normal"],enabled:true,"direction":["flex-column"],"gap":["gap-2"],"text":"Icon Link 1"}}]},
12
+
13
+ { type:"Carousel", name:"Icon Link Carousel", group:"Sections", thumbnailUrl:"/images/templates/icon-link-carousel.gif", items:[{ type:"Grid", name:"Grid", group:"Components", thumbnailUrl:"/images/templates/grid1.png","items":[{ type:"Link", name:"Icon Link", group:"Sections","props":{ enabled:true,"display":["flex"],"direction":["flex-col"],"gap":["gap-2"],"flexAlign":["items-center"], name:"Icon Link"},"items":[{ type:"Image", name:"Image", group:"Components","props":{"src":["059bae0eadf1b650f3acff7dd1e7433a.png"],enabled:true,"direction":["flex-column"],"gap":["gap-2"]}},{ type:"TextBlock", name:"TextBlock", group:"Components","props":{"htmlText":"",enabled:true,"direction":["flex-column"],"gap":["gap-2"],"text":"Link 1","fontSize":["text-sm"]}}]},{ type:"Link", name:"Icon Link", group:"Sections","props":{ enabled:true,"display":["flex"],"direction":["flex-col"],"gap":["gap-2"],"flexAlign":["items-center"], name:"Icon Link"},"items":[{ type:"Image", name:"Image", group:"Components","props":{"src":["c7e8d12c0dcda3b9d3b2862559a8bc2e.png"],enabled:true,"direction":["flex-column"],"gap":["gap-2"]}},{ type:"TextBlock", name:"TextBlock", group:"Components","props":{"htmlText":"",enabled:true,"direction":["flex-column"],"gap":["gap-2"],"text":"Link 2","fontSize":["text-sm"]}}]},{ type:"Link", name:"Icon Link", group:"Sections","props":{ enabled:true,"display":["flex"],"direction":["flex-col"],"gap":["gap-2"],"flexAlign":["items-center"], name:"Icon Link"},"items":[{ type:"Image", name:"Image", group:"Components","props":{"src":["47bcb782edfc426c8506664cc3b320e7.png"],enabled:true,"direction":["flex-column"],"gap":["gap-2"]}},{ type:"TextBlock", name:"TextBlock", group:"Components","props":{"htmlText":"",enabled:true,"direction":["flex-column"],"gap":["gap-2"],"text":"Link 3","fontSize":["text-sm"]}}]},{ type:"Link", name:"Icon Link", group:"Sections","props":{ enabled:true,"display":["flex"],"direction":["flex-col"],"gap":["gap-2"],"flexAlign":["items-center"], name:"Icon Link"},"items":[{ type:"Image", name:"Image", group:"Components","props":{"src":["01e5a3e8f0e89562a7f6a5449be44614.png"],enabled:true,"direction":["flex-column"],"gap":["gap-2"]}},{ type:"TextBlock", name:"TextBlock", group:"Components","props":{"htmlText":"",enabled:true,"direction":["flex-column"],"gap":["gap-2"],"text":"Link 4","fontSize":["text-sm"]}}]},{ type:"Link", name:"Icon Link", group:"Sections","props":{ enabled:true,"display":["flex"],"direction":["flex-col"],"gap":["gap-2"],"flexAlign":["items-center"], name:"Icon Link"},"items":[{ type:"Image", name:"Image", group:"Components","props":{"src":["7d7cc53e346aa5abf1f1ada463ed0e5c.png"],enabled:true,"direction":["flex-column"],"gap":["gap-2"]}},{ type:"TextBlock", name:"TextBlock", group:"Components","props":{"htmlText":"",enabled:true,"direction":["flex-column"],"gap":["gap-2"],"text":"Link 5","fontSize":["text-sm"]}}]},{ type:"Link", name:"Icon Link", group:"Sections","props":{ enabled:true,"display":["flex"],"direction":["flex-col"],"gap":["gap-2"],"flexAlign":["items-center"], name:"Icon Link"},"items":[{ type:"Image", name:"Image", group:"Components","props":{"src":["4a1d1808e9f1be18f0ba18322647a11e.png"],enabled:true,"direction":["flex-column"],"gap":["gap-2"]}},{ type:"TextBlock", name:"TextBlock", group:"Components","props":{"htmlText":"",enabled:true,"direction":["flex-column"],"gap":["gap-2"],"text":"Link 6","fontSize":["text-sm"]}}]},{ type:"Link", name:"Icon Link", group:"Sections","props":{ enabled:true,"display":["flex"],"direction":["flex-col"],"gap":["gap-2"],"flexAlign":["items-center"], name:"Icon Link"},"items":[{ type:"Image", name:"Image", group:"Components","props":{"src":["1b7f9673aeee9ebdf305658a54c63dc8.png"],enabled:true,"direction":["flex-column"],"gap":["gap-2"]}},{ type:"TextBlock", name:"TextBlock", group:"Components","props":{"htmlText":"",enabled:true,"direction":["flex-column"],"gap":["gap-2"],"text":"Link 7","fontSize":["text-sm"]}}]},{ type:"Link", name:"Icon Link", group:"Sections","props":{ enabled:true,"display":["flex"],"direction":["flex-col"],"gap":["gap-2"],"flexAlign":["items-center"], name:"Icon Link"},"items":[{ type:"Image", name:"Image", group:"Components","props":{"src":["71828d52f682527cd500c1ba6c2a9ef0.png"],enabled:true,"direction":["flex-column"],"gap":["gap-2"]}},{ type:"TextBlock", name:"TextBlock", group:"Components","props":{"htmlText":"",enabled:true,"direction":["flex-column"],"gap":["gap-2"],"text":"Link 8","fontSize":["text-sm"]}}]}],"gap":[],"props":{"columns":["grid-cols-4"],"gap":["gap-5"],enabled:true,"direction":["flex-column"],"padding":["p-5",""]}},{ type:"Grid", name:"Grid", group:"Components", thumbnailUrl:"/images/templates/grid1.png","items":[{ type:"Link", name:"Icon Link", group:"Sections","props":{ enabled:true,"display":["flex"],"direction":["flex-col"],"gap":["gap-2"],"flexAlign":["items-center"], name:"Icon Link"},"items":[{ type:"Image", name:"Image", group:"Components","props":{"src":["71828d52f682527cd500c1ba6c2a9ef0.png"],enabled:true,"direction":["flex-column"],"gap":["gap-2"]}},{ type:"TextBlock", name:"TextBlock", group:"Components","props":{"htmlText":"",enabled:true,"direction":["flex-column"],"gap":["gap-2"],"text":"Link 9","fontSize":["text-sm"]}}]},{ type:"Link", name:"Icon Link", group:"Sections","props":{ enabled:true,"display":["flex"],"direction":["flex-col"],"gap":["gap-2"],"flexAlign":["items-center"], name:"Icon Link"},"items":[{ type:"Image", name:"Image", group:"Components","props":{"src":["059bae0eadf1b650f3acff7dd1e7433a.png"],enabled:true,"direction":["flex-column"],"gap":["gap-2"]}},{ type:"TextBlock", name:"TextBlock", group:"Components","props":{"htmlText":"",enabled:true,"direction":["flex-column"],"gap":["gap-2"],"text":"Link 10","fontSize":["text-sm"]}}]},{ type:"Link", name:"Icon Link", group:"Sections","props":{ enabled:true,"display":["flex"],"direction":["flex-col"],"gap":["gap-2"],"flexAlign":["items-center"], name:"Icon Link"},"items":[{ type:"Image", name:"Image", group:"Components","props":{"src":["4a1d1808e9f1be18f0ba18322647a11e.png"],enabled:true,"direction":["flex-column"],"gap":["gap-2"]}},{ type:"TextBlock", name:"TextBlock", group:"Components","props":{"htmlText":"",enabled:true,"direction":["flex-column"],"gap":["gap-2"],"text":"Link 11","fontSize":["text-sm"]}}]},{ type:"Link", name:"Icon Link", group:"Sections","props":{ enabled:true,"display":["flex"],"direction":["flex-col"],"gap":["gap-2"],"flexAlign":["items-center"], name:"Icon Link"},"items":[{ type:"Image", name:"Image", group:"Components","props":{"src":["7d7cc53e346aa5abf1f1ada463ed0e5c.png"],enabled:true,"direction":["flex-column"],"gap":["gap-2"]}},{ type:"TextBlock", name:"TextBlock", group:"Components","props":{"htmlText":"",enabled:true,"direction":["flex-column"],"gap":["gap-2"],"text":"Link 12","fontSize":["text-sm"]}}]},{ type:"Link", name:"Icon Link", group:"Sections","props":{ enabled:true,"display":["flex"],"direction":["flex-col"],"gap":["gap-2"],"flexAlign":["items-center"], name:"Icon Link"},"items":[{ type:"Image", name:"Image", group:"Components","props":{"src":["47bcb782edfc426c8506664cc3b320e7.png"],enabled:true,"direction":["flex-column"],"gap":["gap-2"]}},{ type:"TextBlock", name:"TextBlock", group:"Components","props":{"htmlText":"",enabled:true,"direction":["flex-column"],"gap":["gap-2"],"text":"Link 13","fontSize":["text-sm"]}}]},{ type:"Link", name:"Icon Link", group:"Sections","props":{ enabled:true,"display":["flex"],"direction":["flex-col"],"gap":["gap-2"],"flexAlign":["items-center"], name:"Icon Link"},"items":[{ type:"Image", name:"Image", group:"Components","props":{"src":["c7e8d12c0dcda3b9d3b2862559a8bc2e.png"],enabled:true,"direction":["flex-column"],"gap":["gap-2"]}},{ type:"TextBlock", name:"TextBlock", group:"Components","props":{"htmlText":"",enabled:true,"direction":["flex-column"],"gap":["gap-2"],"text":"Link 14","fontSize":["text-sm"]}}]},{ type:"Link", name:"Icon Link", group:"Sections","props":{ enabled:true,"display":["flex"],"direction":["flex-col"],"gap":["gap-2"],"flexAlign":["items-center"], name:"Icon Link"},"items":[{ type:"Image", name:"Image", group:"Components","props":{"src":["4a1d1808e9f1be18f0ba18322647a11e.png"],enabled:true,"direction":["flex-column"],"gap":["gap-2"]}},{ type:"TextBlock", name:"TextBlock", group:"Components","props":{"htmlText":"",enabled:true,"direction":["flex-column"],"gap":["gap-2"],"text":"Link 15","fontSize":["text-sm"]}}]},{ type:"Link", name:"Icon Link", group:"Sections","props":{ enabled:true,"display":["flex"],"direction":["flex-col"],"gap":["gap-2"],"flexAlign":["items-center"], name:"Icon Link"},"items":[{ type:"Image", name:"Image", group:"Components","props":{"src":["059bae0eadf1b650f3acff7dd1e7433a.png"],enabled:true,"direction":["flex-column"],"gap":["gap-2"]}},{ type:"TextBlock", name:"TextBlock", group:"Components","props":{"htmlText":"",enabled:true,"direction":["flex-column"],"gap":["gap-2"],"text":"Link 16","fontSize":["text-sm"]}}]}],"gap":[],"props":{"columns":["grid-cols-4"],"gap":["gap-5"],enabled:true,"direction":["flex-column"],"padding":["p-5",""]}}],"props":{ enabled:true,"containerGap":["gap-2"],"padding":["p-4",""],"direction":["flex-column"],"gap":["gap-2"],"useLegend":true,"bgColors":["bg-gray-200"], name:"Icon Link Carousel"}},
14
+
15
+ { type:'ContactForm', name:'Contact Form', group:'Widgets', thumbnailUrl:"/images/templates/contact-form1.png", props:{
16
+ fields:[
17
+ { type:'name', label:'Nama', required:true },
18
+ { type:'mobileNumber', label:'Nomor HP', required:true },
19
+ { type:'remark', label:'Pertanyaan' },
20
+ ],
21
+ title: 'Contact Us',
22
+ description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent gravida erat eget nisi',
23
+ submitMethod: 'post',
24
+ submitUrl: '/inquiry',
25
+ onSubmit:[],
26
+ }},
27
+
28
+ { type:'IconList', name:'Icon List', group:'Widgets', props:{
29
+ icons:[], columns:[ 'grid-cols-4' ],
30
+ }},
31
+
32
+ { type:'DataList', name:'Data List', group:'Widgets', props:{}, items:[] },
33
+
34
+ { type:'FAQ', name:'FAQ', group:'Widgets', thumbnailUrl:"/images/templates/faq.gif", props:{ items:[] }},
35
+
36
+ { type:'FeatureList', name:'Feature List', group:'Widgets', props:{ items:[], columns:[], variant:['variant1'] }},
37
+
38
+ { type:'Review', name:'Review', group:'Widgets', props:{} },
39
+
40
+ { type:'Share', name:'Share To', group:'Widgets', props:{ channels:[] }},
41
+
42
+ { type:'Testimonial', name:'Testimonial', group:'Widgets', props:{} },
43
+
44
+ {
45
+ type:'Header2',
46
+ name:'Header 2',
47
+ group:'Widgets',
48
+ props:{},
49
+ slots:{
50
+ left: [],
51
+ mid: [],
52
+ right: []
53
+ }
54
+ },
55
+
56
+ { type:'ThumbnailList', name:'Thumbnail List', group:'Widgets', props:{ items:[] } },
57
+
58
+ { type:'ProductDetail', name:'Product Detail', props:{}, group:'Widgets' },
59
+
60
+ { type:"Flex", name:"Section 1", group:"Components","items":[{ type:"TextBlock", name:"TextBlock", group:"Components","props":{"htmlText":"","fontSize":["text-4xl"],enabled:true,"text":"Drive more revenue at lower costs\n","fontWeight":["font-semibold"]}},{ type:"Paragraph", name:"Paragraph", group:"Components","props":{"name":"Paragraph",enabled:true,"text":"Reach every customer on their own preferred channel with dynamic, omnichannel campaigns, using channel-responsive templates.","html":"Reach every customer on their own preferred channel with dynamic, omnichannel campaigns, using channel-responsive templates.","maxWidth":["max-w-lg"],"fontSize":["text-xl"]}},{ type:"Flex", name:"Flex", group:"Components","items":[{ type:"Button", name:"Button", group:"Components","props":{"name":"Button","text":"Start Now",enabled:true,"padding":["px-3 py-0"],"fontSize":["text-xl"]}},{ type:"Button", name:"Button", group:"Components","props":{"name":"Button","text":"Contact Sales",enabled:true,"variant":"outline","padding":["p-3"],"fontSize":["text-xl"]}}],"props":{"direction":["flex-row"],"gap":["gap-3"],enabled:true}}],"props":{"direction":["flex-col"],"gap":["gap-4"],enabled:true,"padding":["p-8"],"margin":["mx-auto"],"width":["w-full"],"maxWidth":["max-w-screen-xl"]}},
61
+
62
+ { type:"Carousel", name:"Carousel", group:"Components","items":[],"props":{ enabled:true,"containerGap":["gap-2"],"padding":["p-4",""],"direction":["flex-column"],"gap":["gap-2"],"useLegend":true}},
63
+
64
+ { type:'Link', name:'Link', group:'Components', props:{}, items:[] },
65
+
66
+ { type:'Modal', name:'Modal', group:'Components', props:{}, items:[] },
67
+
68
+ { type:'Thumbnail', name:'Thumbnail', group:'Components', props:{}, items:[] },
69
+
70
+ { type:'Ahref', name:'Ahref', group:'Components', props:{ name:'Ahref', text:'Ahref' } },
71
+
72
+ { type:'Paragraph', name:'Paragraph', group:'Components', thumbnailUrl:"/images/templates/paragraph1.png", props:{ name:'Paragraph' } },
73
+
74
+ { type:'Button', name:'Button', group:'Components', props:{ name:'Button', text:'Button' }},
75
+
76
+ { type:'Flex', name:'Flex', group:'Components', items:[], props:{ direction: [ 'flex-row' ] }},
77
+
78
+ { type:'Grid', name:'Grid', group:'Components', thumbnailUrl:"/images/templates/grid1.png", items:[], gap:[], props:{ columns: [], gap: [] }},
79
+
80
+ { type:'Image', name:'Image', group:'Components', props:{ src:[] }},
81
+
82
+ { type:'EmbeddedVideo', name:'Video', group:'Components', props:{ src:[] }},
83
+
84
+ { type:'Article', name:'Article', group:'Components', props:{
85
+ htmlText:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed convallis odio at odio dapibus, " +
86
+ "eget molestie risus semper. Aenean magna tellus, aliquet nec tristique eget, lacinia nec urna.",
87
+ }},
88
+
89
+ { type:'Table', name:'Table', group:'Components', props:{ items: [] }},
90
+
91
+ { type:'TextBlock', name:'TextBlock', group:'Components', props:{
92
+ htmlText:'',
93
+ fontFamily:[], fontSize:[], fontWeight:[], textColor:[]
94
+ }},
95
+
96
+ { type:'Block', name:'Block', group:'Components', items:[], props:{}},
97
+
98
+ { type:'Countdown', name:'Countdown', group:'Components', props:{}},
99
+
100
+ { type:'YoutubeVideo', name:'Youtube Video', group:'Components', props:{ name:"Youtube Video", delay:"0" }},
101
+
102
+ { type:'Svg', name:'Svg', group:'Components', props:{}},
103
+
104
+ { type:'MenuItem1', name:'Menu Item 1', group:'Components', props:{}},
105
+
106
+ { type:'CollapsiblePanel', name:'Collapsible Panel', group:'Components', props:{}, items:[] },
107
+
108
+ { type:'AccountIcon', name:'Account Icon', group:'Components', props:{} },
109
+ { type:'CartIcon', name:'Cart Icon', group:'Components', props:{} },
110
+ { type:'SearchModal', name:'Search Modal', group:'Components', props:{} },
111
+ { type:'404', name:'Page 404', group:'Components', props:{} },
112
+
113
+ { type:'Cart', name:'Cart', group:'Components', props:{ apiUrl:'/cart' } },
114
+ { type:'Checkout', name:'Checkout', group:'Components', props:{ apiUrl:'/checkout' } },
115
+
116
+ ]
117
+
118
+ }
@@ -0,0 +1,26 @@
1
+ // directives/intersect.js
2
+ export default {
3
+ mounted(el, binding) {
4
+ const callback = binding.value;
5
+
6
+ const observer = new IntersectionObserver(
7
+ (entries) => {
8
+ entries.forEach(entry => {
9
+ callback({
10
+ inViewport: entry.isIntersecting,
11
+ entry
12
+ });
13
+ });
14
+ },
15
+ {
16
+ threshold: 0.1, // adjust sensitivity
17
+ }
18
+ );
19
+
20
+ observer.observe(el);
21
+ el._observer = observer;
22
+ },
23
+ unmounted(el) {
24
+ if (el._observer) el._observer.disconnect();
25
+ }
26
+ };
@@ -0,0 +1,14 @@
1
+ import {reactive} from "vue";
2
+
3
+ export function useDevice(){
4
+
5
+ const device = reactive({
6
+ type: 'mobile',
7
+ media: '',
8
+ mediaIndex: 0
9
+ })
10
+
11
+ return {
12
+ device
13
+ }
14
+ }
package/src/index.js CHANGED
@@ -1,38 +1,25 @@
1
- import {defineAsyncComponent, reactive} from "vue"
2
- import {observeInit} from './utils/helpers.mjs'
3
- import throttle from "lodash/throttle"
1
+ import {defineAsyncComponent, ref} from "vue"
2
+ import {arrayPush, arrayRemove, arrayUnshift, downloadUrl, invokeAfterIdle, observeInit} from './utils/helpers.mjs'
4
3
  import dayjs from "dayjs";
5
- import groupBy from "lodash/groupBy";
4
+ import {useDevice} from './hooks/device.js'
5
+ import IntersectDirective from './directives/intersect';
6
6
 
7
7
 
8
8
  let _UNIQID = 0
9
9
  const uniqid = (additionalKey = '') => {
10
- return 'u' + Math.random().toString(36).substr(2) + Date.now().toString(36)
10
+ return 'u' + (++_UNIQID)
11
11
  }
12
12
 
13
13
  const mediaBreakpoints = [
14
14
  [ 640, 'sm:' ],
15
15
  [ 768, 'md:' ],
16
- [ 1024, 'lg:' ],
17
16
  [ 1280, 'xl:' ],
18
17
  [ 1536, '2xl:' ],
19
18
  ]
20
19
 
21
- const download = (url, as) => {
22
- url = url + (url.indexOf('?') >= 0 ? '&' : '?') + 'nocache=' + new Date().getTime()
20
+ const { device } = useDevice()
23
21
 
24
- const downloader = document.createElement('a')
25
- downloader.setAttribute('href', url)
26
- downloader.target = '_blank'
27
- if(as) downloader.download = as
28
- document.body.appendChild(downloader)
29
22
 
30
- downloader.click()
31
-
32
- window.setTimeout(() => {
33
- document.body.removeChild(downloader)
34
- }, 100)
35
- }
36
23
 
37
24
  let preloads = []
38
25
 
@@ -208,83 +195,11 @@ const util = {
208
195
  window.addEventListener('mouseup', onMouseUp)
209
196
  },
210
197
 
211
- push: (arr, items, opt = { update:true }) => {
212
- if(!Array.isArray(arr)) return
213
- if(!Array.isArray(items)) items = [ items ]
214
- if(!opt.key){
215
- opt.key = items[0] && items[0].uid ? 'uid' : 'id'
216
- }
217
-
218
- for(let item of items){
219
- if(!item) continue
220
-
221
- const index = arr.findIndex((_) => _[opt.key] === item[opt.key])
222
- if(index >= 0){
223
- if(opt.update !== false){
224
- Object.assign(arr[index], item)
225
- }
226
- }
227
- else{
228
- arr.push(item)
229
- }
230
- }
231
- },
198
+ push: arrayPush,
232
199
 
233
- remove: (arr, items, opt = {}) => {
234
- if(!Array.isArray(arr)) return
235
- if(!Array.isArray(items)) items = [ items ]
236
- if(!opt.key){
237
- opt.key = items[0] && items[0].uid ? 'uid' : 'id'
238
- }
239
-
240
- items = groupBy(items, opt.key)
241
-
242
- for(let i = arr.length - 1 ; i >= 0 ; i--){
243
- if(!arr[i]) continue
244
-
245
- if(arr[i][opt.key] in items){
246
- arr.splice(i, 1)
247
- }
248
- }
249
- },
250
-
251
- unshift: (arr, items, opt = {}) => {
252
- if(!Array.isArray(arr)) return
253
- if(!Array.isArray(items)) items = [ items ]
254
- if(items.length < 1) return
255
-
256
- if(!opt.key){
257
- opt.key = items[0] && items[0].uid ? 'uid' : 'id'
258
- }
200
+ remove: arrayRemove,
259
201
 
260
- opt = Object.assign({ key:"id", highlight:false }, opt)
261
-
262
- for(let item of items) {
263
- if (!item) continue
264
-
265
- const index = arr.findIndex((_) => _[opt.key] === item[opt.key])
266
- if(index >= 0){
267
-
268
- const keys = []
269
- for(let key in item){
270
- if(!(key in arr[index]) || arr[index][key] !== item[key]){
271
- keys.push(key)
272
- }
273
- }
274
-
275
- if(opt.highlight){
276
- item._highlight = keys
277
- }
278
- Object.assign(arr[index], item)
279
- }
280
- else{
281
- if(opt.highlight){
282
- item._highlight = true
283
- }
284
- arr.unshift(item)
285
- }
286
- }
287
- },
202
+ unshift: arrayUnshift,
288
203
 
289
204
  removeEmpty(array, emptyValues = [ '', '{}', '[]' ]){
290
205
  if(!Array.isArray(array)) return
@@ -400,9 +315,10 @@ export default{
400
315
 
401
316
  const privateVars = {}
402
317
 
318
+ app.config.globalProperties.$t = t => t
403
319
  app.config.globalProperties.uniqid = uniqid
404
320
  app.config.globalProperties.formatDate = formatDate
405
- app.config.globalProperties.$download = download
321
+ app.config.globalProperties.$download = downloadUrl
406
322
  app.config.globalProperties.$preload = preload
407
323
  app.config.globalProperties.$popPreloads = popPreloads
408
324
  app.config.globalProperties.$util = util
@@ -414,11 +330,7 @@ export default{
414
330
  app.config.globalProperties.time = consoleTime
415
331
  app.config.globalProperties.timeLog = consoleTimeLog
416
332
  app.config.globalProperties.timeEnd = consoleTimeEnd
417
- app.config.globalProperties.$device = reactive({
418
- type: 'mobile',
419
- media: '',
420
- mediaIndex: 0
421
- })
333
+ app.config.globalProperties.$device = device
422
334
  app.config.globalProperties.$isDebugMode = () => {
423
335
  if(!('isDebugMode' in privateVars)){
424
336
  privateVars.isDebugMode = location.search.indexOf('debug-mode') >= 0 ||
@@ -443,7 +355,7 @@ export default{
443
355
  switch(_value){
444
356
 
445
357
  case 'required':
446
- if(!(key in obj)){
358
+ if(!(key in obj) || obj[key] === ''){
447
359
  keyErrors.push(`${key} is required`)
448
360
  }
449
361
  break
@@ -461,6 +373,8 @@ export default{
461
373
  errors :
462
374
  undefined
463
375
  }
376
+ app.config.globalProperties.$mounted = ref(false)
377
+ app.config.globalProperties.$editMode = ref(0)
464
378
 
465
379
  if(typeof window !== 'undefined') {
466
380
 
@@ -468,14 +382,14 @@ export default{
468
382
  app.config.globalProperties.$observe = observeInit()
469
383
  }
470
384
 
471
- const onWindowResize = throttle(() => {
385
+ const onWindowResize = invokeAfterIdle(() => {
472
386
  Object.assign(app.config.globalProperties.$device, {
473
387
  type: getDeviceType(),
474
388
  ...util.calculateMediaPrefix(document.documentElement.clientWidth)
475
389
  })
476
390
 
477
391
  resizeEvents.forEach((fn) => fn())
478
- }, 300, {leading: true})
392
+ }, 100)
479
393
  window.addEventListener('resize', onWindowResize)
480
394
 
481
395
  app.config.globalProperties.$addResizeListener = (el, fn) => {
@@ -509,23 +423,30 @@ export default{
509
423
  ...util.calculateMediaPrefix(document.documentElement.clientWidth)
510
424
  })
511
425
  }
426
+
427
+ app.config.globalProperties.$mounted.value = true
512
428
  }
513
429
 
430
+ app.directive('intersect', IntersectDirective)
431
+
514
432
  app.component('Ahref', defineAsyncComponent(() => import("./components/Ahref.vue")))
515
433
  app.component('Paragraph', defineAsyncComponent(() => import("./components/Paragraph.vue")))
516
434
  app.component('Alert', defineAsyncComponent(() => import("./components/Alert.vue")))
435
+ app.component('ArrayList', defineAsyncComponent(() => import("./components/ArrayList.vue")))
517
436
  app.component('Article', defineAsyncComponent(() => import("./components/Article.vue")))
518
437
  app.component('Block', defineAsyncComponent(() => import("./components/Block.vue")))
519
438
  app.component('Button', defineAsyncComponent(() => import("./components/Button.vue")))
520
439
  app.component('Box', defineAsyncComponent(() => import("./components/Box.vue")))
440
+ app.component('Card', defineAsyncComponent(() => import("./components/Card.vue")))
521
441
  app.component('ChartBar', defineAsyncComponent(() => import("./components/ChartBar.vue")))
522
442
  app.component('ColorPicker', defineAsyncComponent(() => import("./components/ColorPicker.vue")))
523
443
  app.component('ColorPicker2', defineAsyncComponent(() => import("./components/ColorPicker2.vue")))
444
+ app.component('ColorPicker3', defineAsyncComponent(() => import("./components/ColorPicker3.vue")))
524
445
  app.component('Confirm', defineAsyncComponent(() => import("./components/Confirm.vue")))
525
- app.component('SearchButton', defineAsyncComponent(() => import("./components/SearchButton.vue")))
526
446
  app.component('ChatTyping', defineAsyncComponent(() => import("./components/ChatTyping.vue")))
527
447
  app.component('Checkbox', defineAsyncComponent(() => import("./components/Checkbox.vue")))
528
448
  app.component('CodeEditor', defineAsyncComponent(() => import("./components/CodeEditor.vue")))
449
+ app.component('SvgEditor', defineAsyncComponent(() => import("./components/SvgEditor.vue")))
529
450
  app.component('CopyToClipboard', defineAsyncComponent(() => import("./components/CopyToClipboard.vue")))
530
451
  app.component('Countdown', defineAsyncComponent(() => import("./components/Countdown.vue")))
531
452
  app.component('Datepicker', defineAsyncComponent(() => import("./components/Datepicker.vue")))
@@ -540,6 +461,8 @@ export default{
540
461
  app.component('IconMenu2', defineAsyncComponent(() => import("./components/IconMenu2.vue")))
541
462
  app.component('IconPlus', defineAsyncComponent(() => import("./components/IconPlus.vue")))
542
463
  app.component('Image', defineAsyncComponent(() => import("./components/Image.vue")))
464
+ app.component('ImageUploader', defineAsyncComponent(() => import("./components/ImageUploader.vue")))
465
+ app.component('Video', defineAsyncComponent(() => import("./components/Video.vue")))
543
466
  app.component('Image360', defineAsyncComponent(() => import("./components/Image360.vue")))
544
467
  app.component('ImagePreview', defineAsyncComponent(() => import("./components/ImagePreview.vue")))
545
468
  app.component('ImageFullScreen', defineAsyncComponent(() => import("./components/ImageFullScreen.vue")))
@@ -555,8 +478,11 @@ export default{
555
478
  app.component('ListViewTableSummary', defineAsyncComponent(() => import("./components/ListViewTableSummary.vue")))
556
479
  app.component('ListViewLineSummary', defineAsyncComponent(() => import("./components/ListViewLineSummary.vue")))
557
480
  app.component('ListViewMapSummary', defineAsyncComponent(() => import("./components/ListViewMapSummary.vue")))
481
+ app.component('MultiDropdown', defineAsyncComponent(() => import("./components/MultiDropdown.vue")))
558
482
  app.component('Carousel', defineAsyncComponent(() => import("./components/Carousel.vue")))
559
483
  app.component('ContextMenu', defineAsyncComponent(() => import("./components/ContextMenu.vue")))
484
+ app.component('ContextMenuItem', defineAsyncComponent(() => import("./components/ContextMenuItem.vue")))
485
+ app.component('ListContextMenu', defineAsyncComponent(() => import("./components/ListContextMenu.vue")))
560
486
  app.component('FAQ', defineAsyncComponent(() => import("./widgets/FAQ.vue")))
561
487
  app.component('Flex', defineAsyncComponent(() => import("./components/Flex.vue")))
562
488
  app.component('Grid', defineAsyncComponent(() => import("./components/Grid.vue")))
@@ -574,6 +500,9 @@ export default{
574
500
  app.component('Toast', defineAsyncComponent(() => import("./components/Toast.vue")))
575
501
  app.component('TreeView', defineAsyncComponent(() => import("./components/TreeView.vue")))
576
502
  app.component('TreeViewItem', defineAsyncComponent(() => import("./components/TreeViewItem.vue")))
503
+ app.component('TreeView2', defineAsyncComponent(() => import("./components/TreeView2.vue")))
504
+ app.component('TreeViewItem2', defineAsyncComponent(() => import("./components/TreeViewItem2.vue")))
505
+ app.component('Uploader', defineAsyncComponent(() => import("./components/Uploader.vue")))
577
506
  app.component('VirtualGrid', defineAsyncComponent(() => import("./components/VirtualGrid.vue")))
578
507
  app.component('VirtualScroll', defineAsyncComponent(() => import("./components/VirtualScroll.vue")))
579
508
  app.component('VirtualTable', defineAsyncComponent(() => import("./components/VirtualTable.vue")))
@@ -619,13 +548,15 @@ export default{
619
548
  app.component('FAQSetting', defineAsyncComponent(() => import("./widgets/FAQSetting.vue")))
620
549
  app.component('FeatureList', defineAsyncComponent(() => import("./widgets/FeatureList.vue")))
621
550
  app.component('FeatureListSetting', defineAsyncComponent(() => import("./widgets/FeatureListSetting.vue")))
551
+ app.component('BackgroundColorSetting', defineAsyncComponent(() => import("./widgets/BackgroundColorSetting.vue")))
552
+ app.component('BorderColorSetting', defineAsyncComponent(() => import("./widgets/BorderColorSetting.vue")))
622
553
  app.component('FlexSetting', defineAsyncComponent(() => import("./widgets/FlexSetting.vue")))
623
554
  app.component('GridSetting', defineAsyncComponent(() => import("./widgets/GridSetting.vue")))
624
555
  app.component('Header', defineAsyncComponent(() => import("./widgets/Header.vue")))
625
- app.component('Header1', defineAsyncComponent(() => import("./widgets/Header1.vue")))
556
+ app.component('Header0', defineAsyncComponent(() => import("./widgets/Header0.vue")))
626
557
  app.component('Header2', defineAsyncComponent(() => import("./widgets/Header2.vue")))
627
558
  app.component('HeaderSetting', defineAsyncComponent(() => import("./widgets/HeaderSetting.vue")))
628
- app.component('Header1Setting', defineAsyncComponent(() => import("./widgets/Header1Setting.vue")))
559
+ app.component('Header0Setting', defineAsyncComponent(() => import("./widgets/Header0Setting.vue")))
629
560
  app.component('Header2Setting', defineAsyncComponent(() => import("./widgets/Header2Setting.vue")))
630
561
  app.component('IconList', defineAsyncComponent(() => import("./widgets/IconList.vue")))
631
562
  app.component('IconListSetting', defineAsyncComponent(() => import("./widgets/IconListSetting.vue")))
@@ -635,6 +566,7 @@ export default{
635
566
  app.component('MarginPaddingSetting', defineAsyncComponent(() => import("./widgets/MarginPaddingSetting.vue")))
636
567
  app.component('MultiValueSetting', defineAsyncComponent(() => import("./widgets/MultiValueSetting.vue")))
637
568
  app.component('MultiValueSetting2', defineAsyncComponent(() => import("./widgets/MultiValueSetting2.vue")))
569
+ app.component('PositionSetting', defineAsyncComponent(() => import("./widgets/PositionSetting.vue")))
638
570
  app.component('PaddingSetting', defineAsyncComponent(() => import("./widgets/PaddingSetting.vue")))
639
571
  app.component('ParagraphSetting', defineAsyncComponent(() => import("./widgets/ParagraphSetting.vue")))
640
572
  app.component('Review', defineAsyncComponent(() => import("./widgets/Review.vue")))
@@ -678,16 +610,39 @@ export default{
678
610
  app.component('TypographySetting', defineAsyncComponent(() => import("./widgets/TypographySetting.vue")))
679
611
  app.component('FiltersSetting', defineAsyncComponent(() => import("./widgets/FiltersSetting.vue")))
680
612
  app.component('MenuEditor', defineAsyncComponent(() => import("./widgets/MenuEditor.vue")))
681
- app.component('Dashboard', defineAsyncComponent(() => import("./widgets/Dashboard.vue")))
613
+ app.component('Dashboard', defineAsyncComponent(() => import("./components/Dashboard.vue")))
614
+ app.component('Dashboard2', defineAsyncComponent(() => import("./components/Dashboard2.vue")))
682
615
  app.component('Text', defineAsyncComponent(() => import("./components/Text.vue")))
616
+ app.component('MenuItem1', defineAsyncComponent(() => import("./components/MenuItem1.vue")))
617
+ app.component('MenuItem1Setting', defineAsyncComponent(() => import("./widgets/MenuItem1Setting.vue")))
618
+ app.component('CollapsiblePanel', defineAsyncComponent(() => import("./components/CollapsiblePanel.vue")))
619
+ app.component('CollapsiblePanelSetting', defineAsyncComponent(() => import("./widgets/CollapsiblePanelSetting.vue")))
620
+ app.component('VirtualTableSetting', defineAsyncComponent(() => import("./widgets/Dashboard/VirtualTableSetting.vue")))
683
621
 
684
622
  app.component('Doughnut', defineAsyncComponent(() => import("./widgets/Dashboard/Doughnut.vue")))
685
623
  app.component('Pie', defineAsyncComponent(() => import("./widgets/Dashboard/Pie.vue")))
686
624
  app.component('PolarArea', defineAsyncComponent(() => import("./widgets/Dashboard/PolarArea.vue")))
687
625
  app.component('Metric', defineAsyncComponent(() => import("./widgets/Dashboard/Metric.vue")))
688
626
  app.component('BarChart', defineAsyncComponent(() => import("./widgets/Dashboard/BarChart.vue")))
627
+ app.component('DataTable', defineAsyncComponent(() => import("./widgets/Dashboard/DataTable.vue")))
689
628
 
690
629
  app.component('BotEditor', defineAsyncComponent(() => import("./widgets/BotEditor.vue")))
630
+
631
+ app.component('AccountIcon', defineAsyncComponent(() => import("./components/AccountIcon.vue")))
632
+ app.component('CartIcon', defineAsyncComponent(() => import("./components/CartIcon.vue")))
633
+
634
+ app.component('SearchModal', defineAsyncComponent(() => import("./components/SearchModal.vue")))
635
+ app.component('SearchModalSetting', defineAsyncComponent(() => import("./widgets/SearchModalSetting.vue")))
636
+
637
+ app.component('404', defineAsyncComponent(() => import("./components/404.vue")))
638
+ app.component('Cart', defineAsyncComponent(() => import("./components/Cart.vue")))
639
+ app.component('CartSetting', defineAsyncComponent(() => import("./widgets/CartSetting.vue")))
640
+
641
+ app.component('Checkout', defineAsyncComponent(() => import("./components/Checkout.vue")))
642
+ app.component('CheckoutSetting', defineAsyncComponent(() => import("./widgets/CheckoutSetting.vue")))
643
+ app.component('TreeMenu', defineAsyncComponent(() => import("./components/TreeMenu.vue")))
644
+ app.component('MarkdownEdit', defineAsyncComponent(() => import("./components/MarkdownEdit.vue")))
645
+ app.component('MarkdownPreview', defineAsyncComponent(() => import("./components/MarkdownPreview.vue")))
691
646
  }
692
647
 
693
648
  }