pukaad-ui-lib 1.282.0 → 1.282.2

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 (346) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/runtime/assets/json/social-icon.json +76 -76
  3. package/dist/runtime/assets/svg/bell-outline.svg +3 -3
  4. package/dist/runtime/assets/svg/bookmark-solid.svg +2 -2
  5. package/dist/runtime/assets/svg/box.svg +22 -22
  6. package/dist/runtime/assets/svg/camera-plus.svg +9 -9
  7. package/dist/runtime/assets/svg/clock-fading.svg +46 -46
  8. package/dist/runtime/assets/svg/coin.svg +20 -20
  9. package/dist/runtime/assets/svg/empty-document.svg +15 -15
  10. package/dist/runtime/assets/svg/map-location-dot.svg +9 -9
  11. package/dist/runtime/assets/svg/map-pin.svg +6 -6
  12. package/dist/runtime/assets/svg/memsg-circle.svg +7 -7
  13. package/dist/runtime/assets/svg/memsg-fade.svg +5 -5
  14. package/dist/runtime/assets/svg/memsg-logo-outline.svg +3 -3
  15. package/dist/runtime/assets/svg/memsg-square.svg +9 -9
  16. package/dist/runtime/assets/svg/message.svg +3 -3
  17. package/dist/runtime/assets/svg/page-not-found.svg +9 -9
  18. package/dist/runtime/assets/svg/share-from-square.svg +3 -3
  19. package/dist/runtime/assets/svg/share.svg +2 -2
  20. package/dist/runtime/assets/svg/shopping-cart.svg +16 -16
  21. package/dist/runtime/assets/svg/socials/Email.svg +12 -12
  22. package/dist/runtime/assets/svg/socials/Facebook.svg +4 -4
  23. package/dist/runtime/assets/svg/socials/Line.svg +11 -11
  24. package/dist/runtime/assets/svg/socials/LinkedIn.svg +5 -5
  25. package/dist/runtime/assets/svg/socials/Pinterest.svg +4 -4
  26. package/dist/runtime/assets/svg/socials/SnapChat.svg +5 -5
  27. package/dist/runtime/assets/svg/socials/Threads.svg +12 -12
  28. package/dist/runtime/assets/svg/socials/{TikTok.svg → Tiktok.svg} +6 -6
  29. package/dist/runtime/assets/svg/socials/Tumblr.svg +4 -4
  30. package/dist/runtime/assets/svg/socials/Website.svg +11 -11
  31. package/dist/runtime/assets/svg/socials/Whatsapp.svg +5 -5
  32. package/dist/runtime/assets/svg/socials/X.svg +4 -4
  33. package/dist/runtime/assets/svg/socials/{YouTube.svg → Youtube.svg} +5 -5
  34. package/dist/runtime/assets/svg/socials/{Instagram.svg → instagram.svg} +14 -14
  35. package/dist/runtime/assets/svg/tag-empty.svg +25 -25
  36. package/dist/runtime/assets/svg/thumbs-up-regular.svg +9 -9
  37. package/dist/runtime/assets/svg/thumbs-up-solid.svg +2 -2
  38. package/dist/runtime/assets/svg/vector.svg +2 -2
  39. package/dist/runtime/assets/svg/verify.svg +10 -10
  40. package/dist/runtime/assets/svg/write-review.svg +15 -15
  41. package/dist/runtime/components/avatar-profile.vue +29 -29
  42. package/dist/runtime/components/avatar.vue +20 -20
  43. package/dist/runtime/components/button.vue +9 -9
  44. package/dist/runtime/components/card/card-announce2.vue +102 -104
  45. package/dist/runtime/components/card/card-blog.vue +45 -45
  46. package/dist/runtime/components/card/card-place-detail.vue +51 -51
  47. package/dist/runtime/components/card/card-place.vue +28 -28
  48. package/dist/runtime/components/card/card-profile-about.vue +81 -81
  49. package/dist/runtime/components/card/card-profile-header.d.vue.ts +1 -1
  50. package/dist/runtime/components/card/card-profile-header.vue +94 -94
  51. package/dist/runtime/components/card/card-profile-header.vue.d.ts +1 -1
  52. package/dist/runtime/components/card/card-reaction.d.vue.ts +1 -1
  53. package/dist/runtime/components/card/card-reaction.vue +23 -23
  54. package/dist/runtime/components/card/card-reaction.vue.d.ts +1 -1
  55. package/dist/runtime/components/card/card-recommend-blog.vue +42 -42
  56. package/dist/runtime/components/card/card-recommend-place.vue +45 -45
  57. package/dist/runtime/components/card/card-recommend-profile.vue +46 -46
  58. package/dist/runtime/components/card/card-review.vue +57 -57
  59. package/dist/runtime/components/card/card-user-blog.vue +76 -76
  60. package/dist/runtime/components/card/card-user-item.vue +24 -24
  61. package/dist/runtime/components/card/card.vue +29 -29
  62. package/dist/runtime/components/carousel.vue +31 -31
  63. package/dist/runtime/components/chip.vue +10 -10
  64. package/dist/runtime/components/collapse/collapse-multiple.vue +42 -42
  65. package/dist/runtime/components/collapse/collapse.vue +23 -23
  66. package/dist/runtime/components/comment.vue +204 -204
  67. package/dist/runtime/components/data-list.vue +49 -49
  68. package/dist/runtime/components/data-table.vue +131 -131
  69. package/dist/runtime/components/display/display-image-place.d.vue.ts +1 -1
  70. package/dist/runtime/components/display/display-image-place.vue +88 -88
  71. package/dist/runtime/components/display/display-image-place.vue.d.ts +1 -1
  72. package/dist/runtime/components/display/display-image-review.vue +10 -10
  73. package/dist/runtime/components/display/display-image.vue +49 -49
  74. package/dist/runtime/components/display/display-rating-summary.vue +34 -34
  75. package/dist/runtime/components/divider.vue +8 -8
  76. package/dist/runtime/components/draggable.vue +15 -15
  77. package/dist/runtime/components/drawer/drawer-post-blog.vue +70 -70
  78. package/dist/runtime/components/drawer/drawer-post-review.vue +67 -67
  79. package/dist/runtime/components/drawer/drawer-profile-about.vue +52 -52
  80. package/dist/runtime/components/drawer/drawer-profile-network.d.vue.ts +1 -1
  81. package/dist/runtime/components/drawer/drawer-profile-network.vue +136 -136
  82. package/dist/runtime/components/drawer/drawer-profile-network.vue.d.ts +1 -1
  83. package/dist/runtime/components/drawer/drawer-suggest-place/drawer-suggest-place.vue +92 -92
  84. package/dist/runtime/components/drawer/drawer-suggest-place/suggest-place-form.vue +70 -70
  85. package/dist/runtime/components/drawer/drawer-suggest-place/suggest-place-map.vue +5 -5
  86. package/dist/runtime/components/drawer/drawer.vue +24 -24
  87. package/dist/runtime/components/dropdown.vue +8 -8
  88. package/dist/runtime/components/filter/filter-list-chip.vue +10 -10
  89. package/dist/runtime/components/filter/filter-list.vue +17 -17
  90. package/dist/runtime/components/icons.vue +1 -1
  91. package/dist/runtime/components/image/image-cropper.vue +9 -9
  92. package/dist/runtime/components/image/image.vue +27 -27
  93. package/dist/runtime/components/input/input-OTP.vue +27 -27
  94. package/dist/runtime/components/input/input-address.vue +147 -147
  95. package/dist/runtime/components/input/input-autocomplete.d.vue.ts +2 -2
  96. package/dist/runtime/components/input/input-autocomplete.vue +80 -80
  97. package/dist/runtime/components/input/input-autocomplete.vue.d.ts +2 -2
  98. package/dist/runtime/components/input/input-birth-date.vue +20 -20
  99. package/dist/runtime/components/input/input-checkbox.vue +17 -17
  100. package/dist/runtime/components/input/input-combobox.vue +100 -100
  101. package/dist/runtime/components/input/input-comment.vue +6 -6
  102. package/dist/runtime/components/input/input-content.vue +32 -32
  103. package/dist/runtime/components/input/input-date-opening.vue +96 -96
  104. package/dist/runtime/components/input/input-date-picker.vue +102 -102
  105. package/dist/runtime/components/input/input-email.vue +9 -9
  106. package/dist/runtime/components/input/input-file.vue +125 -125
  107. package/dist/runtime/components/input/input-link.vue +35 -35
  108. package/dist/runtime/components/input/input-media.vue +36 -36
  109. package/dist/runtime/components/input/input-password.vue +43 -43
  110. package/dist/runtime/components/input/input-phone.vue +11 -11
  111. package/dist/runtime/components/input/input-profile-name.vue +10 -10
  112. package/dist/runtime/components/input/input-radio.vue +55 -55
  113. package/dist/runtime/components/input/input-rating.vue +13 -13
  114. package/dist/runtime/components/input/input-recaptcha.vue +19 -19
  115. package/dist/runtime/components/input/input-search.vue +71 -71
  116. package/dist/runtime/components/input/input-select-province.vue +94 -94
  117. package/dist/runtime/components/input/input-select-tag.vue +51 -51
  118. package/dist/runtime/components/input/input-select.vue +52 -52
  119. package/dist/runtime/components/input/input-slider.vue +19 -19
  120. package/dist/runtime/components/input/input-switch.vue +25 -25
  121. package/dist/runtime/components/input/input-tag.vue +145 -145
  122. package/dist/runtime/components/input/input-text-field.vue +90 -90
  123. package/dist/runtime/components/input/input-textarea.vue +58 -58
  124. package/dist/runtime/components/label/label-announce-time.vue +9 -9
  125. package/dist/runtime/components/label/label-card-atom.vue +8 -8
  126. package/dist/runtime/components/list/list-menu.vue +13 -13
  127. package/dist/runtime/components/loading.vue +8 -8
  128. package/dist/runtime/components/modal/modal-2FA-generate.vue +48 -48
  129. package/dist/runtime/components/modal/modal-2FA.vue +28 -28
  130. package/dist/runtime/components/modal/modal-account-disabled-alert.vue +33 -33
  131. package/dist/runtime/components/modal/modal-account-disabled-confirmed.vue +32 -32
  132. package/dist/runtime/components/modal/modal-account-disabled-reason.vue +45 -45
  133. package/dist/runtime/components/modal/modal-account-disabled.vue +9 -9
  134. package/dist/runtime/components/modal/modal-display-image.vue +38 -38
  135. package/dist/runtime/components/modal/modal-email-OTP.vue +32 -32
  136. package/dist/runtime/components/modal/modal-forgot-password.vue +9 -9
  137. package/dist/runtime/components/modal/modal-media-view.vue +12 -12
  138. package/dist/runtime/components/modal/modal-password-confirmed.vue +30 -30
  139. package/dist/runtime/components/modal/modal-password-new.vue +14 -14
  140. package/dist/runtime/components/modal/modal-password-verify.vue +13 -13
  141. package/dist/runtime/components/modal/modal-personal-card-ID.vue +167 -167
  142. package/dist/runtime/components/modal/modal-phone-OTP.vue +49 -49
  143. package/dist/runtime/components/modal/modal-profile-edit.vue +69 -71
  144. package/dist/runtime/components/modal/modal-province-domain.vue +23 -23
  145. package/dist/runtime/components/modal/modal-report.vue +47 -47
  146. package/dist/runtime/components/modal/modal-review-detail.vue +118 -118
  147. package/dist/runtime/components/modal/modal-secure.d.vue.ts +1 -1
  148. package/dist/runtime/components/modal/modal-secure.vue +7 -7
  149. package/dist/runtime/components/modal/modal-secure.vue.d.ts +1 -1
  150. package/dist/runtime/components/modal/modal-share.vue +20 -20
  151. package/dist/runtime/components/modal/modal-user-account-search.vue +69 -69
  152. package/dist/runtime/components/modal/modal.vue +27 -27
  153. package/dist/runtime/components/pagination.vue +47 -47
  154. package/dist/runtime/components/picker/picker-image-cover-profile.vue +80 -80
  155. package/dist/runtime/components/picker/picker-image-profile.vue +102 -102
  156. package/dist/runtime/components/picker/picker-option-menu/picker-option-menu-user.vue +18 -18
  157. package/dist/runtime/components/picker/picker-option-menu/picker-option-menu.vue +26 -26
  158. package/dist/runtime/components/profile-cover.vue +80 -80
  159. package/dist/runtime/components/progress-bar.vue +9 -9
  160. package/dist/runtime/components/read-more-text.vue +1 -1
  161. package/dist/runtime/components/tab_old.vue +78 -78
  162. package/dist/runtime/components/table.vue +79 -79
  163. package/dist/runtime/components/tooltip.vue +12 -12
  164. package/dist/runtime/components/ui/accordion/Accordion.vue +3 -3
  165. package/dist/runtime/components/ui/accordion/AccordionContent.vue +9 -9
  166. package/dist/runtime/components/ui/accordion/AccordionItem.vue +8 -8
  167. package/dist/runtime/components/ui/accordion/AccordionTrigger.vue +16 -16
  168. package/dist/runtime/components/ui/alert/Alert.vue +7 -7
  169. package/dist/runtime/components/ui/alert/AlertDescription.vue +6 -6
  170. package/dist/runtime/components/ui/alert/AlertTitle.vue +6 -6
  171. package/dist/runtime/components/ui/alert-dialog/AlertDialog.vue +3 -3
  172. package/dist/runtime/components/ui/alert-dialog/AlertDialogAction.vue +3 -3
  173. package/dist/runtime/components/ui/alert-dialog/AlertDialogCancel.vue +6 -6
  174. package/dist/runtime/components/ui/alert-dialog/AlertDialogContent.d.vue.ts +4 -4
  175. package/dist/runtime/components/ui/alert-dialog/AlertDialogContent.vue +13 -13
  176. package/dist/runtime/components/ui/alert-dialog/AlertDialogContent.vue.d.ts +4 -4
  177. package/dist/runtime/components/ui/alert-dialog/AlertDialogDescription.vue +7 -7
  178. package/dist/runtime/components/ui/alert-dialog/AlertDialogFooter.vue +6 -6
  179. package/dist/runtime/components/ui/alert-dialog/AlertDialogHeader.vue +6 -6
  180. package/dist/runtime/components/ui/alert-dialog/AlertDialogTitle.vue +7 -7
  181. package/dist/runtime/components/ui/alert-dialog/AlertDialogTrigger.vue +3 -3
  182. package/dist/runtime/components/ui/avatar/Avatar.vue +6 -6
  183. package/dist/runtime/components/ui/avatar/AvatarFallback.vue +7 -7
  184. package/dist/runtime/components/ui/avatar/AvatarImage.vue +7 -7
  185. package/dist/runtime/components/ui/badge/Badge.vue +7 -7
  186. package/dist/runtime/components/ui/breadcrumb/Breadcrumb.vue +7 -7
  187. package/dist/runtime/components/ui/breadcrumb/BreadcrumbEllipsis.vue +11 -11
  188. package/dist/runtime/components/ui/breadcrumb/BreadcrumbItem.vue +6 -6
  189. package/dist/runtime/components/ui/breadcrumb/BreadcrumbLink.vue +8 -8
  190. package/dist/runtime/components/ui/breadcrumb/BreadcrumbList.vue +6 -6
  191. package/dist/runtime/components/ui/breadcrumb/BreadcrumbPage.vue +9 -9
  192. package/dist/runtime/components/ui/breadcrumb/BreadcrumbSeparator.vue +10 -10
  193. package/dist/runtime/components/ui/button/Button.vue +8 -8
  194. package/dist/runtime/components/ui/calendar/Calendar.vue +128 -128
  195. package/dist/runtime/components/ui/calendar/CalendarCell.vue +7 -7
  196. package/dist/runtime/components/ui/calendar/CalendarCellTrigger.vue +7 -7
  197. package/dist/runtime/components/ui/calendar/CalendarGrid.vue +7 -7
  198. package/dist/runtime/components/ui/calendar/CalendarGridBody.vue +6 -6
  199. package/dist/runtime/components/ui/calendar/CalendarGridHead.vue +6 -6
  200. package/dist/runtime/components/ui/calendar/CalendarGridRow.vue +6 -6
  201. package/dist/runtime/components/ui/calendar/CalendarHeadCell.vue +7 -7
  202. package/dist/runtime/components/ui/calendar/CalendarHeader.vue +7 -7
  203. package/dist/runtime/components/ui/calendar/CalendarHeading.vue +10 -10
  204. package/dist/runtime/components/ui/calendar/CalendarNextButton.vue +9 -9
  205. package/dist/runtime/components/ui/calendar/CalendarPrevButton.vue +9 -9
  206. package/dist/runtime/components/ui/card/Card.vue +8 -8
  207. package/dist/runtime/components/ui/card/CardAction.vue +6 -6
  208. package/dist/runtime/components/ui/card/CardContent.vue +6 -6
  209. package/dist/runtime/components/ui/card/CardDescription.vue +6 -6
  210. package/dist/runtime/components/ui/card/CardFooter.vue +6 -6
  211. package/dist/runtime/components/ui/card/CardHeader.vue +6 -6
  212. package/dist/runtime/components/ui/card/CardTitle.vue +6 -6
  213. package/dist/runtime/components/ui/carousel/Carousel.vue +10 -10
  214. package/dist/runtime/components/ui/carousel/CarouselContent.vue +12 -12
  215. package/dist/runtime/components/ui/carousel/CarouselItem.vue +8 -8
  216. package/dist/runtime/components/ui/carousel/CarouselNext.vue +13 -13
  217. package/dist/runtime/components/ui/carousel/CarouselPrevious.vue +13 -13
  218. package/dist/runtime/components/ui/checkbox/Checkbox.vue +8 -8
  219. package/dist/runtime/components/ui/command/Command.vue +7 -7
  220. package/dist/runtime/components/ui/command/CommandDialog.vue +11 -11
  221. package/dist/runtime/components/ui/command/CommandEmpty.vue +16 -16
  222. package/dist/runtime/components/ui/command/CommandGroup.vue +16 -16
  223. package/dist/runtime/components/ui/command/CommandInput.vue +13 -13
  224. package/dist/runtime/components/ui/command/CommandItem.vue +11 -11
  225. package/dist/runtime/components/ui/command/CommandList.vue +9 -9
  226. package/dist/runtime/components/ui/command/CommandSeparator.vue +7 -7
  227. package/dist/runtime/components/ui/command/CommandShortcut.vue +6 -6
  228. package/dist/runtime/components/ui/dialog/Dialog.vue +3 -3
  229. package/dist/runtime/components/ui/dialog/DialogClose.vue +3 -3
  230. package/dist/runtime/components/ui/dialog/DialogContent.d.vue.ts +4 -4
  231. package/dist/runtime/components/ui/dialog/DialogContent.vue +26 -26
  232. package/dist/runtime/components/ui/dialog/DialogContent.vue.d.ts +4 -4
  233. package/dist/runtime/components/ui/dialog/DialogDescription.vue +7 -7
  234. package/dist/runtime/components/ui/dialog/DialogFooter.vue +6 -6
  235. package/dist/runtime/components/ui/dialog/DialogHeader.vue +6 -6
  236. package/dist/runtime/components/ui/dialog/DialogOverlay.vue +7 -7
  237. package/dist/runtime/components/ui/dialog/DialogScrollContent.d.vue.ts +4 -4
  238. package/dist/runtime/components/ui/dialog/DialogScrollContent.vue +20 -20
  239. package/dist/runtime/components/ui/dialog/DialogScrollContent.vue.d.ts +4 -4
  240. package/dist/runtime/components/ui/dialog/DialogTitle.vue +7 -7
  241. package/dist/runtime/components/ui/dialog/DialogTrigger.vue +3 -3
  242. package/dist/runtime/components/ui/dropdown-menu/DropdownMenu.vue +6 -6
  243. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +12 -12
  244. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuContent.d.vue.ts +2 -2
  245. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuContent.vue +10 -10
  246. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuContent.vue.d.ts +2 -2
  247. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuGroup.vue +6 -6
  248. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuItem.vue +9 -9
  249. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuLabel.vue +8 -8
  250. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +6 -6
  251. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +16 -16
  252. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSeparator.vue +5 -5
  253. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuShortcut.vue +6 -6
  254. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSub.vue +3 -3
  255. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSubContent.d.vue.ts +4 -4
  256. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSubContent.vue +7 -7
  257. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +4 -4
  258. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +8 -8
  259. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuTrigger.vue +6 -6
  260. package/dist/runtime/components/ui/form/FormControl.vue +8 -8
  261. package/dist/runtime/components/ui/form/FormDescription.vue +7 -7
  262. package/dist/runtime/components/ui/form/FormItem.vue +3 -3
  263. package/dist/runtime/components/ui/form/FormLabel.vue +8 -8
  264. package/dist/runtime/components/ui/form/FormMessage.vue +7 -7
  265. package/dist/runtime/components/ui/input/Input.vue +7 -7
  266. package/dist/runtime/components/ui/input-group/InputGroup.vue +7 -7
  267. package/dist/runtime/components/ui/input-group/InputGroupAddon.vue +9 -9
  268. package/dist/runtime/components/ui/input-group/InputGroupButton.vue +8 -8
  269. package/dist/runtime/components/ui/input-group/InputGroupInput.vue +5 -5
  270. package/dist/runtime/components/ui/input-group/InputGroupText.vue +5 -5
  271. package/dist/runtime/components/ui/input-group/InputGroupTextarea.vue +4 -4
  272. package/dist/runtime/components/ui/label/Label.vue +7 -7
  273. package/dist/runtime/components/ui/native-select/NativeSelect.vue +19 -19
  274. package/dist/runtime/components/ui/native-select/NativeSelectOptGroup.vue +3 -3
  275. package/dist/runtime/components/ui/native-select/NativeSelectOption.vue +3 -3
  276. package/dist/runtime/components/ui/pagination/Pagination.vue +8 -8
  277. package/dist/runtime/components/ui/pagination/PaginationContent.vue +8 -8
  278. package/dist/runtime/components/ui/pagination/PaginationEllipsis.vue +10 -10
  279. package/dist/runtime/components/ui/pagination/PaginationFirst.vue +10 -10
  280. package/dist/runtime/components/ui/pagination/PaginationItem.vue +7 -7
  281. package/dist/runtime/components/ui/pagination/PaginationLast.vue +10 -10
  282. package/dist/runtime/components/ui/pagination/PaginationNext.vue +10 -10
  283. package/dist/runtime/components/ui/pagination/PaginationPrevious.vue +10 -10
  284. package/dist/runtime/components/ui/pin-input/PinInput.vue +7 -7
  285. package/dist/runtime/components/ui/pin-input/PinInputGroup.vue +7 -7
  286. package/dist/runtime/components/ui/pin-input/PinInputSeparator.vue +3 -3
  287. package/dist/runtime/components/ui/pin-input/PinInputSlot.vue +5 -5
  288. package/dist/runtime/components/ui/popover/Popover.vue +7 -7
  289. package/dist/runtime/components/ui/popover/PopoverAnchor.vue +6 -6
  290. package/dist/runtime/components/ui/popover/PopoverContent.d.vue.ts +4 -4
  291. package/dist/runtime/components/ui/popover/PopoverContent.vue +9 -9
  292. package/dist/runtime/components/ui/popover/PopoverContent.vue.d.ts +4 -4
  293. package/dist/runtime/components/ui/popover/PopoverTrigger.vue +6 -6
  294. package/dist/runtime/components/ui/scroll-area/ScrollArea.vue +14 -14
  295. package/dist/runtime/components/ui/scroll-area/ScrollBar.vue +10 -10
  296. package/dist/runtime/components/ui/select/Select.vue +7 -7
  297. package/dist/runtime/components/ui/select/SelectContent.d.vue.ts +2 -2
  298. package/dist/runtime/components/ui/select/SelectContent.vue +10 -10
  299. package/dist/runtime/components/ui/select/SelectContent.vue.d.ts +2 -2
  300. package/dist/runtime/components/ui/select/SelectGroup.vue +6 -6
  301. package/dist/runtime/components/ui/select/SelectItem.vue +17 -17
  302. package/dist/runtime/components/ui/select/SelectItemText.vue +6 -6
  303. package/dist/runtime/components/ui/select/SelectLabel.vue +6 -6
  304. package/dist/runtime/components/ui/select/SelectScrollDownButton.vue +9 -9
  305. package/dist/runtime/components/ui/select/SelectScrollUpButton.vue +9 -9
  306. package/dist/runtime/components/ui/select/SelectSeparator.vue +5 -5
  307. package/dist/runtime/components/ui/select/SelectTrigger.vue +11 -11
  308. package/dist/runtime/components/ui/select/SelectValue.vue +6 -6
  309. package/dist/runtime/components/ui/separator/Separator.vue +5 -5
  310. package/dist/runtime/components/ui/sheet/Sheet.vue +3 -3
  311. package/dist/runtime/components/ui/sheet/SheetClose.vue +3 -3
  312. package/dist/runtime/components/ui/sheet/SheetContent.d.vue.ts +4 -4
  313. package/dist/runtime/components/ui/sheet/SheetContent.vue +26 -26
  314. package/dist/runtime/components/ui/sheet/SheetContent.vue.d.ts +4 -4
  315. package/dist/runtime/components/ui/sheet/SheetDescription.vue +7 -7
  316. package/dist/runtime/components/ui/sheet/SheetFooter.vue +6 -6
  317. package/dist/runtime/components/ui/sheet/SheetHeader.vue +6 -6
  318. package/dist/runtime/components/ui/sheet/SheetOverlay.vue +7 -7
  319. package/dist/runtime/components/ui/sheet/SheetTitle.vue +7 -7
  320. package/dist/runtime/components/ui/sheet/SheetTrigger.vue +3 -3
  321. package/dist/runtime/components/ui/skeleton/Skeleton.vue +4 -4
  322. package/dist/runtime/components/ui/spinner/Spinner.vue +6 -6
  323. package/dist/runtime/components/ui/table/Table.vue +5 -5
  324. package/dist/runtime/components/ui/table/TableBody.vue +6 -6
  325. package/dist/runtime/components/ui/table/TableCaption.vue +6 -6
  326. package/dist/runtime/components/ui/table/TableCell.vue +6 -6
  327. package/dist/runtime/components/ui/table/TableEmpty.vue +15 -15
  328. package/dist/runtime/components/ui/table/TableFooter.vue +6 -6
  329. package/dist/runtime/components/ui/table/TableHead.vue +6 -6
  330. package/dist/runtime/components/ui/table/TableHeader.vue +6 -6
  331. package/dist/runtime/components/ui/table/TableRow.vue +6 -6
  332. package/dist/runtime/components/ui/tabs/Tabs.vue +8 -8
  333. package/dist/runtime/components/ui/tabs/TabsContent.vue +7 -7
  334. package/dist/runtime/components/ui/tabs/TabsList.vue +7 -7
  335. package/dist/runtime/components/ui/tabs/TabsTrigger.vue +7 -7
  336. package/dist/runtime/components/ui/textarea/Textarea.vue +5 -5
  337. package/dist/runtime/components/ui/tooltip/Tooltip.vue +7 -7
  338. package/dist/runtime/components/ui/tooltip/TooltipContent.vue +13 -13
  339. package/dist/runtime/components/ui/tooltip/TooltipProvider.vue +3 -3
  340. package/dist/runtime/components/ui/tooltip/TooltipTrigger.vue +6 -6
  341. package/dist/runtime/components/video.vue +2 -2
  342. package/dist/runtime/composables/useApi.d.ts +1 -1
  343. package/dist/runtime/composables/useApi.js +6 -77
  344. package/dist/runtime/geo/README.md +87 -87
  345. package/dist/runtime/geo/postal_codes.json +5569 -5569
  346. package/package.json +2 -2
