@gyramais/gyra-design 0.2.21 → 0.2.23

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 (312) hide show
  1. package/dist/components/AiParecer/AiParecer.d.ts +75 -0
  2. package/dist/components/AiParecer/index.d.ts +1 -0
  3. package/dist/components/AiParecer/index.js +7 -0
  4. package/dist/components/AiParecer/index.js.map +1 -0
  5. package/dist/components/Email/Email.d.ts +26 -0
  6. package/dist/components/Email/index.d.ts +2 -0
  7. package/dist/components/Email/index.js +2 -0
  8. package/dist/components/Email/index.js.map +1 -0
  9. package/dist/components/Gauge/Gauge.d.ts +28 -0
  10. package/dist/components/Gauge/index.d.ts +2 -0
  11. package/dist/components/Gauge/index.js +7 -0
  12. package/dist/components/Gauge/index.js.map +1 -0
  13. package/dist/emails/balance-sheet-finalized/components/AiParecer/AiParecer.d.ts +75 -0
  14. package/dist/emails/balance-sheet-finalized/components/AiParecer/index.d.ts +1 -0
  15. package/dist/emails/balance-sheet-finalized/components/Avatar/Avatar.d.ts +10 -0
  16. package/dist/emails/balance-sheet-finalized/components/Avatar/index.d.ts +1 -0
  17. package/dist/emails/balance-sheet-finalized/components/Brasil/Brasil.d.ts +10 -0
  18. package/dist/emails/balance-sheet-finalized/components/Brasil/index.d.ts +1 -0
  19. package/dist/emails/balance-sheet-finalized/components/Button/Button.d.ts +19 -0
  20. package/dist/emails/balance-sheet-finalized/components/Button/index.d.ts +1 -0
  21. package/dist/emails/balance-sheet-finalized/components/Card/Card.d.ts +27 -0
  22. package/dist/emails/balance-sheet-finalized/components/Card/index.d.ts +1 -0
  23. package/dist/emails/balance-sheet-finalized/components/Chart/Chart.d.ts +43 -0
  24. package/dist/emails/balance-sheet-finalized/components/Chart/index.d.ts +1 -0
  25. package/dist/emails/balance-sheet-finalized/components/ChatWidget/ChatMessageBubble.d.ts +7 -0
  26. package/dist/emails/balance-sheet-finalized/components/ChatWidget/ChatWidget.d.ts +30 -0
  27. package/dist/emails/balance-sheet-finalized/components/ChatWidget/index.d.ts +3 -0
  28. package/dist/emails/balance-sheet-finalized/components/ChatWidget/types.d.ts +18 -0
  29. package/dist/emails/balance-sheet-finalized/components/Checkbox/Checkbox.d.ts +12 -0
  30. package/dist/emails/balance-sheet-finalized/components/Checkbox/index.d.ts +1 -0
  31. package/dist/emails/balance-sheet-finalized/components/Col/Col.d.ts +17 -0
  32. package/dist/emails/balance-sheet-finalized/components/Col/index.d.ts +1 -0
  33. package/dist/emails/balance-sheet-finalized/components/Collapse/Collapse.d.ts +10 -0
  34. package/dist/emails/balance-sheet-finalized/components/Collapse/CollapseIcon.d.ts +10 -0
  35. package/dist/emails/balance-sheet-finalized/components/Collapse/index.d.ts +2 -0
  36. package/dist/emails/balance-sheet-finalized/components/ContextMenu/ContextMenu.d.ts +45 -0
  37. package/dist/emails/balance-sheet-finalized/components/ContextMenu/index.d.ts +1 -0
  38. package/dist/emails/balance-sheet-finalized/components/DistributionBar/DistributionBar.d.ts +28 -0
  39. package/dist/emails/balance-sheet-finalized/components/DistributionBar/index.d.ts +1 -0
  40. package/dist/emails/balance-sheet-finalized/components/Divider/Divider.d.ts +10 -0
  41. package/dist/emails/balance-sheet-finalized/components/Divider/index.d.ts +1 -0
  42. package/dist/emails/balance-sheet-finalized/components/Drawer/Drawer.d.ts +16 -0
  43. package/dist/emails/balance-sheet-finalized/components/Drawer/index.d.ts +1 -0
  44. package/dist/emails/balance-sheet-finalized/components/DropdownMenu/DropdownMenu.d.ts +21 -0
  45. package/dist/emails/balance-sheet-finalized/components/DropdownMenu/index.d.ts +1 -0
  46. package/dist/emails/balance-sheet-finalized/components/Email/Email.d.ts +26 -0
  47. package/dist/emails/balance-sheet-finalized/components/Email/index.d.ts +2 -0
  48. package/dist/emails/balance-sheet-finalized/components/Empty/Empty.d.ts +10 -0
  49. package/dist/emails/balance-sheet-finalized/components/Empty/index.d.ts +1 -0
  50. package/dist/emails/balance-sheet-finalized/components/Filter/Filter.d.ts +21 -0
  51. package/dist/emails/balance-sheet-finalized/components/Filter/MultipleFilter.d.ts +27 -0
  52. package/dist/emails/balance-sheet-finalized/components/Filter/UniqueFilter.d.ts +27 -0
  53. package/dist/emails/balance-sheet-finalized/components/Filter/index.d.ts +3 -0
  54. package/dist/emails/balance-sheet-finalized/components/FloatingCard/FloatingCard.d.ts +12 -0
  55. package/dist/emails/balance-sheet-finalized/components/FloatingCard/index.d.ts +1 -0
  56. package/dist/emails/balance-sheet-finalized/components/Form/Form.d.ts +3 -0
  57. package/dist/emails/balance-sheet-finalized/components/Form/Item.d.ts +11 -0
  58. package/dist/emails/balance-sheet-finalized/components/Form/index.d.ts +1 -0
  59. package/dist/emails/balance-sheet-finalized/components/HoverCard/HoverCard.d.ts +14 -0
  60. package/dist/emails/balance-sheet-finalized/components/HoverCard/index.d.ts +1 -0
  61. package/dist/emails/balance-sheet-finalized/components/Icon/Icon.d.ts +11 -0
  62. package/dist/emails/balance-sheet-finalized/components/Icon/index.d.ts +1 -0
  63. package/dist/emails/balance-sheet-finalized/components/IconDisplay/IconDisplay.d.ts +10 -0
  64. package/dist/emails/balance-sheet-finalized/components/IconDisplay/index.d.ts +1 -0
  65. package/dist/emails/balance-sheet-finalized/components/Information/Information.d.ts +10 -0
  66. package/dist/emails/balance-sheet-finalized/components/Information/index.d.ts +1 -0
  67. package/dist/emails/balance-sheet-finalized/components/Input/Input.d.ts +55 -0
  68. package/dist/emails/balance-sheet-finalized/components/Input/Mention.d.ts +5 -0
  69. package/dist/emails/balance-sheet-finalized/components/Input/index.d.ts +1 -0
  70. package/dist/emails/balance-sheet-finalized/components/Label/Label.d.ts +5 -0
  71. package/dist/emails/balance-sheet-finalized/components/Label/index.d.ts +1 -0
  72. package/dist/emails/balance-sheet-finalized/components/Layout/Content.d.ts +9 -0
  73. package/dist/emails/balance-sheet-finalized/components/Layout/Footer.d.ts +9 -0
  74. package/dist/emails/balance-sheet-finalized/components/Layout/Header.d.ts +9 -0
  75. package/dist/emails/balance-sheet-finalized/components/Layout/Layout.d.ts +10 -0
  76. package/dist/emails/balance-sheet-finalized/components/Layout/Sider.d.ts +9 -0
  77. package/dist/emails/balance-sheet-finalized/components/Layout/index.d.ts +5 -0
  78. package/dist/emails/balance-sheet-finalized/components/List/List.d.ts +18 -0
  79. package/dist/emails/balance-sheet-finalized/components/List/index.d.ts +1 -0
  80. package/dist/emails/balance-sheet-finalized/components/Loading/Loading.d.ts +10 -0
  81. package/dist/emails/balance-sheet-finalized/components/Loading/index.d.ts +1 -0
  82. package/dist/emails/balance-sheet-finalized/components/Logo/Logo.d.ts +12 -0
  83. package/dist/emails/balance-sheet-finalized/components/Logo/index.d.ts +1 -0
  84. package/dist/emails/balance-sheet-finalized/components/Menubar/Menubar.d.ts +24 -0
  85. package/dist/emails/balance-sheet-finalized/components/Menubar/index.d.ts +1 -0
  86. package/dist/emails/balance-sheet-finalized/components/Modal/Modal.d.ts +25 -0
  87. package/dist/emails/balance-sheet-finalized/components/Modal/index.d.ts +1 -0
  88. package/dist/emails/balance-sheet-finalized/components/MultiSelectPicker/MultiSelectPicker.d.ts +42 -0
  89. package/dist/emails/balance-sheet-finalized/components/MultiSelectPicker/index.d.ts +1 -0
  90. package/dist/emails/balance-sheet-finalized/components/OperatorPicker/OperatorPicker.d.ts +26 -0
  91. package/dist/emails/balance-sheet-finalized/components/OperatorPicker/index.d.ts +1 -0
  92. package/dist/emails/balance-sheet-finalized/components/PickerPopover/PickerPopover.d.ts +56 -0
  93. package/dist/emails/balance-sheet-finalized/components/PickerPopover/index.d.ts +1 -0
  94. package/dist/emails/balance-sheet-finalized/components/Popover/Popover.d.ts +16 -0
  95. package/dist/emails/balance-sheet-finalized/components/Popover/index.d.ts +1 -0
  96. package/dist/emails/balance-sheet-finalized/components/ProcessingChip/ProcessingChip.d.ts +20 -0
  97. package/dist/emails/balance-sheet-finalized/components/ProcessingChip/index.d.ts +1 -0
  98. package/dist/emails/balance-sheet-finalized/components/Progress/Progress.d.ts +9 -0
  99. package/dist/emails/balance-sheet-finalized/components/Progress/index.d.ts +1 -0
  100. package/dist/emails/balance-sheet-finalized/components/RadioGroup/RadioGroup.d.ts +18 -0
  101. package/dist/emails/balance-sheet-finalized/components/RadioGroup/index.d.ts +1 -0
  102. package/dist/emails/balance-sheet-finalized/components/RichInput/RichInput.d.ts +15 -0
  103. package/dist/emails/balance-sheet-finalized/components/RichInput/images.d.ts +9 -0
  104. package/dist/emails/balance-sheet-finalized/components/RichInput/index.d.ts +1 -0
  105. package/dist/emails/balance-sheet-finalized/components/Row/Row.d.ts +18 -0
  106. package/dist/emails/balance-sheet-finalized/components/Row/index.d.ts +1 -0
  107. package/dist/emails/balance-sheet-finalized/components/RuleSearchPicker/RuleSearchPicker.d.ts +46 -0
  108. package/dist/emails/balance-sheet-finalized/components/RuleSearchPicker/index.d.ts +1 -0
  109. package/dist/emails/balance-sheet-finalized/components/ScoreBar/ScoreBar.d.ts +30 -0
  110. package/dist/emails/balance-sheet-finalized/components/ScoreBar/index.d.ts +1 -0
  111. package/dist/emails/balance-sheet-finalized/components/SegmentedPicker/SegmentedPicker.d.ts +27 -0
  112. package/dist/emails/balance-sheet-finalized/components/SegmentedPicker/index.d.ts +1 -0
  113. package/dist/emails/balance-sheet-finalized/components/SegmentedToggle/SegmentedToggle.d.ts +25 -0
  114. package/dist/emails/balance-sheet-finalized/components/SegmentedToggle/index.d.ts +1 -0
  115. package/dist/emails/balance-sheet-finalized/components/Select/Select.d.ts +27 -0
  116. package/dist/emails/balance-sheet-finalized/components/Select/index.d.ts +1 -0
  117. package/dist/emails/balance-sheet-finalized/components/SelectTree/SelectTree.d.ts +35 -0
  118. package/dist/emails/balance-sheet-finalized/components/SelectTree/index.d.ts +1 -0
  119. package/dist/emails/balance-sheet-finalized/components/Selector/Selector.d.ts +27 -0
  120. package/dist/emails/balance-sheet-finalized/components/Selector/index.d.ts +1 -0
  121. package/dist/emails/balance-sheet-finalized/components/StatusTag/StatusTag.d.ts +16 -0
  122. package/dist/emails/balance-sheet-finalized/components/StatusTag/index.d.ts +1 -0
  123. package/dist/emails/balance-sheet-finalized/components/Stepper/Stepper.d.ts +15 -0
  124. package/dist/emails/balance-sheet-finalized/components/Stepper/index.d.ts +1 -0
  125. package/dist/emails/balance-sheet-finalized/components/Switch/Switch.d.ts +11 -0
  126. package/dist/emails/balance-sheet-finalized/components/Switch/index.d.ts +1 -0
  127. package/dist/emails/balance-sheet-finalized/components/SyncChip/SyncChip.d.ts +17 -0
  128. package/dist/emails/balance-sheet-finalized/components/SyncChip/index.d.ts +1 -0
  129. package/dist/emails/balance-sheet-finalized/components/Table/Table.d.ts +29 -0
  130. package/dist/emails/balance-sheet-finalized/components/Table/index.d.ts +1 -0
  131. package/dist/emails/balance-sheet-finalized/components/Tabs/Tabs.d.ts +20 -0
  132. package/dist/emails/balance-sheet-finalized/components/Tabs/index.d.ts +1 -0
  133. package/dist/emails/balance-sheet-finalized/components/Tag/Tag.d.ts +10 -0
  134. package/dist/emails/balance-sheet-finalized/components/Tag/index.d.ts +1 -0
  135. package/dist/emails/balance-sheet-finalized/components/Toast/Toast.d.ts +4 -0
  136. package/dist/emails/balance-sheet-finalized/components/Toast/index.d.ts +1 -0
  137. package/dist/emails/balance-sheet-finalized/components/Tooltip/Tooltip.d.ts +16 -0
  138. package/dist/emails/balance-sheet-finalized/components/Tooltip/index.d.ts +1 -0
  139. package/dist/emails/balance-sheet-finalized/components/TourGuide/TourGuide.d.ts +39 -0
  140. package/dist/emails/balance-sheet-finalized/components/TourGuide/index.d.ts +1 -0
  141. package/dist/emails/balance-sheet-finalized/components/Waypoint/Waypoint.d.ts +7 -0
  142. package/dist/emails/balance-sheet-finalized/components/Waypoint/index.d.ts +1 -0
  143. package/dist/emails/balance-sheet-finalized/emails/balance-sheet-finalized/index.d.ts +33 -0
  144. package/dist/emails/balance-sheet-finalized/emails/email/index.d.ts +94 -0
  145. package/dist/emails/balance-sheet-finalized/index.d.ts +62 -0
  146. package/dist/emails/balance-sheet-finalized/index.esm.js +2 -0
  147. package/dist/emails/balance-sheet-finalized/index.esm.js.map +1 -0
  148. package/dist/emails/balance-sheet-finalized/index.js +2 -0
  149. package/dist/emails/balance-sheet-finalized/index.js.map +1 -0
  150. package/dist/emails/balance-sheet-finalized/shadcn/checkbox.d.ts +4 -0
  151. package/dist/emails/balance-sheet-finalized/shadcn/form.d.ts +23 -0
  152. package/dist/emails/balance-sheet-finalized/shadcn/hover-card.d.ts +6 -0
  153. package/dist/emails/balance-sheet-finalized/shadcn/label.d.ts +5 -0
  154. package/dist/emails/balance-sheet-finalized/shadcn/lib/utils.d.ts +2 -0
  155. package/dist/emails/balance-sheet-finalized/shadcn/menubar.d.ts +33 -0
  156. package/dist/emails/balance-sheet-finalized/shadcn/popover.d.ts +6 -0
  157. package/dist/emails/balance-sheet-finalized/shadcn/radio-group.d.ts +5 -0
  158. package/dist/emails/balance-sheet-finalized/shadcn/switch.d.ts +4 -0
  159. package/dist/emails/balance-sheet-finalized/shadcn/tabs.d.ts +7 -0
  160. package/dist/emails/balance-sheet-finalized/shadcn/tooltip.d.ts +7 -0
  161. package/dist/emails/balance-sheet-finalized/theme.d.ts +20 -0
  162. package/dist/emails/email/components/AiParecer/AiParecer.d.ts +75 -0
  163. package/dist/emails/email/components/AiParecer/index.d.ts +1 -0
  164. package/dist/emails/email/components/Avatar/Avatar.d.ts +10 -0
  165. package/dist/emails/email/components/Avatar/index.d.ts +1 -0
  166. package/dist/emails/email/components/Brasil/Brasil.d.ts +10 -0
  167. package/dist/emails/email/components/Brasil/index.d.ts +1 -0
  168. package/dist/emails/email/components/Button/Button.d.ts +19 -0
  169. package/dist/emails/email/components/Button/index.d.ts +1 -0
  170. package/dist/emails/email/components/Card/Card.d.ts +27 -0
  171. package/dist/emails/email/components/Card/index.d.ts +1 -0
  172. package/dist/emails/email/components/Chart/Chart.d.ts +43 -0
  173. package/dist/emails/email/components/Chart/index.d.ts +1 -0
  174. package/dist/emails/email/components/ChatWidget/ChatMessageBubble.d.ts +7 -0
  175. package/dist/emails/email/components/ChatWidget/ChatWidget.d.ts +30 -0
  176. package/dist/emails/email/components/ChatWidget/index.d.ts +3 -0
  177. package/dist/emails/email/components/ChatWidget/types.d.ts +18 -0
  178. package/dist/emails/email/components/Checkbox/Checkbox.d.ts +12 -0
  179. package/dist/emails/email/components/Checkbox/index.d.ts +1 -0
  180. package/dist/emails/email/components/Col/Col.d.ts +17 -0
  181. package/dist/emails/email/components/Col/index.d.ts +1 -0
  182. package/dist/emails/email/components/Collapse/Collapse.d.ts +10 -0
  183. package/dist/emails/email/components/Collapse/CollapseIcon.d.ts +10 -0
  184. package/dist/emails/email/components/Collapse/index.d.ts +2 -0
  185. package/dist/emails/email/components/ContextMenu/ContextMenu.d.ts +45 -0
  186. package/dist/emails/email/components/ContextMenu/index.d.ts +1 -0
  187. package/dist/emails/email/components/DistributionBar/DistributionBar.d.ts +28 -0
  188. package/dist/emails/email/components/DistributionBar/index.d.ts +1 -0
  189. package/dist/emails/email/components/Divider/Divider.d.ts +10 -0
  190. package/dist/emails/email/components/Divider/index.d.ts +1 -0
  191. package/dist/emails/email/components/Drawer/Drawer.d.ts +16 -0
  192. package/dist/emails/email/components/Drawer/index.d.ts +1 -0
  193. package/dist/emails/email/components/DropdownMenu/DropdownMenu.d.ts +21 -0
  194. package/dist/emails/email/components/DropdownMenu/index.d.ts +1 -0
  195. package/dist/emails/email/components/Email/Email.d.ts +26 -0
  196. package/dist/emails/email/components/Email/index.d.ts +2 -0
  197. package/dist/emails/email/components/Empty/Empty.d.ts +10 -0
  198. package/dist/emails/email/components/Empty/index.d.ts +1 -0
  199. package/dist/emails/email/components/Filter/Filter.d.ts +21 -0
  200. package/dist/emails/email/components/Filter/MultipleFilter.d.ts +27 -0
  201. package/dist/emails/email/components/Filter/UniqueFilter.d.ts +27 -0
  202. package/dist/emails/email/components/Filter/index.d.ts +3 -0
  203. package/dist/emails/email/components/FloatingCard/FloatingCard.d.ts +12 -0
  204. package/dist/emails/email/components/FloatingCard/index.d.ts +1 -0
  205. package/dist/emails/email/components/Form/Form.d.ts +3 -0
  206. package/dist/emails/email/components/Form/Item.d.ts +11 -0
  207. package/dist/emails/email/components/Form/index.d.ts +1 -0
  208. package/dist/emails/email/components/HoverCard/HoverCard.d.ts +14 -0
  209. package/dist/emails/email/components/HoverCard/index.d.ts +1 -0
  210. package/dist/emails/email/components/Icon/Icon.d.ts +11 -0
  211. package/dist/emails/email/components/Icon/index.d.ts +1 -0
  212. package/dist/emails/email/components/IconDisplay/IconDisplay.d.ts +10 -0
  213. package/dist/emails/email/components/IconDisplay/index.d.ts +1 -0
  214. package/dist/emails/email/components/Information/Information.d.ts +10 -0
  215. package/dist/emails/email/components/Information/index.d.ts +1 -0
  216. package/dist/emails/email/components/Input/Input.d.ts +55 -0
  217. package/dist/emails/email/components/Input/Mention.d.ts +5 -0
  218. package/dist/emails/email/components/Input/index.d.ts +1 -0
  219. package/dist/emails/email/components/Label/Label.d.ts +5 -0
  220. package/dist/emails/email/components/Label/index.d.ts +1 -0
  221. package/dist/emails/email/components/Layout/Content.d.ts +9 -0
  222. package/dist/emails/email/components/Layout/Footer.d.ts +9 -0
  223. package/dist/emails/email/components/Layout/Header.d.ts +9 -0
  224. package/dist/emails/email/components/Layout/Layout.d.ts +10 -0
  225. package/dist/emails/email/components/Layout/Sider.d.ts +9 -0
  226. package/dist/emails/email/components/Layout/index.d.ts +5 -0
  227. package/dist/emails/email/components/List/List.d.ts +18 -0
  228. package/dist/emails/email/components/List/index.d.ts +1 -0
  229. package/dist/emails/email/components/Loading/Loading.d.ts +10 -0
  230. package/dist/emails/email/components/Loading/index.d.ts +1 -0
  231. package/dist/emails/email/components/Logo/Logo.d.ts +12 -0
  232. package/dist/emails/email/components/Logo/index.d.ts +1 -0
  233. package/dist/emails/email/components/Menubar/Menubar.d.ts +24 -0
  234. package/dist/emails/email/components/Menubar/index.d.ts +1 -0
  235. package/dist/emails/email/components/Modal/Modal.d.ts +25 -0
  236. package/dist/emails/email/components/Modal/index.d.ts +1 -0
  237. package/dist/emails/email/components/MultiSelectPicker/MultiSelectPicker.d.ts +42 -0
  238. package/dist/emails/email/components/MultiSelectPicker/index.d.ts +1 -0
  239. package/dist/emails/email/components/OperatorPicker/OperatorPicker.d.ts +26 -0
  240. package/dist/emails/email/components/OperatorPicker/index.d.ts +1 -0
  241. package/dist/emails/email/components/PickerPopover/PickerPopover.d.ts +56 -0
  242. package/dist/emails/email/components/PickerPopover/index.d.ts +1 -0
  243. package/dist/emails/email/components/Popover/Popover.d.ts +16 -0
  244. package/dist/emails/email/components/Popover/index.d.ts +1 -0
  245. package/dist/emails/email/components/ProcessingChip/ProcessingChip.d.ts +20 -0
  246. package/dist/emails/email/components/ProcessingChip/index.d.ts +1 -0
  247. package/dist/emails/email/components/Progress/Progress.d.ts +9 -0
  248. package/dist/emails/email/components/Progress/index.d.ts +1 -0
  249. package/dist/emails/email/components/RadioGroup/RadioGroup.d.ts +18 -0
  250. package/dist/emails/email/components/RadioGroup/index.d.ts +1 -0
  251. package/dist/emails/email/components/RichInput/RichInput.d.ts +15 -0
  252. package/dist/emails/email/components/RichInput/images.d.ts +9 -0
  253. package/dist/emails/email/components/RichInput/index.d.ts +1 -0
  254. package/dist/emails/email/components/Row/Row.d.ts +18 -0
  255. package/dist/emails/email/components/Row/index.d.ts +1 -0
  256. package/dist/emails/email/components/RuleSearchPicker/RuleSearchPicker.d.ts +46 -0
  257. package/dist/emails/email/components/RuleSearchPicker/index.d.ts +1 -0
  258. package/dist/emails/email/components/ScoreBar/ScoreBar.d.ts +30 -0
  259. package/dist/emails/email/components/ScoreBar/index.d.ts +1 -0
  260. package/dist/emails/email/components/SegmentedPicker/SegmentedPicker.d.ts +27 -0
  261. package/dist/emails/email/components/SegmentedPicker/index.d.ts +1 -0
  262. package/dist/emails/email/components/SegmentedToggle/SegmentedToggle.d.ts +25 -0
  263. package/dist/emails/email/components/SegmentedToggle/index.d.ts +1 -0
  264. package/dist/emails/email/components/Select/Select.d.ts +27 -0
  265. package/dist/emails/email/components/Select/index.d.ts +1 -0
  266. package/dist/emails/email/components/SelectTree/SelectTree.d.ts +35 -0
  267. package/dist/emails/email/components/SelectTree/index.d.ts +1 -0
  268. package/dist/emails/email/components/Selector/Selector.d.ts +27 -0
  269. package/dist/emails/email/components/Selector/index.d.ts +1 -0
  270. package/dist/emails/email/components/StatusTag/StatusTag.d.ts +16 -0
  271. package/dist/emails/email/components/StatusTag/index.d.ts +1 -0
  272. package/dist/emails/email/components/Stepper/Stepper.d.ts +15 -0
  273. package/dist/emails/email/components/Stepper/index.d.ts +1 -0
  274. package/dist/emails/email/components/Switch/Switch.d.ts +11 -0
  275. package/dist/emails/email/components/Switch/index.d.ts +1 -0
  276. package/dist/emails/email/components/SyncChip/SyncChip.d.ts +17 -0
  277. package/dist/emails/email/components/SyncChip/index.d.ts +1 -0
  278. package/dist/emails/email/components/Table/Table.d.ts +29 -0
  279. package/dist/emails/email/components/Table/index.d.ts +1 -0
  280. package/dist/emails/email/components/Tabs/Tabs.d.ts +20 -0
  281. package/dist/emails/email/components/Tabs/index.d.ts +1 -0
  282. package/dist/emails/email/components/Tag/Tag.d.ts +10 -0
  283. package/dist/emails/email/components/Tag/index.d.ts +1 -0
  284. package/dist/emails/email/components/Toast/Toast.d.ts +4 -0
  285. package/dist/emails/email/components/Toast/index.d.ts +1 -0
  286. package/dist/emails/email/components/Tooltip/Tooltip.d.ts +16 -0
  287. package/dist/emails/email/components/Tooltip/index.d.ts +1 -0
  288. package/dist/emails/email/components/TourGuide/TourGuide.d.ts +39 -0
  289. package/dist/emails/email/components/TourGuide/index.d.ts +1 -0
  290. package/dist/emails/email/components/Waypoint/Waypoint.d.ts +7 -0
  291. package/dist/emails/email/components/Waypoint/index.d.ts +1 -0
  292. package/dist/emails/email/emails/balance-sheet-finalized/index.d.ts +33 -0
  293. package/dist/emails/email/emails/email/index.d.ts +94 -0
  294. package/dist/emails/email/index.d.ts +62 -0
  295. package/dist/emails/email/index.esm.js +2 -0
  296. package/dist/emails/email/index.esm.js.map +1 -0
  297. package/dist/emails/email/index.js +2 -0
  298. package/dist/emails/email/index.js.map +1 -0
  299. package/dist/emails/email/shadcn/checkbox.d.ts +4 -0
  300. package/dist/emails/email/shadcn/form.d.ts +23 -0
  301. package/dist/emails/email/shadcn/hover-card.d.ts +6 -0
  302. package/dist/emails/email/shadcn/label.d.ts +5 -0
  303. package/dist/emails/email/shadcn/lib/utils.d.ts +2 -0
  304. package/dist/emails/email/shadcn/menubar.d.ts +33 -0
  305. package/dist/emails/email/shadcn/popover.d.ts +6 -0
  306. package/dist/emails/email/shadcn/radio-group.d.ts +5 -0
  307. package/dist/emails/email/shadcn/switch.d.ts +4 -0
  308. package/dist/emails/email/shadcn/tabs.d.ts +7 -0
  309. package/dist/emails/email/shadcn/tooltip.d.ts +7 -0
  310. package/dist/emails/email/theme.d.ts +20 -0
  311. package/dist/index.css +289 -0
  312. package/package.json +1 -1
