negodesign 0.0.71 → 0.0.73

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 (392) hide show
  1. package/README.md +115 -23
  2. package/dist/components/NegoDesign.svelte +7 -2
  3. package/dist/components/core/carousel/badge/ui/CarouselBadge.svelte +3 -5
  4. package/dist/components/core/carousel/grid/shared/ui/CarouselGridSlot.svelte +2 -2
  5. package/dist/components/core/carousel/highlights/ui/CarouselHighlights.svelte +2 -2
  6. package/dist/components/core/carousel/product/ui/CarouselProduct.svelte +2 -2
  7. package/dist/components/core/carousel/promotion/ui/CarouselPromotion.svelte +2 -2
  8. package/dist/components/core/datatable/data/columns-create.d.ts +1 -1
  9. package/dist/components/core/datatable/data/data-table.d.ts +3 -3
  10. package/dist/components/core/datatable/data/resolve-cell-badge.svelte.d.ts +2 -2
  11. package/dist/components/core/datatable/data/resolve-cell-badge.svelte.js +2 -1
  12. package/dist/components/core/datatable/data/resolve-cell.svelte.d.ts +2 -2
  13. package/dist/components/core/datatable/data/resolve-header.svelte.d.ts +2 -2
  14. package/dist/components/core/datatable/ui/DataTableActions.svelte +1 -1
  15. package/dist/components/core/datatable/ui/DataTableActions.svelte.d.ts +1 -1
  16. package/dist/components/core/datatable/ui/DataTableContent.svelte +1 -1
  17. package/dist/components/core/datatable/ui/DataTableContent.svelte.d.ts +1 -1
  18. package/dist/components/core/datatable/ui/DataTableCore.svelte +23 -26
  19. package/dist/components/core/datatable/ui/DataTableListFilter.svelte +3 -2
  20. package/dist/components/core/datatable/ui/DataTableListFilter.svelte.d.ts +1 -1
  21. package/dist/components/core/datatable/ui/DataTableListPagination.svelte +1 -1
  22. package/dist/components/core/datatable/ui/DataTableListPagination.svelte.d.ts +1 -1
  23. package/dist/components/core/datatable/ui/columns-create.svelte.d.ts +1 -1
  24. package/dist/components/core/panel/LeftHero.svelte +2 -2
  25. package/dist/components/core/sidebar/data/nav-top-bar-sidebar.d.ts +13 -4
  26. package/dist/components/core/sidebar/ui/navbar/NavMenuBarSidebar.svelte +3 -3
  27. package/dist/components/core/sidebar/ui/navbar/NavMenuTopBarSidebar.svelte +0 -2
  28. package/dist/components/core/sidebar/ui/navbar/nav-menu-header-sidebar.svelte +4 -5
  29. package/dist/components/pages/product-details/shared/ProductDetailFilesVertical.svelte +0 -1
  30. package/dist/components/pages/profile-user/shared/ProfileUserAddress.svelte +2 -3
  31. package/dist/components/pages/profile-user/shared/ProfileUserTabs.svelte +3 -1
  32. package/dist/components/ui/avatar/avatar-fallback.svelte +22 -12
  33. package/dist/components/ui/avatar/avatar-fallback.svelte.d.ts +3 -2
  34. package/dist/components/ui/avatar/avatar-image.svelte +31 -9
  35. package/dist/components/ui/avatar/avatar-image.svelte.d.ts +3 -2
  36. package/dist/components/ui/avatar/avatar.svelte +23 -9
  37. package/dist/components/ui/avatar/avatar.svelte.d.ts +6 -3
  38. package/dist/components/ui/avatar/context.svelte.d.ts +7 -0
  39. package/dist/components/ui/avatar/context.svelte.js +10 -0
  40. package/dist/components/ui/badge/badge.svelte +24 -26
  41. package/dist/components/ui/badge/badge.svelte.d.ts +15 -33
  42. package/dist/components/ui/button/button.svelte +35 -31
  43. package/dist/components/ui/button/button.svelte.d.ts +24 -61
  44. package/dist/components/ui/carousel/autoplay.d.ts +7 -0
  45. package/dist/components/ui/carousel/autoplay.js +7 -0
  46. package/dist/components/ui/carousel/carousel-content.svelte +31 -17
  47. package/dist/components/ui/carousel/carousel-item.svelte +2 -3
  48. package/dist/components/ui/carousel/carousel-next.svelte +1 -1
  49. package/dist/components/ui/carousel/carousel-previous.svelte +1 -1
  50. package/dist/components/ui/carousel/carousel.svelte +162 -30
  51. package/dist/components/ui/carousel/context.d.ts +23 -14
  52. package/dist/components/ui/carousel/context.js +4 -4
  53. package/dist/components/ui/carousel/index.d.ts +2 -0
  54. package/dist/components/ui/carousel/index.js +1 -0
  55. package/dist/components/ui/checkbox/checkbox.svelte +74 -17
  56. package/dist/components/ui/checkbox/checkbox.svelte.d.ts +17 -2
  57. package/dist/components/ui/collapsible/collapsible-content.svelte +27 -3
  58. package/dist/components/ui/collapsible/collapsible-content.svelte.d.ts +8 -2
  59. package/dist/components/ui/collapsible/collapsible-trigger.svelte +48 -3
  60. package/dist/components/ui/collapsible/collapsible-trigger.svelte.d.ts +10 -2
  61. package/dist/components/ui/collapsible/collapsible.svelte +62 -6
  62. package/dist/components/ui/collapsible/collapsible.svelte.d.ts +21 -2
  63. package/dist/components/ui/data-table/data-table.svelte.d.ts +2 -40
  64. package/dist/components/ui/data-table/data-table.svelte.js +1 -110
  65. package/dist/components/ui/data-table/flex-render.svelte +5 -5
  66. package/dist/components/ui/data-table/flex-render.svelte.d.ts +2 -2
  67. package/dist/components/ui/data-table/index.d.ts +2 -1
  68. package/dist/components/ui/data-table/index.js +1 -1
  69. package/dist/components/ui/data-table/table-core.svelte.d.ts +117 -0
  70. package/dist/components/ui/data-table/table-core.svelte.js +260 -0
  71. package/dist/components/ui/drawer/drawer-close.svelte +38 -3
  72. package/dist/components/ui/drawer/drawer-close.svelte.d.ts +10 -2
  73. package/dist/components/ui/drawer/drawer-content.svelte +67 -18
  74. package/dist/components/ui/drawer/drawer-content.svelte.d.ts +5 -4
  75. package/dist/components/ui/drawer/drawer-description.svelte +9 -6
  76. package/dist/components/ui/drawer/drawer-description.svelte.d.ts +3 -2
  77. package/dist/components/ui/drawer/drawer-nested.svelte +28 -5
  78. package/dist/components/ui/drawer/drawer-nested.svelte.d.ts +8 -1
  79. package/dist/components/ui/drawer/drawer-overlay.svelte +18 -9
  80. package/dist/components/ui/drawer/drawer-overlay.svelte.d.ts +3 -2
  81. package/dist/components/ui/drawer/drawer-portal.svelte +16 -3
  82. package/dist/components/ui/drawer/drawer-portal.svelte.d.ts +3 -1
  83. package/dist/components/ui/drawer/drawer-title.svelte +9 -6
  84. package/dist/components/ui/drawer/drawer-title.svelte.d.ts +3 -2
  85. package/dist/components/ui/drawer/drawer-trigger.svelte +39 -3
  86. package/dist/components/ui/drawer/drawer-trigger.svelte.d.ts +10 -2
  87. package/dist/components/ui/drawer/drawer.svelte +67 -4
  88. package/dist/components/ui/drawer/drawer.svelte.d.ts +23 -1
  89. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte +18 -8
  90. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte.d.ts +8 -2
  91. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +53 -28
  92. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte.d.ts +8 -3
  93. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +93 -17
  94. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte.d.ts +10 -6
  95. package/dist/components/ui/dropdown-menu/dropdown-menu-context.svelte.d.ts +26 -0
  96. package/dist/components/ui/dropdown-menu/dropdown-menu-context.svelte.js +27 -0
  97. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +14 -8
  98. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte.d.ts +6 -3
  99. package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte +18 -3
  100. package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte.d.ts +7 -2
  101. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +42 -8
  102. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte.d.ts +9 -2
  103. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte +9 -5
  104. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte.d.ts +5 -2
  105. package/dist/components/ui/dropdown-menu/dropdown-menu-portal.svelte +3 -3
  106. package/dist/components/ui/dropdown-menu/dropdown-menu-portal.svelte.d.ts +5 -1
  107. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte +36 -8
  108. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte.d.ts +9 -2
  109. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +59 -23
  110. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte.d.ts +12 -2
  111. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +11 -7
  112. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte.d.ts +6 -2
  113. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +26 -9
  114. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte.d.ts +8 -2
  115. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +39 -11
  116. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte.d.ts +7 -2
  117. package/dist/components/ui/dropdown-menu/dropdown-menu-sub.svelte +73 -3
  118. package/dist/components/ui/dropdown-menu/dropdown-menu-sub.svelte.d.ts +8 -1
  119. package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte +65 -3
  120. package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte.d.ts +12 -2
  121. package/dist/components/ui/dropdown-menu/dropdown-menu.svelte +50 -3
  122. package/dist/components/ui/dropdown-menu/dropdown-menu.svelte.d.ts +9 -1
  123. package/dist/components/ui/empty/empty-content.svelte +2 -5
  124. package/dist/components/ui/empty/empty-description.svelte +2 -5
  125. package/dist/components/ui/empty/empty-header.svelte +2 -2
  126. package/dist/components/ui/empty/empty-media.svelte +17 -16
  127. package/dist/components/ui/empty/empty-media.svelte.d.ts +10 -19
  128. package/dist/components/ui/empty/empty-title.svelte +2 -2
  129. package/dist/components/ui/empty/empty.svelte +2 -5
  130. package/dist/components/ui/input-otp/context.svelte.d.ts +22 -0
  131. package/dist/components/ui/input-otp/context.svelte.js +8 -0
  132. package/dist/components/ui/input-otp/input-otp-group.svelte +5 -2
  133. package/dist/components/ui/input-otp/input-otp-separator.svelte +5 -5
  134. package/dist/components/ui/input-otp/input-otp-slot.svelte +50 -17
  135. package/dist/components/ui/input-otp/input-otp-slot.svelte.d.ts +7 -2
  136. package/dist/components/ui/input-otp/input-otp.svelte +167 -8
  137. package/dist/components/ui/input-otp/input-otp.svelte.d.ts +17 -2
  138. package/dist/components/ui/label/label.svelte +10 -10
  139. package/dist/components/ui/label/label.svelte.d.ts +3 -2
  140. package/dist/components/ui/language-switcher/language-switcher.svelte +4 -3
  141. package/dist/components/ui/light-switch/light-switch.svelte +12 -6
  142. package/dist/components/ui/phone-input/country-selector.svelte +64 -78
  143. package/dist/components/ui/phone-input/country-selector.svelte.d.ts +6 -6
  144. package/dist/components/ui/phone-input/flag.svelte +3 -12
  145. package/dist/components/ui/phone-input/flag.svelte.d.ts +1 -1
  146. package/dist/components/ui/phone-input/flags.d.ts +2 -1
  147. package/dist/components/ui/phone-input/flags.js +4 -8
  148. package/dist/components/ui/phone-input/index.d.ts +1 -1
  149. package/dist/components/ui/phone-input/phone-input.svelte +106 -21
  150. package/dist/components/ui/phone-input/phone-input.svelte.d.ts +1 -2
  151. package/dist/components/ui/phone-input/types.d.ts +16 -1
  152. package/dist/components/ui/popover/popover-close.svelte +22 -3
  153. package/dist/components/ui/popover/popover-close.svelte.d.ts +7 -2
  154. package/dist/components/ui/popover/popover-content.svelte +80 -18
  155. package/dist/components/ui/popover/popover-content.svelte.d.ts +10 -6
  156. package/dist/components/ui/popover/popover-context.svelte.d.ts +13 -0
  157. package/dist/components/ui/popover/popover-context.svelte.js +13 -0
  158. package/dist/components/ui/popover/popover-portal.svelte +3 -3
  159. package/dist/components/ui/popover/popover-portal.svelte.d.ts +5 -1
  160. package/dist/components/ui/popover/popover-trigger.svelte +62 -10
  161. package/dist/components/ui/popover/popover-trigger.svelte.d.ts +12 -2
  162. package/dist/components/ui/popover/popover.svelte +50 -3
  163. package/dist/components/ui/popover/popover.svelte.d.ts +9 -1
  164. package/dist/components/ui/separator/separator.svelte +17 -11
  165. package/dist/components/ui/separator/separator.svelte.d.ts +7 -2
  166. package/dist/components/ui/sidebar/context.svelte.d.ts +15 -23
  167. package/dist/components/ui/sidebar/context.svelte.js +33 -21
  168. package/dist/components/ui/sidebar/sidebar-content.svelte +1 -1
  169. package/dist/components/ui/sidebar/sidebar-footer.svelte +1 -1
  170. package/dist/components/ui/sidebar/sidebar-group-content.svelte +1 -1
  171. package/dist/components/ui/sidebar/sidebar-menu-action.svelte +3 -2
  172. package/dist/components/ui/sidebar/sidebar-menu-button.svelte +35 -66
  173. package/dist/components/ui/sidebar/sidebar-menu-button.svelte.d.ts +9 -38
  174. package/dist/components/ui/sidebar/sidebar-provider.svelte +28 -18
  175. package/dist/components/ui/sidebar/sidebar-provider.svelte.d.ts +3 -0
  176. package/dist/components/ui/sidebar/sidebar-rail.svelte +1 -1
  177. package/dist/components/ui/sidebar/sidebar-separator.svelte +11 -8
  178. package/dist/components/ui/sidebar/sidebar-separator.svelte.d.ts +3 -11
  179. package/dist/components/ui/sidebar/sidebar-trigger.svelte +2 -2
  180. package/dist/components/ui/sidebar/sidebar.svelte +34 -23
  181. package/dist/components/ui/sidebar/sidebar.svelte.d.ts +1 -1
  182. package/dist/components/ui/skeleton/skeleton.svelte +7 -4
  183. package/dist/components/ui/skeleton/skeleton.svelte.d.ts +1 -1
  184. package/dist/components/ui/star-rating/star-rating-star.svelte +57 -31
  185. package/dist/components/ui/star-rating/star-rating-star.svelte.d.ts +1 -1
  186. package/dist/components/ui/star-rating/star-rating.svelte +143 -13
  187. package/dist/components/ui/star-rating/star-rating.svelte.d.ts +31 -2
  188. package/dist/components/ui/star-rating/types.d.ts +6 -1
  189. package/dist/components/ui/underline-tabs/underline-tabs-content.svelte +26 -9
  190. package/dist/components/ui/underline-tabs/underline-tabs-content.svelte.d.ts +9 -2
  191. package/dist/components/ui/underline-tabs/underline-tabs-list.svelte +15 -8
  192. package/dist/components/ui/underline-tabs/underline-tabs-list.svelte.d.ts +8 -2
  193. package/dist/components/ui/underline-tabs/underline-tabs-trigger.svelte +65 -34
  194. package/dist/components/ui/underline-tabs/underline-tabs-trigger.svelte.d.ts +14 -2
  195. package/dist/components/ui/underline-tabs/underline-tabs.svelte +49 -20
  196. package/dist/components/ui/underline-tabs/underline-tabs.svelte.d.ts +10 -2
  197. package/dist/components/ui/underline-tabs/underline-tabs.svelte.js +6 -59
  198. package/dist/docs/ApiTable.svelte +42 -0
  199. package/dist/docs/ApiTable.svelte.d.ts +7 -0
  200. package/dist/docs/CodeBlock.svelte +26 -0
  201. package/dist/docs/CodeBlock.svelte.d.ts +7 -0
  202. package/dist/docs/DocsHeader.svelte +25 -0
  203. package/dist/docs/DocsHeader.svelte.d.ts +6 -0
  204. package/dist/docs/DocsSidebar.svelte +99 -0
  205. package/dist/docs/DocsSidebar.svelte.d.ts +3 -0
  206. package/dist/docs/components.d.ts +27 -0
  207. package/dist/docs/components.js +897 -0
  208. package/dist/globals.css +466 -1590
  209. package/dist/styles/globals.css +136 -2
  210. package/dist/theme.svelte.d.ts +7 -0
  211. package/dist/theme.svelte.js +33 -0
  212. package/dist/utils.d.ts +4 -4
  213. package/dist/utils.js +18 -3
  214. package/package.json +4 -34
  215. package/dist/components/ui/chart/chart-container.svelte +0 -80
  216. package/dist/components/ui/chart/chart-container.svelte.d.ts +0 -9
  217. package/dist/components/ui/chart/chart-style.svelte +0 -37
  218. package/dist/components/ui/chart/chart-style.svelte.d.ts +0 -8
  219. package/dist/components/ui/chart/chart-tooltip.svelte +0 -184
  220. package/dist/components/ui/chart/chart-tooltip.svelte.d.ts +0 -27
  221. package/dist/components/ui/chart/chart-utils.d.ts +0 -36
  222. package/dist/components/ui/chart/chart-utils.js +0 -38
  223. package/dist/components/ui/chart/index.d.ts +0 -4
  224. package/dist/components/ui/chart/index.js +0 -4
  225. package/dist/components/ui/command/command-dialog.svelte +0 -42
  226. package/dist/components/ui/command/command-dialog.svelte.d.ts +0 -14
  227. package/dist/components/ui/command/command-empty.svelte +0 -17
  228. package/dist/components/ui/command/command-empty.svelte.d.ts +0 -4
  229. package/dist/components/ui/command/command-group.svelte +0 -33
  230. package/dist/components/ui/command/command-group.svelte.d.ts +0 -7
  231. package/dist/components/ui/command/command-input.svelte +0 -33
  232. package/dist/components/ui/command/command-input.svelte.d.ts +0 -4
  233. package/dist/components/ui/command/command-item.svelte +0 -27
  234. package/dist/components/ui/command/command-item.svelte.d.ts +0 -4
  235. package/dist/components/ui/command/command-link-item.svelte +0 -20
  236. package/dist/components/ui/command/command-link-item.svelte.d.ts +0 -4
  237. package/dist/components/ui/command/command-list.svelte +0 -20
  238. package/dist/components/ui/command/command-list.svelte.d.ts +0 -4
  239. package/dist/components/ui/command/command-loading.svelte +0 -7
  240. package/dist/components/ui/command/command-loading.svelte.d.ts +0 -4
  241. package/dist/components/ui/command/command-separator.svelte +0 -17
  242. package/dist/components/ui/command/command-separator.svelte.d.ts +0 -4
  243. package/dist/components/ui/command/command-shortcut.svelte +0 -23
  244. package/dist/components/ui/command/command-shortcut.svelte.d.ts +0 -5
  245. package/dist/components/ui/command/command.svelte +0 -28
  246. package/dist/components/ui/command/command.svelte.d.ts +0 -8
  247. package/dist/components/ui/command/index.d.ts +0 -12
  248. package/dist/components/ui/command/index.js +0 -14
  249. package/dist/components/ui/dialog/dialog-close.svelte +0 -11
  250. package/dist/components/ui/dialog/dialog-close.svelte.d.ts +0 -4
  251. package/dist/components/ui/dialog/dialog-content.svelte +0 -48
  252. package/dist/components/ui/dialog/dialog-content.svelte.d.ts +0 -13
  253. package/dist/components/ui/dialog/dialog-description.svelte +0 -20
  254. package/dist/components/ui/dialog/dialog-description.svelte.d.ts +0 -4
  255. package/dist/components/ui/dialog/dialog-footer.svelte +0 -32
  256. package/dist/components/ui/dialog/dialog-footer.svelte.d.ts +0 -8
  257. package/dist/components/ui/dialog/dialog-header.svelte +0 -20
  258. package/dist/components/ui/dialog/dialog-header.svelte.d.ts +0 -5
  259. package/dist/components/ui/dialog/dialog-overlay.svelte +0 -20
  260. package/dist/components/ui/dialog/dialog-overlay.svelte.d.ts +0 -4
  261. package/dist/components/ui/dialog/dialog-portal.svelte +0 -7
  262. package/dist/components/ui/dialog/dialog-portal.svelte.d.ts +0 -3
  263. package/dist/components/ui/dialog/dialog-title.svelte +0 -17
  264. package/dist/components/ui/dialog/dialog-title.svelte.d.ts +0 -4
  265. package/dist/components/ui/dialog/dialog-trigger.svelte +0 -11
  266. package/dist/components/ui/dialog/dialog-trigger.svelte.d.ts +0 -4
  267. package/dist/components/ui/dialog/dialog.svelte +0 -7
  268. package/dist/components/ui/dialog/dialog.svelte.d.ts +0 -3
  269. package/dist/components/ui/dialog/index.d.ts +0 -11
  270. package/dist/components/ui/dialog/index.js +0 -13
  271. package/dist/components/ui/input-group/index.d.ts +0 -7
  272. package/dist/components/ui/input-group/index.js +0 -9
  273. package/dist/components/ui/input-group/input-group-addon.svelte +0 -59
  274. package/dist/components/ui/input-group/input-group-addon.svelte.d.ts +0 -38
  275. package/dist/components/ui/input-group/input-group-button.svelte +0 -49
  276. package/dist/components/ui/input-group/input-group-button.svelte.d.ts +0 -32
  277. package/dist/components/ui/input-group/input-group-input.svelte +0 -23
  278. package/dist/components/ui/input-group/input-group-input.svelte.d.ts +0 -11
  279. package/dist/components/ui/input-group/input-group-text.svelte +0 -22
  280. package/dist/components/ui/input-group/input-group-text.svelte.d.ts +0 -5
  281. package/dist/components/ui/input-group/input-group-textarea.svelte +0 -23
  282. package/dist/components/ui/input-group/input-group-textarea.svelte.d.ts +0 -3
  283. package/dist/components/ui/input-group/input-group.svelte +0 -24
  284. package/dist/components/ui/input-group/input-group.svelte.d.ts +0 -5
  285. package/dist/components/ui/navigation-menu/index.d.ts +0 -9
  286. package/dist/components/ui/navigation-menu/index.js +0 -11
  287. package/dist/components/ui/navigation-menu/navigation-menu-content.svelte +0 -20
  288. package/dist/components/ui/navigation-menu/navigation-menu-content.svelte.d.ts +0 -4
  289. package/dist/components/ui/navigation-menu/navigation-menu-indicator.svelte +0 -22
  290. package/dist/components/ui/navigation-menu/navigation-menu-indicator.svelte.d.ts +0 -4
  291. package/dist/components/ui/navigation-menu/navigation-menu-item.svelte +0 -17
  292. package/dist/components/ui/navigation-menu/navigation-menu-item.svelte.d.ts +0 -4
  293. package/dist/components/ui/navigation-menu/navigation-menu-link.svelte +0 -17
  294. package/dist/components/ui/navigation-menu/navigation-menu-link.svelte.d.ts +0 -4
  295. package/dist/components/ui/navigation-menu/navigation-menu-list.svelte +0 -20
  296. package/dist/components/ui/navigation-menu/navigation-menu-list.svelte.d.ts +0 -4
  297. package/dist/components/ui/navigation-menu/navigation-menu-trigger.svelte +0 -30
  298. package/dist/components/ui/navigation-menu/navigation-menu-trigger.svelte.d.ts +0 -5
  299. package/dist/components/ui/navigation-menu/navigation-menu-viewport.svelte +0 -22
  300. package/dist/components/ui/navigation-menu/navigation-menu-viewport.svelte.d.ts +0 -4
  301. package/dist/components/ui/navigation-menu/navigation-menu.svelte +0 -31
  302. package/dist/components/ui/navigation-menu/navigation-menu.svelte.d.ts +0 -7
  303. package/dist/components/ui/scroll-area/index.d.ts +0 -3
  304. package/dist/components/ui/scroll-area/index.js +0 -5
  305. package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte +0 -30
  306. package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte.d.ts +0 -4
  307. package/dist/components/ui/scroll-area/scroll-area.svelte +0 -43
  308. package/dist/components/ui/scroll-area/scroll-area.svelte.d.ts +0 -11
  309. package/dist/components/ui/select/index.d.ts +0 -12
  310. package/dist/components/ui/select/index.js +0 -14
  311. package/dist/components/ui/select/select-content.svelte +0 -45
  312. package/dist/components/ui/select/select-content.svelte.d.ts +0 -11
  313. package/dist/components/ui/select/select-group-heading.svelte +0 -21
  314. package/dist/components/ui/select/select-group-heading.svelte.d.ts +0 -10
  315. package/dist/components/ui/select/select-group.svelte +0 -17
  316. package/dist/components/ui/select/select-group.svelte.d.ts +0 -4
  317. package/dist/components/ui/select/select-item.svelte +0 -41
  318. package/dist/components/ui/select/select-item.svelte.d.ts +0 -4
  319. package/dist/components/ui/select/select-label.svelte +0 -20
  320. package/dist/components/ui/select/select-label.svelte.d.ts +0 -6
  321. package/dist/components/ui/select/select-portal.svelte +0 -7
  322. package/dist/components/ui/select/select-portal.svelte.d.ts +0 -3
  323. package/dist/components/ui/select/select-scroll-down-button.svelte +0 -21
  324. package/dist/components/ui/select/select-scroll-down-button.svelte.d.ts +0 -4
  325. package/dist/components/ui/select/select-scroll-up-button.svelte +0 -21
  326. package/dist/components/ui/select/select-scroll-up-button.svelte.d.ts +0 -4
  327. package/dist/components/ui/select/select-separator.svelte +0 -18
  328. package/dist/components/ui/select/select-separator.svelte.d.ts +0 -4
  329. package/dist/components/ui/select/select-trigger.svelte +0 -30
  330. package/dist/components/ui/select/select-trigger.svelte.d.ts +0 -8
  331. package/dist/components/ui/select/select.svelte +0 -11
  332. package/dist/components/ui/select/select.svelte.d.ts +0 -3
  333. package/dist/components/ui/sheet/index.d.ts +0 -11
  334. package/dist/components/ui/sheet/index.js +0 -13
  335. package/dist/components/ui/sheet/sheet-close.svelte +0 -7
  336. package/dist/components/ui/sheet/sheet-close.svelte.d.ts +0 -4
  337. package/dist/components/ui/sheet/sheet-content.svelte +0 -56
  338. package/dist/components/ui/sheet/sheet-content.svelte.d.ts +0 -15
  339. package/dist/components/ui/sheet/sheet-description.svelte +0 -17
  340. package/dist/components/ui/sheet/sheet-description.svelte.d.ts +0 -4
  341. package/dist/components/ui/sheet/sheet-footer.svelte +0 -20
  342. package/dist/components/ui/sheet/sheet-footer.svelte.d.ts +0 -5
  343. package/dist/components/ui/sheet/sheet-header.svelte +0 -20
  344. package/dist/components/ui/sheet/sheet-header.svelte.d.ts +0 -5
  345. package/dist/components/ui/sheet/sheet-overlay.svelte +0 -17
  346. package/dist/components/ui/sheet/sheet-overlay.svelte.d.ts +0 -4
  347. package/dist/components/ui/sheet/sheet-portal.svelte +0 -7
  348. package/dist/components/ui/sheet/sheet-portal.svelte.d.ts +0 -3
  349. package/dist/components/ui/sheet/sheet-title.svelte +0 -17
  350. package/dist/components/ui/sheet/sheet-title.svelte.d.ts +0 -4
  351. package/dist/components/ui/sheet/sheet-trigger.svelte +0 -7
  352. package/dist/components/ui/sheet/sheet-trigger.svelte.d.ts +0 -4
  353. package/dist/components/ui/sheet/sheet.svelte +0 -7
  354. package/dist/components/ui/sheet/sheet.svelte.d.ts +0 -3
  355. package/dist/components/ui/spinner/index.d.ts +0 -1
  356. package/dist/components/ui/spinner/index.js +0 -1
  357. package/dist/components/ui/spinner/spinner.svelte +0 -26
  358. package/dist/components/ui/spinner/spinner.svelte.d.ts +0 -4
  359. package/dist/components/ui/tabs/index.d.ts +0 -5
  360. package/dist/components/ui/tabs/index.js +0 -7
  361. package/dist/components/ui/tabs/tabs-content.svelte +0 -17
  362. package/dist/components/ui/tabs/tabs-content.svelte.d.ts +0 -4
  363. package/dist/components/ui/tabs/tabs-list.svelte +0 -40
  364. package/dist/components/ui/tabs/tabs-list.svelte.d.ts +0 -25
  365. package/dist/components/ui/tabs/tabs-trigger.svelte +0 -23
  366. package/dist/components/ui/tabs/tabs-trigger.svelte.d.ts +0 -4
  367. package/dist/components/ui/tabs/tabs.svelte +0 -19
  368. package/dist/components/ui/tabs/tabs.svelte.d.ts +0 -4
  369. package/dist/components/ui/textarea/index.d.ts +0 -2
  370. package/dist/components/ui/textarea/index.js +0 -4
  371. package/dist/components/ui/textarea/textarea.svelte +0 -23
  372. package/dist/components/ui/textarea/textarea.svelte.d.ts +0 -5
  373. package/dist/components/ui/tooltip/index.d.ts +0 -6
  374. package/dist/components/ui/tooltip/index.js +0 -8
  375. package/dist/components/ui/tooltip/tooltip-content.svelte +0 -52
  376. package/dist/components/ui/tooltip/tooltip-content.svelte.d.ts +0 -11
  377. package/dist/components/ui/tooltip/tooltip-portal.svelte +0 -7
  378. package/dist/components/ui/tooltip/tooltip-portal.svelte.d.ts +0 -4
  379. package/dist/components/ui/tooltip/tooltip-provider.svelte +0 -7
  380. package/dist/components/ui/tooltip/tooltip-provider.svelte.d.ts +0 -4
  381. package/dist/components/ui/tooltip/tooltip-trigger.svelte +0 -7
  382. package/dist/components/ui/tooltip/tooltip-trigger.svelte.d.ts +0 -25
  383. package/dist/components/ui/tooltip/tooltip.svelte +0 -7
  384. package/dist/components/ui/tooltip/tooltip.svelte.d.ts +0 -25
  385. package/dist/vitest-examples/Welcome.svelte +0 -8
  386. package/dist/vitest-examples/Welcome.svelte.d.ts +0 -13
  387. package/dist/vitest-examples/Welcome.svelte.spec.d.ts +0 -1
  388. package/dist/vitest-examples/Welcome.svelte.spec.js +0 -11
  389. package/dist/vitest-examples/greet.d.ts +0 -1
  390. package/dist/vitest-examples/greet.js +0 -3
  391. package/dist/vitest-examples/greet.spec.d.ts +0 -1
  392. package/dist/vitest-examples/greet.spec.js +0 -7