@@ -113,163 +113,163 @@ const getJustifyClass = (alignment = "start") => {
113
113
  </script>
114
114
 
115
115
  <template>
116
- <div class="bg-white rounded-lg h-full flex flex-col">
117
- <!-- Selection Action Bar -->
118
-
119
- <!-- Table Container -->
120
- <div class="flex-1 overflow-auto">
121
- <ShadTable>
122
- <!-- Header -->
123
- <ShadTableHeader v-if="!props.disabledHeader">
124
- <slot name="header" :item="props.itemHeader">
125
- <ShadTableRow>
126
- <!-- Checkbox select-all -->
127
- <ShadTableHead v-if="props.selectable" class="w-12">
128
- <div class="flex items-center justify-center">
129
- <InputCheckbox
116
+ <div class="bg-white rounded-lg h-full flex flex-col">
117
+ <!-- Selection Action Bar -->
118
+
119
+ <!-- Table Container -->
120
+ <div class="flex-1 overflow-auto">
121
+ <ShadTable>
122
+ <!-- Header -->
123
+ <ShadTableHeader v-if="!props.disabledHeader">
124
+ <slot name="header" :item="props.itemHeader">
125
+ <ShadTableRow>
126
+ <!-- Checkbox select-all -->
127
+ <ShadTableHead v-if="props.selectable" class="w-12">
128
+ <div class="flex items-center justify-center">
129
+ <InputCheckbox
130
130
  :model-value="
131
131
  isIndeterminate ? 'indeterminate' : isAllSelected
132
- "
133
- @update:model-value="() => toggleAll()"
134
- />
135
- </div>
136
- </ShadTableHead>
137
-
138
- <ShadTableHead
139
- v-for="(header, i) in itemHeaders"
140
- :key="i"
132
+ "
133
+ @update:model-value="() => toggleAll()"
134
+ />
135
+ </div>
136
+ </ShadTableHead>
137
+
138
+ <ShadTableHead
139
+ v-for="(header, i) in itemHeaders"
140
+ :key="i"
141
141
  :class="
142
142
  getAlignmentClass(header.alignment || props.headerAlignment)
143
- "
143
+ "
144
144
  :style="{
145
145
  width: header.width ? typeof header.width === 'number' ? `${header.width}px` : header.width : void 0,
146
146
  minWidth: header.minWidth ? typeof header.minWidth === 'number' ? `${header.minWidth}px` : header.minWidth : void 0
147
- }"
148
- >
149
- <slot
150
- :name="`header-${header.key}`"
151
- :header="header"
152
- :on-sort="() => onSortBy(header.key)"
153
- :is-sorted="sortkey === header.key"
154
- :sort-desc="sortDesc"
155
- >
156
- <div
147
+ }"
148
+ >
149
+ <slot
150
+ :name="`header-${header.key}`"
151
+ :header="header"
152
+ :on-sort="() => onSortBy(header.key)"
153
+ :is-sorted="sortkey === header.key"
154
+ :sort-desc="sortDesc"
155
+ >
156
+ <div
157
157
  :class="[
