@brainfish-ai/components 0.35.19 → 0.36.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 (873) hide show
  1. package/dist/colors/blue.d.ts +13 -0
  2. package/dist/colors/dark.d.ts +15 -0
  3. package/dist/colors/green.d.ts +13 -0
  4. package/dist/{colors.d.ts → colors/index.d.ts} +159 -161
  5. package/dist/colors/lime.d.ts +13 -0
  6. package/dist/colors/magenta.d.ts +13 -0
  7. package/dist/colors/orange.d.ts +13 -0
  8. package/dist/colors/pink.d.ts +13 -0
  9. package/dist/colors/primary.d.ts +14 -0
  10. package/dist/colors/purple.d.ts +13 -0
  11. package/dist/colors/red.d.ts +13 -0
  12. package/dist/colors/teal.d.ts +13 -0
  13. package/dist/colors/yellow.d.ts +13 -0
  14. package/dist/components/ai-button/ai-badge.d.ts +6 -0
  15. package/dist/components/ai-button/ai-button.d.ts +5 -0
  16. package/dist/components/ai-button/index.d.ts +2 -0
  17. package/dist/components/article-suggestions-banner/article-suggestions-banner.d.ts +12 -0
  18. package/dist/components/article-suggestions-banner/index.d.ts +1 -0
  19. package/dist/components/articles-coverage/articles-coverage.d.ts +14 -0
  20. package/dist/components/articles-coverage/index.d.ts +1 -0
  21. package/dist/components/articles-updated/articles-updated.d.ts +14 -0
  22. package/dist/components/articles-updated/index.d.ts +1 -0
  23. package/dist/components/breadcrumbs/breadcrumbs.d.ts +22 -0
  24. package/dist/components/breadcrumbs/index.d.ts +1 -0
  25. package/dist/components/chart-area-linear/chart-area-linear.d.ts +18 -0
  26. package/dist/components/chart-area-linear/index.d.ts +1 -0
  27. package/dist/components/chart-radial-stacked/chart-radial-stacked.d.ts +12 -0
  28. package/dist/components/chart-radial-stacked/index.d.ts +1 -0
  29. package/dist/components/chat-search/ActiveConversations.d.ts +14 -0
  30. package/dist/components/chat-search/Answer.d.ts +36 -0
  31. package/dist/components/chat-search/AnswerActions.d.ts +14 -0
  32. package/dist/components/chat-search/AnswerBlock.d.ts +8 -0
  33. package/dist/components/chat-search/AnswerLoadingStatus.d.ts +6 -0
  34. package/dist/components/chat-search/AttachmentThumbnails.d.ts +36 -0
  35. package/dist/components/chat-search/ChatSearch.d.ts +12 -0
  36. package/dist/components/chat-search/ChatSearchContext.d.ts +37 -0
  37. package/dist/components/chat-search/FollowUpQuestions.d.ts +7 -0
  38. package/dist/components/chat-search/FollowUpSearchBar.d.ts +17 -0
  39. package/dist/components/chat-search/Header.d.ts +15 -0
  40. package/dist/components/chat-search/HistoryPage.d.ts +20 -0
  41. package/dist/components/chat-search/IncludePageToggle.d.ts +9 -0
  42. package/dist/components/chat-search/KnowledgeGroupSelector.d.ts +8 -0
  43. package/dist/components/chat-search/LoadingConversation.d.ts +2 -0
  44. package/dist/components/chat-search/LoadingSkeleton.d.ts +6 -0
  45. package/dist/components/chat-search/NextBestActions.d.ts +8 -0
  46. package/dist/components/chat-search/PrimarySearch.d.ts +38 -0
  47. package/dist/components/chat-search/ResolvedConversationFooter.d.ts +7 -0
  48. package/dist/components/chat-search/Suggestions.d.ts +9 -0
  49. package/dist/components/chat-search/TimelineNavigation.d.ts +9 -0
  50. package/dist/components/chat-search/ToastContainer.d.ts +6 -0
  51. package/dist/components/chat-search/blocks/ActionButtons.d.ts +5 -0
  52. package/dist/components/chat-search/blocks/ActionInputForm.d.ts +20 -0
  53. package/dist/components/chat-search/blocks/MarkdownText.d.ts +8 -0
  54. package/dist/components/chat-search/blocks/utils.d.ts +16 -0
  55. package/dist/components/chat-search/helpers/buildConversationContext.d.ts +2 -0
  56. package/dist/components/chat-search/helpers/cancelStreamReader.d.ts +7 -0
  57. package/dist/components/chat-search/helpers/excuteClientAction.d.ts +9 -0
  58. package/dist/components/chat-search/helpers/initialAiMessage.d.ts +2 -0
  59. package/dist/components/chat-search/helpers/nextBestActions.d.ts +7 -0
  60. package/dist/components/chat-search/helpers/preChatFormForWidget.d.ts +6 -0
  61. package/dist/components/chat-search/hooks/index.d.ts +10 -0
  62. package/dist/components/chat-search/hooks/useAccessibleColor.d.ts +1 -0
  63. package/dist/components/chat-search/hooks/useAnswerList.d.ts +253 -0
  64. package/dist/components/chat-search/hooks/useConversationHistory.d.ts +32 -0
  65. package/dist/components/chat-search/hooks/useConversationId.d.ts +5 -0
  66. package/dist/components/chat-search/hooks/useConversationLoader.d.ts +19 -0
  67. package/dist/components/chat-search/hooks/useDarkMode.d.ts +1 -0
  68. package/dist/components/chat-search/hooks/useFileAttachment.d.ts +20 -0
  69. package/dist/components/chat-search/hooks/useIncludePage.d.ts +20 -0
  70. package/dist/components/chat-search/hooks/useIsChatSearchDirty.d.ts +1 -0
  71. package/dist/components/chat-search/hooks/useScrollManager.d.ts +6 -0
  72. package/dist/components/chat-search/hooks/useSubscriptionManager.d.ts +4 -0
  73. package/dist/components/chat-search/hooks/useToast.d.ts +9 -0
  74. package/dist/components/chat-search/hooks/useUrlManager.d.ts +8 -0
  75. package/dist/components/chat-search/index.d.ts +7 -0
  76. package/dist/components/chat-search/text-config.d.ts +3 -0
  77. package/dist/components/chat-search/theme.d.ts +0 -0
  78. package/dist/components/chat-search/types/messages.d.ts +21 -0
  79. package/dist/components/chat-search/types.d.ts +388 -0
  80. package/dist/{combobox.d.ts → components/combobox/combobox.d.ts} +43 -49
  81. package/dist/components/combobox/index.d.ts +1 -0
  82. package/dist/components/confirm-dialog/confirm-dialog.d.ts +21 -0
  83. package/dist/components/confirm-dialog/index.d.ts +1 -0
  84. package/dist/components/conversation/AttachmentPreviews.d.ts +14 -0
  85. package/dist/components/conversation/ContextPillBadge.d.ts +8 -0
  86. package/dist/components/conversation/Conversation.d.ts +45 -0
  87. package/dist/components/conversation/ConversationActions.d.ts +11 -0
  88. package/dist/components/conversation/ConversationContext.d.ts +17 -0
  89. package/dist/components/conversation/ConversationHeader.d.ts +12 -0
  90. package/dist/components/conversation/ConversationInput.d.ts +16 -0
  91. package/dist/components/conversation/ConversationMessage.d.ts +8 -0
  92. package/dist/components/conversation/ConversationMessageAssistant.d.ts +11 -0
  93. package/dist/components/conversation/ConversationMessageUser.d.ts +11 -0
  94. package/dist/components/conversation/ConversationMessages.d.ts +11 -0
  95. package/dist/components/conversation/ConversationStatus.d.ts +11 -0
  96. package/dist/components/conversation/ConversationSuggestions.d.ts +10 -0
  97. package/dist/components/conversation/attachmentUtils.d.ts +2 -0
  98. package/dist/components/conversation/blocks/CitationBlock.d.ts +8 -0
  99. package/dist/components/conversation/blocks/TextBlock.d.ts +8 -0
  100. package/dist/components/conversation/blocks/index.d.ts +10 -0
  101. package/dist/components/conversation/index.d.ts +13 -0
  102. package/dist/components/conversation/mocks.d.ts +14 -0
  103. package/dist/components/conversation/status.d.ts +15 -0
  104. package/dist/components/conversation/types.d.ts +149 -0
  105. package/dist/components/conversation/welcome.d.ts +11 -0
  106. package/dist/components/convos/answer-diagnostics.d.ts +21 -0
  107. package/dist/components/convos/attributes-dialog.d.ts +7 -0
  108. package/dist/components/convos/confidence-badge.d.ts +6 -0
  109. package/dist/components/convos/convo.d.ts +29 -0
  110. package/dist/components/convos/convos.d.ts +39 -0
  111. package/dist/components/convos/discard-form.d.ts +31 -0
  112. package/dist/components/convos/empty-convos.d.ts +4 -0
  113. package/dist/components/convos/feedback-dialog.d.ts +14 -0
  114. package/dist/components/convos/index.d.ts +5 -0
  115. package/dist/components/convos/message.d.ts +79 -0
  116. package/dist/components/convos/mocks.d.ts +43 -0
  117. package/dist/components/convos/status-badge.d.ts +8 -0
  118. package/dist/components/convos/stream-badge.d.ts +5 -0
  119. package/dist/components/data-table/data-table.d.ts +17 -0
  120. package/dist/components/data-table/index.d.ts +2 -0
  121. package/dist/{date-picker.d.ts → components/date-picker/date-picker.d.ts} +9 -12
  122. package/dist/components/date-picker/index.d.ts +1 -0
  123. package/dist/components/discoveries-created/discoveries-created.d.ts +22 -0
  124. package/dist/components/discoveries-created/index.d.ts +1 -0
  125. package/dist/components/editable-label/editable-label.d.ts +6 -0
  126. package/dist/components/editable-label/index.d.ts +1 -0
  127. package/dist/components/feedback/feedback-reason.d.ts +10 -0
  128. package/dist/{feedback.d.ts → components/feedback/feedback.d.ts} +17 -21
  129. package/dist/components/feedback/index.d.ts +1 -0
  130. package/dist/components/file-upload/file-upload-status.d.ts +17 -0
  131. package/dist/components/file-upload/file-upload.d.ts +4 -0
  132. package/dist/components/file-upload/index.d.ts +4 -0
  133. package/dist/components/file-upload/types.d.ts +18 -0
  134. package/dist/components/file-upload/utils.d.ts +1 -0
  135. package/dist/components/filter/components/CustomValueInput.d.ts +11 -0
  136. package/dist/components/filter/components/MultiSelectDropdown.d.ts +10 -0
  137. package/dist/components/filter/components/SingleSelectDropdown.d.ts +9 -0
  138. package/dist/components/filter/filter.d.ts +6 -0
  139. package/dist/components/filter/filters.d.ts +12 -0
  140. package/dist/components/filter/hooks.d.ts +9 -0
  141. package/dist/components/filter/index.d.ts +3 -0
  142. package/dist/{filter.d.ts → components/filter/types.d.ts} +59 -82
  143. package/dist/components/font-picker/font-picker-item.d.ts +13 -0
  144. package/dist/components/font-picker/font-picker.d.ts +44 -0
  145. package/dist/components/font-picker/font-utils.d.ts +18 -0
  146. package/dist/components/font-picker/index.d.ts +5 -0
  147. package/dist/components/font-picker/types.d.ts +6 -0
  148. package/dist/components/font-picker/use-font-options.d.ts +17 -0
  149. package/dist/components/generating-star/generating-star.d.ts +10 -0
  150. package/dist/components/generating-star/index.d.ts +1 -0
  151. package/dist/components/input-with-tags/index.d.ts +1 -0
  152. package/dist/{input-with-tags.d.ts → components/input-with-tags/input-with-tags.d.ts} +26 -31
  153. package/dist/components/logo/ai-logo.d.ts +12 -0
  154. package/dist/components/logo/chat-logo.d.ts +8 -0
  155. package/dist/components/logo/index.d.ts +3 -0
  156. package/dist/components/logo/logo.d.ts +8 -0
  157. package/dist/components/love/index.d.ts +1 -0
  158. package/dist/components/love/love.d.ts +7 -0
  159. package/dist/components/markdown/CodeBlock.d.ts +7 -0
  160. package/dist/components/markdown/FormattedMessage.d.ts +14 -0
  161. package/dist/components/markdown/Frame.d.ts +10 -0
  162. package/dist/components/markdown/MemoizedReactMarkdown.d.ts +6 -0
  163. package/dist/components/markdown/MermaidDiagram.d.ts +6 -0
  164. package/dist/components/markdown/SmartImage.d.ts +5 -0
  165. package/dist/components/markdown/ZoomableImage.d.ts +7 -0
  166. package/dist/components/markdown/embeds/Loom.d.ts +7 -0
  167. package/dist/components/markdown/embeds/NativeVideo.d.ts +6 -0
  168. package/dist/components/markdown/embeds/Supademo.d.ts +7 -0
  169. package/dist/components/markdown/embeds/Typeform.d.ts +7 -0
  170. package/dist/components/markdown/embeds/VideoTimeline.d.ts +9 -0
  171. package/dist/components/markdown/embeds/Vimeo.d.ts +7 -0
  172. package/dist/components/markdown/embeds/Wistia.d.ts +7 -0
  173. package/dist/components/markdown/embeds/Youtube.d.ts +7 -0
  174. package/dist/components/markdown/embeds/index.d.ts +9 -0
  175. package/dist/components/markdown/index.d.ts +6 -0
  176. package/dist/components/markdown/utils/codeblock.d.ts +6 -0
  177. package/dist/components/markdown/utils/stripNewLines.d.ts +1 -0
  178. package/dist/components/markdown/utils/urls.d.ts +6 -0
  179. package/dist/components/metric-card/index.d.ts +1 -0
  180. package/dist/components/metric-card/metric-card.d.ts +11 -0
  181. package/dist/components/metric-card-group/index.d.ts +1 -0
  182. package/dist/components/metric-card-group/metric-card-group.d.ts +6 -0
  183. package/dist/components/plan-usage-card/index.d.ts +1 -0
  184. package/dist/{plan-usage-card.d.ts → components/plan-usage-card/plan-usage-card.d.ts} +10 -15
  185. package/dist/components/rich-text-input/LexicalEditor.d.ts +7 -0
  186. package/dist/components/rich-text-input/RichTextInput.d.ts +31 -0
  187. package/dist/components/rich-text-input/index.d.ts +2 -0
  188. package/dist/components/select/index.d.ts +1 -0
  189. package/dist/{select.d.ts → components/select/simpleSelect.d.ts} +15 -20
  190. package/dist/components/trend-value/index.d.ts +1 -0
  191. package/dist/components/trend-value/trend-value.d.ts +14 -0
  192. package/dist/components/two-level-combobox/index.d.ts +1 -0
  193. package/dist/{two-level-combobox.d.ts → components/two-level-combobox/two-level-combobox.d.ts} +15 -26
  194. package/dist/components/ui/accordion.d.ts +7 -2
  195. package/dist/components/ui/alert-dialog.d.ts +37 -2
  196. package/dist/components/ui/alert.d.ts +11 -2
  197. package/dist/components/ui/avatar.d.ts +11 -2
  198. package/dist/components/ui/badge.d.ts +9 -2
  199. package/dist/components/ui/breadcrumb.d.ts +19 -2
  200. package/dist/components/ui/button-group.d.ts +13 -2
  201. package/dist/components/ui/button.d.ts +13 -2
  202. package/dist/components/ui/calendar.d.ts +8 -2
  203. package/dist/components/ui/card.d.ts +8 -2
  204. package/dist/components/ui/chart.d.ts +62 -0
  205. package/dist/components/ui/collapsible.d.ts +6 -2
  206. package/dist/components/ui/combobox.d.ts +2 -2
  207. package/dist/components/ui/command.d.ts +80 -2
  208. package/dist/components/ui/dialog.d.ts +19 -2
  209. package/dist/components/ui/div-button.d.ts +11 -2
  210. package/dist/components/ui/dropdown-menu.d.ts +31 -2
  211. package/dist/components/ui/hover-card.d.ts +6 -2
  212. package/dist/components/ui/icon.d.ts +8 -2
  213. package/dist/components/ui/input.d.ts +10 -2
  214. package/dist/components/ui/item.d.ts +23 -2
  215. package/dist/components/ui/label.d.ts +5 -2
  216. package/dist/components/ui/popover.d.ts +13 -2
  217. package/dist/components/ui/progress.d.ts +6 -2
  218. package/dist/components/ui/radio-group.d.ts +5 -2
  219. package/dist/components/ui/resizable.d.ts +8 -2
  220. package/dist/components/ui/ripple-status.d.ts +14 -0
  221. package/dist/components/ui/ripple.d.ts +5 -0
  222. package/dist/components/ui/scroll-area.d.ts +5 -2
  223. package/dist/components/ui/select.d.ts +13 -2
  224. package/dist/components/ui/separator.d.ts +4 -2
  225. package/dist/components/ui/sheet.d.ts +25 -2
  226. package/dist/components/ui/spinner.d.ts +3 -2
  227. package/dist/components/ui/sweep-text.d.ts +14 -0
  228. package/dist/components/ui/switch.d.ts +4 -2
  229. package/dist/components/ui/table.d.ts +10 -2
  230. package/dist/components/ui/tabs.d.ts +7 -2
  231. package/dist/components/ui/textarea.d.ts +6 -2
  232. package/dist/components/ui/tooltip.d.ts +10 -2
  233. package/dist/components/ui/types.d.ts +1 -0
  234. package/dist/components/usage-indicator-pill/index.d.ts +1 -0
  235. package/dist/components/usage-indicator-pill/usage-indicator-pill.d.ts +23 -0
  236. package/dist/env.d.ts +5 -0
  237. package/dist/esm/colors/blue.js +16 -0
  238. package/dist/esm/colors/dark.js +17 -0
  239. package/dist/esm/colors/green.js +16 -0
  240. package/dist/esm/colors/lime.js +16 -0
  241. package/dist/esm/colors/magenta.js +16 -0
  242. package/dist/esm/colors/orange.js +16 -0
  243. package/dist/esm/colors/pink.js +16 -0
  244. package/dist/esm/colors/primary.js +17 -0
  245. package/dist/esm/colors/purple.js +16 -0
  246. package/dist/esm/colors/red.js +16 -0
  247. package/dist/esm/colors/teal.js +16 -0
  248. package/dist/esm/colors/yellow.js +16 -0
  249. package/dist/esm/colors.js +29 -2
  250. package/dist/esm/components/ai-button/ai-badge.js +44 -0
  251. package/dist/esm/components/article-suggestions-banner/article-suggestions-banner.js +49 -0
  252. package/dist/esm/components/article-suggestions-banner.js +1 -5
  253. package/dist/esm/components/articles-coverage/articles-coverage.js +116 -0
  254. package/dist/esm/components/articles-coverage.js +1 -5
  255. package/dist/esm/components/articles-updated/articles-updated.js +74 -0
  256. package/dist/esm/components/articles-updated.js +1 -5
  257. package/dist/esm/components/breadcrumbs/breadcrumbs.js +13 -0
  258. package/dist/esm/components/breadcrumbs.js +1 -4
  259. package/dist/esm/components/chart-area-linear/chart-area-linear.js +66 -0
  260. package/dist/esm/components/chart-area-linear.js +1 -7
  261. package/dist/esm/components/chart-radial-stacked/chart-radial-stacked.js +48 -0
  262. package/dist/esm/components/chart-radial-stacked.js +1 -3
  263. package/dist/esm/components/chat-search/ActiveConversations.js +16 -0
  264. package/dist/esm/components/chat-search/Answer.js +175 -0
  265. package/dist/esm/components/chat-search/AnswerActions.js +64 -0
  266. package/dist/esm/components/chat-search/AnswerBlock.js +19 -0
  267. package/dist/esm/components/chat-search/AnswerLoadingStatus.js +8 -0
  268. package/dist/esm/components/chat-search/AttachmentThumbnails.js +45 -0
  269. package/dist/esm/components/chat-search/ChatSearch.js +1175 -0
  270. package/dist/esm/components/chat-search/ChatSearchContext.js +73 -0
  271. package/dist/esm/components/chat-search/FollowUpQuestions.js +39 -0
  272. package/dist/esm/components/chat-search/FollowUpSearchBar.js +189 -0
  273. package/dist/esm/components/chat-search/FollowUpSearchBar.module.css +4 -0
  274. package/dist/esm/components/chat-search/FollowUpSearchBar.module.css.js +6 -0
  275. package/dist/esm/components/chat-search/Header.js +104 -0
  276. package/dist/esm/components/chat-search/HistoryPage.js +82 -0
  277. package/dist/esm/components/chat-search/IncludePageToggle.js +8 -0
  278. package/dist/esm/components/chat-search/KnowledgeGroupSelector.js +23 -0
  279. package/dist/esm/components/chat-search/LoadingConversation.js +19 -0
  280. package/dist/esm/components/chat-search/NextBestActions.js +210 -0
  281. package/dist/esm/components/chat-search/PrimarySearch.js +415 -0
  282. package/dist/esm/components/chat-search/ResolvedConversationFooter.js +28 -0
  283. package/dist/esm/components/chat-search/Suggestions.js +20 -0
  284. package/dist/esm/components/chat-search/TimelineNavigation.js +113 -0
  285. package/dist/esm/components/chat-search/ToastContainer.js +29 -0
  286. package/dist/esm/components/chat-search/blocks/ActionButtons.js +5 -0
  287. package/dist/esm/components/chat-search/blocks/ActionInputForm.js +154 -0
  288. package/dist/esm/components/chat-search/blocks/MarkdownText.js +24 -0
  289. package/dist/esm/components/chat-search/blocks/utils.js +36 -0
  290. package/dist/esm/components/chat-search/helpers/buildConversationContext.js +11 -0
  291. package/dist/esm/components/chat-search/helpers/cancelStreamReader.js +21 -0
  292. package/dist/esm/components/chat-search/helpers/excuteClientAction.js +32 -0
  293. package/dist/esm/components/chat-search/helpers/initialAiMessage.js +4 -0
  294. package/dist/esm/components/chat-search/helpers/nextBestActions.js +97 -0
  295. package/dist/esm/components/chat-search/helpers/preChatFormForWidget.js +20 -0
  296. package/dist/esm/components/chat-search/hooks/useAccessibleColor.js +23 -0
  297. package/dist/esm/components/chat-search/hooks/useAnswerList.js +366 -0
  298. package/dist/esm/components/chat-search/hooks/useConversationHistory.js +128 -0
  299. package/dist/esm/components/chat-search/hooks/useConversationId.js +41 -0
  300. package/dist/esm/components/chat-search/hooks/useConversationLoader.js +99 -0
  301. package/dist/esm/components/chat-search/hooks/useDarkMode.js +18 -0
  302. package/dist/esm/components/chat-search/hooks/useFileAttachment.js +105 -0
  303. package/dist/esm/components/chat-search/hooks/useIncludePage.js +133 -0
  304. package/dist/esm/components/chat-search/hooks/useIsChatSearchDirty.js +9 -0
  305. package/dist/esm/components/chat-search/hooks/useScrollManager.js +36 -0
  306. package/dist/esm/components/chat-search/hooks/useSubscriptionManager.js +31 -0
  307. package/dist/esm/components/chat-search/hooks/useToast.js +22 -0
  308. package/dist/esm/components/chat-search/text-config.js +29 -0
  309. package/dist/esm/components/chat-search/types.js +40 -0
  310. package/dist/esm/components/chat-search.js +5 -2
  311. package/dist/esm/components/combobox/combobox.js +94 -0
  312. package/dist/esm/components/combobox.js +1 -2
  313. package/dist/esm/components/confirm-dialog/confirm-dialog.js +46 -0
  314. package/dist/esm/components/confirm-dialog.js +1 -3
  315. package/dist/esm/components/conversation/AttachmentPreviews.js +86 -0
  316. package/dist/esm/components/conversation/ContextPillBadge.js +35 -0
  317. package/dist/esm/components/conversation/Conversation.js +106 -0
  318. package/dist/esm/components/conversation/ConversationActions.js +20 -0
  319. package/dist/esm/components/conversation/ConversationContext.js +49 -0
  320. package/dist/esm/components/conversation/ConversationHeader.js +49 -0
  321. package/dist/esm/components/conversation/ConversationInput.js +350 -0
  322. package/dist/esm/components/conversation/ConversationMessage.js +16 -0
  323. package/dist/esm/components/conversation/ConversationMessageAssistant.js +53 -0
  324. package/dist/esm/components/conversation/ConversationMessageUser.js +46 -0
  325. package/dist/esm/components/conversation/ConversationMessages.js +50 -0
  326. package/dist/esm/components/conversation/ConversationStatus.js +13 -0
  327. package/dist/esm/components/conversation/ConversationSuggestions.js +21 -0
  328. package/dist/esm/components/conversation/attachmentUtils.js +9 -0
  329. package/dist/esm/components/conversation/blocks/CitationBlock.js +21 -0
  330. package/dist/esm/components/conversation/blocks/TextBlock.js +8 -0
  331. package/dist/esm/components/conversation/blocks/index.js +12 -0
  332. package/dist/esm/components/conversation/status.js +34 -0
  333. package/dist/esm/components/conversation/welcome.js +50 -0
  334. package/dist/esm/components/conversation.js +11 -2
  335. package/dist/esm/components/convos/answer-diagnostics.js +17 -0
  336. package/dist/esm/components/convos/attributes-dialog.css +51 -0
  337. package/dist/esm/components/convos/attributes-dialog.js +70 -0
  338. package/dist/esm/components/convos/confidence-badge.js +17 -0
  339. package/dist/esm/components/convos/convo.js +142 -0
  340. package/dist/esm/components/convos/convos.js +85 -0
  341. package/dist/esm/components/convos/discard-form.js +187 -0
  342. package/dist/esm/components/convos/empty-convos.js +8 -0
  343. package/dist/esm/components/convos/feedback-dialog.js +61 -0
  344. package/dist/esm/components/convos/message.css +258 -0
  345. package/dist/esm/components/convos/message.js +113 -0
  346. package/dist/esm/components/convos/status-badge.js +45 -0
  347. package/dist/esm/components/convos/stream-badge.js +33 -0
  348. package/dist/esm/components/convos.js +5 -29
  349. package/dist/esm/components/data-table/data-table.js +101 -0
  350. package/dist/esm/components/data-table.js +1 -2
  351. package/dist/esm/components/date-picker/date-picker.js +26 -0
  352. package/dist/esm/components/date-picker.js +1 -2
  353. package/dist/esm/components/discoveries-created/discoveries-created.js +64 -0
  354. package/dist/esm/components/discoveries-created.js +1 -5
  355. package/dist/esm/components/editable-label/editable-label.js +73 -0
  356. package/dist/esm/components/editable-label.js +1 -3
  357. package/dist/esm/components/feedback/feedback-reason.js +81 -0
  358. package/dist/esm/components/feedback/feedback.js +90 -0
  359. package/dist/esm/components/feedback.js +1 -2
  360. package/dist/esm/components/file-upload/file-upload-status.js +78 -0
  361. package/dist/esm/components/file-upload/file-upload.js +62 -0
  362. package/dist/esm/components/file-upload/utils.js +9 -0
  363. package/dist/esm/components/file-upload.js +3 -2
  364. package/dist/esm/components/filter/components/CustomValueInput.js +49 -0
  365. package/dist/esm/components/filter/components/MultiSelectDropdown.js +109 -0
  366. package/dist/esm/components/filter/components/SingleSelectDropdown.js +50 -0
  367. package/dist/esm/components/filter/filter.js +260 -0
  368. package/dist/esm/components/filter/filters.js +85 -0
  369. package/dist/esm/components/filter/hooks.js +28 -0
  370. package/dist/esm/components/filter/types.js +10 -0
  371. package/dist/esm/components/filter.js +3 -2
  372. package/dist/esm/components/font-picker/font-picker-item.js +47 -0
  373. package/dist/esm/components/font-picker/font-picker.js +54 -0
  374. package/dist/esm/components/font-picker/font-utils.js +45 -0
  375. package/dist/esm/components/font-picker/use-font-options.js +46 -0
  376. package/dist/esm/components/font-picker.js +4 -2
  377. package/dist/esm/components/generating-star/generating-star.js +85 -0
  378. package/dist/esm/components/generating-star.js +1 -2
  379. package/dist/esm/components/input-with-tags/input-with-tags.js +109 -0
  380. package/dist/esm/components/input-with-tags.js +1 -2
  381. package/dist/esm/components/logo/ai-logo.js +46 -0
  382. package/dist/esm/components/logo/chat-logo.js +32 -0
  383. package/dist/esm/components/logo/logo.js +191 -0
  384. package/dist/esm/components/logo.js +3 -2
  385. package/dist/esm/components/love/love.js +55 -0
  386. package/dist/esm/components/markdown/CodeBlock.js +76 -0
  387. package/dist/esm/components/markdown/FormattedMessage.js +227 -0
  388. package/dist/esm/components/markdown/Frame.js +46 -0
  389. package/dist/esm/components/markdown/MemoizedReactMarkdown.js +9 -0
  390. package/dist/esm/components/markdown/MermaidDiagram.js +49 -0
  391. package/dist/esm/components/markdown/SmartImage.js +25 -0
  392. package/dist/esm/components/markdown/ZoomableImage.js +96 -0
  393. package/dist/esm/components/markdown/embeds/Loom.js +13 -0
  394. package/dist/esm/components/markdown/embeds/NativeVideo.js +85 -0
  395. package/dist/esm/components/markdown/embeds/Supademo.js +12 -0
  396. package/dist/esm/components/markdown/embeds/Typeform.js +12 -0
  397. package/dist/esm/components/markdown/embeds/VideoTimeline.js +42 -0
  398. package/dist/esm/components/markdown/embeds/Vimeo.js +21 -0
  399. package/dist/esm/components/markdown/embeds/Wistia.js +21 -0
  400. package/dist/esm/components/markdown/embeds/Youtube.js +33 -0
  401. package/dist/esm/components/markdown/embeds/index.js +36 -0
  402. package/dist/esm/components/markdown/utils/codeblock.js +36 -0
  403. package/dist/esm/components/markdown/utils/stripNewLines.js +3 -0
  404. package/dist/esm/components/markdown/utils/urls.js +34 -0
  405. package/dist/esm/components/markdown.js +5 -2
  406. package/dist/esm/components/metric-card/metric-card.js +29 -0
  407. package/dist/esm/components/metric-card-group/metric-card-group.js +8 -0
  408. package/dist/esm/components/metric-card-group.js +1 -3
  409. package/dist/esm/components/metric-card.js +1 -4
  410. package/dist/esm/components/plan-usage-card/plan-usage-card.js +16 -0
  411. package/dist/esm/components/plan-usage-card.js +1 -3
  412. package/dist/esm/components/rich-text-input/LexicalEditor.js +108 -0
  413. package/dist/esm/components/rich-text-input/RichTextInput.js +7 -0
  414. package/dist/esm/components/select/simpleSelect.js +22 -0
  415. package/dist/esm/components/select.js +1 -2
  416. package/dist/esm/components/trend-value/trend-value.js +50 -0
  417. package/dist/esm/components/trend-value.js +1 -2
  418. package/dist/esm/components/two-level-combobox/two-level-combobox.js +131 -0
  419. package/dist/esm/components/two-level-combobox.js +1 -2
  420. package/dist/esm/components/ui/accordion.js +46 -8
  421. package/dist/esm/components/ui/alert-dialog.js +114 -4
  422. package/dist/esm/components/ui/alert.js +103 -5
  423. package/dist/esm/components/ui/avatar.js +89 -8
  424. package/dist/esm/components/ui/badge.js +26 -3
  425. package/dist/esm/components/ui/breadcrumb.js +60 -5
  426. package/dist/esm/components/ui/button-group.js +88 -5
  427. package/dist/esm/components/ui/button.js +63 -2
  428. package/dist/esm/components/ui/calendar.css +255 -0
  429. package/dist/esm/components/ui/calendar.js +20 -3
  430. package/dist/esm/components/ui/card.js +55 -2
  431. package/dist/esm/components/ui/chart.js +198 -0
  432. package/dist/esm/components/ui/collapsible.js +33 -2
  433. package/dist/esm/components/ui/combobox.js +1 -2
  434. package/dist/esm/components/ui/command.js +79 -3
  435. package/dist/esm/components/ui/dialog.js +53 -3
  436. package/dist/esm/components/ui/div-button.js +61 -3
  437. package/dist/esm/components/ui/dropdown-menu.js +114 -4
  438. package/dist/esm/components/ui/hover-card.js +22 -2
  439. package/dist/esm/components/ui/icon.js +25 -3
  440. package/dist/esm/components/ui/input.js +47 -5
  441. package/dist/esm/components/ui/item.js +140 -12
  442. package/dist/esm/components/ui/label.js +19 -2
  443. package/dist/esm/components/ui/popover.js +31 -2
  444. package/dist/esm/components/ui/progress.js +22 -3
  445. package/dist/esm/components/ui/radio-group.js +33 -3
  446. package/dist/esm/components/ui/resizable.js +38 -5
  447. package/dist/esm/components/ui/ripple-status.js +22 -0
  448. package/dist/esm/components/ui/ripple.js +23 -0
  449. package/dist/esm/components/ui/ripple.module.css +47 -0
  450. package/dist/esm/components/ui/ripple.module.css.js +8 -0
  451. package/dist/esm/components/ui/scroll-area.js +32 -3
  452. package/dist/esm/components/ui/select.js +66 -6
  453. package/dist/esm/components/ui/separator.js +23 -2
  454. package/dist/esm/components/ui/sheet.js +62 -4
  455. package/dist/esm/components/ui/spinner.js +17 -3
  456. package/dist/esm/components/ui/sweep-text.js +24 -0
  457. package/dist/esm/components/ui/switch.js +26 -3
  458. package/dist/esm/components/ui/table.js +82 -2
  459. package/dist/esm/components/ui/tabs.js +65 -2
  460. package/dist/esm/components/ui/textarea.js +33 -2
  461. package/dist/esm/components/ui/tooltip.js +31 -4
  462. package/dist/esm/components/usage-indicator-pill/usage-indicator-pill.js +45 -0
  463. package/dist/esm/global.css +5321 -1
  464. package/dist/esm/index.js +94 -6
  465. package/dist/esm/layouts/full-layout/blurry-blob.js +21 -0
  466. package/dist/esm/layouts/full-layout/components/body.js +8 -0
  467. package/dist/esm/layouts/full-layout/components/header.js +28 -0
  468. package/dist/esm/layouts/full-layout/components/left-sidebar.js +33 -0
  469. package/dist/esm/layouts/full-layout/components/main-area.js +8 -0
  470. package/dist/esm/layouts/full-layout/components/main.js +23 -0
  471. package/dist/esm/layouts/full-layout/components/right-sidebar.js +21 -0
  472. package/dist/esm/layouts/full-layout/context.js +24 -0
  473. package/dist/esm/layouts/full-layout/header-pane.js +49 -0
  474. package/dist/esm/layouts/full-layout/layout.js +305 -0
  475. package/dist/esm/layouts/full-layout/left-sidebar-pane.js +66 -0
  476. package/dist/esm/layouts/full-layout/right-sidebar-pane.js +28 -0
  477. package/dist/esm/layouts/full-layout.js +5 -2
  478. package/dist/esm/layouts/header-nav/account-dropdown.js +90 -0
  479. package/dist/esm/layouts/header-nav/header-nav.js +116 -0
  480. package/dist/esm/layouts/header-nav.js +1 -2
  481. package/dist/esm/layouts/sidebar/app-nav/app-nav.js +47 -0
  482. package/dist/esm/layouts/sidebar/article-nav/article-item.js +138 -0
  483. package/dist/esm/layouts/sidebar/article-nav/article-nav.js +75 -0
  484. package/dist/esm/layouts/sidebar/article-nav/article-search-results.js +46 -0
  485. package/dist/esm/layouts/sidebar/article-nav/article-search.js +44 -0
  486. package/dist/esm/layouts/sidebar/article-nav/article-tree.js +243 -0
  487. package/dist/esm/layouts/sidebar/article-nav/expansion.js +6 -0
  488. package/dist/esm/layouts/sidebar/article-nav/status-icons/article-status-icon.js +34 -0
  489. package/dist/esm/layouts/sidebar/article-nav/status-icons/chevron-slot.js +8 -0
  490. package/dist/esm/layouts/sidebar/article-nav/status-icons/constant.js +3 -0
  491. package/dist/esm/layouts/sidebar/article-nav/status-icons/discovery-icon.js +15 -0
  492. package/dist/esm/layouts/sidebar/article-nav/status-icons/file/file-status-icon.js +31 -0
  493. package/dist/esm/layouts/sidebar/article-nav/status-icons/folder/folder-status-icon.js +59 -0
  494. package/dist/esm/layouts/sidebar/article-nav/status-icons/icon-shell.js +12 -0
  495. package/dist/esm/layouts/sidebar/article-nav/tree-sync.js +52 -0
  496. package/dist/esm/layouts/sidebar/context.js +72 -0
  497. package/dist/esm/layouts/sidebar/section-nav/section-nav.js +26 -0
  498. package/dist/esm/layouts/sidebar/sidebar.js +85 -0
  499. package/dist/esm/layouts/sidebar.js +2 -2
  500. package/dist/esm/lib/addUtmParams.js +26 -0
  501. package/dist/esm/lib/ajvResolver.js +60 -0
  502. package/dist/esm/lib/api.js +240 -0
  503. package/dist/esm/lib/countSuggestions.js +21 -0
  504. package/dist/esm/lib/feature-flags.js +21 -0
  505. package/dist/esm/lib/features.js +5 -0
  506. package/dist/esm/lib/fetchClient.js +77 -0
  507. package/dist/esm/lib/formatDate.js +40 -0
  508. package/dist/esm/lib/formatNumber.js +9 -0
  509. package/dist/esm/lib/getContentType.js +36 -0
  510. package/dist/esm/lib/hooks.js +80 -0
  511. package/dist/esm/lib/pluralise.js +6 -0
  512. package/dist/esm/lib/sortAttributeKeys.js +13 -0
  513. package/dist/esm/lib/styles.js +3 -0
  514. package/dist/esm/lib/useChartDateFormatters.js +10 -0
  515. package/dist/esm/lib/utils.js +45 -0
  516. package/dist/esm/logos/microsoft-logo.js +66 -7
  517. package/dist/esm/logos/microsoft-teams-logo.js +112 -13
  518. package/dist/esm/logos/slack-logo.js +39 -4
  519. package/dist/esm/scenes/knowledge-review/context.js +69 -0
  520. package/dist/esm/scenes/knowledge-review/diff-loader.js +42 -0
  521. package/dist/esm/scenes/knowledge-review/knowledge-review-panel.js +83 -0
  522. package/dist/esm/scenes/knowledge-review/knowledge-review.css +14 -0
  523. package/dist/esm/scenes/knowledge-review/review-list/edit-count.js +8 -0
  524. package/dist/esm/scenes/knowledge-review/review-list/review-list-item.js +37 -0
  525. package/dist/esm/scenes/knowledge-review/review-list/review-list.js +23 -0
  526. package/dist/esm/scenes/knowledge-review/scene.js +122 -0
  527. package/dist/esm/scenes/knowledge-review/status-source-summary.js +41 -0
  528. package/dist/esm/scenes/knowledge-review/suggestion-card/suggestion-card.js +110 -0
  529. package/dist/esm/scenes/knowledge-review/suggestions-header/suggestions-header-title-nav.js +54 -0
  530. package/dist/esm/scenes/knowledge-review/suggestions-header/suggestions-header-toolbar.js +114 -0
  531. package/dist/esm/scenes/knowledge-review/suggestions-header/suggestions-header.js +105 -0
  532. package/dist/esm/scenes/knowledge-review.js +5 -20
  533. package/dist/esm/tailwind.preset.js +305 -2
  534. package/dist/esm/tokens.css +539 -0
  535. package/dist/index.d.ts +60 -2634
  536. package/dist/layouts/full-layout/blurry-blob.d.ts +11 -0
  537. package/dist/layouts/full-layout/components/body.d.ts +7 -0
  538. package/dist/layouts/full-layout/components/header.d.ts +6 -0
  539. package/dist/layouts/full-layout/components/index.d.ts +7 -0
  540. package/dist/layouts/full-layout/components/left-sidebar.d.ts +6 -0
  541. package/dist/layouts/full-layout/components/main-area.d.ts +7 -0
  542. package/dist/layouts/full-layout/components/main.d.ts +8 -0
  543. package/dist/layouts/full-layout/components/right-sidebar.d.ts +8 -0
  544. package/dist/layouts/full-layout/context.d.ts +61 -0
  545. package/dist/layouts/full-layout/header-pane.d.ts +7 -0
  546. package/dist/layouts/full-layout/index.d.ts +10 -0
  547. package/dist/layouts/full-layout/layout.d.ts +27 -0
  548. package/dist/layouts/full-layout/left-sidebar-pane.d.ts +14 -0
  549. package/dist/layouts/full-layout/right-sidebar-pane.d.ts +8 -0
  550. package/dist/layouts/header-nav/account-dropdown.d.ts +71 -0
  551. package/dist/layouts/header-nav/header-nav.d.ts +22 -0
  552. package/dist/layouts/header-nav/index.d.ts +2 -0
  553. package/dist/layouts/sidebar/app-nav/app-nav.d.ts +12 -0
  554. package/dist/layouts/sidebar/app-nav/index.d.ts +1 -0
  555. package/dist/layouts/sidebar/article-nav/article-item.d.ts +18 -0
  556. package/dist/layouts/sidebar/article-nav/article-nav.d.ts +8 -0
  557. package/dist/layouts/sidebar/article-nav/article-search-results.d.ts +7 -0
  558. package/dist/layouts/sidebar/article-nav/article-search.d.ts +2 -0
  559. package/dist/layouts/sidebar/article-nav/article-tree.d.ts +10 -0
  560. package/dist/layouts/sidebar/article-nav/expansion.d.ts +2 -0
  561. package/dist/layouts/sidebar/article-nav/index.d.ts +1 -0
  562. package/dist/layouts/sidebar/article-nav/status-icons/article-status-icon.d.ts +11 -0
  563. package/dist/layouts/sidebar/article-nav/status-icons/chevron-slot.d.ts +4 -0
  564. package/dist/layouts/sidebar/article-nav/status-icons/constant.d.ts +1 -0
  565. package/dist/layouts/sidebar/article-nav/status-icons/discovery-icon.d.ts +4 -0
  566. package/dist/layouts/sidebar/article-nav/status-icons/file/file-status-icon.d.ts +7 -0
  567. package/dist/layouts/sidebar/article-nav/status-icons/folder/folder-status-icon.d.ts +9 -0
  568. package/dist/layouts/sidebar/article-nav/status-icons/icon-shell.d.ts +2 -0
  569. package/dist/layouts/sidebar/article-nav/status-icons/index.d.ts +1 -0
  570. package/dist/layouts/sidebar/article-nav/tree-sync.d.ts +20 -0
  571. package/dist/layouts/sidebar/context.d.ts +33 -0
  572. package/dist/layouts/sidebar/index.d.ts +3 -0
  573. package/dist/layouts/sidebar/mocks.d.ts +4 -0
  574. package/dist/layouts/sidebar/section-nav/index.d.ts +1 -0
  575. package/dist/layouts/sidebar/section-nav/section-nav.d.ts +8 -0
  576. package/dist/layouts/sidebar/sidebar.d.ts +15 -0
  577. package/dist/layouts/sidebar/types.d.ts +20 -0
  578. package/dist/lib/addUtmParams.d.ts +20 -0
  579. package/dist/lib/ajvResolver.d.ts +5 -0
  580. package/dist/lib/api.d.ts +133 -0
  581. package/dist/lib/countSuggestions.d.ts +4 -0
  582. package/dist/lib/feature-flags.d.ts +9 -0
  583. package/dist/lib/features.d.ts +4 -0
  584. package/dist/lib/fetchClient.d.ts +19 -0
  585. package/dist/lib/formatDate.d.ts +4 -0
  586. package/dist/lib/formatNumber.d.ts +1 -0
  587. package/dist/lib/getContentType.d.ts +1 -0
  588. package/dist/lib/groupAttributesByKey.d.ts +1 -0
  589. package/dist/lib/hooks.d.ts +19 -0
  590. package/dist/lib/pluralise.d.ts +1 -0
  591. package/dist/lib/sortAttributeKeys.d.ts +1 -0
  592. package/dist/lib/styles.d.ts +1 -0
  593. package/dist/lib/useChartDateFormatters.d.ts +4 -0
  594. package/dist/lib/utils.d.ts +7 -0
  595. package/dist/logos/microsoft-logo.d.ts +10 -2
  596. package/dist/logos/microsoft-teams-logo.d.ts +10 -2
  597. package/dist/logos/slack-logo.d.ts +10 -2
  598. package/dist/scenes/knowledge-review/context.d.ts +46 -0
  599. package/dist/scenes/knowledge-review/diff-loader.d.ts +10 -0
  600. package/dist/scenes/knowledge-review/index.d.ts +10 -0
  601. package/dist/scenes/knowledge-review/knowledge-review-panel.d.ts +18 -0
  602. package/dist/scenes/knowledge-review/review-list/edit-count.d.ts +4 -0
  603. package/dist/scenes/knowledge-review/review-list/index.d.ts +3 -0
  604. package/dist/scenes/knowledge-review/review-list/mockItems.d.ts +43 -0
  605. package/dist/scenes/knowledge-review/review-list/review-list-item.d.ts +22 -0
  606. package/dist/scenes/knowledge-review/review-list/review-list.d.ts +8 -0
  607. package/dist/scenes/knowledge-review/scene.d.ts +33 -0
  608. package/dist/scenes/knowledge-review/status-source-summary.d.ts +12 -0
  609. package/dist/scenes/knowledge-review/suggestion-card/index.d.ts +2 -0
  610. package/dist/scenes/knowledge-review/suggestion-card/suggestion-card.d.ts +88 -0
  611. package/dist/scenes/knowledge-review/suggestions-header/index.d.ts +1 -0
  612. package/dist/scenes/knowledge-review/suggestions-header/suggestions-header-title-nav.d.ts +12 -0
  613. package/dist/scenes/knowledge-review/suggestions-header/suggestions-header-toolbar.d.ts +20 -0
  614. package/dist/scenes/knowledge-review/suggestions-header/suggestions-header.d.ts +17 -0
  615. package/package.json +42 -33
  616. package/tailwind.preset.ts +2 -1
  617. package/dist/accordion.d.ts +0 -12
  618. package/dist/alert-dialog.d.ts +0 -50
  619. package/dist/alert.d.ts +0 -18
  620. package/dist/article-suggestions-banner.d.ts +0 -16
  621. package/dist/articles-coverage.d.ts +0 -41
  622. package/dist/articles-updated.d.ts +0 -41
  623. package/dist/avatar.d.ts +0 -18
  624. package/dist/badge.d.ts +0 -14
  625. package/dist/breadcrumb.d.ts +0 -27
  626. package/dist/breadcrumbs.d.ts +0 -27
  627. package/dist/button-group.d.ts +0 -22
  628. package/dist/button.d.ts +0 -18
  629. package/dist/calendar.d.ts +0 -12
  630. package/dist/card.d.ts +0 -15
  631. package/dist/chart-area-linear.d.ts +0 -41
  632. package/dist/chart-radial-stacked.d.ts +0 -39
  633. package/dist/chat-search.d.ts +0 -532
  634. package/dist/collapsible.d.ts +0 -10
  635. package/dist/command.d.ts +0 -90
  636. package/dist/confirm-dialog.d.ts +0 -37
  637. package/dist/conversation.d.ts +0 -362
  638. package/dist/convos.d.ts +0 -220
  639. package/dist/data-table.d.ts +0 -23
  640. package/dist/dialog.d.ts +0 -30
  641. package/dist/discoveries-created.d.ts +0 -49
  642. package/dist/div-button.d.ts +0 -16
  643. package/dist/dropdown-menu.d.ts +0 -47
  644. package/dist/editable-label.d.ts +0 -8
  645. package/dist/esm/ChatSearch.css +0 -1
  646. package/dist/esm/chunks/ChatSearch.DD63KIj6.js +0 -96
  647. package/dist/esm/chunks/ChatSearch.DD63KIj6.js.map +0 -1
  648. package/dist/esm/chunks/Conversation.CfhUJm_Q.js +0 -33
  649. package/dist/esm/chunks/Conversation.CfhUJm_Q.js.map +0 -1
  650. package/dist/esm/chunks/FormattedMessage.CEEjawib.js +0 -23
  651. package/dist/esm/chunks/FormattedMessage.CEEjawib.js.map +0 -1
  652. package/dist/esm/chunks/MermaidDiagram.PRgXQ5Yh.js +0 -2
  653. package/dist/esm/chunks/MermaidDiagram.PRgXQ5Yh.js.map +0 -1
  654. package/dist/esm/chunks/_commonjsHelpers.lGe4XDVY.js +0 -2
  655. package/dist/esm/chunks/_commonjsHelpers.lGe4XDVY.js.map +0 -1
  656. package/dist/esm/chunks/ai-badge.BxsWnJJZ.js +0 -5
  657. package/dist/esm/chunks/ai-badge.BxsWnJJZ.js.map +0 -1
  658. package/dist/esm/chunks/ai-logo.Bh2bhNcG.js +0 -8
  659. package/dist/esm/chunks/ai-logo.Bh2bhNcG.js.map +0 -1
  660. package/dist/esm/chunks/button.C7qRaFMP.js +0 -3
  661. package/dist/esm/chunks/button.C7qRaFMP.js.map +0 -1
  662. package/dist/esm/chunks/chart.D9xvsrKX.js +0 -10
  663. package/dist/esm/chunks/chart.D9xvsrKX.js.map +0 -1
  664. package/dist/esm/chunks/chat-logo.F_m9SJrM.js +0 -3
  665. package/dist/esm/chunks/chat-logo.F_m9SJrM.js.map +0 -1
  666. package/dist/esm/chunks/combobox.DKotd4uC.js +0 -6
  667. package/dist/esm/chunks/combobox.DKotd4uC.js.map +0 -1
  668. package/dist/esm/chunks/dark.DuW7JuAk.js +0 -2
  669. package/dist/esm/chunks/dark.DuW7JuAk.js.map +0 -1
  670. package/dist/esm/chunks/data-table.1ptJ47z8.js +0 -5
  671. package/dist/esm/chunks/data-table.1ptJ47z8.js.map +0 -1
  672. package/dist/esm/chunks/date-picker.Bto-A8WE.js +0 -4
  673. package/dist/esm/chunks/date-picker.Bto-A8WE.js.map +0 -1
  674. package/dist/esm/chunks/extends.DPdBf6DS.js +0 -2
  675. package/dist/esm/chunks/extends.DPdBf6DS.js.map +0 -1
  676. package/dist/esm/chunks/feature-flags.DOcVlPHk.js +0 -3
  677. package/dist/esm/chunks/feature-flags.DOcVlPHk.js.map +0 -1
  678. package/dist/esm/chunks/feedback.aGVWiKHH.js +0 -13
  679. package/dist/esm/chunks/feedback.aGVWiKHH.js.map +0 -1
  680. package/dist/esm/chunks/file-upload-status.sUoGRgbH.js +0 -8
  681. package/dist/esm/chunks/file-upload-status.sUoGRgbH.js.map +0 -1
  682. package/dist/esm/chunks/filters.Bxyw3eHZ.js +0 -22
  683. package/dist/esm/chunks/filters.Bxyw3eHZ.js.map +0 -1
  684. package/dist/esm/chunks/font-picker.CVZovtmt.js +0 -6
  685. package/dist/esm/chunks/font-picker.CVZovtmt.js.map +0 -1
  686. package/dist/esm/chunks/formatDate.D2xEZm8f.js +0 -2
  687. package/dist/esm/chunks/formatDate.D2xEZm8f.js.map +0 -1
  688. package/dist/esm/chunks/formatNumber.DhVn228t.js +0 -2
  689. package/dist/esm/chunks/formatNumber.DhVn228t.js.map +0 -1
  690. package/dist/esm/chunks/generating-star.DN8DVygp.js +0 -7
  691. package/dist/esm/chunks/generating-star.DN8DVygp.js.map +0 -1
  692. package/dist/esm/chunks/header-nav.BY2ppP8j.js +0 -12
  693. package/dist/esm/chunks/header-nav.BY2ppP8j.js.map +0 -1
  694. package/dist/esm/chunks/header-pane.DCGet3RZ.js +0 -20
  695. package/dist/esm/chunks/header-pane.DCGet3RZ.js.map +0 -1
  696. package/dist/esm/chunks/hooks.DjDPgQm6.js +0 -2
  697. package/dist/esm/chunks/hooks.DjDPgQm6.js.map +0 -1
  698. package/dist/esm/chunks/index.Ca2JkOFO.js +0 -2
  699. package/dist/esm/chunks/index.Ca2JkOFO.js.map +0 -1
  700. package/dist/esm/chunks/input-with-tags.aktIpAck.js +0 -5
  701. package/dist/esm/chunks/input-with-tags.aktIpAck.js.map +0 -1
  702. package/dist/esm/chunks/logo.DtwFGMBj.js +0 -5
  703. package/dist/esm/chunks/logo.DtwFGMBj.js.map +0 -1
  704. package/dist/esm/chunks/primary.CMQbo1GJ.js +0 -2
  705. package/dist/esm/chunks/primary.CMQbo1GJ.js.map +0 -1
  706. package/dist/esm/chunks/ripple-status.BiOlScXz.js +0 -6
  707. package/dist/esm/chunks/ripple-status.BiOlScXz.js.map +0 -1
  708. package/dist/esm/chunks/sidebar.tGcs3r4O.js +0 -29
  709. package/dist/esm/chunks/sidebar.tGcs3r4O.js.map +0 -1
  710. package/dist/esm/chunks/simpleSelect.BiNOqq3j.js +0 -3
  711. package/dist/esm/chunks/simpleSelect.BiNOqq3j.js.map +0 -1
  712. package/dist/esm/chunks/status-badge.BVWcC9Dt.js +0 -3
  713. package/dist/esm/chunks/status-badge.BVWcC9Dt.js.map +0 -1
  714. package/dist/esm/chunks/suggestion-card.DKQAazak.js +0 -21
  715. package/dist/esm/chunks/suggestion-card.DKQAazak.js.map +0 -1
  716. package/dist/esm/chunks/trend-value.lSWHqdkm.js +0 -3
  717. package/dist/esm/chunks/trend-value.lSWHqdkm.js.map +0 -1
  718. package/dist/esm/chunks/two-level-combobox.CWKR1tXX.js +0 -8
  719. package/dist/esm/chunks/two-level-combobox.CWKR1tXX.js.map +0 -1
  720. package/dist/esm/chunks/useChartDateFormatters.Dx2h5AAm.js +0 -2
  721. package/dist/esm/chunks/useChartDateFormatters.Dx2h5AAm.js.map +0 -1
  722. package/dist/esm/chunks/utils.DtKoarLP.js +0 -2
  723. package/dist/esm/chunks/utils.DtKoarLP.js.map +0 -1
  724. package/dist/esm/colors.js.map +0 -1
  725. package/dist/esm/components/accordion.js +0 -1
  726. package/dist/esm/components/alert-dialog.js +0 -1
  727. package/dist/esm/components/alert.js +0 -1
  728. package/dist/esm/components/article-suggestions-banner.js.map +0 -1
  729. package/dist/esm/components/articles-coverage.js.map +0 -1
  730. package/dist/esm/components/articles-updated.js.map +0 -1
  731. package/dist/esm/components/avatar.js +0 -1
  732. package/dist/esm/components/badge.js +0 -1
  733. package/dist/esm/components/breadcrumb.js +0 -1
  734. package/dist/esm/components/breadcrumbs.js.map +0 -1
  735. package/dist/esm/components/button-group.js +0 -1
  736. package/dist/esm/components/button.js +0 -1
  737. package/dist/esm/components/calendar.js +0 -1
  738. package/dist/esm/components/card.js +0 -1
  739. package/dist/esm/components/chart-area-linear.js.map +0 -1
  740. package/dist/esm/components/chart-radial-stacked.js.map +0 -1
  741. package/dist/esm/components/chat-search.js.map +0 -1
  742. package/dist/esm/components/collapsible.js +0 -1
  743. package/dist/esm/components/combobox.js.map +0 -1
  744. package/dist/esm/components/command.js +0 -1
  745. package/dist/esm/components/confirm-dialog.js.map +0 -1
  746. package/dist/esm/components/conversation.js.map +0 -1
  747. package/dist/esm/components/convos.js.map +0 -1
  748. package/dist/esm/components/data-table.js.map +0 -1
  749. package/dist/esm/components/date-picker.js.map +0 -1
  750. package/dist/esm/components/dialog.js +0 -1
  751. package/dist/esm/components/discoveries-created.js.map +0 -1
  752. package/dist/esm/components/div-button.js +0 -1
  753. package/dist/esm/components/dropdown-menu.js +0 -1
  754. package/dist/esm/components/editable-label.js.map +0 -1
  755. package/dist/esm/components/feedback.js.map +0 -1
  756. package/dist/esm/components/file-upload.js.map +0 -1
  757. package/dist/esm/components/filter.js.map +0 -1
  758. package/dist/esm/components/font-picker.js.map +0 -1
  759. package/dist/esm/components/generating-star.js.map +0 -1
  760. package/dist/esm/components/hover-card.js +0 -1
  761. package/dist/esm/components/icon.js +0 -1
  762. package/dist/esm/components/input-with-tags.js.map +0 -1
  763. package/dist/esm/components/input.js +0 -1
  764. package/dist/esm/components/item.js +0 -1
  765. package/dist/esm/components/label.js +0 -1
  766. package/dist/esm/components/logo.js.map +0 -1
  767. package/dist/esm/components/markdown.js.map +0 -1
  768. package/dist/esm/components/metric-card-group.js.map +0 -1
  769. package/dist/esm/components/metric-card.js.map +0 -1
  770. package/dist/esm/components/plan-usage-card.js.map +0 -1
  771. package/dist/esm/components/popover.js +0 -1
  772. package/dist/esm/components/progress.js +0 -1
  773. package/dist/esm/components/radio-group.js +0 -1
  774. package/dist/esm/components/resizable.js +0 -1
  775. package/dist/esm/components/scroll-area.js +0 -1
  776. package/dist/esm/components/select.js.map +0 -1
  777. package/dist/esm/components/separator.js +0 -1
  778. package/dist/esm/components/sheet.js +0 -1
  779. package/dist/esm/components/spinner.js +0 -1
  780. package/dist/esm/components/switch.js +0 -1
  781. package/dist/esm/components/table.js +0 -1
  782. package/dist/esm/components/tabs.js +0 -1
  783. package/dist/esm/components/textarea.js +0 -1
  784. package/dist/esm/components/tooltip.js +0 -1
  785. package/dist/esm/components/trend-value.js.map +0 -1
  786. package/dist/esm/components/two-level-combobox.js.map +0 -1
  787. package/dist/esm/components/ui/accordion.js.map +0 -1
  788. package/dist/esm/components/ui/alert-dialog.js.map +0 -1
  789. package/dist/esm/components/ui/alert.js.map +0 -1
  790. package/dist/esm/components/ui/avatar.js.map +0 -1
  791. package/dist/esm/components/ui/badge.js.map +0 -1
  792. package/dist/esm/components/ui/breadcrumb.js.map +0 -1
  793. package/dist/esm/components/ui/button-group.js.map +0 -1
  794. package/dist/esm/components/ui/button.js.map +0 -1
  795. package/dist/esm/components/ui/calendar.js.map +0 -1
  796. package/dist/esm/components/ui/card.js.map +0 -1
  797. package/dist/esm/components/ui/collapsible.js.map +0 -1
  798. package/dist/esm/components/ui/combobox.js.map +0 -1
  799. package/dist/esm/components/ui/command.js.map +0 -1
  800. package/dist/esm/components/ui/dialog.js.map +0 -1
  801. package/dist/esm/components/ui/div-button.js.map +0 -1
  802. package/dist/esm/components/ui/dropdown-menu.js.map +0 -1
  803. package/dist/esm/components/ui/hover-card.js.map +0 -1
  804. package/dist/esm/components/ui/icon.js.map +0 -1
  805. package/dist/esm/components/ui/input.js.map +0 -1
  806. package/dist/esm/components/ui/item.js.map +0 -1
  807. package/dist/esm/components/ui/label.js.map +0 -1
  808. package/dist/esm/components/ui/popover.js.map +0 -1
  809. package/dist/esm/components/ui/progress.js.map +0 -1
  810. package/dist/esm/components/ui/radio-group.js.map +0 -1
  811. package/dist/esm/components/ui/resizable.js.map +0 -1
  812. package/dist/esm/components/ui/scroll-area.js.map +0 -1
  813. package/dist/esm/components/ui/select.js.map +0 -1
  814. package/dist/esm/components/ui/separator.js.map +0 -1
  815. package/dist/esm/components/ui/sheet.js.map +0 -1
  816. package/dist/esm/components/ui/spinner.js.map +0 -1
  817. package/dist/esm/components/ui/switch.js.map +0 -1
  818. package/dist/esm/components/ui/table.js.map +0 -1
  819. package/dist/esm/components/ui/tabs.js.map +0 -1
  820. package/dist/esm/components/ui/textarea.js.map +0 -1
  821. package/dist/esm/components/ui/tooltip.js.map +0 -1
  822. package/dist/esm/convos.css +0 -1
  823. package/dist/esm/date-picker.css +0 -1
  824. package/dist/esm/index.js.map +0 -1
  825. package/dist/esm/knowledge-review.css +0 -1
  826. package/dist/esm/layouts/full-layout.js.map +0 -1
  827. package/dist/esm/layouts/header-nav.js.map +0 -1
  828. package/dist/esm/layouts/sidebar.js.map +0 -1
  829. package/dist/esm/logos/microsoft-logo.js.map +0 -1
  830. package/dist/esm/logos/microsoft-teams-logo.js.map +0 -1
  831. package/dist/esm/logos/slack-logo.js.map +0 -1
  832. package/dist/esm/ripple-status.css +0 -1
  833. package/dist/esm/scenes/knowledge-review.js.map +0 -1
  834. package/dist/esm/tailwind.preset.js.map +0 -1
  835. package/dist/file-upload.d.ts +0 -45
  836. package/dist/font-picker.d.ts +0 -106
  837. package/dist/full-layout.d.ts +0 -346
  838. package/dist/generating-star.d.ts +0 -15
  839. package/dist/header-nav.d.ts +0 -105
  840. package/dist/hover-card.d.ts +0 -10
  841. package/dist/icon.d.ts +0 -12
  842. package/dist/input.d.ts +0 -13
  843. package/dist/item.d.ts +0 -39
  844. package/dist/knowledge-review.d.ts +0 -228
  845. package/dist/label.d.ts +0 -8
  846. package/dist/layouts/full-layout.d.ts +0 -2
  847. package/dist/layouts/header-nav.d.ts +0 -2
  848. package/dist/layouts/sidebar.d.ts +0 -2
  849. package/dist/logo.d.ts +0 -38
  850. package/dist/markdown.d.ts +0 -55
  851. package/dist/metric-card-group.d.ts +0 -10
  852. package/dist/metric-card.d.ts +0 -21
  853. package/dist/microsoft-logo.d.ts +0 -15
  854. package/dist/microsoft-teams-logo.d.ts +0 -15
  855. package/dist/popover.d.ts +0 -18
  856. package/dist/progress.d.ts +0 -8
  857. package/dist/radio-group.d.ts +0 -8
  858. package/dist/resizable.d.ts +0 -12
  859. package/dist/scenes/knowledge-review.d.ts +0 -2
  860. package/dist/scroll-area.d.ts +0 -8
  861. package/dist/separator.d.ts +0 -6
  862. package/dist/sheet.d.ts +0 -39
  863. package/dist/sidebar.d.ts +0 -72
  864. package/dist/slack-logo.d.ts +0 -15
  865. package/dist/spinner.d.ts +0 -5
  866. package/dist/stats.html +0 -5305
  867. package/dist/switch.d.ts +0 -6
  868. package/dist/table.d.ts +0 -19
  869. package/dist/tabs.d.ts +0 -12
  870. package/dist/tailwind.preset.d.ts +0 -1
  871. package/dist/textarea.d.ts +0 -9
  872. package/dist/tooltip.d.ts +0 -16
  873. package/dist/trend-value.d.ts +0 -19
