xertica-ui 2.2.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1047) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +27 -3
  3. package/assets/xertica-logo.svg +37 -37
  4. package/assets/xertica-x-logo.svg +20 -20
  5. package/bin/cli.ts +477 -70
  6. package/bin/generate-tokens.ts +262 -262
  7. package/bin/language-config.ts +361 -361
  8. package/components/assets/xertica-orbe-animation.ts +1162 -1162
  9. package/components/assistant/code-block/code-block.stories.tsx +57 -57
  10. package/components/assistant/code-block/code-block.test.tsx +44 -44
  11. package/components/assistant/code-block/index.ts +1 -1
  12. package/components/assistant/formatted-document/formatted-document.stories.tsx +51 -51
  13. package/components/assistant/formatted-document/formatted-document.test.tsx +42 -42
  14. package/components/assistant/formatted-document/index.ts +1 -1
  15. package/components/assistant/index.ts +6 -6
  16. package/components/assistant/markdown-message/MarkdownMessage.tsx +152 -152
  17. package/components/assistant/markdown-message/index.ts +1 -1
  18. package/components/assistant/markdown-message/markdown-message.stories.tsx +50 -50
  19. package/components/assistant/markdown-message/markdown-message.test.tsx +33 -33
  20. package/components/assistant/modern-chat-input/ModernChatInput.tsx +554 -554
  21. package/components/assistant/modern-chat-input/index.ts +1 -1
  22. package/components/assistant/modern-chat-input/modern-chat-input.stories.tsx +131 -131
  23. package/components/assistant/modern-chat-input/modern-chat-input.test.tsx +79 -79
  24. package/components/assistant/xertica-assistant/index.ts +3 -3
  25. package/components/assistant/xertica-assistant/parts/AssistantTypingIndicator.tsx +41 -41
  26. package/components/assistant/xertica-assistant/parts/index.ts +16 -16
  27. package/components/assistant/xertica-assistant/types.ts +134 -134
  28. package/components/assistant/xertica-assistant/xertica-assistant.stories.tsx +407 -407
  29. package/components/assistant/xertica-assistant/xertica-assistant.test.tsx +65 -65
  30. package/components/blocks/card-patterns/ActivityCardSkeleton.tsx +56 -56
  31. package/components/blocks/card-patterns/FeatureCard.tsx +109 -109
  32. package/components/blocks/card-patterns/FeatureCardSkeleton.tsx +63 -63
  33. package/components/blocks/card-patterns/NotificationCardSkeleton.tsx +81 -81
  34. package/components/blocks/card-patterns/ProfileCardSkeleton.tsx +69 -69
  35. package/components/blocks/card-patterns/ProjectCardSkeleton.tsx +72 -72
  36. package/components/blocks/card-patterns/QuickActionCard.tsx +68 -68
  37. package/components/blocks/card-patterns/QuickActionCardSkeleton.tsx +44 -44
  38. package/components/blocks/card-patterns/card-patterns.mdx +123 -123
  39. package/components/blocks/index.ts +1 -1
  40. package/components/brand/branding/branding.stories.tsx +57 -57
  41. package/components/brand/index.ts +6 -6
  42. package/components/brand/language-selector/LanguageSelector.tsx +102 -102
  43. package/components/brand/language-selector/index.ts +1 -1
  44. package/components/brand/language-selector/language-selector.mdx +126 -126
  45. package/components/brand/language-selector/language-selector.stories.tsx +114 -114
  46. package/components/brand/language-selector/language-selector.test.tsx +101 -101
  47. package/components/brand/theme-toggle/index.ts +1 -1
  48. package/components/brand/theme-toggle/theme-toggle.stories.tsx +34 -34
  49. package/components/brand/theme-toggle/theme-toggle.test.tsx +34 -34
  50. package/components/brand/xertica-logo/XerticaLogo.stories.tsx +82 -82
  51. package/components/brand/xertica-logo/XerticaLogo.tsx +104 -104
  52. package/components/brand/xertica-logo/index.ts +1 -1
  53. package/components/brand/xertica-logo/xertica-logo.test.tsx +26 -26
  54. package/components/brand/xertica-orbe/XerticaOrbe.tsx +1927 -1927
  55. package/components/brand/xertica-orbe/index.ts +1 -1
  56. package/components/brand/xertica-orbe/xertica-orbe.stories.tsx +40 -40
  57. package/components/brand/xertica-orbe/xertica-orbe.test.tsx +19 -19
  58. package/components/brand/xertica-provider/XerticaProvider.tsx +112 -112
  59. package/components/brand/xertica-provider/index.ts +1 -1
  60. package/components/brand/xertica-provider/xertica-provider.mdx +61 -61
  61. package/components/brand/xertica-provider/xertica-provider.test.tsx +74 -74
  62. package/components/brand/xertica-xlogo/XerticaXLogo.stories.tsx +79 -79
  63. package/components/brand/xertica-xlogo/XerticaXLogo.tsx +65 -65
  64. package/components/brand/xertica-xlogo/index.ts +1 -1
  65. package/components/brand/xertica-xlogo/xertica-xlogo.test.tsx +16 -16
  66. package/components/examples/ApiKeyMapExample.tsx +71 -71
  67. package/components/examples/DrawingMapExample.tsx +565 -565
  68. package/components/examples/FilterableMapExample.tsx +393 -393
  69. package/components/examples/LocationPickerExample.tsx +348 -348
  70. package/components/examples/MapExamples.tsx +268 -268
  71. package/components/examples/MapGmpExample.tsx +169 -169
  72. package/components/examples/MapShowcase.tsx +471 -471
  73. package/components/examples/RouteMapExamples.tsx +329 -329
  74. package/components/examples/SidebarLogoExample.tsx +65 -65
  75. package/components/examples/SimpleFilterableMap.tsx +219 -219
  76. package/components/examples/index.ts +45 -45
  77. package/components/figma/ImageWithFallback.tsx +27 -27
  78. package/components/hooks/index.ts +13 -13
  79. package/components/hooks/use-layout-shortcuts.ts +43 -43
  80. package/components/layout/header/header.stories.tsx +204 -204
  81. package/components/layout/header/header.test.tsx +75 -75
  82. package/components/layout/header/header.tsx +349 -349
  83. package/components/layout/header/index.ts +1 -1
  84. package/components/layout/index.ts +2 -2
  85. package/components/layout/sidebar/index.ts +3 -3
  86. package/components/layout/sidebar/sidebar.mdx +1 -1
  87. package/components/layout/sidebar/sidebar.stories.tsx +586 -586
  88. package/components/layout/sidebar/sidebar.test.tsx +76 -76
  89. package/components/layout/sidebar/use-sidebar.ts +104 -104
  90. package/components/media/audio-player/AudioPlayer.stories.tsx +124 -124
  91. package/components/media/audio-player/AudioPlayer.test.tsx +106 -106
  92. package/components/media/audio-player/AudioPlayer.tsx +1 -1
  93. package/components/media/audio-player/index.ts +1 -1
  94. package/components/media/audio-player/use-audio-player.ts +312 -312
  95. package/components/media/index.ts +3 -3
  96. package/components/media/video-player/VideoPlayer.stories.tsx +98 -98
  97. package/components/media/video-player/VideoPlayer.test.tsx +73 -73
  98. package/components/media/video-player/index.ts +1 -1
  99. package/components/pages/forgot-password-page/ForgotPasswordPage.stories.tsx +24 -24
  100. package/components/pages/forgot-password-page/ForgotPasswordPage.tsx +188 -188
  101. package/components/pages/forgot-password-page/forgot-password-page.test.tsx +45 -45
  102. package/components/pages/forgot-password-page/index.ts +1 -1
  103. package/components/pages/home-content/HomeContent.stories.tsx +43 -43
  104. package/components/pages/home-content/HomeContent.tsx +1 -1
  105. package/components/pages/home-content/home-content.mdx +62 -62
  106. package/components/pages/home-content/index.ts +1 -1
  107. package/components/pages/home-page/HomePage.stories.tsx +39 -39
  108. package/components/pages/home-page/home-page.mdx +53 -53
  109. package/components/pages/home-page/home-page.test.tsx +53 -53
  110. package/components/pages/home-page/index.ts +1 -1
  111. package/components/pages/index.ts +8 -8
  112. package/components/pages/login-page/LoginPage.stories.tsx +39 -39
  113. package/components/pages/login-page/index.ts +1 -1
  114. package/components/pages/login-page/login-page.test.tsx +63 -63
  115. package/components/pages/reset-password-page/ResetPasswordPage.stories.tsx +24 -24
  116. package/components/pages/reset-password-page/index.ts +1 -1
  117. package/components/pages/template-content/TemplateContent.stories.tsx +43 -43
  118. package/components/pages/template-content/TemplateContent.tsx +1 -1
  119. package/components/pages/template-content/index.ts +1 -1
  120. package/components/pages/template-content/template-content.mdx +61 -61
  121. package/components/pages/template-page/TemplatePage.stories.tsx +39 -39
  122. package/components/pages/template-page/TemplatePage.tsx +62 -62
  123. package/components/pages/template-page/index.ts +1 -1
  124. package/components/pages/template-page/template-page.mdx +53 -53
  125. package/components/pages/template-page/template-page.test.tsx +52 -52
  126. package/components/pages/verify-email-page/VerifyEmailPage.stories.tsx +41 -41
  127. package/components/pages/verify-email-page/index.ts +1 -1
  128. package/components/public-api-smoke.test.tsx +52 -52
  129. package/components/shared/CustomTooltipContent.tsx +48 -48
  130. package/components/shared/assistant-utils.test.ts +16 -16
  131. package/components/shared/assistant-utils.ts +225 -225
  132. package/components/shared/error-boundary.stories.tsx +132 -132
  133. package/components/shared/error-boundary.tsx +154 -154
  134. package/components/shared/error-fallbacks.tsx +226 -226
  135. package/components/shared/layout-constants.ts +8 -8
  136. package/components/shared/navigation.ts +35 -35
  137. package/components/shared/use-mobile.test.ts +16 -16
  138. package/components/shared/use-mobile.ts +36 -36
  139. package/components/shared/utils.test.ts +14 -14
  140. package/components/shared/utils.ts +6 -6
  141. package/components/ui/accordion/accordion.mdx +8 -8
  142. package/components/ui/accordion/accordion.stories.tsx +105 -105
  143. package/components/ui/accordion/accordion.test.tsx +59 -59
  144. package/components/ui/accordion/accordion.tsx +77 -77
  145. package/components/ui/accordion/index.ts +1 -1
  146. package/components/ui/alert/alert.mdx +8 -8
  147. package/components/ui/alert/alert.stories.tsx +86 -86
  148. package/components/ui/alert/alert.test.tsx +53 -53
  149. package/components/ui/alert/alert.tsx +93 -93
  150. package/components/ui/alert/index.ts +1 -1
  151. package/components/ui/alert-dialog/alert-dialog.mdx +8 -8
  152. package/components/ui/alert-dialog/alert-dialog.stories.tsx +84 -84
  153. package/components/ui/alert-dialog/alert-dialog.test.tsx +70 -70
  154. package/components/ui/alert-dialog/alert-dialog.tsx +149 -149
  155. package/components/ui/alert-dialog/index.ts +1 -1
  156. package/components/ui/aspect-ratio/aspect-ratio.mdx +8 -8
  157. package/components/ui/aspect-ratio/aspect-ratio.stories.tsx +46 -46
  158. package/components/ui/aspect-ratio/aspect-ratio.test.tsx +28 -28
  159. package/components/ui/aspect-ratio/aspect-ratio.tsx +20 -20
  160. package/components/ui/aspect-ratio/index.ts +1 -1
  161. package/components/ui/assistant-chart/AssistantChart.tsx +64 -64
  162. package/components/ui/assistant-chart/assistant-chart.mdx +8 -8
  163. package/components/ui/assistant-chart/assistant-chart.stories.tsx +44 -44
  164. package/components/ui/assistant-chart/assistant-chart.test.tsx +46 -46
  165. package/components/ui/assistant-chart/index.ts +1 -1
  166. package/components/ui/avatar/avatar.mdx +8 -8
  167. package/components/ui/avatar/avatar.stories.tsx +86 -86
  168. package/components/ui/avatar/avatar.test.tsx +55 -55
  169. package/components/ui/avatar/avatar.tsx +71 -71
  170. package/components/ui/avatar/index.ts +1 -1
  171. package/components/ui/badge/badge.mdx +8 -8
  172. package/components/ui/badge/badge.stories.tsx +72 -72
  173. package/components/ui/badge/badge.test.tsx +40 -40
  174. package/components/ui/badge/badge.tsx +58 -58
  175. package/components/ui/badge/index.ts +1 -1
  176. package/components/ui/breadcrumb/breadcrumb.mdx +8 -8
  177. package/components/ui/breadcrumb/breadcrumb.stories.tsx +123 -123
  178. package/components/ui/breadcrumb/breadcrumb.test.tsx +70 -70
  179. package/components/ui/breadcrumb/breadcrumb.tsx +114 -114
  180. package/components/ui/breadcrumb/index.ts +1 -1
  181. package/components/ui/button/button.mdx +8 -8
  182. package/components/ui/button/button.stories.tsx +183 -183
  183. package/components/ui/button/button.test.tsx +64 -64
  184. package/components/ui/button/button.tsx +98 -98
  185. package/components/ui/button/index.ts +1 -1
  186. package/components/ui/calendar/calendar.mdx +8 -8
  187. package/components/ui/calendar/calendar.stories.tsx +108 -108
  188. package/components/ui/calendar/calendar.test.tsx +53 -53
  189. package/components/ui/calendar/calendar.tsx +230 -230
  190. package/components/ui/calendar/index.ts +1 -1
  191. package/components/ui/card/card.mdx +8 -8
  192. package/components/ui/card/card.stories.tsx +301 -301
  193. package/components/ui/card/card.test.tsx +55 -55
  194. package/components/ui/card/card.tsx +83 -83
  195. package/components/ui/card/index.ts +1 -1
  196. package/components/ui/carousel/carousel.mdx +8 -8
  197. package/components/ui/carousel/carousel.stories.tsx +80 -80
  198. package/components/ui/carousel/carousel.test.tsx +75 -75
  199. package/components/ui/carousel/carousel.tsx +242 -242
  200. package/components/ui/carousel/index.ts +1 -1
  201. package/components/ui/chart/chart.mdx +8 -8
  202. package/components/ui/chart/chart.stories.tsx +1328 -1328
  203. package/components/ui/chart/chart.test.tsx +178 -178
  204. package/components/ui/chart/chart.tsx +2232 -2232
  205. package/components/ui/chart/index.ts +1 -1
  206. package/components/ui/checkbox/checkbox.mdx +8 -8
  207. package/components/ui/checkbox/checkbox.stories.tsx +109 -109
  208. package/components/ui/checkbox/checkbox.test.tsx +49 -49
  209. package/components/ui/checkbox/checkbox.tsx +68 -68
  210. package/components/ui/checkbox/index.ts +1 -1
  211. package/components/ui/collapsible/collapsible.mdx +8 -8
  212. package/components/ui/collapsible/collapsible.stories.tsx +45 -45
  213. package/components/ui/collapsible/collapsible.test.tsx +51 -51
  214. package/components/ui/collapsible/collapsible.tsx +32 -32
  215. package/components/ui/collapsible/index.ts +1 -1
  216. package/components/ui/command/command.mdx +8 -8
  217. package/components/ui/command/command.stories.tsx +134 -134
  218. package/components/ui/command/command.test.tsx +48 -48
  219. package/components/ui/command/command.tsx +163 -163
  220. package/components/ui/command/index.ts +1 -1
  221. package/components/ui/context-menu/context-menu.mdx +8 -8
  222. package/components/ui/context-menu/context-menu.stories.tsx +76 -76
  223. package/components/ui/context-menu/context-menu.test.tsx +61 -61
  224. package/components/ui/context-menu/context-menu.tsx +236 -236
  225. package/components/ui/context-menu/index.ts +1 -1
  226. package/components/ui/dialog/dialog.mdx +8 -8
  227. package/components/ui/dialog/dialog.stories.tsx +174 -174
  228. package/components/ui/dialog/dialog.test.tsx +78 -78
  229. package/components/ui/dialog/dialog.tsx +189 -189
  230. package/components/ui/dialog/index.ts +1 -1
  231. package/components/ui/drawer/drawer.mdx +8 -8
  232. package/components/ui/drawer/drawer.stories.tsx +71 -71
  233. package/components/ui/drawer/drawer.test.tsx +67 -67
  234. package/components/ui/drawer/drawer.tsx +146 -146
  235. package/components/ui/drawer/index.ts +1 -1
  236. package/components/ui/dropdown-menu/dropdown-menu.mdx +8 -8
  237. package/components/ui/dropdown-menu/dropdown-menu.stories.tsx +156 -156
  238. package/components/ui/dropdown-menu/dropdown-menu.test.tsx +62 -62
  239. package/components/ui/dropdown-menu/dropdown-menu.tsx +240 -240
  240. package/components/ui/dropdown-menu/index.ts +1 -1
  241. package/components/ui/empty/empty.mdx +8 -8
  242. package/components/ui/empty/empty.stories.tsx +85 -85
  243. package/components/ui/empty/empty.test.tsx +31 -31
  244. package/components/ui/empty/empty.tsx +88 -88
  245. package/components/ui/empty/index.ts +1 -1
  246. package/components/ui/file-upload/file-upload.mdx +8 -8
  247. package/components/ui/file-upload/file-upload.stories.tsx +144 -144
  248. package/components/ui/file-upload/file-upload.test.tsx +65 -65
  249. package/components/ui/file-upload/file-upload.tsx +142 -142
  250. package/components/ui/file-upload/index.ts +2 -2
  251. package/components/ui/file-upload/use-file-upload.ts +177 -177
  252. package/components/ui/form/form.stories.tsx +85 -85
  253. package/components/ui/form/form.test.tsx +75 -75
  254. package/components/ui/form/form.tsx +163 -163
  255. package/components/ui/form/index.ts +1 -1
  256. package/components/ui/google-maps-loader/google-maps-loader.test.tsx +35 -35
  257. package/components/ui/google-maps-loader/google-maps-loader.tsx +465 -465
  258. package/components/ui/google-maps-loader/index.ts +1 -1
  259. package/components/ui/hover-card/hover-card.mdx +8 -8
  260. package/components/ui/hover-card/hover-card.stories.tsx +61 -61
  261. package/components/ui/hover-card/hover-card.test.tsx +48 -48
  262. package/components/ui/hover-card/hover-card.tsx +50 -50
  263. package/components/ui/hover-card/index.ts +1 -1
  264. package/components/ui/index.ts +400 -400
  265. package/components/ui/input/index.ts +1 -1
  266. package/components/ui/input/input.mdx +8 -8
  267. package/components/ui/input/input.stories.tsx +153 -153
  268. package/components/ui/input/input.test.tsx +47 -47
  269. package/components/ui/input/input.tsx +57 -57
  270. package/components/ui/input-otp/index.ts +1 -1
  271. package/components/ui/input-otp/input-otp.mdx +8 -8
  272. package/components/ui/input-otp/input-otp.stories.tsx +120 -120
  273. package/components/ui/input-otp/input-otp.test.tsx +74 -74
  274. package/components/ui/input-otp/input-otp.tsx +101 -101
  275. package/components/ui/label/index.ts +1 -1
  276. package/components/ui/label/label.mdx +8 -8
  277. package/components/ui/label/label.stories.tsx +74 -74
  278. package/components/ui/label/label.test.tsx +45 -45
  279. package/components/ui/label/label.tsx +53 -53
  280. package/components/ui/map/index.ts +1 -1
  281. package/components/ui/map/map.mdx +8 -8
  282. package/components/ui/map/map.stories.tsx +86 -86
  283. package/components/ui/map/map.test.tsx +82 -82
  284. package/components/ui/map/map.tsx +506 -506
  285. package/components/ui/map/mock.test.tsx +13 -13
  286. package/components/ui/map-config/index.ts +1 -1
  287. package/components/ui/map-config/map-config.ts +18 -18
  288. package/components/ui/map-layers/index.ts +1 -1
  289. package/components/ui/map-layers/map-layers.test.tsx +48 -48
  290. package/components/ui/map-layers/map-layers.tsx +126 -126
  291. package/components/ui/map.exports/index.ts +1 -1
  292. package/components/ui/map.exports/map.exports.ts +31 -31
  293. package/components/ui/menubar/index.ts +1 -1
  294. package/components/ui/menubar/menubar.mdx +8 -8
  295. package/components/ui/menubar/menubar.stories.tsx +130 -130
  296. package/components/ui/menubar/menubar.test.tsx +53 -53
  297. package/components/ui/menubar/menubar.tsx +265 -265
  298. package/components/ui/navigation-menu/index.ts +1 -1
  299. package/components/ui/navigation-menu/navigation-menu.mdx +8 -8
  300. package/components/ui/navigation-menu/navigation-menu.stories.tsx +126 -126
  301. package/components/ui/navigation-menu/navigation-menu.test.tsx +47 -47
  302. package/components/ui/navigation-menu/navigation-menu.tsx +165 -165
  303. package/components/ui/notification-badge/index.ts +1 -1
  304. package/components/ui/notification-badge/notification-badge.mdx +8 -8
  305. package/components/ui/notification-badge/notification-badge.stories.tsx +66 -66
  306. package/components/ui/notification-badge/notification-badge.test.tsx +61 -61
  307. package/components/ui/notification-badge/notification-badge.tsx +91 -91
  308. package/components/ui/page-header/index.ts +1 -1
  309. package/components/ui/page-header/page-header.stories.tsx +69 -69
  310. package/components/ui/page-header/page-header.test.tsx +37 -37
  311. package/components/ui/page-header/page-header.tsx +124 -124
  312. package/components/ui/pagination/index.ts +3 -3
  313. package/components/ui/pagination/pagination.mdx +8 -8
  314. package/components/ui/pagination/pagination.stories.tsx +210 -210
  315. package/components/ui/pagination/pagination.test.tsx +63 -63
  316. package/components/ui/pagination/pagination.tsx +140 -140
  317. package/components/ui/pagination/use-pagination.ts +173 -173
  318. package/components/ui/popover/index.ts +1 -1
  319. package/components/ui/popover/popover.mdx +8 -8
  320. package/components/ui/popover/popover.stories.tsx +73 -73
  321. package/components/ui/popover/popover.test.tsx +48 -48
  322. package/components/ui/popover/popover.tsx +54 -54
  323. package/components/ui/progress/index.ts +1 -1
  324. package/components/ui/progress/progress.mdx +8 -8
  325. package/components/ui/progress/progress.stories.tsx +55 -55
  326. package/components/ui/progress/progress.test.tsx +23 -23
  327. package/components/ui/progress/progress.tsx +68 -68
  328. package/components/ui/radio-group/index.ts +1 -1
  329. package/components/ui/radio-group/radio-group.mdx +8 -8
  330. package/components/ui/radio-group/radio-group.stories.tsx +114 -114
  331. package/components/ui/radio-group/radio-group.test.tsx +78 -78
  332. package/components/ui/radio-group/radio-group.tsx +93 -93
  333. package/components/ui/rating/index.ts +1 -1
  334. package/components/ui/rating/rating.mdx +8 -8
  335. package/components/ui/rating/rating.stories.tsx +50 -50
  336. package/components/ui/rating/rating.test.tsx +48 -48
  337. package/components/ui/rating/rating.tsx +145 -145
  338. package/components/ui/resizable/index.ts +1 -1
  339. package/components/ui/resizable/resizable.mdx +8 -8
  340. package/components/ui/resizable/resizable.stories.tsx +88 -88
  341. package/components/ui/resizable/resizable.test.tsx +61 -61
  342. package/components/ui/resizable/resizable.tsx +452 -452
  343. package/components/ui/rich-text-editor/index.ts +7 -7
  344. package/components/ui/rich-text-editor/rich-text-editor.stories.tsx +290 -290
  345. package/components/ui/rich-text-editor/rich-text-editor.test.tsx +86 -86
  346. package/components/ui/rich-text-editor/rich-text-editor.tsx +634 -634
  347. package/components/ui/rich-text-editor/use-rich-text-editor.ts +453 -453
  348. package/components/ui/route-map/index.ts +1 -1
  349. package/components/ui/route-map/route-map.mdx +8 -8
  350. package/components/ui/route-map/route-map.stories.tsx +48 -48
  351. package/components/ui/route-map/route-map.test.tsx +108 -108
  352. package/components/ui/route-map/route-map.tsx +349 -349
  353. package/components/ui/scroll-area/index.ts +1 -1
  354. package/components/ui/scroll-area/scroll-area.mdx +8 -8
  355. package/components/ui/scroll-area/scroll-area.stories.tsx +31 -31
  356. package/components/ui/scroll-area/scroll-area.test.tsx +27 -27
  357. package/components/ui/scroll-area/scroll-area.tsx +70 -70
  358. package/components/ui/search/index.ts +1 -1
  359. package/components/ui/search/search.mdx +8 -8
  360. package/components/ui/search/search.stories.tsx +107 -107
  361. package/components/ui/search/search.test.tsx +67 -67
  362. package/components/ui/search/search.tsx +141 -141
  363. package/components/ui/select/index.ts +1 -1
  364. package/components/ui/select/select.mdx +8 -8
  365. package/components/ui/select/select.stories.tsx +163 -163
  366. package/components/ui/select/select.test.tsx +99 -99
  367. package/components/ui/select/select.tsx +195 -195
  368. package/components/ui/separator/index.ts +1 -1
  369. package/components/ui/separator/separator.mdx +8 -8
  370. package/components/ui/separator/separator.stories.tsx +55 -55
  371. package/components/ui/separator/separator.test.tsx +23 -23
  372. package/components/ui/separator/separator.tsx +39 -39
  373. package/components/ui/sheet/index.ts +1 -1
  374. package/components/ui/sheet/sheet.mdx +8 -8
  375. package/components/ui/sheet/sheet.stories.tsx +93 -93
  376. package/components/ui/sheet/sheet.test.tsx +62 -62
  377. package/components/ui/sheet/sheet.tsx +149 -149
  378. package/components/ui/simple-map/index.ts +1 -1
  379. package/components/ui/simple-map/simple-map.mdx +8 -8
  380. package/components/ui/simple-map/simple-map.stories.tsx +44 -44
  381. package/components/ui/simple-map/simple-map.test.tsx +36 -36
  382. package/components/ui/simple-map/simple-map.tsx +92 -92
  383. package/components/ui/skeleton/index.ts +1 -1
  384. package/components/ui/skeleton/skeleton.mdx +8 -8
  385. package/components/ui/skeleton/skeleton.stories.tsx +36 -36
  386. package/components/ui/skeleton/skeleton.test.tsx +19 -19
  387. package/components/ui/skeleton/skeleton.tsx +25 -25
  388. package/components/ui/slider/index.ts +1 -1
  389. package/components/ui/slider/slider.mdx +8 -8
  390. package/components/ui/slider/slider.stories.tsx +44 -44
  391. package/components/ui/slider/slider.test.tsx +25 -25
  392. package/components/ui/slider/slider.tsx +66 -66
  393. package/components/ui/sonner/index.ts +1 -1
  394. package/components/ui/sonner/sonner.mdx +8 -8
  395. package/components/ui/sonner/sonner.stories.tsx +41 -41
  396. package/components/ui/sonner/sonner.test.tsx +24 -24
  397. package/components/ui/sonner/sonner.tsx +74 -74
  398. package/components/ui/stats-card/stats-card-skeleton.tsx +62 -62
  399. package/components/ui/stats-card/stats-card.mdx +8 -8
  400. package/components/ui/stats-card/stats-card.test.tsx +34 -34
  401. package/components/ui/stats-card/stats-card.tsx +93 -93
  402. package/components/ui/stepper/index.ts +3 -3
  403. package/components/ui/stepper/stepper.mdx +8 -8
  404. package/components/ui/stepper/stepper.stories.tsx +171 -171
  405. package/components/ui/stepper/stepper.test.tsx +47 -47
  406. package/components/ui/stepper/stepper.tsx +190 -190
  407. package/components/ui/stepper/use-stepper.ts +139 -139
  408. package/components/ui/switch/index.ts +1 -1
  409. package/components/ui/switch/switch.mdx +8 -8
  410. package/components/ui/switch/switch.stories.tsx +93 -93
  411. package/components/ui/switch/switch.test.tsx +44 -44
  412. package/components/ui/switch/switch.tsx +70 -70
  413. package/components/ui/table/index.ts +1 -1
  414. package/components/ui/table/table.mdx +8 -8
  415. package/components/ui/table/table.stories.tsx +114 -114
  416. package/components/ui/table/table.test.tsx +43 -43
  417. package/components/ui/table/table.tsx +104 -104
  418. package/components/ui/tabs/index.ts +1 -1
  419. package/components/ui/tabs/tabs.mdx +8 -8
  420. package/components/ui/tabs/tabs.stories.tsx +140 -140
  421. package/components/ui/tabs/tabs.test.tsx +50 -50
  422. package/components/ui/tabs/tabs.tsx +66 -66
  423. package/components/ui/textarea/index.ts +1 -1
  424. package/components/ui/textarea/textarea.mdx +8 -8
  425. package/components/ui/textarea/textarea.stories.tsx +69 -69
  426. package/components/ui/textarea/textarea.test.tsx +41 -41
  427. package/components/ui/textarea/textarea.tsx +61 -61
  428. package/components/ui/timeline/index.ts +1 -1
  429. package/components/ui/timeline/timeline.mdx +8 -8
  430. package/components/ui/timeline/timeline.stories.tsx +97 -97
  431. package/components/ui/timeline/timeline.test.tsx +53 -53
  432. package/components/ui/timeline/timeline.tsx +124 -124
  433. package/components/ui/toggle/index.ts +1 -1
  434. package/components/ui/toggle/toggle.mdx +8 -8
  435. package/components/ui/toggle/toggle.stories.tsx +56 -56
  436. package/components/ui/toggle/toggle.test.tsx +32 -32
  437. package/components/ui/toggle/toggle.tsx +55 -55
  438. package/components/ui/toggle-group/index.ts +1 -1
  439. package/components/ui/toggle-group/toggle-group.mdx +8 -8
  440. package/components/ui/toggle-group/toggle-group.stories.tsx +66 -66
  441. package/components/ui/toggle-group/toggle-group.test.tsx +47 -47
  442. package/components/ui/toggle-group/toggle-group.tsx +79 -79
  443. package/components/ui/tooltip/index.ts +1 -1
  444. package/components/ui/tooltip/tooltip.mdx +8 -8
  445. package/components/ui/tooltip/tooltip.stories.tsx +83 -83
  446. package/components/ui/tooltip/tooltip.test.tsx +39 -39
  447. package/components/ui/tooltip/tooltip.tsx +69 -69
  448. package/components/ui/tree-view/index.ts +4 -4
  449. package/components/ui/tree-view/tree-view.mdx +8 -8
  450. package/components/ui/tree-view/tree-view.stories.tsx +154 -154
  451. package/components/ui/tree-view/tree-view.test.tsx +58 -58
  452. package/components/ui/tree-view/tree-view.tsx +171 -171
  453. package/components/ui/tree-view/use-tree-view.ts +237 -237
  454. package/contexts/ApiKeyContext.test.tsx +26 -26
  455. package/contexts/ApiKeyContext.tsx +196 -196
  456. package/contexts/AssistenteContext.test.tsx +17 -17
  457. package/contexts/AssistenteContext.tsx +113 -113
  458. package/contexts/AuthContext.tsx +118 -118
  459. package/contexts/BrandColorsContext.test.tsx +21 -21
  460. package/contexts/BrandColorsContext.tsx +251 -251
  461. package/contexts/LanguageContext.test.tsx +121 -121
  462. package/contexts/LanguageContext.tsx +251 -251
  463. package/contexts/LayoutContext.test.tsx +29 -29
  464. package/contexts/LayoutContext.tsx +140 -140
  465. package/contexts/ThemeContext.test.tsx +38 -38
  466. package/contexts/ThemeContext.tsx +111 -111
  467. package/contexts/index.ts +8 -8
  468. package/contexts/theme-data.ts +340 -340
  469. package/dist/{AssistantChart-BAx9VQvb.cjs → AssistantChart-Bdd44uBn.cjs} +388 -127
  470. package/dist/{AssistantChart-CVko2A1W.js → AssistantChart-CFhDdGyU.js} +391 -130
  471. package/dist/AssistantChart-COGiOV-g.cjs +3541 -0
  472. package/dist/AssistantChart-CWX1OWNM.js +3373 -0
  473. package/dist/{AssistantChart-CVzmmhx4.js → AssistantChart-C_hwFRRr.js} +4 -4
  474. package/dist/{AssistantChart-BAudAfne.cjs → AssistantChart-CldVCVDe.cjs} +5 -5
  475. package/dist/{AssistantChart-BP8upjMk.js → AssistantChart-Cu3m7RBo.js} +5 -5
  476. package/dist/AssistantChart-CxGjH7Qk.js +3477 -0
  477. package/dist/AssistantChart-DIpshm3i.js +4784 -0
  478. package/dist/AssistantChart-D_PTeu8P.cjs +3503 -0
  479. package/dist/{AssistantChart-9w31gdAb.cjs → AssistantChart-DoZCyS5r.cjs} +4 -4
  480. package/dist/AssistantChart-zjsy2GaZ.cjs +4810 -0
  481. package/dist/AudioPlayer-9psiEucT.cjs +1282 -0
  482. package/dist/AudioPlayer-B1lt5cPl.cjs +989 -0
  483. package/dist/AudioPlayer-BZ7bibzU.cjs +982 -0
  484. package/dist/AudioPlayer-BpRPS4-1.cjs +1277 -0
  485. package/dist/AudioPlayer-C12BjQBV.cjs +997 -0
  486. package/dist/{AudioPlayer-1ypwE2Wh.cjs → AudioPlayer-CFeV8t-5.cjs} +1 -1
  487. package/dist/{AudioPlayer-DuKXrCfy.js → AudioPlayer-CGRUtUdN.js} +1 -1
  488. package/dist/AudioPlayer-Coly3q5R.js +1278 -0
  489. package/dist/AudioPlayer-CySJIyvL.js +937 -0
  490. package/dist/AudioPlayer-DMcG_c7L.js +990 -0
  491. package/dist/AudioPlayer-DcFKRJE_.js +998 -0
  492. package/dist/AudioPlayer-Dp2bD1Gk.js +1278 -0
  493. package/dist/AudioPlayer-IAU5q5T1.cjs +936 -0
  494. package/dist/AudioPlayer-e8LfNoqO.js +983 -0
  495. package/dist/BrandColorsContext-565dDHd5.js +660 -0
  496. package/dist/BrandColorsContext-BcJbtkqn.cjs +659 -0
  497. package/dist/BrandColorsContext-DZT7JjeD.js +659 -0
  498. package/dist/BrandColorsContext-awnBCmC4.cjs +666 -0
  499. package/dist/{xertica-assistant-Qp3ydksa.cjs → CodeBlock-7TTgmdGG.cjs} +263 -51
  500. package/dist/{xertica-assistant-gnCJdcZY.js → CodeBlock-BeSt1h5P.js} +219 -7
  501. package/dist/CodeBlock-BgfYL_rD.cjs +2094 -0
  502. package/dist/CodeBlock-BlcqlA9M.cjs +2094 -0
  503. package/dist/CodeBlock-Bnmeu5ez.cjs +2094 -0
  504. package/dist/CodeBlock-BtfPlbAI.js +2078 -0
  505. package/dist/CodeBlock-CIySIuYr.js +2078 -0
  506. package/dist/CodeBlock-CuPtUM-7.cjs +2094 -0
  507. package/dist/CodeBlock-D6ffWXgc.js +2078 -0
  508. package/dist/CodeBlock-D8dcwbit.cjs +2094 -0
  509. package/dist/CodeBlock-DMZrFnlw.cjs +2094 -0
  510. package/dist/CodeBlock-DYkTfR0f.js +221 -0
  511. package/dist/CodeBlock-DlBehYN8.js +2078 -0
  512. package/dist/CodeBlock-DnYNI8rQ.js +2078 -0
  513. package/dist/CodeBlock-DvKWbSnE.cjs +2094 -0
  514. package/dist/CodeBlock-DwMCfkFY.js +2078 -0
  515. package/dist/CodeBlock-Dy6CNYyj.js +2078 -0
  516. package/dist/CodeBlock-EOvp9cVu.cjs +223 -0
  517. package/dist/CodeBlock-U1pPOQI7.cjs +2094 -0
  518. package/dist/CodeBlock-f_GpNhEB.js +2078 -0
  519. package/dist/CodeBlock-oB6u8nI1.js +2078 -0
  520. package/dist/CodeBlock-tZC31B73.cjs +2094 -0
  521. package/dist/CustomTooltipContent-BhdIeBEg.cjs +54 -0
  522. package/dist/CustomTooltipContent-CNbVB2NS.js +33 -0
  523. package/dist/FeatureCard-BZ4CYxFf.cjs +497 -0
  524. package/dist/FeatureCard-CxC-7C-C.cjs +300 -0
  525. package/dist/FeatureCard-DNycVGwT.js +485 -0
  526. package/dist/FeatureCard-DbHWCb4E.js +301 -0
  527. package/dist/FeatureCardSkeleton-DZqc96mt.js +27 -0
  528. package/dist/FeatureCardSkeleton-pTa0YNKP.cjs +29 -0
  529. package/dist/ImageWithFallback-CGtidP6B.cjs +4542 -0
  530. package/dist/ImageWithFallback-lsg3pdFg.js +4508 -0
  531. package/dist/{LanguageContext-DvUt5jBg.cjs → LanguageContext-B_KFTCzT.cjs} +2 -2
  532. package/dist/{LanguageContext-BwhwC3G2.js → LanguageContext-CS14yCpi.js} +2 -2
  533. package/dist/{XerticaXLogo-BWaag64t.js → LanguageSelector-B5YfbHra.js} +115 -136
  534. package/dist/{XerticaXLogo-DTee_y8X.cjs → LanguageSelector-D6uacAIM.cjs} +115 -136
  535. package/dist/LayoutContext-B45-e9DI.cjs +93 -0
  536. package/dist/LayoutContext-BAql6ZRY.js +97 -0
  537. package/dist/LayoutContext-BEq_-n98.cjs +96 -0
  538. package/dist/LayoutContext-Bav3UMEA.js +94 -0
  539. package/dist/LayoutContext-BvK-ggDa.cjs +96 -0
  540. package/dist/LayoutContext-DNl1xSoX.js +92 -0
  541. package/dist/{ThemeContext-Bo-W2WZH.js → ThemeContext-BWq9ACPo.js} +8 -13
  542. package/dist/{ThemeContext-ept8jhXI.js → ThemeContext-BXjrgUjW.js} +261 -200
  543. package/dist/{ThemeContext-BblcjQup.cjs → ThemeContext-Bmod0Cg2.cjs} +8 -13
  544. package/dist/ThemeContext-BoH4NLfN.js +734 -0
  545. package/dist/{ThemeContext-BbBNoFTG.js → ThemeContext-C2EwAPDt.js} +2 -2
  546. package/dist/{ThemeContext-U4dEYc6C.cjs → ThemeContext-CGk3KK0k.cjs} +1 -8
  547. package/dist/{ThemeContext-CP3a0jxy.cjs → ThemeContext-CMD3z2Dz.cjs} +268 -193
  548. package/dist/{ThemeContext-D3LzacmG.js → ThemeContext-CQSo4Iwc.js} +1 -8
  549. package/dist/ThemeContext-j5aGtPky.cjs +1924 -0
  550. package/dist/ThemeContext-r69W20Xg.cjs +733 -0
  551. package/dist/{ThemeContext-Cmr8Ex8H.cjs → ThemeContext-vTjumZeM.cjs} +2 -2
  552. package/dist/ThemeContext-x_F2zsnv.js +1923 -0
  553. package/dist/{VerifyEmailPage-BRSP-Pwt.cjs → VerifyEmailPage--1Vurewl.cjs} +3 -3
  554. package/dist/{VerifyEmailPage-BE-L9mB7.js → VerifyEmailPage-1WwWczAn.js} +12 -22
  555. package/dist/{VerifyEmailPage-DF2ilhum.cjs → VerifyEmailPage-B4peJjAT.cjs} +356 -334
  556. package/dist/{VerifyEmailPage-CR7kb5df.cjs → VerifyEmailPage-BComraR7.cjs} +12 -22
  557. package/dist/{VerifyEmailPage-hdB8JQGv.cjs → VerifyEmailPage-By3Jf__L.cjs} +348 -329
  558. package/dist/{VerifyEmailPage-BiRm7Nh4.cjs → VerifyEmailPage-ByerOcm4.cjs} +348 -329
  559. package/dist/{VerifyEmailPage-CbgjOF0v.js → VerifyEmailPage-C0c2e5n0.js} +7 -7
  560. package/dist/{VerifyEmailPage-EhudUdqF.js → VerifyEmailPage-C5TNQTBa.js} +355 -343
  561. package/dist/{VerifyEmailPage-Dt7zgA4w.cjs → VerifyEmailPage-CFLMls1p.cjs} +4 -4
  562. package/dist/{VerifyEmailPage-vYHbYK3q.js → VerifyEmailPage-CJLz3jrn.js} +347 -338
  563. package/dist/VerifyEmailPage-COiyNl1y.js +2825 -0
  564. package/dist/{VerifyEmailPage-DMBh4NM9.cjs → VerifyEmailPage-CYXtbKi3.cjs} +1 -1
  565. package/dist/{VerifyEmailPage-DTtFfC-J.js → VerifyEmailPage-CgMxRb4z.js} +3 -3
  566. package/dist/VerifyEmailPage-CqKsR2v8.js +2827 -0
  567. package/dist/{VerifyEmailPage-Bae2cBXT.cjs → VerifyEmailPage-Cwi3kbol.cjs} +7 -7
  568. package/dist/{VerifyEmailPage-BIBOKV7Z.js → VerifyEmailPage-DSBMRHtl.js} +36 -41
  569. package/dist/{VerifyEmailPage-D-FRj5TU.cjs → VerifyEmailPage-De6bQjrz.cjs} +36 -41
  570. package/dist/{VerifyEmailPage-Bvfv8HVQ.js → VerifyEmailPage-DgIid028.js} +347 -338
  571. package/dist/VerifyEmailPage-DjQKRlUS.cjs +2824 -0
  572. package/dist/{VerifyEmailPage-CdYPSJoO.js → VerifyEmailPage-DvMLZgFt.js} +1 -1
  573. package/dist/{VerifyEmailPage-C_ihbcth.js → VerifyEmailPage-MTD7AG1Z.js} +4 -4
  574. package/dist/VerifyEmailPage-s-1X3LDJ.cjs +2826 -0
  575. package/dist/XerticaOrbe-KL1RBHzw.cjs +1354 -0
  576. package/dist/XerticaOrbe-Uk2JML1-.cjs +1927 -0
  577. package/dist/XerticaOrbe-jA5T2iOk.js +1925 -0
  578. package/dist/XerticaOrbe-zwS1p2a8.js +1355 -0
  579. package/dist/XerticaProvider-6btlAlzc.js +17 -0
  580. package/dist/{XerticaProvider-siSt9uG2.js → XerticaProvider-B7EVH-NF.js} +2 -2
  581. package/dist/{XerticaProvider-AbWlr7Af.cjs → XerticaProvider-BIrqfZ-i.cjs} +11 -8
  582. package/dist/XerticaProvider-BNoNOxQ5.cjs +16 -0
  583. package/dist/XerticaProvider-BlY2limY.cjs +38 -0
  584. package/dist/{XerticaProvider-CWgby5mY.js → XerticaProvider-C1DKnvLh.js} +4 -4
  585. package/dist/{XerticaProvider-AChwphCO.cjs → XerticaProvider-CBGc4EMA.cjs} +4 -4
  586. package/dist/{XerticaProvider-BITjgC5p.js → XerticaProvider-CEoWMTxu.js} +2 -2
  587. package/dist/{XerticaProvider-By8q3Roe.cjs → XerticaProvider-CllrbMEJ.cjs} +2 -2
  588. package/dist/{XerticaProvider-B8CaV7xu.cjs → XerticaProvider-D-yNhF94.cjs} +1 -1
  589. package/dist/XerticaProvider-DDuiIcKo.js +39 -0
  590. package/dist/{XerticaProvider-CWs6EwNa.js → XerticaProvider-DUOJg9iX.js} +10 -10
  591. package/dist/{XerticaProvider-DQtvJU7m.js → XerticaProvider-DYq4JWtg.js} +1 -1
  592. package/dist/{XerticaProvider-CjQAQPcn.cjs → XerticaProvider-Dl_b72_l.cjs} +11 -8
  593. package/dist/{XerticaProvider-D5lLumH-.js → XerticaProvider-Dt5HEzbQ.js} +10 -10
  594. package/dist/{XerticaProvider-CW9hpCdF.cjs → XerticaProvider-ET0ihewn.cjs} +2 -2
  595. package/dist/XerticaProvider-cI9hSs27.cjs +38 -0
  596. package/dist/XerticaProvider-hSwhNQex.js +39 -0
  597. package/dist/{XerticaXLogo-ChryA6xj.js → XerticaXLogo-B7xQ5dhi.js} +1 -1
  598. package/dist/{XerticaXLogo-CziKMQil.cjs → XerticaXLogo-CQUUjXoH.cjs} +8 -8
  599. package/dist/{XerticaXLogo-DfUvz-lD.js → XerticaXLogo-Cmsp-Eey.js} +9 -9
  600. package/dist/{XerticaXLogo-CFuIlYFH.js → XerticaXLogo-DZbo4vOE.js} +12 -12
  601. package/dist/{XerticaXLogo-8TTzBjHw.cjs → XerticaXLogo-Zw2B276b.cjs} +1 -1
  602. package/dist/{XerticaXLogo-kslQ8Tk_.cjs → XerticaXLogo-bvZSgwGF.cjs} +13 -7
  603. package/dist/{XerticaXLogo-DHz5SugF.js → XerticaXLogo-mqjoBiLI.js} +12 -12
  604. package/dist/{XerticaXLogo-CU-U-GP4.cjs → XerticaXLogo-uQgwns_E.cjs} +13 -7
  605. package/dist/alert-dialog-BOje--vD.js +847 -0
  606. package/dist/alert-dialog-BtEuQqrg.cjs +870 -0
  607. package/dist/{alert-dialog-yckpaOpy.cjs → alert-dialog-DSKByiKZ.cjs} +3 -3
  608. package/dist/alert-dialog-DhwPioBa.cjs +885 -0
  609. package/dist/alert-dialog-DqlRW_An.js +831 -0
  610. package/dist/{alert-dialog-iDe5VE5o.js → alert-dialog-s-vmNkJ_.js} +3 -3
  611. package/dist/assistant.cjs.js +8 -4
  612. package/dist/assistant.es.js +5 -11
  613. package/dist/avatar-3kO2Anrp.js +54 -0
  614. package/dist/avatar-BCM7YQRC.cjs +77 -0
  615. package/dist/blocks.cjs.js +9 -4
  616. package/dist/blocks.es.js +2 -16
  617. package/dist/brand.cjs.js +10 -5
  618. package/dist/brand.es.js +3 -11
  619. package/dist/breadcrumb-BKtHF4gk.cjs +98 -0
  620. package/dist/breadcrumb-CqJ7bHY5.js +161 -0
  621. package/dist/breadcrumb-ifNsA7Zl.js +90 -0
  622. package/dist/breadcrumb-m9Hb2_XN.cjs +177 -0
  623. package/dist/button-0BlA47It.cjs +85 -0
  624. package/dist/button-DZHzN1Gd.js +62 -0
  625. package/dist/cli.js +391 -66
  626. package/dist/components/assistant/xertica-assistant/hooks/index.d.ts +6 -0
  627. package/dist/components/assistant/xertica-assistant/hooks/use-assistant-conversations.d.ts +21 -0
  628. package/dist/components/assistant/xertica-assistant/hooks/use-assistant-messages.d.ts +49 -0
  629. package/dist/components/assistant/xertica-assistant/hooks/use-assistant-suggestions.d.ts +16 -0
  630. package/dist/components/blocks/audio-player/AudioPlayer.d.ts +35 -0
  631. package/dist/components/blocks/audio-player/index.d.ts +1 -0
  632. package/dist/components/blocks/document-editor/DocumentEditor.d.ts +26 -0
  633. package/dist/components/blocks/document-editor/index.d.ts +1 -0
  634. package/dist/components/blocks/podcast-player/PodcastPlayer.d.ts +41 -0
  635. package/dist/components/blocks/podcast-player/index.d.ts +1 -0
  636. package/dist/components/ui/chart/parts/chart-dashboard.d.ts +113 -0
  637. package/dist/components/ui/chart/parts/chart-metric.d.ts +118 -0
  638. package/dist/components/ui/chart/parts/chart-primitives.d.ts +101 -0
  639. package/dist/components/ui/chart/parts/chart-shared.d.ts +20 -0
  640. package/dist/components/ui/chart/parts/chart-utils.d.ts +12 -0
  641. package/dist/components/ui/chart/parts/index.d.ts +5 -0
  642. package/dist/dropdown-menu-BDB5CmQs.cjs +247 -0
  643. package/dist/dropdown-menu-BMcykFDf.cjs +225 -0
  644. package/dist/dropdown-menu-DQidbKBD.js +231 -0
  645. package/dist/dropdown-menu-Dn_eV2Xb.js +190 -0
  646. package/dist/google-maps-loader-BCe58h9D.js +308 -0
  647. package/dist/google-maps-loader-BFWp6VPd.js +287 -0
  648. package/dist/google-maps-loader-BKcdgFbu.cjs +312 -0
  649. package/dist/{google-maps-loader-t2IlYBzw.js → google-maps-loader-CTYySAun.js} +4 -0
  650. package/dist/google-maps-loader-CumCNXeG.js +312 -0
  651. package/dist/{google-maps-loader-BqsYL48U.cjs → google-maps-loader-Y-QkD-Li.cjs} +5 -0
  652. package/dist/google-maps-loader-casMyxlo.cjs +316 -0
  653. package/dist/google-maps-loader-eS3uQ5TA.cjs +287 -0
  654. package/dist/header-Cgy6vYPk.cjs +731 -0
  655. package/dist/header-DRlT4jgI.js +715 -0
  656. package/dist/header-Dux00SI4.cjs +731 -0
  657. package/dist/header-EkGKXPsD.js +715 -0
  658. package/dist/header-WfEywpyc.cjs +731 -0
  659. package/dist/header-tifNQn2U.js +715 -0
  660. package/dist/hooks.cjs.js +12 -8
  661. package/dist/hooks.es.js +10 -27
  662. package/dist/index-9GWd0qxq.cjs +12 -0
  663. package/dist/index-BabBx2pa.js +6 -0
  664. package/dist/index-BhapVLVj.js +8 -0
  665. package/dist/{index-D3RLKRAs.cjs → index-COtD8bRW.cjs} +1 -1
  666. package/dist/index-D6fxYEY8.cjs +7 -0
  667. package/dist/index-DAIp0_HK.js +8 -0
  668. package/dist/index-DW5tYe26.js +8 -0
  669. package/dist/index-GA__GvnG.cjs +7 -0
  670. package/dist/index.cjs.js +37 -32
  671. package/dist/index.es.js +30 -363
  672. package/dist/index.umd.js +1043 -470
  673. package/dist/input-2R4loU86.js +127 -0
  674. package/dist/input-C_UiS2Py.cjs +152 -0
  675. package/dist/input-DWANSKGb.cjs +145 -0
  676. package/dist/input-cc-PTD4R.js +123 -0
  677. package/dist/layout.cjs.js +10 -6
  678. package/dist/layout.es.js +7 -9
  679. package/dist/media.cjs.js +8 -3
  680. package/dist/media.es.js +1 -6
  681. package/dist/pages.cjs.js +8 -3
  682. package/dist/pages.es.js +1 -11
  683. package/dist/progress-C7Lti5wo.js +80 -0
  684. package/dist/progress-Cqwxbqs1.cjs +103 -0
  685. package/dist/progress-DPtzoVV8.js +175 -0
  686. package/dist/progress-EeaoqqUs.cjs +191 -0
  687. package/dist/rich-text-editor-0mraWT5y.cjs +2376 -0
  688. package/dist/rich-text-editor-B-IkcPD0.js +2874 -0
  689. package/dist/rich-text-editor-B6jMRLzk.cjs +1939 -0
  690. package/dist/rich-text-editor-B8_oYcIR.js +1730 -0
  691. package/dist/rich-text-editor-B9UbSXNb.js +1203 -0
  692. package/dist/rich-text-editor-BYuRBNBU.js +2373 -0
  693. package/dist/rich-text-editor-Bb9pySTs.cjs +2374 -0
  694. package/dist/rich-text-editor-BcL6L3cm.cjs +2374 -0
  695. package/dist/rich-text-editor-BoVZYtTs.cjs +2391 -0
  696. package/dist/rich-text-editor-Bp3zQqMC.js +2954 -0
  697. package/dist/rich-text-editor-CMgSN_w2.js +1189 -0
  698. package/dist/rich-text-editor-CPV1lEPH.cjs +1748 -0
  699. package/dist/rich-text-editor-CeucBdIv.cjs +2971 -0
  700. package/dist/rich-text-editor-CoKqbCtu.cjs +1799 -0
  701. package/dist/rich-text-editor-Cw56T_mB.js +2356 -0
  702. package/dist/rich-text-editor-Cyt8qs2b.js +1921 -0
  703. package/dist/rich-text-editor-D6H84OcX.cjs +1220 -0
  704. package/dist/rich-text-editor-D76gD-QI.js +2328 -0
  705. package/dist/rich-text-editor-DKkokOnA.js +1781 -0
  706. package/dist/rich-text-editor-DNsdpN64.cjs +2359 -0
  707. package/dist/rich-text-editor-DfG8bCyY.js +2358 -0
  708. package/dist/rich-text-editor-DqLICivI.js +2832 -0
  709. package/dist/rich-text-editor-DxO1Hz3a.cjs +2903 -0
  710. package/dist/rich-text-editor-Dxjw31Z4.js +2341 -0
  711. package/dist/rich-text-editor-DzP0Epmb.js +2356 -0
  712. package/dist/rich-text-editor-bRkNoeZY.cjs +2891 -0
  713. package/dist/rich-text-editor-lyYE2ZG5.cjs +1207 -0
  714. package/dist/rich-text-editor-skplNlBM.cjs +2345 -0
  715. package/dist/select-Bkbr0f-Z.cjs +162 -0
  716. package/dist/select-CH6v_KcQ.cjs +161 -0
  717. package/dist/select-CvIVdX2n.js +145 -0
  718. package/dist/select-D-xvCZK2.js +130 -0
  719. package/dist/{sidebar-CA6_ek3f.js → sidebar-3XyzjVBw.js} +40 -49
  720. package/dist/{sidebar-CplprZpM.js → sidebar-B6SlKZYN.js} +40 -49
  721. package/dist/{sidebar-CmvwjnVb.js → sidebar-BViy8Eeu.js} +17 -9
  722. package/dist/{sidebar-Dz7bd3zP.js → sidebar-BbVIQvlP.js} +1 -1
  723. package/dist/{sidebar-CVUGHOS_.cjs → sidebar-BxGXsDAd.cjs} +16 -8
  724. package/dist/sidebar-CK_0ZQHj.cjs +803 -0
  725. package/dist/sidebar-CUuOvYhK.js +787 -0
  726. package/dist/{sidebar-KIS0C2JH.js → sidebar-CrQDDdcz.js} +24 -33
  727. package/dist/{sidebar-zowjejT2.cjs → sidebar-DAaY8bRU.cjs} +24 -33
  728. package/dist/{sidebar-B9NR0lCe.cjs → sidebar-DQj1z3jG.cjs} +227 -269
  729. package/dist/sidebar-Djn5syhi.cjs +786 -0
  730. package/dist/{sidebar-BvF5I2Ue.cjs → sidebar-DyYvgyBj.cjs} +41 -46
  731. package/dist/sidebar-LluMXfam.js +759 -0
  732. package/dist/sidebar-_rT7rBMk.js +787 -0
  733. package/dist/{sidebar-B3EYhli0.cjs → sidebar-nzPoVHBQ.cjs} +41 -46
  734. package/dist/{sidebar-C5B_LHek.cjs → sidebar-q7P2Godd.cjs} +1 -1
  735. package/dist/skeleton-DjiHerJn.cjs +87 -0
  736. package/dist/skeleton-DtR5tkYe.js +78 -0
  737. package/dist/slider-B00b9SVK.cjs +78 -0
  738. package/dist/slider-Bc5Hd0y1.js +56 -0
  739. package/dist/slider-DQCNUUMj.js +56 -0
  740. package/dist/slider-N7hFFj6X.cjs +73 -0
  741. package/dist/sonner-B-jWlik1.cjs +68 -0
  742. package/dist/sonner-C9tiqj4f.js +47 -0
  743. package/dist/tooltip-D8n9UYoU.cjs +72 -0
  744. package/dist/tooltip-Ded96neP.cjs +137 -0
  745. package/dist/tooltip-HDOoD2-0.js +120 -0
  746. package/dist/tooltip-RtbSmPYJ.js +48 -0
  747. package/dist/ui.cjs.js +23 -18
  748. package/dist/ui.es.js +16 -303
  749. package/dist/use-audio-player-B31J-aqh.cjs +187 -0
  750. package/dist/use-audio-player-B78fd2ct.js +188 -0
  751. package/dist/use-audio-player-BkmEmj8Q.js +185 -0
  752. package/dist/use-audio-player-CLFTWFW1.cjs +184 -0
  753. package/dist/use-audio-player-CLLn00I6.js +188 -0
  754. package/dist/use-audio-player-DGvhPrgR.cjs +190 -0
  755. package/dist/{use-audio-player-Dn1NR9xN.cjs → use-audio-player-NKsWyjWu.cjs} +7 -3
  756. package/dist/{use-audio-player-Bkh23vQ3.js → use-audio-player-nv8ZSGa1.js} +7 -3
  757. package/dist/use-file-upload-BcjEo2S5.js +404 -0
  758. package/dist/use-file-upload-CRJR68Tj.cjs +403 -0
  759. package/dist/use-mobile-B0hNy_Y6.cjs +4303 -0
  760. package/dist/use-mobile-BXuYROXM.js +4202 -0
  761. package/dist/use-mobile-Bbd51ASU.cjs +4392 -0
  762. package/dist/use-mobile-BdXTRb0Z.cjs +51 -0
  763. package/dist/use-mobile-Bk6CX-TC.js +4359 -0
  764. package/dist/use-mobile-BvYdisLP.js +4202 -0
  765. package/dist/use-mobile-BzuxjzNX.cjs +4392 -0
  766. package/dist/use-mobile-CG2-SdXV.cjs +4235 -0
  767. package/dist/use-mobile-CKb5pqTs.js +4269 -0
  768. package/dist/use-mobile-CYuAuGDl.js +4202 -0
  769. package/dist/use-mobile-CaENcqm-.js +4508 -0
  770. package/dist/use-mobile-CbrYgJGJ.js +4203 -0
  771. package/dist/use-mobile-Cd4xPrKq.cjs +46 -0
  772. package/dist/use-mobile-Ce2cBAQe.js +29 -0
  773. package/dist/use-mobile-DMOvImGQ.cjs +4542 -0
  774. package/dist/use-mobile-DRB3BQgD.cjs +4235 -0
  775. package/dist/use-mobile-DZvv7QMR.js +4359 -0
  776. package/dist/use-mobile-DdI_TXam.cjs +4235 -0
  777. package/dist/use-mobile-DlceKf8a.js +4359 -0
  778. package/dist/use-mobile-DsOnow1o.cjs +4236 -0
  779. package/dist/use-mobile-Kcj6jSnK.cjs +4392 -0
  780. package/dist/use-mobile-bnKcua_i.js +4202 -0
  781. package/dist/use-mobile-j4w2Jrf1.js +30 -0
  782. package/dist/use-mobile-ncXBeE2z.cjs +4235 -0
  783. package/dist/use-rich-text-editor-DjiddBGv.js +282 -0
  784. package/dist/use-rich-text-editor-lpeswbCs.cjs +281 -0
  785. package/dist/xertica-assistant-B687qEPU.js +2165 -0
  786. package/dist/xertica-assistant-BdiZag0h.js +2187 -0
  787. package/dist/xertica-assistant-CrgTb6Hs.cjs +2155 -0
  788. package/dist/xertica-assistant-DCsnQyi5.js +2156 -0
  789. package/dist/xertica-assistant-DUBpmEgo.cjs +2186 -0
  790. package/dist/{xertica-assistant-Bj3vBCq_.cjs → xertica-assistant-V_IdW4WF.cjs} +27 -9
  791. package/dist/{xertica-assistant-BMqdyRVi.js → xertica-assistant-ciJaWqm1.js} +28 -10
  792. package/dist/{xertica-assistant-B1IaHXnB.cjs → xertica-assistant-dyP7KHM5.cjs} +533 -392
  793. package/dist/xertica-assistant-sOHwTgIP.cjs +2172 -0
  794. package/dist/{xertica-assistant-DPsESB6t.js → xertica-assistant-yX1CFBBo.js} +535 -394
  795. package/dist/xertica-ui.css +2 -2
  796. package/docs/ai-usage.md +195 -195
  797. package/docs/components/accordion.md +109 -109
  798. package/docs/components/alert-dialog.md +127 -127
  799. package/docs/components/alert.md +106 -106
  800. package/docs/components/aspect-ratio.md +58 -58
  801. package/docs/components/assistant-chart.md +47 -47
  802. package/docs/components/assistant.md +2 -0
  803. package/docs/components/audio-player.md +167 -167
  804. package/docs/components/avatar.md +101 -101
  805. package/docs/components/badge.md +84 -84
  806. package/docs/components/breadcrumb.md +104 -104
  807. package/docs/components/button.md +156 -156
  808. package/docs/components/calendar.md +141 -141
  809. package/docs/components/card.md +245 -245
  810. package/docs/components/carousel.md +100 -100
  811. package/docs/components/chart.md +638 -638
  812. package/docs/components/checkbox.md +88 -88
  813. package/docs/components/code-block.md +105 -105
  814. package/docs/components/collapsible.md +86 -86
  815. package/docs/components/command.md +113 -113
  816. package/docs/components/context-menu.md +81 -81
  817. package/docs/components/dialog.md +198 -198
  818. package/docs/components/drawer.md +105 -105
  819. package/docs/components/dropdown-menu.md +127 -127
  820. package/docs/components/empty.md +127 -127
  821. package/docs/components/error-boundary.md +191 -191
  822. package/docs/components/file-upload.md +189 -189
  823. package/docs/components/floating-media-wrapper.md +63 -63
  824. package/docs/components/form.md +177 -177
  825. package/docs/components/formatted-document.md +105 -105
  826. package/docs/components/google-maps-loader.md +44 -44
  827. package/docs/components/header.md +177 -177
  828. package/docs/components/hover-card.md +86 -86
  829. package/docs/components/image-with-fallback.md +107 -107
  830. package/docs/components/input-otp.md +95 -95
  831. package/docs/components/input.md +130 -130
  832. package/docs/components/label.md +69 -69
  833. package/docs/components/language-selector.md +172 -172
  834. package/docs/components/map-layers.md +138 -138
  835. package/docs/components/map.md +84 -84
  836. package/docs/components/markdown-message.md +47 -47
  837. package/docs/components/menubar.md +89 -89
  838. package/docs/components/modern-chat-input.md +164 -164
  839. package/docs/components/navigation-menu.md +83 -83
  840. package/docs/components/notification-badge.md +78 -78
  841. package/docs/components/page-header.md +93 -93
  842. package/docs/components/pages.md +309 -309
  843. package/docs/components/pagination.md +334 -334
  844. package/docs/components/popover.md +116 -116
  845. package/docs/components/progress.md +103 -103
  846. package/docs/components/radio-group.md +133 -133
  847. package/docs/components/rating.md +77 -77
  848. package/docs/components/resizable.md +84 -84
  849. package/docs/components/rich-text-editor.md +255 -255
  850. package/docs/components/route-map.md +124 -124
  851. package/docs/components/scroll-area.md +58 -58
  852. package/docs/components/search.md +87 -87
  853. package/docs/components/select.md +144 -144
  854. package/docs/components/separator.md +58 -58
  855. package/docs/components/sheet.md +122 -122
  856. package/docs/components/sidebar.md +314 -314
  857. package/docs/components/simple-map.md +51 -51
  858. package/docs/components/skeleton.md +99 -99
  859. package/docs/components/slider.md +84 -84
  860. package/docs/components/sonner.md +115 -115
  861. package/docs/components/stats-card.md +120 -120
  862. package/docs/components/stepper.md +268 -268
  863. package/docs/components/switch.md +106 -106
  864. package/docs/components/table.md +138 -138
  865. package/docs/components/tabs.md +117 -117
  866. package/docs/components/textarea.md +86 -86
  867. package/docs/components/theme-toggle.md +73 -73
  868. package/docs/components/timeline.md +121 -121
  869. package/docs/components/toggle-group.md +68 -68
  870. package/docs/components/toggle.md +62 -62
  871. package/docs/components/tooltip.md +116 -116
  872. package/docs/components/tree-view.md +238 -238
  873. package/docs/components/use-mobile.md +96 -96
  874. package/docs/components/video-player.md +68 -68
  875. package/docs/components/xertica-logo.md +36 -36
  876. package/docs/components/xertica-orbe.md +35 -35
  877. package/docs/components/xertica-provider.md +65 -65
  878. package/docs/components/xertica-xlogo.md +35 -35
  879. package/docs/decision-tree.md +293 -293
  880. package/docs/form-sizing.md +162 -162
  881. package/docs/getting-started.md +24 -12
  882. package/docs/i18n.md +476 -476
  883. package/docs/installation.md +267 -267
  884. package/docs/layout.md +143 -143
  885. package/docs/patterns/analytics.md +194 -194
  886. package/docs/patterns/crud.md +149 -149
  887. package/docs/patterns/dashboard.md +138 -138
  888. package/docs/patterns/detail-page.md +296 -296
  889. package/docs/patterns/form.md +241 -241
  890. package/docs/patterns/login.md +156 -156
  891. package/docs/patterns/settings.md +368 -368
  892. package/docs/patterns/wizard.md +213 -213
  893. package/hooks/useTheme.test.tsx +16 -16
  894. package/hooks/useTheme.ts +4 -4
  895. package/imports/Podcast.tsx +540 -540
  896. package/imports/XerticaAi.tsx +46 -46
  897. package/imports/XerticaX.tsx +15 -15
  898. package/imports/svg-aueiaqngck.ts +20 -20
  899. package/imports/svg-v9krss1ozd.ts +23 -23
  900. package/imports/svg-vhrdofe3qe.ts +6 -6
  901. package/llms-compact.txt +2 -1
  902. package/llms.txt +2 -1
  903. package/mcp/resources.json +22 -22
  904. package/mcp/tools.json +35 -35
  905. package/package.json +10 -4
  906. package/scripts/ai-validator.ts +91 -91
  907. package/scripts/cleanup-case-dupes.ts +62 -62
  908. package/scripts/generate-ai-manifests.ts +107 -107
  909. package/styles/globals.css +13 -13
  910. package/styles/xertica/app-overrides/chat.css +61 -61
  911. package/styles/xertica/app-overrides/scrollbar.css +33 -33
  912. package/styles/xertica/base.css +84 -71
  913. package/styles/xertica/integrations/google-maps.css +76 -76
  914. package/styles/xertica/integrations/sonner.css +73 -73
  915. package/styles/xertica/theme-map.css +102 -99
  916. package/styles/xertica/tokens.css +240 -236
  917. package/templates/.prettierignore +4 -4
  918. package/templates/.prettierrc +10 -10
  919. package/templates/CLAUDE.md +165 -165
  920. package/templates/eslint.config.js +26 -26
  921. package/templates/package.json +3 -3
  922. package/templates/postcss.config.js +6 -6
  923. package/templates/src/app/components/AppLayout.tsx +55 -55
  924. package/templates/src/app/components/AuthGuard.tsx +82 -82
  925. package/templates/src/app/context/AuthContext.tsx +108 -108
  926. package/templates/src/features/assistant/data/mock.ts +75 -75
  927. package/templates/src/features/assistant/hooks/useAssistantConfig.ts +20 -20
  928. package/templates/src/features/auth/index.ts +4 -4
  929. package/templates/src/features/auth/ui/AuthPageShell.tsx +32 -32
  930. package/templates/src/features/auth/ui/ResetPasswordContent.tsx +179 -179
  931. package/templates/src/features/auth/ui/VerifyEmailContent.tsx +84 -84
  932. package/templates/src/features/home/data/mock.ts +35 -35
  933. package/templates/src/features/home/hooks/useFeatureCards.ts +20 -20
  934. package/templates/src/features/home/store/dashboardStore.ts +25 -25
  935. package/templates/src/features/home/ui/HomeContent.tsx +1 -1
  936. package/templates/src/features/template/index.ts +5 -5
  937. package/templates/src/features/template/ui/CrudTemplate.tsx +115 -115
  938. package/templates/src/features/template/ui/DashboardTemplate.tsx +110 -110
  939. package/templates/src/features/template/ui/FormTemplate.tsx +117 -117
  940. package/templates/src/features/template/ui/LoginTemplate.tsx +59 -59
  941. package/templates/src/features/template/ui/TemplateContent.tsx +1314 -1314
  942. package/templates/src/i18n.ts +124 -124
  943. package/templates/src/locales/en/common.json +21 -21
  944. package/templates/src/locales/en/components/activityCard.json +10 -10
  945. package/templates/src/locales/en/components/assistant.json +119 -119
  946. package/templates/src/locales/en/components/media.json +29 -29
  947. package/templates/src/locales/en/components/notificationCard.json +5 -5
  948. package/templates/src/locales/en/components/profileCard.json +8 -8
  949. package/templates/src/locales/en/components/projectCard.json +10 -10
  950. package/templates/src/locales/en/components/sidebar.json +14 -14
  951. package/templates/src/locales/en/components/stats.json +8 -8
  952. package/templates/src/locales/en/components/team.json +14 -14
  953. package/templates/src/locales/en/errors.json +9 -9
  954. package/templates/src/locales/en/languageSelector.json +7 -7
  955. package/templates/src/locales/en/nav.json +6 -6
  956. package/templates/src/locales/en/pages/crudTemplate.json +25 -25
  957. package/templates/src/locales/en/pages/dashboardTemplate.json +20 -20
  958. package/templates/src/locales/en/pages/forgotPassword.json +10 -10
  959. package/templates/src/locales/en/pages/formTemplate.json +16 -16
  960. package/templates/src/locales/en/pages/home.json +7 -7
  961. package/templates/src/locales/en/pages/login.json +15 -15
  962. package/templates/src/locales/en/pages/loginTemplate.json +9 -9
  963. package/templates/src/locales/en/pages/resetPassword.json +18 -18
  964. package/templates/src/locales/en/pages/templates.json +317 -317
  965. package/templates/src/locales/en/pages/verifyEmail.json +12 -12
  966. package/templates/src/locales/en/themeToggle.json +6 -6
  967. package/templates/src/locales/es/common.json +21 -21
  968. package/templates/src/locales/es/components/activityCard.json +10 -10
  969. package/templates/src/locales/es/components/assistant.json +119 -119
  970. package/templates/src/locales/es/components/media.json +29 -29
  971. package/templates/src/locales/es/components/notificationCard.json +5 -5
  972. package/templates/src/locales/es/components/profileCard.json +8 -8
  973. package/templates/src/locales/es/components/projectCard.json +10 -10
  974. package/templates/src/locales/es/components/sidebar.json +14 -14
  975. package/templates/src/locales/es/components/stats.json +8 -8
  976. package/templates/src/locales/es/components/team.json +14 -14
  977. package/templates/src/locales/es/errors.json +9 -9
  978. package/templates/src/locales/es/languageSelector.json +7 -7
  979. package/templates/src/locales/es/nav.json +6 -6
  980. package/templates/src/locales/es/pages/crudTemplate.json +25 -25
  981. package/templates/src/locales/es/pages/dashboardTemplate.json +20 -20
  982. package/templates/src/locales/es/pages/forgotPassword.json +10 -10
  983. package/templates/src/locales/es/pages/formTemplate.json +16 -16
  984. package/templates/src/locales/es/pages/home.json +7 -7
  985. package/templates/src/locales/es/pages/login.json +15 -15
  986. package/templates/src/locales/es/pages/loginTemplate.json +9 -9
  987. package/templates/src/locales/es/pages/resetPassword.json +18 -18
  988. package/templates/src/locales/es/pages/templates.json +317 -317
  989. package/templates/src/locales/es/pages/verifyEmail.json +12 -12
  990. package/templates/src/locales/es/themeToggle.json +6 -6
  991. package/templates/src/locales/pt-BR/common.json +21 -21
  992. package/templates/src/locales/pt-BR/components/activityCard.json +10 -10
  993. package/templates/src/locales/pt-BR/components/assistant.json +119 -119
  994. package/templates/src/locales/pt-BR/components/media.json +29 -29
  995. package/templates/src/locales/pt-BR/components/notificationCard.json +5 -5
  996. package/templates/src/locales/pt-BR/components/profileCard.json +8 -8
  997. package/templates/src/locales/pt-BR/components/projectCard.json +10 -10
  998. package/templates/src/locales/pt-BR/components/sidebar.json +14 -14
  999. package/templates/src/locales/pt-BR/components/stats.json +8 -8
  1000. package/templates/src/locales/pt-BR/components/team.json +14 -14
  1001. package/templates/src/locales/pt-BR/errors.json +9 -9
  1002. package/templates/src/locales/pt-BR/languageSelector.json +7 -7
  1003. package/templates/src/locales/pt-BR/nav.json +6 -6
  1004. package/templates/src/locales/pt-BR/pages/crudTemplate.json +25 -25
  1005. package/templates/src/locales/pt-BR/pages/dashboardTemplate.json +20 -20
  1006. package/templates/src/locales/pt-BR/pages/forgotPassword.json +10 -10
  1007. package/templates/src/locales/pt-BR/pages/formTemplate.json +16 -16
  1008. package/templates/src/locales/pt-BR/pages/home.json +7 -7
  1009. package/templates/src/locales/pt-BR/pages/login.json +15 -15
  1010. package/templates/src/locales/pt-BR/pages/loginTemplate.json +9 -9
  1011. package/templates/src/locales/pt-BR/pages/resetPassword.json +18 -18
  1012. package/templates/src/locales/pt-BR/pages/templates.json +317 -317
  1013. package/templates/src/locales/pt-BR/pages/verifyEmail.json +12 -12
  1014. package/templates/src/locales/pt-BR/themeToggle.json +6 -6
  1015. package/templates/src/main.tsx +11 -11
  1016. package/templates/src/pages/AssistantPage.tsx +464 -464
  1017. package/templates/src/pages/ForgotPasswordPage.tsx +6 -6
  1018. package/templates/src/pages/LoginPage.tsx +10 -10
  1019. package/templates/src/pages/ResetPasswordPage.tsx +6 -6
  1020. package/templates/src/pages/TemplatePage.tsx +28 -28
  1021. package/templates/src/pages/VerifyEmailPage.tsx +6 -6
  1022. package/templates/src/shared/config/navigation.ts +19 -19
  1023. package/templates/src/shared/error-boundary.tsx +154 -154
  1024. package/templates/src/shared/error-fallbacks.tsx +226 -226
  1025. package/templates/src/shared/lib/auth.ts +20 -20
  1026. package/templates/src/shared/types/auth.ts +3 -3
  1027. package/templates/src/styles/index.css +95 -95
  1028. package/templates/src/styles/xertica/tokens.css +240 -236
  1029. package/templates/tsconfig.json +25 -25
  1030. package/templates/tsconfig.node.json +12 -12
  1031. package/templates/vite-env.d.ts +1 -1
  1032. package/templates/vite.config.ts +1 -1
  1033. package/utils/color-utils.ts +72 -72
  1034. package/utils/demo-responses.test.ts +10 -10
  1035. package/utils/demo-responses.ts +151 -151
  1036. package/utils/gemini.test.ts +25 -25
  1037. package/utils/gemini.ts +155 -155
  1038. package/dist/ThemeContext-CpqYShLq.cjs +0 -324
  1039. package/dist/ThemeContext-Du2nE1PL.js +0 -325
  1040. package/dist/ThemeContext-GeEBTJ3q.cjs +0 -1621
  1041. package/dist/ThemeContext-JyLK9B1o.js +0 -1622
  1042. package/dist/XerticaProvider-CUYJZc32.js +0 -49
  1043. package/dist/XerticaProvider-qQUDop71.cjs +0 -48
  1044. package/dist/index-CkTUgOwX.js +0 -8
  1045. package/dist/sidebar-OTO_up7Z.js +0 -801
  1046. package/dist/{rich-text-editor-BmsjY03B.js → rich-text-editor-DgF8s7xW.js} +26 -26
  1047. package/dist/{rich-text-editor-GS2kpTAK.cjs → rich-text-editor-mWoaSCE4.cjs} +26 -26