158
158
  'flex items-center gap-2 text-gray font-body-medium',
159
159
  getJustifyClass(
160
160
  header.alignment || props.headerAlignment
161
161
  )
162
- ]"
163
- >
164
- <span>{{ header.label }}</span>
165
- <button
166
- v-if="header.sort !== false && !props.disabledSort"
167
- type="button"
162
+ ]"
163
+ >
164
+ <span>{{ header.label }}</span>
165
+ <button
166
+ v-if="header.sort !== false && !props.disabledSort"
167
+ type="button"
168
168
  :class="[
169
169
  'flex items-center justify-center cursor-pointer hover:text-primary transition-colors',
170
170
  sortkey === header.key && 'text-primary'
171
- ]"
172
- @click="onSortBy(header.key)"
173
- >
174
- <Icon name="fa6-solid:sort" size="14" />
175
- </button>
176
- </div>
177
- </slot>
178
- </ShadTableHead>
179
- </ShadTableRow>
180
- </slot>
181
- </ShadTableHeader>
182
-
183
- <!-- Body -->
184
- <slot name="body" :items="sortedItems" :header="itemHeaders">
185
- <ShadTableBody>
186
- <!-- Loading Skeleton -->
187
- <template v-if="props.loading">
188
- <ShadTableRow v-for="row in itemPerPage" :key="`skeleton-${row}`">
189
- <ShadTableCell
190
- v-for="(header, i_header) in itemHeaders"
191
- :key="`skeleton-cell-${row}-${i_header}`"
192
- >
193
- <Skeleton class="h-4 w-full" />
194
- </ShadTableCell>
195
- </ShadTableRow>
196
- </template>
197
-
198
- <!-- Data Rows -->
199
- <template v-else-if="sortedItems.length > 0">
200
- <ShadTableRow
201
- v-for="(item, i_body) in sortedItems"
202
- :key="i_body"
203
- class="cursor-pointer"
171
+ ]"
172
+ @click="onSortBy(header.key)"
173
+ >
174
+ <Icon name="fa6-solid:sort" size="14" />
175
+ </button>
176
+ </div>
177
+ </slot>
178
+ </ShadTableHead>
179
+ </ShadTableRow>
180
+ </slot>
181
+ </ShadTableHeader>
182
+
183
+ <!-- Body -->
184
+ <slot name="body" :items="sortedItems" :header="itemHeaders">
185
+ <ShadTableBody>
186
+ <!-- Loading Skeleton -->
187
+ <template v-if="props.loading">
188
+ <ShadTableRow v-for="row in itemPerPage" :key="`skeleton-${row}`">
189
+ <ShadTableCell
190
+ v-for="(header, i_header) in itemHeaders"
191
+ :key="`skeleton-cell-${row}-${i_header}`"
192
+ >
193
+ <Skeleton class="h-4 w-full" />
194
+ </ShadTableCell>
195
+ </ShadTableRow>
196
+ </template>
197
+
198
+ <!-- Data Rows -->
199
+ <template v-else-if="sortedItems.length > 0">
200
+ <ShadTableRow
201
+ v-for="(item, i_body) in sortedItems"
202
+ :key="i_body"
203
+ class="cursor-pointer"
204
204
  :data-state="