@@ -1 +0,0 @@
1
- {"version":3,"file":"filters.Bxyw3eHZ.js","sources":["../../../src/components/filter/types.ts","../../../src/components/filter/hooks.ts","../../../src/components/filter/components/CustomValueInput.tsx","../../../src/components/filter/components/MultiSelectDropdown.tsx","../../../src/components/filter/components/SingleSelectDropdown.tsx","../../../src/components/filter/filter.tsx","../../../src/components/filter/filters.tsx"],"sourcesContent":["// Types\nexport interface FilterOption {\n id: string;\n label: string;\n}\n\nexport enum Operator {\n IS = 'is',\n IS_NOT = 'is not',\n CONTAINS = 'contains',\n DOES_NOT_CONTAIN = 'does not contain',\n STARTS_WITH = 'starts with',\n}\n\nexport interface FilterValue {\n id: string | number;\n source?: string;\n operator?: Operator;\n value?: string | string[];\n}\n\n/**\n * Filter rules for each source\n * How this works:\n * - You can define the rules for each source\n * - The rules are used to determine the available operators and value type\n * - The input type is used to determine the type of input displayed in when the dropdown is opened\n * - The getValueOptions function is used to determine the available options for the value\n * - multiSelect determines if multiple values can be selected for dropdown type\n *\n * @example\n * {\n * 'sourceId': {\n * operators: [\n * { id: 'is', label: 'is' },\n * { id: 'is not', label: 'is not' },\n * ],\n * inputType: 'dropdown' | 'custom',\n * multiSelect?: boolean,\n * getValueOptions?: () => FilterOption[],\n * },\n * }\n */\nexport interface FilterRules {\n [sourceId: string]: {\n operators: FilterOption[];\n inputType: 'dropdown' | 'custom';\n multiSelect?: boolean;\n getValueOptions?: () => FilterOption[];\n };\n}\n\nexport interface FilterProps {\n filter: FilterValue;\n sourceOptions: FilterOption[];\n rules: FilterRules;\n onSourceChange?: (sourceId: string) => void;\n onRemoveFilter: (id: string | number) => void;\n onFilterChange: (filter: FilterValue) => void;\n selectPlaceholder?: string;\n customValuePlaceholder?: string;\n customValueButtonLabel?: string;\n sourceFirstMessage?: string;\n}\n","import { FilterValue } from './types';\n\nexport const useMultiSelectHelpers = (\n internalFilter: FilterValue,\n valueOptions: Array<{ id: string; label: string }>,\n selectPlaceholder: string,\n) => {\n const getSelectedValues = (): string[] => {\n if (Array.isArray(internalFilter.value)) {\n return internalFilter.value;\n }\n\n return internalFilter.value ? [internalFilter.value] : [];\n };\n\n const isValueSelected = (valueId: string): boolean => {\n const selectedValues = getSelectedValues();\n\n return selectedValues.includes(valueId);\n };\n\n const getDisplayValue = (): string => {\n const selectedValues = getSelectedValues();\n if (selectedValues.length === 0) return selectPlaceholder;\n if (selectedValues.length === 1) {\n const option = valueOptions.find((opt) => opt.id === selectedValues[0]);\n\n return option?.label || selectedValues[0];\n }\n\n return `${selectedValues.length} selected`;\n };\n\n return {\n getSelectedValues,\n isValueSelected,\n getDisplayValue,\n };\n};\n","import React, { useRef } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\n\ninterface CustomValueInputProps {\n inputValue: string;\n setInputValue: (value: string) => void;\n customValuePlaceholder: string;\n customValueButtonLabel: string;\n onSubmit: () => void;\n handleKeyDown: (e: React.KeyboardEvent<HTMLInputElement | HTMLButtonElement>, isInput: boolean) => void;\n}\n\nexport const CustomValueInput: React.FC<CustomValueInputProps> = ({\n inputValue,\n setInputValue,\n customValuePlaceholder,\n customValueButtonLabel,\n onSubmit,\n handleKeyDown,\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n\n return (\n <form\n className=\"p-3\"\n onSubmit={(e) => {\n e.preventDefault();\n onSubmit();\n }}\n >\n <Input\n ref={inputRef}\n type=\"text\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n placeholder={customValuePlaceholder}\n className=\"mb-2\"\n onKeyDown={(e) => handleKeyDown(e, true)}\n />\n <Button\n type=\"submit\"\n variant=\"dark\"\n className=\"w-full\"\n onKeyDown={(e) => handleKeyDown(e, false)}\n data-custom-submit-button\n >\n {customValueButtonLabel}\n </Button>\n </form>\n );\n};\n","import React, { useState, useRef } from 'react';\nimport { Check } from '@phosphor-icons/react';\n\nimport { FilterValue, FilterOption } from '../types';\n\nimport { Button } from '@/components/ui/button';\n\ninterface MultiSelectDropdownProps {\n internalFilter: FilterValue;\n valueOptions: FilterOption[];\n onConfirm: (selectedValues: string[]) => void;\n onClose: () => void;\n}\n\nconst getInitialValues = (value: FilterValue['value']): string[] => {\n if (Array.isArray(value)) {\n return value;\n } else if (value) {\n return [value];\n }\n\n return [];\n};\n\nexport const MultiSelectDropdown: React.FC<MultiSelectDropdownProps> = ({\n internalFilter,\n valueOptions,\n onConfirm,\n onClose,\n}) => {\n const [pendingValues, setPendingValues] = useState<string[]>(() => getInitialValues(internalFilter.value));\n const [announcement, setAnnouncement] = useState<string>('');\n const buttonRefs = useRef<(HTMLButtonElement | null)[]>([]);\n const applyButtonRef = useRef<HTMLButtonElement>(null);\n\n const handleValueToggle = (valueId: string) => {\n const option = valueOptions.find((opt) => opt.id === valueId);\n const isCurrentlySelected = pendingValues.includes(valueId);\n\n setPendingValues((prev) => {\n const newValues = prev.includes(valueId) ? prev.filter((id) => id !== valueId) : [...prev, valueId];\n\n // Announce the change\n if (option) {\n const action = isCurrentlySelected ? 'deselected' : 'selected';\n setAnnouncement(`${option.label} ${action}.`);\n }\n\n return newValues;\n });\n };\n\n const handleConfirm = () => {\n onConfirm(pendingValues);\n onClose();\n };\n\n const isValueSelected = (valueId: string): boolean => {\n return pendingValues.includes(valueId);\n };\n\n const focusButton = (index: number) => {\n if (index < valueOptions.length) {\n buttonRefs.current[index]?.focus();\n } else {\n applyButtonRef.current?.focus();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent, index: number) => {\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault();\n const nextIndex = Math.min(index + 1, valueOptions.length);\n focusButton(nextIndex);\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n const prevIndex = Math.max(index - 1, 0);\n focusButton(prevIndex);\n break;\n }\n case 'Enter':\n case 'Spacebar':\n e.preventDefault();\n if (index < valueOptions.length) {\n // If the user is selecting an option\n handleValueToggle(valueOptions[index].id);\n } else {\n // If the user is selecting the apply button\n handleConfirm();\n }\n break;\n case 'Escape':\n e.preventDefault();\n onClose();\n break;\n }\n };\n\n return (\n <div className=\"py-1\" role=\"listbox\" aria-multiselectable=\"true\">\n {/* Screen reader announcements */}\n <div aria-live=\"polite\" aria-atomic=\"true\" className=\"sr-only\">\n {announcement}\n </div>\n\n {valueOptions.map((option, index) => (\n <button\n key={option.id}\n ref={(el) => (buttonRefs.current[index] = el)}\n type=\"button\"\n className=\"relative flex w-full text-left cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground\"\n onClick={() => handleValueToggle(option.id)}\n onKeyDown={(e) => handleKeyDown(e, index)}\n role=\"option\"\n aria-selected={isValueSelected(option.id)}\n >\n {isValueSelected(option.id) && <Check size={14} className=\"mr-2\" />}\n {!isValueSelected(option.id) && <span className=\"mr-2 w-3.5\" />}\n {option.label}\n </button>\n ))}\n\n <div className=\"border-t border-border mt-1 pt-2 px-2 pb-2\">\n <Button\n ref={applyButtonRef}\n onClick={handleConfirm}\n size=\"sm\"\n className=\"w-full\"\n disabled={pendingValues.length === 0}\n onKeyDown={(e) => handleKeyDown(e, valueOptions.length)}\n >\n Apply ({pendingValues.length} selected)\n </Button>\n </div>\n </div>\n );\n};\n","import React, { useRef } from 'react';\nimport { Check } from '@phosphor-icons/react';\n\nimport { FilterOption } from '../types';\n\ninterface SingleSelectDropdownProps {\n valueOptions: FilterOption[];\n isValueSelected: (valueId: string) => boolean;\n onValueSelect: (valueId: string) => void;\n}\n\nexport const SingleSelectDropdown: React.FC<SingleSelectDropdownProps> = ({\n valueOptions,\n isValueSelected,\n onValueSelect,\n}) => {\n const buttonRefs = useRef<(HTMLButtonElement | null)[]>([]);\n\n const focusButton = (index: number) => {\n buttonRefs.current[index]?.focus();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent, index: number) => {\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault();\n const nextIndex = Math.min(index + 1, valueOptions.length - 1);\n focusButton(nextIndex);\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n const prevIndex = Math.max(index - 1, 0);\n focusButton(prevIndex);\n break;\n }\n case 'Enter':\n case 'Spacebar':\n e.preventDefault();\n onValueSelect(valueOptions[index].id);\n break;\n }\n };\n\n return (\n <div className=\"py-1\" role=\"listbox\">\n {valueOptions.map((option, index) => (\n <button\n key={option.id}\n ref={(el) => (buttonRefs.current[index] = el)}\n type=\"button\"\n className=\"relative flex w-full text-left cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground\"\n onClick={() => onValueSelect(option.id)}\n onKeyDown={(e) => handleKeyDown(e, index)}\n >\n {isValueSelected(option.id) && <Check size={14} className=\"mr-2\" />}\n {!isValueSelected(option.id) && <span className=\"mr-2 w-3.5\" />}\n {option.label}\n </button>\n ))}\n </div>\n );\n};\n","import React, { useState, useEffect, forwardRef, useRef, useImperativeHandle } from 'react';\nimport { Check, XCircle } from '@phosphor-icons/react';\n\nimport { FilterProps, FilterValue, Operator } from './types';\nimport { useMultiSelectHelpers } from './hooks';\nimport { CustomValueInput } from './components/CustomValueInput';\nimport { MultiSelectDropdown } from './components/MultiSelectDropdown';\nimport { SingleSelectDropdown } from './components/SingleSelectDropdown';\n\nimport { Button } from '@/components/ui/button';\nimport { ButtonGroup } from '@/components/ui/button-group';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\n\nconst Filter = forwardRef<{ focus: () => void }, FilterProps>(\n (\n {\n filter,\n sourceOptions,\n rules,\n onSourceChange,\n onRemoveFilter,\n onFilterChange,\n selectPlaceholder = 'Select a value',\n customValuePlaceholder = 'Enter custom value',\n customValueButtonLabel = 'Done',\n sourceFirstMessage = 'Please select a source first',\n }: FilterProps,\n ref,\n ) => {\n // State\n const [internalFilter, setInternalFilter] = useState<FilterValue>({\n id: filter.id,\n source: filter.source,\n operator: filter.operator || Operator.IS,\n value: filter.value,\n });\n const [inputValue, setInputValue] = useState('');\n const [openDropdownType, setOpenDropdownType] = useState<'source' | 'operator' | 'value' | null>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const sourceButtonRef = useRef<HTMLButtonElement>(null);\n const divRef = useRef<HTMLDivElement>(null);\n\n // Expose focus method\n useImperativeHandle(ref, () => ({\n focus: () => {\n sourceButtonRef.current?.focus();\n },\n }));\n\n // Get current rules for selected source\n const currentRules = internalFilter.source ? rules[internalFilter.source] : undefined;\n const operatorOptions = currentRules?.operators || [];\n const isMultiSelect = currentRules?.multiSelect || false;\n let inputType = currentRules?.inputType || 'dropdown';\n if (internalFilter.operator === Operator.CONTAINS || internalFilter.operator === Operator.DOES_NOT_CONTAIN) {\n inputType = 'custom';\n }\n const valueOptions = currentRules?.getValueOptions ? currentRules.getValueOptions() : [];\n\n // Multi-select helpers\n const { getSelectedValues, isValueSelected, getDisplayValue } = useMultiSelectHelpers(\n internalFilter,\n valueOptions,\n selectPlaceholder,\n );\n\n // Auto-focus input when dropdown opens and custom input is needed\n useEffect(() => {\n if (openDropdownType === 'value' && inputType === 'custom') {\n const timeoutId = setTimeout(() => inputRef.current?.focus(), 50);\n\n return () => clearTimeout(timeoutId);\n }\n\n return undefined;\n }, [openDropdownType, inputType]);\n\n // Sync with external state\n useEffect(() => {\n setInternalFilter({\n id: filter.id,\n source: filter.source,\n operator: filter.operator || Operator.IS,\n value: filter.value,\n });\n }, [filter]);\n\n // Helper function to check if filter is complete and trigger onChange\n const checkAndTriggerChange = (newFilter: FilterValue) => {\n const hasValue = Array.isArray(newFilter.value) ? newFilter.value.length > 0 : !!newFilter.value?.trim();\n\n const isComplete = newFilter.source && newFilter.operator && hasValue;\n\n if (isComplete) {\n onFilterChange(newFilter);\n }\n };\n\n // Handle field updates\n const updateFilterField = (field: keyof FilterValue, value: string) => {\n const newFilter: FilterValue = { ...internalFilter, [field]: value };\n\n // Special handling for source changes\n if (field === 'source') {\n const sourceRules = rules[value];\n newFilter.operator = sourceRules?.operators[0]?.id as Operator;\n newFilter.value = sourceRules?.multiSelect ? [] : '';\n }\n // If operator changes, also clear value if inputType is dropdown\n if (field === 'operator') {\n if (internalFilter.source) {\n const sourceRules = rules[internalFilter.source];\n if (sourceRules?.inputType === 'dropdown') {\n newFilter.value = sourceRules?.multiSelect ? [] : '';\n }\n }\n }\n\n setInternalFilter(newFilter);\n checkAndTriggerChange(newFilter);\n\n if (!isMultiSelect || field !== 'value') {\n setOpenDropdownType(null);\n }\n };\n\n // Handle multi-select value changes\n const handleValueToggle = (valueId: string) => {\n const selectedValues = getSelectedValues();\n let newValues: string[];\n\n if (isMultiSelect) {\n if (selectedValues.includes(valueId)) {\n newValues = selectedValues.filter((id) => id !== valueId);\n } else {\n newValues = [...selectedValues, valueId];\n }\n } else {\n newValues = [valueId];\n }\n\n const newFilter = {\n ...internalFilter,\n value: isMultiSelect ? newValues : newValues[0] || '',\n };\n\n setInternalFilter(newFilter);\n checkAndTriggerChange(newFilter);\n\n // Close dropdown for single select, keep open for multi-select\n if (!isMultiSelect) {\n setOpenDropdownType(null);\n }\n };\n\n // Handle multi-select confirmation\n const handleMultiSelectConfirm = (selectedValues: string[]) => {\n const newFilter = {\n ...internalFilter,\n value: selectedValues,\n };\n\n setInternalFilter(newFilter);\n\n // Trigger onChange if filter is complete\n const isComplete = newFilter.source && newFilter.operator && selectedValues.length > 0;\n if (isComplete) onFilterChange(newFilter);\n\n setOpenDropdownType(null);\n };\n\n // Handle custom value submission\n const handleCustomValueSubmit = () => {\n if (inputValue.trim()) {\n const newFilter = { ...internalFilter, value: inputValue.trim() };\n setInternalFilter(newFilter);\n setInputValue('');\n setOpenDropdownType(null);\n if (newFilter.source && newFilter.operator && newFilter.value) {\n onFilterChange(newFilter);\n }\n }\n };\n\n // Tab trap handlers\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement | HTMLButtonElement>, isInput: boolean) => {\n if (e.key === 'Escape') {\n setOpenDropdownType(null);\n\n return;\n }\n if (e.key === 'Tab') {\n if (isInput && !e.shiftKey) {\n e.preventDefault();\n const button = document.querySelector('[data-custom-submit-button]') as HTMLButtonElement;\n button?.focus();\n } else if (!isInput) {\n e.preventDefault();\n inputRef.current?.focus();\n }\n }\n };\n\n return (\n <ButtonGroup\n ref={divRef}\n orientation=\"horizontal\"\n className=\"rounded-full border border-border divide-x-2 divide-dark-500\"\n >\n {/* Source Dropdown */}\n <DropdownMenu\n open={openDropdownType === 'source'}\n onOpenChange={(open) => setOpenDropdownType(open ? 'source' : null)}\n modal={false}\n >\n <DropdownMenuTrigger asChild>\n <Button ref={sourceButtonRef} variant=\"ghost\" size=\"xs\" className=\"rounded-l-full font-bold\">\n {sourceOptions.find((opt) => opt.id === internalFilter.source)?.label ||\n sourceOptions[0]?.label ||\n selectPlaceholder}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"w-48\">\n {sourceOptions.map((option) => (\n <DropdownMenuItem\n key={option.id}\n className=\"flex items-center\"\n onSelect={() => {\n updateFilterField('source', option.id);\n onSourceChange?.(option.id);\n }}\n >\n {option.id === internalFilter.source && <Check size={14} className=\"mr-2\" />}\n {option.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n\n {/* Operator Dropdown */}\n <DropdownMenu\n open={openDropdownType === 'operator'}\n onOpenChange={(open) => setOpenDropdownType(open ? 'operator' : null)}\n modal={false}\n >\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"xs\">\n {operatorOptions.find((opt) => opt.id === internalFilter.operator)?.label || selectPlaceholder}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"w-48\">\n {operatorOptions.map((option) => (\n <DropdownMenuItem\n key={option.id}\n className=\"flex items-center\"\n onSelect={() => updateFilterField('operator', option.id)}\n >\n {option.id === internalFilter.operator && <Check size={14} className=\"mr-2\" />}\n {option.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n\n {/* Value Popover */}\n <Popover\n open={openDropdownType === 'value'}\n onOpenChange={(open) => setOpenDropdownType(open ? 'value' : null)}\n >\n <PopoverTrigger asChild>\n <Button variant=\"ghost\" size=\"xs\" className=\"font-bold\">\n {getDisplayValue()}\n </Button>\n </PopoverTrigger>\n <PopoverContent align=\"start\" className=\"w-64 max-h-[min(320px,50vh)] overflow-y-auto p-0\">\n {inputType === 'custom' && (\n <div className=\"p-3\">\n <CustomValueInput\n inputValue={inputValue}\n setInputValue={setInputValue}\n customValuePlaceholder={customValuePlaceholder}\n customValueButtonLabel={customValueButtonLabel}\n onSubmit={handleCustomValueSubmit}\n handleKeyDown={handleKeyDown}\n />\n </div>\n )}\n {inputType === 'dropdown' && (\n <>\n {internalFilter.source ? (\n <>\n {isMultiSelect ? (\n <MultiSelectDropdown\n internalFilter={internalFilter}\n valueOptions={valueOptions}\n onConfirm={handleMultiSelectConfirm}\n onClose={() => setOpenDropdownType(null)}\n />\n ) : (\n <SingleSelectDropdown\n valueOptions={valueOptions}\n isValueSelected={isValueSelected}\n onValueSelect={handleValueToggle}\n />\n )}\n </>\n ) : (\n <div className=\"p-3 text-sm text-gray-500\">{sourceFirstMessage}</div>\n )}\n </>\n )}\n </PopoverContent>\n </Popover>\n\n {/* Remove button */}\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"xs\"\n onClick={() => {\n setInternalFilter({ id: filter.id });\n setOpenDropdownType(null);\n onRemoveFilter(filter.id);\n }}\n className=\"p-2 hover:bg-black/10 rounded-none rounded-r-full\"\n aria-label=\"Remove filter\"\n >\n <XCircle size={16} weight=\"fill\" />\n </Button>\n </ButtonGroup>\n );\n },\n);\n\nFilter.displayName = 'Filter';\n\nexport { Filter };\n","import React, { useState, useEffect, useRef } from 'react';\nimport { Plus } from '@phosphor-icons/react';\nimport { createId } from '@paralleldrive/cuid2';\n\nimport { Filter, FilterOption, FilterRules, FilterValue, Operator } from './index';\nimport { Button } from '../ui/button';\n\nimport { cn } from '@/lib/utils';\n\ninterface FiltersProps extends React.HTMLAttributes<HTMLDivElement> {\n filters: FilterValue[];\n onFilterChange: (filter: FilterValue) => void;\n onFilterRemove: (filterId: string | number) => void;\n onFilterAdd?: (filter: FilterValue) => void;\n sourceOptions: FilterOption[];\n rules: FilterRules;\n}\n\nconst Filters = ({\n filters,\n onFilterChange,\n onFilterRemove,\n onFilterAdd,\n sourceOptions,\n rules,\n className,\n}: FiltersProps) => {\n const [internalFilters, setInternalFilters] = useState<FilterValue[]>(filters || []);\n const filterRefs = useRef<{ [key: string]: { focus: () => void } | null }>({});\n\n // Sync internal state with props\n useEffect(() => {\n setInternalFilters(filters || []);\n }, [filters]);\n\n // Get sources that are already in use\n const usedSources = internalFilters.map((filter) => filter.source).filter(Boolean);\n\n // Get available sources that haven't been used yet\n const availableSources = sourceOptions.filter((option) => {\n // If the source has multiSelect enabled, filter out used sources\n if (rules[option.id]?.multiSelect) {\n return !usedSources.includes(option.id);\n }\n\n // If multiSelect is false or undefined, allow the source to be used multiple times\n return sourceOptions;\n });\n\n // Check if we can add more filters\n const canAddFilter = availableSources.length > 0;\n\n const handleAddFilter = () => {\n if (!canAddFilter) return;\n\n const newFilter = {\n id: createId(),\n source: availableSources[0].id,\n operator: Operator.IS,\n value: rules[availableSources[0].id]?.multiSelect ? [] : '',\n };\n\n const newFilters = [...internalFilters, newFilter];\n setInternalFilters(newFilters);\n\n // Focus the new filter after it's rendered\n requestAnimationFrame(() => {\n filterRefs.current[newFilter.id]?.focus();\n });\n\n // Notify parent if callback provided\n onFilterAdd?.(newFilter);\n };\n\n const handleRemoveFilter = (filter: FilterValue) => {\n const newFilters = internalFilters.filter((f) => f.id !== filter.id);\n setInternalFilters(newFilters);\n onFilterRemove(filter.id);\n };\n\n return (\n <fieldset className={cn('flex flex-wrap gap-2', className)}>\n <legend className=\"sr-only\">Filters</legend>\n {internalFilters?.map((filter) => {\n // For each filter, include available sources plus its own current source\n const filterSourceOptions = sourceOptions.filter(\n (option) =>\n !usedSources.includes(option.id) || // Available sources\n option.id === filter.source, // Or its own current source\n );\n\n return (\n <Filter\n key={filter.id}\n ref={(ref) => {\n filterRefs.current[filter.id] = ref;\n }}\n filter={filter}\n sourceOptions={filterSourceOptions}\n rules={rules}\n onRemoveFilter={() => handleRemoveFilter(filter)}\n onFilterChange={onFilterChange}\n />\n );\n })}\n {canAddFilter && (\n <Button\n onClick={handleAddFilter}\n variant=\"ghost\"\n className=\"border border-foreground rounded-full gap-1\"\n size=\"sm\"\n title=\"Add filter\"\n >\n <Plus size={16} />\n Add filter\n </Button>\n )}\n </fieldset>\n );\n};\n\nexport { Filters };\n"],"names":["Operator","CustomValueInput","inputValue","setInputValue","customValuePlaceholder","customValueButtonLabel","onSubmit","handleKeyDown","inputRef","useRef","React","createElement","className","e","preventDefault","Input","ref","type","value","onChange","target","placeholder","onKeyDown","Button","variant","MultiSelectDropdown","internalFilter","valueOptions","onConfirm","onClose","pendingValues","setPendingValues","useState","getInitialValues","Array","isArray","announcement","setAnnouncement","buttonRefs","applyButtonRef","handleValueToggle","valueId","option","find","opt","id","isCurrentlySelected","includes","prev","newValues","filter","action","label","handleConfirm","isValueSelected","focusButton","index","length","current","focus","key","nextIndex","Math","min","prevIndex","max","role","map","el","onClick","Check","size","disabled","SingleSelectDropdown","onValueSelect","Filter","forwardRef","sourceOptions","rules","onSourceChange","onRemoveFilter","onFilterChange","selectPlaceholder","sourceFirstMessage","setInternalFilter","source","operator","IS","openDropdownType","setOpenDropdownType","sourceButtonRef","divRef","useImperativeHandle","currentRules","operatorOptions","operators","isMultiSelect","multiSelect","inputType","CONTAINS","DOES_NOT_CONTAIN","getValueOptions","getSelectedValues","getDisplayValue","selectedValues","useMultiSelectHelpers","useEffect","timeoutId","setTimeout","clearTimeout","checkAndTriggerChange","newFilter","hasValue","trim","updateFilterField","field","sourceRules","ButtonGroup","orientation","DropdownMenu","open","onOpenChange","modal","DropdownMenuTrigger","asChild","DropdownMenuContent","align","DropdownMenuItem","onSelect","Popover","PopoverTrigger","PopoverContent","isInput","shiftKey","button","document","querySelector","XCircle","weight","displayName","Filters","filters","onFilterRemove","onFilterAdd","internalFilters","setInternalFilters","filterRefs","usedSources","Boolean","availableSources","canAddFilter","cn","filterSourceOptions","newFilters","f","handleRemoveFilter","createId","requestAnimationFrame","title","Plus"],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import*as e from"react";import{Check as t,SpinnerGap as o}from"@phosphor-icons/react";import{c as a}from"./utils.DtKoarLP.js";import{CommandItem as n}from"../components/ui/command.js";import{C as r}from"./combobox.DKotd4uC.js";const s="brainfish-google-fonts-cache",l="brainfish-google-fonts-cache-timestamp",c=/* @__PURE__ */new Set,i=()=>{try{const e=localStorage.getItem(l);if(!e)return null;if(Date.now()-parseInt(e,10)>864e5)return localStorage.removeItem(s),localStorage.removeItem(l),null;const t=localStorage.getItem(s);return t?JSON.parse(t):null}catch{return null}},m=e=>{try{localStorage.setItem(s,JSON.stringify(e)),localStorage.setItem(l,Date.now().toString())}catch{}},f=e=>{if(c.has(e))return;const t=document.createElement("link");t.href=`https://fonts.googleapis.com/css2?family=${e.replace(/ /g,"+")}&display=swap`,t.rel="stylesheet",document.head.appendChild(t),c.add(e)},u=()=>{try{localStorage.removeItem(s),localStorage.removeItem(l)}catch{}};function d({apiKey:t,maxFonts:o=500,onError:a}){const[n,r]=e.useState([]),[s,l]=e.useState(!0),c=e.useRef(a);return e.useEffect(()=>{c.current=a},[a]),e.useEffect(()=>{(async()=>{const e=i();if(e&&e.length>0)return r(e.slice(0,o)),void l(!1);try{const e=await fetch(`https://www.googleapis.com/webfonts/v1/webfonts?key=${t}&sort=popularity`);if(!e.ok)throw new Error(`Failed to fetch fonts: ${e.statusText}`);const a=(await e.json()).items.map(e=>({value:e.family,label:e.family,category:e.category,variants:e.variants}));m(a),r(a.slice(0,o))}catch(a){const e=a instanceof Error?a:new Error("Failed to fetch fonts");console.error("FontPicker: Failed to fetch Google Fonts",e),c.current?.(e)}finally{l(!1)}})()},[t,o]),{fonts:n,isLoading:s,loadFont:f}}const g=e.memo(function({font:o,isSelected:r,onSelect:s}){const l=e.useRef(null),[c,i]=e.useState(!1);e.useEffect(()=>{const e=new IntersectionObserver(([t])=>{t.isIntersecting&&(i(!0),e.disconnect())},{threshold:.1});return l.current&&e.observe(l.current),()=>e.disconnect()},[]),e.useEffect(()=>{c&&f(o.value)},[c,o.value]);const m=`Select ${o.label} font${o.category?`, ${o.category} category`:""}`;/* @__PURE__ */
2
- return e.createElement(n,{ref:l,value:o.label,onSelect:s,className:"cursor-pointer","aria-label":m,"aria-selected":r},
3
- /* @__PURE__ */e.createElement("span",{style:{fontFamily:c?o.value:void 0},className:"flex-1 truncate"},o.label),o.category&&/* @__PURE__ */e.createElement("span",{className:"text-xs text-muted-foreground capitalize"},o.category),
4
- /* @__PURE__ */e.createElement(t,{className:a("ml-2 h-4 w-4",r?"opacity-100":"opacity-0")}))});function p({value:t,onChange:a,apiKey:n,placeholder:s="Select a font...",searchPlaceholder:l="Search fonts...",noResultsText:c="No fonts found.",loadingText:i="Loading fonts...",disabled:m=!1,className:f,dropdownWidth:u,maxFonts:p=500,onError:h}){const{fonts:y,isLoading:S,loadFont:E}=d({apiKey:n,maxFonts:p,onError:h});e.useEffect(()=>{t&&E(t)},[t,E]);const v=y;/* @__PURE__ */
5
- return e.createElement(r,{options:v,value:t,onChange:a,defaultValueLabel:s,placeholder:l,noResultsLabel:c,disabled:m||S,className:f,dropdownWidth:u,renderTrigger:({selectedItem:t})=>S?/* @__PURE__ */e.createElement("span",{className:"flex items-center gap-2 text-muted-foreground"},/* @__PURE__ */e.createElement(o,{className:"h-4 w-4 animate-spin"}),i):t?/* @__PURE__ */e.createElement("span",{style:{fontFamily:t.value}},t.label):/* @__PURE__ */e.createElement("span",{className:"text-muted-foreground"},s),renderItem:({item:t,isSelected:o,onSelect:a})=>/* @__PURE__ */e.createElement(g,{font:t,isSelected:o,onSelect:a})})}export{p as F,g as a,u as c,i as g,f as l,m as s,d as u};
6
- //# sourceMappingURL=font-picker.CVZovtmt.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"font-picker.CVZovtmt.js","sources":["../../../src/components/font-picker/font-utils.ts","../../../src/components/font-picker/use-font-options.ts","../../../src/components/font-picker/font-picker-item.tsx","../../../src/components/font-picker/font-picker.tsx"],"sourcesContent":["import { FontOption } from './types';\n\n// Cache keys for localStorage\nconst FONT_CACHE_KEY = 'brainfish-google-fonts-cache';\nconst FONT_CACHE_TIMESTAMP_KEY = 'brainfish-google-fonts-cache-timestamp';\nconst FONT_CACHE_DURATION_MS = 24 * 60 * 60 * 1000; // 24 hours\n\n// Cache for loaded font stylesheets to prevent duplicate loads\nconst loadedFonts = new Set<string>();\n\n/**\n * Get cached fonts from localStorage\n */\nexport const getCachedFonts = (): FontOption[] | null => {\n try {\n const timestamp = localStorage.getItem(FONT_CACHE_TIMESTAMP_KEY);\n if (!timestamp) return null;\n\n const cacheAge = Date.now() - parseInt(timestamp, 10);\n if (cacheAge > FONT_CACHE_DURATION_MS) {\n localStorage.removeItem(FONT_CACHE_KEY);\n localStorage.removeItem(FONT_CACHE_TIMESTAMP_KEY);\n\n return null;\n }\n\n const cached = localStorage.getItem(FONT_CACHE_KEY);\n if (!cached) return null;\n\n return JSON.parse(cached) as FontOption[];\n } catch {\n return null;\n }\n};\n\n/**\n * Save fonts to localStorage cache\n */\nexport const setCachedFonts = (fonts: FontOption[]): void => {\n try {\n localStorage.setItem(FONT_CACHE_KEY, JSON.stringify(fonts));\n localStorage.setItem(FONT_CACHE_TIMESTAMP_KEY, Date.now().toString());\n } catch {\n // localStorage might be full or unavailable, ignore\n }\n};\n\n/**\n * Load a Google Font stylesheet dynamically\n */\nexport const loadFont = (fontFamily: string): void => {\n if (loadedFonts.has(fontFamily)) return;\n\n const link = document.createElement('link');\n link.href = `https://fonts.googleapis.com/css2?family=${fontFamily.replace(/ /g, '+')}&display=swap`;\n link.rel = 'stylesheet';\n document.head.appendChild(link);\n loadedFonts.add(fontFamily);\n};\n\n/**\n * Clear the font cache from localStorage\n * Useful for forcing a fresh fetch of fonts\n */\nexport const clearFontCache = (): void => {\n try {\n localStorage.removeItem(FONT_CACHE_KEY);\n localStorage.removeItem(FONT_CACHE_TIMESTAMP_KEY);\n } catch {\n // localStorage might be unavailable, ignore\n }\n};\n","import * as React from 'react';\n\nimport { FontOption } from './types';\nimport { getCachedFonts, setCachedFonts, loadFont } from './font-utils';\n\nexport interface UseFontOptionsProps {\n apiKey: string;\n maxFonts?: number;\n onError?: (error: Error) => void;\n}\n\nexport interface UseFontOptionsReturn {\n fonts: FontOption[];\n isLoading: boolean;\n loadFont: typeof loadFont;\n}\n\n/**\n * Hook to fetch and manage Google Fonts options\n * Handles caching, loading state, and font stylesheet loading\n */\nexport function useFontOptions({ apiKey, maxFonts = 500, onError }: UseFontOptionsProps): UseFontOptionsReturn {\n const [fonts, setFonts] = React.useState<FontOption[]>([]);\n const [isLoading, setIsLoading] = React.useState(true);\n\n // Stabilize onError callback reference to prevent effect re-runs when\n // consumers pass inline functions (which create new references on every render)\n const onErrorRef = React.useRef(onError);\n React.useEffect(() => {\n onErrorRef.current = onError;\n }, [onError]);\n\n React.useEffect(() => {\n const fetchFonts = async () => {\n // Check cache first\n const cachedFonts = getCachedFonts();\n if (cachedFonts && cachedFonts.length > 0) {\n setFonts(cachedFonts.slice(0, maxFonts));\n setIsLoading(false);\n\n return;\n }\n\n try {\n const response = await fetch(`https://www.googleapis.com/webfonts/v1/webfonts?key=${apiKey}&sort=popularity`);\n\n if (!response.ok) {\n throw new Error(`Failed to fetch fonts: ${response.statusText}`);\n }\n\n const data = await response.json();\n\n const fontOptions: FontOption[] = data.items.map((fontItem: { family: string; category: string; variants: string[] }) => ({\n value: fontItem.family,\n label: fontItem.family,\n category: fontItem.category,\n variants: fontItem.variants,\n }));\n\n // Cache all fonts, but only display up to maxFonts\n setCachedFonts(fontOptions);\n setFonts(fontOptions.slice(0, maxFonts));\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to fetch fonts');\n\n console.error('FontPicker: Failed to fetch Google Fonts', error);\n onErrorRef.current?.(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n void fetchFonts();\n }, [apiKey, maxFonts]);\n\n return { fonts, isLoading, loadFont };\n}\n","import * as React from 'react';\nimport { Check } from '@phosphor-icons/react';\n\nimport { FontOption } from './types';\nimport { loadFont } from './font-utils';\n\nimport { cn } from '@/lib/utils';\nimport { CommandItem } from '@/components/ui/command';\n\nexport interface FontPickerItemProps {\n font: FontOption;\n isSelected: boolean;\n onSelect: () => void;\n}\n\n/**\n * Individual font item in the dropdown list\n * Loads font on mount for preview using Intersection Observer\n * Memoized to prevent unnecessary re-renders\n */\nexport const FontPickerItem = React.memo(function FontPickerItem({ font, isSelected, onSelect }: FontPickerItemProps) {\n const itemRef = React.useRef<HTMLDivElement>(null);\n const [isVisible, setIsVisible] = React.useState(false);\n\n // Use Intersection Observer to lazy-load fonts\n React.useEffect(() => {\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setIsVisible(true);\n observer.disconnect();\n }\n },\n { threshold: 0.1 },\n );\n\n if (itemRef.current) {\n observer.observe(itemRef.current);\n }\n\n return () => observer.disconnect();\n }, []);\n\n // Load font when visible\n React.useEffect(() => {\n if (isVisible) {\n loadFont(font.value);\n }\n }, [isVisible, font.value]);\n\n // Build accessible label\n const ariaLabel = `Select ${font.label} font${font.category ? `, ${font.category} category` : ''}`;\n\n return (\n <CommandItem\n ref={itemRef}\n value={font.label}\n onSelect={onSelect}\n className=\"cursor-pointer\"\n aria-label={ariaLabel}\n aria-selected={isSelected}\n >\n <span style={{ fontFamily: isVisible ? font.value : undefined }} className=\"flex-1 truncate\">\n {font.label}\n </span>\n {font.category && <span className=\"text-xs text-muted-foreground capitalize\">{font.category}</span>}\n <Check className={cn('ml-2 h-4 w-4', isSelected ? 'opacity-100' : 'opacity-0')} />\n </CommandItem>\n );\n});\n","import * as React from 'react';\nimport { SpinnerGap } from '@phosphor-icons/react';\n\nimport { useFontOptions } from './use-font-options';\nimport { FontPickerItem } from './font-picker-item';\n\nimport { Combobox } from '@/components/combobox/combobox';\n\nexport interface FontPickerProps {\n /** Currently selected font family */\n value?: string;\n /** Callback when font selection changes */\n onChange?: (fontFamily: string) => void;\n /** Google Fonts API key (required) */\n apiKey: string;\n /** Placeholder text when no font is selected */\n placeholder?: string;\n /** Text shown in search input */\n searchPlaceholder?: string;\n /** Text shown when no fonts match the search */\n noResultsText?: string;\n /** Text shown while fonts are loading */\n loadingText?: string;\n /** Whether the picker is disabled */\n disabled?: boolean;\n /** Additional CSS classes for the trigger button */\n className?: string;\n /** Width of the dropdown (defaults to trigger width) */\n dropdownWidth?: number;\n /** Maximum number of fonts to display (for performance) */\n maxFonts?: number;\n /** Callback when an error occurs fetching fonts */\n onError?: (error: Error) => void;\n}\n\n/**\n * FontPicker - A searchable dropdown for selecting Google Fonts\n *\n * @example\n * ```tsx\n * const [font, setFont] = useState('Inter');\n *\n * <FontPicker\n * apiKey=\"YOUR_API_KEY\"\n * value={font}\n * onChange={setFont}\n * placeholder=\"Select a font\"\n * />\n * ```\n */\nexport function FontPicker({\n value,\n onChange,\n apiKey,\n placeholder = 'Select a font...',\n searchPlaceholder = 'Search fonts...',\n noResultsText = 'No fonts found.',\n loadingText = 'Loading fonts...',\n disabled = false,\n className,\n dropdownWidth,\n maxFonts = 500,\n onError,\n}: FontPickerProps) {\n const { fonts, isLoading, loadFont } = useFontOptions({ apiKey, maxFonts, onError });\n\n // Load font stylesheet when selected\n React.useEffect(() => {\n if (value) {\n loadFont(value);\n }\n }, [value, loadFont]);\n\n // fonts already have value/label which Combobox requires\n const options = fonts;\n\n return (\n <Combobox\n options={options}\n value={value}\n onChange={onChange}\n defaultValueLabel={placeholder}\n placeholder={searchPlaceholder}\n noResultsLabel={noResultsText}\n disabled={disabled || isLoading}\n className={className}\n dropdownWidth={dropdownWidth}\n renderTrigger={({ selectedItem }) => {\n if (isLoading) {\n return (\n <span className=\"flex items-center gap-2 text-muted-foreground\">\n <SpinnerGap className=\"h-4 w-4 animate-spin\" />\n {loadingText}\n </span>\n );\n }\n\n if (selectedItem) {\n return <span style={{ fontFamily: selectedItem.value }}>{selectedItem.label}</span>;\n }\n\n return <span className=\"text-muted-foreground\">{placeholder}</span>;\n }}\n renderItem={({ item, isSelected, onSelect }) => (\n <FontPickerItem font={item} isSelected={isSelected} onSelect={onSelect} />\n )}\n />\n );\n}\n\nexport default FontPicker;\n"],"names":["FONT_CACHE_KEY","FONT_CACHE_TIMESTAMP_KEY","loadedFonts","Set","getCachedFonts","timestamp","localStorage","getItem","Date","now","parseInt","removeItem","cached","JSON","parse","setCachedFonts","fonts","setItem","stringify","toString","loadFont","fontFamily","has","link","document","createElement","href","replace","rel","head","appendChild","add","clearFontCache","useFontOptions","apiKey","maxFonts","onError","setFonts","React","useState","isLoading","setIsLoading","onErrorRef","useRef","useEffect","current","async","cachedFonts","length","slice","response","fetch","ok","Error","statusText","fontOptions","json","items","map","fontItem","value","family","label","category","variants","err","error","console","fetchFonts","FontPickerItem","memo","font","isSelected","onSelect","itemRef","isVisible","setIsVisible","observer","IntersectionObserver","entry","isIntersecting","disconnect","threshold","observe","ariaLabel","CommandItem","ref","className","style","Check","cn","FontPicker","onChange","placeholder","searchPlaceholder","noResultsText","loadingText","disabled","dropdownWidth","options","Combobox","defaultValueLabel","noResultsLabel","renderTrigger","selectedItem","SpinnerGap","renderItem","item"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- const t=86400,n=31556952,e=2629746,o=Symbol.for("constructDateFrom");function r(t,n){return"function"==typeof t?t(n):t&&"object"==typeof t&&o in t?t[o](n):t instanceof Date?new t.constructor(n):new Date(n)}function u(t,...n){const e=r.bind(null,t||n.find(t=>"object"==typeof t));return n.map(e)}function a(t,n){return r(t,t)}function c(t){const n=a(t),e=new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()));return e.setUTCFullYear(n.getFullYear()),+t-+e}function i(t,n){const e=a(t);return e.setHours(0,0,0,0),e}function s(t,n,e){const[o,r]=u(e?.in,t,n),a=i(o),s=i(r),f=+a-c(a),l=+s-c(s);return Math.round((f-l)/864e5)}function f(t,n,e){const[o,r]=u(e?.in,t,n);return 12*(o.getFullYear()-r.getFullYear())+(o.getMonth()-r.getMonth())}function l(t,n){const e=a(t);return Math.trunc(e.getMonth()/3)+1}function g(t,n,e){const[o,r]=u(e?.in,t,n);return 4*(o.getFullYear()-r.getFullYear())+(l(o)-l(r))}let h={};function M(){return h}function d(t,n){const e=M(),o=e.weekStartsOn??e.locale?.options?.weekStartsOn??0,r=a(t),u=r.getDay(),c=(u<o?7:0)+u-o;return r.setDate(r.getDate()-c),r.setHours(0,0,0,0),r}function m(t,n,e){const[o,r]=u(e?.in,t,n),a=d(o),i=d(r),s=+a-c(a),f=+i-c(i);return Math.round((s-f)/6048e5)}function y(t,n,e){const[o,r]=u(e?.in,t,n);return o.getFullYear()-r.getFullYear()}function D(t){return n=>{const e=(t?Math[t]:Math.trunc)(n);return 0===e?0:e}}function b(t,n,e){const[o,r]=u(e?.in,t,n),a=(+o-+r)/36e5;return D(e?.roundingMethod)(a)}function F(t,n){return+a(t)-+a(n)}function S(t,n,e){const o=F(t,n)/6e4;return D(e?.roundingMethod)(o)}function p(t,n,e){const o=F(t,n)/1e3;return D(e?.roundingMethod)(o)}function w(t){return t||(t="undefined"!=typeof navigator?navigator.language:"en-US"),t}function Y(o,r){const a=w(r);return function(o,r,a){let c,i=0;const[l,h]=u(a?.in,o,r);if(a?.unit)c=a?.unit,"second"===c?i=p(l,h):"minute"===c?i=S(l,h):"hour"===c?i=b(l,h):"day"===c?i=s(l,h):"week"===c?i=m(l,h):"month"===c?i=f(l,h):"quarter"===c?i=g(l,h):"year"===c&&(i=y(l,h));else{const o=p(l,h);Math.abs(o)<60?(i=p(l,h),c="second"):Math.abs(o)<3600?(i=S(l,h),c="minute"):Math.abs(o)<t&&Math.abs(s(l,h))<1?(i=b(l,h),c="hour"):Math.abs(o)<604800&&(i=s(l,h))&&Math.abs(i)<7?c="day":Math.abs(o)<e?(i=m(l,h),c="week"):Math.abs(o)<7889238?(i=f(l,h),c="month"):Math.abs(o)<n&&g(l,h)<4?(i=g(l,h),c="quarter"):(i=y(l,h),c="year")}return new Intl.RelativeTimeFormat(a?.locale,{numeric:"auto",...a}).format(i,c)}(o,/* @__PURE__ */new Date,{locale:a,style:"short"})}function U(t,n){const e=w(n);return t.toLocaleDateString(e,{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit",hour12:!0})}function k(t,n="en-US"){return"string"==typeof t?t:t instanceof Date?t.toLocaleDateString(n,{month:"short",day:"numeric"}):""}function v(t,n="en-US"){return"string"==typeof t?t:t instanceof Date?t.toLocaleDateString(n,{month:"long",day:"numeric",year:"numeric"}):""}export{v as a,Y as b,U as c,k as f};
2
- //# sourceMappingURL=formatDate.D2xEZm8f.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formatDate.D2xEZm8f.js","sources":["../../../../../node_modules/date-fns/constants.js","../../../../../node_modules/date-fns/constructFrom.js","../../../../../node_modules/date-fns/_lib/normalizeDates.js","../../../../../node_modules/date-fns/toDate.js","../../../../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../../../../../node_modules/date-fns/startOfDay.js","../../../../../node_modules/date-fns/differenceInCalendarDays.js","../../../../../node_modules/date-fns/differenceInCalendarMonths.js","../../../../../node_modules/date-fns/getQuarter.js","../../../../../node_modules/date-fns/differenceInCalendarQuarters.js","../../../../../node_modules/date-fns/_lib/defaultOptions.js","../../../../../node_modules/date-fns/startOfWeek.js","../../../../../node_modules/date-fns/differenceInCalendarWeeks.js","../../../../../node_modules/date-fns/differenceInCalendarYears.js","../../../../../node_modules/date-fns/_lib/getRoundingMethod.js","../../../../../node_modules/date-fns/differenceInHours.js","../../../../../node_modules/date-fns/differenceInMilliseconds.js","../../../../../node_modules/date-fns/differenceInMinutes.js","../../../../../node_modules/date-fns/differenceInSeconds.js","../../../src/lib/formatDate.ts","../../../../../node_modules/date-fns/intlFormatDistance.js"],"sourcesContent":["/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const laterStartOfDay = startOfDay(laterDate_);\n const earlierStartOfDay = startOfDay(earlierDate_);\n\n const laterTimestamp =\n +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n const earlierTimestamp =\n +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarMonths} function options.\n */\n\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of calendar months\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport function differenceInCalendarMonths(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const yearsDiff = laterDate_.getFullYear() - earlierDate_.getFullYear();\n const monthsDiff = laterDate_.getMonth() - earlierDate_.getMonth();\n\n return yearsDiff * 12 + monthsDiff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarMonths;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getQuarter} function options.\n */\n\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The quarter\n *\n * @example\n * // Which quarter is 2 July 2014?\n * const result = getQuarter(new Date(2014, 6, 2));\n * //=> 3\n */\nexport function getQuarter(date, options) {\n const _date = toDate(date, options?.in);\n const quarter = Math.trunc(_date.getMonth() / 3) + 1;\n return quarter;\n}\n\n// Fallback for modularized imports:\nexport default getQuarter;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { getQuarter } from \"./getQuarter.js\";\n\n/**\n * The {@link differenceInCalendarQuarters} function options.\n */\n\n/**\n * @name differenceInCalendarQuarters\n * @category Quarter Helpers\n * @summary Get the number of calendar quarters between the given dates.\n *\n * @description\n * Get the number of calendar quarters between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of calendar quarters\n *\n * @example\n * // How many calendar quarters are between 31 December 2013 and 2 July 2014?\n * const result = differenceInCalendarQuarters(\n * new Date(2014, 6, 2),\n * new Date(2013, 11, 31)\n * )\n * //=> 3\n */\nexport function differenceInCalendarQuarters(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const yearsDiff = laterDate_.getFullYear() - earlierDate_.getFullYear();\n const quartersDiff = getQuarter(laterDate_) - getQuarter(earlierDate_);\n\n return yearsDiff * 4 + quartersDiff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarQuarters;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInWeek } from \"./constants.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link differenceInCalendarWeeks} function options.\n */\n\n/**\n * @name differenceInCalendarWeeks\n * @category Week Helpers\n * @summary Get the number of calendar weeks between the given dates.\n *\n * @description\n * Get the number of calendar weeks between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of calendar weeks\n *\n * @example\n * // How many calendar weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 3\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5),\n * { weekStartsOn: 1 }\n * )\n * //=> 2\n */\nexport function differenceInCalendarWeeks(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const laterStartOfWeek = startOfWeek(laterDate_, options);\n const earlierStartOfWeek = startOfWeek(earlierDate_, options);\n\n const laterTimestamp =\n +laterStartOfWeek - getTimezoneOffsetInMilliseconds(laterStartOfWeek);\n const earlierTimestamp =\n +earlierStartOfWeek - getTimezoneOffsetInMilliseconds(earlierStartOfWeek);\n\n return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInWeek);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarWeeks;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarYears} function options.\n */\n\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n\n * @returns The number of calendar years\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * );\n * //=> 2\n */\nexport function differenceInCalendarYears(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n return laterDate_.getFullYear() - earlierDate_.getFullYear();\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarYears;\n","export function getRoundingMethod(method) {\n return (number) => {\n const round = method ? Math[method] : Math.trunc;\n const result = round(number);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n };\n}\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInHour } from \"./constants.js\";\n\n/**\n * The {@link differenceInHours} function options.\n */\n\n/**\n * @name differenceInHours\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of hours\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * const result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\nexport function differenceInHours(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n const diff = (+laterDate_ - +earlierDate_) / millisecondsInHour;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInHours;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n *\n * @returns The number of milliseconds\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport function differenceInMilliseconds(laterDate, earlierDate) {\n return +toDate(laterDate) - +toDate(earlierDate);\n}\n\n// Fallback for modularized imports:\nexport default differenceInMilliseconds;\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { millisecondsInMinute } from \"./constants.js\";\nimport { differenceInMilliseconds } from \"./differenceInMilliseconds.js\";\n\n/**\n * The {@link differenceInMinutes} function options.\n */\n\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the signed number of full (rounded towards 0) minutes between the given dates.\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of minutes\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * const result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n *\n * @example\n * // How many minutes are between 10:01:59 and 10:00:00\n * const result = differenceInMinutes(\n * new Date(2000, 0, 1, 10, 0, 0),\n * new Date(2000, 0, 1, 10, 1, 59)\n * )\n * //=> -1\n */\nexport function differenceInMinutes(dateLeft, dateRight, options) {\n const diff =\n differenceInMilliseconds(dateLeft, dateRight) / millisecondsInMinute;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInMinutes;\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { differenceInMilliseconds } from \"./differenceInMilliseconds.js\";\n\n/**\n * The {@link differenceInSeconds} function options.\n */\n\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of seconds\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport function differenceInSeconds(laterDate, earlierDate, options) {\n const diff = differenceInMilliseconds(laterDate, earlierDate) / 1000;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInSeconds;\n","import { intlFormatDistance } from 'date-fns/intlFormatDistance';\n\nfunction getLocale(locale?: string) {\n const defaultLocale = 'en-US';\n if (!locale) {\n if (typeof navigator !== 'undefined') {\n locale = navigator.language;\n } else {\n locale = defaultLocale;\n }\n }\n\n return locale;\n}\nexport function formatDistance(timestamp: Date, localeParam?: string) {\n const locale = getLocale(localeParam);\n\n return intlFormatDistance(timestamp, new Date(), { locale, style: 'short' });\n}\n\nexport function formatDate(date: Date, localeParam?: string) {\n const locale = getLocale(localeParam);\n\n return date.toLocaleDateString(locale, {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n hour12: true,\n });\n}\n\nexport function formatChartTick(value: Date | string | undefined, locale = 'en-US'): string {\n if (typeof value === 'string') return value;\n if (!(value instanceof Date)) return '';\n\n return value.toLocaleDateString(locale, { month: 'short', day: 'numeric' });\n}\n\nexport function formatChartLabel(value: Date | string | undefined, locale = 'en-US'): string {\n if (typeof value === 'string') return value;\n if (!(value instanceof Date)) return '';\n\n return value.toLocaleDateString(locale, { month: 'long', day: 'numeric', year: 'numeric' });\n}\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport {\n secondsInDay,\n secondsInHour,\n secondsInMinute,\n secondsInMonth,\n secondsInQuarter,\n secondsInWeek,\n secondsInYear,\n} from \"./constants.js\";\nimport { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { differenceInCalendarMonths } from \"./differenceInCalendarMonths.js\";\nimport { differenceInCalendarQuarters } from \"./differenceInCalendarQuarters.js\";\nimport { differenceInCalendarWeeks } from \"./differenceInCalendarWeeks.js\";\nimport { differenceInCalendarYears } from \"./differenceInCalendarYears.js\";\nimport { differenceInHours } from \"./differenceInHours.js\";\nimport { differenceInMinutes } from \"./differenceInMinutes.js\";\nimport { differenceInSeconds } from \"./differenceInSeconds.js\";\n\n/**\n * The {@link intlFormatDistance} function options.\n */\n\n/**\n * The unit used to format the distance in {@link intlFormatDistance}.\n */\n\n/**\n * @name intlFormatDistance\n * @category Common Helpers\n * @summary Formats distance between two dates in a human-readable format\n * @description\n * The function calculates the difference between two dates and formats it as a human-readable string.\n *\n * The function will pick the most appropriate unit depending on the distance between dates. For example, if the distance is a few hours, it might return `x hours`. If the distance is a few months, it might return `x months`.\n *\n * You can also specify a unit to force using it regardless of the distance to get a result like `123456 hours`.\n *\n * See the table below for the unit picking logic:\n *\n * | Distance between dates | Result (past) | Result (future) |\n * | ---------------------- | -------------- | --------------- |\n * | 0 seconds | now | now |\n * | 1-59 seconds | X seconds ago | in X seconds |\n * | 1-59 minutes | X minutes ago | in X minutes |\n * | 1-23 hours | X hours ago | in X hours |\n * | 1 day | yesterday | tomorrow |\n * | 2-6 days | X days ago | in X days |\n * | 7 days | last week | next week |\n * | 8 days-1 month | X weeks ago | in X weeks |\n * | 1 month | last month | next month |\n * | 2-3 months | X months ago | in X months |\n * | 1 quarter | last quarter | next quarter |\n * | 2-3 quarters | X quarters ago | in X quarters |\n * | 1 year | last year | next year |\n * | 2+ years | X years ago | in X years |\n *\n * @param laterDate - The date\n * @param earlierDate - The date to compare with.\n * @param options - An object with options.\n * See MDN for details [Locale identification and negotiation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locale_identification_and_negotiation)\n * The narrow one could be similar to the short one for some locales.\n *\n * @returns The distance in words according to language-sensitive relative time formatting.\n *\n * @throws `date` must not be Invalid Date\n * @throws `baseDate` must not be Invalid Date\n * @throws `options.unit` must not be invalid Unit\n * @throws `options.locale` must not be invalid locale\n * @throws `options.localeMatcher` must not be invalid localeMatcher\n * @throws `options.numeric` must not be invalid numeric\n * @throws `options.style` must not be invalid style\n *\n * @example\n * // What is the distance between the dates when the fist date is after the second?\n * intlFormatDistance(\n * new Date(1986, 3, 4, 11, 30, 0),\n * new Date(1986, 3, 4, 10, 30, 0)\n * )\n * //=> 'in 1 hour'\n *\n * // What is the distance between the dates when the fist date is before the second?\n * intlFormatDistance(\n * new Date(1986, 3, 4, 10, 30, 0),\n * new Date(1986, 3, 4, 11, 30, 0)\n * )\n * //=> '1 hour ago'\n *\n * @example\n * // Use the unit option to force the function to output the result in quarters. Without setting it, the example would return \"next year\"\n * intlFormatDistance(\n * new Date(1987, 6, 4, 10, 30, 0),\n * new Date(1986, 3, 4, 10, 30, 0),\n * { unit: 'quarter' }\n * )\n * //=> 'in 5 quarters'\n *\n * @example\n * // Use the locale option to get the result in Spanish. Without setting it, the example would return \"in 1 hour\".\n * intlFormatDistance(\n * new Date(1986, 3, 4, 11, 30, 0),\n * new Date(1986, 3, 4, 10, 30, 0),\n * { locale: 'es' }\n * )\n * //=> 'dentro de 1 hora'\n *\n * @example\n * // Use the numeric option to force the function to use numeric values. Without setting it, the example would return \"tomorrow\".\n * intlFormatDistance(\n * new Date(1986, 3, 5, 11, 30, 0),\n * new Date(1986, 3, 4, 11, 30, 0),\n * { numeric: 'always' }\n * )\n * //=> 'in 1 day'\n *\n * @example\n * // Use the style option to force the function to use short values. Without setting it, the example would return \"in 2 years\".\n * intlFormatDistance(\n * new Date(1988, 3, 4, 11, 30, 0),\n * new Date(1986, 3, 4, 11, 30, 0),\n * { style: 'short' }\n * )\n * //=> 'in 2 yr'\n */\nexport function intlFormatDistance(laterDate, earlierDate, options) {\n let value = 0;\n let unit;\n\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n if (!options?.unit) {\n // Get the unit based on diffInSeconds calculations if no unit is specified\n const diffInSeconds = differenceInSeconds(laterDate_, earlierDate_); // The smallest unit\n\n if (Math.abs(diffInSeconds) < secondsInMinute) {\n value = differenceInSeconds(laterDate_, earlierDate_);\n unit = \"second\";\n } else if (Math.abs(diffInSeconds) < secondsInHour) {\n value = differenceInMinutes(laterDate_, earlierDate_);\n unit = \"minute\";\n } else if (\n Math.abs(diffInSeconds) < secondsInDay &&\n Math.abs(differenceInCalendarDays(laterDate_, earlierDate_)) < 1\n ) {\n value = differenceInHours(laterDate_, earlierDate_);\n unit = \"hour\";\n } else if (\n Math.abs(diffInSeconds) < secondsInWeek &&\n (value = differenceInCalendarDays(laterDate_, earlierDate_)) &&\n Math.abs(value) < 7\n ) {\n unit = \"day\";\n } else if (Math.abs(diffInSeconds) < secondsInMonth) {\n value = differenceInCalendarWeeks(laterDate_, earlierDate_);\n unit = \"week\";\n } else if (Math.abs(diffInSeconds) < secondsInQuarter) {\n value = differenceInCalendarMonths(laterDate_, earlierDate_);\n unit = \"month\";\n } else if (Math.abs(diffInSeconds) < secondsInYear) {\n if (differenceInCalendarQuarters(laterDate_, earlierDate_) < 4) {\n // To filter out cases that are less than a year but match 4 quarters\n value = differenceInCalendarQuarters(laterDate_, earlierDate_);\n unit = \"quarter\";\n } else {\n value = differenceInCalendarYears(laterDate_, earlierDate_);\n unit = \"year\";\n }\n } else {\n value = differenceInCalendarYears(laterDate_, earlierDate_);\n unit = \"year\";\n }\n } else {\n // Get the value if unit is specified\n unit = options?.unit;\n if (unit === \"second\") {\n value = differenceInSeconds(laterDate_, earlierDate_);\n } else if (unit === \"minute\") {\n value = differenceInMinutes(laterDate_, earlierDate_);\n } else if (unit === \"hour\") {\n value = differenceInHours(laterDate_, earlierDate_);\n } else if (unit === \"day\") {\n value = differenceInCalendarDays(laterDate_, earlierDate_);\n } else if (unit === \"week\") {\n value = differenceInCalendarWeeks(laterDate_, earlierDate_);\n } else if (unit === \"month\") {\n value = differenceInCalendarMonths(laterDate_, earlierDate_);\n } else if (unit === \"quarter\") {\n value = differenceInCalendarQuarters(laterDate_, earlierDate_);\n } else if (unit === \"year\") {\n value = differenceInCalendarYears(laterDate_, earlierDate_);\n }\n }\n\n const rtf = new Intl.RelativeTimeFormat(options?.locale, {\n numeric: \"auto\",\n ...options,\n });\n\n return rtf.format(value, unit);\n}\n\n// Fallback for modularized imports:\nexport default intlFormatDistance;\n"],"names":["secondsInDay","secondsInHour","secondsInYear","secondsInMonth","constructFromSymbol","Symbol","for","constructFrom","date","value","Date","constructor","normalizeDates","context","dates","normalize","bind","find","map","toDate","argument","getTimezoneOffsetInMilliseconds","_date","utcDate","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","startOfDay","options","setHours","differenceInCalendarDays","laterDate","earlierDate","laterDate_","earlierDate_","in","laterStartOfDay","earlierStartOfDay","laterTimestamp","earlierTimestamp","Math","round","differenceInCalendarMonths","getQuarter","trunc","differenceInCalendarQuarters","defaultOptions","getDefaultOptions","startOfWeek","weekStartsOn","locale","day","getDay","diff","setDate","differenceInCalendarWeeks","laterStartOfWeek","earlierStartOfWeek","differenceInCalendarYears","getRoundingMethod","method","number","result","differenceInHours","roundingMethod","differenceInMilliseconds","differenceInMinutes","dateLeft","dateRight","differenceInSeconds","getLocale","navigator","language","formatDistance","timestamp","localeParam","unit","diffInSeconds","abs","Intl","RelativeTimeFormat","numeric","format","intlFormatDistance","style","formatDate","toLocaleDateString","month","year","hour","minute","hour12","formatChartTick","formatChartLabel"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20]}
@@ -1,2 +0,0 @@
1
- const t=(t,o={maximumFractionDigits:1,notation:"compact"})=>{const a=Intl.DateTimeFormat().resolvedOptions().locale;return Intl.NumberFormat(a,o).format(t)};export{t as f};
2
- //# sourceMappingURL=formatNumber.DhVn228t.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formatNumber.DhVn228t.js","sources":["../../../src/lib/formatNumber.ts"],"sourcesContent":["export const formatNumber = (\n number: number,\n options: Intl.NumberFormatOptions = {\n maximumFractionDigits: 1,\n notation: 'compact',\n },\n) => {\n // get region from browser\n const region = Intl.DateTimeFormat().resolvedOptions().locale;\n\n return Intl.NumberFormat(region, options).format(number);\n};\n"],"names":["formatNumber","number","options","maximumFractionDigits","notation","region","Intl","DateTimeFormat","resolvedOptions","locale","NumberFormat","format"],"mappings":"AAAO,MAAMA,EAAe,CAC1BC,EACAC,EAAoC,CAClCC,sBAAuB,EACvBC,SAAU,cAIZ,MAAMC,EAASC,KAAKC,iBAAiBC,kBAAkBC,OAEvD,OAAOH,KAAKI,aAAaL,EAAQH,GAASS,OAAOV"}
@@ -1,7 +0,0 @@
1
- import e,{useState as t,useEffect as a,useId as r}from"react";import{cva as n}from"class-variance-authority";import{c as o}from"./utils.DtKoarLP.js";import{_ as s}from"./extends.DPdBf6DS.js";function i(e){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},i(e)}function l(e,t){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},l(e,t)}function f(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(f=function(){return!!e})()}function u(e){var t="function"==typeof Map?new Map:void 0;return u=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(t){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,a)}function a(){return function(e,t,a){if(f())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var n=new(e.bind.apply(e,r));return a&&l(n,a.prototype),n}(e,arguments,i(this).constructor)}return a.prototype=Object.create(e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),l(a,e)},u(e)}var p={1:"Passed invalid arguments to hsl, please pass multiple numbers e.g. hsl(360, 0.75, 0.4) or an object e.g. rgb({ hue: 255, saturation: 0.4, lightness: 0.75 }).\n\n",2:"Passed invalid arguments to hsla, please pass multiple numbers e.g. hsla(360, 0.75, 0.4, 0.7) or an object e.g. rgb({ hue: 255, saturation: 0.4, lightness: 0.75, alpha: 0.7 }).\n\n",3:"Passed an incorrect argument to a color function, please pass a string representation of a color.\n\n",4:"Couldn't generate valid rgb string from %s, it returned %s.\n\n",5:"Couldn't parse the color string. Please provide the color as a string in hex, rgb, rgba, hsl or hsla notation.\n\n",6:"Passed invalid arguments to rgb, please pass multiple numbers e.g. rgb(255, 205, 100) or an object e.g. rgb({ red: 255, green: 205, blue: 100 }).\n\n",7:"Passed invalid arguments to rgba, please pass multiple numbers e.g. rgb(255, 205, 100, 0.75) or an object e.g. rgb({ red: 255, green: 205, blue: 100, alpha: 0.75 }).\n\n",8:"Passed invalid argument to toColorString, please pass a RgbColor, RgbaColor, HslColor or HslaColor object.\n\n",9:"Please provide a number of steps to the modularScale helper.\n\n",10:"Please pass a number or one of the predefined scales to the modularScale helper as the ratio.\n\n",11:'Invalid value passed as base to modularScale, expected number or em string but got "%s"\n\n',12:'Expected a string ending in "px" or a number passed as the first argument to %s(), got "%s" instead.\n\n',13:'Expected a string ending in "px" or a number passed as the second argument to %s(), got "%s" instead.\n\n',14:'Passed invalid pixel value ("%s") to %s(), please pass a value like "12px" or 12.\n\n',15:'Passed invalid base value ("%s") to %s(), please pass a value like "12px" or 12.\n\n',16:"You must provide a template to this method.\n\n",17:"You passed an unsupported selector state to this method.\n\n",18:"minScreen and maxScreen must be provided as stringified numbers with the same units.\n\n",19:"fromSize and toSize must be provided as stringified numbers with the same units.\n\n",20:"expects either an array of objects or a single object with the properties prop, fromSize, and toSize.\n\n",21:"expects the objects in the first argument array to have the properties `prop`, `fromSize`, and `toSize`.\n\n",22:"expects the first argument object to have the properties `prop`, `fromSize`, and `toSize`.\n\n",23:"fontFace expects a name of a font-family.\n\n",24:"fontFace expects either the path to the font file(s) or a name of a local copy.\n\n",25:"fontFace expects localFonts to be an array.\n\n",26:"fontFace expects fileFormats to be an array.\n\n",27:"radialGradient requries at least 2 color-stops to properly render.\n\n",28:"Please supply a filename to retinaImage() as the first argument.\n\n",29:"Passed invalid argument to triangle, please pass correct pointingDirection e.g. 'right'.\n\n",30:"Passed an invalid value to `height` or `width`. Please provide a pixel based unit.\n\n",31:"The animation shorthand only takes 8 arguments. See the specification for more information: http://mdn.io/animation\n\n",32:"To pass multiple animations please supply them in arrays, e.g. animation(['rotate', '2s'], ['move', '1s'])\nTo pass a single animation please supply them in simple values, e.g. animation('rotate', '2s')\n\n",33:"The animation shorthand arrays can only have 8 elements. See the specification for more information: http://mdn.io/animation\n\n",34:"borderRadius expects a radius value as a string or number as the second argument.\n\n",35:'borderRadius expects one of "top", "bottom", "left" or "right" as the first argument.\n\n',36:"Property must be a string value.\n\n",37:"Syntax Error at %s.\n\n",38:"Formula contains a function that needs parentheses at %s.\n\n",39:"Formula is missing closing parenthesis at %s.\n\n",40:"Formula has too many closing parentheses at %s.\n\n",41:"All values in a formula must have the same unit or be unitless.\n\n",42:"Please provide a number of steps to the modularScale helper.\n\n",43:"Please pass a number or one of the predefined scales to the modularScale helper as the ratio.\n\n",44:"Invalid value passed as base to modularScale, expected number or em/rem string but got %s.\n\n",45:"Passed invalid argument to hslToColorString, please pass a HslColor or HslaColor object.\n\n",46:"Passed invalid argument to rgbToColorString, please pass a RgbColor or RgbaColor object.\n\n",47:"minScreen and maxScreen must be provided as stringified numbers with the same units.\n\n",48:"fromSize and toSize must be provided as stringified numbers with the same units.\n\n",49:"Expects either an array of objects or a single object with the properties prop, fromSize, and toSize.\n\n",50:"Expects the objects in the first argument array to have the properties prop, fromSize, and toSize.\n\n",51:"Expects the first argument object to have the properties prop, fromSize, and toSize.\n\n",52:"fontFace expects either the path to the font file(s) or a name of a local copy.\n\n",53:"fontFace expects localFonts to be an array.\n\n",54:"fontFace expects fileFormats to be an array.\n\n",55:"fontFace expects a name of a font-family.\n\n",56:"linearGradient requries at least 2 color-stops to properly render.\n\n",57:"radialGradient requries at least 2 color-stops to properly render.\n\n",58:"Please supply a filename to retinaImage() as the first argument.\n\n",59:"Passed invalid argument to triangle, please pass correct pointingDirection e.g. 'right'.\n\n",60:"Passed an invalid value to `height` or `width`. Please provide a pixel based unit.\n\n",61:"Property must be a string value.\n\n",62:"borderRadius expects a radius value as a string or number as the second argument.\n\n",63:'borderRadius expects one of "top", "bottom", "left" or "right" as the first argument.\n\n',64:"The animation shorthand only takes 8 arguments. See the specification for more information: http://mdn.io/animation.\n\n",65:"To pass multiple animations please supply them in arrays, e.g. animation(['rotate', '2s'], ['move', '1s'])\\nTo pass a single animation please supply them in simple values, e.g. animation('rotate', '2s').\n\n",66:"The animation shorthand arrays can only have 8 elements. See the specification for more information: http://mdn.io/animation.\n\n",67:"You must provide a template to this method.\n\n",68:"You passed an unsupported selector state to this method.\n\n",69:'Expected a string ending in "px" or a number passed as the first argument to %s(), got %s instead.\n\n',70:'Expected a string ending in "px" or a number passed as the second argument to %s(), got %s instead.\n\n',71:'Passed invalid pixel value %s to %s(), please pass a value like "12px" or 12.\n\n',72:'Passed invalid base value %s to %s(), please pass a value like "12px" or 12.\n\n',73:"Please provide a valid CSS variable.\n\n",74:"CSS variable not found and no default was provided.\n\n",75:"important requires a valid style object, got a %s instead.\n\n",76:"fromSize and toSize must be provided as stringified numbers with the same units as minScreen and maxScreen.\n\n",77:'remToPx expects a value in "rem" but you provided it in "%s".\n\n',78:'base must be set in "px" or "%" but you set it in "%s".\n'};function d(){for(var e=arguments.length,t=new Array(e),a=0;a<e;a++)t[a]=arguments[a];var r,n=t[0],o=[];for(r=1;r<t.length;r+=1)o.push(t[r]);return o.forEach(function(e){n=n.replace(/%[a-z]/,e)}),n}var c=/*#__PURE__*/function(e){var t,a;function r(t){var a;if("production"===process.env.NODE_ENV)a=e.call(this,"An error occurred. See https://github.com/styled-components/polished/blob/main/src/internalHelpers/errors.md#"+t+" for more information.")||this;else{for(var r=arguments.length,n=new Array(r>1?r-1:0),o=1;o<r;o++)n[o-1]=arguments[o];a=e.call(this,d.apply(void 0,[p[t]].concat(n)))||this}return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(a)}return a=e,(t=r).prototype=Object.create(a.prototype),t.prototype.constructor=t,l(t,a),r}(/*#__PURE__*/u(Error)),m=/--[\S]*/g;function h(e,t){if(!e||!e.match(m))throw new c(73);var a;if("undefined"!=typeof document&&null!==document.documentElement&&(a=getComputedStyle(document.documentElement).getPropertyValue(e)),a)return a.trim();throw new c(74)}function b(e){return Math.round(255*e)}function g(e,t,a){return b(e)+","+b(t)+","+b(a)}function v(e,t,a,r){if(void 0===r&&(r=g),0===t)return r(a,a,a);var n=(e%360+360)%360/60,o=(1-Math.abs(2*a-1))*t,s=o*(1-Math.abs(n%2-1)),i=0,l=0,f=0;n>=0&&n<1?(i=o,l=s):n>=1&&n<2?(i=s,l=o):n>=2&&n<3?(l=o,f=s):n>=3&&n<4?(l=s,f=o):n>=4&&n<5?(i=s,f=o):n>=5&&n<6&&(i=o,f=s);var u=a-o/2;return r(i+u,l+u,f+u)}var y={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"00ffff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"0000ff",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"00ffff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"ff00ff",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"639",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"};var C=/^#[a-fA-F0-9]{6}$/,w=/^#[a-fA-F0-9]{8}$/,x=/^#[a-fA-F0-9]{3}$/,F=/^#[a-fA-F0-9]{4}$/,S=/^rgb\(\s*(\d{1,3})\s*(?:,)?\s*(\d{1,3})\s*(?:,)?\s*(\d{1,3})\s*\)$/i,k=/^rgb(?:a)?\(\s*(\d{1,3})\s*(?:,)?\s*(\d{1,3})\s*(?:,)?\s*(\d{1,3})\s*(?:,|\/)\s*([-+]?\d*[.]?\d+[%]?)\s*\)$/i,I=/^hsl\(\s*(\d{0,3}[.]?[0-9]+(?:deg)?)\s*(?:,)?\s*(\d{1,3}[.]?[0-9]?)%\s*(?:,)?\s*(\d{1,3}[.]?[0-9]?)%\s*\)$/i,L=/^hsl(?:a)?\(\s*(\d{0,3}[.]?[0-9]+(?:deg)?)\s*(?:,)?\s*(\d{1,3}[.]?[0-9]?)%\s*(?:,)?\s*(\d{1,3}[.]?[0-9]?)%\s*(?:,|\/)\s*([-+]?\d*[.]?\d+[%]?)\s*\)$/i;function P(e){if("string"!=typeof e)throw new c(3);var t=function(e){if("string"!=typeof e)return e;var t=e.toLowerCase();return y[t]?"#"+y[t]:e}(e);if(t.match(C))return{red:parseInt(""+t[1]+t[2],16),green:parseInt(""+t[3]+t[4],16),blue:parseInt(""+t[5]+t[6],16)};if(t.match(w)){var a=parseFloat((parseInt(""+t[7]+t[8],16)/255).toFixed(2));return{red:parseInt(""+t[1]+t[2],16),green:parseInt(""+t[3]+t[4],16),blue:parseInt(""+t[5]+t[6],16),alpha:a}}if(t.match(x))return{red:parseInt(""+t[1]+t[1],16),green:parseInt(""+t[2]+t[2],16),blue:parseInt(""+t[3]+t[3],16)};if(t.match(F)){var r=parseFloat((parseInt(""+t[4]+t[4],16)/255).toFixed(2));return{red:parseInt(""+t[1]+t[1],16),green:parseInt(""+t[2]+t[2],16),blue:parseInt(""+t[3]+t[3],16),alpha:r}}var n=S.exec(t);if(n)return{red:parseInt(""+n[1],10),green:parseInt(""+n[2],10),blue:parseInt(""+n[3],10)};var o=k.exec(t.substring(0,50));if(o)return{red:parseInt(""+o[1],10),green:parseInt(""+o[2],10),blue:parseInt(""+o[3],10),alpha:parseFloat(""+o[4])>1?parseFloat(""+o[4])/100:parseFloat(""+o[4])};var s=I.exec(t);if(s){var i="rgb("+v(parseInt(""+s[1],10),parseInt(""+s[2],10)/100,parseInt(""+s[3],10)/100)+")",l=S.exec(i);if(!l)throw new c(4,t,i);return{red:parseInt(""+l[1],10),green:parseInt(""+l[2],10),blue:parseInt(""+l[3],10)}}var f=L.exec(t.substring(0,50));if(f){var u="rgb("+v(parseInt(""+f[1],10),parseInt(""+f[2],10)/100,parseInt(""+f[3],10)/100)+")",p=S.exec(u);if(!p)throw new c(4,t,u);return{red:parseInt(""+p[1],10),green:parseInt(""+p[2],10),blue:parseInt(""+p[3],10),alpha:parseFloat(""+f[4])>1?parseFloat(""+f[4])/100:parseFloat(""+f[4])}}throw new c(5)}function j(e){return function(e){var t,a=e.red/255,r=e.green/255,n=e.blue/255,o=Math.max(a,r,n),s=Math.min(a,r,n),i=(o+s)/2;if(o===s)return void 0!==e.alpha?{hue:0,saturation:0,lightness:i,alpha:e.alpha}:{hue:0,saturation:0,lightness:i};var l=o-s,f=i>.5?l/(2-o-s):l/(o+s);switch(o){case a:t=(r-n)/l+(r<n?6:0);break;case r:t=(n-a)/l+2;break;default:t=(a-r)/l+4}return t*=60,void 0!==e.alpha?{hue:t,saturation:f,lightness:i,alpha:e.alpha}:{hue:t,saturation:f,lightness:i}}(P(e))}var E=function(e){return 7===e.length&&e[1]===e[2]&&e[3]===e[4]&&e[5]===e[6]?"#"+e[1]+e[3]+e[5]:e};function z(e){var t=e.toString(16);return 1===t.length?"0"+t:t}function M(e){return z(Math.round(255*e))}function O(e,t,a){return E("#"+M(e)+M(t)+M(a))}function H(e,t,a){return v(e,t,a,O)}function q(e,t,a){if("number"==typeof e&&"number"==typeof t&&"number"==typeof a)return E("#"+z(e)+z(t)+z(a));if("object"==typeof e&&void 0===t&&void 0===a)return E("#"+z(e.red)+z(e.green)+z(e.blue));throw new c(6)}function $(e,t,a,r){if("object"==typeof e&&void 0===t&&void 0===a&&void 0===r)return e.alpha>=1?q(e.red,e.green,e.blue):"rgba("+e.red+","+e.green+","+e.blue+","+e.alpha+")";throw new c(7)}function T(e){if("object"!=typeof e)throw new c(8);if(function(e){return"number"==typeof e.red&&"number"==typeof e.green&&"number"==typeof e.blue&&"number"==typeof e.alpha}(e))return $(e);if(function(e){return"number"==typeof e.red&&"number"==typeof e.green&&"number"==typeof e.blue&&("number"!=typeof e.alpha||void 0===e.alpha)}(e))return q(e);if(function(e){return"number"==typeof e.hue&&"number"==typeof e.saturation&&"number"==typeof e.lightness&&"number"==typeof e.alpha}(e))return function(e,t,a,r){if("object"==typeof e&&void 0===t&&void 0===a&&void 0===r)return e.alpha>=1?H(e.hue,e.saturation,e.lightness):"rgba("+v(e.hue,e.saturation,e.lightness)+","+e.alpha+")";throw new c(2)}(e);if(function(e){return"number"==typeof e.hue&&"number"==typeof e.saturation&&"number"==typeof e.lightness&&("number"!=typeof e.alpha||void 0===e.alpha)}(e))return function(e,t,a){if("object"==typeof e&&void 0===t&&void 0===a)return H(e.hue,e.saturation,e.lightness);throw new c(1)}(e);throw new c(8)}function V(e,t,a){return function(){var r=a.concat(Array.prototype.slice.call(arguments));return r.length>=t?e.apply(this,r):V(e,t,r)}}function R(e){return V(e,e.length,[])}function _(e,t,a){return Math.max(e,Math.min(t,a))}R(function(e,t){if("transparent"===t)return t;var a=j(t);return T(s({},a,{hue:a.hue+parseFloat(e)}))}),R(function(e,t){if("transparent"===t)return t;var a=j(t);return T(s({},a,{lightness:_(0,1,a.lightness-parseFloat(e))}))}),R(function(e,t){if("transparent"===t)return t;var a=j(t);return T(s({},a,{saturation:_(0,1,a.saturation-parseFloat(e))}))}),R(function(e,t){if("transparent"===t)return t;var a=j(t);return T(s({},a,{lightness:_(0,1,a.lightness+parseFloat(e))}))});var A=R(function(e,t,a){if("transparent"===t)return a;if("transparent"===a)return t;if(0===e)return a;var r=P(t),n=s({},r,{alpha:"number"==typeof r.alpha?r.alpha:1}),o=P(a),i=s({},o,{alpha:"number"==typeof o.alpha?o.alpha:1}),l=n.alpha-i.alpha,f=2*parseFloat(e)-1,u=((f*l===-1?f:f+l)/(1+f*l)+1)/2,p=1-u;return $({red:Math.floor(n.red*u+i.red*p),green:Math.floor(n.green*u+i.green*p),blue:Math.floor(n.blue*u+i.blue*p),alpha:n.alpha*parseFloat(e)+i.alpha*(1-parseFloat(e))})});R(function(e,t){if("transparent"===t)return t;var a=P(t),r="number"==typeof a.alpha?a.alpha:1;return $(s({},a,{alpha:_(0,1,(100*r+100*parseFloat(e))/100)}))}),R(function(e,t){if("transparent"===t)return t;var a=j(t);return T(s({},a,{saturation:_(0,1,a.saturation+parseFloat(e))}))}),R(function(e,t){return"transparent"===t?t:T(s({},j(t),{hue:parseFloat(e)}))}),R(function(e,t){return"transparent"===t?t:T(s({},j(t),{lightness:parseFloat(e)}))}),R(function(e,t){return"transparent"===t?t:T(s({},j(t),{saturation:parseFloat(e)}))}),R(function(e,t){return"transparent"===t?t:A(parseFloat(e),"rgb(0, 0, 0)",t)}),R(function(e,t){return"transparent"===t?t:A(parseFloat(e),"rgb(255, 255, 255)",t)}),R(function(e,t){if("transparent"===t)return t;var a=P(t),r="number"==typeof a.alpha?a.alpha:1;return $(s({},a,{alpha:_(0,1,+(100*r-100*parseFloat(e)).toFixed(2)/100)}))});const N=(e,r)=>{const[n,o]=t(`var(${r})`),s=(()=>{const[e,r]=t(()=>document.documentElement.classList.contains("dark"));return a(()=>{const e=new MutationObserver(()=>{r(document.documentElement.classList.contains("dark"))});return e.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]}),()=>e.disconnect()},[]),e})();return a(()=>{const t=h(e),a=h(r);if(t&&a){const a=function(e){if("transparent"===e)return 0;var t=P(e),a=Object.keys(t).map(function(e){var a=t[e]/255;return a<=.03928?a/12.92:Math.pow((a+.055)/1.055,2.4)}),r=a[0],n=a[1],o=a[2];return parseFloat((.2126*r+.7152*n+.0722*o).toFixed(3))}(t.toString());o(a<=.5?s?"var(--bfc-ring)":`var(${e})`:s?`var(${e})`:`var(${r})`)}},[e,r,s]),n},G=n("min-w-5",{variants:{variant:{default:"size-6",gradient:"size-8",disabled:"size-8 grayscale"},loading:{true:"animate-spin"}},defaultVariants:{variant:"default"}}),Z="M16.0127 3.5C16.5221 3.50002 17.0197 3.65584 17.4375 3.94727C17.8553 4.23871 18.1736 4.65182 18.3496 5.12988L20.6445 11.3652L26.876 13.6689L27.0283 13.7246L27.0391 13.7402C27.4497 13.9244 27.8038 14.2171 28.0625 14.5879C28.3539 15.0057 28.5098 15.5032 28.5098 16.0127C28.5097 16.5221 28.3539 17.0197 28.0625 17.4375C27.7711 17.8552 27.3579 18.1737 26.8799 18.3496L20.6426 20.6445L18.334 26.8809C18.158 27.3587 17.8396 27.7712 17.4219 28.0625C17.0042 28.3538 16.5073 28.5097 15.998 28.5098C15.4886 28.5098 14.9911 28.3539 14.5732 28.0625C14.1554 27.771 13.8371 27.358 13.6611 26.8799L11.3652 20.6436L5.12891 18.334V18.333C4.65135 18.1569 4.23846 17.8394 3.94727 17.4219C3.65606 17.0042 3.5001 16.5072 3.5 15.998C3.5 15.4887 3.65596 14.991 3.94727 14.5732C4.2387 14.1554 4.65182 13.8371 5.12988 13.6611L11.3652 11.3652L13.6758 5.12891C13.8518 4.65116 14.1703 4.23855 14.5879 3.94727C15.0057 3.65585 15.5033 3.5 16.0127 3.5ZM13.9463 13.0498L13.9473 13.0508C13.8723 13.2565 13.7535 13.4438 13.5986 13.5986C13.4438 13.7535 13.2565 13.8723 13.0508 13.9473L13.0498 13.9463L7.46875 16.0049L13.0498 18.0625H13.0508C13.2564 18.1374 13.4438 18.2564 13.5986 18.4111C13.7529 18.5654 13.8713 18.7521 13.9463 18.957L16.0049 24.541L18.0684 18.9521L18.1328 18.8027C18.2049 18.6578 18.3001 18.5251 18.415 18.4102C18.5684 18.2568 18.7535 18.1385 18.957 18.0635L24.541 16.0049L18.9521 13.9414C18.7486 13.8664 18.5636 13.7481 18.4102 13.5947C18.2568 13.4413 18.1385 13.2563 18.0635 13.0527L16.0049 7.46875L13.9463 13.0498Z",D=[{offset:"0%",color:"rgba(232, 122, 249, 1)"},{offset:"14%",color:"rgba(251, 191, 37, 1)"},{offset:"33%",color:"rgba(251, 146, 61, 1)"},{offset:"51%",color:"rgba(244, 64, 94, 1)"},{offset:"68%",color:"rgba(140, 93, 246, 1)"},{offset:"83%",color:"rgba(60, 130, 246, 1)"},{offset:"100%",color:"rgba(232, 122, 249, 1)"}];function Y({loading:t,variant:a,className:n,...s}){const i=N("--bfc-primary","--bfc-border"),l="gradient"===a,f="disabled"===a,u=!l&&!f,p=r(),d=e=>l?e:f?"var(--bfc-v2-color-mono-600)":"var(--bfc-primary)";/* @__PURE__ */
2
- return e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"32",height:"32",viewBox:"0 0 32 32",fill:"none",className:o(G({variant:a}),n),...s},
3
- /* @__PURE__ */e.createElement("path",{d:Z,fill:l?`url(#${p})`:f?"var(--bfc-v2-color-mono-600)":"var(--bfc-primary)"!==i?"var(--bfc-border)":"var(--bfc-primary)",className:o({"animate-spin [transform-box:fill-box]":t})}),
4
- /* @__PURE__ */e.createElement("path",{stroke:"var(--bfc-v2-color-mono-100)",className:o({"animate-spin [transform-box:fill-box]":t}),d:Z}),u&&/* @__PURE__ */e.createElement("g",{className:"transform origin-center scale-125"},/* @__PURE__ */e.createElement("g",{className:o({"animate-spin [transform-box:fill-box]":t})},/* @__PURE__ */e.createElement("path",{fill:"var(--bfc-primary)",d:"M13.9463 13.0498L13.9473 13.0508C13.8723 13.2565 13.7535 13.4438 13.5986 13.5986C13.4438 13.7535 13.2565 13.8723 13.0508 13.9473L13.0498 13.9463L7.46875 16.0049L13.0498 18.0625H13.0508C13.2564 18.1374 13.4438 18.2564 13.5986 18.4111C13.7529 18.5654 13.8713 18.7521 13.9463 18.957L16.0049 24.541L18.0684 18.9521L18.1328 18.8027C18.2049 18.6578 18.3001 18.5251 18.415 18.4102C18.5684 18.2568 18.7535 18.1385 18.957 18.0635L24.541 16.0049L18.9521 13.9414C18.7486 13.8664 18.5636 13.7481 18.4102 13.5947C18.2568 13.4413 18.1385 13.2563 18.0635 13.0527L16.0049 7.46875L13.9463 13.0498Z"}))),
5
- /* @__PURE__ */e.createElement("path",{fill:d("#3C82F6"),d:"M31.7071 9.70711C31.8946 9.51957 32 9.26522 32 9C32 8.73478 31.8946 8.48043 31.7071 8.29289C31.5196 8.10536 31.2652 8 31 8H30V7C30 6.73478 29.8946 6.48043 29.7071 6.29289C29.5196 6.10536 29.2652 6 29 6C28.7348 6 28.4804 6.10536 28.2929 6.29289C28.1054 6.48043 28 6.73478 28 7V8H27C26.7348 8 26.4804 8.10536 26.2929 8.29289C26.1054 8.48043 26 8.73478 26 9C26 9.26522 26.1054 9.51957 26.2929 9.70711C26.4804 9.89464 26.7348 10 27 10H28V11C28 11.2652 28.1054 11.5196 28.2929 11.7071C28.4804 11.8946 28.7348 12 29 12C29.2652 12 29.5196 11.8946 29.7071 11.7071C29.8946 11.5196 30 11.2652 30 11V10H31C31.2652 10 31.5196 9.89464 31.7071 9.70711Z"}),
6
- /* @__PURE__ */e.createElement("path",{fill:d("#35D399"),d:"M19.2929 3.29289C19.1054 3.48043 19 3.73478 19 4C19 4.26522 19.1054 4.51957 19.2929 4.70711C19.4804 4.89464 19.7348 5 20 5H22V7C22 7.26522 22.1054 7.51957 22.2929 7.70711C22.4804 7.89464 22.7348 8 23 8C23.2652 8 23.5196 7.89464 23.7071 7.70711C23.8946 7.51957 24 7.26522 24 7V5H26C26.2652 5 26.5196 4.89464 26.7071 4.70711C26.8946 4.51957 27 4.26522 27 4C27 3.73478 26.8946 3.48043 26.7071 3.29289C26.5196 3.10536 26.2652 3 26 3H24V1C24 0.734784 23.8946 0.48043 23.7071 0.292893C23.5196 0.105357 23.2652 0 23 0C22.7348 0 22.4804 0.105357 22.2929 0.292893C22.1054 0.48043 22 0.734784 22 1V3H20C19.7348 3 19.4804 3.10536 19.2929 3.29289Z"}),l&&/* @__PURE__ */e.createElement("defs",null,/* @__PURE__ */e.createElement("linearGradient",{id:p,x1:"0%",y1:"0%",x2:"100%",y2:"100%"},D.map(t=>/* @__PURE__ */e.createElement("stop",{key:t.offset,offset:t.offset,stopColor:t.color})))))}export{Y as G,G as g};
7
- //# sourceMappingURL=generating-star.DN8DVygp.js.map