@@ -0,0 +1,75 @@
1
+ import React from "react";
2
+ import "./index.css";
3
+ export type AiParecerVerdictTone = "success" | "warning" | "danger" | "info";
4
+ type AiParecerProps = {
5
+ id?: string;
6
+ className?: string;
7
+ /**
8
+ * Chip de veredito exibido a direita do badge (ex: "Risco médio").
9
+ * Opcional.
10
+ */
11
+ verdict?: React.ReactNode;
12
+ verdictTone?: AiParecerVerdictTone;
13
+ /**
14
+ * Score (ex: nota GYRA+ IA) exibido como pill a esquerda do chip de
15
+ * veredito. Aceita number ou node. Opcional.
16
+ */
17
+ score?: React.ReactNode;
18
+ /** Rotulo do score. Default: "Score GYRA+ IA". */
19
+ scoreLabel?: string;
20
+ /**
21
+ * Conteudo do parecer: tipicamente um ou mais `<AiParecer.Topic>`
22
+ * (Resumo Executivo, Pontos de Atenção e Risco, etc).
23
+ */
24
+ children?: React.ReactNode;
25
+ /**
26
+ * Fontes consultadas, exibidas no rodape com um icone de base de dados
27
+ * (ex: "Receita Federal · Quod · Serasa"). Opcional.
28
+ */
29
+ sources?: React.ReactNode;
30
+ /**
31
+ * Grau de confianca do parecer, exibido no rodape (ex: "96%" vira
32
+ * "Confiança 96%"). Aceita number ou node. Opcional.
33
+ */
34
+ confidence?: React.ReactNode;
35
+ /**
36
+ * Callbacks de feedback. Quando algum e' passado, o rodape mostra os
37
+ * botoes padrao (👍 / 👎 / regenerar) com icones SVG proprios — sem
38
+ * depender de nenhuma fonte de icone externa. O estado de "util/nao-util"
39
+ * fica destacado automaticamente.
40
+ */
41
+ onFeedbackUp?: () => void;
42
+ onFeedbackDown?: () => void;
43
+ onRegenerate?: () => void;
44
+ /**
45
+ * Acoes customizadas do rodape. Quando presente, SUBSTITUI os botoes de
46
+ * feedback padrao. Use a classe `gyramais-ai-parecer__btn` pro estilo.
47
+ */
48
+ actions?: React.ReactNode;
49
+ /**
50
+ * Rodape totalmente customizado. Quando presente, substitui o rodape
51
+ * padrao montado a partir de `sources` / `confidence` / acoes.
52
+ */
53
+ footer?: React.ReactNode;
54
+ };
55
+ type AiParecerTopicProps = {
56
+ className?: string;
57
+ label: React.ReactNode;
58
+ /** Icone a esquerda do topico (ex: <DescriptionOutlinedIcon />). */
59
+ icon?: React.ReactNode;
60
+ /** `warning` destaca o topico (fundo + icone em tom de alerta). */
61
+ tone?: "default" | "warning";
62
+ children?: React.ReactNode;
63
+ };
64
+ declare const AiParecerTopic: ({ className, label, icon, tone, children, }: AiParecerTopicProps) => React.JSX.Element;
65
+ /**
66
+ * Faixa padrao "Parecer GYRA+ IA" usada em todas as seções de parecer
67
+ * gerado por IA (analise financeira etc). Badge roxo com gradiente, label
68
+ * em uppercase e chip de veredito opcional. O conteudo (topicos) vem como
69
+ * children. Use `AiParecer.Topic` para padronizar cada bloco.
70
+ */
71
+ declare const AiParecer: {
72
+ ({ id, className, verdict, verdictTone, score, scoreLabel, children, sources, confidence, onFeedbackUp, onFeedbackDown, onRegenerate, actions, footer, }: AiParecerProps): React.JSX.Element;
73
+ Topic: ({ className, label, icon, tone, children, }: AiParecerTopicProps) => React.JSX.Element;
74
+ };
75
+ export { AiParecer, AiParecerTopic };
@@ -0,0 +1 @@
1
+ export * from "./AiParecer";
@@ -0,0 +1,7 @@
1
+ "use client";import e,{useState as a}from"react";function r(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var t,c={exports:{}};
2
+ /*!
3
+ Copyright (c) 2018 Jed Watson.
4
+ Licensed under the MIT License (MIT), see
5
+ http://jedwatson.github.io/classnames
6
+ */t=c,function(){var e={}.hasOwnProperty;function a(){for(var e="",a=0;a<arguments.length;a++){var t=arguments[a];t&&(e=c(e,r(t)))}return e}function r(r){if("string"==typeof r||"number"==typeof r)return r;if("object"!=typeof r)return"";if(Array.isArray(r))return a.apply(null,r);if(r.toString!==Object.prototype.toString&&!r.toString.toString().includes("[native code]"))return r.toString();var t="";for(var n in r)e.call(r,n)&&r[n]&&(t=c(t,n));return t}function c(e,a){return a?e?e+" "+a:e+a:e}t.exports?(a.default=a,t.exports=a):window.classNames=a}();var n=r(c.exports);const i=({className:a,label:r,icon:t,tone:c="default",children:i})=>e.createElement("div",{className:n("gyramais-ai-parecer__topic",`gyramais-ai-parecer__topic--${c}`,a)},t&&e.createElement("div",{className:"gyramais-ai-parecer__topic-icon"},t),e.createElement("div",{className:"gyramais-ai-parecer__topic-body"},e.createElement("span",{className:"gyramais-ai-parecer__topic-label"},r),e.createElement("div",{className:"gyramais-ai-parecer__topic-content"},i??"-"))),l={width:14,height:14,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0},s=()=>e.createElement("svg",{className:"gyramais-ai-parecer__src-icon",...l,width:12,height:12},e.createElement("ellipse",{cx:"12",cy:"5",rx:"9",ry:"3"}),e.createElement("path",{d:"M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5"}),e.createElement("path",{d:"M3 12c0 1.66 4 3 9 3s9-1.34 9-3"})),m=()=>e.createElement("svg",{...l},e.createElement("path",{d:"M7 10v12"}),e.createElement("path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z"})),o=()=>e.createElement("svg",{...l},e.createElement("path",{d:"M17 14V2"}),e.createElement("path",{d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z"})),p=()=>e.createElement("svg",{...l},e.createElement("path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"}),e.createElement("path",{d:"M21 3v5h-5"}),e.createElement("path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"}),e.createElement("path",{d:"M8 16H3v5"})),d=({id:r,className:t,verdict:c,verdictTone:i="info",score:l,scoreLabel:d="Score GYRA+ IA",children:_,sources:u,confidence:g,onFeedbackUp:y,onFeedbackDown:E,onRegenerate:v,actions:b,footer:h})=>{const[N,f]=a(null),w=null!=l&&""!==l,M=null!=c&&""!==c,k=null!=u&&""!==u,x=null!=g&&""!==g,A=null!=b&&""!==b,L=!(A||!y&&!E&&!v),S=k||x||A||L,C=L&&e.createElement(e.Fragment,null,y&&e.createElement("button",{type:"button",title:"Útil","aria-label":"Útil","aria-pressed":"up"===N,className:n("gyramais-ai-parecer__btn",{"gyramais-ai-parecer__btn--active":"up"===N}),onClick:()=>{"up"!==N&&(f("up"),y())}},e.createElement(m,null)),E&&e.createElement("button",{type:"button",title:"Não útil","aria-label":"Não útil","aria-pressed":"down"===N,className:n("gyramais-ai-parecer__btn",{"gyramais-ai-parecer__btn--active":"down"===N}),onClick:()=>{"down"!==N&&(f("down"),E())}},e.createElement(o,null)),v&&e.createElement("button",{type:"button",title:"Regenerar","aria-label":"Regenerar",className:"gyramais-ai-parecer__btn",onClick:v},e.createElement(p,null)));return e.createElement("div",{id:r,className:n("gyramais-ai-parecer",t)},e.createElement("div",{className:"gyramais-ai-parecer__header"},e.createElement("div",{className:"gyramais-ai-parecer__badge"},e.createElement("span",{className:"gyramais-ai-parecer__badge-icon"},"✦"),e.createElement("span",{className:"gyramais-ai-parecer__badge-label"},"Parecer GYRA+ IA")),(w||M)&&e.createElement("div",{className:"gyramais-ai-parecer__meta"},w&&e.createElement("span",{className:"gyramais-ai-parecer__score"},d,": ",e.createElement("strong",null,l)),M&&e.createElement("span",{className:n("gyramais-ai-parecer__verdict",`gyramais-ai-parecer__verdict--${i}`)},c))),e.createElement("div",{className:"gyramais-ai-parecer__body"},_),h?e.createElement("div",{className:"gyramais-ai-parecer__foot"},h):S&&e.createElement("div",{className:"gyramais-ai-parecer__foot"},k&&e.createElement("span",{className:"gyramais-ai-parecer__src"},e.createElement(s,null),u),x&&e.createElement("span",{className:"gyramais-ai-parecer__confidence"},"Confiança ",g),(A||L)&&e.createElement("div",{className:"gyramais-ai-parecer__actions"},A?b:C)))};d.Topic=i;export{d as AiParecer,i as AiParecerTopic};
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../node_modules/classnames/index.js","../../../src/components/AiParecer/AiParecer.tsx"],"sourcesContent":["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import React, { useState } from \"react\";\nimport classNames from \"classnames\";\nimport \"./index.css\";\n\nexport type AiParecerVerdictTone = \"success\" | \"warning\" | \"danger\" | \"info\";\n\ntype AiParecerProps = {\n id?: string;\n className?: string;\n /**\n * Chip de veredito exibido a direita do badge (ex: \"Risco médio\").\n * Opcional.\n */\n verdict?: React.ReactNode;\n verdictTone?: AiParecerVerdictTone;\n /**\n * Score (ex: nota GYRA+ IA) exibido como pill a esquerda do chip de\n * veredito. Aceita number ou node. Opcional.\n */\n score?: React.ReactNode;\n /** Rotulo do score. Default: \"Score GYRA+ IA\". */\n scoreLabel?: string;\n /**\n * Conteudo do parecer: tipicamente um ou mais `<AiParecer.Topic>`\n * (Resumo Executivo, Pontos de Atenção e Risco, etc).\n */\n children?: React.ReactNode;\n /**\n * Fontes consultadas, exibidas no rodape com um icone de base de dados\n * (ex: \"Receita Federal · Quod · Serasa\"). Opcional.\n */\n sources?: React.ReactNode;\n /**\n * Grau de confianca do parecer, exibido no rodape (ex: \"96%\" vira\n * \"Confiança 96%\"). Aceita number ou node. Opcional.\n */\n confidence?: React.ReactNode;\n /**\n * Callbacks de feedback. Quando algum e' passado, o rodape mostra os\n * botoes padrao (👍 / 👎 / regenerar) com icones SVG proprios — sem\n * depender de nenhuma fonte de icone externa. O estado de \"util/nao-util\"\n * fica destacado automaticamente.\n */\n onFeedbackUp?: () => void;\n onFeedbackDown?: () => void;\n onRegenerate?: () => void;\n /**\n * Acoes customizadas do rodape. Quando presente, SUBSTITUI os botoes de\n * feedback padrao. Use a classe `gyramais-ai-parecer__btn` pro estilo.\n */\n actions?: React.ReactNode;\n /**\n * Rodape totalmente customizado. Quando presente, substitui o rodape\n * padrao montado a partir de `sources` / `confidence` / acoes.\n */\n footer?: React.ReactNode;\n};\n\ntype AiParecerTopicProps = {\n className?: string;\n label: React.ReactNode;\n /** Icone a esquerda do topico (ex: <DescriptionOutlinedIcon />). */\n icon?: React.ReactNode;\n /** `warning` destaca o topico (fundo + icone em tom de alerta). */\n tone?: \"default\" | \"warning\";\n children?: React.ReactNode;\n};\n\nconst AiParecerTopic = ({\n className,\n label,\n icon,\n tone = \"default\",\n children,\n}: AiParecerTopicProps) => (\n <div\n className={classNames(\n \"gyramais-ai-parecer__topic\",\n `gyramais-ai-parecer__topic--${tone}`,\n className,\n )}\n >\n {icon && <div className=\"gyramais-ai-parecer__topic-icon\">{icon}</div>}\n <div className=\"gyramais-ai-parecer__topic-body\">\n <span className=\"gyramais-ai-parecer__topic-label\">{label}</span>\n <div className=\"gyramais-ai-parecer__topic-content\">\n {children ?? \"-\"}\n </div>\n </div>\n </div>\n);\n\n/** Icones SVG inline (lucide-style) — autocontidos, sem fonte externa. */\nconst iconProps = {\n width: 14,\n height: 14,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\" as const,\n strokeLinejoin: \"round\" as const,\n \"aria-hidden\": true,\n};\n\nconst DatabaseIcon = () => (\n <svg className=\"gyramais-ai-parecer__src-icon\" {...iconProps} width={12} height={12}>\n <ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\" />\n <path d=\"M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5\" />\n <path d=\"M3 12c0 1.66 4 3 9 3s9-1.34 9-3\" />\n </svg>\n);\n\nconst ThumbsUpIcon = () => (\n <svg {...iconProps}>\n <path d=\"M7 10v12\" />\n <path d=\"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z\" />\n </svg>\n);\n\nconst ThumbsDownIcon = () => (\n <svg {...iconProps}>\n <path d=\"M17 14V2\" />\n <path d=\"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z\" />\n </svg>\n);\n\nconst RefreshIcon = () => (\n <svg {...iconProps}>\n <path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\" />\n <path d=\"M21 3v5h-5\" />\n <path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\" />\n <path d=\"M8 16H3v5\" />\n </svg>\n);\n\n/**\n * Faixa padrao \"Parecer GYRA+ IA\" usada em todas as seções de parecer\n * gerado por IA (analise financeira etc). Badge roxo com gradiente, label\n * em uppercase e chip de veredito opcional. O conteudo (topicos) vem como\n * children. Use `AiParecer.Topic` para padronizar cada bloco.\n */\nconst AiParecer = ({\n id,\n className,\n verdict,\n verdictTone = \"info\",\n score,\n scoreLabel = \"Score GYRA+ IA\",\n children,\n sources,\n confidence,\n onFeedbackUp,\n onFeedbackDown,\n onRegenerate,\n actions,\n footer,\n}: AiParecerProps) => {\n const [feedback, setFeedback] = useState<\"up\" | \"down\" | null>(null);\n\n const hasScore = score != null && score !== \"\";\n const hasVerdict = verdict != null && verdict !== \"\";\n const hasSources = sources != null && sources !== \"\";\n const hasConfidence = confidence != null && confidence !== \"\";\n const hasCustomActions = actions != null && actions !== \"\";\n const hasFeedback =\n !hasCustomActions &&\n (!!onFeedbackUp || !!onFeedbackDown || !!onRegenerate);\n const hasFooterContent =\n hasSources || hasConfidence || hasCustomActions || hasFeedback;\n\n const defaultActions = hasFeedback && (\n <>\n {onFeedbackUp && (\n <button\n type=\"button\"\n title=\"Útil\"\n aria-label=\"Útil\"\n aria-pressed={feedback === \"up\"}\n className={classNames(\"gyramais-ai-parecer__btn\", {\n \"gyramais-ai-parecer__btn--active\": feedback === \"up\",\n })}\n onClick={() => {\n if (feedback === \"up\") return;\n setFeedback(\"up\");\n onFeedbackUp();\n }}\n >\n <ThumbsUpIcon />\n </button>\n )}\n {onFeedbackDown && (\n <button\n type=\"button\"\n title=\"Não útil\"\n aria-label=\"Não útil\"\n aria-pressed={feedback === \"down\"}\n className={classNames(\"gyramais-ai-parecer__btn\", {\n \"gyramais-ai-parecer__btn--active\": feedback === \"down\",\n })}\n onClick={() => {\n if (feedback === \"down\") return;\n setFeedback(\"down\");\n onFeedbackDown();\n }}\n >\n <ThumbsDownIcon />\n </button>\n )}\n {onRegenerate && (\n <button\n type=\"button\"\n title=\"Regenerar\"\n aria-label=\"Regenerar\"\n className=\"gyramais-ai-parecer__btn\"\n onClick={onRegenerate}\n >\n <RefreshIcon />\n </button>\n )}\n </>\n );\n\n return (\n <div id={id} className={classNames(\"gyramais-ai-parecer\", className)}>\n <div className=\"gyramais-ai-parecer__header\">\n <div className=\"gyramais-ai-parecer__badge\">\n <span className=\"gyramais-ai-parecer__badge-icon\">&#10022;</span>\n <span className=\"gyramais-ai-parecer__badge-label\">\n Parecer GYRA+ IA\n </span>\n </div>\n {(hasScore || hasVerdict) && (\n <div className=\"gyramais-ai-parecer__meta\">\n {hasScore && (\n <span className=\"gyramais-ai-parecer__score\">\n {scoreLabel}: <strong>{score}</strong>\n </span>\n )}\n {hasVerdict && (\n <span\n className={classNames(\n \"gyramais-ai-parecer__verdict\",\n `gyramais-ai-parecer__verdict--${verdictTone}`,\n )}\n >\n {verdict}\n </span>\n )}\n </div>\n )}\n </div>\n <div className=\"gyramais-ai-parecer__body\">{children}</div>\n {footer ? (\n <div className=\"gyramais-ai-parecer__foot\">{footer}</div>\n ) : (\n hasFooterContent && (\n <div className=\"gyramais-ai-parecer__foot\">\n {hasSources && (\n <span className=\"gyramais-ai-parecer__src\">\n <DatabaseIcon />\n {sources}\n </span>\n )}\n {hasConfidence && (\n <span className=\"gyramais-ai-parecer__confidence\">\n Confiança {confidence}\n </span>\n )}\n {(hasCustomActions || hasFeedback) && (\n <div className=\"gyramais-ai-parecer__actions\">\n {hasCustomActions ? actions : defaultActions}\n </div>\n )}\n </div>\n )\n )}\n </div>\n );\n};\n\nAiParecer.Topic = AiParecerTopic;\n\nexport { AiParecer, AiParecerTopic };\n"],"names":["hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","appendClass","parseValue","Array","isArray","apply","toString","Object","prototype","includes","key","call","value","newClass","module","exports","default","window","AiParecerTopic","className","label","icon","tone","children","React","createElement","iconProps","width","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","DatabaseIcon","cx","cy","rx","ry","d","ThumbsUpIcon","ThumbsDownIcon","RefreshIcon","AiParecer","id","verdict","verdictTone","score","scoreLabel","sources","confidence","onFeedbackUp","onFeedbackDown","onRegenerate","actions","footer","feedback","setFeedback","useState","hasScore","hasVerdict","hasSources","hasConfidence","hasCustomActions","hasFeedback","hasFooterContent","defaultActions","Fragment","type","title","onClick","Topic"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ import { EmailLayoutInput } from '../../emails/email';
3
+ /**
4
+ * Preview de email transacional Gyra+ — genérico, configurável.
5
+ *
6
+ * Renderiza o HTML produzido por `buildEmail(input)` dentro de um iframe
7
+ * com `sandbox="allow-popups"` pra isolar do CSS do Storybook e simular
8
+ * Gmail/Outlook com fidelidade — `allow-popups` deixa os botoes (links
9
+ * com target=_blank) abrirem no preview pra teste.
10
+ *
11
+ * **Uso**: passe qualquer combinação de campos opcionais (greeting, title
12
+ * obrigatório, paragraphs, highlights lado-a-lado, aiParecer, buttons,
13
+ * footerNote). É o mesmo `EmailLayoutInput` que o `buildEmail` aceita.
14
+ *
15
+ * Pra previsualizar um email transacional específico (ex: reset de senha,
16
+ * batch concluído, alerta), basta montar os props correspondentes — não
17
+ * precisa criar um componente novo por caso.
18
+ */
19
+ export type EmailProps = EmailLayoutInput & {
20
+ /** Largura visual do iframe. Default 700px (cabe o card 600 + paddings). */
21
+ width?: number | string;
22
+ /** Altura visual do iframe. Default 1000px. Ajuste se o conteúdo crescer. */
23
+ height?: number | string;
24
+ };
25
+ export declare const Email: React.FC<EmailProps>;
26
+ export default Email;
@@ -0,0 +1,2 @@
1
+ export * from './Email';
2
+ export { default } from './Email';
@@ -0,0 +1,2 @@
1
+ "use client";import t from"react";const e="#1256FF",n="#7C4EFF",i="#6635E0",l="#F5F5F7",r="#FFFFFF",o="#1D1D1F",a="#636366",p="#8E8E93",d="#D2D2D7",s="#E8E8ED",g="#F6F4FF",c="rgba(124,78,255,0.22)",x={ok:{bg:"#E8F9ED",color:"#1A7D37"},warn:{bg:"#FFF4E0",color:"#946200"},danger:{bg:"#FFEDEC",color:"#C93430"},info:{bg:"#EBF4FF",color:"#0055D4"}},h="'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif",m=t=>String(t??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;"),f=["http:","https:","mailto:","tel:"];function b(t){const n="primary"===(t.variant??"primary"),i=n?"#FFFFFF":e;return`\n <table role="presentation" cellpadding="0" cellspacing="0" style="margin:8px 8px 0 0;display:inline-block;">\n <tr>\n <td style="border-radius:10px;background:${n?e:r};border:1px solid ${n?e:d};">\n <a href="${m(function(t){try{const e=new URL(String(t));return f.includes(e.protocol)?e.href:"#"}catch{return"#"}}(t.url))}" target="_blank"\n style="display:inline-block;padding:12px 22px;font-family:${h};font-size:14px;font-weight:600;color:${i};text-decoration:none;border-radius:10px;">\n ${m(t.label)}\n </a>\n </td>\n </tr>\n </table>`}function $(t){const{preheader:e,greeting:d,title:f,paragraphs:$=[],highlights:y=[],aiParecer:u,buttons:F=[],footerNote:w}=t,v=y.length?Math.floor(100/y.length):100,E=y.length?`<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="margin:8px 0 4px;"><tr>${y.map(t=>function(t,e){return`\n <td width="${e}%" style="padding:6px;" valign="top">\n <table role="presentation" width="100%" cellpadding="0" cellspacing="0"\n style="background:#FAFAFA;border:1px solid ${s};border-radius:12px;">\n <tr><td style="padding:14px 16px;font-family:${h};">\n <div style="font-size:12px;color:${a};margin-bottom:4px;">${m(t.label)}</div>\n <div style="font-size:22px;font-weight:700;color:${t.color||o};font-family:'Lexend',${h};">${m(t.value)}</div>\n </td></tr>\n </table>\n </td>`}(t,v)).join("")}</tr></table>`:"",k=$.map(t=>`<p style="margin:0 0 14px;font-family:${h};font-size:15px;line-height:1.6;color:${a};">${m(t)}</p>`).join(""),z=F.length?`<div style="margin-top:18px;">${F.map(b).join("")}</div>`:"";return`<!DOCTYPE html>\n<html lang="pt-BR">\n<head>\n <meta charset="utf-8" />\n <meta name="viewport" content="width=device-width,initial-scale=1.0" />\n <meta http-equiv="X-UA-Compatible" content="IE=edge" />\n <title>${m(f)}</title>\n</head>\n<body style="margin:0;padding:0;background:${l};">\n ${e?`<div style="display:none;max-height:0;overflow:hidden;opacity:0;">${m(e)}</div>`:""}\n <table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="background:${l};padding:24px 0;">\n <tr>\n <td align="center">\n <table role="presentation" width="600" cellpadding="0" cellspacing="0" style="width:600px;max-width:92%;">\n <tr>\n <td style="padding:8px 4px 20px;">\n <img src="https://gyra-file-prod.s3.us-west-2.amazonaws.com/assets/gyra-logo-color.png" alt="GYRA+" height="30" style="height:30px;display:block;" />\n </td>\n </tr>\n <tr>\n <td style="background:${r};border:1px solid ${s};border-radius:16px;padding:32px;">\n ${d?`<p style="margin:0 0 6px;font-family:${h};font-size:14px;color:${a};">${m(d)}</p>`:""}\n <h1 style="margin:0 0 18px;font-family:'Lexend',${h};font-size:23px;line-height:1.3;color:${o};">${m(f)}</h1>\n ${k}\n ${E}\n ${u?function(t){const e=t.verdict?(()=>{const e=x[t.verdictTone||"info"];return`<table role="presentation" cellpadding="0" cellspacing="0" style="display:inline-block;"><tr>\n <td style="background:${e.bg};border-radius:999px;padding:4px 10px;font-family:${h};font-size:11px;font-weight:700;letter-spacing:0.04em;text-transform:uppercase;color:${e.color};white-space:nowrap;">${m(t.verdict)}</td></tr></table>`})():"";return`\n <table role="presentation" width="100%" cellpadding="0" cellspacing="0"\n style="margin:18px 0 4px;background:${g};border:1px solid ${c};border-radius:12px;">\n <tr><td style="padding:16px 18px;font-family:${h};">\n <table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr>\n <td valign="middle" width="28">\n <div style="width:22px;height:22px;border-radius:50%;background:${n};color:#fff;text-align:center;line-height:22px;font-size:13px;">&#10022;</div>\n </td>\n <td valign="middle" style="padding-left:8px;">\n <span style="font-size:11px;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;color:${i};">Parecer GYRA+IA</span>\n </td>\n <td valign="middle" align="right">${e}</td>\n </tr></table>\n <p style="margin:10px 0 0;font-size:14px;line-height:1.55;color:${a};">${m(t.text)}</p>\n ${t.footer?`<div style="margin-top:10px;padding-top:10px;border-top:1px dashed ${c};font-size:11px;color:${p};">${m(t.footer)}</div>`:""}\n </td></tr>\n </table>`}(u):""}\n ${z}\n </td>\n </tr>\n <tr>\n <td style="padding:20px 8px;font-family:${h};font-size:12px;line-height:1.5;color:${p};">\n ${w?`<p style="margin:0 0 8px;">${m(w)}</p>`:""}\n <p style="margin:0;">GYRA+ • Esta é uma mensagem automática, não responda este email.</p>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n</body>\n</html>`}const y=({width:e=700,height:n=1e3,...i})=>{const l=$(i);return t.createElement("iframe",{title:`Email preview — ${i.title}`,srcDoc:l,sandbox:"allow-popups",style:{width:"number"==typeof e?`${e}px`:e,height:"number"==typeof n?`${n}px`:n,border:"1px solid #E8E8ED",borderRadius:8,background:"#F5F5F7"}})};export{y as Email,y as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/emails/email/index.ts","../../../src/components/Email/Email.tsx"],"sourcesContent":["/**\n * Email transacional genérico — Gyra+ design system.\n *\n * **FONTE DA VERDADE** dos layouts de email transacional. Usado por\n * qualquer fluxo que precise mandar email no padrão visual Gyra+:\n * - reset de senha, confirmação de cadastro, alertas internos\n * - finalização de processamento (Finsights, batch-report, etc)\n * - notificações de operação/crédito\n * - convites, mudança de plano, alerts de billing...\n *\n * **TS puro**: sem React, sem DOM, sem browser globals. Apenas funções que\n * retornam string HTML. Funciona igual em qualquer runtime Node (Nest) ou\n * bundle browser (Next).\n *\n * **Email-safe**: tabelas + inline-style (clients ignoram <style> externo,\n * flexbox e Material Symbols). Gradientes têm fallback sólido.\n *\n * Tokens visuais alinhados com gyra-design: azul #1256FF (acao/primary),\n * roxo #7C4EFF (IA/parecer), neutrals Apple-gray, fonte Inter.\n *\n * **Como usar:**\n * ```ts\n * import { buildEmail } from '@gyramais/gyra-design/dist/emails/email';\n *\n * const html = buildEmail({\n * preheader: 'Senha redefinida com sucesso',\n * greeting: 'Olá, Maria',\n * title: 'Sua senha foi redefinida',\n * paragraphs: ['Tudo certo. Você já pode entrar com a nova senha.'],\n * buttons: [{ label: 'Entrar', url: 'https://app.gyramais.com/login' }],\n * footerNote: 'Se não foi você, redefina novamente clicando em \"Esqueci minha senha\".',\n * });\n * ```\n *\n * Pra emails recorrentes (mesmo conteudo, payload variavel), criar um\n * **preset** em `src/emails/<preset-name>/index.ts` que monta o\n * `EmailLayoutInput` a partir de campos de dominio e delega aqui. Ver\n * `balance-sheet-finalized` como exemplo.\n */\n\n// ── Tipos publicos ─────────────────────────────────────────────────────────\n\nexport type EmailButton = {\n label: string;\n url: string;\n /** primary = botão azul preenchido, secondary = outline. Default primary. */\n variant?: 'primary' | 'secondary';\n};\n\nexport type EmailHighlight = {\n /** label pequeno em cima (ex: \"Score\", \"Nivel de risco\"). */\n label: string;\n /** valor grande em baixo (ex: \"820\", \"Baixo\"). */\n value: string;\n /** cor do valor (ex: cor do risco). Default: tinta padrao Apple-gray. */\n color?: string;\n};\n\n/** Tom semantico do chip de veredito do bloco Parecer GYRA+IA. */\nexport type AiParecerTone = 'ok' | 'warn' | 'danger' | 'info';\n\nexport type EmailAiParecer = {\n /** chip de veredito (ex: \"Médio\", \"Consistente\"). Opcional. */\n verdict?: string;\n verdictTone?: AiParecerTone;\n /** corpo do parecer. */\n text: string;\n /** rodape do bloco (ex: \"GYRA+IA · Confiança 96%\"). Opcional. */\n footer?: string;\n};\n\nexport type EmailLayoutInput = {\n /** Texto invisivel no preheader (preview no inbox). */\n preheader?: string;\n /** Linha curta acima do titulo (ex: \"Olá, Maria\"). */\n greeting?: string;\n /** Titulo principal (H1). */\n title: string;\n /** Paragrafos de corpo (sub-frases). */\n paragraphs?: string[];\n /** Cards lado-a-lado (1 a N). Largura dividida igualmente. */\n highlights?: EmailHighlight[];\n /** Bloco \"Parecer GYRA+IA\" (faixa roxa com chip + texto + rodape). */\n aiParecer?: EmailAiParecer;\n /** Botoes de acao. Multiplos viram lado-a-lado. */\n buttons?: EmailButton[];\n /** Texto pequeno no rodape do card (disclaimer, instrucoes extras). */\n footerNote?: string;\n};\n\n// ── Tokens (espelho de gyra-design CSS variables, hard-coded pra email) ────\n\nconst C = {\n blue: '#1256FF',\n teal: '#1FB58A',\n aiPurple: '#7C4EFF',\n aiPurpleText: '#6635E0',\n bg: '#F5F5F7',\n card: '#FFFFFF',\n fg1: '#1D1D1F',\n fg2: '#636366',\n fg3: '#8E8E93',\n border: '#D2D2D7',\n borderSubtle: '#E8E8ED',\n aiCardBg: '#F6F4FF',\n aiBorder: 'rgba(124,78,255,0.22)',\n};\n\nconst VERDICT: Record<AiParecerTone, { bg: string; color: string }> = {\n ok: { bg: '#E8F9ED', color: '#1A7D37' },\n warn: { bg: '#FFF4E0', color: '#946200' },\n danger: { bg: '#FFEDEC', color: '#C93430' },\n info: { bg: '#EBF4FF', color: '#0055D4' },\n};\n\nconst FONT =\n \"'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif\";\n\nconst LOGO_URL =\n 'https://gyra-file-prod.s3.us-west-2.amazonaws.com/assets/gyra-logo-color.png';\n\n// ── Helpers internos ───────────────────────────────────────────────────────\n\nconst esc = (s: string): string =>\n String(s ?? '')\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;');\n\n/**\n * Só permite http(s). Bloqueia schemes perigosos (javascript:, data:)\n * que poderiam virar href executável. URL inválida vira '#'.\n */\nconst SAFE_URL_PROTOCOLS = ['http:', 'https:', 'mailto:', 'tel:'];\n\nfunction safeUrl(url: string): string {\n try {\n const u = new URL(String(url));\n // mailto:/tel: sao comuns e seguros em emails transacionais (contato,\n // suporte, telefone). Demais protocolos (javascript:, data:) viram '#'.\n return SAFE_URL_PROTOCOLS.includes(u.protocol) ? u.href : '#';\n } catch {\n return '#';\n }\n}\n\nfunction renderButton(btn: EmailButton): string {\n const isPrimary = (btn.variant ?? 'primary') === 'primary';\n const bg = isPrimary ? C.blue : C.card;\n const color = isPrimary ? '#FFFFFF' : C.blue;\n const border = isPrimary ? C.blue : C.border;\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" style=\"margin:8px 8px 0 0;display:inline-block;\">\n <tr>\n <td style=\"border-radius:10px;background:${bg};border:1px solid ${border};\">\n <a href=\"${esc(safeUrl(btn.url))}\" target=\"_blank\"\n style=\"display:inline-block;padding:12px 22px;font-family:${FONT};font-size:14px;font-weight:600;color:${color};text-decoration:none;border-radius:10px;\">\n ${esc(btn.label)}\n </a>\n </td>\n </tr>\n </table>`;\n}\n\nfunction renderHighlight(h: EmailHighlight, widthPct: number): string {\n return `\n <td width=\"${widthPct}%\" style=\"padding:6px;\" valign=\"top\">\n <table role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\"\n style=\"background:#FAFAFA;border:1px solid ${C.borderSubtle};border-radius:12px;\">\n <tr><td style=\"padding:14px 16px;font-family:${FONT};\">\n <div style=\"font-size:12px;color:${C.fg2};margin-bottom:4px;\">${esc(h.label)}</div>\n <div style=\"font-size:22px;font-weight:700;color:${h.color || C.fg1};font-family:'Lexend',${FONT};\">${esc(h.value)}</div>\n </td></tr>\n </table>\n </td>`;\n}\n\nfunction renderAiParecer(p: EmailAiParecer): string {\n const v = p.verdict\n ? (() => {\n const t = VERDICT[p.verdictTone || 'info'];\n // table/td (Outlook ignora padding/border-radius em <span>).\n return `<table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" style=\"display:inline-block;\"><tr>\n <td style=\"background:${t.bg};border-radius:999px;padding:4px 10px;font-family:${FONT};font-size:11px;font-weight:700;letter-spacing:0.04em;text-transform:uppercase;color:${t.color};white-space:nowrap;\">${esc(\n p.verdict,\n )}</td></tr></table>`;\n })()\n : '';\n return `\n <table role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\"\n style=\"margin:18px 0 4px;background:${C.aiCardBg};border:1px solid ${C.aiBorder};border-radius:12px;\">\n <tr><td style=\"padding:16px 18px;font-family:${FONT};\">\n <table role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\"><tr>\n <td valign=\"middle\" width=\"28\">\n <div style=\"width:22px;height:22px;border-radius:50%;background:${C.aiPurple};color:#fff;text-align:center;line-height:22px;font-size:13px;\">&#10022;</div>\n </td>\n <td valign=\"middle\" style=\"padding-left:8px;\">\n <span style=\"font-size:11px;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;color:${C.aiPurpleText};\">Parecer GYRA+IA</span>\n </td>\n <td valign=\"middle\" align=\"right\">${v}</td>\n </tr></table>\n <p style=\"margin:10px 0 0;font-size:14px;line-height:1.55;color:${C.fg2};\">${esc(p.text)}</p>\n ${\n p.footer\n ? `<div style=\"margin-top:10px;padding-top:10px;border-top:1px dashed ${C.aiBorder};font-size:11px;color:${C.fg3};\">${esc(\n p.footer,\n )}</div>`\n : ''\n }\n </td></tr>\n </table>`;\n}\n\n// ── API publica ────────────────────────────────────────────────────────────\n\n/**\n * Monta o HTML completo de um email no padrão Gyra+: logo no topo, card\n * principal com greeting + título + parágrafos + highlights (chips lado a\n * lado) + bloco \"Parecer GYRA+IA\" + botões, e rodapé padrão.\n *\n * Email-safe (tabelas + inline-style, sem flexbox, sem <style>). Funciona\n * em Gmail, Outlook (Windows/Web/Mac), Apple Mail, Thunderbird, mobile.\n *\n * Todas as seções (greeting, paragraphs, highlights, aiParecer, buttons,\n * footerNote) são **opcionais** — só `title` é obrigatório.\n */\nexport function buildEmail(input: EmailLayoutInput): string {\n const {\n preheader,\n greeting,\n title,\n paragraphs = [],\n highlights = [],\n aiParecer,\n buttons = [],\n footerNote,\n } = input;\n\n const highlightWidth = highlights.length\n ? Math.floor(100 / highlights.length)\n : 100;\n const highlightsRow = highlights.length\n ? `<table role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"margin:8px 0 4px;\"><tr>${highlights\n .map((h) => renderHighlight(h, highlightWidth))\n .join('')}</tr></table>`\n : '';\n\n const paragraphsHtml = paragraphs\n .map(\n (p) =>\n `<p style=\"margin:0 0 14px;font-family:${FONT};font-size:15px;line-height:1.6;color:${C.fg2};\">${esc(\n p,\n )}</p>`,\n )\n .join('');\n\n const buttonsHtml = buttons.length\n ? `<div style=\"margin-top:18px;\">${buttons.map(renderButton).join('')}</div>`\n : '';\n\n return `<!DOCTYPE html>\n<html lang=\"pt-BR\">\n<head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\" />\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n <title>${esc(title)}</title>\n</head>\n<body style=\"margin:0;padding:0;background:${C.bg};\">\n ${\n preheader\n ? `<div style=\"display:none;max-height:0;overflow:hidden;opacity:0;\">${esc(preheader)}</div>`\n : ''\n }\n <table role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"background:${C.bg};padding:24px 0;\">\n <tr>\n <td align=\"center\">\n <table role=\"presentation\" width=\"600\" cellpadding=\"0\" cellspacing=\"0\" style=\"width:600px;max-width:92%;\">\n <tr>\n <td style=\"padding:8px 4px 20px;\">\n <img src=\"${LOGO_URL}\" alt=\"GYRA+\" height=\"30\" style=\"height:30px;display:block;\" />\n </td>\n </tr>\n <tr>\n <td style=\"background:${C.card};border:1px solid ${C.borderSubtle};border-radius:16px;padding:32px;\">\n ${\n greeting\n ? `<p style=\"margin:0 0 6px;font-family:${FONT};font-size:14px;color:${C.fg2};\">${esc(\n greeting,\n )}</p>`\n : ''\n }\n <h1 style=\"margin:0 0 18px;font-family:'Lexend',${FONT};font-size:23px;line-height:1.3;color:${C.fg1};\">${esc(\n title,\n )}</h1>\n ${paragraphsHtml}\n ${highlightsRow}\n ${aiParecer ? renderAiParecer(aiParecer) : ''}\n ${buttonsHtml}\n </td>\n </tr>\n <tr>\n <td style=\"padding:20px 8px;font-family:${FONT};font-size:12px;line-height:1.5;color:${C.fg3};\">\n ${\n footerNote\n ? `<p style=\"margin:0 0 8px;\">${esc(footerNote)}</p>`\n : ''\n }\n <p style=\"margin:0;\">GYRA+ • Esta é uma mensagem automática, não responda este email.</p>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n</body>\n</html>`;\n}\n","import React from 'react';\nimport { buildEmail, EmailLayoutInput } from '../../emails/email';\n\n/**\n * Preview de email transacional Gyra+ — genérico, configurável.\n *\n * Renderiza o HTML produzido por `buildEmail(input)` dentro de um iframe\n * com `sandbox=\"allow-popups\"` pra isolar do CSS do Storybook e simular\n * Gmail/Outlook com fidelidade — `allow-popups` deixa os botoes (links\n * com target=_blank) abrirem no preview pra teste.\n *\n * **Uso**: passe qualquer combinação de campos opcionais (greeting, title\n * obrigatório, paragraphs, highlights lado-a-lado, aiParecer, buttons,\n * footerNote). É o mesmo `EmailLayoutInput` que o `buildEmail` aceita.\n *\n * Pra previsualizar um email transacional específico (ex: reset de senha,\n * batch concluído, alerta), basta montar os props correspondentes — não\n * precisa criar um componente novo por caso.\n */\nexport type EmailProps = EmailLayoutInput & {\n /** Largura visual do iframe. Default 700px (cabe o card 600 + paddings). */\n width?: number | string;\n /** Altura visual do iframe. Default 1000px. Ajuste se o conteúdo crescer. */\n height?: number | string;\n};\n\nexport const Email: React.FC<EmailProps> = ({\n width = 700,\n height = 1000,\n ...input\n}) => {\n const html = buildEmail(input);\n return (\n <iframe\n title={`Email preview — ${input.title}`}\n srcDoc={html}\n sandbox=\"allow-popups\"\n style={{\n width: typeof width === 'number' ? `${width}px` : width,\n height: typeof height === 'number' ? `${height}px` : height,\n border: '1px solid #E8E8ED',\n borderRadius: 8,\n background: '#F5F5F7',\n }}\n />\n );\n};\n\nexport default Email;\n"],"names":["C","VERDICT","ok","bg","color","warn","danger","info","FONT","esc","s","String","replace","SAFE_URL_PROTOCOLS","renderButton","btn","isPrimary","variant","url","u","URL","includes","protocol","href","safeUrl","label","buildEmail","input","preheader","greeting","title","paragraphs","highlights","aiParecer","buttons","footerNote","highlightWidth","length","Math","floor","highlightsRow","map","h","widthPct","value","renderHighlight","join","paragraphsHtml","p","buttonsHtml","v","verdict","t","verdictTone","text","footer","renderAiParecer","Email","width","height","html","React","createElement","srcDoc","sandbox","style","border","borderRadius","background"],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import React from "react";
2
+ import "./index.css";
3
+ export type GaugeBandVariant = "neutral" | "success" | "warning" | "danger";
4
+ /** Formata o valor central: inteiro sem casas, fracionado com 1 casa, ausente "—". */
5
+ export declare const formatGaugeValue: (v?: number | null) => string;
6
+ export type GaugeProps = {
7
+ id?: string;
8
+ className?: string;
9
+ /** Valor atual (0..max). null/undefined => mostra "—" e anel vazio. */
10
+ value?: number | null;
11
+ /** Máximo da escala. Default 1000 (escala dos bureaus de crédito). */
12
+ max?: number;
13
+ /** Legenda curta acima do número (ex.: "GYRA+ Score"). */
14
+ label: string;
15
+ /** Pill de classificação abaixo do número (ex.: "Risco baixo"). Opcional. */
16
+ band?: string;
17
+ /** Cor do pill de banda; o anel permanece azul. Default "neutral". */
18
+ bandVariant?: GaugeBandVariant;
19
+ /** Diâmetro em px (escala número/legenda proporcionalmente). Default 240. */
20
+ size?: number;
21
+ };
22
+ /**
23
+ * Gauge circular de score (anel azul). Usado para o score da política de
24
+ * crédito, score setorial e afins. O número e a legenda escalam com `size`.
25
+ */
26
+ declare const Gauge: ({ id, className, value, max, label, band, bandVariant, size, }: GaugeProps) => React.JSX.Element;
27
+ export { Gauge };
28
+ export default Gauge;
@@ -0,0 +1,2 @@
1
+ export * from "./Gauge";
2
+ export { default } from "./Gauge";
@@ -0,0 +1,7 @@
1
+ "use client";import e from"react";function a(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var t,r={exports:{}};
2
+ /*!
3
+ Copyright (c) 2018 Jed Watson.
4
+ Licensed under the MIT License (MIT), see
5
+ http://jedwatson.github.io/classnames
6
+ */t=r,function(){var e={}.hasOwnProperty;function a(){for(var e="",a=0;a<arguments.length;a++){var t=arguments[a];t&&(e=n(e,r(t)))}return e}function r(t){if("string"==typeof t||"number"==typeof t)return t;if("object"!=typeof t)return"";if(Array.isArray(t))return a.apply(null,t);if(t.toString!==Object.prototype.toString&&!t.toString.toString().includes("[native code]"))return t.toString();var r="";for(var i in t)e.call(t,i)&&t[i]&&(r=n(r,i));return r}function n(e,a){return a?e?e+" "+a:e+a:e}t.exports?(a.default=a,t.exports=a):window.classNames=a}();var n=a(r.exports);const i=e=>null==e?"—":Number.isInteger(e)?String(e):e.toFixed(1),s=2*Math.PI*42,c=({id:a,className:t,value:r,max:c=1e3,label:l,band:o,bandVariant:u="neutral",size:g=240})=>{const m=`${(Math.max(0,Math.min(1,(r??0)/(c||1)))*s).toFixed(1)} ${s.toFixed(1)}`;return e.createElement("div",{id:a,className:n("gyramais-gauge",t),style:{"--gauge-size":`${g}px`}},e.createElement("svg",{viewBox:"0 0 100 100","aria-hidden":"true"},e.createElement("circle",{cx:"50",cy:"50",r:42,fill:"none",className:"gyramais-gauge__track",strokeWidth:"9"}),e.createElement("circle",{cx:"50",cy:"50",r:42,fill:"none",className:"gyramais-gauge__arc",strokeWidth:"9",strokeDasharray:m,strokeLinecap:"round"})),e.createElement("div",{className:"gyramais-gauge__center"},e.createElement("div",{className:"gyramais-gauge__caption"},l),e.createElement("div",{className:"gyramais-gauge__num"},i(r)),e.createElement("div",{className:"gyramais-gauge__max"},"de ",c),o&&e.createElement("div",{className:n("gyramais-gauge__band",`gyramais-gauge__band--${u}`)},o)))};export{c as Gauge,c as default,i as formatGaugeValue};
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../node_modules/classnames/index.js","../../../src/components/Gauge/Gauge.tsx"],"sourcesContent":["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport \"./index.css\";\n\nexport type GaugeBandVariant = \"neutral\" | \"success\" | \"warning\" | \"danger\";\n\n/** Formata o valor central: inteiro sem casas, fracionado com 1 casa, ausente \"—\". */\nexport const formatGaugeValue = (v?: number | null): string => {\n if (v == null) return \"—\";\n return Number.isInteger(v) ? String(v) : v.toFixed(1);\n};\n\nexport type GaugeProps = {\n id?: string;\n className?: string;\n /** Valor atual (0..max). null/undefined => mostra \"—\" e anel vazio. */\n value?: number | null;\n /** Máximo da escala. Default 1000 (escala dos bureaus de crédito). */\n max?: number;\n /** Legenda curta acima do número (ex.: \"GYRA+ Score\"). */\n label: string;\n /** Pill de classificação abaixo do número (ex.: \"Risco baixo\"). Opcional. */\n band?: string;\n /** Cor do pill de banda; o anel permanece azul. Default \"neutral\". */\n bandVariant?: GaugeBandVariant;\n /** Diâmetro em px (escala número/legenda proporcionalmente). Default 240. */\n size?: number;\n};\n\nconst RADIUS = 42;\nconst CIRCUMFERENCE = 2 * Math.PI * RADIUS;\n\n/**\n * Gauge circular de score (anel azul). Usado para o score da política de\n * crédito, score setorial e afins. O número e a legenda escalam com `size`.\n */\nconst Gauge = ({\n id,\n className,\n value,\n max = 1000,\n label,\n band,\n bandVariant = \"neutral\",\n size = 240,\n}: GaugeProps) => {\n const pct = Math.max(0, Math.min(1, (value ?? 0) / (max || 1)));\n const dash = `${(pct * CIRCUMFERENCE).toFixed(1)} ${CIRCUMFERENCE.toFixed(1)}`;\n\n return (\n <div\n id={id}\n className={classNames(\"gyramais-gauge\", className)}\n style={{ [\"--gauge-size\" as string]: `${size}px` }}\n >\n <svg viewBox=\"0 0 100 100\" aria-hidden=\"true\">\n <circle\n cx=\"50\"\n cy=\"50\"\n r={RADIUS}\n fill=\"none\"\n className=\"gyramais-gauge__track\"\n strokeWidth=\"9\"\n />\n <circle\n cx=\"50\"\n cy=\"50\"\n r={RADIUS}\n fill=\"none\"\n className=\"gyramais-gauge__arc\"\n strokeWidth=\"9\"\n strokeDasharray={dash}\n strokeLinecap=\"round\"\n />\n </svg>\n <div className=\"gyramais-gauge__center\">\n <div className=\"gyramais-gauge__caption\">{label}</div>\n <div className=\"gyramais-gauge__num\">{formatGaugeValue(value)}</div>\n <div className=\"gyramais-gauge__max\">de {max}</div>\n {band && (\n <div\n className={classNames(\n \"gyramais-gauge__band\",\n `gyramais-gauge__band--${bandVariant}`,\n )}\n >\n {band}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport { Gauge };\nexport default Gauge;\n"],"names":["hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","appendClass","parseValue","Array","isArray","apply","toString","Object","prototype","includes","key","call","value","newClass","module","exports","default","window","formatGaugeValue","v","Number","isInteger","String","toFixed","CIRCUMFERENCE","Math","PI","Gauge","id","className","max","label","band","bandVariant","size","dash","min","React","createElement","style","viewBox","cx","cy","r","fill","strokeWidth","strokeDasharray","strokeLinecap"],"mappings":";;;;;MAOC,WAGA,IAAIA,EAAS,CAAA,EAAGC,eAEhB,SAASC,IAGR,IAFA,IAAIC,EAAU,GAELC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAC1C,IAAIG,EAAMF,UAAUD,GAChBG,IACHJ,EAAUK,EAAYL,EAASM,EAAWF,IAE9C,CAEE,OAAOJ,CACT,CAEC,SAASM,EAAYF,GACpB,GAAmB,iBAARA,GAAmC,iBAARA,EACrC,OAAOA,EAGR,GAAmB,iBAARA,EACV,MAAO,GAGR,GAAIG,MAAMC,QAAQJ,GACjB,OAAOL,EAAWU,MAAM,KAAML,GAG/B,GAAIA,EAAIM,WAAaC,OAAOC,UAAUF,WAAaN,EAAIM,SAASA,WAAWG,SAAS,iBACnF,OAAOT,EAAIM,WAGZ,IAAIV,EAAU,GAEd,IAAK,IAAIc,KAAOV,EACXP,EAAOkB,KAAKX,EAAKU,IAAQV,EAAIU,KAChCd,EAAUK,EAAYL,EAASc,IAIjC,OAAOd,CACT,CAEC,SAASK,EAAaW,EAAOC,GAC5B,OAAKA,EAIDD,EACIA,EAAQ,IAAMC,EAGfD,EAAQC,EAPPD,CAQV,CAEsCE,EAAOC,SAC3CpB,EAAWqB,QAAUrB,EACrBmB,UAAiBnB,GAOjBsB,OAAOtB,WAAaA,CAEtB,CArEA,sBCAO,MAAMuB,EAAoBC,GACtB,MAALA,EAAkB,IACfC,OAAOC,UAAUF,GAAKG,OAAOH,GAAKA,EAAEI,QAAQ,GAqB/CC,EAAgB,EAAIC,KAAKC,GADhB,GAOTC,EAAQ,EACZC,KACAC,YACAjB,QACAkB,MAAM,IACNC,QACAC,OACAC,cAAc,UACdC,OAAO,QAEP,MACMC,EAAO,IADDV,KAAKK,IAAI,EAAGL,KAAKW,IAAI,GAAIxB,GAAS,IAAMkB,GAAO,KACpCN,GAAeD,QAAQ,MAAMC,EAAcD,QAAQ,KAE1E,OACEc,EAAAC,cAAA,MAAA,CACEV,GAAIA,EACJC,UAAWlC,EAAW,iBAAkBkC,GACxCU,MAAO,CAAE,eAA4B,GAAGL,QAExCG,EAAAC,cAAA,MAAA,CAAKE,QAAQ,cAAa,cAAa,QACrCH,EAAAC,cAAA,SAAA,CACEG,GAAG,KACHC,GAAG,KACHC,EA9BK,GA+BLC,KAAK,OACLf,UAAU,wBACVgB,YAAY,MAEdR,EAAAC,cAAA,SAAA,CACEG,GAAG,KACHC,GAAG,KACHC,EAtCK,GAuCLC,KAAK,OACLf,UAAU,sBACVgB,YAAY,IACZC,gBAAiBX,EACjBY,cAAc,WAGlBV,EAAAC,cAAA,MAAA,CAAKT,UAAU,0BACbQ,EAAAC,cAAA,MAAA,CAAKT,UAAU,2BAA2BE,GAC1CM,EAAAC,cAAA,MAAA,CAAKT,UAAU,uBAAuBX,EAAiBN,IACvDyB,EAAAC,cAAA,MAAA,CAAKT,UAAU,6BAA0BC,GACxCE,GACCK,EAAAC,cAAA,MAAA,CACET,UAAWlC,EACT,uBACA,yBAAyBsC,MAG1BD","x_google_ignoreList":[0]}
@@ -0,0 +1,75 @@
1
+ import React from "react";
2
+ import "./index.css";
3
+ export type AiParecerVerdictTone = "success" | "warning" | "danger" | "info";
4
+ type AiParecerProps = {
5
+ id?: string;
6
+ className?: string;
7
+ /**
8
+ * Chip de veredito exibido a direita do badge (ex: "Risco médio").
9
+ * Opcional.
10
+ */
11
+ verdict?: React.ReactNode;
12
+ verdictTone?: AiParecerVerdictTone;
13
+ /**
14
+ * Score (ex: nota GYRA+ IA) exibido como pill a esquerda do chip de
15
+ * veredito. Aceita number ou node. Opcional.
16
+ */
17
+ score?: React.ReactNode;
18
+ /** Rotulo do score. Default: "Score GYRA+ IA". */
19
+ scoreLabel?: string;
20
+ /**
21
+ * Conteudo do parecer: tipicamente um ou mais `<AiParecer.Topic>`
22
+ * (Resumo Executivo, Pontos de Atenção e Risco, etc).
23
+ */
24
+ children?: React.ReactNode;
25
+ /**
26
+ * Fontes consultadas, exibidas no rodape com um icone de base de dados
27
+ * (ex: "Receita Federal · Quod · Serasa"). Opcional.
28
+ */
29
+ sources?: React.ReactNode;
30
+ /**
31
+ * Grau de confianca do parecer, exibido no rodape (ex: "96%" vira
32
+ * "Confiança 96%"). Aceita number ou node. Opcional.
33
+ */
34
+ confidence?: React.ReactNode;
35
+ /**
36
+ * Callbacks de feedback. Quando algum e' passado, o rodape mostra os
37
+ * botoes padrao (👍 / 👎 / regenerar) com icones SVG proprios — sem
38
+ * depender de nenhuma fonte de icone externa. O estado de "util/nao-util"
39
+ * fica destacado automaticamente.
40
+ */
41
+ onFeedbackUp?: () => void;
42
+ onFeedbackDown?: () => void;
43
+ onRegenerate?: () => void;
44
+ /**
45
+ * Acoes customizadas do rodape. Quando presente, SUBSTITUI os botoes de
46
+ * feedback padrao. Use a classe `gyramais-ai-parecer__btn` pro estilo.
47
+ */
48
+ actions?: React.ReactNode;
49
+ /**
50
+ * Rodape totalmente customizado. Quando presente, substitui o rodape
51
+ * padrao montado a partir de `sources` / `confidence` / acoes.
52
+ */
53
+ footer?: React.ReactNode;
54
+ };
55
+ type AiParecerTopicProps = {
56
+ className?: string;
57
+ label: React.ReactNode;
58
+ /** Icone a esquerda do topico (ex: <DescriptionOutlinedIcon />). */
59
+ icon?: React.ReactNode;
60
+ /** `warning` destaca o topico (fundo + icone em tom de alerta). */
61
+ tone?: "default" | "warning";
62
+ children?: React.ReactNode;
63
+ };
64
+ declare const AiParecerTopic: ({ className, label, icon, tone, children, }: AiParecerTopicProps) => React.JSX.Element;
65
+ /**
66
+ * Faixa padrao "Parecer GYRA+ IA" usada em todas as seções de parecer
67
+ * gerado por IA (analise financeira etc). Badge roxo com gradiente, label
68
+ * em uppercase e chip de veredito opcional. O conteudo (topicos) vem como
69
+ * children. Use `AiParecer.Topic` para padronizar cada bloco.
70
+ */
71
+ declare const AiParecer: {
72
+ ({ id, className, verdict, verdictTone, score, scoreLabel, children, sources, confidence, onFeedbackUp, onFeedbackDown, onRegenerate, actions, footer, }: AiParecerProps): React.JSX.Element;
73
+ Topic: ({ className, label, icon, tone, children, }: AiParecerTopicProps) => React.JSX.Element;
74
+ };
75
+ export { AiParecer, AiParecerTopic };
@@ -0,0 +1 @@
1
+ export * from "./AiParecer";
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import "./index.css";
3
+ type AvatarProps = {
4
+ id?: string;
5
+ className?: string;
6
+ size?: number;
7
+ children?: React.ReactNode;
8
+ };
9
+ declare const Avatar: ({ id, className, size, children, }: AvatarProps) => React.JSX.Element;
10
+ export { Avatar };
@@ -0,0 +1 @@
1
+ export * from "./Avatar";
@@ -0,0 +1,10 @@
1
+ import * as React from "react";
2
+ type BrasilUfs = "AC" | "AL" | "AP" | "AM" | "BA" | "CE" | "DF" | "ES" | "GO" | "MA" | "MT" | "MS" | "MG" | "PA" | "PB" | "PR" | "PE" | "PI" | "RJ" | "RN" | "RS" | "RO" | "RR" | "SC" | "SP" | "SE" | "TO";
3
+ type Brasil = {
4
+ data: {
5
+ [key in BrasilUfs]?: number;
6
+ };
7
+ size?: number;
8
+ };
9
+ declare const Brasil: ({ data, size }: Brasil) => React.JSX.Element;
10
+ export { Brasil };
@@ -0,0 +1 @@
1
+ export * from "./Brasil";
@@ -0,0 +1,19 @@
1
+ import React from "react";
2
+ import "./index.css";
3
+ export type ButtonProps = {
4
+ id?: string;
5
+ className?: string;
6
+ type?: "primary" | "secondary" | "white" | "dark" | "transparent";
7
+ size?: "small" | "medium" | "large";
8
+ htmlType?: "button" | "submit";
9
+ link?: boolean;
10
+ block?: boolean;
11
+ disabled?: boolean;
12
+ loading?: boolean;
13
+ icon?: React.ReactNode;
14
+ fab?: boolean;
15
+ onClick?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
16
+ children?: React.ReactNode;
17
+ };
18
+ declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<unknown>>;
19
+ export { Button };
@@ -0,0 +1 @@
1
+ export * from "./Button";
@@ -0,0 +1,27 @@
1
+ import React from "react";
2
+ import "./index.css";
3
+ type CardProps = {
4
+ id?: string;
5
+ className?: string;
6
+ type?: "shadow" | "shadow-inset" | "border";
7
+ title?: string | React.ReactNode;
8
+ subtitle?: string | React.ReactNode;
9
+ /**
10
+ * Elemento de mídia (ícone, badge, avatar) exibido à esquerda do bloco
11
+ * título/subtítulo no header. Padroniza o layout "ícone + título + subtítulo"
12
+ * sem cada consumer estilizar à mão. O conteúdo (cor/tamanho do badge) é do
13
+ * consumer; o Card só cuida do posicionamento.
14
+ */
15
+ media?: React.ReactNode;
16
+ disabled?: boolean;
17
+ loading?: boolean;
18
+ collapsible?: boolean;
19
+ defaultCollapsed?: boolean;
20
+ collapsed?: boolean;
21
+ onCollapse?: (collapsed: boolean) => void;
22
+ onClick?: () => void;
23
+ headerContent?: React.ReactNode;
24
+ children?: React.ReactNode;
25
+ };
26
+ declare const Card: ({ id, type, className, title, subtitle, media, disabled, loading, collapsible, defaultCollapsed, collapsed, onCollapse, onClick, headerContent, children, }: CardProps) => React.JSX.Element;
27
+ export { Card };
@@ -0,0 +1 @@
1
+ export * from "./Card";
@@ -0,0 +1,43 @@
1
+ import React from "react";
2
+ import "./index.css";
3
+ type BarChartData = Array<{
4
+ [key: string]: number;
5
+ }>;
6
+ type PieChartData = Array<{
7
+ name: string;
8
+ value: string | number;
9
+ }>;
10
+ type LineChartData = Array<{
11
+ [key: string]: string;
12
+ }>;
13
+ type ChartProps = {
14
+ id?: string;
15
+ className?: string;
16
+ type?: 'bar' | 'pie' | 'line';
17
+ layout?: 'horizontal' | 'vertical';
18
+ barSize?: number;
19
+ barGap?: number;
20
+ barMaxValue?: number;
21
+ indexes?: Array<{
22
+ name: string;
23
+ key: string;
24
+ stackId?: string;
25
+ color?: string;
26
+ }>;
27
+ x?: {
28
+ key: string;
29
+ formatter?: (value: any) => string;
30
+ };
31
+ y?: {
32
+ indexes: Array<{
33
+ key: string;
34
+ name?: string;
35
+ color?: string;
36
+ }>;
37
+ formatter?: (value: any) => string;
38
+ };
39
+ data?: BarChartData | PieChartData | LineChartData;
40
+ tooltipFormatter?: (value: any) => string;
41
+ };
42
+ declare const Chart: ({ id, className, type, layout, barSize, barGap, barMaxValue, indexes, x, y, data, tooltipFormatter, }: ChartProps) => React.JSX.Element;
43
+ export { Chart };
@@ -0,0 +1 @@
1
+ export * from "./Chart";
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ import { ChatMessage } from "./types";
3
+ interface ChatMessageBubbleProps {
4
+ message: ChatMessage;
5
+ }
6
+ declare const ChatMessageBubble: ({ message }: ChatMessageBubbleProps) => React.JSX.Element;
7
+ export { ChatMessageBubble };
@@ -0,0 +1,30 @@
1
+ import React from "react";
2
+ import "./index.css";
3
+ import { ChatMessage, ChatStatus, ChatTheme } from "./types";
4
+ export interface ChatWidgetProps {
5
+ open: boolean;
6
+ onOpenChange: (open: boolean) => void;
7
+ messages: ChatMessage[];
8
+ status: ChatStatus;
9
+ onSend: (text: string) => void | Promise<void>;
10
+ onReset?: () => void;
11
+ theme?: ChatTheme;
12
+ title?: string;
13
+ triggerLabel?: string;
14
+ placeholder?: string;
15
+ emptyTitle?: string;
16
+ emptySubtitle?: string;
17
+ suggestions?: string[];
18
+ collapsedHeight?: number | string;
19
+ expandedHeight?: number | string;
20
+ collapsedWidth?: number | string;
21
+ expandedWidth?: number | string;
22
+ defaultExpanded?: boolean;
23
+ expandable?: boolean;
24
+ className?: string;
25
+ zIndex?: number;
26
+ headerExtra?: React.ReactNode;
27
+ belowHeader?: React.ReactNode;
28
+ }
29
+ declare const ChatWidget: ({ open, onOpenChange, messages, status, onSend, onReset, theme, title, triggerLabel, placeholder, emptyTitle, emptySubtitle, suggestions, collapsedHeight, expandedHeight, collapsedWidth, expandedWidth, defaultExpanded, expandable, className, zIndex, headerExtra, belowHeader, }: ChatWidgetProps) => React.JSX.Element;
30
+ export { ChatWidget };
@@ -0,0 +1,3 @@
1
+ export * from "./ChatWidget";
2
+ export * from "./ChatMessageBubble";
3
+ export * from "./types";
@@ -0,0 +1,18 @@
1
+ export type ChatRole = 'user' | 'assistant';
2
+ export type ChatStatus = 'idle' | 'streaming' | 'error';
3
+ export type ChatTheme = 'light' | 'dark';
4
+ export interface ChatToolCall {
5
+ name: string;
6
+ input: Record<string, unknown>;
7
+ }
8
+ export interface ChatCitation {
9
+ section: string;
10
+ excerpt: string;
11
+ url: string;
12
+ }
13
+ export interface ChatMessage {
14
+ role: ChatRole;
15
+ content: string;
16
+ toolCalls?: ChatToolCall[];
17
+ citations?: ChatCitation[];
18
+ }
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ import "./index.css";
3
+ type CheckboxProps = {
4
+ id?: string;
5
+ className?: string;
6
+ name?: string;
7
+ checked?: boolean;
8
+ onCheckedChange?: (checked: boolean) => void;
9
+ children?: React.ReactNode;
10
+ };
11
+ declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<unknown>>;
12
+ export { Checkbox };
@@ -0,0 +1 @@
1
+ export * from "./Checkbox";
@@ -0,0 +1,17 @@
1
+ import React from "react";
2
+ import "./index.css";
3
+ type Span = {
4
+ mobile?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
5
+ tablet?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
6
+ desktop?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
7
+ wide?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
8
+ };
9
+ type ColProps = {
10
+ id?: string;
11
+ className?: string;
12
+ span?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | Span;
13
+ onClick?: () => void;
14
+ children?: React.ReactNode;
15
+ };
16
+ declare const Col: ({ id, className, span, onClick, children, }: ColProps) => React.JSX.Element;
17
+ export { Col };
@@ -0,0 +1 @@
1
+ export * from "./Col";