205
205
  props.selectable && isSelected(item) ? 'selected' : void 0
206
- "
207
- @click="emit('click-row', item, i_body)"
208
- >
209
- <!-- Checkbox per row -->
210
- <ShadTableCell v-if="props.selectable" @click.stop>
211
- <div class="flex items-center justify-center">
212
- <InputCheckbox
213
- :model-value="isSelected(item)"
214
- @update:model-value="() => toggleRow(item)"
215
- />
216
- </div>
217
- </ShadTableCell>
218
-
219
- <slot
220
- name="item"
221
- :item="item"
222
- :header="itemHeaders"
223
- :index="i_body"
224
- >
225
- <ShadTableCell
226
- v-for="(header, i_header) in itemHeaders"
227
- :key="i_header"
206
+ "
207
+ @click="emit('click-row', item, i_body)"
208
+ >
209
+ <!-- Checkbox per row -->
210
+ <ShadTableCell v-if="props.selectable" @click.stop>
211
+ <div class="flex items-center justify-center">
212
+ <InputCheckbox
213
+ :model-value="isSelected(item)"
214
+ @update:model-value="() => toggleRow(item)"
215
+ />
216
+ </div>
217
+ </ShadTableCell>
218
+
219
+ <slot
220
+ name="item"
221
+ :item="item"
222
+ :header="itemHeaders"
223
+ :index="i_body"
224
+ >
225
+ <ShadTableCell
226
+ v-for="(header, i_header) in itemHeaders"
227
+ :key="i_header"
228
228
  :class="
