negodesign 0.0.55 → 0.0.57

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 (216) hide show
  1. package/dist/components/core/banner/AdCardBanner.svelte +74 -74
  2. package/dist/components/core/banner/CtaCardBanner.svelte +118 -118
  3. package/dist/components/core/breadcrumb/breadcrumb-list.svelte +31 -31
  4. package/dist/components/core/button/ButtonBack.svelte +18 -18
  5. package/dist/components/core/button/ButtonLogin.svelte +15 -15
  6. package/dist/components/core/button/ButtonLoginWith.svelte +57 -57
  7. package/dist/components/core/button/ButtonSend.svelte +15 -15
  8. package/dist/components/core/card/highlight/01/CardHighlight01.svelte +103 -103
  9. package/dist/components/core/card/highlight/02/CardHighlight02.svelte +99 -99
  10. package/dist/components/core/card/highlight/CardHighlight.svelte +22 -22
  11. package/dist/components/core/card/media/01/CardMedia01.svelte +133 -133
  12. package/dist/components/core/card/media/02/CardMedia02.svelte +127 -127
  13. package/dist/components/core/card/media/CardMedia.svelte +18 -18
  14. package/dist/components/core/card/product/01/CardProduct01.svelte +136 -136
  15. package/dist/components/core/card/product/02/CardProduct02.svelte +124 -124
  16. package/dist/components/core/card/product/CardProduct.svelte +22 -22
  17. package/dist/components/core/card/profile/01/CardProfile01.svelte +134 -134
  18. package/dist/components/core/card/profile/02/CardProfile02.svelte +132 -132
  19. package/dist/components/core/card/profile/CardProfile.svelte +18 -18
  20. package/dist/components/core/card/promotion/CardPromotion.svelte +139 -139
  21. package/dist/components/core/card/promotion/CardPromotionPrice.svelte +32 -32
  22. package/dist/components/core/card/shared/CardButton.svelte +42 -42
  23. package/dist/components/core/card/shared/CardCart.svelte +36 -36
  24. package/dist/components/core/card/shared/CardDescription.svelte +41 -41
  25. package/dist/components/core/card/shared/CardFavorite.svelte +33 -33
  26. package/dist/components/core/card/shared/CardLogo.svelte +19 -19
  27. package/dist/components/core/card/shared/CardPhoneOrWhatsapp.svelte +45 -45
  28. package/dist/components/core/card/shared/CardStarRating.svelte +24 -24
  29. package/dist/components/core/card/shared/CardTags.svelte +95 -95
  30. package/dist/components/core/card/shared/CardThumbnailVideo.svelte +232 -232
  31. package/dist/components/core/card/shared/CardTitlePrice.svelte +24 -24
  32. package/dist/components/core/card/shared/TruncatableText.svelte +49 -49
  33. package/dist/components/core/card/types.d.ts +4 -0
  34. package/dist/components/core/carousel/badge/type.d.ts +27 -0
  35. package/dist/components/core/carousel/badge/ui/CarouselBadge.svelte +109 -109
  36. package/dist/components/core/carousel/grid/media/types.d.ts +3 -0
  37. package/dist/components/core/carousel/grid/media/ui/CarouselGridMedia.svelte +2 -1
  38. package/dist/components/core/carousel/grid/product/types.d.ts +8 -0
  39. package/dist/components/core/carousel/grid/product/ui/CarouselGridProduct.svelte +14 -4
  40. package/dist/components/core/carousel/grid/profile/ui/CarouselGridProfile.svelte +1 -1
  41. package/dist/components/core/carousel/grid/promotion/ui/CarouselGridPromotion.svelte +1 -1
  42. package/dist/components/core/carousel/grid/shared/ui/CarouselGridSlot.svelte +8 -3
  43. package/dist/components/core/carousel/grid/shared/ui/CarouselGridSlot.svelte.d.ts +2 -1
  44. package/dist/components/core/carousel/hero/types.d.ts +30 -0
  45. package/dist/components/core/carousel/hero/{CarouselHero.svelte → ui/CarouselHero.svelte} +163 -161
  46. package/dist/components/core/carousel/shared/ui/CarouselHeader.svelte +60 -60
  47. package/dist/components/core/carousel/types.d.ts +2 -56
  48. package/dist/components/core/datatable/ui/DataTableActions.svelte +28 -28
  49. package/dist/components/core/datatable/ui/DataTableCheckbox.svelte +22 -22
  50. package/dist/components/core/datatable/ui/DataTableContent.svelte +59 -59
  51. package/dist/components/core/datatable/ui/DataTableCore.svelte +151 -151
  52. package/dist/components/core/datatable/ui/DataTableDragHandle.svelte +8 -8
  53. package/dist/components/core/datatable/ui/DataTableListFilter.svelte +59 -59
  54. package/dist/components/core/datatable/ui/DataTableListPagination.svelte +35 -35
  55. package/dist/components/core/footer/ui/Footer.svelte +18 -18
  56. package/dist/components/core/form/ui/input-base.svelte +81 -81
  57. package/dist/components/core/form/ui/input-email-or-phone.svelte +23 -23
  58. package/dist/components/core/form/ui/input-email.svelte +23 -23
  59. package/dist/components/core/form/ui/input-password-confirm.svelte +23 -23
  60. package/dist/components/core/form/ui/input-password.svelte +23 -23
  61. package/dist/components/core/form/ui/input-phone.svelte +33 -33
  62. package/dist/components/core/form/ui/input-username.svelte +22 -22
  63. package/dist/components/core/grid/data/types.d.ts +16 -0
  64. package/dist/components/core/grid/ui/01/Grid01.svelte +27 -0
  65. package/dist/components/core/grid/ui/01/Grid01.svelte.d.ts +4 -0
  66. package/dist/components/core/grid/ui/02/Grid02.svelte +27 -0
  67. package/dist/components/core/grid/ui/02/Grid02.svelte.d.ts +4 -0
  68. package/dist/components/core/grid/ui/PanelGrid.svelte +27 -0
  69. package/dist/components/core/grid/ui/PanelGrid.svelte.d.ts +4 -0
  70. package/dist/components/core/grid/ui/SimpleGrid.svelte +35 -0
  71. package/dist/components/core/grid/ui/SimpleGrid.svelte.d.ts +4 -0
  72. package/dist/components/core/grid/ui/shared/DescriptionGrid.svelte +17 -0
  73. package/dist/components/core/grid/ui/shared/DescriptionGrid.svelte.d.ts +7 -0
  74. package/dist/components/core/grid/ui/shared/IconRenderGrid.svelte +16 -0
  75. package/dist/components/core/grid/ui/shared/IconRenderGrid.svelte.d.ts +7 -0
  76. package/dist/components/core/grid/ui/shared/TitleGrid.svelte +11 -0
  77. package/dist/components/core/grid/ui/shared/TitleGrid.svelte.d.ts +7 -0
  78. package/dist/components/core/hero/SimpleHero.svelte +65 -65
  79. package/dist/components/core/label/LabelOr.svelte +25 -25
  80. package/dist/components/core/link/link-forget-password.svelte +12 -12
  81. package/dist/components/core/link/link-privacy-polity.svelte +12 -12
  82. package/dist/components/core/link/link-terms-of-service.svelte +12 -12
  83. package/dist/components/core/nav/data/complex-menu-utils.d.ts +7 -0
  84. package/dist/components/core/nav/data/complex-menu-utils.js +15 -0
  85. package/dist/components/core/nav/data/nav-menu.d.ts +21 -7
  86. package/dist/components/core/nav/{ui/shared → data}/types.d.ts +15 -2
  87. package/dist/components/core/nav/ui/ComplexMenu.svelte +36 -0
  88. package/dist/components/core/nav/ui/ComplexMenu.svelte.d.ts +4 -0
  89. package/dist/components/core/nav/ui/Menu.svelte +70 -66
  90. package/dist/components/core/nav/ui/Menu.svelte.d.ts +1 -1
  91. package/dist/components/core/nav/ui/SimpleMenu.svelte +14 -0
  92. package/dist/components/core/nav/ui/SimpleMenu.svelte.d.ts +4 -0
  93. package/dist/components/core/nav/ui/mobile/ComplexMenuMobile.svelte +98 -0
  94. package/dist/components/core/nav/ui/mobile/ComplexMenuMobile.svelte.d.ts +4 -0
  95. package/dist/components/core/nav/ui/mobile/MenuMobile.svelte +54 -0
  96. package/dist/components/core/nav/ui/mobile/MenuMobile.svelte.d.ts +11 -0
  97. package/dist/components/core/nav/ui/mobile/SimpleMenuMobile.svelte +42 -0
  98. package/dist/components/core/nav/ui/mobile/{nav-menu-drawer.svelte.d.ts → SimpleMenuMobile.svelte.d.ts} +3 -3
  99. package/dist/components/core/nav/ui/shared/CollapsibleNavMenu.svelte +24 -0
  100. package/dist/components/core/nav/ui/shared/CollapsibleNavMenu.svelte.d.ts +8 -0
  101. package/dist/components/core/nav/ui/shared/MenuButton.svelte +51 -0
  102. package/dist/components/core/nav/ui/shared/MenuButton.svelte.d.ts +4 -0
  103. package/dist/components/core/nav/ui/shared/MenuLinks.svelte +40 -40
  104. package/dist/components/core/nav/ui/shared/MenuListItem.svelte +48 -48
  105. package/dist/components/core/nav/ui/shared/MenuListItem.svelte.d.ts +1 -1
  106. package/dist/components/core/nav/ui/shared/MenuLogo.svelte +13 -0
  107. package/dist/components/core/nav/ui/shared/MenuLogo.svelte.d.ts +4 -0
  108. package/dist/components/core/nav/ui/shared/NavMenuItem.svelte +28 -0
  109. package/dist/components/core/nav/ui/shared/NavMenuItem.svelte.d.ts +4 -0
  110. package/dist/components/core/nav/ui/shared/dropdown/DropdownMenuListItem.svelte +40 -0
  111. package/dist/components/core/nav/ui/shared/dropdown/DropdownMenuListItem.svelte.d.ts +4 -0
  112. package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItem.svelte +12 -0
  113. package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItem.svelte.d.ts +4 -0
  114. package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItemCard.svelte +49 -0
  115. package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItemCard.svelte.d.ts +4 -0
  116. package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItemGrid.svelte +30 -0
  117. package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItemGrid.svelte.d.ts +4 -0
  118. package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItemList.svelte +24 -0
  119. package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItemList.svelte.d.ts +4 -0
  120. package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItems.svelte +24 -0
  121. package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItems.svelte.d.ts +4 -0
  122. package/dist/components/core/nav/ui/shared/{NavigationMenuItem.svelte → navigation/NavigationMenuItem.svelte} +15 -15
  123. package/dist/components/core/nav/ui/shared/{NavigationMenuItem.svelte.d.ts → navigation/NavigationMenuItem.svelte.d.ts} +1 -1
  124. package/dist/components/core/nav/ui/shared/{NavigationMenuItemCard.svelte → navigation/NavigationMenuItemCard.svelte} +62 -62
  125. package/dist/components/core/nav/ui/shared/{NavigationMenuItemCard.svelte.d.ts → navigation/NavigationMenuItemCard.svelte.d.ts} +1 -1
  126. package/dist/components/core/nav/ui/shared/{NavigationMenuItemGrid.svelte → navigation/NavigationMenuItemGrid.svelte} +32 -32
  127. package/dist/components/core/nav/ui/shared/{NavigationMenuItemGrid.svelte.d.ts → navigation/NavigationMenuItemGrid.svelte.d.ts} +1 -1
  128. package/dist/components/core/nav/ui/shared/{NavigationMenuItemList.svelte → navigation/NavigationMenuItemList.svelte} +24 -24
  129. package/dist/components/core/nav/ui/shared/{NavigationMenuItemList.svelte.d.ts → navigation/NavigationMenuItemList.svelte.d.ts} +1 -1
  130. package/dist/components/core/nav/ui/shared/{NavigationMenuItems.svelte → navigation/NavigationMenuItems.svelte} +21 -21
  131. package/dist/components/core/nav/ui/shared/{NavigationMenuItems.svelte.d.ts → navigation/NavigationMenuItems.svelte.d.ts} +1 -1
  132. package/dist/components/core/panel/CarouselSlot.svelte +57 -57
  133. package/dist/components/core/panel/LeftHero.svelte +117 -117
  134. package/dist/components/core/search/SearchInput.svelte +32 -32
  135. package/dist/components/core/search/shared/SearchInputCore.svelte +66 -66
  136. package/dist/components/core/sidebar/MenuBarSidebar.svelte +70 -70
  137. package/dist/components/core/sidebar/MenuBarSidebar.svelte.d.ts +2 -2
  138. package/dist/components/core/sidebar/data/nav-menu-sidebar.js +1 -0
  139. package/dist/components/core/sidebar/data/nav-top-bar-sidebar.js +1 -0
  140. package/dist/components/core/sidebar/data/nav-user-sidebar.js +1 -0
  141. package/dist/components/core/sidebar/types.d.ts +2 -2
  142. package/dist/components/core/sidebar/ui/navbar/NavMenuBarSidebar.svelte +97 -97
  143. package/dist/components/core/sidebar/ui/navbar/NavMenuBarSidebar.svelte.d.ts +1 -1
  144. package/dist/components/core/sidebar/ui/navbar/NavMenuBottomSidebar.svelte +33 -33
  145. package/dist/components/core/sidebar/ui/navbar/NavMenuBottomSidebar.svelte.d.ts +1 -1
  146. package/dist/components/core/sidebar/ui/navbar/NavMenuTopBarSidebar.svelte +103 -103
  147. package/dist/components/core/sidebar/ui/navbar/NavMenuTopBarSidebar.svelte.d.ts +1 -1
  148. package/dist/components/core/tabs/ui/tab-underline.svelte +43 -43
  149. package/dist/components/pages/admin/01/ui/AdminContent.svelte +14 -14
  150. package/dist/components/pages/admin/01/ui/AdminPanel.svelte +46 -46
  151. package/dist/components/pages/privacy-policy-or-terms-of-use/types.d.ts +2 -0
  152. package/dist/components/pages/security/login/01/ui/FormRegister.svelte +28 -28
  153. package/dist/components/pages/security/login/01/ui/LoginCard.svelte +107 -107
  154. package/dist/components/pages/security/login/PageLogin.svelte +22 -22
  155. package/dist/components/ui/badge/badge.svelte +49 -49
  156. package/dist/components/ui/button/button.svelte +82 -82
  157. package/dist/components/ui/chart/chart-container.svelte +80 -80
  158. package/dist/components/ui/chart/chart-style.svelte +37 -37
  159. package/dist/components/ui/chart/chart-tooltip.svelte +184 -184
  160. package/dist/components/ui/checkbox/checkbox.svelte +40 -40
  161. package/dist/components/ui/data-table/flex-render.svelte +40 -40
  162. package/dist/components/ui/drawer/drawer-close.svelte +7 -7
  163. package/dist/components/ui/drawer/drawer-content.svelte +33 -33
  164. package/dist/components/ui/drawer/drawer-description.svelte +17 -17
  165. package/dist/components/ui/drawer/drawer-footer.svelte +20 -20
  166. package/dist/components/ui/drawer/drawer-header.svelte +20 -20
  167. package/dist/components/ui/drawer/drawer-nested.svelte +12 -12
  168. package/dist/components/ui/drawer/drawer-overlay.svelte +17 -17
  169. package/dist/components/ui/drawer/drawer-portal.svelte +7 -7
  170. package/dist/components/ui/drawer/drawer-title.svelte +17 -17
  171. package/dist/components/ui/drawer/drawer-trigger.svelte +7 -7
  172. package/dist/components/ui/drawer/drawer.svelte +12 -12
  173. package/dist/components/ui/select/select-content.svelte +45 -45
  174. package/dist/components/ui/select/select-group-heading.svelte +21 -21
  175. package/dist/components/ui/select/select-group.svelte +17 -17
  176. package/dist/components/ui/select/select-item.svelte +41 -41
  177. package/dist/components/ui/select/select-label.svelte +20 -20
  178. package/dist/components/ui/select/select-portal.svelte +7 -7
  179. package/dist/components/ui/select/select-scroll-down-button.svelte +21 -21
  180. package/dist/components/ui/select/select-scroll-up-button.svelte +21 -21
  181. package/dist/components/ui/select/select-separator.svelte +18 -18
  182. package/dist/components/ui/select/select-trigger.svelte +30 -30
  183. package/dist/components/ui/select/select.svelte +11 -11
  184. package/dist/components/ui/sidebar/sidebar-menu-sub-button.svelte +39 -39
  185. package/dist/components/ui/star-rating/star-rating-star.svelte +41 -41
  186. package/dist/components/ui/star-rating/star-rating.svelte +20 -20
  187. package/dist/components/ui/table/table-body.svelte +15 -15
  188. package/dist/components/ui/table/table-caption.svelte +20 -20
  189. package/dist/components/ui/table/table-cell.svelte +15 -15
  190. package/dist/components/ui/table/table-footer.svelte +20 -20
  191. package/dist/components/ui/table/table-head.svelte +15 -15
  192. package/dist/components/ui/table/table-header.svelte +20 -20
  193. package/dist/components/ui/table/table-row.svelte +15 -15
  194. package/dist/components/ui/table/table.svelte +17 -17
  195. package/dist/components/ui/tabs/tabs-content.svelte +17 -17
  196. package/dist/components/ui/tabs/tabs-list.svelte +40 -40
  197. package/dist/components/ui/tabs/tabs-trigger.svelte +23 -23
  198. package/dist/components/ui/tabs/tabs.svelte +19 -19
  199. package/dist/globals.css +56 -2
  200. package/dist/index.d.ts +1 -8
  201. package/dist/index.js +1 -8
  202. package/dist/styles/globals.css +149 -149
  203. package/dist/styles/hgi-stroke-rounded.css +1 -1
  204. package/dist/types/index.d.ts +9 -7
  205. package/package.json +113 -113
  206. package/dist/components/core/nav/ui/NavMenu.svelte +0 -122
  207. package/dist/components/core/nav/ui/NavMenu.svelte.d.ts +0 -4
  208. package/dist/components/core/nav/ui/mobile/nav-menu-drawer.svelte +0 -85
  209. package/dist/components/core/{nav/data/nav-menu-sidebar.js → carousel/badge/type.js} +0 -0
  210. package/dist/components/core/{nav/ui/shared → carousel/hero}/types.js +0 -0
  211. package/dist/components/core/carousel/hero/{CarouselHero.svelte.d.ts → ui/CarouselHero.svelte.d.ts} +1 -1
  212. /package/dist/components/core/{nav/data/nav-top-bar-sidebar.js → grid/data/types.js} +0 -0
  213. /package/dist/components/core/nav/data/{nav-user-sidebar.js → types.js} +0 -0
  214. /package/dist/components/core/{nav → sidebar}/data/nav-menu-sidebar.d.ts +0 -0
  215. /package/dist/components/core/{nav → sidebar}/data/nav-top-bar-sidebar.d.ts +0 -0
  216. /package/dist/components/core/{nav → sidebar}/data/nav-user-sidebar.d.ts +0 -0
