@salesmind-ai/design-system 0.6.0 → 0.7.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 (257) hide show
  1. package/README.md +2 -0
  2. package/dist/Anton-Regular-MLEXVTB2.woff2 +0 -0
  3. package/dist/admin/index.cjs +5 -61
  4. package/dist/admin/index.css +0 -3918
  5. package/dist/admin/index.css.map +1 -1
  6. package/dist/admin/index.d.cts +1 -422
  7. package/dist/admin/index.d.ts +1 -422
  8. package/dist/admin/index.js +1 -5
  9. package/dist/blog/index.cjs +13 -34
  10. package/dist/blog/index.css +0 -579
  11. package/dist/blog/index.css.map +1 -1
  12. package/dist/blog/index.d.cts +1 -54
  13. package/dist/blog/index.d.ts +1 -54
  14. package/dist/blog/index.js +5 -6
  15. package/dist/charts/index.cjs +0 -46
  16. package/dist/charts/index.d.cts +1 -452
  17. package/dist/charts/index.d.ts +1 -452
  18. package/dist/charts/index.js +1 -3
  19. package/dist/{chunk-HDVAMYSG.js → chunk-27Y5ESMM.js} +7 -2
  20. package/dist/chunk-27Y5ESMM.js.map +1 -0
  21. package/dist/{chunk-YTYDQBVY.cjs → chunk-2VVRZBUR.cjs} +4 -4
  22. package/dist/{chunk-GQELL2MF.cjs → chunk-3NS6X2R4.cjs} +20 -203
  23. package/dist/chunk-3NS6X2R4.cjs.map +1 -0
  24. package/dist/{chunk-XEX2AEZK.cjs → chunk-65DTHLVX.cjs} +66 -186
  25. package/dist/chunk-65DTHLVX.cjs.map +1 -0
  26. package/dist/{chunk-QALDZ7WQ.js → chunk-6BUS7RMS.js} +21 -198
  27. package/dist/chunk-6BUS7RMS.js.map +1 -0
  28. package/dist/{chunk-BJZ2DKS5.cjs → chunk-6QIQCUYC.cjs} +11 -10
  29. package/dist/chunk-6QIQCUYC.cjs.map +1 -0
  30. package/dist/{chunk-H2Y6BSTL.cjs → chunk-7EUR3AKV.cjs} +1 -1
  31. package/dist/chunk-7EUR3AKV.cjs.map +1 -0
  32. package/dist/{chunk-VFJZQQZU.js → chunk-AMNY5TS3.js} +11 -10
  33. package/dist/chunk-AMNY5TS3.js.map +1 -0
  34. package/dist/{chunk-YJ6C3EKW.js → chunk-CLXLQCNQ.js} +52 -168
  35. package/dist/chunk-CLXLQCNQ.js.map +1 -0
  36. package/dist/{chunk-H2KQ3WSH.cjs → chunk-CVLD5RQK.cjs} +12 -14
  37. package/dist/chunk-CVLD5RQK.cjs.map +1 -0
  38. package/dist/chunk-EPD4ZEPY.cjs +344 -0
  39. package/dist/chunk-EPD4ZEPY.cjs.map +1 -0
  40. package/dist/chunk-FXYOSA4E.cjs +118 -0
  41. package/dist/chunk-FXYOSA4E.cjs.map +1 -0
  42. package/dist/{chunk-ECXBTUH6.cjs → chunk-GPHQGLR5.cjs} +27 -204
  43. package/dist/chunk-GPHQGLR5.cjs.map +1 -0
  44. package/dist/{chunk-Y26OHHMX.js → chunk-HHQ6J7B6.js} +513 -888
  45. package/dist/chunk-HHQ6J7B6.js.map +1 -0
  46. package/dist/chunk-JPUJWI7F.cjs +73 -0
  47. package/dist/chunk-JPUJWI7F.cjs.map +1 -0
  48. package/dist/{chunk-6UNG76Y2.js → chunk-K526GN7P.js} +2 -2
  49. package/dist/{chunk-SICKWUWB.js → chunk-KJHPOB3J.js} +1 -1
  50. package/dist/chunk-KJHPOB3J.js.map +1 -0
  51. package/dist/chunk-KXVFFEGD.js +60 -0
  52. package/dist/chunk-KXVFFEGD.js.map +1 -0
  53. package/dist/chunk-LQB7QLD3.js +288 -0
  54. package/dist/chunk-LQB7QLD3.js.map +1 -0
  55. package/dist/chunk-LUD52ZJF.cjs +726 -0
  56. package/dist/chunk-LUD52ZJF.cjs.map +1 -0
  57. package/dist/{chunk-7UZ5DETZ.js → chunk-MBAG654R.js} +4 -216
  58. package/dist/chunk-MBAG654R.js.map +1 -0
  59. package/dist/chunk-OMP6FAZ6.cjs +183 -0
  60. package/dist/chunk-OMP6FAZ6.cjs.map +1 -0
  61. package/dist/{chunk-WYH4TKS5.js → chunk-PBYRTNQ5.js} +6 -8
  62. package/dist/chunk-PBYRTNQ5.js.map +1 -0
  63. package/dist/chunk-PYREXCZK.js +679 -0
  64. package/dist/chunk-PYREXCZK.js.map +1 -0
  65. package/dist/{chunk-6D22TFLA.cjs → chunk-R3ZECV5P.cjs} +9 -4
  66. package/dist/chunk-R3ZECV5P.cjs.map +1 -0
  67. package/dist/{chunk-P5BOFE5A.js → chunk-RSLA2FJN.js} +28 -183
  68. package/dist/chunk-RSLA2FJN.js.map +1 -0
  69. package/dist/chunk-S46SKHMD.js +173 -0
  70. package/dist/chunk-S46SKHMD.js.map +1 -0
  71. package/dist/chunk-SFXTB7JL.js +190 -0
  72. package/dist/chunk-SFXTB7JL.js.map +1 -0
  73. package/dist/chunk-SGYXYMKZ.cjs +214 -0
  74. package/dist/chunk-SGYXYMKZ.cjs.map +1 -0
  75. package/dist/chunk-UGKYP6F3.cjs +296 -0
  76. package/dist/chunk-UGKYP6F3.cjs.map +1 -0
  77. package/dist/chunk-WB6XDNU7.js +115 -0
  78. package/dist/chunk-WB6XDNU7.js.map +1 -0
  79. package/dist/{chunk-LTPTW2US.cjs → chunk-WE4QIIVN.cjs} +592 -974
  80. package/dist/chunk-WE4QIIVN.cjs.map +1 -0
  81. package/dist/core/index.cjs +144 -626
  82. package/dist/core/index.css +178 -3567
  83. package/dist/core/index.css.map +1 -1
  84. package/dist/core/index.d.cts +940 -902
  85. package/dist/core/index.d.ts +940 -902
  86. package/dist/core/index.js +6 -12
  87. package/dist/i18n/index.cjs +54 -49
  88. package/dist/i18n/index.d.cts +46 -11
  89. package/dist/i18n/index.d.ts +46 -11
  90. package/dist/i18n/index.js +2 -1
  91. package/dist/index-BJ8rBqrO.d.cts +1100 -0
  92. package/dist/index-BxMqCbqE.d.ts +1100 -0
  93. package/dist/index.cjs +507 -1001
  94. package/dist/index.cjs.map +1 -1
  95. package/dist/index.css +6057 -16713
  96. package/dist/index.css.map +1 -1
  97. package/dist/index.d.cts +306 -21
  98. package/dist/index.d.ts +306 -21
  99. package/dist/index.js +274 -39
  100. package/dist/index.js.map +1 -1
  101. package/dist/marketing/index.cjs +33 -76
  102. package/dist/marketing/index.css +1896 -3234
  103. package/dist/marketing/index.css.map +1 -1
  104. package/dist/marketing/index.d.cts +3 -1351
  105. package/dist/marketing/index.d.ts +3 -1351
  106. package/dist/marketing/index.js +5 -8
  107. package/dist/motion/index.cjs +3 -20
  108. package/dist/motion/index.css +0 -580
  109. package/dist/motion/index.css.map +1 -1
  110. package/dist/motion/index.d.cts +1 -37
  111. package/dist/motion/index.d.ts +1 -37
  112. package/dist/motion/index.js +1 -2
  113. package/dist/nav/index.cjs +10 -35
  114. package/dist/nav/index.css +28 -580
  115. package/dist/nav/index.css.map +1 -1
  116. package/dist/nav/index.d.cts +2 -60
  117. package/dist/nav/index.d.ts +2 -60
  118. package/dist/nav/index.js +1 -2
  119. package/dist/report/index.cjs +1166 -175
  120. package/dist/report/index.cjs.map +1 -1
  121. package/dist/report/index.d.cts +208 -5
  122. package/dist/report/index.d.ts +208 -5
  123. package/dist/report/index.js +1141 -3
  124. package/dist/report/index.js.map +1 -1
  125. package/dist/sections/index.cjs +8 -10
  126. package/dist/sections/index.cjs.map +1 -1
  127. package/dist/sections/index.css +0 -206
  128. package/dist/sections/index.css.map +1 -1
  129. package/dist/sections/index.js +2 -4
  130. package/dist/sections/index.js.map +1 -1
  131. package/dist/social-media/index.cjs +4 -0
  132. package/dist/social-media/index.cjs.map +1 -0
  133. package/dist/social-media/index.d.cts +2 -0
  134. package/dist/social-media/index.d.ts +2 -0
  135. package/dist/social-media/index.js +3 -0
  136. package/dist/social-media/index.js.map +1 -0
  137. package/dist/social-proof/index.cjs +4 -36
  138. package/dist/social-proof/index.css +3 -1106
  139. package/dist/social-proof/index.css.map +1 -1
  140. package/dist/social-proof/index.d.cts +26 -171
  141. package/dist/social-proof/index.d.ts +26 -171
  142. package/dist/social-proof/index.js +1 -5
  143. package/dist/styles/styles.css +657 -2990
  144. package/dist/theme/index.cjs +12 -16
  145. package/dist/theme/index.css +1 -245
  146. package/dist/theme/index.css.map +1 -1
  147. package/dist/theme/index.d.cts +4 -1
  148. package/dist/theme/index.d.ts +4 -1
  149. package/dist/theme/index.js +2 -2
  150. package/dist/web/client/index.cjs +10 -10
  151. package/dist/web/client/index.css +118 -0
  152. package/dist/web/client/index.css.map +1 -1
  153. package/dist/web/client/index.js +2 -2
  154. package/dist/web/index.cjs +10 -10
  155. package/dist/web/index.css +118 -0
  156. package/dist/web/index.css.map +1 -1
  157. package/dist/web/index.js +2 -2
  158. package/package.json +10 -4
  159. package/dist/AppearancePanel-UT57J69V.d.cts +0 -51
  160. package/dist/AppearancePanel-UT57J69V.d.ts +0 -51
  161. package/dist/ExportMenu-A2TLFiVv.d.cts +0 -311
  162. package/dist/ExportMenu-C8qck5AT.d.ts +0 -311
  163. package/dist/Select-BdZmK0Lt.d.cts +0 -66
  164. package/dist/Select-BdZmK0Lt.d.ts +0 -66
  165. package/dist/chart-types-BGVVO-zl.d.cts +0 -208
  166. package/dist/chart-types-BGVVO-zl.d.ts +0 -208
  167. package/dist/charts/index.css +0 -1167
  168. package/dist/charts/index.css.map +0 -1
  169. package/dist/chunk-3BAQDW3V.cjs +0 -1207
  170. package/dist/chunk-3BAQDW3V.cjs.map +0 -1
  171. package/dist/chunk-3NKRFUAR.js +0 -37
  172. package/dist/chunk-3NKRFUAR.js.map +0 -1
  173. package/dist/chunk-3TGSIILM.cjs +0 -201
  174. package/dist/chunk-3TGSIILM.cjs.map +0 -1
  175. package/dist/chunk-4GM5BGBN.cjs +0 -801
  176. package/dist/chunk-4GM5BGBN.cjs.map +0 -1
  177. package/dist/chunk-5LA3T22E.cjs +0 -562
  178. package/dist/chunk-5LA3T22E.cjs.map +0 -1
  179. package/dist/chunk-5SN66B2X.js +0 -2542
  180. package/dist/chunk-5SN66B2X.js.map +0 -1
  181. package/dist/chunk-6D22TFLA.cjs.map +0 -1
  182. package/dist/chunk-6H4DSTXR.js +0 -786
  183. package/dist/chunk-6H4DSTXR.js.map +0 -1
  184. package/dist/chunk-6HKQ5ILL.cjs +0 -1624
  185. package/dist/chunk-6HKQ5ILL.cjs.map +0 -1
  186. package/dist/chunk-7PX2AZ6Y.js +0 -39
  187. package/dist/chunk-7PX2AZ6Y.js.map +0 -1
  188. package/dist/chunk-7UZ5DETZ.js.map +0 -1
  189. package/dist/chunk-B6AVAX4F.js +0 -1415
  190. package/dist/chunk-B6AVAX4F.js.map +0 -1
  191. package/dist/chunk-BJZ2DKS5.cjs.map +0 -1
  192. package/dist/chunk-BUTQSDQH.js +0 -200
  193. package/dist/chunk-BUTQSDQH.js.map +0 -1
  194. package/dist/chunk-C2BCDNAV.js +0 -24
  195. package/dist/chunk-C2BCDNAV.js.map +0 -1
  196. package/dist/chunk-CJ2MKVAF.cjs +0 -46
  197. package/dist/chunk-CJ2MKVAF.cjs.map +0 -1
  198. package/dist/chunk-E7D6EKJ4.cjs +0 -44
  199. package/dist/chunk-E7D6EKJ4.cjs.map +0 -1
  200. package/dist/chunk-ECXBTUH6.cjs.map +0 -1
  201. package/dist/chunk-FAFAP4L5.js +0 -183
  202. package/dist/chunk-FAFAP4L5.js.map +0 -1
  203. package/dist/chunk-G2XGBO5V.cjs +0 -2565
  204. package/dist/chunk-G2XGBO5V.cjs.map +0 -1
  205. package/dist/chunk-GQELL2MF.cjs.map +0 -1
  206. package/dist/chunk-H2KQ3WSH.cjs.map +0 -1
  207. package/dist/chunk-H2Y6BSTL.cjs.map +0 -1
  208. package/dist/chunk-HCZW5AJN.cjs +0 -234
  209. package/dist/chunk-HCZW5AJN.cjs.map +0 -1
  210. package/dist/chunk-HDVAMYSG.js.map +0 -1
  211. package/dist/chunk-HN4PHABT.js +0 -126
  212. package/dist/chunk-HN4PHABT.js.map +0 -1
  213. package/dist/chunk-LTPTW2US.cjs.map +0 -1
  214. package/dist/chunk-MDB2WCRQ.cjs +0 -137
  215. package/dist/chunk-MDB2WCRQ.cjs.map +0 -1
  216. package/dist/chunk-MQRB634A.cjs +0 -34
  217. package/dist/chunk-MQRB634A.cjs.map +0 -1
  218. package/dist/chunk-NN3TUHIH.js +0 -28
  219. package/dist/chunk-NN3TUHIH.js.map +0 -1
  220. package/dist/chunk-OWS2KAXZ.js +0 -701
  221. package/dist/chunk-OWS2KAXZ.js.map +0 -1
  222. package/dist/chunk-P5BOFE5A.js.map +0 -1
  223. package/dist/chunk-PUPSK3DI.cjs +0 -216
  224. package/dist/chunk-PUPSK3DI.cjs.map +0 -1
  225. package/dist/chunk-Q2MFGYTE.cjs +0 -1449
  226. package/dist/chunk-Q2MFGYTE.cjs.map +0 -1
  227. package/dist/chunk-Q75DBVDY.cjs +0 -68
  228. package/dist/chunk-Q75DBVDY.cjs.map +0 -1
  229. package/dist/chunk-QALDZ7WQ.js.map +0 -1
  230. package/dist/chunk-QWE2RNCS.js +0 -1195
  231. package/dist/chunk-QWE2RNCS.js.map +0 -1
  232. package/dist/chunk-RQUFZAZ7.js +0 -1608
  233. package/dist/chunk-RQUFZAZ7.js.map +0 -1
  234. package/dist/chunk-SICKWUWB.js.map +0 -1
  235. package/dist/chunk-TCFC7XTB.js +0 -212
  236. package/dist/chunk-TCFC7XTB.js.map +0 -1
  237. package/dist/chunk-UTVXGAQP.cjs +0 -2437
  238. package/dist/chunk-UTVXGAQP.cjs.map +0 -1
  239. package/dist/chunk-UVEMY3FQ.cjs +0 -717
  240. package/dist/chunk-UVEMY3FQ.cjs.map +0 -1
  241. package/dist/chunk-VFJZQQZU.js.map +0 -1
  242. package/dist/chunk-WH7PYHZY.cjs +0 -35
  243. package/dist/chunk-WH7PYHZY.cjs.map +0 -1
  244. package/dist/chunk-WYH4TKS5.js.map +0 -1
  245. package/dist/chunk-XEX2AEZK.cjs.map +0 -1
  246. package/dist/chunk-XPTVHPCN.js +0 -2320
  247. package/dist/chunk-XPTVHPCN.js.map +0 -1
  248. package/dist/chunk-XWPDRMZG.js +0 -62
  249. package/dist/chunk-XWPDRMZG.js.map +0 -1
  250. package/dist/chunk-Y26OHHMX.js.map +0 -1
  251. package/dist/chunk-YJ6C3EKW.js.map +0 -1
  252. package/dist/motion-C651Ry6d.d.cts +0 -832
  253. package/dist/motion-C651Ry6d.d.ts +0 -832
  254. package/dist/report/index.css +0 -1239
  255. package/dist/report/index.css.map +0 -1
  256. /package/dist/{chunk-6UNG76Y2.js.map → chunk-2VVRZBUR.cjs.map} +0 -0
  257. /package/dist/{chunk-YTYDQBVY.cjs.map → chunk-K526GN7P.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Sidebar/Sidebar.tsx","../src/components/Shell/Shell.tsx"],"names":["React","clsx","jsx","jsxs"],"mappings":"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","sourcesContent":["import React from 'react';\nimport clsx from 'clsx';\nimport './Sidebar.css';\n\nexport interface SidebarProps {\n /** Position of the sidebar */\n position?: 'left' | 'right';\n /** Width of the sidebar */\n width?: number | string;\n /** Whether the sidebar is collapsed */\n collapsed?: boolean;\n /** Custom class name */\n className?: string;\n /** Child content */\n children?: React.ReactNode;\n}\n\n/**\n * Sidebar — Level 1 Glass Panel\n *\n * A floating sidebar that maintains 24px minimum distance from viewport edges.\n * Uses Signature Glass treatment with full optical stack.\n */\nexport const Sidebar = React.forwardRef<HTMLElement, SidebarProps>(\n ({ position = 'left', width = 280, collapsed = false, className, children }, ref) => {\n const style: React.CSSProperties = {\n '--sidebar-width': typeof width === 'number' ? `${width}px` : width,\n } as React.CSSProperties;\n\n return (\n <aside\n ref={ref}\n className={clsx(\n 'ds-sidebar',\n `ds-sidebar--${position}`,\n collapsed && 'ds-sidebar--collapsed',\n className,\n )}\n style={style}\n >\n <div className=\"ds-sidebar__content\">{children}</div>\n </aside>\n );\n },\n);\n\nSidebar.displayName = 'Sidebar';\n\n/* Sidebar Section */\nexport interface SidebarSectionProps {\n title?: string;\n className?: string;\n children?: React.ReactNode;\n}\n\nexport const SidebarSection = React.forwardRef<HTMLDivElement, SidebarSectionProps>(\n ({ title, className, children }, ref) => {\n return (\n <div ref={ref} className={clsx('ds-sidebar__section', className)}>\n {title && <h3 className=\"ds-sidebar__section-title\">{title}</h3>}\n {children}\n </div>\n );\n },\n);\n\nSidebarSection.displayName = 'SidebarSection';\n\n/* Sidebar Item */\nexport interface SidebarItemProps {\n /** Whether this item is active */\n active?: boolean;\n /** Icon element */\n icon?: React.ReactNode;\n /** Click handler */\n onClick?: () => void;\n /** Custom class name */\n className?: string;\n /** Child content */\n children?: React.ReactNode;\n}\n\nexport const SidebarItem = React.forwardRef<HTMLButtonElement, SidebarItemProps>(\n ({ active = false, icon, onClick, className, children }, ref) => {\n return (\n <button\n ref={ref}\n className={clsx('ds-sidebar__item', active && 'ds-sidebar__item--active', className)}\n onClick={onClick}\n type=\"button\"\n >\n {icon && <span className=\"ds-sidebar__item-icon\">{icon}</span>}\n <span className=\"ds-sidebar__item-label\">{children}</span>\n </button>\n );\n },\n);\n\nSidebarItem.displayName = 'SidebarItem';\n","import React, { useEffect, useState } from 'react';\nimport clsx from 'clsx';\nimport { Sidebar, SidebarSection, SidebarItem } from '../Sidebar/Sidebar';\nimport './Shell.css';\n\n// Icons\nconst HomeIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2}>\n <path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\" />\n <polyline points=\"9,22 9,12 15,12 15,22\" />\n </svg>\n);\nconst ChartIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2}>\n <line x1=\"18\" y1=\"20\" x2=\"18\" y2=\"10\" />\n <line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"4\" />\n <line x1=\"6\" y1=\"20\" x2=\"6\" y2=\"14\" />\n </svg>\n);\nconst UsersIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2}>\n <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <path d=\"M23 21v-2a4 4 0 0 0-3-3.87\" />\n <path d=\"M16 3.13a4 4 0 0 1 0 7.75\" />\n </svg>\n);\nconst SettingsIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2}>\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n <path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\" />\n </svg>\n);\n\nimport type { NavPlacement } from '../../theme/AppearanceProvider';\n\nexport interface ShellProps {\n /**\n * Navigation placement.\n * If undefined, reads from document.documentElement.dataset.nav\n */\n layout?: NavPlacement;\n /** Custom class name */\n className?: string;\n /** Content */\n children?: React.ReactNode;\n /** Navigation items (optional - uses defaults if not provided) */\n navItems?: NavItem[];\n /** Active nav item key */\n activeNav?: string;\n /** Nav item click handler */\n onNavChange?: (key: string) => void;\n /** Title for the \"System\" sidebar section when navItems.length > 3. @default \"System\" */\n systemSectionTitle?: string;\n}\n\nexport interface NavItem {\n key: string;\n label: string;\n icon: React.ReactNode;\n}\n\nconst DEFAULT_NAV_ITEMS: NavItem[] = [\n { key: 'dashboard', label: 'Dashboard', icon: <HomeIcon /> },\n { key: 'analytics', label: 'Analytics', icon: <ChartIcon /> },\n { key: 'contacts', label: 'Contacts', icon: <UsersIcon /> },\n { key: 'settings', label: 'Settings', icon: <SettingsIcon /> },\n];\n\n/**\n * Read data-nav from HTML element\n */\nfunction getNavFromDocument(): NavPlacement {\n if (typeof document === 'undefined') return 'left';\n const nav = document.documentElement.getAttribute('data-nav');\n if (nav === 'left' || nav === 'right' || nav === 'bottom') {\n return nav;\n }\n return 'left';\n}\n\nexport const Shell = React.forwardRef<HTMLDivElement, ShellProps>(\n (\n {\n layout,\n className,\n children,\n navItems = DEFAULT_NAV_ITEMS,\n activeNav = 'dashboard',\n onNavChange,\n systemSectionTitle = 'System',\n },\n ref,\n ) => {\n // Support both prop-driven and attribute-driven layout\n const [computedLayout, setComputedLayout] = useState<NavPlacement>(\n layout || getNavFromDocument(),\n );\n\n useEffect(() => {\n if (layout) {\n setComputedLayout(layout);\n return;\n }\n\n // Watch for data-nav changes via MutationObserver\n if (typeof document === 'undefined') return;\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.type === 'attributes' && mutation.attributeName === 'data-nav') {\n setComputedLayout(getNavFromDocument());\n }\n });\n });\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['data-nav'],\n });\n\n // Initial read\n setComputedLayout(getNavFromDocument());\n\n return () => observer.disconnect();\n }, [layout]);\n\n const handleNavClick = (key: string) => {\n onNavChange?.(key);\n };\n\n return (\n <div\n ref={ref}\n className={clsx('ds-shell', `ds-shell--${computedLayout}`, className)}\n data-shell-layout={computedLayout}\n >\n {/* Sidebar Navigation */}\n {(computedLayout === 'left' || computedLayout === 'right') && (\n <Sidebar position={computedLayout}>\n <SidebarSection>\n {navItems.slice(0, 3).map((item) => (\n <SidebarItem\n key={item.key}\n icon={item.icon}\n active={activeNav === item.key}\n onClick={() => handleNavClick(item.key)}\n >\n {item.label}\n </SidebarItem>\n ))}\n </SidebarSection>\n {navItems.length > 3 && (\n <SidebarSection title={systemSectionTitle}>\n {navItems.slice(3).map((item) => (\n <SidebarItem\n key={item.key}\n icon={item.icon}\n active={activeNav === item.key}\n onClick={() => handleNavClick(item.key)}\n >\n {item.label}\n </SidebarItem>\n ))}\n </SidebarSection>\n )}\n </Sidebar>\n )}\n\n {/* Bottom Tab Bar Navigation */}\n {computedLayout === 'bottom' && (\n <nav className=\"ds-shell__tab-bar\">\n {navItems.map((item) => (\n <button\n key={item.key}\n className={clsx('ds-shell__tab-item', activeNav === item.key && 'ds-shell__tab-item--active')}\n onClick={() => handleNavClick(item.key)}\n aria-label={item.label}\n >\n {item.icon}\n </button>\n ))}\n </nav>\n )}\n\n {/* Main Content Area */}\n <main className=\"ds-shell__content\">{children}</main>\n </div>\n );\n },\n);\n\nShell.displayName = 'Shell';\n"]}
@@ -0,0 +1,190 @@
1
+ import { IntlProvider, useIntl } from 'react-intl';
2
+ export { FormattedDate, FormattedMessage, FormattedNumber, defineMessages } from 'react-intl';
3
+ import { jsx } from 'react/jsx-runtime';
4
+ import { useCallback } from 'react';
5
+
6
+ // src/i18n/IntlProvider.tsx
7
+ var defaultMessages = {
8
+ // Common
9
+ "ds.common.loading": "Loading...",
10
+ "ds.common.error": "An error occurred",
11
+ "ds.common.retry": "Retry",
12
+ "ds.common.cancel": "Cancel",
13
+ "ds.common.confirm": "Confirm",
14
+ "ds.common.close": "Close",
15
+ "ds.common.save": "Save",
16
+ "ds.common.delete": "Delete",
17
+ "ds.common.edit": "Edit",
18
+ "ds.common.submit": "Submit",
19
+ "ds.common.required": "Required",
20
+ "ds.common.optional": "Optional",
21
+ // Alert
22
+ "ds.alert.dismissLabel": "Dismiss alert",
23
+ "ds.alert.successTitle": "Success",
24
+ "ds.alert.errorTitle": "Error",
25
+ "ds.alert.warningTitle": "Warning",
26
+ "ds.alert.infoTitle": "Information",
27
+ // Toast
28
+ "ds.toast.dismissLabel": "Dismiss notification",
29
+ // Dialog
30
+ "ds.dialog.closeLabel": "Close dialog",
31
+ // Form
32
+ "ds.form.showPassword": "Show password",
33
+ "ds.form.hidePassword": "Hide password",
34
+ "ds.form.clearInput": "Clear input",
35
+ "ds.form.invalidEmail": "Please enter a valid email address",
36
+ "ds.form.passwordRequired": "Password is required",
37
+ // Auth
38
+ "ds.auth.loginTitle": "Sign in to your account",
39
+ "ds.auth.signupTitle": "Create your account",
40
+ "ds.auth.forgotPasswordTitle": "Reset your password",
41
+ "ds.auth.emailLabel": "Email address",
42
+ "ds.auth.passwordLabel": "Password",
43
+ "ds.auth.rememberMe": "Remember me",
44
+ "ds.auth.forgotPassword": "Forgot your password?",
45
+ "ds.auth.signIn": "Sign in",
46
+ "ds.auth.signUp": "Sign up",
47
+ "ds.auth.sendResetLink": "Send reset link",
48
+ "ds.auth.backToLogin": "Back to login",
49
+ // Navigation
50
+ "ds.nav.menuLabel": "Navigation menu",
51
+ "ds.nav.toggleSidebar": "Toggle sidebar",
52
+ "ds.nav.expandSubmenu": "Expand submenu",
53
+ "ds.nav.collapseSubmenu": "Collapse submenu",
54
+ // Report
55
+ "ds.report.confidenceLabel": "Confidence score",
56
+ "ds.report.dataCoverageLabel": "Data coverage",
57
+ "ds.report.insufficientData": "Insufficient data",
58
+ "ds.report.exportPdf": "Export as PDF",
59
+ "ds.report.exportCsv": "Export as CSV",
60
+ "ds.report.exportPptx": "Export as PowerPoint",
61
+ // Appearance
62
+ "ds.appearance.themeLabel": "Theme",
63
+ "ds.appearance.darkTheme": "Dark",
64
+ "ds.appearance.lightTheme": "Light",
65
+ "ds.appearance.highContrastTheme": "High contrast",
66
+ "ds.appearance.densityLabel": "Density",
67
+ "ds.appearance.comfortableDensity": "Comfortable",
68
+ "ds.appearance.compactDensity": "Compact",
69
+ // Pagination
70
+ "ds.pagination.previous": "Previous",
71
+ "ds.pagination.next": "Next",
72
+ "ds.pagination.goToPreviousPage": "Go to previous page",
73
+ "ds.pagination.goToNextPage": "Go to next page",
74
+ // Calendar
75
+ "ds.calendar.previousMonth": "Previous month",
76
+ "ds.calendar.nextMonth": "Next month",
77
+ // Carousel
78
+ "ds.carousel.previousSlide": "Previous slide",
79
+ "ds.carousel.nextSlide": "Next slide",
80
+ // Methodology
81
+ "ds.methodology.title": "Methodology",
82
+ "ds.methodology.sampleSize": "Sample Size",
83
+ "ds.methodology.dataSources": "Data Sources",
84
+ "ds.methodology.calculation": "Calculation",
85
+ // BookingEmbed
86
+ "BookingEmbed.loading": "Loading calendar...",
87
+ "BookingEmbed.errorTitle": "Calendar unavailable",
88
+ "BookingEmbed.errorDescription": "We couldn't load the calendar. Please try again or open it in a new tab.",
89
+ "BookingEmbed.openInNewTab": "Open in new tab"
90
+ };
91
+ function DSIntlProvider({
92
+ locale = "en",
93
+ messages,
94
+ intlConfig,
95
+ children
96
+ }) {
97
+ const mergedMessages = {
98
+ ...defaultMessages,
99
+ ...messages
100
+ };
101
+ return /* @__PURE__ */ jsx(
102
+ IntlProvider,
103
+ {
104
+ locale,
105
+ messages: mergedMessages,
106
+ defaultLocale: "en",
107
+ onError: (err) => {
108
+ if (process.env.NODE_ENV === "development") {
109
+ if (err.code !== "MISSING_TRANSLATION") {
110
+ console.error(err);
111
+ }
112
+ }
113
+ },
114
+ ...intlConfig,
115
+ children
116
+ }
117
+ );
118
+ }
119
+ function useMessage() {
120
+ const intl = useIntl();
121
+ const formatMessage = useCallback(
122
+ (descriptor, values) => {
123
+ return intl.formatMessage(descriptor, values);
124
+ },
125
+ [intl]
126
+ );
127
+ return formatMessage;
128
+ }
129
+ function useLocale() {
130
+ const intl = useIntl();
131
+ return intl.locale;
132
+ }
133
+ function useIsRTL() {
134
+ const locale = useLocale();
135
+ const rtlLocales = [
136
+ "ar",
137
+ // Arabic
138
+ "he",
139
+ // Hebrew
140
+ "fa",
141
+ // Persian/Farsi
142
+ "ur",
143
+ // Urdu
144
+ "ps",
145
+ // Pashto
146
+ "sd",
147
+ // Sindhi
148
+ "yi"
149
+ // Yiddish
150
+ ];
151
+ return rtlLocales.some((rtl) => locale === rtl || locale.startsWith(`${rtl}-`));
152
+ }
153
+ function useTextDirection() {
154
+ const isRTL = useIsRTL();
155
+ return isRTL ? "rtl" : "ltr";
156
+ }
157
+ function useNumberFormat() {
158
+ const intl = useIntl();
159
+ const formatNumber = useCallback(
160
+ (value, options) => {
161
+ return intl.formatNumber(value, options);
162
+ },
163
+ [intl]
164
+ );
165
+ return formatNumber;
166
+ }
167
+ function useDateFormat() {
168
+ const intl = useIntl();
169
+ const formatDate = useCallback(
170
+ (value, options) => {
171
+ return intl.formatDate(value, options);
172
+ },
173
+ [intl]
174
+ );
175
+ return formatDate;
176
+ }
177
+ function useRelativeTime() {
178
+ const intl = useIntl();
179
+ const formatRelativeTime = useCallback(
180
+ (value, unit, options) => {
181
+ return intl.formatRelativeTime(value, unit, options);
182
+ },
183
+ [intl]
184
+ );
185
+ return formatRelativeTime;
186
+ }
187
+
188
+ export { DSIntlProvider, useDateFormat, useIsRTL, useLocale, useMessage, useNumberFormat, useRelativeTime, useTextDirection };
189
+ //# sourceMappingURL=out.js.map
190
+ //# sourceMappingURL=chunk-SFXTB7JL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/i18n/IntlProvider.tsx","../src/i18n/useMessage.ts","../src/i18n/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Design System IntlProvider\n *\n * Wraps react-intl's IntlProvider with design system defaults.\n * Components receive i18n context through this provider.\n *\n * @example\n * ```tsx\n * import { DSIntlProvider } from '@salesmind-ai/design-system';\n *\n * // With default English messages\n * <DSIntlProvider>\n * <App />\n * </DSIntlProvider>\n *\n * // With custom locale and messages\n * <DSIntlProvider locale=\"fr\" messages={frenchMessages}>\n * <App />\n * </DSIntlProvider>\n * ```\n */\n\nimport React from 'react';\nimport { IntlProvider, IntlConfig } from 'react-intl';\n\n/**\n * Default English messages (extracted from component defaults)\n * These serve as fallbacks when no messages are provided.\n */\nconst defaultMessages: Record<string, string> = {\n // Common\n 'ds.common.loading': 'Loading...',\n 'ds.common.error': 'An error occurred',\n 'ds.common.retry': 'Retry',\n 'ds.common.cancel': 'Cancel',\n 'ds.common.confirm': 'Confirm',\n 'ds.common.close': 'Close',\n 'ds.common.save': 'Save',\n 'ds.common.delete': 'Delete',\n 'ds.common.edit': 'Edit',\n 'ds.common.submit': 'Submit',\n 'ds.common.required': 'Required',\n 'ds.common.optional': 'Optional',\n\n // Alert\n 'ds.alert.dismissLabel': 'Dismiss alert',\n 'ds.alert.successTitle': 'Success',\n 'ds.alert.errorTitle': 'Error',\n 'ds.alert.warningTitle': 'Warning',\n 'ds.alert.infoTitle': 'Information',\n\n // Toast\n 'ds.toast.dismissLabel': 'Dismiss notification',\n\n // Dialog\n 'ds.dialog.closeLabel': 'Close dialog',\n\n // Form\n 'ds.form.showPassword': 'Show password',\n 'ds.form.hidePassword': 'Hide password',\n 'ds.form.clearInput': 'Clear input',\n 'ds.form.invalidEmail': 'Please enter a valid email address',\n 'ds.form.passwordRequired': 'Password is required',\n\n // Auth\n 'ds.auth.loginTitle': 'Sign in to your account',\n 'ds.auth.signupTitle': 'Create your account',\n 'ds.auth.forgotPasswordTitle': 'Reset your password',\n 'ds.auth.emailLabel': 'Email address',\n 'ds.auth.passwordLabel': 'Password',\n 'ds.auth.rememberMe': 'Remember me',\n 'ds.auth.forgotPassword': 'Forgot your password?',\n 'ds.auth.signIn': 'Sign in',\n 'ds.auth.signUp': 'Sign up',\n 'ds.auth.sendResetLink': 'Send reset link',\n 'ds.auth.backToLogin': 'Back to login',\n\n // Navigation\n 'ds.nav.menuLabel': 'Navigation menu',\n 'ds.nav.toggleSidebar': 'Toggle sidebar',\n 'ds.nav.expandSubmenu': 'Expand submenu',\n 'ds.nav.collapseSubmenu': 'Collapse submenu',\n\n // Report\n 'ds.report.confidenceLabel': 'Confidence score',\n 'ds.report.dataCoverageLabel': 'Data coverage',\n 'ds.report.insufficientData': 'Insufficient data',\n 'ds.report.exportPdf': 'Export as PDF',\n 'ds.report.exportCsv': 'Export as CSV',\n 'ds.report.exportPptx': 'Export as PowerPoint',\n\n // Appearance\n 'ds.appearance.themeLabel': 'Theme',\n 'ds.appearance.darkTheme': 'Dark',\n 'ds.appearance.lightTheme': 'Light',\n 'ds.appearance.highContrastTheme': 'High contrast',\n 'ds.appearance.densityLabel': 'Density',\n 'ds.appearance.comfortableDensity': 'Comfortable',\n 'ds.appearance.compactDensity': 'Compact',\n\n // Pagination\n 'ds.pagination.previous': 'Previous',\n 'ds.pagination.next': 'Next',\n 'ds.pagination.goToPreviousPage': 'Go to previous page',\n 'ds.pagination.goToNextPage': 'Go to next page',\n\n // Calendar\n 'ds.calendar.previousMonth': 'Previous month',\n 'ds.calendar.nextMonth': 'Next month',\n\n // Carousel\n 'ds.carousel.previousSlide': 'Previous slide',\n 'ds.carousel.nextSlide': 'Next slide',\n\n // Methodology\n 'ds.methodology.title': 'Methodology',\n 'ds.methodology.sampleSize': 'Sample Size',\n 'ds.methodology.dataSources': 'Data Sources',\n 'ds.methodology.calculation': 'Calculation',\n\n // BookingEmbed\n 'BookingEmbed.loading': 'Loading calendar...',\n 'BookingEmbed.errorTitle': 'Calendar unavailable',\n 'BookingEmbed.errorDescription': \"We couldn't load the calendar. Please try again or open it in a new tab.\",\n 'BookingEmbed.openInNewTab': 'Open in new tab',\n};\n\nexport interface DSIntlProviderProps {\n /**\n * Locale identifier (e.g., 'en', 'fr', 'de')\n * @default 'en'\n */\n locale?: string;\n\n /**\n * Translated messages for the locale.\n * If not provided, defaults to English messages.\n */\n messages?: Record<string, string>;\n\n /**\n * Additional IntlProvider configuration\n */\n intlConfig?: Partial<IntlConfig>;\n\n /**\n * Child components\n */\n children: React.ReactNode;\n}\n\n/**\n * Design System IntlProvider\n *\n * Provides internationalization context to all design system components.\n * Wrap your app with this provider to enable i18n support.\n */\nexport function DSIntlProvider({\n locale = 'en',\n messages,\n intlConfig,\n children,\n}: DSIntlProviderProps) {\n // Merge provided messages with defaults (provided messages take precedence)\n const mergedMessages = {\n ...defaultMessages,\n ...messages,\n };\n\n return (\n <IntlProvider\n locale={locale}\n messages={mergedMessages}\n defaultLocale=\"en\"\n onError={(err) => {\n // Only log missing translation errors in development\n if (process.env.NODE_ENV === 'development') {\n // Filter out \"MISSING_TRANSLATION\" errors for default messages\n if (err.code !== 'MISSING_TRANSLATION') {\n console.error(err);\n }\n }\n }}\n {...intlConfig}\n >\n {children}\n </IntlProvider>\n );\n}\n\nexport default DSIntlProvider;\n","/**\n * Design System Message Hooks\n *\n * Provides hooks for accessing internationalized messages in components.\n * These hooks are optional - components can still accept string props directly.\n *\n * @example\n * ```tsx\n * import { useMessage, commonMessages } from '@salesmind-ai/design-system';\n *\n * function MyComponent() {\n * const t = useMessage();\n * return <button>{t(commonMessages.save)}</button>;\n * }\n * ```\n */\n\nimport { useIntl, MessageDescriptor, PrimitiveType } from 'react-intl';\nimport { useCallback } from 'react';\n\n/**\n * Format message values type\n */\nexport type MessageValues = Record<string, PrimitiveType>;\n\n/**\n * Hook to get a message formatter function\n *\n * @returns A function that formats messages\n *\n * @example\n * ```tsx\n * const t = useMessage();\n * return <span>{t(commonMessages.loading)}</span>;\n * ```\n */\nexport function useMessage() {\n const intl = useIntl();\n\n const formatMessage = useCallback(\n (descriptor: MessageDescriptor, values?: MessageValues): string => {\n return intl.formatMessage(descriptor, values);\n },\n [intl],\n );\n\n return formatMessage;\n}\n\n/**\n * Hook to get the current locale\n *\n * @returns The current locale string (e.g., 'en', 'fr')\n *\n * @example\n * ```tsx\n * const locale = useLocale();\n * console.log(locale); // 'en'\n * ```\n */\nexport function useLocale(): string {\n const intl = useIntl();\n return intl.locale;\n}\n\n/**\n * Hook to check if RTL is needed for current locale\n *\n * @returns true if the current locale is RTL\n *\n * @example\n * ```tsx\n * const isRTL = useIsRTL();\n * return <div style={{ direction: isRTL ? 'rtl' : 'ltr' }}>...</div>;\n * ```\n */\nexport function useIsRTL(): boolean {\n const locale = useLocale();\n\n // RTL locales\n const rtlLocales = [\n 'ar', // Arabic\n 'he', // Hebrew\n 'fa', // Persian/Farsi\n 'ur', // Urdu\n 'ps', // Pashto\n 'sd', // Sindhi\n 'yi', // Yiddish\n ];\n\n return rtlLocales.some((rtl) => locale === rtl || locale.startsWith(`${rtl}-`));\n}\n\n/**\n * Hook to get the current text direction\n *\n * @returns 'rtl' or 'ltr' based on locale\n *\n * @example\n * ```tsx\n * const dir = useTextDirection();\n * return <div dir={dir}>...</div>;\n * ```\n */\nexport function useTextDirection(): 'rtl' | 'ltr' {\n const isRTL = useIsRTL();\n return isRTL ? 'rtl' : 'ltr';\n}\n\n/**\n * Hook to format a number according to locale\n *\n * @returns A number formatter function\n *\n * @example\n * ```tsx\n * const formatNumber = useNumberFormat();\n * return <span>{formatNumber(1234.56)}</span>; // \"1,234.56\" in en-US\n * ```\n */\nexport function useNumberFormat() {\n const intl = useIntl();\n\n const formatNumber = useCallback(\n (value: number, options?: Intl.NumberFormatOptions): string => {\n return intl.formatNumber(value, options as Parameters<typeof intl.formatNumber>[1]);\n },\n [intl],\n );\n\n return formatNumber;\n}\n\n/**\n * Hook to format a date according to locale\n *\n * @returns A date formatter function\n *\n * @example\n * ```tsx\n * const formatDate = useDateFormat();\n * return <span>{formatDate(new Date())}</span>;\n * ```\n */\nexport function useDateFormat() {\n const intl = useIntl();\n\n const formatDate = useCallback(\n (value: Date | number, options?: Intl.DateTimeFormatOptions): string => {\n return intl.formatDate(value, options);\n },\n [intl],\n );\n\n return formatDate;\n}\n\n/**\n * Hook to format a relative time (e.g., \"2 days ago\")\n *\n * @returns A relative time formatter function\n *\n * @example\n * ```tsx\n * const formatRelative = useRelativeTime();\n * return <span>{formatRelative(-2, 'day')}</span>; // \"2 days ago\"\n * ```\n */\nexport function useRelativeTime() {\n const intl = useIntl();\n\n const formatRelativeTime = useCallback(\n (\n value: number,\n unit: Intl.RelativeTimeFormatUnit,\n options?: Intl.RelativeTimeFormatOptions,\n ): string => {\n return intl.formatRelativeTime(value, unit, options as Parameters<typeof intl.formatRelativeTime>[2]);\n },\n [intl],\n );\n\n return formatRelativeTime;\n}\n","/**\n * Design System Internationalization Module\n *\n * Provides i18n infrastructure for design system components.\n *\n * @module i18n\n */\n\n// Provider\nexport { DSIntlProvider, type DSIntlProviderProps } from './IntlProvider';\n\n// Hooks\nexport {\n useMessage,\n useLocale,\n useIsRTL,\n useTextDirection,\n useNumberFormat,\n useDateFormat,\n useRelativeTime,\n type MessageValues,\n} from './useMessage';\n\n// Messages\nexport {\n commonMessages,\n alertMessages,\n toastMessages,\n dialogMessages,\n formMessages,\n authMessages,\n navigationMessages,\n reportMessages,\n appearanceMessages,\n paginationMessages,\n calendarMessages,\n carouselMessages,\n methodologyMessages,\n bookingEmbedMessages,\n allMessages,\n} from './messages';\n\n// Re-export react-intl types for convenience\nexport type { MessageDescriptor } from 'react-intl';\nexport { defineMessages, FormattedMessage, FormattedNumber, FormattedDate } from 'react-intl';\n"]}
@@ -0,0 +1,214 @@
1
+ 'use strict';
2
+
3
+ var reactIntl = require('react-intl');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var react = require('react');
6
+
7
+ // src/i18n/IntlProvider.tsx
8
+ var defaultMessages = {
9
+ // Common
10
+ "ds.common.loading": "Loading...",
11
+ "ds.common.error": "An error occurred",
12
+ "ds.common.retry": "Retry",
13
+ "ds.common.cancel": "Cancel",
14
+ "ds.common.confirm": "Confirm",
15
+ "ds.common.close": "Close",
16
+ "ds.common.save": "Save",
17
+ "ds.common.delete": "Delete",
18
+ "ds.common.edit": "Edit",
19
+ "ds.common.submit": "Submit",
20
+ "ds.common.required": "Required",
21
+ "ds.common.optional": "Optional",
22
+ // Alert
23
+ "ds.alert.dismissLabel": "Dismiss alert",
24
+ "ds.alert.successTitle": "Success",
25
+ "ds.alert.errorTitle": "Error",
26
+ "ds.alert.warningTitle": "Warning",
27
+ "ds.alert.infoTitle": "Information",
28
+ // Toast
29
+ "ds.toast.dismissLabel": "Dismiss notification",
30
+ // Dialog
31
+ "ds.dialog.closeLabel": "Close dialog",
32
+ // Form
33
+ "ds.form.showPassword": "Show password",
34
+ "ds.form.hidePassword": "Hide password",
35
+ "ds.form.clearInput": "Clear input",
36
+ "ds.form.invalidEmail": "Please enter a valid email address",
37
+ "ds.form.passwordRequired": "Password is required",
38
+ // Auth
39
+ "ds.auth.loginTitle": "Sign in to your account",
40
+ "ds.auth.signupTitle": "Create your account",
41
+ "ds.auth.forgotPasswordTitle": "Reset your password",
42
+ "ds.auth.emailLabel": "Email address",
43
+ "ds.auth.passwordLabel": "Password",
44
+ "ds.auth.rememberMe": "Remember me",
45
+ "ds.auth.forgotPassword": "Forgot your password?",
46
+ "ds.auth.signIn": "Sign in",
47
+ "ds.auth.signUp": "Sign up",
48
+ "ds.auth.sendResetLink": "Send reset link",
49
+ "ds.auth.backToLogin": "Back to login",
50
+ // Navigation
51
+ "ds.nav.menuLabel": "Navigation menu",
52
+ "ds.nav.toggleSidebar": "Toggle sidebar",
53
+ "ds.nav.expandSubmenu": "Expand submenu",
54
+ "ds.nav.collapseSubmenu": "Collapse submenu",
55
+ // Report
56
+ "ds.report.confidenceLabel": "Confidence score",
57
+ "ds.report.dataCoverageLabel": "Data coverage",
58
+ "ds.report.insufficientData": "Insufficient data",
59
+ "ds.report.exportPdf": "Export as PDF",
60
+ "ds.report.exportCsv": "Export as CSV",
61
+ "ds.report.exportPptx": "Export as PowerPoint",
62
+ // Appearance
63
+ "ds.appearance.themeLabel": "Theme",
64
+ "ds.appearance.darkTheme": "Dark",
65
+ "ds.appearance.lightTheme": "Light",
66
+ "ds.appearance.highContrastTheme": "High contrast",
67
+ "ds.appearance.densityLabel": "Density",
68
+ "ds.appearance.comfortableDensity": "Comfortable",
69
+ "ds.appearance.compactDensity": "Compact",
70
+ // Pagination
71
+ "ds.pagination.previous": "Previous",
72
+ "ds.pagination.next": "Next",
73
+ "ds.pagination.goToPreviousPage": "Go to previous page",
74
+ "ds.pagination.goToNextPage": "Go to next page",
75
+ // Calendar
76
+ "ds.calendar.previousMonth": "Previous month",
77
+ "ds.calendar.nextMonth": "Next month",
78
+ // Carousel
79
+ "ds.carousel.previousSlide": "Previous slide",
80
+ "ds.carousel.nextSlide": "Next slide",
81
+ // Methodology
82
+ "ds.methodology.title": "Methodology",
83
+ "ds.methodology.sampleSize": "Sample Size",
84
+ "ds.methodology.dataSources": "Data Sources",
85
+ "ds.methodology.calculation": "Calculation",
86
+ // BookingEmbed
87
+ "BookingEmbed.loading": "Loading calendar...",
88
+ "BookingEmbed.errorTitle": "Calendar unavailable",
89
+ "BookingEmbed.errorDescription": "We couldn't load the calendar. Please try again or open it in a new tab.",
90
+ "BookingEmbed.openInNewTab": "Open in new tab"
91
+ };
92
+ function DSIntlProvider({
93
+ locale = "en",
94
+ messages,
95
+ intlConfig,
96
+ children
97
+ }) {
98
+ const mergedMessages = {
99
+ ...defaultMessages,
100
+ ...messages
101
+ };
102
+ return /* @__PURE__ */ jsxRuntime.jsx(
103
+ reactIntl.IntlProvider,
104
+ {
105
+ locale,
106
+ messages: mergedMessages,
107
+ defaultLocale: "en",
108
+ onError: (err) => {
109
+ if (process.env.NODE_ENV === "development") {
110
+ if (err.code !== "MISSING_TRANSLATION") {
111
+ console.error(err);
112
+ }
113
+ }
114
+ },
115
+ ...intlConfig,
116
+ children
117
+ }
118
+ );
119
+ }
120
+ function useMessage() {
121
+ const intl = reactIntl.useIntl();
122
+ const formatMessage = react.useCallback(
123
+ (descriptor, values) => {
124
+ return intl.formatMessage(descriptor, values);
125
+ },
126
+ [intl]
127
+ );
128
+ return formatMessage;
129
+ }
130
+ function useLocale() {
131
+ const intl = reactIntl.useIntl();
132
+ return intl.locale;
133
+ }
134
+ function useIsRTL() {
135
+ const locale = useLocale();
136
+ const rtlLocales = [
137
+ "ar",
138
+ // Arabic
139
+ "he",
140
+ // Hebrew
141
+ "fa",
142
+ // Persian/Farsi
143
+ "ur",
144
+ // Urdu
145
+ "ps",
146
+ // Pashto
147
+ "sd",
148
+ // Sindhi
149
+ "yi"
150
+ // Yiddish
151
+ ];
152
+ return rtlLocales.some((rtl) => locale === rtl || locale.startsWith(`${rtl}-`));
153
+ }
154
+ function useTextDirection() {
155
+ const isRTL = useIsRTL();
156
+ return isRTL ? "rtl" : "ltr";
157
+ }
158
+ function useNumberFormat() {
159
+ const intl = reactIntl.useIntl();
160
+ const formatNumber = react.useCallback(
161
+ (value, options) => {
162
+ return intl.formatNumber(value, options);
163
+ },
164
+ [intl]
165
+ );
166
+ return formatNumber;
167
+ }
168
+ function useDateFormat() {
169
+ const intl = reactIntl.useIntl();
170
+ const formatDate = react.useCallback(
171
+ (value, options) => {
172
+ return intl.formatDate(value, options);
173
+ },
174
+ [intl]
175
+ );
176
+ return formatDate;
177
+ }
178
+ function useRelativeTime() {
179
+ const intl = reactIntl.useIntl();
180
+ const formatRelativeTime = react.useCallback(
181
+ (value, unit, options) => {
182
+ return intl.formatRelativeTime(value, unit, options);
183
+ },
184
+ [intl]
185
+ );
186
+ return formatRelativeTime;
187
+ }
188
+
189
+ Object.defineProperty(exports, "FormattedDate", {
190
+ enumerable: true,
191
+ get: function () { return reactIntl.FormattedDate; }
192
+ });
193
+ Object.defineProperty(exports, "FormattedMessage", {
194
+ enumerable: true,
195
+ get: function () { return reactIntl.FormattedMessage; }
196
+ });
197
+ Object.defineProperty(exports, "FormattedNumber", {
198
+ enumerable: true,
199
+ get: function () { return reactIntl.FormattedNumber; }
200
+ });
201
+ Object.defineProperty(exports, "defineMessages", {
202
+ enumerable: true,
203
+ get: function () { return reactIntl.defineMessages; }
204
+ });
205
+ exports.DSIntlProvider = DSIntlProvider;
206
+ exports.useDateFormat = useDateFormat;
207
+ exports.useIsRTL = useIsRTL;
208
+ exports.useLocale = useLocale;
209
+ exports.useMessage = useMessage;
210
+ exports.useNumberFormat = useNumberFormat;
211
+ exports.useRelativeTime = useRelativeTime;
212
+ exports.useTextDirection = useTextDirection;
213
+ //# sourceMappingURL=out.js.map
214
+ //# sourceMappingURL=chunk-SGYXYMKZ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/i18n/IntlProvider.tsx","../src/i18n/useMessage.ts","../src/i18n/index.ts"],"names":[],"mappings":";AAuBA,SAAS,oBAAgC;AAmJrC;AA7IJ,IAAM,kBAA0C;AAAA;AAAA,EAE9C,qBAAqB;AAAA,EACrB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,qBAAqB;AAAA,EACrB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,sBAAsB;AAAA,EACtB,sBAAsB;AAAA;AAAA,EAGtB,yBAAyB;AAAA,EACzB,yBAAyB;AAAA,EACzB,uBAAuB;AAAA,EACvB,yBAAyB;AAAA,EACzB,sBAAsB;AAAA;AAAA,EAGtB,yBAAyB;AAAA;AAAA,EAGzB,wBAAwB;AAAA;AAAA,EAGxB,wBAAwB;AAAA,EACxB,wBAAwB;AAAA,EACxB,sBAAsB;AAAA,EACtB,wBAAwB;AAAA,EACxB,4BAA4B;AAAA;AAAA,EAG5B,sBAAsB;AAAA,EACtB,uBAAuB;AAAA,EACvB,+BAA+B;AAAA,EAC/B,sBAAsB;AAAA,EACtB,yBAAyB;AAAA,EACzB,sBAAsB;AAAA,EACtB,0BAA0B;AAAA,EAC1B,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,yBAAyB;AAAA,EACzB,uBAAuB;AAAA;AAAA,EAGvB,oBAAoB;AAAA,EACpB,wBAAwB;AAAA,EACxB,wBAAwB;AAAA,EACxB,0BAA0B;AAAA;AAAA,EAG1B,6BAA6B;AAAA,EAC7B,+BAA+B;AAAA,EAC/B,8BAA8B;AAAA,EAC9B,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,wBAAwB;AAAA;AAAA,EAGxB,4BAA4B;AAAA,EAC5B,2BAA2B;AAAA,EAC3B,4BAA4B;AAAA,EAC5B,mCAAmC;AAAA,EACnC,8BAA8B;AAAA,EAC9B,oCAAoC;AAAA,EACpC,gCAAgC;AAAA;AAAA,EAGhC,0BAA0B;AAAA,EAC1B,sBAAsB;AAAA,EACtB,kCAAkC;AAAA,EAClC,8BAA8B;AAAA;AAAA,EAG9B,6BAA6B;AAAA,EAC7B,yBAAyB;AAAA;AAAA,EAGzB,6BAA6B;AAAA,EAC7B,yBAAyB;AAAA;AAAA,EAGzB,wBAAwB;AAAA,EACxB,6BAA6B;AAAA,EAC7B,8BAA8B;AAAA,EAC9B,8BAA8B;AAAA;AAAA,EAG9B,wBAAwB;AAAA,EACxB,2BAA2B;AAAA,EAC3B,iCAAiC;AAAA,EACjC,6BAA6B;AAC/B;AAgCO,SAAS,eAAe;AAAA,EAC7B,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AACF,GAAwB;AAEtB,QAAM,iBAAiB;AAAA,IACrB,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,UAAU;AAAA,MACV,eAAc;AAAA,MACd,SAAS,CAAC,QAAQ;AAEhB,YAAI,QAAQ,IAAI,aAAa,eAAe;AAE1C,cAAI,IAAI,SAAS,uBAAuB;AACtC,oBAAQ,MAAM,GAAG;AAAA,UACnB;AAAA,QACF;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;;;AC3KA,SAAS,eAAiD;AAC1D,SAAS,mBAAmB;AAkBrB,SAAS,aAAa;AAC3B,QAAM,OAAO,QAAQ;AAErB,QAAM,gBAAgB;AAAA,IACpB,CAAC,YAA+B,WAAmC;AACjE,aAAO,KAAK,cAAc,YAAY,MAAM;AAAA,IAC9C;AAAA,IACA,CAAC,IAAI;AAAA,EACP;AAEA,SAAO;AACT;AAaO,SAAS,YAAoB;AAClC,QAAM,OAAO,QAAQ;AACrB,SAAO,KAAK;AACd;AAaO,SAAS,WAAoB;AAClC,QAAM,SAAS,UAAU;AAGzB,QAAM,aAAa;AAAA,IACjB;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,EACF;AAEA,SAAO,WAAW,KAAK,CAAC,QAAQ,WAAW,OAAO,OAAO,WAAW,GAAG,GAAG,GAAG,CAAC;AAChF;AAaO,SAAS,mBAAkC;AAChD,QAAM,QAAQ,SAAS;AACvB,SAAO,QAAQ,QAAQ;AACzB;AAaO,SAAS,kBAAkB;AAChC,QAAM,OAAO,QAAQ;AAErB,QAAM,eAAe;AAAA,IACnB,CAAC,OAAe,YAA+C;AAC7D,aAAO,KAAK,aAAa,OAAO,OAAkD;AAAA,IACpF;AAAA,IACA,CAAC,IAAI;AAAA,EACP;AAEA,SAAO;AACT;AAaO,SAAS,gBAAgB;AAC9B,QAAM,OAAO,QAAQ;AAErB,QAAM,aAAa;AAAA,IACjB,CAAC,OAAsB,YAAiD;AACtE,aAAO,KAAK,WAAW,OAAO,OAAO;AAAA,IACvC;AAAA,IACA,CAAC,IAAI;AAAA,EACP;AAEA,SAAO;AACT;AAaO,SAAS,kBAAkB;AAChC,QAAM,OAAO,QAAQ;AAErB,QAAM,qBAAqB;AAAA,IACzB,CACE,OACA,MACA,YACW;AACX,aAAO,KAAK,mBAAmB,OAAO,MAAM,OAAwD;AAAA,IACtG;AAAA,IACA,CAAC,IAAI;AAAA,EACP;AAEA,SAAO;AACT;;;AC3IA,SAAS,gBAAgB,kBAAkB,iBAAiB,qBAAqB","sourcesContent":["/**\n * Design System IntlProvider\n *\n * Wraps react-intl's IntlProvider with design system defaults.\n * Components receive i18n context through this provider.\n *\n * @example\n * ```tsx\n * import { DSIntlProvider } from '@salesmind-ai/design-system';\n *\n * // With default English messages\n * <DSIntlProvider>\n * <App />\n * </DSIntlProvider>\n *\n * // With custom locale and messages\n * <DSIntlProvider locale=\"fr\" messages={frenchMessages}>\n * <App />\n * </DSIntlProvider>\n * ```\n */\n\nimport React from 'react';\nimport { IntlProvider, IntlConfig } from 'react-intl';\n\n/**\n * Default English messages (extracted from component defaults)\n * These serve as fallbacks when no messages are provided.\n */\nconst defaultMessages: Record<string, string> = {\n // Common\n 'ds.common.loading': 'Loading...',\n 'ds.common.error': 'An error occurred',\n 'ds.common.retry': 'Retry',\n 'ds.common.cancel': 'Cancel',\n 'ds.common.confirm': 'Confirm',\n 'ds.common.close': 'Close',\n 'ds.common.save': 'Save',\n 'ds.common.delete': 'Delete',\n 'ds.common.edit': 'Edit',\n 'ds.common.submit': 'Submit',\n 'ds.common.required': 'Required',\n 'ds.common.optional': 'Optional',\n\n // Alert\n 'ds.alert.dismissLabel': 'Dismiss alert',\n 'ds.alert.successTitle': 'Success',\n 'ds.alert.errorTitle': 'Error',\n 'ds.alert.warningTitle': 'Warning',\n 'ds.alert.infoTitle': 'Information',\n\n // Toast\n 'ds.toast.dismissLabel': 'Dismiss notification',\n\n // Dialog\n 'ds.dialog.closeLabel': 'Close dialog',\n\n // Form\n 'ds.form.showPassword': 'Show password',\n 'ds.form.hidePassword': 'Hide password',\n 'ds.form.clearInput': 'Clear input',\n 'ds.form.invalidEmail': 'Please enter a valid email address',\n 'ds.form.passwordRequired': 'Password is required',\n\n // Auth\n 'ds.auth.loginTitle': 'Sign in to your account',\n 'ds.auth.signupTitle': 'Create your account',\n 'ds.auth.forgotPasswordTitle': 'Reset your password',\n 'ds.auth.emailLabel': 'Email address',\n 'ds.auth.passwordLabel': 'Password',\n 'ds.auth.rememberMe': 'Remember me',\n 'ds.auth.forgotPassword': 'Forgot your password?',\n 'ds.auth.signIn': 'Sign in',\n 'ds.auth.signUp': 'Sign up',\n 'ds.auth.sendResetLink': 'Send reset link',\n 'ds.auth.backToLogin': 'Back to login',\n\n // Navigation\n 'ds.nav.menuLabel': 'Navigation menu',\n 'ds.nav.toggleSidebar': 'Toggle sidebar',\n 'ds.nav.expandSubmenu': 'Expand submenu',\n 'ds.nav.collapseSubmenu': 'Collapse submenu',\n\n // Report\n 'ds.report.confidenceLabel': 'Confidence score',\n 'ds.report.dataCoverageLabel': 'Data coverage',\n 'ds.report.insufficientData': 'Insufficient data',\n 'ds.report.exportPdf': 'Export as PDF',\n 'ds.report.exportCsv': 'Export as CSV',\n 'ds.report.exportPptx': 'Export as PowerPoint',\n\n // Appearance\n 'ds.appearance.themeLabel': 'Theme',\n 'ds.appearance.darkTheme': 'Dark',\n 'ds.appearance.lightTheme': 'Light',\n 'ds.appearance.highContrastTheme': 'High contrast',\n 'ds.appearance.densityLabel': 'Density',\n 'ds.appearance.comfortableDensity': 'Comfortable',\n 'ds.appearance.compactDensity': 'Compact',\n\n // Pagination\n 'ds.pagination.previous': 'Previous',\n 'ds.pagination.next': 'Next',\n 'ds.pagination.goToPreviousPage': 'Go to previous page',\n 'ds.pagination.goToNextPage': 'Go to next page',\n\n // Calendar\n 'ds.calendar.previousMonth': 'Previous month',\n 'ds.calendar.nextMonth': 'Next month',\n\n // Carousel\n 'ds.carousel.previousSlide': 'Previous slide',\n 'ds.carousel.nextSlide': 'Next slide',\n\n // Methodology\n 'ds.methodology.title': 'Methodology',\n 'ds.methodology.sampleSize': 'Sample Size',\n 'ds.methodology.dataSources': 'Data Sources',\n 'ds.methodology.calculation': 'Calculation',\n\n // BookingEmbed\n 'BookingEmbed.loading': 'Loading calendar...',\n 'BookingEmbed.errorTitle': 'Calendar unavailable',\n 'BookingEmbed.errorDescription': \"We couldn't load the calendar. Please try again or open it in a new tab.\",\n 'BookingEmbed.openInNewTab': 'Open in new tab',\n};\n\nexport interface DSIntlProviderProps {\n /**\n * Locale identifier (e.g., 'en', 'fr', 'de')\n * @default 'en'\n */\n locale?: string;\n\n /**\n * Translated messages for the locale.\n * If not provided, defaults to English messages.\n */\n messages?: Record<string, string>;\n\n /**\n * Additional IntlProvider configuration\n */\n intlConfig?: Partial<IntlConfig>;\n\n /**\n * Child components\n */\n children: React.ReactNode;\n}\n\n/**\n * Design System IntlProvider\n *\n * Provides internationalization context to all design system components.\n * Wrap your app with this provider to enable i18n support.\n */\nexport function DSIntlProvider({\n locale = 'en',\n messages,\n intlConfig,\n children,\n}: DSIntlProviderProps) {\n // Merge provided messages with defaults (provided messages take precedence)\n const mergedMessages = {\n ...defaultMessages,\n ...messages,\n };\n\n return (\n <IntlProvider\n locale={locale}\n messages={mergedMessages}\n defaultLocale=\"en\"\n onError={(err) => {\n // Only log missing translation errors in development\n if (process.env.NODE_ENV === 'development') {\n // Filter out \"MISSING_TRANSLATION\" errors for default messages\n if (err.code !== 'MISSING_TRANSLATION') {\n console.error(err);\n }\n }\n }}\n {...intlConfig}\n >\n {children}\n </IntlProvider>\n );\n}\n\nexport default DSIntlProvider;\n","/**\n * Design System Message Hooks\n *\n * Provides hooks for accessing internationalized messages in components.\n * These hooks are optional - components can still accept string props directly.\n *\n * @example\n * ```tsx\n * import { useMessage, commonMessages } from '@salesmind-ai/design-system';\n *\n * function MyComponent() {\n * const t = useMessage();\n * return <button>{t(commonMessages.save)}</button>;\n * }\n * ```\n */\n\nimport { useIntl, MessageDescriptor, PrimitiveType } from 'react-intl';\nimport { useCallback } from 'react';\n\n/**\n * Format message values type\n */\nexport type MessageValues = Record<string, PrimitiveType>;\n\n/**\n * Hook to get a message formatter function\n *\n * @returns A function that formats messages\n *\n * @example\n * ```tsx\n * const t = useMessage();\n * return <span>{t(commonMessages.loading)}</span>;\n * ```\n */\nexport function useMessage() {\n const intl = useIntl();\n\n const formatMessage = useCallback(\n (descriptor: MessageDescriptor, values?: MessageValues): string => {\n return intl.formatMessage(descriptor, values);\n },\n [intl],\n );\n\n return formatMessage;\n}\n\n/**\n * Hook to get the current locale\n *\n * @returns The current locale string (e.g., 'en', 'fr')\n *\n * @example\n * ```tsx\n * const locale = useLocale();\n * console.log(locale); // 'en'\n * ```\n */\nexport function useLocale(): string {\n const intl = useIntl();\n return intl.locale;\n}\n\n/**\n * Hook to check if RTL is needed for current locale\n *\n * @returns true if the current locale is RTL\n *\n * @example\n * ```tsx\n * const isRTL = useIsRTL();\n * return <div style={{ direction: isRTL ? 'rtl' : 'ltr' }}>...</div>;\n * ```\n */\nexport function useIsRTL(): boolean {\n const locale = useLocale();\n\n // RTL locales\n const rtlLocales = [\n 'ar', // Arabic\n 'he', // Hebrew\n 'fa', // Persian/Farsi\n 'ur', // Urdu\n 'ps', // Pashto\n 'sd', // Sindhi\n 'yi', // Yiddish\n ];\n\n return rtlLocales.some((rtl) => locale === rtl || locale.startsWith(`${rtl}-`));\n}\n\n/**\n * Hook to get the current text direction\n *\n * @returns 'rtl' or 'ltr' based on locale\n *\n * @example\n * ```tsx\n * const dir = useTextDirection();\n * return <div dir={dir}>...</div>;\n * ```\n */\nexport function useTextDirection(): 'rtl' | 'ltr' {\n const isRTL = useIsRTL();\n return isRTL ? 'rtl' : 'ltr';\n}\n\n/**\n * Hook to format a number according to locale\n *\n * @returns A number formatter function\n *\n * @example\n * ```tsx\n * const formatNumber = useNumberFormat();\n * return <span>{formatNumber(1234.56)}</span>; // \"1,234.56\" in en-US\n * ```\n */\nexport function useNumberFormat() {\n const intl = useIntl();\n\n const formatNumber = useCallback(\n (value: number, options?: Intl.NumberFormatOptions): string => {\n return intl.formatNumber(value, options as Parameters<typeof intl.formatNumber>[1]);\n },\n [intl],\n );\n\n return formatNumber;\n}\n\n/**\n * Hook to format a date according to locale\n *\n * @returns A date formatter function\n *\n * @example\n * ```tsx\n * const formatDate = useDateFormat();\n * return <span>{formatDate(new Date())}</span>;\n * ```\n */\nexport function useDateFormat() {\n const intl = useIntl();\n\n const formatDate = useCallback(\n (value: Date | number, options?: Intl.DateTimeFormatOptions): string => {\n return intl.formatDate(value, options);\n },\n [intl],\n );\n\n return formatDate;\n}\n\n/**\n * Hook to format a relative time (e.g., \"2 days ago\")\n *\n * @returns A relative time formatter function\n *\n * @example\n * ```tsx\n * const formatRelative = useRelativeTime();\n * return <span>{formatRelative(-2, 'day')}</span>; // \"2 days ago\"\n * ```\n */\nexport function useRelativeTime() {\n const intl = useIntl();\n\n const formatRelativeTime = useCallback(\n (\n value: number,\n unit: Intl.RelativeTimeFormatUnit,\n options?: Intl.RelativeTimeFormatOptions,\n ): string => {\n return intl.formatRelativeTime(value, unit, options as Parameters<typeof intl.formatRelativeTime>[2]);\n },\n [intl],\n );\n\n return formatRelativeTime;\n}\n","/**\n * Design System Internationalization Module\n *\n * Provides i18n infrastructure for design system components.\n *\n * @module i18n\n */\n\n// Provider\nexport { DSIntlProvider, type DSIntlProviderProps } from './IntlProvider';\n\n// Hooks\nexport {\n useMessage,\n useLocale,\n useIsRTL,\n useTextDirection,\n useNumberFormat,\n useDateFormat,\n useRelativeTime,\n type MessageValues,\n} from './useMessage';\n\n// Messages\nexport {\n commonMessages,\n alertMessages,\n toastMessages,\n dialogMessages,\n formMessages,\n authMessages,\n navigationMessages,\n reportMessages,\n appearanceMessages,\n paginationMessages,\n calendarMessages,\n carouselMessages,\n methodologyMessages,\n bookingEmbedMessages,\n allMessages,\n} from './messages';\n\n// Re-export react-intl types for convenience\nexport type { MessageDescriptor } from 'react-intl';\nexport { defineMessages, FormattedMessage, FormattedNumber, FormattedDate } from 'react-intl';\n"]}