229
229
  getAlignmentClass(header.alignment || props.cellAlignment)
230
- "
230
+ "
231
231
  :style="{
232
232
  width: header.width ? typeof header.width === 'number' ? `${header.width}px` : header.width : void 0,
233
233
  minWidth: header.minWidth ? typeof header.minWidth === 'number' ? `${header.minWidth}px` : header.minWidth : void 0,
234
234
  maxWidth: header.maxWidth ? typeof header.maxWidth === 'number' ? `${header.maxWidth}px` : header.maxWidth : header.width ? typeof header.width === 'number' ? `${header.width}px` : header.width : header.minWidth ? typeof header.minWidth === 'number' ? `${header.minWidth}px` : header.minWidth : void 0
235
- }"
236
- >
237
- <slot :name="`item-${header.key}`" :item="item">
238
- {{ item[header.key] }}
239
- </slot>
240
- </ShadTableCell>
241
- </slot>
242
- </ShadTableRow>
243
- </template>
244
-
245
- <!-- Empty State -->
246
- <template v-else>
247
- <slot name="empty">
248
- <ShadTableEmpty :colspan="itemHeaders?.length || 1">
249
- <slot name="empty-content" />
250
- </ShadTableEmpty>
251
- </slot>
252
- </template>
253
- </ShadTableBody>
254
- </slot>
255
- </ShadTable>
256
- </div>
257
-
258
- <!-- Pagination -->
259
- <div
260
- v-if="sortedItems.length > 0 && !props.disabledPagination"
261
- class="p-4 flex justify-center items-center border-t"
262
- >
263
- <Pagination
264
- :totalPage="props.totalPage"
265
- v-model="page"
235
+ }"
236
+ >
237
+ <slot :name="`item-${header.key}`" :item="item">
238
+ {{ item[header.key] }}
239
+ </slot>
240
+ </ShadTableCell>
241
+ </slot>
242
+ </ShadTableRow>
243
+ </template>
244
+
245
+ <!-- Empty State -->
246
+ <template v-else>
247
+ <slot name="empty">
248
+ <ShadTableEmpty :colspan="itemHeaders?.length || 1">
249
+ <slot name="empty-content" />
250
+ </ShadTableEmpty>
251
+ </slot>
252
+ </template>
253
+ </ShadTableBody>
254
+ </slot>
255
+ </ShadTable>
256
+ </div>
257
+
258
+ <!-- Pagination -->
259
+ <div
260
+ v-if="sortedItems.length > 0 && !props.disabledPagination"
261
+ class="p-4 flex justify-center items-center border-t"
262
+ >
263
+ <Pagination
264
+ :totalPage="props.totalPage"
265
+ v-model="page"
266
266
  @change-item-per-page="