@@ -0,0 +1,897 @@
1
+ export const categories = [
2
+ "Navigation",
3
+ "Hero",
4
+ "Banners",
5
+ "Cards",
6
+ "Carousels",
7
+ "Item Grid",
8
+ "Footer",
9
+ "Admin Panel",
10
+ "Login / Security",
11
+ "Full Pages",
12
+ ];
13
+ const navButtonExample = `import { Menu } from "negodesign"
14
+
15
+ <Menu
16
+ isBorder
17
+ isLightSwitch
18
+ isLanguageSwitcher
19
+ logo={{ label: "Negoturismo" }}
20
+ navMenuButton={{
21
+ textButtonLogin: "Sign in",
22
+ textButtonRegister: "Register",
23
+ onclickButtonLogin: () => {},
24
+ onclickButtonRegister: () => {},
25
+ buttonClass: "bg-primary text-white",
26
+ }}
27
+ navMenu={{
28
+ links: [
29
+ { label: "Home", url: "/", icon: Home01Icon },
30
+ { label: "Accommodation", url: "/hospedagem", icon: Hotel01Icon },
31
+ ],
32
+ }}
33
+ />`;
34
+ export const components = [
35
+ {
36
+ slug: "menu",
37
+ name: "Menu",
38
+ category: "Navigation",
39
+ description: "Responsive navigation bar that automatically switches between the Simple (links) and Complex (mega menu) variants based on the device.",
40
+ path: "src/lib/components/core/nav/ui/Menu.svelte",
41
+ importPath: "Menu",
42
+ examples: [{ title: "Navigation Menu", code: navButtonExample, href: "/menu" }],
43
+ props: [
44
+ { name: "logo", type: "NavMenuLogoProps", description: "Logo configuration (img, url, label, className, onclick)" },
45
+ { name: "navMenu", type: "MenuVarientProps", description: "Required. Navigation content (SimpleMenuProps or ComplexMenuProps)", required: true },
46
+ { name: "isBorder", type: "boolean", description: "Adds a bottom border to the bar", default: "false" },
47
+ { name: "navMenuButton", type: "NavMenuButtonProps", description: "Action buttons: textButtonLogin, textButtonRegister, onclickButtonLogin, onclickButtonRegister, buttonClass" },
48
+ { name: "isLightSwitch", type: "boolean", description: "Shows the light/dark theme toggle", default: "false" },
49
+ { name: "isLanguageSwitcher", type: "boolean", description: "Shows the language selector", default: "false" },
50
+ ],
51
+ },
52
+ {
53
+ slug: "search-input",
54
+ name: "SearchInput",
55
+ category: "Navigation",
56
+ description: "Search field with two visual variants: 1 (full border) and 2 (underline only).",
57
+ path: "src/lib/components/core/search/SearchInput.svelte",
58
+ importPath: "SearchInput",
59
+ examples: [
60
+ {
61
+ title: "Search Field",
62
+ code: `import { SearchInput } from "negodesign"
63
+
64
+ <SearchInput
65
+ variant={1}
66
+ placeholder="Search..."
67
+ onSubmit={(q) => console.log(q)}
68
+ />`,
69
+ },
70
+ ],
71
+ props: [
72
+ { name: "variant", type: "1 | 2", description: "Visual variant", default: "1" },
73
+ { name: "onSubmit", type: "(q: string) => void", description: "Called when the search is submitted" },
74
+ { name: "placeholder", type: "string", description: "Input placeholder text", default: "Search" },
75
+ { name: "buttonClass", type: "string", description: "Button CSS class" },
76
+ { name: "inputClass", type: "string", description: "Input CSS class" },
77
+ { name: "iconClass", type: "string", description: "Icon CSS class" },
78
+ ],
79
+ },
80
+ {
81
+ slug: "simple-hero",
82
+ name: "SimpleHero",
83
+ category: "Hero",
84
+ description: "Static hero in a split layout: left column with content and right column with a circular image.",
85
+ path: "src/lib/components/core/hero/SimpleHero.svelte",
86
+ importPath: "SimpleHero",
87
+ examples: [
88
+ {
89
+ title: "Simple Hero",
90
+ code: `import { SimpleHero } from "negodesign"
91
+
92
+ <SimpleHero
93
+ title="Find your ideal stay"
94
+ subTitle="Welcome"
95
+ description="Verified hotels, guest houses and apartments."
96
+ image="/images/hero.jpg"
97
+ buttons={[{ label: "Explore", variant: "default" }]}
98
+ />`,
99
+ href: "/hero",
100
+ },
101
+ ],
102
+ props: [
103
+ { name: "title", type: "string", description: "Main hero title", required: true },
104
+ { name: "subTitle", type: "string", description: "Subtitle below the title" },
105
+ { name: "description", type: "string", description: "Supporting text" },
106
+ { name: "image", type: "string", description: "URL of the image displayed on the right" },
107
+ { name: "buttons", type: "HeroButtonProps[]", description: "Action buttons: { label, href, variant, className, onClick }" },
108
+ { name: "titleClass", type: "string", description: "Title CSS class" },
109
+ { name: "subTitleClass", type: "string", description: "Subtitle CSS class" },
110
+ { name: "descriptionClass", type: "string", description: "Description CSS class" },
111
+ { name: "imageClass", type: "string", description: "Image CSS class" },
112
+ ],
113
+ },
114
+ {
115
+ slug: "carousel-hero",
116
+ name: "CarouselHero",
117
+ category: "Hero",
118
+ description: "Fullscreen background hero with a crossfade slide carousel, dark overlay, and overlaid navigation menu.",
119
+ path: "src/lib/components/core/carousel/hero/ui/CarouselHero.svelte",
120
+ importPath: "CarouselHero",
121
+ examples: [
122
+ {
123
+ title: "Carousel Hero",
124
+ code: `import { CarouselHero } from "negodesign"
125
+
126
+ <CarouselHero
127
+ titleClass="md:text-2xl lg:text-4xl"
128
+ descriptionClass="text-xs md:text-lg"
129
+ simpleMenu={{
130
+ logo: { url: "/", label: "Negoturismo", className: "text-white" },
131
+ links: [{ label: "Accommodation", url: "#", icon: Hotel01Icon }],
132
+ isLanguageSwitcher: false,
133
+ isLightSwitch: false,
134
+ }}
135
+ items={[
136
+ {
137
+ title: "Find your ideal stay",
138
+ description: "Verified hotels, guest houses and apartments.",
139
+ image: "https://images.unsplash.com/photo-1566073771259",
140
+ },
141
+ ]}
142
+ />`,
143
+ href: "/hero/carousel",
144
+ },
145
+ ],
146
+ props: [
147
+ { name: "items", type: "CarouselHeroItem[]", description: "Required. Slides: { title, image, description }", required: true },
148
+ { name: "simpleMenu", type: "SimpleMenuProps", description: "Simple overlaid menu configuration" },
149
+ { name: "complexMenu", type: "ComplexMenuProps", description: "Complex (mega menu) configuration" },
150
+ { name: "menusProps", type: "MenuProps", description: "Menu wrapper props (logo, buttons, light/language)" },
151
+ { name: "titleClass", type: "string", description: "CSS class for each slide title" },
152
+ { name: "descriptionClass", type: "string", description: "CSS class for each slide description" },
153
+ { name: "className", type: "string", description: "CSS class for the <header> container" },
154
+ { name: "sectionClass", type: "string", description: "CSS class for the <section> content" },
155
+ { name: "children", type: "Snippet", description: "Slot with extra content below title/description" },
156
+ { name: "intervalMs", type: "number", description: "Autoplay interval in ms", default: "5000" },
157
+ { name: "transitionMs", type: "number", description: "Crossfade duration in ms", default: "1200" },
158
+ { name: "indicatorShow", type: "boolean", description: "Shows clickable indicators when there is more than one slide", default: "true" },
159
+ ],
160
+ },
161
+ {
162
+ slug: "cta-card-image-banner",
163
+ name: "CtaCardImageBanner",
164
+ category: "Banners",
165
+ description: "CTA banner with a featured image on a gradient background and up to two buttons.",
166
+ path: "src/lib/components/core/banner/CtaCardImageBanner.svelte",
167
+ importPath: "CtaCardImageBanner",
168
+ examples: [
169
+ {
170
+ title: "CTA Image Banner",
171
+ code: `import { CtaCardImageBanner } from "negodesign"
172
+
173
+ <CtaCardImageBanner
174
+ title="Let's get in touch"
175
+ description="Talk to us and discover the best offers."
176
+ primaryText="Contact"
177
+ primaryHref="#"
178
+ imageSrc="/images/banner.jpg"
179
+ />`,
180
+ href: "/banner",
181
+ },
182
+ ],
183
+ props: [
184
+ { name: "title", type: "string", description: "Required. Banner title", required: true },
185
+ { name: "primaryText", type: "string", description: "Required. Primary CTA text", required: true },
186
+ { name: "description", type: "string", description: "Supporting text" },
187
+ { name: "primaryHref", type: "string", description: "Primary CTA href (renders an <a>)" },
188
+ { name: "onClickPrimary", type: "() => void", description: "Called when the primary CTA is clicked" },
189
+ { name: "secondaryText", type: "string", description: "Secondary CTA text" },
190
+ { name: "secondaryHref", type: "string", description: "Secondary CTA href" },
191
+ { name: "onClickSecondary", type: "() => void", description: "Called when the secondary CTA is clicked" },
192
+ { name: "imageSrc", type: "string", description: "Featured image URL" },
193
+ { name: "imageAlt", type: "string", description: "Image alternative text" },
194
+ { name: "imageWidth", type: "number", description: "Image width" },
195
+ { name: "imageHeight", type: "number", description: "Image height" },
196
+ { name: "class", type: "string", description: "Extra container CSS class" },
197
+ ],
198
+ },
199
+ {
200
+ slug: "notification-banner",
201
+ name: "NotificationBanner",
202
+ category: "Banners",
203
+ description: "Thin dismissible notification strip with optional strong text, description, CTA, and close button.",
204
+ path: "src/lib/components/core/banner/NotificationBanner.svelte",
205
+ importPath: "NotificationBanner",
206
+ examples: [
207
+ {
208
+ title: "Notification Banner",
209
+ code: `import { NotificationBanner } from "negodesign"
210
+
211
+ <NotificationBanner
212
+ strongText="New"
213
+ description="New offers available!"
214
+ ctaText="View offers"
215
+ onDismiss={() => console.log("dismissed")}
216
+ />`,
217
+ },
218
+ ],
219
+ props: [
220
+ { name: "description", type: "string", description: "Required. Main text", required: true },
221
+ { name: "strongText", type: "string", description: "Strong text before the separator" },
222
+ { name: "ctaText", type: "string", description: "CTA button label" },
223
+ { name: "ctaHref", type: "string", description: "CTA href (renders an <a>)" },
224
+ { name: "onCtaClick", type: "() => void", description: "Called when the CTA is clicked" },
225
+ { name: "onDismiss", type: "() => void", description: "Called when the notification is closed" },
226
+ { name: "bgClass", type: "string", description: "Background class", default: "bg-gray-800/50" },
227
+ { name: "textClass", type: "string", description: "Text class", default: "text-gray-100" },
228
+ { name: "ctaClass", type: "string", description: "Extra CTA button class" },
229
+ { name: "class", type: "string", description: "Extra container class" },
230
+ ],
231
+ },
232
+ {
233
+ slug: "ad-card-banner",
234
+ name: "AdCardBanner",
235
+ category: "Banners",
236
+ description: "Ad card with a colored side strip and a two-part title with a CTA button.",
237
+ path: "src/lib/components/core/banner/AdCardBanner.svelte",
238
+ importPath: "AdCardBanner",
239
+ examples: [
240
+ {
241
+ title: "Ad Banner",
242
+ code: `import { AdCardBanner } from "negodesign"
243
+
244
+ <AdCardBanner
245
+ tagText="This ad could be yours."
246
+ titleHighlight="This ad"
247
+ titleMain="could be yours."
248
+ buttonText="Learn more"
249
+ onClickButton={() => console.log("clicked")}
250
+ />`,
251
+ href: "/banner/cad-add",
252
+ },
253
+ ],
254
+ props: [
255
+ { name: "tagText", type: "string", description: "Required. Side strip text", required: true },
256
+ { name: "titleHighlight", type: "string", description: "Required. First part of the title (highlight)", required: true },
257
+ { name: "titleMain", type: "string", description: "Required. Second part of the title", required: true },
258
+ { name: "buttonText", type: "string", description: "CTA button text", default: "Learn more" },
259
+ { name: "onClickButton", type: "() => void", description: "Called when the button is clicked" },
260
+ { name: "href", type: "string", description: "If provided, the whole card navigates" },
261
+ { name: "class", type: "string", description: "Extra container CSS class" },
262
+ { name: "buttonClass", type: "string", description: "Button CSS class" },
263
+ ],
264
+ },
265
+ {
266
+ slug: "cta-card-banner",
267
+ name: "CtaCardBanner",
268
+ category: "Banners",
269
+ description: "'Get in touch' style CTA banner with decorative rings and up to two pill buttons.",
270
+ path: "src/lib/components/core/banner/CtaCardBanner.svelte",
271
+ importPath: "CtaCardBanner",
272
+ examples: [
273
+ {
274
+ title: "CTA Banner",
275
+ code: `import { CtaCardBanner } from "negodesign"
276
+
277
+ <CtaCardBanner
278
+ title="Let's get in touch"
279
+ description="We have the ideal solution for you."
280
+ primaryText="Contact"
281
+ secondaryText="Learn more"
282
+ />`,
283
+ href: "/banner/card-contact-cta",
284
+ },
285
+ ],
286
+ props: [
287
+ { name: "title", type: "string", description: "Required. Banner title", required: true },
288
+ { name: "primaryText", type: "string", description: "Required. Primary CTA label", required: true },
289
+ { name: "description", type: "string", description: "Supporting text" },
290
+ { name: "secondaryText", type: "string", description: "Secondary CTA label" },
291
+ { name: "onClickPrimary", type: "() => void", description: "Called when the primary CTA is clicked" },
292
+ { name: "onClickSecondary", type: "() => void", description: "Called when the secondary CTA is clicked" },
293
+ { name: "primaryHref", type: "string", description: "Primary CTA href" },
294
+ { name: "secondaryHref", type: "string", description: "Secondary CTA href" },
295
+ { name: "class", type: "string", description: "Extra CSS class" },
296
+ { name: "rings", type: "Array<{ size: number; color: string }>", description: "Custom decorative rings" },
297
+ ],
298
+ },
299
+ {
300
+ slug: "card-media",
301
+ name: "CardMedia",
302
+ category: "Cards",
303
+ description: "Wrapper for media cards with variants 1 (left-aligned) and 2 (centered). Shows logo, title, rating, tags, and buttons.",
304
+ path: "src/lib/components/core/card/media/CardMedia.svelte",
305
+ importPath: "CardMedia",
306
+ examples: [
307
+ {
308
+ title: "Media Card",
309
+ code: `import { CardMedia } from "negodesign"
310
+
311
+ <CardMedia
312
+ {...item}
313
+ variant={2}
314
+ isImageButtonMaximized
315
+ isVideoButtonMaximized
316
+ onFavoriteClick={(id) => console.log(id)}
317
+ onButtonProfile={(id) => console.log(id)}
318
+ onButtonDetails={(id) => console.log(id)}
319
+ />`,
320
+ href: "/card/media",
321
+ },
322
+ ],
323
+ props: [
324
+ { name: "variant", type: "1 | 2", description: "Selects CardMedia01 vs CardMedia02", default: "1" },
325
+ { name: "id", type: "string | number", description: "Required. Unique identifier", required: true },
326
+ { name: "logo", type: "string", description: "Organization logo URL" },
327
+ { name: "title", type: "string", description: "Card title" },
328
+ { name: "content", type: "string", description: "Description/content" },
329
+ { name: "startMax", type: "number", description: "Maximum rating value (e.g. 5)" },
330
+ { name: "startNumber", type: "number", description: "Current rating value" },
331
+ { name: "imageUrl", type: "string", description: "Cover image URL" },
332
+ { name: "videoUrl", type: "string", description: "Video URL (replaces the image)" },
333
+ { name: "tags", type: "CardTagsProps[]", description: "Tag list: { text, icon? }" },
334
+ { name: "isFavorite", type: "boolean", description: "Whether marked as favorite" },
335
+ { name: "isLoading", type: "boolean", description: "Loading state (skeleton)" },
336
+ { name: "isImageButtonMaximized", type: "boolean", description: "Shows maximize button on the image" },
337
+ { name: "isVideoButtonMaximized", type: "boolean", description: "Shows maximize button on the video" },
338
+ { name: "buttonProfileClass", type: "string", description: "Profile button CSS class" },
339
+ { name: "buttonDetailsClass", type: "string", description: "Details button CSS class" },
340
+ { name: "onFavoriteClick", type: "(id) => void", description: "Called when the favorite is clicked" },
341
+ { name: "onButtonProfile", type: "(id) => void", description: "Called when the profile button is clicked" },
342
+ { name: "onButtonDetails", type: "(id) => void", description: "Called when the details button is clicked" },
343
+ { name: "videoAction", type: "'START_REPRODUCTION' | 'HOVER_REPRODUCTION'", description: "Video playback behavior" },
344
+ ],
345
+ },
346
+ {
347
+ slug: "card-profile",
348
+ name: "CardProfile",
349
+ category: "Cards",
350
+ description: "Wrapper for organization/guide profile cards, with variants 1 and 2.",
351
+ path: "src/lib/components/core/card/profile/CardProfile.svelte",
352
+ importPath: "CardProfile",
353
+ examples: [
354
+ {
355
+ title: "Profile Card",
356
+ code: `import { CardProfile } from "negodesign"
357
+
358
+ <CardProfile
359
+ {...item}
360
+ variant={1}
361
+ onFavoriteClick={(id) => console.log(id)}
362
+ onWhatsappClick={(id) => console.log(id)}
363
+ />`,
364
+ href: "/card/profile",
365
+ },
366
+ ],
367
+ props: [
368
+ { name: "variant", type: "1 | 2", description: "Selects CardProfile01 vs CardProfile02", default: "1" },
369
+ { name: "id", type: "string | number", description: "Required. Unique identifier", required: true },
370
+ { name: "logo", type: "string", description: "Avatar/logo URL" },
371
+ { name: "title", type: "string", description: "Profile name/title" },
372
+ { name: "content", type: "string", description: "Profile description" },
373
+ { name: "startMax", type: "number", description: "Maximum rating value" },
374
+ { name: "startNumber", type: "number", description: "Current rating value" },
375
+ { name: "imageUrl", type: "string", description: "Profile photo URL" },
376
+ { name: "videoUrl", type: "string", description: "Profile video URL" },
377
+ { name: "tags", type: "CardTagsProps[]", description: "Profile tags" },
378
+ { name: "isFavorite", type: "boolean", description: "Whether marked as favorite" },
379
+ { name: "isLoading", type: "boolean", description: "Loading state" },
380
+ { name: "onFavoriteClick", type: "(id) => void", description: "Called when the favorite is clicked" },
381
+ { name: "onButtonProfile", type: "(id) => void", description: "Called when the profile button is clicked" },
382
+ { name: "onButtonDetails", type: "(id) => void", description: "Called when the details button is clicked" },
383
+ { name: "onEmailClick", type: "(id) => void", description: "Called when email is clicked" },
384
+ { name: "onWhatsappClick", type: "(id) => void", description: "Called when whatsapp is clicked" },
385
+ ],
386
+ },
387
+ {
388
+ slug: "carousel-badge",
389
+ name: "CarouselBadge",
390
+ category: "Carousels",
391
+ description: "Selectable row of badges/categories with navigation, active state, and skeletons.",
392
+ path: "src/lib/components/core/carousel/badge/ui/CarouselBadge.svelte",
393
+ importPath: "CarouselBadge",
394
+ examples: [
395
+ {
396
+ title: "Badge Carousel",
397
+ code: `import { CarouselBadge } from "negodesign"
398
+
399
+ <CarouselBadge
400
+ orientation="horizontal"
401
+ itemStyle="BORDER"
402
+ items={[
403
+ { label: "Hotels", value: "hotel", icon: Hotel01Icon },
404
+ { label: "Pensions", value: "pensao", icon: BedDoubleIcon },
405
+ ]}
406
+ onClick={(value) => console.log(value)}
407
+ />`,
408
+ href: "/carousel/badge",
409
+ },
410
+ ],
411
+ props: [
412
+ { name: "items", type: "ItemCarousel[]", description: "Required. Items: { value, label, image?, link?, icon?, isActive? }", required: true },
413
+ { name: "orientation", type: "'horizontal' | 'vertical'", description: "Layout direction", default: "horizontal" },
414
+ { name: "imageClass", type: "string", description: "Image CSS class" },
415
+ { name: "iconClass", type: "string", description: "Icon CSS class" },
416
+ { name: "labelClass", type: "string", description: "Label CSS class" },
417
+ { name: "activeClass", type: "string", description: "Active state class" },
418
+ { name: "itemStyle", type: "'BORDER' | 'INLINE' | 'DEFAULT'", description: "Visual item style" },
419
+ { name: "isBorderInline", type: "boolean", description: "Shows an underline bar on the selected item" },
420
+ { name: "showButton", type: "boolean", description: "Shows navigation buttons" },
421
+ { name: "isLoading", type: "boolean", description: "Shows skeletons while loading" },
422
+ { name: "menuKey", type: "string", description: "Initially selected value" },
423
+ { name: "itemClass", type: "string", description: "CSS class for each item" },
424
+ { name: "btnNavClass", type: "string", description: "Navigation buttons CSS class" },
425
+ { name: "onClick", type: "(value) => void", description: "Called when a badge is selected" },
426
+ ],
427
+ },
428
+ {
429
+ slug: "carousel-highlights",
430
+ name: "CarouselHighlights",
431
+ category: "Carousels",
432
+ description: "Horizontal carousel of highlight cards with a header, autoplay, and empty/loading states.",
433
+ path: "src/lib/components/core/carousel/highlights/ui/CarouselHighlights.svelte",
434
+ importPath: "CarouselHighlights",
435
+ examples: [
436
+ {
437
+ title: "Highlights Carousel",
438
+ code: `import { CarouselHighlights } from "negodesign"
439
+
440
+ <CarouselHighlights
441
+ varient={2}
442
+ headerProps={{
443
+ title: "Highlights",
444
+ description: "The best organizations",
445
+ onButtonViewAll: () => {},
446
+ }}
447
+ items={highlights}
448
+ onClickBtn={(id) => console.log(id)}
449
+ onClickFavorite={(id) => console.log(id)}
450
+ />`,
451
+ href: "/carousel/highlights",
452
+ },
453
+ ],
454
+ props: [
455
+ { name: "items", type: "CardHighlightProps[]", description: "Required. Highlight card data", required: true },
456
+ { name: "varient", type: "1 | 2", description: "Card visual variant (note: prop spelled 'varient')" },
457
+ { name: "headerProps", type: "CarouselHeaderProps", description: "Header config (title, description, classes, onButtonViewAll)" },
458
+ { name: "slotProps", type: "CarouselSlotProps", description: "Slot config (buttons, position)" },
459
+ { name: "isLoading", type: "boolean", description: "Shows skeletons" },
460
+ { name: "isDescriptionIcon", type: "boolean", description: "Shows an icon before the description" },
461
+ { name: "isDescriptionLabel", type: "boolean", description: "Shows a label in the description" },
462
+ { name: "onClickBtn", type: "(id) => void", description: "Called on the card action button" },
463
+ { name: "onClickFavorite", type: "(id) => void", description: "Called on the favorite button" },
464
+ ],
465
+ },
466
+ {
467
+ slug: "carousel-promotion",
468
+ name: "CarouselPromotion",
469
+ category: "Carousels",
470
+ description: "Horizontal carousel of promotion cards with old/new prices and buy/shop/favorite buttons.",
471
+ path: "src/lib/components/core/carousel/promotion/ui/CarouselPromotion.svelte",
472
+ importPath: "CarouselPromotion",
473
+ examples: [
474
+ {
475
+ title: "Promotion Carousel",
476
+ code: `import { CarouselPromotion } from "negodesign"
477
+
478
+ <CarouselPromotion
479
+ items={promotions}
480
+ headerProps={{
481
+ title: "Promotions",
482
+ onButtonViewAll: () => {},
483
+ }}
484
+ onClickBuy={(id) => console.log(id)}
485
+ onClickShop={(id) => console.log(id)}
486
+ />`,
487
+ href: "/carousel/promotion",
488
+ },
489
+ ],
490
+ props: [
491
+ { name: "items", type: "CardPromotionProps[]", description: "Required. Promotion data", required: true },
492
+ { name: "headerProps", type: "CarouselHeaderProps", description: "Header config" },
493
+ { name: "slotProps", type: "CarouselSlotProps", description: "Slot config (button position)" },
494
+ { name: "isLoading", type: "boolean", description: "Shows skeletons" },
495
+ { name: "onClickBuy", type: "(id) => void", description: "Called on the buy button" },
496
+ { name: "onClickShop", type: "(id) => void", description: "Called on the cart button" },
497
+ { name: "onClickFavorite", type: "(id) => void", description: "Called on the favorite button" },
498
+ { name: "isDescriptionIcon", type: "boolean", description: "Shows an icon before the description" },
499
+ { name: "isDescriptionLabel", type: "boolean", description: "Shows a label in the description" },
500
+ ],
501
+ },
502
+ {
503
+ slug: "carousel-grid",
504
+ name: "CarouselGrid",
505
+ category: "Carousels",
506
+ description: "Family of responsive grids (Media, Product, Profile, Promotion) using CSS grid on desktop and a carousel on mobile.",
507
+ path: "src/lib/components/core/carousel/grid/",
508
+ importPath: "CarouselGridMedia | CarouselGridProduct | CarouselGridProfile | CarouselGridPromotion",
509
+ examples: [
510
+ {
511
+ title: "Media Grid",
512
+ code: `import { CarouselGridMedia } from "negodesign"
513
+
514
+ <CarouselGridMedia
515
+ items={media}
516
+ headerProps={{
517
+ title: "Explore",
518
+ onButtonViewAll: () => {},
519
+ }}
520
+ onFavoriteClick={(id) => console.log(id)}
521
+ />`,
522
+ href: "/carousel/grid/media",
523
+ },
524
+ ],
525
+ props: [
526
+ { name: "items", type: "CardProps[]", description: "Required. Card data", required: true },
527
+ { name: "headerProps", type: "CarouselHeaderProps", description: "Header config" },
528
+ { name: "slotProps", type: "CarouselSlotProps", description: "Slot config (button position on mobile)" },
529
+ { name: "gridClass", type: "string", description: "Desktop grid CSS classes" },
530
+ { name: "variant", type: "1 | 2", description: "Card visual variant" },
531
+ { name: "isLoading", type: "boolean", description: "Shows skeletons" },
532
+ { name: "onFavoriteClick", type: "(id) => void", description: "Called on the favorite" },
533
+ { name: "onButtonProfile", type: "(id) => void", description: "Called on the profile button (media/profile)" },
534
+ { name: "onButtonDetails", type: "(id) => void", description: "Called on the details button (media)" },
535
+ { name: "onClickBuy", type: "(id) => void", description: "Called on buy (product)" },
536
+ { name: "onClickShop", type: "(id) => void", description: "Called on cart (product)" },
537
+ { name: "onEmailClick", type: "(id) => void", description: "Called on email (profile)" },
538
+ { name: "onWhatsappClick", type: "(id) => void", description: "Called on whatsapp (profile)" },
539
+ ],
540
+ },
541
+ {
542
+ slug: "items-simple-grid",
543
+ name: "ItemsSimpleGrid",
544
+ category: "Item Grid",
545
+ description: "Responsive grid of items (icon + title + description) with dynamic columns.",
546
+ path: "src/lib/components/core/grid/ui/ItemsSimpleGrid.svelte",
547
+ importPath: "ItemsSimpleGrid",
548
+ examples: [
549
+ {
550
+ title: "Simple Grid",
551
+ code: `import { ItemsSimpleGrid } from "negodesign"
552
+
553
+ <ItemsSimpleGrid
554
+ variant={1}
555
+ items={[
556
+ { icon: Coffee03Icon, title: "Coffee", description: "Start your day right" },
557
+ ]}
558
+ onClick={(id) => console.log(id)}
559
+ />`,
560
+ href: "/grid/simple",
561
+ },
562
+ ],
563
+ props: [
564
+ { name: "items", type: "ItemGridProps[]", description: "Items: { icon, title, description?, id? }", required: true },
565
+ { name: "variant", type: "1 | 2", description: "Item visual variant (Grid01/Grid02)", default: "1" },
566
+ { name: "className", type: "string", description: "Container CSS class" },
567
+ { name: "isLoading", type: "boolean", description: "Shows skeletons" },
568
+ { name: "onClick", type: "(id) => void", description: "Called when an item is clicked" },
569
+ { name: "itemClassName", type: "string", description: "CSS class for each item" },
570
+ ],
571
+ },
572
+ {
573
+ slug: "items-panel",
574
+ name: "ItemsPanel",
575
+ category: "Item Grid",
576
+ description: "Item panel/switch that renders in a grid or inline carousel with selection state.",
577
+ path: "src/lib/components/core/grid/ui/ItemsPanel.svelte",
578
+ importPath: "ItemsPanel",
579
+ examples: [
580
+ {
581
+ title: "Panel Grid",
582
+ code: `import { ItemsPanel } from "negodesign"
583
+
584
+ <ItemsPanel
585
+ style="grid"
586
+ variant={1}
587
+ items={items}
588
+ onClick={(id) => console.log(id)}
589
+ />`,
590
+ href: "/grid/panel",
591
+ },
592
+ ],
593
+ props: [
594
+ { name: "style", type: "'grid' | 'inline'", description: "Display mode", default: "grid" },
595
+ { name: "items", type: "ItemGridProps[]", description: "Items to render", required: true },
596
+ { name: "variant", type: "1 | 2", description: "Item variant" },
597
+ { name: "onClick", type: "(id) => void", description: "Called when an item is selected" },
598
+ { name: "itemClassName", type: "string", description: "CSS class for each item" },
599
+ { name: "className", type: "string", description: "Container CSS class" },
600
+ { name: "isLoading", type: "boolean", description: "Shows skeletons" },
601
+ ],
602
+ },
603
+ {
604
+ slug: "footer",
605
+ name: "Footer",
606
+ category: "Footer",
607
+ description: "Footer wrapper with link columns, newsletter, social media, and copyright.",
608
+ path: "src/lib/components/core/footer/ui/Footer.svelte",
609
+ importPath: "Footer",
610
+ examples: [
611
+ {
612
+ title: "Footer",
613
+ code: `import { Footer } from "negodesign"
614
+
615
+ <Footer
616
+ isNewsletter={true}
617
+ items={[
618
+ { title: "Solutions", items: [{ text: "Marketing" }] },
619
+ ]}
620
+ socialsMedia={[
621
+ { icon: "facebook", text: "Facebook", href: "#" },
622
+ ]}
623
+ companyName="Negoturismo"
624
+ />`,
625
+ href: "/footer",
626
+ },
627
+ ],
628
+ props: [
629
+ { name: "variant", type: "1 | 2", description: "Selects the layout", default: "1" },
630
+ { name: "items", type: "FooterColumnProps[]", description: "Required. Columns: { title, items: [{ text, href? }] }", required: true },
631
+ { name: "socialsMedia", type: "FooterSocialItem[]", description: "Required. Social media: { icon, text, href? }", required: true },
632
+ { name: "logo", type: "string", description: "Logo URL (variant 1)" },
633
+ { name: "isNewsletter", type: "boolean", description: "Enables the newsletter form" },
634
+ { name: "companyName", type: "string", description: "Company name in the copyright" },
635
+ { name: "newsletterTitle", type: "string", description: "Newsletter section title" },
636
+ { name: "newsletterDescription", type: "string", description: "Newsletter description" },
637
+ { name: "onSubscribe", type: "(email: string) => void", description: "Called when the email is submitted" },
638
+ ],
639
+ },
640
+ {
641
+ slug: "admin-panel",
642
+ name: "AdminPanel",
643
+ category: "Admin Panel",
644
+ description: "Admin app shell: collapsible sidebar, top bar, breadcrumb, light switch, and content area.",
645
+ path: "src/lib/components/pages/admin/01/ui/AdminPanel.svelte",
646
+ importPath: "AdminPanel",
647
+ examples: [
648
+ {
649
+ title: "Admin Panel",
650
+ code: `import { AdminPanel } from "negodesign"
651
+
652
+ <AdminPanel>
653
+ {#snippet appsidebar()}
654
+ <MenuBarSidebar {user} {menus} {menusButtons} />
655
+ {/snippet}
656
+ {#snippet content()}
657
+ <AdminContent>...content...</AdminContent>
658
+ {/snippet}
659
+ </AdminPanel>`,
660
+ href: "/admin/01",
661
+ },
662
+ ],
663
+ props: [
664
+ { name: "appsidebar", type: "Snippet", description: "App sidebar content" },
665
+ { name: "content", type: "Snippet", description: "Main page content" },
666
+ { name: "breadcrumb", type: "Snippet", description: "Breadcrumb navigation in the header" },
667
+ ],
668
+ },
669
+ {
670
+ slug: "data-table",
671
+ name: "DataTableCore",
672
+ category: "Admin Panel",
673
+ description: "Generic data table (TanStack Table) with headers, badges, drag-and-drop, selection, filters, and pagination.",
674
+ path: "src/lib/components/core/datatable/ui/DataTableCore.svelte",
675
+ importPath: "DataTableCore",
676
+ examples: [
677
+ {
678
+ title: "Data Table",
679
+ code: `import { DataTableCore } from "negodesign"
680
+
681
+ <DataTableCore
682
+ items={rows}
683
+ config={columns}
684
+ columnFilter="name"
685
+ actions={RowActions}
686
+ />`,
687
+ href: "/datatable/01",
688
+ },
689
+ ],
690
+ props: [
691
+ { name: "items", type: "T[]", description: "Array of row data", required: true },
692
+ { name: "config", type: "ColumnDef[]", description: "Required. Column definitions: { accessorKey, header, cell, badge[] }", required: true },
693
+ { name: "columnFilter", type: "keyof T", description: "Column key used in the global filter" },
694
+ { name: "actions", type: "Component", description: "Component rendered in the per-row actions column" },
695
+ ],
696
+ },
697
+ {
698
+ slug: "menu-bar-sidebar",
699
+ name: "MenuBarSidebar",
700
+ category: "Admin Panel",
701
+ description: "Navigation sidebar used inside AdminPanel with submenus, footer buttons, and a signed-in user card.",
702
+ path: "src/lib/components/core/sidebar/MenuBarSidebar.svelte",
703
+ importPath: "MenuBarSidebar",
704
+ examples: [
705
+ {
706
+ title: "Sidebar",
707
+ code: `import { MenuBarSidebar } from "negodesign"
708
+
709
+ <MenuBarSidebar
710
+ {menus}
711
+ {user}
712
+ {menusButtons}
713
+ />`,
714
+ },
715
+ ],
716
+ props: [
717
+ { name: "menus", type: "NavMenuItem[]", description: "Required. Main menu: { title, url?, icon, isActive?, submenus[] }", required: true },
718
+ { name: "user", type: "NavUserSidebarProps", description: "Required. User: { user: { name, email, avatar? } }", required: true },
719
+ { name: "menusButtons", type: "NavMenuSidebarProps[]", description: "Footer buttons (e.g. Help, Settings)" },
720
+ { name: "footer", type: "Snippet", description: "Custom footer snippet" },
721
+ { name: "header", type: "Snippet", description: "Custom header snippet" },
722
+ { name: "collapsible", type: "string", description: "Collapse mode", default: "icon" },
723
+ ],
724
+ },
725
+ {
726
+ slug: "page-login",
727
+ name: "PageLogin",
728
+ category: "Login / Security",
729
+ description: "Login page in a split layout: hero carousel and authentication card.",
730
+ path: "src/lib/components/pages/security/login/PageLogin.svelte",
731
+ importPath: "PageLogin",
732
+ examples: [
733
+ {
734
+ title: "Login Page",
735
+ code: `import { PageLogin } from "negodesign"
736
+
737
+ <PageLogin
738
+ title="Negodesign"
739
+ formType="EMAIL_PASSWORD"
740
+ carousel={[
741
+ { title: "Welcome", description: "Access your account", buttonText: "Sign in" },
742
+ ]}
743
+ onSubmit={(credential) => console.log(credential)}
744
+ />`,
745
+ href: "/login/admin/01",
746
+ },
747
+ ],
748
+ props: [
749
+ { name: "title", type: "string", description: "Title shown in the hero/header" },
750
+ { name: "formType", type: "'EMAIL_PASSWORD' | 'PHONE_PASSWORD' | 'USERNAME_PASSWORD'", description: "Form type", default: "USERNAME_PASSWORD" },
751
+ { name: "carousel", type: "LoginCarouselItem[]", description: "Hero slides: { title, description, buttonText, buttonUrl? }" },
752
+ { name: "varient", type: "'NUMBER' | 'DOT' | 'POINTER'", description: "Carousel indicator style" },
753
+ { name: "children", type: "Snippet", description: "Custom content replacing the login card" },
754
+ { name: "onSubmit", type: "(LoginRequestDto) => void", description: "Called on submit: { password, data }" },
755
+ { name: "forgetPassword", type: "LinkProps", description: "'Forgot password' link" },
756
+ { name: "privacyPolicy", type: "LinkProps", description: "Privacy policy link" },
757
+ { name: "termsOfService", type: "LinkProps", description: "Terms of service link" },
758
+ ],
759
+ },
760
+ {
761
+ slug: "company-profile",
762
+ name: "CompanyProfile",
763
+ category: "Full Pages",
764
+ description: "Company profile page: banner, scroll-spy section navigation, and About, Gallery, and Products sections.",
765
+ path: "src/lib/components/pages/company-profile/CompanyProfile.svelte",
766
+ importPath: "CompanyProfile",
767
+ examples: [
768
+ {
769
+ title: "Company Profile",
770
+ code: `import { CompanyProfile } from "negodesign"
771
+
772
+ <CompanyProfile
773
+ data={data}
774
+ isLoading={false}
775
+ onWhatsapp={(id) => console.log(id)}
776
+ onEmail={(id) => console.log(id)}
777
+ />`,
778
+ href: "/company-profile",
779
+ },
780
+ ],
781
+ props: [
782
+ { name: "data", type: "CompanyProfileData", description: "Complete data: { id, banner, about, gallery, products }", required: true },
783
+ { name: "isLoading", type: "boolean", description: "Shows skeletons in all blocks" },
784
+ { name: "onWhatsapp", type: "(id) => void", description: "Called when whatsapp is clicked" },
785
+ { name: "onEmail", type: "(id) => void", description: "Called when email is clicked" },
786
+ { name: "onCopyLink", type: "(id) => void", description: "Called when link is copied" },
787
+ { name: "onShare", type: "(id) => void", description: "Called when sharing" },
788
+ ],
789
+ },
790
+ {
791
+ slug: "privacy-policy",
792
+ name: "PrivacyPolicyOrTermsOfUse",
793
+ category: "Full Pages",
794
+ description: "Privacy policy/terms page with two layout variants.",
795
+ path: "src/lib/components/pages/privacy-policy-or-terms-of-use/PrivacyPolicyOrTermsOfUse.svelte",
796
+ importPath: "PrivacyPolicyOrTermsOfUse",
797
+ examples: [
798
+ {
799
+ title: "Privacy Policy",
800
+ code: `import { PrivacyPolicyOrTermsOfUse } from "negodesign"
801
+
802
+ <PrivacyPolicyOrTermsOfUse
803
+ variant={1}
804
+ title="Privacy Policy"
805
+ lastUpdated="August 15, 2026"
806
+ breadcrumb={[{ label: "Home", href: "/" }]}
807
+ sections={[{ id: "intro", title: "Introduction", blocks: [] }]}
808
+ />`,
809
+ href: "/privacy-policy-or-terms-of-use",
810
+ },
811
+ ],
812
+ props: [
813
+ { name: "variant", type: "1 | 2", description: "Layout variant", default: "1" },
814
+ { name: "title", type: "string", description: "Required. Page title", required: true },
815
+ { name: "lastUpdated", type: "string", description: "Required. Last updated date", required: true },
816
+ { name: "breadcrumb", type: "BreadcrumbItem[]", description: "Required. Items: { label, href? }", required: true },
817
+ { name: "sections", type: "DocSection[]", description: "Required. Content sections: { id, title, level?, blocks?, subsections? }", required: true },
818
+ { name: "isVisibleMenuLeft", type: "boolean", description: "Shows the left sidebar (variant 1)" },
819
+ { name: "isVisibleMenuRight", type: "boolean", description: "Shows the right index" },
820
+ ],
821
+ },
822
+ {
823
+ slug: "product-details",
824
+ name: "ProductDetails",
825
+ category: "Full Pages",
826
+ description: "Product details page with three layout variants (gallery + info, sticky panel, tabs).",
827
+ path: "src/lib/components/pages/product-details/ProductDetails.svelte",
828
+ importPath: "ProductDetails",
829
+ examples: [
830
+ {
831
+ title: "Product Details",
832
+ code: `import { ProductDetails } from "negodesign"
833
+
834
+ <ProductDetails
835
+ varient={1}
836
+ data={productData}
837
+ isLoading={false}
838
+ onBuy={(id) => alert("Buy " + id)}
839
+ onFavorite={(id) => alert("Favorite " + id)}
840
+ onCart={(id) => alert("Cart " + id)}
841
+ />`,
842
+ href: "/product-details/01",
843
+ },
844
+ ],
845
+ props: [
846
+ { name: "varient", type: "1 | 2 | 3", description: "Layout variant (note: prop spelled 'varient')", default: "1" },
847
+ { name: "data", type: "ProductDetailsData", description: "Required. Complete product data", required: true },
848
+ { name: "isLoading", type: "boolean", description: "Shows skeletons" },
849
+ { name: "promotions", type: "ProductPromotionDetailsProps[]", description: "Promotions with old/new prices" },
850
+ { name: "showPriceWithPromotions", type: "boolean", description: "Shows only promotion prices" },
851
+ { name: "onBuy", type: "(id) => void", description: "Called on the buy button" },
852
+ { name: "onFavorite", type: "(id) => void", description: "Called on the favorite button" },
853
+ { name: "onCart", type: "(id) => void", description: "Called on the cart button" },
854
+ ],
855
+ },
856
+ {
857
+ slug: "profile-user",
858
+ name: "ProfileUser",
859
+ category: "Full Pages",
860
+ description: "User profile page with a header and tabbed sections: Addresses, Security, and Settings.",
861
+ path: "src/lib/components/pages/profile-user/ProfileUser.svelte",
862
+ importPath: "ProfileUser",
863
+ examples: [
864
+ {
865
+ title: "User Profile",
866
+ code: `import { ProfileUser } from "negodesign"
867
+
868
+ <ProfileUser
869
+ varient={1}
870
+ data={userData}
871
+ isLoading={false}
872
+ onLoginAsUser={(id) => alert(id)}
873
+ onAddAddress={() => alert("Add")}
874
+ onChangePassword={(p) => alert(JSON.stringify(p))}
875
+ />`,
876
+ href: "/profile-user/01",
877
+ },
878
+ ],
879
+ props: [
880
+ { name: "varient", type: "1 | 2 | 3", description: "Layout variant (note: prop spelled 'varient')", default: "1" },
881
+ { name: "data", type: "ProfileUserData", description: "Required. User data", required: true },
882
+ { name: "activeTab", type: "string", description: "Active tab (bindable)" },
883
+ { name: "isLoading", type: "boolean", description: "Shows skeletons" },
884
+ { name: "tabs", type: "{ id, label }[]", description: "Custom tab definitions" },
885
+ { name: "onLoginAsUser", type: "(id) => void", description: "Called on 'sign in as user'" },
886
+ { name: "onAddAddress", type: "() => void", description: "Called on 'add address'" },
887
+ { name: "onChangePassword", type: "(payload) => void", description: "Called when the password is submitted" },
888
+ { name: "userTabs", type: "ProfileUserTabsProps", description: "Tabs style: underline | pill" },
889
+ ],
890
+ },
891
+ ];
892
+ export function getComponent(slug) {
893
+ return components.find((c) => c.slug === slug);
894
+ }
895
+ export function getComponentsByCategory(category) {
896
+ return components.filter((c) => c.category === category);
897
+ }