@@ -1,134 +1,134 @@
1
- <script lang="ts">
2
- /**
3
- * Card component with a title and content.
4
- * @component
5
- */
6
- import { UserIcon } from "@hugeicons/core-free-icons";
7
- import { t } from "../../../../../i18n";
8
- import type { CardProfileProps } from "../../types";
9
- import CardStarRating from "../../shared/CardStarRating.svelte";
10
- import CardDescription from "../../shared/CardDescription.svelte";
11
- import CardTags from "../../shared/CardTags.svelte";
12
- import CardButton from "../../shared/CardButton.svelte";
13
- import CardFavorite from "../../shared/CardFavorite.svelte";
14
- import Skeleton from "../../../../ui/skeleton/skeleton.svelte";
15
- import CardPhoneOrWhatsapp from "../../shared/CardPhoneOrWhatsapp.svelte";
16
- import CardThumbnailVideo from "../../shared/CardThumbnailVideo.svelte";
17
- import ImgPlaceholder from "../../../../../assets/placeholder-image.png";
18
-
19
- let {
20
- id,
21
- tags = [],
22
- title,
23
- content,
24
- startNumber,
25
- startMax = 5,
26
- isTagBorderBottom = true,
27
- isFavorite = false,
28
- buttonProfileClass,
29
- isLoading = false,
30
- imageUrl,
31
- videoUrl,
32
- isImageButtonMaximized = false,
33
- isVideoButtonMaximized = false,
34
- isDescriptionIcon = false,
35
- isDescriptionLabel = false,
36
- onEmailClick,
37
- onWhatsappClick,
38
- onFavoriteClick,
39
- onButtonProfile,
40
- }: CardProfileProps = $props();
41
- </script>
42
-
43
- <article
44
- class="border border-gray-300 dark:border-gray-700 bg-gray-100 dark:bg-transparent rounded-lg relative"
45
- >
46
- <div class="p-5">
47
- <div class="flex justify-between items-center w-full border-b-2">
48
- <div class="w-full flex flex-col justify-center items-center relative">
49
- <div>
50
- {#if isLoading}
51
- <Skeleton
52
- class="w-12 h-12 md:w-14 md:h-14 lg:w-20 lg:h-20 rounded-full bg-gray-300"
53
- />
54
- {:else if imageUrl}
55
- <img
56
- src={imageUrl}
57
- alt={imageUrl}
58
- class="w-12 h-12 md:w-14 md:h-14 lg:w-20 lg:h-20 rounded-full"
59
- onerror={(e) =>
60
- ((e.target as HTMLImageElement).src = ImgPlaceholder)}
61
- />
62
- {/if}
63
- </div>
64
- <div>
65
- {#if title}
66
- <div class="text-center font-bold">{title}</div>
67
- {:else if isLoading}
68
- <Skeleton class="w-40 h-5 rounded-lg bg-gray-400 mb-0.5" />
69
- {/if}
70
- </div>
71
- <div>
72
- {#if startNumber}
73
- <CardStarRating {startNumber} {startMax} {isLoading} />
74
- {:else if isLoading}
75
- <Skeleton class="w-20 h-4 rounded-lg bg-gray-300 mt-0.5" />
76
- {/if}
77
- </div>
78
- </div>
79
-
80
- <div class="flex justify-end items-center absolute top-1 right-1">
81
- <CardFavorite
82
- {id}
83
- {isFavorite}
84
- onFavoriteClick={() => onFavoriteClick!(id)}
85
- {isLoading}
86
- />
87
- </div>
88
- </div>
89
-
90
- <div class="my-2">
91
- <CardDescription
92
- {content}
93
- {isLoading}
94
- {isDescriptionIcon}
95
- {isDescriptionLabel}
96
- />
97
- </div>
98
-
99
- <CardTags
100
- className="mb-2"
101
- tags={tags ?? []}
102
- {isTagBorderBottom}
103
- {isLoading}
104
- />
105
-
106
- <CardThumbnailVideo
107
- {imageUrl}
108
- {videoUrl}
109
- {isImageButtonMaximized}
110
- {isVideoButtonMaximized}
111
- {isLoading}
112
- class="h-32.5 md:h-36 lg:h-44"
113
- />
114
-
115
- {#if onButtonProfile}
116
- <div class="flex justify-center items-center gap-2 w-full mt-3 -mb-1">
117
- {#if onButtonProfile}
118
- <CardButton
119
- {id}
120
- icon={UserIcon}
121
- className={buttonProfileClass}
122
- text={$t("label.view.profile")}
123
- onClick={onButtonProfile}
124
- {isLoading}
125
- isFlex
126
- />
127
- {:else if isLoading}
128
- <Skeleton class="w-20 h-4 rounded-lg bg-gray-400 mt-0.5" />
129
- {/if}
130
- </div>
131
- {/if}
132
- </div>
133
- <CardPhoneOrWhatsapp {id} {onEmailClick} {onWhatsappClick} />
134
- </article>
1
+ <script lang="ts">
2
+ /**
3
+ * Card component with a title and content.
4
+ * @component
5
+ */
6
+ import { UserIcon } from "@hugeicons/core-free-icons";
7
+ import { t } from "../../../../../i18n";
8
+ import type { CardProfileProps } from "../../types";
9
+ import CardStarRating from "../../shared/CardStarRating.svelte";
10
+ import CardDescription from "../../shared/CardDescription.svelte";
11
+ import CardTags from "../../shared/CardTags.svelte";
12
+ import CardButton from "../../shared/CardButton.svelte";
13
+ import CardFavorite from "../../shared/CardFavorite.svelte";
14
+ import Skeleton from "../../../../ui/skeleton/skeleton.svelte";
15
+ import CardPhoneOrWhatsapp from "../../shared/CardPhoneOrWhatsapp.svelte";
16
+ import CardThumbnailVideo from "../../shared/CardThumbnailVideo.svelte";
17
+ import ImgPlaceholder from "../../../../../assets/placeholder-image.png";
18
+
19
+ let {
20
+ id,
21
+ tags = [],
22
+ title,
23
+ content,
24
+ startNumber,
25
+ startMax = 5,
26
+ isTagBorderBottom = true,
27
+ isFavorite = false,
28
+ buttonProfileClass,
29
+ isLoading = false,
30
+ imageUrl,
31
+ videoUrl,
32
+ isImageButtonMaximized = false,
33
+ isVideoButtonMaximized = false,
34
+ isDescriptionIcon = false,
35
+ isDescriptionLabel = false,
36
+ onEmailClick,
37
+ onWhatsappClick,
38
+ onFavoriteClick,
39
+ onButtonProfile,
40
+ }: CardProfileProps = $props();
41
+ </script>
42
+
43
+ <article
44
+ class="border border-gray-300 dark:border-gray-700 bg-gray-100 dark:bg-transparent rounded-lg relative"
45
+ >
46
+ <div class="p-5">
47
+ <div class="flex justify-between items-center w-full border-b-2">
48
+ <div class="w-full flex flex-col justify-center items-center relative">
49
+ <div>
50
+ {#if isLoading}
51
+ <Skeleton
52
+ class="w-12 h-12 md:w-14 md:h-14 lg:w-20 lg:h-20 rounded-full bg-gray-300"
53
+ />
54
+ {:else if imageUrl}
55
+ <img
56
+ src={imageUrl}
57
+ alt={imageUrl}
58
+ class="w-12 h-12 md:w-14 md:h-14 lg:w-20 lg:h-20 rounded-full"
59
+ onerror={(e) =>
60
+ ((e.target as HTMLImageElement).src = ImgPlaceholder)}
61
+ />
62
+ {/if}
63
+ </div>
64
+ <div>
65
+ {#if title}
66
+ <div class="text-center font-bold">{title}</div>
67
+ {:else if isLoading}
68
+ <Skeleton class="w-40 h-5 rounded-lg bg-gray-400 mb-0.5" />
69
+ {/if}
70
+ </div>
71
+ <div>
72
+ {#if startNumber}
73
+ <CardStarRating {startNumber} {startMax} {isLoading} />
74
+ {:else if isLoading}
75
+ <Skeleton class="w-20 h-4 rounded-lg bg-gray-300 mt-0.5" />
76
+ {/if}
77
+ </div>
78
+ </div>
79
+
80
+ <div class="flex justify-end items-center absolute top-1 right-1">
81
+ <CardFavorite
82
+ {id}
83
+ {isFavorite}
84
+ onFavoriteClick={() => onFavoriteClick!(id)}
85
+ {isLoading}
86
+ />
87
+ </div>
88
+ </div>
89
+
90
+ <div class="my-2">
91
+ <CardDescription
92
+ {content}
93
+ {isLoading}
94
+ {isDescriptionIcon}
95
+ {isDescriptionLabel}
96
+ />
97
+ </div>
98
+
99
+ <CardTags
100
+ className="mb-2"
101
+ tags={tags ?? []}
102
+ {isTagBorderBottom}
103
+ {isLoading}
104
+ />
105
+
106
+ <CardThumbnailVideo
107
+ {imageUrl}
108
+ {videoUrl}
109
+ {isImageButtonMaximized}
110
+ {isVideoButtonMaximized}
111
+ {isLoading}
112
+ class="h-32.5 md:h-36 lg:h-44"
113
+ />
114
+
115
+ {#if onButtonProfile}
116
+ <div class="flex justify-center items-center gap-2 w-full mt-3 -mb-1">
117
+ {#if onButtonProfile}
118
+ <CardButton
119
+ {id}
120
+ icon={UserIcon}
121
+ className={buttonProfileClass}
122
+ text={$t("label.view.profile")}
123
+ onClick={onButtonProfile}
124
+ {isLoading}
125
+ isFlex
126
+ />
127
+ {:else if isLoading}
128
+ <Skeleton class="w-20 h-4 rounded-lg bg-gray-400 mt-0.5" />
129
+ {/if}
130
+ </div>
131
+ {/if}
132
+ </div>
133
+ <CardPhoneOrWhatsapp {id} {onEmailClick} {onWhatsappClick} />
134
+ </article>
@@ -1,132 +1,132 @@
1
- <script lang="ts">
2
- /**
3
- * Card component with a title and content.
4
- * @component
5
- */
6
- import { InformationCircleIcon, UserIcon } from "@hugeicons/core-free-icons";
7
- import { t } from "../../../../../i18n";
8
- import type { CardProfileProps } from "../../types";
9
- import CardStarRating from "../../shared/CardStarRating.svelte";
10
- import CardTags from "../../shared/CardTags.svelte";
11
- import CardDescription from "../../shared/CardDescription.svelte";
12
- import CardButton from "../../shared/CardButton.svelte";
13
- import CardFavorite from "../../shared/CardFavorite.svelte";
14
- import Skeleton from "../../../../ui/skeleton/skeleton.svelte";
15
- import CardThumbnailVideo from "../../shared/CardThumbnailVideo.svelte";
16
- import CardPhoneOrWhatsapp from "../../shared/CardPhoneOrWhatsapp.svelte";
17
- import ImgPlaceholder from "../../../../../assets/placeholder-image.png";
18
-
19
- let {
20
- id,
21
- tags = [],
22
- title,
23
- content,
24
- className,
25
- startNumber,
26
- startMax = 5,
27
- isTagBorderBottom = true,
28
- isFavorite = false,
29
- buttonProfileClass,
30
- onEmailClick,
31
- onWhatsappClick,
32
- isLoading = false,
33
- onFavoriteClick,
34
- onButtonProfile,
35
- imageUrl,
36
- videoUrl,
37
- isImageButtonMaximized = false,
38
- isVideoButtonMaximized = false,
39
- isDescriptionLabel = false,
40
- isDescriptionIcon = false,
41
- }: CardProfileProps = $props();
42
- </script>
43
-
44
- <article
45
- class="border border-gray-300 dark:border-gray-700 bg-gray-100 dark:bg-transparent rounded-lg space-y-1 md:space-y-3 relative {className}"
46
- >
47
- <div class="p-5">
48
- <div class="flex justify-start items-center w-full relative">
49
- <div class="flex justify-start gap-2">
50
- <div class="flex justify-center items-center">
51
- {#if isLoading}
52
- <Skeleton class="w-12 h-12 rounded-lg bg-gray-400 mt-0.5" />
53
- {:else if imageUrl}
54
- <img
55
- src={imageUrl}
56
- alt={imageUrl}
57
- class="w-12 h-12 rounded-lg"
58
- onerror={(e) =>
59
- ((e.target as HTMLImageElement).src = ImgPlaceholder)}
60
- />
61
- {/if}
62
- </div>
63
- <div class="flex flex-col justify-start items-start">
64
- {#if title}
65
- <div class="text-left font-bold">{title}</div>
66
- {:else if isLoading}
67
- <Skeleton class="w-20 h-4 rounded-lg bg-gray-400 mt-0.5" />
68
- {/if}
69
-
70
- {#if startNumber}
71
- <CardStarRating {startNumber} {startMax} {isLoading} />
72
- {:else if isLoading}
73
- <Skeleton class="w-20 h-4 rounded-lg bg-gray-300 mt-0.5" />
74
- {/if}
75
- </div>
76
- </div>
77
- </div>
78
-
79
- <div class="flex justify-end items-center absolute top-1 right-1">
80
- <CardFavorite
81
- {id}
82
- {isFavorite}
83
- onFavoriteClick={() => onFavoriteClick!(id)}
84
- {isLoading}
85
- />
86
- </div>
87
-
88
- <div class="mb-4">
89
- <CardDescription
90
- {content}
91
- {isLoading}
92
- {isDescriptionLabel}
93
- {isDescriptionIcon}
94
- lines={tags.length == 0 ? 3 : 2}
95
- />
96
- </div>
97
-
98
- <CardTags
99
- className="my-2"
100
- tags={tags ?? []}
101
- {isTagBorderBottom}
102
- {isLoading}
103
- />
104
-
105
- <CardThumbnailVideo
106
- {imageUrl}
107
- {videoUrl}
108
- {isImageButtonMaximized}
109
- {isVideoButtonMaximized}
110
- {isLoading}
111
- class="h-32.5 md:h-36 lg:h-44"
112
- />
113
-
114
- {#if onButtonProfile}
115
- <div class="flex justify-center items-center gap-2 mt-2 -mb-2 w-full">
116
- {#if onButtonProfile}
117
- <CardButton
118
- {id}
119
- icon={UserIcon}
120
- className={buttonProfileClass}
121
- text={$t("label.view.profile")}
122
- onClick={onButtonProfile}
123
- isFlex
124
- />
125
- {:else if isLoading}
126
- <Skeleton class="w-20 h-4 rounded-lg bg-gray-400 mt-0.5" />
127
- {/if}
128
- </div>
129
- {/if}
130
- </div>
131
- <CardPhoneOrWhatsapp {id} {onEmailClick} {onWhatsappClick} />
132
- </article>
1
+ <script lang="ts">
2
+ /**
3
+ * Card component with a title and content.
4
+ * @component
5
+ */
6
+ import { InformationCircleIcon, UserIcon } from "@hugeicons/core-free-icons";
7
+ import { t } from "../../../../../i18n";
8
+ import type { CardProfileProps } from "../../types";
9
+ import CardStarRating from "../../shared/CardStarRating.svelte";
10
+ import CardTags from "../../shared/CardTags.svelte";
11
+ import CardDescription from "../../shared/CardDescription.svelte";
12
+ import CardButton from "../../shared/CardButton.svelte";
13
+ import CardFavorite from "../../shared/CardFavorite.svelte";
14
+ import Skeleton from "../../../../ui/skeleton/skeleton.svelte";
15
+ import CardThumbnailVideo from "../../shared/CardThumbnailVideo.svelte";
16
+ import CardPhoneOrWhatsapp from "../../shared/CardPhoneOrWhatsapp.svelte";
17
+ import ImgPlaceholder from "../../../../../assets/placeholder-image.png";
18
+
19
+ let {
20
+ id,
21
+ tags = [],
22
+ title,
23
+ content,
24
+ className,
25
+ startNumber,
26
+ startMax = 5,
27
+ isTagBorderBottom = true,
28
+ isFavorite = false,
29
+ buttonProfileClass,
30
+ onEmailClick,
31
+ onWhatsappClick,
32
+ isLoading = false,
33
+ onFavoriteClick,
34
+ onButtonProfile,
35
+ imageUrl,
36
+ videoUrl,
37
+ isImageButtonMaximized = false,
38
+ isVideoButtonMaximized = false,
39
+ isDescriptionLabel = false,
40
+ isDescriptionIcon = false,
41
+ }: CardProfileProps = $props();
42
+ </script>
43
+
44
+ <article
45
+ class="border border-gray-300 dark:border-gray-700 bg-gray-100 dark:bg-transparent rounded-lg space-y-1 md:space-y-3 relative {className}"
46
+ >
47
+ <div class="p-5">
48
+ <div class="flex justify-start items-center w-full relative">
49
+ <div class="flex justify-start gap-2">
50
+ <div class="flex justify-center items-center">
51
+ {#if isLoading}
52
+ <Skeleton class="w-12 h-12 rounded-lg bg-gray-400 mt-0.5" />
53
+ {:else if imageUrl}
54
+ <img
55
+ src={imageUrl}
56
+ alt={imageUrl}
57
+ class="w-12 h-12 rounded-lg"
58
+ onerror={(e) =>
59
+ ((e.target as HTMLImageElement).src = ImgPlaceholder)}
60
+ />
61
+ {/if}
62
+ </div>
63
+ <div class="flex flex-col justify-start items-start">
64
+ {#if title}
65
+ <div class="text-left font-bold">{title}</div>
66
+ {:else if isLoading}
67
+ <Skeleton class="w-20 h-4 rounded-lg bg-gray-400 mt-0.5" />
68
+ {/if}
69
+
70
+ {#if startNumber}
71
+ <CardStarRating {startNumber} {startMax} {isLoading} />
72
+ {:else if isLoading}
73
+ <Skeleton class="w-20 h-4 rounded-lg bg-gray-300 mt-0.5" />
74
+ {/if}
75
+ </div>
76
+ </div>
77
+ </div>
78
+
79
+ <div class="flex justify-end items-center absolute top-1 right-1">
80
+ <CardFavorite
81
+ {id}
82
+ {isFavorite}
83
+ onFavoriteClick={() => onFavoriteClick!(id)}
84
+ {isLoading}
85
+ />
86
+ </div>
87
+
88
+ <div class="mb-4">
89
+ <CardDescription
90
+ {content}
91
+ {isLoading}
92
+ {isDescriptionLabel}
93
+ {isDescriptionIcon}
94
+ lines={tags.length == 0 ? 3 : 2}
95
+ />
96
+ </div>
97
+
98
+ <CardTags
99
+ className="my-2"
100
+ tags={tags ?? []}
101
+ {isTagBorderBottom}
102
+ {isLoading}
103
+ />
104
+
105
+ <CardThumbnailVideo
106
+ {imageUrl}
107
+ {videoUrl}
108
+ {isImageButtonMaximized}
109
+ {isVideoButtonMaximized}
110
+ {isLoading}
111
+ class="h-32.5 md:h-36 lg:h-44"
112
+ />
113
+
114
+ {#if onButtonProfile}
115
+ <div class="flex justify-center items-center gap-2 mt-2 -mb-2 w-full">
116
+ {#if onButtonProfile}
117
+ <CardButton
118
+ {id}
119
+ icon={UserIcon}
120
+ className={buttonProfileClass}
121
+ text={$t("label.view.profile")}
122
+ onClick={onButtonProfile}
123
+ isFlex
124
+ />
125
+ {:else if isLoading}
126
+ <Skeleton class="w-20 h-4 rounded-lg bg-gray-400 mt-0.5" />
127
+ {/if}
128
+ </div>
129
+ {/if}
130
+ </div>
131
+ <CardPhoneOrWhatsapp {id} {onEmailClick} {onWhatsappClick} />
132
+ </article>
@@ -1,18 +1,18 @@
1
- <script lang="ts">
2
- import type { CardProfileProps } from "../types";
3
- import CardProfile01 from "./01/CardProfile01.svelte";
4
- import CardProfile02 from "./02/CardProfile02.svelte";
5
-
6
- type Props = {
7
- variant?: 1 | 2;
8
- isLoading?: boolean;
9
- };
10
-
11
- let { variant, isLoading, ...restProps }: CardProfileProps & Props = $props();
12
- </script>
13
-
14
- {#if variant === 2}
15
- <CardProfile02 {...restProps} {isLoading} />
16
- {:else}
17
- <CardProfile01 {...restProps} {isLoading} />
18
- {/if}
1
+ <script lang="ts">
2
+ import type { CardProfileProps } from "../types";
3
+ import CardProfile01 from "./01/CardProfile01.svelte";
4
+ import CardProfile02 from "./02/CardProfile02.svelte";
5
+
6
+ type Props = {
7
+ variant?: 1 | 2;
8
+ isLoading?: boolean;
9
+ };
10
+
11
+ let { variant, isLoading, ...restProps }: CardProfileProps & Props = $props();
12
+ </script>
13
+
14
+ {#if variant === 2}
15
+ <CardProfile02 {...restProps} {isLoading} />
16
+ {:else}
17
+ <CardProfile01 {...restProps} {isLoading} />
18
+ {/if}