267
267
  (val) => {
268
268
  itemPerPage = val;
269
269
  emit('change-item-per-page', val);
270
270
  }
271
- "
272
- />
273
- </div>
274
- </div>
271
+ "
272
+ />
273
+ </div>
274
+ </div>
275
275
  </template>
@@ -8,9 +8,9 @@ type __VLS_Props = {
8
8
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
9
9
  title: string;
10
10
  variant: "featured" | "album";
11
- state: "personal" | "office" | "business";
12
11
  photos: string[];
13
12
  videos: string[];
13
+ state: "personal" | "office" | "business";
14
14
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
15
  declare const _default: typeof __VLS_export;
16
16
  export default _default;
@@ -1,92 +1,92 @@
1
1
  <template>
2
- <!-- Personal state → Featured layout -->
3
- <div v-if="layoutMode === 'featured'" class="flex gap-[8px] h-[360px]">
4
- <div v-if="photos[0]" class="w-[620px] shrink-0 rounded-[8px] overflow-hidden cursor-pointer"
5
- @click="openLightbox('photo', 0)">
6
- <Image :src="photos[0]" class="w-full h-full object-cover" width="auto" height="auto" />
7
- </div>
8
-
9
- <div v-if="photos[1]" class="flex-1 rounded-[8px] overflow-hidden cursor-pointer" @click="openLightbox('photo', 1)">
10
- <Image :src="photos[1]" class="w-full h-full object-cover" width="auto" height="auto" />
11
- </div>
12
-
13
- <div class="w-[306px] shrink-0 flex flex-col gap-[8px]">
14
- <!-- photos[2] — top-right slot
15
- มีวิดีโอ: overlay ถ้า photos.length > 3 (photos[3+] ถูกซ่อน)
16
- ไม่มีวิดีโอ: โชว์สะอาดเสมอ (photos[3] ไปโชว์ที่ slot ล่าง) -->
17
- <div v-if="photos[2]" class="flex-1 min-h-0 relative rounded-[8px] overflow-hidden cursor-pointer"
18
- @click="openLightbox('photo', 2)">
19
- <Image :src="photos[2]" class="w-full h-full object-cover" width="auto" height="auto" />
20
- <div v-if="featuredPhoto2Overflow > 0"
21
- class="absolute inset-0 bg-black/50 flex flex-col items-center justify-center text-white gap-[6px]">
22
- <Icon name="fa6-solid:image" :size="42" />
23
- <span class="font-body-large">รูปภาพ ({{ convertNumber(featuredPhoto2Overflow) }})</span>
24
- </div>
25
- </div>
26
-
27
- <!-- bottom-right slot
28
- มีวิดีโอ : videos[0] thumbnail + overlay วิดีโอ
29
- ไม่มีวิดีโอ : photos[3] — overlay "รูปภาพ (N)" เมื่อ photos.length > 4
30
- (N = photos.length - 3 นับรวม photos[3] ด้วย) -->
31
- <div v-if="videos[0]" class="flex-1 min-h-0 relative rounded-[8px] overflow-hidden cursor-pointer"
32
- @click="openLightbox('video', 0)">
33
- <Image :src="videos[0]" class="w-full h-full object-cover" width="auto" height="auto" />
34
- <div class="absolute inset-0 bg-black/50 flex flex-col items-center justify-center text-white gap-[6px]">
35
- <Icon name="fa6-solid:video" :size="42" />
36
- <span class="font-body-large">วิดีโอ ({{ videos.length }})</span>
37
- </div>
38
- </div>
39
- <div v-else-if="photos[3]" class="flex-1 min-h-0 relative rounded-[8px] overflow-hidden cursor-pointer"
40
- @click="openLightbox('photo', 3)">
41
- <Image :src="photos[3]" class="w-full h-full object-cover" width="auto" height="auto" />
42
- <div v-if="featuredPhoto3Overflow > 0"
43
- class="absolute inset-0 bg-black/50 flex flex-col items-center justify-center text-white gap-[6px]">
44
- <Icon name="fa6-solid:image" :size="42" />
45
- <span class="font-body-large">รูปภาพ ({{ convertNumber(featuredPhoto3Overflow) }})</span>
46
- </div>
47
- </div>
48
- </div>
49
- </div>
50
-
51
- <!-- Office / Business state → Album layout -->
52
- <div v-else-if="layoutMode === 'album'" class="grid grid-cols-5 gap-[10px]">
53
- <!-- Row 1: photos[0..3] -->
54
- <div v-for="(photo, i) in galleryRow1" :key="`g1-${i}`"
55
- class="w-[132px] h-[132px] rounded-[8px] overflow-hidden cursor-pointer" @click="openLightbox('photo', i)">
56
- <Image :src="photo" class="w-full h-full object-cover" width="auto" height="auto" />
57
- </div>
58
-
59
- <!-- Row 1 col 5: image count overlay (v-show keeps grid slot) -->
60
- <div v-show="galleryCountPhoto != null"
61
- class="w-[132px] h-[132px] relative rounded-[8px] overflow-hidden cursor-pointer"
62
- @click="openLightbox('photo', 8)">
63
- <Image v-if="galleryCountPhoto" :src="galleryCountPhoto" class="w-full h-full object-cover" width="auto"
64
- height="auto" />
65
- <div class="absolute inset-0 bg-black/50 flex flex-col items-center justify-center text-white gap-[6px]">
66
- <Icon name="fa6-solid:image" :size="35" />
67
- <span class="font-label-medium">รูปภาพ ({{ convertNumber(photos.length - 8) }})</span>
68
- </div>
69
- </div>
70
-
71
- <!-- Row 2: photos[4..7] -->
72
- <div v-for="(photo, i) in galleryRow2" :key="`g2-${i}`"
73
- class="w-[132px] h-[132px] rounded-[8px] overflow-hidden cursor-pointer" @click="openLightbox('photo', 4 + i)">
74
- <Image :src="photo" class="w-full h-full object-cover" width="auto" height="auto" />
75
- </div>
76
-
77
- <!-- Row 2 col 5: video overlay -->
78
- <div v-if="videos[0]" class="w-[132px] h-[132px] relative rounded-[8px] overflow-hidden cursor-pointer"
79
- @click="openLightbox('video', 0)">
80
- <Image :src="videos[0]" class="w-full h-full object-cover" width="auto" height="auto" />
81
- <div class="absolute inset-0 bg-black/50 flex flex-col items-center justify-center text-white gap-[6px]">
82
- <Icon name="fa6-solid:video" :size="35" />
83
- <span class="font-label-medium">วิดีโอ ({{ videos.length }})</span>
84
- </div>
85
- </div>
86
- </div>
87
-
88
- <!-- Lightbox modal -->
89
- <ModalMediaView v-model="isMediaOpen" :items="mediaItems" :title="props.title" :start-index="mediaStartIndex" />
2
+ <!-- Personal state → Featured layout -->
3
+ <div v-if="layoutMode === 'featured'" class="flex gap-[8px] h-[360px]">
4
+ <div v-if="photos[0]" class="w-[620px] shrink-0 rounded-[8px] overflow-hidden cursor-pointer"
5
+ @click="openLightbox('photo', 0)">
6
+ <Image :src="photos[0]" class="w-full h-full object-cover" width="auto" height="auto" />
7
+ </div>
8
+
9
+ <div v-if="photos[1]" class="flex-1 rounded-[8px] overflow-hidden cursor-pointer" @click="openLightbox('photo', 1)">
10
+ <Image :src="photos[1]" class="w-full h-full object-cover" width="auto" height="auto" />
11
+ </div>
12
+
13
+ <div class="w-[306px] shrink-0 flex flex-col gap-[8px]">
14
+ <!-- photos[2] — top-right slot
15
+ มีวิดีโอ: overlay ถ้า photos.length > 3 (photos[3+] ถูกซ่อน)
16
+ ไม่มีวิดีโอ: โชว์สะอาดเสมอ (photos[3] ไปโชว์ที่ slot ล่าง) -->
17
+ <div v-if="photos[2]" class="flex-1 min-h-0 relative rounded-[8px] overflow-hidden cursor-pointer"
18
+ @click="openLightbox('photo', 2)">
19
+ <Image :src="photos[2]" class="w-full h-full object-cover" width="auto" height="auto" />
20
+ <div v-if="featuredPhoto2Overflow > 0"
21
+ class="absolute inset-0 bg-black/50 flex flex-col items-center justify-center text-white gap-[6px]">
22
+ <Icon name="fa6-solid:image" :size="42" />
23
+ <span class="font-body-large">รูปภาพ ({{ convertNumber(featuredPhoto2Overflow) }})</span>
24
+ </div>
25
+ </div>
26
+
27
+ <!-- bottom-right slot
28
+ มีวิดีโอ : videos[0] thumbnail + overlay วิดีโอ
29
+ ไม่มีวิดีโอ : photos[3] — overlay "รูปภาพ (N)" เมื่อ photos.length > 4
30
+ (N = photos.length - 3 นับรวม photos[3] ด้วย) -->
31
+ <div v-if="videos[0]" class="flex-1 min-h-0 relative rounded-[8px] overflow-hidden cursor-pointer"
32
+ @click="openLightbox('video', 0)">
33
+ <Image :src="videos[0]" class="w-full h-full object-cover" width="auto" height="auto" />
34
+ <div class="absolute inset-0 bg-black/50 flex flex-col items-center justify-center text-white gap-[6px]">
35
+ <Icon name="fa6-solid:video" :size="42" />
36
+ <span class="font-body-large">วิดีโอ ({{ videos.length }})</span>
37
+ </div>
38
+ </div>
39
+ <div v-else-if="photos[3]" class="flex-1 min-h-0 relative rounded-[8px] overflow-hidden cursor-pointer"
40
+ @click="openLightbox('photo', 3)">
41
+ <Image :src="photos[3]" class="w-full h-full object-cover" width="auto" height="auto" />
42
+ <div v-if="featuredPhoto3Overflow > 0"
43
+ class="absolute inset-0 bg-black/50 flex flex-col items-center justify-center text-white gap-[6px]">
44
+ <Icon name="fa6-solid:image" :size="42" />
45
+ <span class="font-body-large">รูปภาพ ({{ convertNumber(featuredPhoto3Overflow) }})</span>
46
+ </div>
47
+ </div>
48
+ </div>
49
+ </div>
50
+
51
+ <!-- Office / Business state → Album layout -->
52
+ <div v-else-if="layoutMode === 'album'" class="grid grid-cols-5 gap-[10px]">
53
+ <!-- Row 1: photos[0..3] -->
54
+ <div v-for="(photo, i) in galleryRow1" :key="`g1-${i}`"
55
+ class="w-[132px] h-[132px] rounded-[8px] overflow-hidden cursor-pointer" @click="openLightbox('photo', i)">
56
+ <Image :src="photo" class="w-full h-full object-cover" width="auto" height="auto" />
57
+ </div>
58
+
59
+ <!-- Row 1 col 5: image count overlay (v-show keeps grid slot) -->
60
+ <div v-show="galleryCountPhoto != null"
61
+ class="w-[132px] h-[132px] relative rounded-[8px] overflow-hidden cursor-pointer"
62
+ @click="openLightbox('photo', 8)">
63
+ <Image v-if="galleryCountPhoto" :src="galleryCountPhoto" class="w-full h-full object-cover" width="auto"
64
+ height="auto" />
65
+ <div class="absolute inset-0 bg-black/50 flex flex-col items-center justify-center text-white gap-[6px]">
66
+ <Icon name="fa6-solid:image" :size="35" />
67
+ <span class="font-label-medium">รูปภาพ ({{ convertNumber(photos.length - 8) }})</span>
68
+ </div>
69
+ </div>
70
+
71
+ <!-- Row 2: photos[4..7] -->
72
+ <div v-for="(photo, i) in galleryRow2" :key="`g2-${i}`"
73
+ class="w-[132px] h-[132px] rounded-[8px] overflow-hidden cursor-pointer" @click="openLightbox('photo', 4 + i)">
74
+ <Image :src="photo" class="w-full h-full object-cover" width="auto" height="auto" />
75
+ </div>
76
+
77
+ <!-- Row 2 col 5: video overlay -->
78
+ <div v-if="videos[0]" class="w-[132px] h-[132px] relative rounded-[8px] overflow-hidden cursor-pointer"
79
+ @click="openLightbox('video', 0)">
80
+ <Image :src="videos[0]" class="w-full h-full object-cover" width="auto" height="auto" />
81
+ <div class="absolute inset-0 bg-black/50 flex flex-col items-center justify-center text-white gap-[6px]">
82
+ <Icon name="fa6-solid:video" :size="35" />
83
+ <span class="font-label-medium">วิดีโอ ({{ videos.length }})</span>
84
+ </div>
85
+ </div>
86
+ </div>
87
+
88
+ <!-- Lightbox modal -->
89
+ <ModalMediaView v-model="isMediaOpen" :items="mediaItems" :title="props.title" :start-index="mediaStartIndex" />
90
90
  </template>
91
91
 
92
92
  <script setup>
@@ -8,9 +8,9 @@ type __VLS_Props = {
8
8
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
9
9
  title: string;
10
10
  variant: "featured" | "album";
11
- state: "personal" | "office" | "business";
12
11
  photos: string[];
13
12
  videos: string[];
13
+ state: "personal" | "office" | "business";
14
14
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
15
  declare const _default: typeof __VLS_export;
16
16
  export default _default;
@@ -1,14 +1,14 @@
1
1
  <template>
2
- <div class="inline-flex gap-[8px]">
3
- <div v-for="(img, i_img) in props.items?.slice(0, props.limit)" :key="i_img" class="relative cursor-pointer"
4
- @click="emit('select', i_img)">
5
- <Image :src="img" :height="100" :width="100" class="rounded-[4px]" />
6
- <div v-if="props.limit === i_img + 1 && numberMore > 0"
7
- class="absolute top-0 left-0 right-0 bottom-0 bg-black/50 flex justify-center items-center text-white rounded-[4px]">
8
- <div class="font-headline-medium">+{{ convertNumber(numberMore ?? 0) }}</div>
9
- </div>
10
- </div>
11
- </div>
2
+ <div class="inline-flex gap-[8px]">
3
+ <div v-for="(img, i_img) in props.items?.slice(0, props.limit)" :key="i_img" class="relative cursor-pointer"
4
+ @click="emit('select', i_img)">
5
+ <Image :src="img" :height="100" :width="100" class="rounded-[4px]" />
6
+ <div v-if="props.limit === i_img + 1 && numberMore > 0"
7
+ class="absolute top-0 left-0 right-0 bottom-0 bg-black/50 flex justify-center items-center text-white rounded-[4px]">
8
+ <div class="font-headline-medium">+{{ convertNumber(numberMore ?? 0) }}</div>
9
+ </div>
10
+ </div>
11
+ </div>
12
12
  </template>
13
13
 
14
14
  <script setup>
@@ -1,55 +1,55 @@
1
1
  <template>
2
- <div
3
- class="flex gap-[8px] max-w-[844px]"
2
+ <div
3
+ class="flex gap-[8px] max-w-[844px]"
4
4
  :style="{
5
5
  height: `${heightBox}px`
6
- }"
7
- >
8
- <div
9
- v-if="props.items && props.items?.length <= 2"
10
- v-for="(item, i_item) in props.items"
11
- :key="i_item"
12
- class="w-full flex justify-center bg-black rounded-[8px] cursor-pointer"
13
- @click="onSelect(i_item)"
14
- >
15
- <Image :src="getSrc(item)" height="auto" />
16
- </div>
17
- <div v-else class="flex gap-[8px] w-full">
18
- <div class="flex rounded-[8px] cursor-pointer" @click="onSelect(0)">
19
- <Image
20
- :src="getSrc((props.items ?? [])[0])"
21
- class="rounded-[8px]"
22
- width="720"
23
- height="auto"
24
- />
25
- </div>
26
- <div class="flex flex-col gap-[8px]">
27
- <div
28
- v-for="(item, i_item) in props.items?.slice(1, 5)"
29
- :key="i_item"
30
- class="relative cursor-pointer"
31
- @click="onSelect(i_item + 1)"
32
- >
33
- <Image
34
- :src="getSrc(item)"
35
- class="rounded-[8px]"
36
- :width="widthSubImg"
37
- :height="heightSubImg"
38
- />
39
-
40
- <div
41
- v-if="showMore && i_item === 3"
42
- class="absolute top-0 left-0 right-0 bottom-0 bg-black/50 flex justify-center items-center text-white rounded-[8px]"
43
- >
44
- <div class="flex flex-col gap-[6px] items-center">
45
- <Icon name="fa6-solid:image" size="48" />
46
- <div class="font-body-large">รูปภาพ ({{ numberMore }})</div>
47
- </div>
48
- </div>
49
- </div>
50
- </div>
51
- </div>
52
- </div>
6
+ }"
7
+ >
8
+ <div
9
+ v-if="props.items && props.items?.length <= 2"
10
+ v-for="(item, i_item) in props.items"
11
+ :key="i_item"
12
+ class="w-full flex justify-center bg-black rounded-[8px] cursor-pointer"
13
+ @click="onSelect(i_item)"
14
+ >
15
+ <Image :src="getSrc(item)" height="auto" />
16
+ </div>
17
+ <div v-else class="flex gap-[8px] w-full">
18
+ <div class="flex rounded-[8px] cursor-pointer" @click="onSelect(0)">
19
+ <Image
20
+ :src="getSrc((props.items ?? [])[0])"
21
+ class="rounded-[8px]"
22
+ width="720"
23
+ height="auto"
24
+ />
25
+ </div>
26
+ <div class="flex flex-col gap-[8px]">
27
+ <div
28
+ v-for="(item, i_item) in props.items?.slice(1, 5)"
29
+ :key="i_item"
30
+ class="relative cursor-pointer"
31
+ @click="onSelect(i_item + 1)"
32
+ >
33
+ <Image
34
+ :src="getSrc(item)"
35
+ class="rounded-[8px]"
36
+ :width="widthSubImg"
37
+ :height="heightSubImg"
38
+ />
39
+
40
+ <div
41
+ v-if="showMore && i_item === 3"
42
+ class="absolute top-0 left-0 right-0 bottom-0 bg-black/50 flex justify-center items-center text-white rounded-[8px]"
43
+ >
44
+ <div class="flex flex-col gap-[6px] items-center">
45
+ <Icon name="fa6-solid:image" size="48" />
46
+ <div class="font-body-large">รูปภาพ ({{ numberMore }})</div>
47
+ </div>
48
+ </div>
49
+ </div>
50
+ </div>
51
+ </div>
52
+ </div>
53
53
  </template>
54
54
 
55
55
  <script setup>