@@ -1,586 +1,586 @@
1
- import type { Meta, StoryObj } from '@storybook/react';
2
- import { Sidebar, useSidebar } from './sidebar';
3
- import { useLayout } from '../../../contexts/LayoutContext';
4
- import { BrowserRouter } from 'react-router-dom';
5
- import {
6
- Home,
7
- Users,
8
- Settings,
9
- BarChart,
10
- Plus,
11
- Clock,
12
- FileEdit,
13
- ArrowRightLeft,
14
- PanelLeft,
15
- Menu,
16
- Trash2,
17
- Map,
18
- Archive,
19
- } from 'lucide-react';
20
- import React, { useState } from 'react';
21
- import { Badge } from '../../ui/badge';
22
- import { Button } from '../../ui/button';
23
- import { Progress } from '../../ui/progress';
24
-
25
- const meta: Meta<typeof Sidebar> = {
26
- title: 'Layout/Sidebar',
27
- component: Sidebar,
28
- decorators: [
29
- Story => (
30
- <BrowserRouter>
31
- <div className="flex h-screen w-full overflow-hidden bg-background">
32
- <Story />
33
- </div>
34
- </BrowserRouter>
35
- ),
36
- ],
37
- parameters: {
38
- layout: 'fullscreen',
39
- },
40
- };
41
-
42
- export default meta;
43
- type Story = StoryObj<typeof Sidebar>;
44
-
45
- export const Default: Story = {
46
- args: {
47
- variant: 'default',
48
- expanded: false,
49
- user: { email: 'admin@example.com' },
50
- onLogout: () => console.log('Logged out'),
51
- location: { pathname: '/home' },
52
- routes: [
53
- { path: '/home', label: 'Home', icon: Home },
54
- { path: '/dashboard', label: 'Dashboard', icon: Users },
55
- { path: '/settings', label: 'Settings', icon: Settings },
56
- ],
57
- footer: {
58
- showUser: true,
59
- showSettings: true,
60
- showLogout: true,
61
- },
62
- },
63
- render: args => {
64
- const { sidebarWidth: contextWidth } = useLayout();
65
- const [isExpanded, setIsExpanded] = useState(args.expanded);
66
-
67
- // In Storybook, we match the sidebar widths (280 expanded, 80 collapsed)
68
- const currentWidth = isExpanded ? 280 : 80;
69
-
70
- return (
71
- <div
72
- className="relative h-screen w-full border rounded-[var(--radius-lg)] bg-muted/20 overflow-hidden"
73
- style={{ transform: 'translateZ(0)' }}
74
- >
75
- <Sidebar
76
- {...args}
77
- expanded={isExpanded}
78
- onToggle={() => setIsExpanded(!isExpanded)}
79
- width={currentWidth}
80
- navigate={() => {}}
81
- />
82
- <div
83
- className="absolute inset-y-0 right-0 p-8 flex items-center justify-center transition-all duration-300"
84
- style={{ left: `${currentWidth}px` }}
85
- >
86
- <div className="text-center">
87
- <p className="text-muted-foreground">Traditional System Navigation</p>
88
- <p className="text-xs text-muted-foreground mt-2">Click on the menu icon to expand</p>
89
- </div>
90
- </div>
91
- </div>
92
- );
93
- },
94
- };
95
-
96
- export const DefaultWithGroups: Story = {
97
- args: {
98
- variant: 'default',
99
- expanded: false,
100
- user: { name: 'Admin', email: 'admin@example.com' },
101
- onLogout: () => console.log('Logged out'),
102
- location: { pathname: '/home' },
103
- navigationGroups: [
104
- {
105
- id: 'main',
106
- label: 'Principal',
107
- items: [
108
- { path: '/home', label: 'Início', icon: Home },
109
- {
110
- path: '/dashboard',
111
- label: 'Dashboard',
112
- icon: BarChart,
113
- children: [
114
- { path: '/dashboard/overview', label: 'Visão Geral', icon: BarChart },
115
- { path: '/dashboard/reports', label: 'Relatórios', icon: FileEdit },
116
- { path: '/dashboard/analytics', label: 'Analytics', icon: Map },
117
- ],
118
- },
119
- ],
120
- },
121
- {
122
- id: 'admin',
123
- label: 'Administração',
124
- items: [
125
- {
126
- path: '/users',
127
- label: 'Usuários',
128
- icon: Users,
129
- children: [
130
- { path: '/users/list', label: 'Lista de Usuários', icon: Users },
131
- { path: '/users/roles', label: 'Perfis de Acesso', icon: Settings },
132
- ],
133
- },
134
- { path: '/settings', label: 'Configurações', icon: Settings },
135
- ],
136
- },
137
- ],
138
- footer: {
139
- showUser: true,
140
- showSettings: false,
141
- showLogout: true,
142
- },
143
- },
144
- render: args => {
145
- const [isExpanded, setIsExpanded] = useState(args.expanded);
146
- const currentWidth = isExpanded ? 280 : 80;
147
-
148
- return (
149
- <div
150
- className="relative h-screen w-full border rounded-[var(--radius-lg)] bg-muted/20 overflow-hidden"
151
- style={{ transform: 'translateZ(0)' }}
152
- >
153
- <Sidebar
154
- {...args}
155
- expanded={isExpanded}
156
- onToggle={() => setIsExpanded(!isExpanded)}
157
- width={currentWidth}
158
- navigate={() => {}}
159
- />
160
- <div
161
- className="absolute inset-y-0 right-0 p-8 flex items-center justify-center transition-all duration-300"
162
- style={{ left: `${currentWidth}px` }}
163
- >
164
- <div className="text-center">
165
- <p className="text-muted-foreground">Navigation with Groups and Children</p>
166
- <p className="text-xs text-muted-foreground mt-2">
167
- Expand and click the arrow button on items to see sub-menus
168
- </p>
169
- </div>
170
- </div>
171
- </div>
172
- );
173
- },
174
- };
175
-
176
- export const Assistant: Story = {
177
- args: {
178
- variant: 'assistant',
179
- expanded: false,
180
- user: { email: 'admin@example.com' },
181
- onLogout: () => console.log('Logged out'),
182
- location: { pathname: '/assistant/refatoracao' },
183
- search: {
184
- show: true,
185
- placeholder: 'Buscar tópicos...',
186
- filter: {
187
- show: true,
188
- content: (
189
- <div className="p-2 space-y-2">
190
- <div className="text-xs font-semibold uppercase text-muted-foreground px-2 text-left">
191
- Filter by Status
192
- </div>
193
- <div className="flex flex-wrap gap-2 p-1">
194
- <Badge className="bg-sidebar-foreground/20 text-sidebar-foreground border-none cursor-pointer hover:bg-sidebar-foreground/30">
195
- Active
196
- </Badge>
197
- <Badge
198
- variant="outline"
199
- className="text-sidebar-foreground/70 border-sidebar-foreground/20 cursor-pointer hover:bg-sidebar-foreground/10"
200
- >
201
- Archived
202
- </Badge>
203
- <Badge
204
- variant="outline"
205
- className="text-sidebar-foreground/70 border-sidebar-foreground/20 cursor-pointer hover:bg-sidebar-foreground/10"
206
- >
207
- Pending
208
- </Badge>
209
- </div>
210
- </div>
211
- ),
212
- },
213
- },
214
- fixedArea: {
215
- show: true,
216
- icon: Plus,
217
- onClick: () => console.log('New Conversation clicked'),
218
- content: (
219
- <Button className="w-full bg-sidebar-primary hover:bg-sidebar-primary/90 text-sidebar-primary-foreground shadow-lg font-bold border-none transition-all duration-300 transform hover:scale-[1.02] active:scale-[0.98]">
220
- <Plus className="w-4 h-4 mr-2" />
221
- New Conversation
222
- </Button>
223
- ),
224
- },
225
- navigationGroups: [
226
- {
227
- id: 'recent',
228
- label: 'Recent',
229
- icon: Clock,
230
- items: [
231
- {
232
- path: '/assistant/refatoracao',
233
- label: 'Edit Sidebar',
234
- description: 'Active now',
235
- actions: [
236
- { label: 'Rename', icon: FileEdit, onClick: () => console.log('Open rename...') },
237
- {
238
- label: 'Move',
239
- icon: ArrowRightLeft,
240
- children: [
241
- {
242
- label: 'Active Projects',
243
- onClick: () => console.log('Moved to Active Projects'),
244
- },
245
- { label: 'Monitoring', onClick: () => console.log('Moved to Monitoring') },
246
- { label: 'Archive', onClick: () => console.log('Moved to Archive') },
247
- ],
248
- },
249
- {
250
- label: 'Clear',
251
- icon: Trash2,
252
- onClick: () => console.log('History Cleared!'),
253
- variant: 'destructive',
254
- },
255
- ],
256
- },
257
- ],
258
- },
259
- {
260
- id: 'projects',
261
- label: 'Project Monitoring',
262
- icon: Map,
263
- actions: [
264
- {
265
- label: 'New Category',
266
- icon: Plus,
267
- onClick: () => console.log('Create new category...'),
268
- },
269
- {
270
- label: 'Archive Group',
271
- icon: Archive,
272
- onClick: () => console.log('Archiving group...'),
273
- },
274
- ],
275
- items: [
276
- {
277
- path: '/assistant/br163',
278
- label: 'Panel Status',
279
- icon: () => <div className="w-2 h-2 rounded-full bg-yellow-500" />,
280
- description: (
281
- <div className="space-y-1.5 min-w-[160px]">
282
- <Progress value={67} className="h-1.5 bg-sidebar-foreground/10" />
283
- <div className="flex justify-between items-center text-[10px] text-sidebar-foreground/60">
284
- <span>Label</span>
285
- <span>67%</span>
286
- </div>
287
- </div>
288
- ),
289
- },
290
- ],
291
- },
292
- ],
293
- },
294
- render: args => {
295
- const [isExpanded, setIsExpanded] = useState(args.expanded);
296
- const currentWidth = isExpanded ? 280 : 80;
297
-
298
- return (
299
- <div
300
- className="relative h-screen w-full border rounded-[var(--radius-lg)] bg-muted/20 overflow-hidden"
301
- style={{ transform: 'translateZ(0)' }}
302
- >
303
- <Sidebar
304
- {...args}
305
- expanded={isExpanded}
306
- onToggle={() => setIsExpanded(!isExpanded)}
307
- width={currentWidth}
308
- navigate={() => {}}
309
- />
310
- <div
311
- className="absolute inset-y-0 right-0 p-8 flex items-center justify-center transition-all duration-300"
312
- style={{ left: `${currentWidth}px` }}
313
- >
314
- <div className="text-center">
315
- <p className="text-muted-foreground">Assistant Mode Content</p>
316
- <p className="text-xs text-muted-foreground mt-2">Click on the menu icon to expand</p>
317
- </div>
318
- </div>
319
- </div>
320
- );
321
- },
322
- };
323
-
324
- export const Collapsed: Story = {
325
- args: {
326
- ...Default.args,
327
- expanded: false,
328
- },
329
- render: args => {
330
- const [isExpanded, setIsExpanded] = useState(args.expanded);
331
- const currentWidth = isExpanded ? 280 : 80;
332
-
333
- return (
334
- <div
335
- className="relative h-screen w-full border rounded-[var(--radius-lg)] bg-muted/20 overflow-hidden"
336
- style={{ transform: 'translateZ(0)' }}
337
- >
338
- <Sidebar
339
- {...args}
340
- expanded={isExpanded}
341
- onToggle={() => setIsExpanded(!isExpanded)}
342
- width={currentWidth}
343
- navigate={() => {}}
344
- />
345
- <div
346
- className="absolute inset-y-0 right-0 p-8 flex items-center justify-center transition-all duration-300"
347
- style={{ left: `${currentWidth}px` }}
348
- >
349
- <div className="text-center">
350
- <p className="text-muted-foreground">Compact Navigation</p>
351
- <p className="text-xs text-muted-foreground mt-2">Click on the menu icon to expand</p>
352
- </div>
353
- </div>
354
- </div>
355
- );
356
- },
357
- };
358
- export const NoFooter: Story = {
359
- args: {
360
- ...Default.args,
361
- showFooter: false,
362
- },
363
- render: args => {
364
- const [isExpanded, setIsExpanded] = useState(args.expanded);
365
- const currentWidth = isExpanded ? 280 : 80;
366
-
367
- return (
368
- <div
369
- className="relative h-screen w-full border rounded-[var(--radius-lg)] bg-muted/20 overflow-hidden"
370
- style={{ transform: 'translateZ(0)' }}
371
- >
372
- <Sidebar
373
- {...args}
374
- expanded={isExpanded}
375
- onToggle={() => setIsExpanded(!isExpanded)}
376
- width={currentWidth}
377
- navigate={() => {}}
378
- />
379
- <div
380
- className="absolute inset-y-0 right-0 p-8 flex items-center justify-center transition-all duration-300"
381
- style={{ left: `${currentWidth}px` }}
382
- >
383
- <div className="text-center">
384
- <p className="text-muted-foreground">Sidebar without Footer</p>
385
- <p className="text-xs text-muted-foreground mt-2">Click on the menu icon to expand</p>
386
- </div>
387
- </div>
388
- </div>
389
- );
390
- },
391
- };
392
-
393
- export const Autonomous: Story = {
394
- args: {
395
- ...Default.args,
396
- expanded: undefined,
397
- onToggle: undefined,
398
- },
399
- render: args => {
400
- return (
401
- <div
402
- className="relative h-screen w-full border rounded-[var(--radius-lg)] bg-muted/20 overflow-hidden"
403
- style={{ transform: 'translateZ(0)' }}
404
- >
405
- <Sidebar {...args} />
406
- <div
407
- className="absolute inset-y-0 right-0 p-8 flex items-center justify-center transition-all duration-300"
408
- style={{ left: `80px` }}
409
- >
410
- <div className="text-center max-w-md">
411
- <p className="text-muted-foreground font-bold">Autonomous Sidebar</p>
412
- <p className="text-sm text-muted-foreground/80 mt-2">
413
- This instance is managing its own state internally. No `expanded` or `onToggle` props
414
- are passed.
415
- </p>
416
- <p className="text-xs text-muted-foreground mt-4">
417
- Note: Layout coordination (content padding) must be handled manually when using
418
- autonomous mode without LayoutProvider.
419
- </p>
420
- </div>
421
- </div>
422
- </div>
423
- );
424
- },
425
- };
426
-
427
- /**
428
- * Compound Component API — demonstrates using Sidebar.Root + sub-components
429
- * for full layout control. This is the recommended pattern for advanced
430
- * customization without forking the component.
431
- */
432
- export const CompoundComponentAPI: Story = {
433
- name: 'Compound Component API',
434
- render: () => {
435
- const [isExpanded, setIsExpanded] = React.useState(true);
436
- const currentWidth = isExpanded ? 280 : 80;
437
- const groups = [
438
- {
439
- id: 'main',
440
- label: 'Principal',
441
- items: [
442
- { path: '/home', label: 'Início', icon: Home },
443
- { path: '/dashboard', label: 'Dashboard', icon: BarChart },
444
- ],
445
- },
446
- {
447
- id: 'admin',
448
- label: 'Administração',
449
- items: [
450
- { path: '/users', label: 'Usuários', icon: Users },
451
- { path: '/settings', label: 'Configurações', icon: Settings },
452
- ],
453
- },
454
- ];
455
-
456
- return (
457
- <div
458
- className="relative h-screen w-full border rounded-[var(--radius-lg)] bg-muted/20 overflow-hidden"
459
- style={{ transform: 'translateZ(0)' }}
460
- >
461
- {/* Compound Component usage */}
462
- <Sidebar.Root
463
- expanded={isExpanded}
464
- onToggle={() => setIsExpanded(prev => !prev)}
465
- width={currentWidth}
466
- location={{ pathname: '/home' }}
467
- navigate={() => {}}
468
- >
469
- <Sidebar.Header />
470
- <Sidebar.Nav navigationGroups={groups} />
471
- <Sidebar.Footer
472
- user={{ name: 'Admin', email: 'admin@example.com' }}
473
- onLogout={() => console.log('logout')}
474
- showUser
475
- showSettings
476
- showLogout
477
- />
478
- </Sidebar.Root>
479
-
480
- <div
481
- className="absolute inset-y-0 right-0 p-8 flex items-center justify-center transition-all duration-300"
482
- style={{ left: `${currentWidth}px` }}
483
- >
484
- <div className="text-center max-w-md space-y-3">
485
- <p className="text-muted-foreground font-bold">Compound Component API</p>
486
- <p className="text-sm text-muted-foreground/80">
487
- Built with <code className="bg-muted px-1 rounded text-xs">&lt;Sidebar.Root&gt;</code>
488
- , <code className="bg-muted px-1 rounded text-xs">&lt;Sidebar.Header&gt;</code>,{' '}
489
- <code className="bg-muted px-1 rounded text-xs">&lt;Sidebar.Nav&gt;</code>, and{' '}
490
- <code className="bg-muted px-1 rounded text-xs">&lt;Sidebar.Footer&gt;</code>.
491
- </p>
492
- <p className="text-xs text-muted-foreground">
493
- Each sub-component reads shared state from{' '}
494
- <code className="bg-muted px-1 rounded text-xs">SidebarContext</code> via{' '}
495
- <code className="bg-muted px-1 rounded text-xs">Sidebar.Root</code>.
496
- </p>
497
- </div>
498
- </div>
499
- </div>
500
- );
501
- },
502
- };
503
-
504
- /**
505
- * Headless Hook — demonstrates using `useSidebar` directly for fully custom rendering.
506
- * The hook manages all state; the UI is entirely up to the consumer.
507
- */
508
- export const HeadlessHook: Story = {
509
- name: 'Headless Hook (useSidebar)',
510
- render: () => {
511
- const groups = [
512
- {
513
- id: 'main',
514
- label: 'Principal',
515
- items: [
516
- { path: '/home', label: 'Início', icon: Home },
517
- { path: '/dashboard', label: 'Dashboard', icon: BarChart },
518
- { path: '/users', label: 'Usuários', icon: Users },
519
- ],
520
- },
521
- ];
522
-
523
- const {
524
- expanded,
525
- toggleExpanded,
526
- navigationGroups: resolvedGroups,
527
- } = useSidebar({ defaultExpanded: true, navigationGroups: groups });
528
-
529
- const width = expanded ? 280 : 80;
530
-
531
- return (
532
- <div
533
- className="relative h-screen w-full border rounded-[var(--radius-lg)] bg-muted/20 overflow-hidden"
534
- style={{ transform: 'translateZ(0)' }}
535
- >
536
- {/* Fully custom sidebar built with useSidebar hook */}
537
- <div
538
- className="absolute inset-y-0 left-0 bg-sidebar text-sidebar-foreground flex flex-col transition-all duration-300 z-50"
539
- style={{ width: `${width}px` }}
540
- >
541
- <div className="p-4">
542
- <button
543
- onClick={toggleExpanded}
544
- className="w-full h-10 flex items-center justify-center rounded-md bg-sidebar-foreground/10 hover:bg-sidebar-foreground/20 text-sidebar-foreground transition-colors"
545
- aria-label={expanded ? 'Collapse' : 'Expand'}
546
- >
547
- {expanded ? <PanelLeft className="w-5 h-5" /> : <Menu className="w-5 h-5" />}
548
- </button>
549
- </div>
550
- <nav className="flex-1 px-3 space-y-1">
551
- {resolvedGroups
552
- .flatMap(g => g.items)
553
- .map(item => {
554
- const Icon = item.icon;
555
- return (
556
- <button
557
- key={item.path}
558
- className="w-full h-10 flex items-center gap-3 px-3 rounded-md text-sidebar-foreground/80 hover:bg-sidebar-foreground/15 hover:text-sidebar-foreground transition-colors"
559
- >
560
- {Icon && <Icon className="w-5 h-5 flex-shrink-0" />}
561
- {expanded && <span className="truncate text-sm">{item.label}</span>}
562
- </button>
563
- );
564
- })}
565
- </nav>
566
- </div>
567
-
568
- <div
569
- className="absolute inset-y-0 right-0 p-8 flex items-center justify-center transition-all duration-300"
570
- style={{ left: `${width}px` }}
571
- >
572
- <div className="text-center max-w-md space-y-3">
573
- <p className="text-muted-foreground font-bold">Headless Hook</p>
574
- <p className="text-sm text-muted-foreground/80">
575
- State managed by <code className="bg-muted px-1 rounded text-xs">useSidebar()</code>.
576
- The entire UI is custom — no Sidebar component used.
577
- </p>
578
- <p className="text-xs text-muted-foreground">
579
- Sidebar is currently: <strong>{expanded ? 'Expanded' : 'Collapsed'}</strong>
580
- </p>
581
- </div>
582
- </div>
583
- </div>
584
- );
585
- },
586
- };
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Sidebar, useSidebar } from './sidebar';
3
+ import { useLayout } from '../../../contexts/LayoutContext';
4
+ import { BrowserRouter } from 'react-router-dom';
5
+ import {
6
+ Home,
7
+ Users,
8
+ Settings,
9
+ BarChart,
10
+ Plus,
11
+ Clock,
12
+ FileEdit,
13
+ ArrowRightLeft,
14
+ PanelLeft,
15
+ Menu,
16
+ Trash2,
17
+ Map,
18
+ Archive,
19
+ } from 'lucide-react';
20
+ import React, { useState } from 'react';
21
+ import { Badge } from '../../ui/badge';
22
+ import { Button } from '../../ui/button';
23
+ import { Progress } from '../../ui/progress';
24
+
25
+ const meta: Meta<typeof Sidebar> = {
26
+ title: 'Layout/Sidebar',
27
+ component: Sidebar,
28
+ decorators: [
29
+ Story => (
30
+ <BrowserRouter>
31
+ <div className="flex h-screen w-full overflow-hidden bg-background">
32
+ <Story />
33
+ </div>
34
+ </BrowserRouter>
35
+ ),
36
+ ],
37
+ parameters: {
38
+ layout: 'fullscreen',
39
+ },
40
+ };
41
+
42
+ export default meta;
43
+ type Story = StoryObj<typeof Sidebar>;
44
+
45
+ export const Default: Story = {
46
+ args: {
47
+ variant: 'default',
48
+ expanded: false,
49
+ user: { email: 'admin@example.com' },
50
+ onLogout: () => console.log('Logged out'),
51
+ location: { pathname: '/home' },
52
+ routes: [
53
+ { path: '/home', label: 'Home', icon: Home },
54
+ { path: '/dashboard', label: 'Dashboard', icon: Users },
55
+ { path: '/settings', label: 'Settings', icon: Settings },
56
+ ],
57
+ footer: {
58
+ showUser: true,
59
+ showSettings: true,
60
+ showLogout: true,
61
+ },
62
+ },
63
+ render: args => {
64
+ const { sidebarWidth: contextWidth } = useLayout();
65
+ const [isExpanded, setIsExpanded] = useState(args.expanded);
66
+
67
+ // In Storybook, we match the sidebar widths (280 expanded, 80 collapsed)
68
+ const currentWidth = isExpanded ? 280 : 80;
69
+
70
+ return (
71
+ <div
72
+ className="relative h-screen w-full border rounded-[var(--radius-lg)] bg-muted/20 overflow-hidden"
73
+ style={{ transform: 'translateZ(0)' }}
74
+ >
75
+ <Sidebar
76
+ {...args}
77
+ expanded={isExpanded}
78
+ onToggle={() => setIsExpanded(!isExpanded)}
79
+ width={currentWidth}
80
+ navigate={() => {}}
81
+ />
82
+ <div
83
+ className="absolute inset-y-0 right-0 p-8 flex items-center justify-center transition-all duration-300"
84
+ style={{ left: `${currentWidth}px` }}
85
+ >
86
+ <div className="text-center">
87
+ <p className="text-muted-foreground">Traditional System Navigation</p>
88
+ <p className="text-xs text-muted-foreground mt-2">Click on the menu icon to expand</p>
89
+ </div>
90
+ </div>
91
+ </div>
92
+ );
93
+ },
94
+ };
95
+
96
+ export const DefaultWithGroups: Story = {
97
+ args: {
98
+ variant: 'default',
99
+ expanded: false,
100
+ user: { name: 'Admin', email: 'admin@example.com' },
101
+ onLogout: () => console.log('Logged out'),
102
+ location: { pathname: '/home' },
103
+ navigationGroups: [
104
+ {
105
+ id: 'main',
106
+ label: 'Principal',
107
+ items: [
108
+ { path: '/home', label: 'Início', icon: Home },
109
+ {
110
+ path: '/dashboard',
111
+ label: 'Dashboard',
112
+ icon: BarChart,
113
+ children: [
114
+ { path: '/dashboard/overview', label: 'Visão Geral', icon: BarChart },
115
+ { path: '/dashboard/reports', label: 'Relatórios', icon: FileEdit },
116
+ { path: '/dashboard/analytics', label: 'Analytics', icon: Map },
117
+ ],
118
+ },
119
+ ],
120
+ },
121
+ {
122
+ id: 'admin',
123
+ label: 'Administração',
124
+ items: [
125
+ {
126
+ path: '/users',
127
+ label: 'Usuários',
128
+ icon: Users,
129
+ children: [
130
+ { path: '/users/list', label: 'Lista de Usuários', icon: Users },
131
+ { path: '/users/roles', label: 'Perfis de Acesso', icon: Settings },
132
+ ],
133
+ },
134
+ { path: '/settings', label: 'Configurações', icon: Settings },
135
+ ],
136
+ },
137
+ ],
138
+ footer: {
139
+ showUser: true,
140
+ showSettings: false,
141
+ showLogout: true,
142
+ },
143
+ },
144
+ render: args => {
145
+ const [isExpanded, setIsExpanded] = useState(args.expanded);
146
+ const currentWidth = isExpanded ? 280 : 80;
147
+
148
+ return (
149
+ <div
150
+ className="relative h-screen w-full border rounded-[var(--radius-lg)] bg-muted/20 overflow-hidden"
151
+ style={{ transform: 'translateZ(0)' }}
152
+ >
153
+ <Sidebar
154
+ {...args}
155
+ expanded={isExpanded}
156
+ onToggle={() => setIsExpanded(!isExpanded)}
157
+ width={currentWidth}
158
+ navigate={() => {}}
159
+ />
160
+ <div
161
+ className="absolute inset-y-0 right-0 p-8 flex items-center justify-center transition-all duration-300"
162
+ style={{ left: `${currentWidth}px` }}
163
+ >
164
+ <div className="text-center">
165
+ <p className="text-muted-foreground">Navigation with Groups and Children</p>
166
+ <p className="text-xs text-muted-foreground mt-2">
167
+ Expand and click the arrow button on items to see sub-menus
168
+ </p>
169
+ </div>
170
+ </div>
171
+ </div>
172
+ );
173
+ },
174
+ };
175
+
176
+ export const Assistant: Story = {
177
+ args: {
178
+ variant: 'assistant',
179
+ expanded: false,
180
+ user: { email: 'admin@example.com' },
181
+ onLogout: () => console.log('Logged out'),
182
+ location: { pathname: '/assistant/refatoracao' },
183
+ search: {
184
+ show: true,
185
+ placeholder: 'Buscar tópicos...',
186
+ filter: {
187
+ show: true,
188
+ content: (
189
+ <div className="p-2 space-y-2">
190
+ <div className="text-xs font-semibold uppercase text-muted-foreground px-2 text-left">
191
+ Filter by Status
192
+ </div>
193
+ <div className="flex flex-wrap gap-2 p-1">
194
+ <Badge className="bg-sidebar-foreground/20 text-sidebar-foreground border-none cursor-pointer hover:bg-sidebar-foreground/30">
195
+ Active
196
+ </Badge>
197
+ <Badge
198
+ variant="outline"
199
+ className="text-sidebar-foreground/70 border-sidebar-foreground/20 cursor-pointer hover:bg-sidebar-foreground/10"
200
+ >
201
+ Archived
202
+ </Badge>
203
+ <Badge
204
+ variant="outline"
205
+ className="text-sidebar-foreground/70 border-sidebar-foreground/20 cursor-pointer hover:bg-sidebar-foreground/10"
206
+ >
207
+ Pending
208
+ </Badge>
209
+ </div>
210
+ </div>
211
+ ),
212
+ },
213
+ },
214
+ fixedArea: {
215
+ show: true,
216
+ icon: Plus,
217
+ onClick: () => console.log('New Conversation clicked'),
218
+ content: (
219
+ <Button className="w-full bg-sidebar-primary hover:bg-sidebar-primary/90 text-sidebar-primary-foreground shadow-lg font-bold border-none transition-all duration-300 transform hover:scale-[1.02] active:scale-[0.98]">
220
+ <Plus className="w-4 h-4 mr-2" />
221
+ New Conversation
222
+ </Button>
223
+ ),
224
+ },
225
+ navigationGroups: [
226
+ {
227
+ id: 'recent',
228
+ label: 'Recent',
229
+ icon: Clock,
230
+ items: [
231
+ {
232
+ path: '/assistant/refatoracao',
233
+ label: 'Edit Sidebar',
234
+ description: 'Active now',
235
+ actions: [
236
+ { label: 'Rename', icon: FileEdit, onClick: () => console.log('Open rename...') },
237
+ {
238
+ label: 'Move',
239
+ icon: ArrowRightLeft,
240
+ children: [
241
+ {
242
+ label: 'Active Projects',
243
+ onClick: () => console.log('Moved to Active Projects'),
244
+ },
245
+ { label: 'Monitoring', onClick: () => console.log('Moved to Monitoring') },
246
+ { label: 'Archive', onClick: () => console.log('Moved to Archive') },
247
+ ],
248
+ },
249
+ {
250
+ label: 'Clear',
251
+ icon: Trash2,
252
+ onClick: () => console.log('History Cleared!'),
253
+ variant: 'destructive',
254
+ },
255
+ ],
256
+ },
257
+ ],
258
+ },
259
+ {
260
+ id: 'projects',
261
+ label: 'Project Monitoring',
262
+ icon: Map,
263
+ actions: [
264
+ {
265
+ label: 'New Category',
266
+ icon: Plus,
267
+ onClick: () => console.log('Create new category...'),
268
+ },
269
+ {
270
+ label: 'Archive Group',
271
+ icon: Archive,
272
+ onClick: () => console.log('Archiving group...'),
273
+ },
274
+ ],
275
+ items: [
276
+ {
277
+ path: '/assistant/br163',
278
+ label: 'Panel Status',
279
+ icon: () => <div className="w-2 h-2 rounded-full bg-yellow-500" />,
280
+ description: (
281
+ <div className="space-y-1.5 min-w-[160px]">
282
+ <Progress value={67} className="h-1.5 bg-sidebar-foreground/10" />
283
+ <div className="flex justify-between items-center text-[10px] text-sidebar-foreground/60">
284
+ <span>Label</span>
285
+ <span>67%</span>
286
+ </div>
287
+ </div>
288
+ ),
289
+ },
290
+ ],
291
+ },
292
+ ],
293
+ },
294
+ render: args => {
295
+ const [isExpanded, setIsExpanded] = useState(args.expanded);
296
+ const currentWidth = isExpanded ? 280 : 80;
297
+
298
+ return (
299
+ <div
300
+ className="relative h-screen w-full border rounded-[var(--radius-lg)] bg-muted/20 overflow-hidden"
301
+ style={{ transform: 'translateZ(0)' }}
302
+ >
303
+ <Sidebar
304
+ {...args}
305
+ expanded={isExpanded}
306
+ onToggle={() => setIsExpanded(!isExpanded)}
307
+ width={currentWidth}
308
+ navigate={() => {}}
309
+ />
310
+ <div
311
+ className="absolute inset-y-0 right-0 p-8 flex items-center justify-center transition-all duration-300"
312
+ style={{ left: `${currentWidth}px` }}
313
+ >
314
+ <div className="text-center">
315
+ <p className="text-muted-foreground">Assistant Mode Content</p>
316
+ <p className="text-xs text-muted-foreground mt-2">Click on the menu icon to expand</p>
317
+ </div>
318
+ </div>
319
+ </div>
320
+ );
321
+ },
322
+ };
323
+
324
+ export const Collapsed: Story = {
325
+ args: {
326
+ ...Default.args,
327
+ expanded: false,
328
+ },
329
+ render: args => {
330
+ const [isExpanded, setIsExpanded] = useState(args.expanded);
331
+ const currentWidth = isExpanded ? 280 : 80;
332
+
333
+ return (
334
+ <div
335
+ className="relative h-screen w-full border rounded-[var(--radius-lg)] bg-muted/20 overflow-hidden"
336
+ style={{ transform: 'translateZ(0)' }}
337
+ >
338
+ <Sidebar
339
+ {...args}
340
+ expanded={isExpanded}
341
+ onToggle={() => setIsExpanded(!isExpanded)}
342
+ width={currentWidth}
343
+ navigate={() => {}}
344
+ />
345
+ <div
346
+ className="absolute inset-y-0 right-0 p-8 flex items-center justify-center transition-all duration-300"
347
+ style={{ left: `${currentWidth}px` }}
348
+ >
349
+ <div className="text-center">
350
+ <p className="text-muted-foreground">Compact Navigation</p>
351
+ <p className="text-xs text-muted-foreground mt-2">Click on the menu icon to expand</p>
352
+ </div>
353
+ </div>
354
+ </div>
355
+ );
356
+ },
357
+ };
358
+ export const NoFooter: Story = {
359
+ args: {
360
+ ...Default.args,
361
+ showFooter: false,
362
+ },
363
+ render: args => {
364
+ const [isExpanded, setIsExpanded] = useState(args.expanded);
365
+ const currentWidth = isExpanded ? 280 : 80;
366
+
367
+ return (
368
+ <div
369
+ className="relative h-screen w-full border rounded-[var(--radius-lg)] bg-muted/20 overflow-hidden"
370
+ style={{ transform: 'translateZ(0)' }}
371
+ >
372
+ <Sidebar
373
+ {...args}
374
+ expanded={isExpanded}
375
+ onToggle={() => setIsExpanded(!isExpanded)}
376
+ width={currentWidth}
377
+ navigate={() => {}}
378
+ />
379
+ <div
380
+ className="absolute inset-y-0 right-0 p-8 flex items-center justify-center transition-all duration-300"
381
+ style={{ left: `${currentWidth}px` }}
382
+ >
383
+ <div className="text-center">
384
+ <p className="text-muted-foreground">Sidebar without Footer</p>
385
+ <p className="text-xs text-muted-foreground mt-2">Click on the menu icon to expand</p>
386
+ </div>
387
+ </div>
388
+ </div>
389
+ );
390
+ },
391
+ };
392
+
393
+ export const Autonomous: Story = {
394
+ args: {
395
+ ...Default.args,
396
+ expanded: undefined,
397
+ onToggle: undefined,
398
+ },
399
+ render: args => {
400
+ return (
401
+ <div
402
+ className="relative h-screen w-full border rounded-[var(--radius-lg)] bg-muted/20 overflow-hidden"
403
+ style={{ transform: 'translateZ(0)' }}
404
+ >
405
+ <Sidebar {...args} />
406
+ <div
407
+ className="absolute inset-y-0 right-0 p-8 flex items-center justify-center transition-all duration-300"
408
+ style={{ left: `80px` }}
409
+ >
410
+ <div className="text-center max-w-md">
411
+ <p className="text-muted-foreground font-bold">Autonomous Sidebar</p>
412
+ <p className="text-sm text-muted-foreground/80 mt-2">
413
+ This instance is managing its own state internally. No `expanded` or `onToggle` props
414
+ are passed.
415
+ </p>
416
+ <p className="text-xs text-muted-foreground mt-4">
417
+ Note: Layout coordination (content padding) must be handled manually when using
418
+ autonomous mode without LayoutProvider.
419
+ </p>
420
+ </div>
421
+ </div>
422
+ </div>
423
+ );
424
+ },
425
+ };
426
+
427
+ /**
428
+ * Compound Component API — demonstrates using Sidebar.Root + sub-components
429
+ * for full layout control. This is the recommended pattern for advanced
430
+ * customization without forking the component.
431
+ */
432
+ export const CompoundComponentAPI: Story = {
433
+ name: 'Compound Component API',
434
+ render: () => {
435
+ const [isExpanded, setIsExpanded] = React.useState(true);
436
+ const currentWidth = isExpanded ? 280 : 80;
437
+ const groups = [
438
+ {
439
+ id: 'main',
440
+ label: 'Principal',
441
+ items: [
442
+ { path: '/home', label: 'Início', icon: Home },
443
+ { path: '/dashboard', label: 'Dashboard', icon: BarChart },
444
+ ],
445
+ },
446
+ {
447
+ id: 'admin',
448
+ label: 'Administração',
449
+ items: [
450
+ { path: '/users', label: 'Usuários', icon: Users },
451
+ { path: '/settings', label: 'Configurações', icon: Settings },
452
+ ],
453
+ },
454
+ ];
455
+
456
+ return (
457
+ <div
458
+ className="relative h-screen w-full border rounded-[var(--radius-lg)] bg-muted/20 overflow-hidden"
459
+ style={{ transform: 'translateZ(0)' }}
460
+ >
461
+ {/* Compound Component usage */}
462
+ <Sidebar.Root
463
+ expanded={isExpanded}
464
+ onToggle={() => setIsExpanded(prev => !prev)}
465
+ width={currentWidth}
466
+ location={{ pathname: '/home' }}
467
+ navigate={() => {}}
468
+ >
469
+ <Sidebar.Header />
470
+ <Sidebar.Nav navigationGroups={groups} />
471
+ <Sidebar.Footer
472
+ user={{ name: 'Admin', email: 'admin@example.com' }}
473
+ onLogout={() => console.log('logout')}
474
+ showUser
475
+ showSettings
476
+ showLogout
477
+ />
478
+ </Sidebar.Root>
479
+
480
+ <div
481
+ className="absolute inset-y-0 right-0 p-8 flex items-center justify-center transition-all duration-300"
482
+ style={{ left: `${currentWidth}px` }}
483
+ >
484
+ <div className="text-center max-w-md space-y-3">
485
+ <p className="text-muted-foreground font-bold">Compound Component API</p>
486
+ <p className="text-sm text-muted-foreground/80">
487
+ Built with <code className="bg-muted px-1 rounded text-xs">&lt;Sidebar.Root&gt;</code>
488
+ , <code className="bg-muted px-1 rounded text-xs">&lt;Sidebar.Header&gt;</code>,{' '}
489
+ <code className="bg-muted px-1 rounded text-xs">&lt;Sidebar.Nav&gt;</code>, and{' '}
490
+ <code className="bg-muted px-1 rounded text-xs">&lt;Sidebar.Footer&gt;</code>.
491
+ </p>
492
+ <p className="text-xs text-muted-foreground">
493
+ Each sub-component reads shared state from{' '}
494
+ <code className="bg-muted px-1 rounded text-xs">SidebarContext</code> via{' '}
495
+ <code className="bg-muted px-1 rounded text-xs">Sidebar.Root</code>.
496
+ </p>
497
+ </div>
498
+ </div>
499
+ </div>
500
+ );
501
+ },
502
+ };
503
+
504
+ /**
505
+ * Headless Hook — demonstrates using `useSidebar` directly for fully custom rendering.
506
+ * The hook manages all state; the UI is entirely up to the consumer.
507
+ */
508
+ export const HeadlessHook: Story = {
509
+ name: 'Headless Hook (useSidebar)',
510
+ render: () => {
511
+ const groups = [
512
+ {
513
+ id: 'main',
514
+ label: 'Principal',
515
+ items: [
516
+ { path: '/home', label: 'Início', icon: Home },
517
+ { path: '/dashboard', label: 'Dashboard', icon: BarChart },
518
+ { path: '/users', label: 'Usuários', icon: Users },
519
+ ],
520
+ },
521
+ ];
522
+
523
+ const {
524
+ expanded,
525
+ toggleExpanded,
526
+ navigationGroups: resolvedGroups,
527
+ } = useSidebar({ defaultExpanded: true, navigationGroups: groups });
528
+
529
+ const width = expanded ? 280 : 80;
530
+
531
+ return (
532
+ <div
533
+ className="relative h-screen w-full border rounded-[var(--radius-lg)] bg-muted/20 overflow-hidden"
534
+ style={{ transform: 'translateZ(0)' }}
535
+ >
536
+ {/* Fully custom sidebar built with useSidebar hook */}
537
+ <div
538
+ className="absolute inset-y-0 left-0 bg-sidebar text-sidebar-foreground flex flex-col transition-all duration-300 z-50"
539
+ style={{ width: `${width}px` }}
540
+ >
541
+ <div className="p-4">
542
+ <button
543
+ onClick={toggleExpanded}
544
+ className="w-full h-10 flex items-center justify-center rounded-md bg-sidebar-foreground/10 hover:bg-sidebar-foreground/20 text-sidebar-foreground transition-colors"
545
+ aria-label={expanded ? 'Collapse' : 'Expand'}
546
+ >
547
+ {expanded ? <PanelLeft className="w-5 h-5" /> : <Menu className="w-5 h-5" />}
548
+ </button>
549
+ </div>
550
+ <nav className="flex-1 px-3 space-y-1">
551
+ {resolvedGroups
552
+ .flatMap(g => g.items)
553
+ .map(item => {
554
+ const Icon = item.icon;
555
+ return (
556
+ <button
557
+ key={item.path}
558
+ className="w-full h-10 flex items-center gap-3 px-3 rounded-md text-sidebar-foreground/80 hover:bg-sidebar-foreground/15 hover:text-sidebar-foreground transition-colors"
559
+ >
560
+ {Icon && <Icon className="w-5 h-5 flex-shrink-0" />}
561
+ {expanded && <span className="truncate text-sm">{item.label}</span>}
562
+ </button>
563
+ );
564
+ })}
565
+ </nav>
566
+ </div>
567
+
568
+ <div
569
+ className="absolute inset-y-0 right-0 p-8 flex items-center justify-center transition-all duration-300"
570
+ style={{ left: `${width}px` }}
571
+ >
572
+ <div className="text-center max-w-md space-y-3">
573
+ <p className="text-muted-foreground font-bold">Headless Hook</p>
574
+ <p className="text-sm text-muted-foreground/80">
575
+ State managed by <code className="bg-muted px-1 rounded text-xs">useSidebar()</code>.
576
+ The entire UI is custom — no Sidebar component used.
577
+ </p>
578
+ <p className="text-xs text-muted-foreground">
579
+ Sidebar is currently: <strong>{expanded ? 'Expanded' : 'Collapsed'}</strong>
580
+ </p>
581
+ </div>
582
+ </div>
583
+ </div>
584
+ );
585
+ },
586
+ };