@brainfish-ai/components 0.25.5 → 0.26.1

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 (236) hide show
  1. package/dist/chat-search.d.ts +40 -3
  2. package/dist/esm/chunks/ChatSearch.Cqo4WF3n.js +95 -0
  3. package/dist/esm/chunks/ChatSearch.Cqo4WF3n.js.map +1 -0
  4. package/dist/esm/chunks/Conversation.UZ5rx7_0.js +22 -0
  5. package/dist/esm/chunks/{Conversation.BriXFYqU.js.map → Conversation.UZ5rx7_0.js.map} +1 -1
  6. package/dist/esm/chunks/FormattedMessage.D9xA6QsH.js +23 -0
  7. package/dist/esm/chunks/FormattedMessage.D9xA6QsH.js.map +1 -0
  8. package/dist/esm/chunks/MermaidDiagram.PRgXQ5Yh.js +2 -0
  9. package/dist/esm/chunks/{MermaidDiagram.xQ0CVFOI.js.map → MermaidDiagram.PRgXQ5Yh.js.map} +1 -1
  10. package/dist/esm/chunks/_commonjsHelpers.lGe4XDVY.js +2 -0
  11. package/dist/esm/chunks/_commonjsHelpers.lGe4XDVY.js.map +1 -0
  12. package/dist/esm/chunks/button.BYc5d6AZ.js +3 -0
  13. package/dist/esm/chunks/{button.DQL6gCAt.js.map → button.BYc5d6AZ.js.map} +1 -1
  14. package/dist/esm/chunks/chart.BDL2tf-S.js +10 -0
  15. package/dist/esm/chunks/{chart.4ZbtBMmR.js.map → chart.BDL2tf-S.js.map} +1 -1
  16. package/dist/esm/chunks/chat-logo.CqPppEb9.js +3 -0
  17. package/dist/esm/chunks/chat-logo.CqPppEb9.js.map +1 -0
  18. package/dist/esm/chunks/combobox.CxaWbDm9.js +6 -0
  19. package/dist/esm/chunks/{combobox.CJKym3Z1.js.map → combobox.CxaWbDm9.js.map} +1 -1
  20. package/dist/esm/chunks/dark.DuW7JuAk.js +2 -0
  21. package/dist/esm/chunks/{dark.Cq2RCgy4.js.map → dark.DuW7JuAk.js.map} +1 -1
  22. package/dist/esm/chunks/data-table.CJOR-1Kf.js +5 -0
  23. package/dist/esm/chunks/{data-table.DbcAYxMY.js.map → data-table.CJOR-1Kf.js.map} +1 -1
  24. package/dist/esm/chunks/date-picker.Bhplnvxn.js +4 -0
  25. package/dist/esm/chunks/{date-picker._cBTpdEK.js.map → date-picker.Bhplnvxn.js.map} +1 -1
  26. package/dist/esm/chunks/extends.DPdBf6DS.js +2 -0
  27. package/dist/esm/chunks/extends.DPdBf6DS.js.map +1 -0
  28. package/dist/esm/chunks/feature-flags.DOcVlPHk.js +3 -0
  29. package/dist/esm/chunks/{feature-flags.DeDEcnd1.js.map → feature-flags.DOcVlPHk.js.map} +1 -1
  30. package/dist/esm/chunks/feedback.BXKvlNz1.js +13 -0
  31. package/dist/esm/chunks/{feedback.W2OzN-5r.js.map → feedback.BXKvlNz1.js.map} +1 -1
  32. package/dist/esm/chunks/file-upload-status.4ukNFyi2.js +8 -0
  33. package/dist/esm/chunks/{file-upload-status.DP2iuttI.js.map → file-upload-status.4ukNFyi2.js.map} +1 -1
  34. package/dist/esm/chunks/filters.ita3UAnO.js +22 -0
  35. package/dist/esm/chunks/{filters.-7vSLEQ2.js.map → filters.ita3UAnO.js.map} +1 -1
  36. package/dist/esm/chunks/font-picker.BwEWBowG.js +6 -0
  37. package/dist/esm/chunks/{font-picker.DisEoE8a.js.map → font-picker.BwEWBowG.js.map} +1 -1
  38. package/dist/esm/chunks/formatDate.D2xEZm8f.js +2 -0
  39. package/dist/esm/chunks/{formatDate.CWN6IFKq.js.map → formatDate.D2xEZm8f.js.map} +1 -1
  40. package/dist/esm/chunks/formatNumber.DhVn228t.js +2 -0
  41. package/dist/esm/chunks/{formatNumber.Bm2k8QrT.js.map → formatNumber.DhVn228t.js.map} +1 -1
  42. package/dist/esm/chunks/generating-star.BN9p_FDu.js +7 -0
  43. package/dist/esm/chunks/generating-star.BN9p_FDu.js.map +1 -0
  44. package/dist/esm/chunks/header-nav.B4IJjted.js +10 -0
  45. package/dist/esm/chunks/{header-nav.b4hvOsKc.js.map → header-nav.B4IJjted.js.map} +1 -1
  46. package/dist/esm/chunks/header-pane.C1RWesOW.js +20 -0
  47. package/dist/esm/chunks/{header-pane.BV7xKJXV.js.map → header-pane.C1RWesOW.js.map} +1 -1
  48. package/dist/esm/chunks/hooks.BQTKhHSv.js +2 -0
  49. package/dist/esm/chunks/hooks.BQTKhHSv.js.map +1 -0
  50. package/dist/esm/chunks/index.uF4ME3WQ.js +4 -0
  51. package/dist/esm/chunks/{index.BqibIWDw.js.map → index.uF4ME3WQ.js.map} +1 -1
  52. package/dist/esm/chunks/input-with-tags.DrDDPxse.js +5 -0
  53. package/dist/esm/chunks/{input-with-tags.tg2nhPFv.js.map → input-with-tags.DrDDPxse.js.map} +1 -1
  54. package/dist/esm/chunks/logo.CketsPBx.js +5 -0
  55. package/dist/esm/chunks/{logo.D5BMN6Db.js.map → logo.CketsPBx.js.map} +1 -1
  56. package/dist/esm/chunks/primary.CMQbo1GJ.js +2 -0
  57. package/dist/esm/chunks/{primary.CtiRZbqq.js.map → primary.CMQbo1GJ.js.map} +1 -1
  58. package/dist/esm/chunks/review-list.qvxeqG9l.js +6 -0
  59. package/dist/esm/chunks/{review-list.BtSnfpSc.js.map → review-list.qvxeqG9l.js.map} +1 -1
  60. package/dist/esm/chunks/sidebar.IcJADYLR.js +25 -0
  61. package/dist/esm/chunks/sidebar.IcJADYLR.js.map +1 -0
  62. package/dist/esm/chunks/simpleSelect.DK1qZSXM.js +3 -0
  63. package/dist/esm/chunks/{simpleSelect.B1rktKkt.js.map → simpleSelect.DK1qZSXM.js.map} +1 -1
  64. package/dist/esm/chunks/status-badge.C-jt7Zs2.js +3 -0
  65. package/dist/esm/chunks/{status-badge.eFJ1PYeb.js.map → status-badge.C-jt7Zs2.js.map} +1 -1
  66. package/dist/esm/chunks/trend-value.BPBDBsk2.js +3 -0
  67. package/dist/esm/chunks/{trend-value.COSukPwk.js.map → trend-value.BPBDBsk2.js.map} +1 -1
  68. package/dist/esm/chunks/two-level-combobox.Bv2OQgjh.js +8 -0
  69. package/dist/esm/chunks/{two-level-combobox.BXs2z9u5.js.map → two-level-combobox.Bv2OQgjh.js.map} +1 -1
  70. package/dist/esm/chunks/useChartDateFormatters.Dx2h5AAm.js +2 -0
  71. package/dist/esm/chunks/{useChartDateFormatters.DS9ASgFO.js.map → useChartDateFormatters.Dx2h5AAm.js.map} +1 -1
  72. package/dist/esm/chunks/utils.C6Qu-kwd.js +2 -0
  73. package/dist/esm/chunks/{utils.Cwtlq8dh.js.map → utils.C6Qu-kwd.js.map} +1 -1
  74. package/dist/esm/colors.js +1 -169
  75. package/dist/esm/colors.js.map +1 -1
  76. package/dist/esm/components/article-suggestions-banner.js +4 -53
  77. package/dist/esm/components/article-suggestions-banner.js.map +1 -1
  78. package/dist/esm/components/articles-coverage.js +4 -116
  79. package/dist/esm/components/articles-coverage.js.map +1 -1
  80. package/dist/esm/components/articles-updated.js +4 -74
  81. package/dist/esm/components/articles-updated.js.map +1 -1
  82. package/dist/esm/components/breadcrumbs.js +3 -13
  83. package/dist/esm/components/breadcrumbs.js.map +1 -1
  84. package/dist/esm/components/chart-area-linear.js +6 -66
  85. package/dist/esm/components/chart-area-linear.js.map +1 -1
  86. package/dist/esm/components/chart-radial-stacked.js +2 -48
  87. package/dist/esm/components/chart-radial-stacked.js.map +1 -1
  88. package/dist/esm/components/chat-search.js +1 -1
  89. package/dist/esm/components/combobox.js +1 -1
  90. package/dist/esm/components/confirm-dialog.js +2 -47
  91. package/dist/esm/components/confirm-dialog.js.map +1 -1
  92. package/dist/esm/components/conversation.js +1 -1
  93. package/dist/esm/components/convos.js +27 -607
  94. package/dist/esm/components/convos.js.map +1 -1
  95. package/dist/esm/components/data-table.js +1 -1
  96. package/dist/esm/components/date-picker.js +1 -1
  97. package/dist/esm/components/discoveries-created.js +4 -64
  98. package/dist/esm/components/discoveries-created.js.map +1 -1
  99. package/dist/esm/components/feedback.js +1 -1
  100. package/dist/esm/components/file-upload.js +1 -1
  101. package/dist/esm/components/filter.js +1 -1
  102. package/dist/esm/components/font-picker.js +1 -1
  103. package/dist/esm/components/generating-star.js +1 -1
  104. package/dist/esm/components/input-with-tags.js +1 -1
  105. package/dist/esm/components/logo.js +1 -1
  106. package/dist/esm/components/markdown.js +1 -2
  107. package/dist/esm/components/markdown.js.map +1 -1
  108. package/dist/esm/components/metric-card.js +3 -29
  109. package/dist/esm/components/metric-card.js.map +1 -1
  110. package/dist/esm/components/select.js +1 -1
  111. package/dist/esm/components/trend-value.js +1 -1
  112. package/dist/esm/components/two-level-combobox.js +1 -1
  113. package/dist/esm/components/ui/accordion.js +7 -46
  114. package/dist/esm/components/ui/accordion.js.map +1 -1
  115. package/dist/esm/components/ui/alert-dialog.js +3 -114
  116. package/dist/esm/components/ui/alert-dialog.js.map +1 -1
  117. package/dist/esm/components/ui/alert.js +4 -103
  118. package/dist/esm/components/ui/alert.js.map +1 -1
  119. package/dist/esm/components/ui/avatar.js +7 -89
  120. package/dist/esm/components/ui/avatar.js.map +1 -1
  121. package/dist/esm/components/ui/badge.js +2 -26
  122. package/dist/esm/components/ui/badge.js.map +1 -1
  123. package/dist/esm/components/ui/breadcrumb.js +4 -60
  124. package/dist/esm/components/ui/breadcrumb.js.map +1 -1
  125. package/dist/esm/components/ui/button-group.js +4 -88
  126. package/dist/esm/components/ui/button-group.js.map +1 -1
  127. package/dist/esm/components/ui/button.js +1 -5
  128. package/dist/esm/components/ui/button.js.map +1 -1
  129. package/dist/esm/components/ui/calendar.js +2 -20
  130. package/dist/esm/components/ui/calendar.js.map +1 -1
  131. package/dist/esm/components/ui/card.js +1 -55
  132. package/dist/esm/components/ui/card.js.map +1 -1
  133. package/dist/esm/components/ui/collapsible.js +1 -33
  134. package/dist/esm/components/ui/collapsible.js.map +1 -1
  135. package/dist/esm/components/ui/combobox.js +1 -1
  136. package/dist/esm/components/ui/command.js +2 -79
  137. package/dist/esm/components/ui/command.js.map +1 -1
  138. package/dist/esm/components/ui/dialog.js +4 -60
  139. package/dist/esm/components/ui/dialog.js.map +1 -1
  140. package/dist/esm/components/ui/div-button.js +2 -61
  141. package/dist/esm/components/ui/div-button.js.map +1 -1
  142. package/dist/esm/components/ui/dropdown-menu.js +3 -114
  143. package/dist/esm/components/ui/dropdown-menu.js.map +1 -1
  144. package/dist/esm/components/ui/icon.js +2 -25
  145. package/dist/esm/components/ui/icon.js.map +1 -1
  146. package/dist/esm/components/ui/input.js +4 -47
  147. package/dist/esm/components/ui/input.js.map +1 -1
  148. package/dist/esm/components/ui/item.js +11 -140
  149. package/dist/esm/components/ui/item.js.map +1 -1
  150. package/dist/esm/components/ui/label.js +1 -19
  151. package/dist/esm/components/ui/label.js.map +1 -1
  152. package/dist/esm/components/ui/popover.js +1 -31
  153. package/dist/esm/components/ui/popover.js.map +1 -1
  154. package/dist/esm/components/ui/progress.js +2 -22
  155. package/dist/esm/components/ui/progress.js.map +1 -1
  156. package/dist/esm/components/ui/scroll-area.js +2 -32
  157. package/dist/esm/components/ui/scroll-area.js.map +1 -1
  158. package/dist/esm/components/ui/select.js +5 -66
  159. package/dist/esm/components/ui/select.js.map +1 -1
  160. package/dist/esm/components/ui/separator.js +1 -23
  161. package/dist/esm/components/ui/separator.js.map +1 -1
  162. package/dist/esm/components/ui/sheet.js +3 -62
  163. package/dist/esm/components/ui/sheet.js.map +1 -1
  164. package/dist/esm/components/ui/spinner.js +2 -17
  165. package/dist/esm/components/ui/spinner.js.map +1 -1
  166. package/dist/esm/components/ui/switch.js +2 -26
  167. package/dist/esm/components/ui/switch.js.map +1 -1
  168. package/dist/esm/components/ui/table.js +1 -82
  169. package/dist/esm/components/ui/table.js.map +1 -1
  170. package/dist/esm/components/ui/textarea.js +1 -33
  171. package/dist/esm/components/ui/textarea.js.map +1 -1
  172. package/dist/esm/components/ui/tooltip.js +3 -31
  173. package/dist/esm/components/ui/tooltip.js.map +1 -1
  174. package/dist/esm/global.css +1 -1
  175. package/dist/esm/index.js +1 -53
  176. package/dist/esm/index.js.map +1 -1
  177. package/dist/esm/layouts/full-layout.js +1 -1
  178. package/dist/esm/layouts/header-nav.js +1 -1
  179. package/dist/esm/layouts/sidebar.js +1 -1
  180. package/dist/esm/logos/microsoft-logo.js +6 -66
  181. package/dist/esm/logos/microsoft-logo.js.map +1 -1
  182. package/dist/esm/logos/microsoft-teams-logo.js +12 -112
  183. package/dist/esm/logos/microsoft-teams-logo.js.map +1 -1
  184. package/dist/esm/logos/slack-logo.js +3 -39
  185. package/dist/esm/logos/slack-logo.js.map +1 -1
  186. package/dist/esm/scenes/knowledge-review.js +17 -380
  187. package/dist/esm/scenes/knowledge-review.js.map +1 -1
  188. package/dist/esm/tailwind.preset.js +1 -1526
  189. package/dist/esm/tailwind.preset.js.map +1 -1
  190. package/dist/index.d.ts +48 -3
  191. package/dist/logo.d.ts +9 -0
  192. package/dist/stats.html +47 -46
  193. package/package.json +17 -18
  194. package/tailwind.preset.ts +1 -0
  195. package/dist/esm/chunks/ChatSearch.CL2VnSod.js +0 -6697
  196. package/dist/esm/chunks/ChatSearch.CL2VnSod.js.map +0 -1
  197. package/dist/esm/chunks/Conversation.BriXFYqU.js +0 -831
  198. package/dist/esm/chunks/FormattedMessage.CRbM-hF6.js +0 -39715
  199. package/dist/esm/chunks/FormattedMessage.CRbM-hF6.js.map +0 -1
  200. package/dist/esm/chunks/MermaidDiagram.xQ0CVFOI.js +0 -50
  201. package/dist/esm/chunks/_commonjsHelpers.BFTU3MAI.js +0 -8
  202. package/dist/esm/chunks/_commonjsHelpers.BFTU3MAI.js.map +0 -1
  203. package/dist/esm/chunks/button.DQL6gCAt.js +0 -48
  204. package/dist/esm/chunks/chart.4ZbtBMmR.js +0 -199
  205. package/dist/esm/chunks/combobox.CJKym3Z1.js +0 -95
  206. package/dist/esm/chunks/dark.Cq2RCgy4.js +0 -18
  207. package/dist/esm/chunks/data-table.DbcAYxMY.js +0 -102
  208. package/dist/esm/chunks/date-picker._cBTpdEK.js +0 -26
  209. package/dist/esm/chunks/extends.mO86zOh3.js +0 -12
  210. package/dist/esm/chunks/extends.mO86zOh3.js.map +0 -1
  211. package/dist/esm/chunks/feature-flags.DeDEcnd1.js +0 -22
  212. package/dist/esm/chunks/feedback.W2OzN-5r.js +0 -214
  213. package/dist/esm/chunks/file-upload-status.DP2iuttI.js +0 -141
  214. package/dist/esm/chunks/filters.-7vSLEQ2.js +0 -565
  215. package/dist/esm/chunks/font-picker.DisEoE8a.js +0 -181
  216. package/dist/esm/chunks/formatDate.CWN6IFKq.js +0 -952
  217. package/dist/esm/chunks/formatNumber.Bm2k8QrT.js +0 -10
  218. package/dist/esm/chunks/generating-star.DMDPNTaM.js +0 -1501
  219. package/dist/esm/chunks/generating-star.DMDPNTaM.js.map +0 -1
  220. package/dist/esm/chunks/header-nav.b4hvOsKc.js +0 -197
  221. package/dist/esm/chunks/header-pane.BV7xKJXV.js +0 -559
  222. package/dist/esm/chunks/hooks.m-nIJmio.js +0 -337
  223. package/dist/esm/chunks/hooks.m-nIJmio.js.map +0 -1
  224. package/dist/esm/chunks/index.BqibIWDw.js +0 -137
  225. package/dist/esm/chunks/input-with-tags.tg2nhPFv.js +0 -110
  226. package/dist/esm/chunks/logo.D5BMN6Db.js +0 -191
  227. package/dist/esm/chunks/primary.CtiRZbqq.js +0 -18
  228. package/dist/esm/chunks/review-list.BtSnfpSc.js +0 -117
  229. package/dist/esm/chunks/sidebar.PfXKnt9J.js +0 -803
  230. package/dist/esm/chunks/sidebar.PfXKnt9J.js.map +0 -1
  231. package/dist/esm/chunks/simpleSelect.B1rktKkt.js +0 -23
  232. package/dist/esm/chunks/status-badge.eFJ1PYeb.js +0 -18
  233. package/dist/esm/chunks/trend-value.COSukPwk.js +0 -51
  234. package/dist/esm/chunks/two-level-combobox.BXs2z9u5.js +0 -132
  235. package/dist/esm/chunks/useChartDateFormatters.DS9ASgFO.js +0 -11
  236. package/dist/esm/chunks/utils.Cwtlq8dh.js +0 -45
@@ -1 +1 @@
1
- {"version":3,"file":"two-level-combobox.BXs2z9u5.js","sources":["../../../src/components/two-level-combobox/two-level-combobox.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Check, CaretUpDown, Spinner, ArrowLeft, X } from '@phosphor-icons/react';\n\nimport { ComboboxItem } from '../combobox';\n\nimport { cn } from '@/lib/utils';\nimport { Button } from '@/components/ui/button';\nimport { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from '@/components/ui/command';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\nimport { DivButton } from '@/components/ui/div-button';\nexport interface TwoLevelComboboxProps {\n firstLevelItems: ComboboxItem[];\n fetchSecondLevelItems: (firstLevelId: string) => Promise<ComboboxItem[]>;\n onSelectionChange?: (firstLevel: ComboboxItem | null, secondLevel: ComboboxItem | null) => void;\n firstLevelLabel?: string;\n secondLevelLabel?: string;\n firstLevelPlaceholder?: string;\n secondLevelPlaceholder?: string;\n className?: string;\n debugMode?: boolean;\n displayLabel?: boolean;\n}\n\nexport function TwoLevelCombobox({\n firstLevelItems,\n fetchSecondLevelItems,\n onSelectionChange,\n firstLevelLabel = 'First Level',\n secondLevelLabel = 'Second Level',\n firstLevelPlaceholder = 'Select first level...',\n className,\n debugMode = false,\n displayLabel = true,\n}: TwoLevelComboboxProps) {\n const [open, setOpen] = React.useState(false);\n const [view, setView] = React.useState<'first' | 'second'>('first');\n const [selectedFirstLevel, setSelectedFirstLevel] = React.useState<ComboboxItem | null>(null);\n const [selectedSecondLevel, setSelectedSecondLevel] = React.useState<ComboboxItem | null>(null);\n const [secondLevelItems, setSecondLevelItems] = React.useState<ComboboxItem[]>([]);\n const [isLoadingSecondLevel, setIsLoadingSecondLevel] = React.useState(false);\n const [searchValue, setSearchValue] = React.useState('');\n\n const handleFirstLevelSelect = async (item: ComboboxItem) => {\n setSelectedFirstLevel(item);\n setSelectedSecondLevel(null); // Reset second level when first level changes\n setIsLoadingSecondLevel(true);\n setView('second');\n setSearchValue(''); // Clear search input when switching to second level\n\n try {\n const fetchedItems = await fetchSecondLevelItems(item.value);\n setSecondLevelItems(fetchedItems);\n } catch (error) {\n console.warn(error);\n setSecondLevelItems([]);\n } finally {\n setIsLoadingSecondLevel(false);\n }\n\n onSelectionChange?.(item, null);\n };\n\n const handleSecondLevelSelect = (item: ComboboxItem) => {\n setSelectedSecondLevel(item);\n setOpen(false);\n onSelectionChange?.(selectedFirstLevel, item);\n };\n\n const handleBackToFirstLevel = () => {\n setView('first');\n setSearchValue(''); // Clear search input when going back to first level\n };\n\n const handleOpenChange = (isOpen: boolean) => {\n setOpen(isOpen);\n if (isOpen && !selectedFirstLevel) {\n setView('first');\n } else if (isOpen && selectedFirstLevel) {\n setView('second');\n }\n };\n\n const handleClearSelection = (e: React.MouseEvent) => {\n e.stopPropagation(); // Prevent opening the popover\n setSelectedFirstLevel(null);\n setSelectedSecondLevel(null);\n setSecondLevelItems([]);\n setView('first');\n onSelectionChange?.(null, null);\n };\n\n const getLabel = () => {\n if (selectedSecondLevel) return `${firstLevelLabel} & ${secondLevelLabel}`;\n if (selectedFirstLevel) return `Select ${secondLevelLabel}`;\n\n return `Select ${firstLevelLabel}`;\n };\n\n return (\n <div className={cn('space-y-4', className)}>\n <div className=\"space-y-2\">\n {displayLabel && (\n <label className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n {getLabel()}\n </label>\n )}\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className=\"w-full justify-between bg-transparent\"\n >\n <div className=\"flex items-center gap-2 flex-1 min-w-0\">\n {selectedSecondLevel ? (\n <div className=\"truncate flex items-center gap-1\">\n {selectedFirstLevel!.label} → {selectedSecondLevel.label}\n </div>\n ) : selectedFirstLevel ? (\n <div className=\"truncate flex items-center\">{selectedFirstLevel.label}</div>\n ) : (\n <span className=\"truncate\">{firstLevelPlaceholder}</span>\n )}\n </div>\n <div className=\"flex items-center gap-1 shrink-0\">\n {(selectedFirstLevel || selectedSecondLevel) && (\n // Render button as div to prevent button within button error\n <DivButton\n variant=\"ghost\"\n size=\"sm\"\n className=\"size-6 p-0 hover:bg-muted rounded-sm\"\n onClick={handleClearSelection}\n aria-label=\"Clear selection\"\n >\n <X className=\"size-3\" />\n </DivButton>\n )}\n <CaretUpDown className=\"size-4 shrink-0 opacity-50\" />\n </div>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-full p-0\" align=\"start\">\n <Command>\n {view === 'second' && selectedFirstLevel && (\n <div className=\"flex items-center gap-2 p-2 border-b\">\n <Button variant=\"ghost\" size=\"sm\" onClick={handleBackToFirstLevel} className=\"h-8 w-8 p-0 shrink-0\">\n <ArrowLeft className=\"size-4\" />\n </Button>\n <div className=\"text-sm font-medium truncate flex-1 min-w-0 flex items-center\">\n {selectedFirstLevel.label}\n </div>\n {/* Render button as div to prevent button within button error */}\n <DivButton\n variant=\"ghost\"\n size=\"sm\"\n className=\"size-6 p-0 ml-auto hover:bg-muted rounded-sm shrink-0\"\n onClick={handleClearSelection}\n aria-label=\"Clear selection\"\n >\n <X className=\"size-3\" />\n </DivButton>\n {isLoadingSecondLevel && <Spinner className=\"size-4 animate-spin text-muted-foreground shrink-0\" />}\n </div>\n )}\n\n <CommandInput\n value={searchValue}\n onValueChange={setSearchValue}\n placeholder={\n view === 'first'\n ? `Search ${firstLevelLabel.toLowerCase()}...`\n : `Search ${secondLevelLabel.toLowerCase()}...`\n }\n />\n <CommandList>\n <CommandEmpty>\n {view === 'first'\n ? `No ${firstLevelLabel.toLowerCase()} found.`\n : `No ${secondLevelLabel.toLowerCase()} found.`}\n </CommandEmpty>\n\n {view === 'first' && (\n <CommandGroup>\n {firstLevelItems.map((item) => (\n <CommandItem key={item.value} value={item.label} onSelect={() => handleFirstLevelSelect(item)}>\n <span className=\"flex items-center gap-2\">\n {item.icon}\n {item.label}\n </span>\n <Check\n className={cn(\n 'ml-2 size-4',\n selectedFirstLevel?.value === item.value ? 'opacity-100' : 'opacity-0',\n )}\n />\n </CommandItem>\n ))}\n </CommandGroup>\n )}\n\n {view === 'second' && selectedFirstLevel && (\n <CommandGroup>\n {isLoadingSecondLevel ? (\n <div className=\"flex items-center justify-center py-6\">\n <Spinner className=\"size-4 animate-spin text-muted-foreground mr-2\" />\n <span className=\"text-sm text-muted-foreground\">\n Loading {secondLevelLabel.toLowerCase()}...\n </span>\n </div>\n ) : (\n secondLevelItems.map((item) => (\n <CommandItem key={item.value} value={item.label} onSelect={() => handleSecondLevelSelect(item)}>\n <span className=\"flex items-center gap-2\">\n {item.icon}\n {item.label}\n </span>\n <Check\n className={cn(\n 'ml-2 size-4',\n selectedSecondLevel?.value === item.value ? 'opacity-100' : 'opacity-0',\n )}\n />\n </CommandItem>\n ))\n )}\n </CommandGroup>\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n\n {(selectedFirstLevel || selectedSecondLevel) && debugMode && (\n <div className=\"mt-6 p-4 bg-muted/50 rounded-lg space-y-2\">\n <h3 className=\"font-medium text-sm\">Selected Values:</h3>\n {selectedFirstLevel && (\n <div className=\"text-sm text-muted-foreground flex items-center gap-1\">\n <span className=\"font-medium\">{firstLevelLabel}:</span>\n <div className=\"flex items-center\">{selectedFirstLevel.label}</div>\n </div>\n )}\n {selectedSecondLevel && (\n <div className=\"text-sm text-muted-foreground flex items-center gap-1\">\n <span className=\"font-medium\">{secondLevelLabel}:</span>\n <div className=\"flex items-center\">{selectedSecondLevel.label}</div>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"two-level-combobox.Bv2OQgjh.js","sources":["../../../src/components/two-level-combobox/two-level-combobox.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Check, CaretUpDown, Spinner, ArrowLeft, X } from '@phosphor-icons/react';\n\nimport { ComboboxItem } from '../combobox';\n\nimport { cn } from '@/lib/utils';\nimport { Button } from '@/components/ui/button';\nimport { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from '@/components/ui/command';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\nimport { DivButton } from '@/components/ui/div-button';\nexport interface TwoLevelComboboxProps {\n firstLevelItems: ComboboxItem[];\n fetchSecondLevelItems: (firstLevelId: string) => Promise<ComboboxItem[]>;\n onSelectionChange?: (firstLevel: ComboboxItem | null, secondLevel: ComboboxItem | null) => void;\n firstLevelLabel?: string;\n secondLevelLabel?: string;\n firstLevelPlaceholder?: string;\n secondLevelPlaceholder?: string;\n className?: string;\n debugMode?: boolean;\n displayLabel?: boolean;\n}\n\nexport function TwoLevelCombobox({\n firstLevelItems,\n fetchSecondLevelItems,\n onSelectionChange,\n firstLevelLabel = 'First Level',\n secondLevelLabel = 'Second Level',\n firstLevelPlaceholder = 'Select first level...',\n className,\n debugMode = false,\n displayLabel = true,\n}: TwoLevelComboboxProps) {\n const [open, setOpen] = React.useState(false);\n const [view, setView] = React.useState<'first' | 'second'>('first');\n const [selectedFirstLevel, setSelectedFirstLevel] = React.useState<ComboboxItem | null>(null);\n const [selectedSecondLevel, setSelectedSecondLevel] = React.useState<ComboboxItem | null>(null);\n const [secondLevelItems, setSecondLevelItems] = React.useState<ComboboxItem[]>([]);\n const [isLoadingSecondLevel, setIsLoadingSecondLevel] = React.useState(false);\n const [searchValue, setSearchValue] = React.useState('');\n\n const handleFirstLevelSelect = async (item: ComboboxItem) => {\n setSelectedFirstLevel(item);\n setSelectedSecondLevel(null); // Reset second level when first level changes\n setIsLoadingSecondLevel(true);\n setView('second');\n setSearchValue(''); // Clear search input when switching to second level\n\n try {\n const fetchedItems = await fetchSecondLevelItems(item.value);\n setSecondLevelItems(fetchedItems);\n } catch (error) {\n console.warn(error);\n setSecondLevelItems([]);\n } finally {\n setIsLoadingSecondLevel(false);\n }\n\n onSelectionChange?.(item, null);\n };\n\n const handleSecondLevelSelect = (item: ComboboxItem) => {\n setSelectedSecondLevel(item);\n setOpen(false);\n onSelectionChange?.(selectedFirstLevel, item);\n };\n\n const handleBackToFirstLevel = () => {\n setView('first');\n setSearchValue(''); // Clear search input when going back to first level\n };\n\n const handleOpenChange = (isOpen: boolean) => {\n setOpen(isOpen);\n if (isOpen && !selectedFirstLevel) {\n setView('first');\n } else if (isOpen && selectedFirstLevel) {\n setView('second');\n }\n };\n\n const handleClearSelection = (e: React.MouseEvent) => {\n e.stopPropagation(); // Prevent opening the popover\n setSelectedFirstLevel(null);\n setSelectedSecondLevel(null);\n setSecondLevelItems([]);\n setView('first');\n onSelectionChange?.(null, null);\n };\n\n const getLabel = () => {\n if (selectedSecondLevel) return `${firstLevelLabel} & ${secondLevelLabel}`;\n if (selectedFirstLevel) return `Select ${secondLevelLabel}`;\n\n return `Select ${firstLevelLabel}`;\n };\n\n return (\n <div className={cn('space-y-4', className)}>\n <div className=\"space-y-2\">\n {displayLabel && (\n <label className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n {getLabel()}\n </label>\n )}\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className=\"w-full justify-between bg-transparent\"\n >\n <div className=\"flex items-center gap-2 flex-1 min-w-0\">\n {selectedSecondLevel ? (\n <div className=\"truncate flex items-center gap-1\">\n {selectedFirstLevel!.label} → {selectedSecondLevel.label}\n </div>\n ) : selectedFirstLevel ? (\n <div className=\"truncate flex items-center\">{selectedFirstLevel.label}</div>\n ) : (\n <span className=\"truncate\">{firstLevelPlaceholder}</span>\n )}\n </div>\n <div className=\"flex items-center gap-1 shrink-0\">\n {(selectedFirstLevel || selectedSecondLevel) && (\n // Render button as div to prevent button within button error\n <DivButton\n variant=\"ghost\"\n size=\"sm\"\n className=\"size-6 p-0 hover:bg-muted rounded-sm\"\n onClick={handleClearSelection}\n aria-label=\"Clear selection\"\n >\n <X className=\"size-3\" />\n </DivButton>\n )}\n <CaretUpDown className=\"size-4 shrink-0 opacity-50\" />\n </div>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-full p-0\" align=\"start\">\n <Command>\n {view === 'second' && selectedFirstLevel && (\n <div className=\"flex items-center gap-2 p-2 border-b\">\n <Button variant=\"ghost\" size=\"sm\" onClick={handleBackToFirstLevel} className=\"h-8 w-8 p-0 shrink-0\">\n <ArrowLeft className=\"size-4\" />\n </Button>\n <div className=\"text-sm font-medium truncate flex-1 min-w-0 flex items-center\">\n {selectedFirstLevel.label}\n </div>\n {/* Render button as div to prevent button within button error */}\n <DivButton\n variant=\"ghost\"\n size=\"sm\"\n className=\"size-6 p-0 ml-auto hover:bg-muted rounded-sm shrink-0\"\n onClick={handleClearSelection}\n aria-label=\"Clear selection\"\n >\n <X className=\"size-3\" />\n </DivButton>\n {isLoadingSecondLevel && <Spinner className=\"size-4 animate-spin text-muted-foreground shrink-0\" />}\n </div>\n )}\n\n <CommandInput\n value={searchValue}\n onValueChange={setSearchValue}\n placeholder={\n view === 'first'\n ? `Search ${firstLevelLabel.toLowerCase()}...`\n : `Search ${secondLevelLabel.toLowerCase()}...`\n }\n />\n <CommandList>\n <CommandEmpty>\n {view === 'first'\n ? `No ${firstLevelLabel.toLowerCase()} found.`\n : `No ${secondLevelLabel.toLowerCase()} found.`}\n </CommandEmpty>\n\n {view === 'first' && (\n <CommandGroup>\n {firstLevelItems.map((item) => (\n <CommandItem key={item.value} value={item.label} onSelect={() => handleFirstLevelSelect(item)}>\n <span className=\"flex items-center gap-2\">\n {item.icon}\n {item.label}\n </span>\n <Check\n className={cn(\n 'ml-2 size-4',\n selectedFirstLevel?.value === item.value ? 'opacity-100' : 'opacity-0',\n )}\n />\n </CommandItem>\n ))}\n </CommandGroup>\n )}\n\n {view === 'second' && selectedFirstLevel && (\n <CommandGroup>\n {isLoadingSecondLevel ? (\n <div className=\"flex items-center justify-center py-6\">\n <Spinner className=\"size-4 animate-spin text-muted-foreground mr-2\" />\n <span className=\"text-sm text-muted-foreground\">\n Loading {secondLevelLabel.toLowerCase()}...\n </span>\n </div>\n ) : (\n secondLevelItems.map((item) => (\n <CommandItem key={item.value} value={item.label} onSelect={() => handleSecondLevelSelect(item)}>\n <span className=\"flex items-center gap-2\">\n {item.icon}\n {item.label}\n </span>\n <Check\n className={cn(\n 'ml-2 size-4',\n selectedSecondLevel?.value === item.value ? 'opacity-100' : 'opacity-0',\n )}\n />\n </CommandItem>\n ))\n )}\n </CommandGroup>\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n\n {(selectedFirstLevel || selectedSecondLevel) && debugMode && (\n <div className=\"mt-6 p-4 bg-muted/50 rounded-lg space-y-2\">\n <h3 className=\"font-medium text-sm\">Selected Values:</h3>\n {selectedFirstLevel && (\n <div className=\"text-sm text-muted-foreground flex items-center gap-1\">\n <span className=\"font-medium\">{firstLevelLabel}:</span>\n <div className=\"flex items-center\">{selectedFirstLevel.label}</div>\n </div>\n )}\n {selectedSecondLevel && (\n <div className=\"text-sm text-muted-foreground flex items-center gap-1\">\n <span className=\"font-medium\">{secondLevelLabel}:</span>\n <div className=\"flex items-center\">{selectedSecondLevel.label}</div>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n"],"names":["TwoLevelCombobox","firstLevelItems","fetchSecondLevelItems","onSelectionChange","firstLevelLabel","secondLevelLabel","firstLevelPlaceholder","className","debugMode","displayLabel","open","setOpen","React","useState","view","setView","selectedFirstLevel","setSelectedFirstLevel","selectedSecondLevel","setSelectedSecondLevel","secondLevelItems","setSecondLevelItems","isLoadingSecondLevel","setIsLoadingSecondLevel","searchValue","setSearchValue","handleClearSelection","e","stopPropagation","createElement","cn","Popover","onOpenChange","isOpen","PopoverTrigger","asChild","Button","variant","role","label","DivButton","size","onClick","X","CaretUpDown","PopoverContent","align","Command","ArrowLeft","Spinner","CommandInput","value","onValueChange","placeholder","toLowerCase","CommandList","CommandEmpty","CommandGroup","map","item","CommandItem","key","onSelect","async","fetchedItems","error","console","warn","handleFirstLevelSelect","icon","Check","handleSecondLevelSelect"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{useCallback as r}from"react";import{f as t,a}from"./formatDate.D2xEZm8f.js";function o(o){return{tickFormatter:r(r=>t(r,o??"en-US"),[o]),formatXLabel:r(r=>a(r,o??"en-US"),[o])}}export{o as u};
2
+ //# sourceMappingURL=useChartDateFormatters.Dx2h5AAm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useChartDateFormatters.DS9ASgFO.js","sources":["../../../src/lib/useChartDateFormatters.ts"],"sourcesContent":["import { useCallback } from 'react';\n\nimport { formatChartLabel, formatChartTick } from './formatDate';\n\nexport function useChartDateFormatters(locale?: string) {\n const tickFormatter = useCallback((value: Date | string | undefined) => formatChartTick(value, locale ?? 'en-US'), [locale]);\n\n const formatXLabel = useCallback((label: Date | string | undefined) => formatChartLabel(label, locale ?? 'en-US'), [locale]);\n\n return { tickFormatter, formatXLabel };\n}\n"],"names":[],"mappings":";;;AAIO,SAAS,uBAAuB,MAAA,EAAiB;AACtD,EAAA,MAAM,aAAA,GAAgB,WAAA,CAAY,CAAC,KAAA,KAAqC,eAAA,CAAgB,KAAA,EAAO,MAAA,IAAU,OAAO,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAE3H,EAAA,MAAM,YAAA,GAAe,WAAA,CAAY,CAAC,KAAA,KAAqC,gBAAA,CAAiB,KAAA,EAAO,MAAA,IAAU,OAAO,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAE3H,EAAA,OAAO,EAAE,eAAe,YAAA,EAAa;AACvC;;;;"}
1
+ {"version":3,"file":"useChartDateFormatters.Dx2h5AAm.js","sources":["../../../src/lib/useChartDateFormatters.ts"],"sourcesContent":["import { useCallback } from 'react';\n\nimport { formatChartLabel, formatChartTick } from './formatDate';\n\nexport function useChartDateFormatters(locale?: string) {\n const tickFormatter = useCallback((value: Date | string | undefined) => formatChartTick(value, locale ?? 'en-US'), [locale]);\n\n const formatXLabel = useCallback((label: Date | string | undefined) => formatChartLabel(label, locale ?? 'en-US'), [locale]);\n\n return { tickFormatter, formatXLabel };\n}\n"],"names":["useChartDateFormatters","locale","tickFormatter","useCallback","value","formatChartTick","formatXLabel","label","formatChartLabel"],"mappings":"mFAIO,SAASA,EAAuBC,GAKrC,MAAO,CAAEC,cAJaC,EAAaC,GAAqCC,EAAgBD,EAAOH,GAAU,SAAU,CAACA,IAI5FK,aAFHH,EAAaI,GAAqCC,EAAiBD,EAAON,GAAU,SAAU,CAACA,IAGtH"}
@@ -0,0 +1,2 @@
1
+ import"react";import{clsx as i}from"clsx";import{twMerge as n}from"tailwind-merge";function e(...e){return n(i(e))}function o(i){const n={en:[/i(?:\s|['\u2018\u2019])?m(?:\s+really)?\s+not\s+sure/i,/i(?:\s+am)?(?:\s+really)?\s+not\s+sure/i,/i\s+(?:really\s+)?don(?:['\u2018\u2019])?t\s+know/i,/it(?:['\u2018\u2019]s| is) unclear/i,/cannot determine/i,/hard to say/i,/difficult to determine/i],es:[/no (?:lo )?sé/i,/no estoy seguro/i,/no es claro/i,/desconocido/i],fr:[/je ne sais pas/i,/je ne suis pas sûr/i,/ce n'est pas clair/i,/inconnu/i],de:[/ich weiß nicht/i,/ich bin nicht sicher/i,/es ist unklar/i,/unbekannt/i],it:[/non lo so/i,/non sono sicuro/i,/non è chiaro/i,/sconosciuto/i],pt:[/não sei/i,/não tenho certeza/i,/não está claro/i,/desconhecido/i],nl:[/ik weet het niet/i,/ik weet niet zeker/i,/het is onduidelijk/i,/onbekend/i],pl:[/nie wiem/i,/nie jestem pewien/i,/to nie jest jasne/i,/nieznany/i],ru:[/я не знаю/i,/я не уверен/i,/это не ясно/i,/неизвестно/i],ja:[/知りません/i,/よくわからない/i,/不明です/i,/未知/i],ko:[/모릅니다/i,/잘 모르겠습니다/i,/불확실합니다/i,/알 수 없음/i],zh:[/我不知道/i,/我不确定/i,/不清楚/i,/未知/i],"zh-TW":[/我不知道/i,/我不確定/i,/不清楚/i,/未知/i]};let e=null;for(const[o,s]of Object.entries(n))for(const n of s){const s=i.match(n);s&&(null===e||s.index<e.index)&&(e={index:s.index,language:o})}return e?{uncertain:!0,language:e.language}:{uncertain:!1,language:null}}export{e as c,o as i};
2
+ //# sourceMappingURL=utils.C6Qu-kwd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.Cwtlq8dh.js","sources":["../../../src/lib/utils.ts"],"sourcesContent":["import { useRef } from 'react';\nimport { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nlet globalId = 0;\nconst genId = () => ++globalId;\n\nexport function useId(prefix?: string): string {\n const idRef = useRef<string>();\n if (idRef.current === undefined) {\n idRef.current = `${prefix || 'id'}-${genId()}`;\n }\n\n return idRef.current;\n}\n\nexport function isAnswerUncertain(response: string): { uncertain: boolean; language: string | null } {\n // Define uncertainty patterns for various languages\n const uncertaintyPatternsByLanguage: Record<string, RegExp[]> = {\n en: [\n /i(?:\\s|['\\u2018\\u2019])?m(?:\\s+really)?\\s+not\\s+sure/i,\n /i(?:\\s+am)?(?:\\s+really)?\\s+not\\s+sure/i,\n /i\\s+(?:really\\s+)?don(?:['\\u2018\\u2019])?t\\s+know/i,\n /it(?:['\\u2018\\u2019]s| is) unclear/i,\n /cannot determine/i,\n /hard to say/i,\n /difficult to determine/i,\n ],\n es: [/no (?:lo )?sé/i, /no estoy seguro/i, /no es claro/i, /desconocido/i],\n fr: [/je ne sais pas/i, /je ne suis pas sûr/i, /ce n'est pas clair/i, /inconnu/i],\n de: [/ich weiß nicht/i, /ich bin nicht sicher/i, /es ist unklar/i, /unbekannt/i],\n it: [/non lo so/i, /non sono sicuro/i, /non è chiaro/i, /sconosciuto/i],\n pt: [/não sei/i, /não tenho certeza/i, /não está claro/i, /desconhecido/i],\n nl: [/ik weet het niet/i, /ik weet niet zeker/i, /het is onduidelijk/i, /onbekend/i],\n pl: [/nie wiem/i, /nie jestem pewien/i, /to nie jest jasne/i, /nieznany/i],\n ru: [/я не знаю/i, /я не уверен/i, /это не ясно/i, /неизвестно/i],\n ja: [/知りません/i, /よくわからない/i, /不明です/i, /未知/i],\n ko: [/모릅니다/i, /잘 모르겠습니다/i, /불확실합니다/i, /알 수 없음/i],\n zh: [/我不知道/i, /我不确定/i, /不清楚/i, /未知/i],\n 'zh-TW': [/我不知道/i, /我不確定/i, /不清楚/i, /未知/i],\n };\n\n let earliestMatch: { index: number; language: string } | null = null;\n\n // Find the earliest match across all languages\n for (const [language, patterns] of Object.entries(uncertaintyPatternsByLanguage)) {\n for (const pattern of patterns) {\n const match = response.match(pattern);\n if (match && (earliestMatch === null || match.index! < earliestMatch.index)) {\n earliestMatch = { index: match.index!, language };\n }\n }\n }\n\n return earliestMatch ? { uncertain: true, language: earliestMatch.language } : { uncertain: false, language: null };\n}\n"],"names":[],"mappings":";;;;AAIO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;AAcO,SAAS,kBAAkB,QAAA,EAAmE;AAEnG,EAAA,MAAM,6BAAA,GAA0D;AAAA,IAC9D,EAAA,EAAI;AAAA,MACF,uDAAA;AAAA,MACA,yCAAA;AAAA,MACA,oDAAA;AAAA,MACA,qCAAA;AAAA,MACA,mBAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,EAAA,EAAI,CAAC,gBAAA,EAAkB,kBAAA,EAAoB,gBAAgB,cAAc,CAAA;AAAA,IACzE,EAAA,EAAI,CAAC,iBAAA,EAAmB,qBAAA,EAAuB,uBAAuB,UAAU,CAAA;AAAA,IAChF,EAAA,EAAI,CAAC,iBAAA,EAAmB,uBAAA,EAAyB,kBAAkB,YAAY,CAAA;AAAA,IAC/E,EAAA,EAAI,CAAC,YAAA,EAAc,kBAAA,EAAoB,iBAAiB,cAAc,CAAA;AAAA,IACtE,EAAA,EAAI,CAAC,UAAA,EAAY,oBAAA,EAAsB,mBAAmB,eAAe,CAAA;AAAA,IACzE,EAAA,EAAI,CAAC,mBAAA,EAAqB,qBAAA,EAAuB,uBAAuB,WAAW,CAAA;AAAA,IACnF,EAAA,EAAI,CAAC,WAAA,EAAa,oBAAA,EAAsB,sBAAsB,WAAW,CAAA;AAAA,IACzE,EAAA,EAAI,CAAC,YAAA,EAAc,cAAA,EAAgB,gBAAgB,aAAa,CAAA;AAAA,IAChE,EAAA,EAAI,CAAC,QAAA,EAAU,UAAA,EAAY,SAAS,KAAK,CAAA;AAAA,IACzC,EAAA,EAAI,CAAC,OAAA,EAAS,WAAA,EAAa,WAAW,SAAS,CAAA;AAAA,IAC/C,EAAA,EAAI,CAAC,OAAA,EAAS,OAAA,EAAS,QAAQ,KAAK,CAAA;AAAA,IACpC,OAAA,EAAS,CAAC,OAAA,EAAS,OAAA,EAAS,QAAQ,KAAK;AAAA,GAC3C;AAEA,EAAA,IAAI,aAAA,GAA4D,IAAA;AAGhE,EAAA,KAAA,MAAW,CAAC,QAAA,EAAU,QAAQ,KAAK,MAAA,CAAO,OAAA,CAAQ,6BAA6B,CAAA,EAAG;AAChF,IAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,MAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,OAAO,CAAA;AACpC,MAAA,IAAI,UAAU,aAAA,KAAkB,IAAA,IAAQ,KAAA,CAAM,KAAA,GAAS,cAAc,KAAA,CAAA,EAAQ;AAC3E,QAAA,aAAA,GAAgB,EAAE,KAAA,EAAO,KAAA,CAAM,KAAA,EAAQ,QAAA,EAAS;AAAA,MAClD;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,aAAA,GAAgB,EAAE,SAAA,EAAW,IAAA,EAAM,QAAA,EAAU,aAAA,CAAc,QAAA,EAAS,GAAI,EAAE,SAAA,EAAW,KAAA,EAAO,QAAA,EAAU,IAAA,EAAK;AACpH;;;;"}
1
+ {"version":3,"file":"utils.C6Qu-kwd.js","sources":["../../../src/lib/utils.ts"],"sourcesContent":["import { useRef } from 'react';\nimport { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nlet globalId = 0;\nconst genId = () => ++globalId;\n\nexport function useId(prefix?: string): string {\n const idRef = useRef<string>();\n if (idRef.current === undefined) {\n idRef.current = `${prefix || 'id'}-${genId()}`;\n }\n\n return idRef.current;\n}\n\nexport function isAnswerUncertain(response: string): { uncertain: boolean; language: string | null } {\n // Define uncertainty patterns for various languages\n const uncertaintyPatternsByLanguage: Record<string, RegExp[]> = {\n en: [\n /i(?:\\s|['\\u2018\\u2019])?m(?:\\s+really)?\\s+not\\s+sure/i,\n /i(?:\\s+am)?(?:\\s+really)?\\s+not\\s+sure/i,\n /i\\s+(?:really\\s+)?don(?:['\\u2018\\u2019])?t\\s+know/i,\n /it(?:['\\u2018\\u2019]s| is) unclear/i,\n /cannot determine/i,\n /hard to say/i,\n /difficult to determine/i,\n ],\n es: [/no (?:lo )?sé/i, /no estoy seguro/i, /no es claro/i, /desconocido/i],\n fr: [/je ne sais pas/i, /je ne suis pas sûr/i, /ce n'est pas clair/i, /inconnu/i],\n de: [/ich weiß nicht/i, /ich bin nicht sicher/i, /es ist unklar/i, /unbekannt/i],\n it: [/non lo so/i, /non sono sicuro/i, /non è chiaro/i, /sconosciuto/i],\n pt: [/não sei/i, /não tenho certeza/i, /não está claro/i, /desconhecido/i],\n nl: [/ik weet het niet/i, /ik weet niet zeker/i, /het is onduidelijk/i, /onbekend/i],\n pl: [/nie wiem/i, /nie jestem pewien/i, /to nie jest jasne/i, /nieznany/i],\n ru: [/я не знаю/i, /я не уверен/i, /это не ясно/i, /неизвестно/i],\n ja: [/知りません/i, /よくわからない/i, /不明です/i, /未知/i],\n ko: [/모릅니다/i, /잘 모르겠습니다/i, /불확실합니다/i, /알 수 없음/i],\n zh: [/我不知道/i, /我不确定/i, /不清楚/i, /未知/i],\n 'zh-TW': [/我不知道/i, /我不確定/i, /不清楚/i, /未知/i],\n };\n\n let earliestMatch: { index: number; language: string } | null = null;\n\n // Find the earliest match across all languages\n for (const [language, patterns] of Object.entries(uncertaintyPatternsByLanguage)) {\n for (const pattern of patterns) {\n const match = response.match(pattern);\n if (match && (earliestMatch === null || match.index! < earliestMatch.index)) {\n earliestMatch = { index: match.index!, language };\n }\n }\n }\n\n return earliestMatch ? { uncertain: true, language: earliestMatch.language } : { uncertain: false, language: null };\n}\n"],"names":["cn","inputs","twMerge","clsx","isAnswerUncertain","response","uncertaintyPatternsByLanguage","en","es","fr","de","it","pt","nl","pl","ru","ja","ko","zh","earliestMatch","language","patterns","Object","entries","pattern","match","index","uncertain"],"mappings":"mFAIO,SAASA,KAAMC,GACpB,OAAOC,EAAQC,EAAKF,GACtB,CAcO,SAASG,EAAkBC,GAEhC,MAAMC,EAA0D,CAC9DC,GAAI,CACF,wDACA,0CACA,qDACA,sCACA,oBACA,eACA,2BAEFC,GAAI,CAAC,iBAAkB,mBAAoB,eAAgB,gBAC3DC,GAAI,CAAC,kBAAmB,sBAAuB,sBAAuB,YACtEC,GAAI,CAAC,kBAAmB,wBAAyB,iBAAkB,cACnEC,GAAI,CAAC,aAAc,mBAAoB,gBAAiB,gBACxDC,GAAI,CAAC,WAAY,qBAAsB,kBAAmB,iBAC1DC,GAAI,CAAC,oBAAqB,sBAAuB,sBAAuB,aACxEC,GAAI,CAAC,YAAa,qBAAsB,qBAAsB,aAC9DC,GAAI,CAAC,aAAc,eAAgB,eAAgB,eACnDC,GAAI,CAAC,SAAU,WAAY,QAAS,OACpCC,GAAI,CAAC,QAAS,YAAa,UAAW,WACtCC,GAAI,CAAC,QAAS,QAAS,OAAQ,OAC/B,QAAS,CAAC,QAAS,QAAS,OAAQ,QAGtC,IAAIC,EAA4D,KAGhE,IAAA,MAAYC,EAAUC,KAAaC,OAAOC,QAAQjB,GAChD,IAAA,MAAWkB,KAAWH,EAAU,CAC9B,MAAMI,EAAQpB,EAASoB,MAAMD,GACzBC,IAA4B,OAAlBN,GAA0BM,EAAMC,MAASP,EAAcO,SACnEP,EAAgB,CAAEO,MAAOD,EAAMC,MAAQN,YAE3C,CAGF,OAAOD,EAAgB,CAAEQ,WAAW,EAAMP,SAAUD,EAAcC,UAAa,CAAEO,WAAW,EAAOP,SAAU,KAC/G"}
@@ -1,170 +1,2 @@
1
- import { p as primary } from './chunks/primary.CtiRZbqq.js';
2
- import { d as dark } from './chunks/dark.Cq2RCgy4.js';
3
-
4
- const orange = {
5
- 100: "var(--bfc-v2-color-orange-100, #fff3eb)",
6
- 200: "var(--bfc-v2-color-orange-200, #fedec8)",
7
- 300: "var(--bfc-v2-color-orange-300, #fec195)",
8
- 400: "var(--bfc-v2-color-orange-400, #fea362)",
9
- 500: "var(--bfc-v2-color-orange-500, #f38a3f)",
10
- 600: "var(--bfc-v2-color-orange-600, #e56910)",
11
- 700: "var(--bfc-v2-color-orange-700, #c25100)",
12
- 800: "var(--bfc-v2-color-orange-800, #a54800)",
13
- 900: "var(--bfc-v2-color-orange-900, #702e00)",
14
- 1e3: "var(--bfc-v2-color-orange-1000, #38291e)",
15
- DEFAULT: "var(--bfc-v2-color-orange-700, #c25100)"
16
- // 700
17
- };
18
-
19
- const yellow = {
20
- 100: "var(--bfc-v2-color-yellow-100, #fef7c8)",
21
- 200: "var(--bfc-v2-color-yellow-200, #ffdf84)",
22
- 300: "var(--bfc-v2-color-yellow-300, #fed153)",
23
- 400: "var(--bfc-v2-color-yellow-400, #fbbf25)",
24
- 500: "var(--bfc-v2-color-yellow-500, #e5ad1d)",
25
- 600: "var(--bfc-v2-color-yellow-600, #c59109)",
26
- 700: "var(--bfc-v2-color-yellow-700, #977007)",
27
- 800: "var(--bfc-v2-color-yellow-800, #7f5f01)",
28
- 900: "var(--bfc-v2-color-yellow-900, #533f04)",
29
- 1e3: "var(--bfc-v2-color-yellow-1000, #332e1b)",
30
- DEFAULT: "var(--bfc-v2-color-yellow-700, #946f00)"
31
- // 700
32
- };
33
-
34
- const lime = {
35
- 100: "var(--bfc-v2-color-lime-100, #e9fec8)",
36
- 200: "var(--bfc-v2-color-lime-200, #d6f589)",
37
- 300: "var(--bfc-v2-color-lime-300, #b3ee2b)",
38
- 400: "var(--bfc-v2-color-lime-400, #a3e635)",
39
- 500: "var(--bfc-v2-color-lime-500, #91cf02)",
40
- 600: "var(--bfc-v2-color-lime-600, #83b300)",
41
- 700: "var(--bfc-v2-color-lime-700, #647f01)",
42
- 800: "var(--bfc-v2-color-lime-800, #546c00)",
43
- 900: "var(--bfc-v2-color-lime-900, #3f5304)",
44
- 1e3: "var(--bfc-v2-color-lime-1000, #2b331b)",
45
- DEFAULT: "var(--bfc-v2-color-lime-700, #647f01)"
46
- // 700
47
- };
48
-
49
- const green = {
50
- 100: "var(--bfc-v2-color-green-100, #dcfff1)",
51
- 200: "var(--bfc-v2-color-green-200, #baf3db)",
52
- 300: "var(--bfc-v2-color-green-300, #7ee2b8)",
53
- 400: "var(--bfc-v2-color-green-400, #4bce97)",
54
- 500: "var(--bfc-v2-color-green-500, #2abb7f)",
55
- 600: "var(--bfc-v2-color-green-600, #22a06b)",
56
- 700: "var(--bfc-v2-color-green-700, #1f845a)",
57
- 800: "var(--bfc-v2-color-green-800, #216e4e)",
58
- 900: "var(--bfc-v2-color-green-900, #164b35)",
59
- 1e3: "var(--bfc-v2-color-green-1000, #1c3329)",
60
- DEFAULT: "var(--bfc-v2-color-green-700, #1f845a)"
61
- // 700
62
- };
63
-
64
- const blue = {
65
- 100: "var(--bfc-v2-color-blue-100, #e9f2fe)",
66
- 200: "var(--bfc-v2-color-blue-200, #cfe1fd)",
67
- 300: "var(--bfc-v2-color-blue-300, #8fb8f6)",
68
- 400: "var(--bfc-v2-color-blue-400, #669df1)",
69
- 500: "var(--bfc-v2-color-blue-500, #4688ec)",
70
- 600: "var(--bfc-v2-color-blue-600, #357de8)",
71
- 700: "var(--bfc-v2-color-blue-700, #1868db)",
72
- 800: "var(--bfc-v2-color-blue-800, #1558bc)",
73
- 900: "var(--bfc-v2-color-blue-900, #123263)",
74
- 1e3: "var(--bfc-v2-color-blue-1000, #1c2b42)",
75
- DEFAULT: "var(--bfc-v2-color-blue-700, #1868db)"
76
- // 700
77
- };
78
-
79
- const teal = {
80
- 100: "var(--bfc-v2-color-teal-100, #e7f9ff)",
81
- 200: "var(--bfc-v2-color-teal-200, #c6edfb)",
82
- 300: "var(--bfc-v2-color-teal-300, #9dd9ee)",
83
- 400: "var(--bfc-v2-color-teal-400, #6cc3e0)",
84
- 500: "var(--bfc-v2-color-teal-500, #42b2d7)",
85
- 600: "var(--bfc-v2-color-teal-600, #2898bd)",
86
- 700: "var(--bfc-v2-color-teal-700, #227d9b)",
87
- 800: "var(--bfc-v2-color-teal-800, #206a83)",
88
- 900: "var(--bfc-v2-color-teal-900, #164555)",
89
- 1e3: "var(--bfc-v2-color-teal-1000, #1e3137)",
90
- DEFAULT: "var(--bfc-v2-color-teal-700, #227d9b)"
91
- // 700
92
- };
93
-
94
- const purple = {
95
- 100: "var(--bfc-v2-color-purple-100, #f8eefe)",
96
- 200: "var(--bfc-v2-color-purple-200, #dfd8fd)",
97
- 300: "var(--bfc-v2-color-purple-300, #b8acf6)",
98
- 400: "var(--bfc-v2-color-purple-400, #9f8fef)",
99
- 500: "var(--bfc-v2-color-purple-500, #8f7ee7)",
100
- 600: "var(--bfc-v2-color-purple-600, #8270db)",
101
- 700: "var(--bfc-v2-color-purple-700, #6e5dc6)",
102
- 800: "var(--bfc-v2-color-purple-800, #5e4db2)",
103
- 900: "var(--bfc-v2-color-purple-900, #352c63)",
104
- 1e3: "var(--bfc-v2-color-purple-1000, #2b273f)",
105
- DEFAULT: "var(--bfc-v2-color-purple-700, #6e5dc6)"
106
- // 700
107
- };
108
-
109
- const magenta = {
110
- 100: "var(--bfc-v2-color-magenta-100, #ffecf8)",
111
- 200: "var(--bfc-v2-color-magenta-200, #fdd0ec)",
112
- 300: "var(--bfc-v2-color-magenta-300, #f797d2)",
113
- 400: "var(--bfc-v2-color-magenta-400, #e774bb)",
114
- 500: "var(--bfc-v2-color-magenta-500, #da62ac)",
115
- 600: "var(--bfc-v2-color-magenta-600, #cd519d)",
116
- 700: "var(--bfc-v2-color-magenta-700, #ae4787)",
117
- 800: "var(--bfc-v2-color-magenta-800, #943d73)",
118
- 900: "var(--bfc-v2-color-magenta-900, #50253f)",
119
- 1e3: "var(--bfc-v2-color-magenta-1000, #3d2232)",
120
- DEFAULT: "var(--bfc-v2-color-magenta-700, #ae4787)"
121
- // 700
122
- };
123
-
124
- const pink = {
125
- 50: "var(--bfc-v2-color-pink-50, #F5F4FF)",
126
- 100: "var(--bfc-v2-color-pink-100, #FAE9FF)",
127
- 200: "var(--bfc-v2-color-pink-200, #F5D1FE)",
128
- 300: "var(--bfc-v2-color-pink-300, #F0ACFC)",
129
- 400: "var(--bfc-v2-color-pink-400, #E87AF9)",
130
- 500: "var(--bfc-v2-color-pink-500, #D947EF)",
131
- 600: "var(--bfc-v2-color-pink-600, #C027D3)",
132
- 700: "var(--bfc-v2-color-pink-700, #A21DAF)",
133
- 800: "var(--bfc-v2-color-pink-800, #861A8F)",
134
- 900: "var(--bfc-v2-color-pink-900, #701B75)",
135
- DEFAULT: "var(--bfc-v2-color-pink-400, #E87AF9)"
136
- // 400
137
- };
138
-
139
- const red = {
140
- 100: "var(--bfc-v2-color-red-100, #ffeceb)",
141
- 200: "var(--bfc-v2-color-red-200, #ffd5d2)",
142
- 300: "var(--bfc-v2-color-red-300, #fd9891)",
143
- 400: "var(--bfc-v2-color-red-400, #f87168)",
144
- 500: "var(--bfc-v2-color-red-500, #f15b50)",
145
- 600: "var(--bfc-v2-color-red-600, #e2483d)",
146
- 700: "var(--bfc-v2-color-red-700, #c9372c)",
147
- 800: "var(--bfc-v2-color-red-800, #ae2e24)",
148
- 900: "var(--bfc-v2-color-red-900, #5d1f1a)",
149
- 1e3: "var(--bfc-v2-color-red-1000, #42221f)",
150
- DEFAULT: "var(--bfc-v2-color-red-700, #c9372c)"
151
- // 700
152
- };
153
-
154
- const BrainfishColors = {
155
- primary,
156
- dark,
157
- orange,
158
- yellow,
159
- lime,
160
- green,
161
- blue,
162
- teal,
163
- purple,
164
- magenta,
165
- pink,
166
- red
167
- };
168
-
169
- export { BrainfishColors };
1
+ import{p as r}from"./chunks/primary.CMQbo1GJ.js";import{d as c}from"./chunks/dark.DuW7JuAk.js";const o={primary:r,dark:c,orange:{100:"var(--bfc-v2-color-orange-100, #fff3eb)",200:"var(--bfc-v2-color-orange-200, #fedec8)",300:"var(--bfc-v2-color-orange-300, #fec195)",400:"var(--bfc-v2-color-orange-400, #fea362)",500:"var(--bfc-v2-color-orange-500, #f38a3f)",600:"var(--bfc-v2-color-orange-600, #e56910)",700:"var(--bfc-v2-color-orange-700, #c25100)",800:"var(--bfc-v2-color-orange-800, #a54800)",900:"var(--bfc-v2-color-orange-900, #702e00)",1e3:"var(--bfc-v2-color-orange-1000, #38291e)",DEFAULT:"var(--bfc-v2-color-orange-700, #c25100)"},yellow:{100:"var(--bfc-v2-color-yellow-100, #fef7c8)",200:"var(--bfc-v2-color-yellow-200, #ffdf84)",300:"var(--bfc-v2-color-yellow-300, #fed153)",400:"var(--bfc-v2-color-yellow-400, #fbbf25)",500:"var(--bfc-v2-color-yellow-500, #e5ad1d)",600:"var(--bfc-v2-color-yellow-600, #c59109)",700:"var(--bfc-v2-color-yellow-700, #977007)",800:"var(--bfc-v2-color-yellow-800, #7f5f01)",900:"var(--bfc-v2-color-yellow-900, #533f04)",1e3:"var(--bfc-v2-color-yellow-1000, #332e1b)",DEFAULT:"var(--bfc-v2-color-yellow-700, #946f00)"},lime:{100:"var(--bfc-v2-color-lime-100, #e9fec8)",200:"var(--bfc-v2-color-lime-200, #d6f589)",300:"var(--bfc-v2-color-lime-300, #b3ee2b)",400:"var(--bfc-v2-color-lime-400, #a3e635)",500:"var(--bfc-v2-color-lime-500, #91cf02)",600:"var(--bfc-v2-color-lime-600, #83b300)",700:"var(--bfc-v2-color-lime-700, #647f01)",800:"var(--bfc-v2-color-lime-800, #546c00)",900:"var(--bfc-v2-color-lime-900, #3f5304)",1e3:"var(--bfc-v2-color-lime-1000, #2b331b)",DEFAULT:"var(--bfc-v2-color-lime-700, #647f01)"},green:{100:"var(--bfc-v2-color-green-100, #dcfff1)",200:"var(--bfc-v2-color-green-200, #baf3db)",300:"var(--bfc-v2-color-green-300, #7ee2b8)",400:"var(--bfc-v2-color-green-400, #4bce97)",500:"var(--bfc-v2-color-green-500, #2abb7f)",600:"var(--bfc-v2-color-green-600, #22a06b)",700:"var(--bfc-v2-color-green-700, #1f845a)",800:"var(--bfc-v2-color-green-800, #216e4e)",900:"var(--bfc-v2-color-green-900, #164b35)",1e3:"var(--bfc-v2-color-green-1000, #1c3329)",DEFAULT:"var(--bfc-v2-color-green-700, #1f845a)"},blue:{100:"var(--bfc-v2-color-blue-100, #e9f2fe)",200:"var(--bfc-v2-color-blue-200, #cfe1fd)",300:"var(--bfc-v2-color-blue-300, #8fb8f6)",400:"var(--bfc-v2-color-blue-400, #669df1)",500:"var(--bfc-v2-color-blue-500, #4688ec)",600:"var(--bfc-v2-color-blue-600, #357de8)",700:"var(--bfc-v2-color-blue-700, #1868db)",800:"var(--bfc-v2-color-blue-800, #1558bc)",900:"var(--bfc-v2-color-blue-900, #123263)",1e3:"var(--bfc-v2-color-blue-1000, #1c2b42)",DEFAULT:"var(--bfc-v2-color-blue-700, #1868db)"},teal:{100:"var(--bfc-v2-color-teal-100, #e7f9ff)",200:"var(--bfc-v2-color-teal-200, #c6edfb)",300:"var(--bfc-v2-color-teal-300, #9dd9ee)",400:"var(--bfc-v2-color-teal-400, #6cc3e0)",500:"var(--bfc-v2-color-teal-500, #42b2d7)",600:"var(--bfc-v2-color-teal-600, #2898bd)",700:"var(--bfc-v2-color-teal-700, #227d9b)",800:"var(--bfc-v2-color-teal-800, #206a83)",900:"var(--bfc-v2-color-teal-900, #164555)",1e3:"var(--bfc-v2-color-teal-1000, #1e3137)",DEFAULT:"var(--bfc-v2-color-teal-700, #227d9b)"},purple:{100:"var(--bfc-v2-color-purple-100, #f8eefe)",200:"var(--bfc-v2-color-purple-200, #dfd8fd)",300:"var(--bfc-v2-color-purple-300, #b8acf6)",400:"var(--bfc-v2-color-purple-400, #9f8fef)",500:"var(--bfc-v2-color-purple-500, #8f7ee7)",600:"var(--bfc-v2-color-purple-600, #8270db)",700:"var(--bfc-v2-color-purple-700, #6e5dc6)",800:"var(--bfc-v2-color-purple-800, #5e4db2)",900:"var(--bfc-v2-color-purple-900, #352c63)",1e3:"var(--bfc-v2-color-purple-1000, #2b273f)",DEFAULT:"var(--bfc-v2-color-purple-700, #6e5dc6)"},magenta:{100:"var(--bfc-v2-color-magenta-100, #ffecf8)",200:"var(--bfc-v2-color-magenta-200, #fdd0ec)",300:"var(--bfc-v2-color-magenta-300, #f797d2)",400:"var(--bfc-v2-color-magenta-400, #e774bb)",500:"var(--bfc-v2-color-magenta-500, #da62ac)",600:"var(--bfc-v2-color-magenta-600, #cd519d)",700:"var(--bfc-v2-color-magenta-700, #ae4787)",800:"var(--bfc-v2-color-magenta-800, #943d73)",900:"var(--bfc-v2-color-magenta-900, #50253f)",1e3:"var(--bfc-v2-color-magenta-1000, #3d2232)",DEFAULT:"var(--bfc-v2-color-magenta-700, #ae4787)"},pink:{50:"var(--bfc-v2-color-pink-50, #F5F4FF)",100:"var(--bfc-v2-color-pink-100, #FAE9FF)",200:"var(--bfc-v2-color-pink-200, #F5D1FE)",300:"var(--bfc-v2-color-pink-300, #F0ACFC)",400:"var(--bfc-v2-color-pink-400, #E87AF9)",500:"var(--bfc-v2-color-pink-500, #D947EF)",600:"var(--bfc-v2-color-pink-600, #C027D3)",700:"var(--bfc-v2-color-pink-700, #A21DAF)",800:"var(--bfc-v2-color-pink-800, #861A8F)",900:"var(--bfc-v2-color-pink-900, #701B75)",DEFAULT:"var(--bfc-v2-color-pink-400, #E87AF9)"},red:{100:"var(--bfc-v2-color-red-100, #ffeceb)",200:"var(--bfc-v2-color-red-200, #ffd5d2)",300:"var(--bfc-v2-color-red-300, #fd9891)",400:"var(--bfc-v2-color-red-400, #f87168)",500:"var(--bfc-v2-color-red-500, #f15b50)",600:"var(--bfc-v2-color-red-600, #e2483d)",700:"var(--bfc-v2-color-red-700, #c9372c)",800:"var(--bfc-v2-color-red-800, #ae2e24)",900:"var(--bfc-v2-color-red-900, #5d1f1a)",1e3:"var(--bfc-v2-color-red-1000, #42221f)",DEFAULT:"var(--bfc-v2-color-red-700, #c9372c)"}};export{o as BrainfishColors};
170
2
  //# sourceMappingURL=colors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"colors.js","sources":["../../src/colors/orange.ts","../../src/colors/yellow.ts","../../src/colors/lime.ts","../../src/colors/green.ts","../../src/colors/blue.ts","../../src/colors/teal.ts","../../src/colors/purple.ts","../../src/colors/magenta.ts","../../src/colors/pink.ts","../../src/colors/red.ts","../../src/colors/index.ts"],"sourcesContent":["export const orange = {\n 100: 'var(--bfc-v2-color-orange-100, #fff3eb)',\n 200: 'var(--bfc-v2-color-orange-200, #fedec8)',\n 300: 'var(--bfc-v2-color-orange-300, #fec195)',\n 400: 'var(--bfc-v2-color-orange-400, #fea362)',\n 500: 'var(--bfc-v2-color-orange-500, #f38a3f)',\n 600: 'var(--bfc-v2-color-orange-600, #e56910)',\n 700: 'var(--bfc-v2-color-orange-700, #c25100)',\n 800: 'var(--bfc-v2-color-orange-800, #a54800)',\n 900: 'var(--bfc-v2-color-orange-900, #702e00)',\n 1000: 'var(--bfc-v2-color-orange-1000, #38291e)',\n DEFAULT: 'var(--bfc-v2-color-orange-700, #c25100)', // 700\n};\n","export const yellow = {\n 100: 'var(--bfc-v2-color-yellow-100, #fef7c8)',\n 200: 'var(--bfc-v2-color-yellow-200, #ffdf84)',\n 300: 'var(--bfc-v2-color-yellow-300, #fed153)',\n 400: 'var(--bfc-v2-color-yellow-400, #fbbf25)',\n 500: 'var(--bfc-v2-color-yellow-500, #e5ad1d)',\n 600: 'var(--bfc-v2-color-yellow-600, #c59109)',\n 700: 'var(--bfc-v2-color-yellow-700, #977007)',\n 800: 'var(--bfc-v2-color-yellow-800, #7f5f01)',\n 900: 'var(--bfc-v2-color-yellow-900, #533f04)',\n 1000: 'var(--bfc-v2-color-yellow-1000, #332e1b)',\n DEFAULT: 'var(--bfc-v2-color-yellow-700, #946f00)', // 700\n};\n","export const lime = {\n 100: 'var(--bfc-v2-color-lime-100, #e9fec8)',\n 200: 'var(--bfc-v2-color-lime-200, #d6f589)',\n 300: 'var(--bfc-v2-color-lime-300, #b3ee2b)',\n 400: 'var(--bfc-v2-color-lime-400, #a3e635)',\n 500: 'var(--bfc-v2-color-lime-500, #91cf02)',\n 600: 'var(--bfc-v2-color-lime-600, #83b300)',\n 700: 'var(--bfc-v2-color-lime-700, #647f01)',\n 800: 'var(--bfc-v2-color-lime-800, #546c00)',\n 900: 'var(--bfc-v2-color-lime-900, #3f5304)',\n 1000: 'var(--bfc-v2-color-lime-1000, #2b331b)',\n DEFAULT: 'var(--bfc-v2-color-lime-700, #647f01)', // 700\n};\n","export const green = {\n 100: 'var(--bfc-v2-color-green-100, #dcfff1)',\n 200: 'var(--bfc-v2-color-green-200, #baf3db)',\n 300: 'var(--bfc-v2-color-green-300, #7ee2b8)',\n 400: 'var(--bfc-v2-color-green-400, #4bce97)',\n 500: 'var(--bfc-v2-color-green-500, #2abb7f)',\n 600: 'var(--bfc-v2-color-green-600, #22a06b)',\n 700: 'var(--bfc-v2-color-green-700, #1f845a)',\n 800: 'var(--bfc-v2-color-green-800, #216e4e)',\n 900: 'var(--bfc-v2-color-green-900, #164b35)',\n 1000: 'var(--bfc-v2-color-green-1000, #1c3329)',\n DEFAULT: 'var(--bfc-v2-color-green-700, #1f845a)', // 700\n};\n","export const blue = {\n 100: 'var(--bfc-v2-color-blue-100, #e9f2fe)',\n 200: 'var(--bfc-v2-color-blue-200, #cfe1fd)',\n 300: 'var(--bfc-v2-color-blue-300, #8fb8f6)',\n 400: 'var(--bfc-v2-color-blue-400, #669df1)',\n 500: 'var(--bfc-v2-color-blue-500, #4688ec)',\n 600: 'var(--bfc-v2-color-blue-600, #357de8)',\n 700: 'var(--bfc-v2-color-blue-700, #1868db)',\n 800: 'var(--bfc-v2-color-blue-800, #1558bc)',\n 900: 'var(--bfc-v2-color-blue-900, #123263)',\n 1000: 'var(--bfc-v2-color-blue-1000, #1c2b42)',\n DEFAULT: 'var(--bfc-v2-color-blue-700, #1868db)', // 700\n};\n","export const teal = {\n 100: 'var(--bfc-v2-color-teal-100, #e7f9ff)',\n 200: 'var(--bfc-v2-color-teal-200, #c6edfb)',\n 300: 'var(--bfc-v2-color-teal-300, #9dd9ee)',\n 400: 'var(--bfc-v2-color-teal-400, #6cc3e0)',\n 500: 'var(--bfc-v2-color-teal-500, #42b2d7)',\n 600: 'var(--bfc-v2-color-teal-600, #2898bd)',\n 700: 'var(--bfc-v2-color-teal-700, #227d9b)',\n 800: 'var(--bfc-v2-color-teal-800, #206a83)',\n 900: 'var(--bfc-v2-color-teal-900, #164555)',\n 1000: 'var(--bfc-v2-color-teal-1000, #1e3137)',\n DEFAULT: 'var(--bfc-v2-color-teal-700, #227d9b)', // 700\n};\n","export const purple = {\n 100: 'var(--bfc-v2-color-purple-100, #f8eefe)',\n 200: 'var(--bfc-v2-color-purple-200, #dfd8fd)',\n 300: 'var(--bfc-v2-color-purple-300, #b8acf6)',\n 400: 'var(--bfc-v2-color-purple-400, #9f8fef)',\n 500: 'var(--bfc-v2-color-purple-500, #8f7ee7)',\n 600: 'var(--bfc-v2-color-purple-600, #8270db)',\n 700: 'var(--bfc-v2-color-purple-700, #6e5dc6)',\n 800: 'var(--bfc-v2-color-purple-800, #5e4db2)',\n 900: 'var(--bfc-v2-color-purple-900, #352c63)',\n 1000: 'var(--bfc-v2-color-purple-1000, #2b273f)',\n DEFAULT: 'var(--bfc-v2-color-purple-700, #6e5dc6)', // 700\n};\n","export const magenta = {\n 100: 'var(--bfc-v2-color-magenta-100, #ffecf8)',\n 200: 'var(--bfc-v2-color-magenta-200, #fdd0ec)',\n 300: 'var(--bfc-v2-color-magenta-300, #f797d2)',\n 400: 'var(--bfc-v2-color-magenta-400, #e774bb)',\n 500: 'var(--bfc-v2-color-magenta-500, #da62ac)',\n 600: 'var(--bfc-v2-color-magenta-600, #cd519d)',\n 700: 'var(--bfc-v2-color-magenta-700, #ae4787)',\n 800: 'var(--bfc-v2-color-magenta-800, #943d73)',\n 900: 'var(--bfc-v2-color-magenta-900, #50253f)',\n 1000: 'var(--bfc-v2-color-magenta-1000, #3d2232)',\n DEFAULT: 'var(--bfc-v2-color-magenta-700, #ae4787)', // 700\n};\n","export const pink = {\n 50: 'var(--bfc-v2-color-pink-50, #F5F4FF)',\n 100: 'var(--bfc-v2-color-pink-100, #FAE9FF)',\n 200: 'var(--bfc-v2-color-pink-200, #F5D1FE)',\n 300: 'var(--bfc-v2-color-pink-300, #F0ACFC)',\n 400: 'var(--bfc-v2-color-pink-400, #E87AF9)',\n 500: 'var(--bfc-v2-color-pink-500, #D947EF)',\n 600: 'var(--bfc-v2-color-pink-600, #C027D3)',\n 700: 'var(--bfc-v2-color-pink-700, #A21DAF)',\n 800: 'var(--bfc-v2-color-pink-800, #861A8F)',\n 900: 'var(--bfc-v2-color-pink-900, #701B75)',\n DEFAULT: 'var(--bfc-v2-color-pink-400, #E87AF9)', // 400\n};\n","export const red = {\n 100: 'var(--bfc-v2-color-red-100, #ffeceb)',\n 200: 'var(--bfc-v2-color-red-200, #ffd5d2)',\n 300: 'var(--bfc-v2-color-red-300, #fd9891)',\n 400: 'var(--bfc-v2-color-red-400, #f87168)',\n 500: 'var(--bfc-v2-color-red-500, #f15b50)',\n 600: 'var(--bfc-v2-color-red-600, #e2483d)',\n 700: 'var(--bfc-v2-color-red-700, #c9372c)',\n 800: 'var(--bfc-v2-color-red-800, #ae2e24)',\n 900: 'var(--bfc-v2-color-red-900, #5d1f1a)',\n 1000: 'var(--bfc-v2-color-red-1000, #42221f)',\n DEFAULT: 'var(--bfc-v2-color-red-700, #c9372c)', // 700\n};\n","import { primary } from './primary';\nimport { dark } from './dark';\nimport { orange } from './orange';\nimport { yellow } from './yellow';\nimport { lime } from './lime';\nimport { green } from './green';\nimport { blue } from './blue';\nimport { teal } from './teal';\nimport { purple } from './purple';\nimport { magenta } from './magenta';\nimport { pink } from './pink';\nimport { red } from './red';\n\nexport const BrainfishColors = {\n primary,\n dark,\n orange,\n yellow,\n lime,\n green,\n blue,\n teal,\n purple,\n magenta,\n pink,\n red,\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"colors.js","sources":["../../src/colors/orange.ts","../../src/colors/index.ts","../../src/colors/yellow.ts","../../src/colors/lime.ts","../../src/colors/green.ts","../../src/colors/blue.ts","../../src/colors/teal.ts","../../src/colors/purple.ts","../../src/colors/magenta.ts","../../src/colors/pink.ts","../../src/colors/red.ts"],"sourcesContent":["export const orange = {\n 100: 'var(--bfc-v2-color-orange-100, #fff3eb)',\n 200: 'var(--bfc-v2-color-orange-200, #fedec8)',\n 300: 'var(--bfc-v2-color-orange-300, #fec195)',\n 400: 'var(--bfc-v2-color-orange-400, #fea362)',\n 500: 'var(--bfc-v2-color-orange-500, #f38a3f)',\n 600: 'var(--bfc-v2-color-orange-600, #e56910)',\n 700: 'var(--bfc-v2-color-orange-700, #c25100)',\n 800: 'var(--bfc-v2-color-orange-800, #a54800)',\n 900: 'var(--bfc-v2-color-orange-900, #702e00)',\n 1000: 'var(--bfc-v2-color-orange-1000, #38291e)',\n DEFAULT: 'var(--bfc-v2-color-orange-700, #c25100)', // 700\n};\n","import { primary } from './primary';\nimport { dark } from './dark';\nimport { orange } from './orange';\nimport { yellow } from './yellow';\nimport { lime } from './lime';\nimport { green } from './green';\nimport { blue } from './blue';\nimport { teal } from './teal';\nimport { purple } from './purple';\nimport { magenta } from './magenta';\nimport { pink } from './pink';\nimport { red } from './red';\n\nexport const BrainfishColors = {\n primary,\n dark,\n orange,\n yellow,\n lime,\n green,\n blue,\n teal,\n purple,\n magenta,\n pink,\n red,\n};\n","export const yellow = {\n 100: 'var(--bfc-v2-color-yellow-100, #fef7c8)',\n 200: 'var(--bfc-v2-color-yellow-200, #ffdf84)',\n 300: 'var(--bfc-v2-color-yellow-300, #fed153)',\n 400: 'var(--bfc-v2-color-yellow-400, #fbbf25)',\n 500: 'var(--bfc-v2-color-yellow-500, #e5ad1d)',\n 600: 'var(--bfc-v2-color-yellow-600, #c59109)',\n 700: 'var(--bfc-v2-color-yellow-700, #977007)',\n 800: 'var(--bfc-v2-color-yellow-800, #7f5f01)',\n 900: 'var(--bfc-v2-color-yellow-900, #533f04)',\n 1000: 'var(--bfc-v2-color-yellow-1000, #332e1b)',\n DEFAULT: 'var(--bfc-v2-color-yellow-700, #946f00)', // 700\n};\n","export const lime = {\n 100: 'var(--bfc-v2-color-lime-100, #e9fec8)',\n 200: 'var(--bfc-v2-color-lime-200, #d6f589)',\n 300: 'var(--bfc-v2-color-lime-300, #b3ee2b)',\n 400: 'var(--bfc-v2-color-lime-400, #a3e635)',\n 500: 'var(--bfc-v2-color-lime-500, #91cf02)',\n 600: 'var(--bfc-v2-color-lime-600, #83b300)',\n 700: 'var(--bfc-v2-color-lime-700, #647f01)',\n 800: 'var(--bfc-v2-color-lime-800, #546c00)',\n 900: 'var(--bfc-v2-color-lime-900, #3f5304)',\n 1000: 'var(--bfc-v2-color-lime-1000, #2b331b)',\n DEFAULT: 'var(--bfc-v2-color-lime-700, #647f01)', // 700\n};\n","export const green = {\n 100: 'var(--bfc-v2-color-green-100, #dcfff1)',\n 200: 'var(--bfc-v2-color-green-200, #baf3db)',\n 300: 'var(--bfc-v2-color-green-300, #7ee2b8)',\n 400: 'var(--bfc-v2-color-green-400, #4bce97)',\n 500: 'var(--bfc-v2-color-green-500, #2abb7f)',\n 600: 'var(--bfc-v2-color-green-600, #22a06b)',\n 700: 'var(--bfc-v2-color-green-700, #1f845a)',\n 800: 'var(--bfc-v2-color-green-800, #216e4e)',\n 900: 'var(--bfc-v2-color-green-900, #164b35)',\n 1000: 'var(--bfc-v2-color-green-1000, #1c3329)',\n DEFAULT: 'var(--bfc-v2-color-green-700, #1f845a)', // 700\n};\n","export const blue = {\n 100: 'var(--bfc-v2-color-blue-100, #e9f2fe)',\n 200: 'var(--bfc-v2-color-blue-200, #cfe1fd)',\n 300: 'var(--bfc-v2-color-blue-300, #8fb8f6)',\n 400: 'var(--bfc-v2-color-blue-400, #669df1)',\n 500: 'var(--bfc-v2-color-blue-500, #4688ec)',\n 600: 'var(--bfc-v2-color-blue-600, #357de8)',\n 700: 'var(--bfc-v2-color-blue-700, #1868db)',\n 800: 'var(--bfc-v2-color-blue-800, #1558bc)',\n 900: 'var(--bfc-v2-color-blue-900, #123263)',\n 1000: 'var(--bfc-v2-color-blue-1000, #1c2b42)',\n DEFAULT: 'var(--bfc-v2-color-blue-700, #1868db)', // 700\n};\n","export const teal = {\n 100: 'var(--bfc-v2-color-teal-100, #e7f9ff)',\n 200: 'var(--bfc-v2-color-teal-200, #c6edfb)',\n 300: 'var(--bfc-v2-color-teal-300, #9dd9ee)',\n 400: 'var(--bfc-v2-color-teal-400, #6cc3e0)',\n 500: 'var(--bfc-v2-color-teal-500, #42b2d7)',\n 600: 'var(--bfc-v2-color-teal-600, #2898bd)',\n 700: 'var(--bfc-v2-color-teal-700, #227d9b)',\n 800: 'var(--bfc-v2-color-teal-800, #206a83)',\n 900: 'var(--bfc-v2-color-teal-900, #164555)',\n 1000: 'var(--bfc-v2-color-teal-1000, #1e3137)',\n DEFAULT: 'var(--bfc-v2-color-teal-700, #227d9b)', // 700\n};\n","export const purple = {\n 100: 'var(--bfc-v2-color-purple-100, #f8eefe)',\n 200: 'var(--bfc-v2-color-purple-200, #dfd8fd)',\n 300: 'var(--bfc-v2-color-purple-300, #b8acf6)',\n 400: 'var(--bfc-v2-color-purple-400, #9f8fef)',\n 500: 'var(--bfc-v2-color-purple-500, #8f7ee7)',\n 600: 'var(--bfc-v2-color-purple-600, #8270db)',\n 700: 'var(--bfc-v2-color-purple-700, #6e5dc6)',\n 800: 'var(--bfc-v2-color-purple-800, #5e4db2)',\n 900: 'var(--bfc-v2-color-purple-900, #352c63)',\n 1000: 'var(--bfc-v2-color-purple-1000, #2b273f)',\n DEFAULT: 'var(--bfc-v2-color-purple-700, #6e5dc6)', // 700\n};\n","export const magenta = {\n 100: 'var(--bfc-v2-color-magenta-100, #ffecf8)',\n 200: 'var(--bfc-v2-color-magenta-200, #fdd0ec)',\n 300: 'var(--bfc-v2-color-magenta-300, #f797d2)',\n 400: 'var(--bfc-v2-color-magenta-400, #e774bb)',\n 500: 'var(--bfc-v2-color-magenta-500, #da62ac)',\n 600: 'var(--bfc-v2-color-magenta-600, #cd519d)',\n 700: 'var(--bfc-v2-color-magenta-700, #ae4787)',\n 800: 'var(--bfc-v2-color-magenta-800, #943d73)',\n 900: 'var(--bfc-v2-color-magenta-900, #50253f)',\n 1000: 'var(--bfc-v2-color-magenta-1000, #3d2232)',\n DEFAULT: 'var(--bfc-v2-color-magenta-700, #ae4787)', // 700\n};\n","export const pink = {\n 50: 'var(--bfc-v2-color-pink-50, #F5F4FF)',\n 100: 'var(--bfc-v2-color-pink-100, #FAE9FF)',\n 200: 'var(--bfc-v2-color-pink-200, #F5D1FE)',\n 300: 'var(--bfc-v2-color-pink-300, #F0ACFC)',\n 400: 'var(--bfc-v2-color-pink-400, #E87AF9)',\n 500: 'var(--bfc-v2-color-pink-500, #D947EF)',\n 600: 'var(--bfc-v2-color-pink-600, #C027D3)',\n 700: 'var(--bfc-v2-color-pink-700, #A21DAF)',\n 800: 'var(--bfc-v2-color-pink-800, #861A8F)',\n 900: 'var(--bfc-v2-color-pink-900, #701B75)',\n DEFAULT: 'var(--bfc-v2-color-pink-400, #E87AF9)', // 400\n};\n","export const red = {\n 100: 'var(--bfc-v2-color-red-100, #ffeceb)',\n 200: 'var(--bfc-v2-color-red-200, #ffd5d2)',\n 300: 'var(--bfc-v2-color-red-300, #fd9891)',\n 400: 'var(--bfc-v2-color-red-400, #f87168)',\n 500: 'var(--bfc-v2-color-red-500, #f15b50)',\n 600: 'var(--bfc-v2-color-red-600, #e2483d)',\n 700: 'var(--bfc-v2-color-red-700, #c9372c)',\n 800: 'var(--bfc-v2-color-red-800, #ae2e24)',\n 900: 'var(--bfc-v2-color-red-900, #5d1f1a)',\n 1000: 'var(--bfc-v2-color-red-1000, #42221f)',\n DEFAULT: 'var(--bfc-v2-color-red-700, #c9372c)', // 700\n};\n"],"names":["BrainfishColors","primary","dark","orange","DEFAULT","yellow","lime","green","blue","teal","purple","magenta","pink","red"],"mappings":"+FAAO,MCaMA,EAAkB,CAC7BC,UACAC,OACAC,ODhBoB,CACpB,IAAK,0CACL,IAAK,0CACL,IAAK,0CACL,IAAK,0CACL,IAAK,0CACL,IAAK,0CACL,IAAK,0CACL,IAAK,0CACL,IAAK,0CACL,IAAM,2CACNC,QAAS,2CCMTC,OCjBoB,CACpB,IAAK,0CACL,IAAK,0CACL,IAAK,0CACL,IAAK,0CACL,IAAK,0CACL,IAAK,0CACL,IAAK,0CACL,IAAK,0CACL,IAAK,0CACL,IAAM,2CACND,QAAS,2CDOTE,KElBkB,CAClB,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAM,yCACNF,QAAS,yCFQTG,MGnBmB,CACnB,IAAK,yCACL,IAAK,yCACL,IAAK,yCACL,IAAK,yCACL,IAAK,yCACL,IAAK,yCACL,IAAK,yCACL,IAAK,yCACL,IAAK,yCACL,IAAM,0CACNH,QAAS,0CHSTI,KIpBkB,CAClB,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAM,yCACNJ,QAAS,yCJUTK,KKrBkB,CAClB,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAM,yCACNL,QAAS,yCLWTM,OMtBoB,CACpB,IAAK,0CACL,IAAK,0CACL,IAAK,0CACL,IAAK,0CACL,IAAK,0CACL,IAAK,0CACL,IAAK,0CACL,IAAK,0CACL,IAAK,0CACL,IAAM,2CACNN,QAAS,2CNYTO,QOvBqB,CACrB,IAAK,2CACL,IAAK,2CACL,IAAK,2CACL,IAAK,2CACL,IAAK,2CACL,IAAK,2CACL,IAAK,2CACL,IAAK,2CACL,IAAK,2CACL,IAAM,4CACNP,QAAS,4CPaTQ,KQxBkB,CAClB,GAAI,uCACJ,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAK,wCACL,IAAK,wCACLR,QAAS,yCRcTS,ISzBiB,CACjB,IAAK,uCACL,IAAK,uCACL,IAAK,uCACL,IAAK,uCACL,IAAK,uCACL,IAAK,uCACL,IAAK,uCACL,IAAK,uCACL,IAAK,uCACL,IAAM,wCACNT,QAAS"}
@@ -1,54 +1,5 @@
1
- import { Sparkle, CaretDown, CaretUp } from '@phosphor-icons/react';
2
- import * as React from 'react';
3
- import { B as Button } from '../chunks/button.DQL6gCAt.js';
4
- import { Tooltip, TooltipTrigger, TooltipContent } from './ui/tooltip.js';
5
- import { ButtonGroup } from './ui/button-group.js';
6
- import { c as cn } from '../chunks/utils.Cwtlq8dh.js';
7
-
8
- function pluralise(count, singular, plural = `${singular}s`) {
9
- const word = count === 1 ? singular : plural;
10
- return `${count} ${word}`;
11
- }
12
-
13
- const ArticleSuggestionsBanner = React.forwardRef(
14
- function ArticleSuggestionsBanner2({
15
- suggestionsCount,
16
- currentArticleIndex,
17
- totalArticles,
18
- onNextArticle,
19
- onPreviousArticle,
20
- onStartReviewSuggestions,
21
- onRejectAllSuggestions,
22
- onApproveAllSuggestions,
23
- className,
24
- ...props
25
- }, ref) {
26
- const hasNextArticle = currentArticleIndex < totalArticles - 1;
27
- const hasPreviousArticle = currentArticleIndex > 0;
28
- const currentArticle = currentArticleIndex + 1;
29
- return /* @__PURE__ */ React.createElement("div", { ref, className: cn("flex bg-blue-200 rounded-md border border-blue-600", className), ...props }, /* @__PURE__ */ React.createElement("div", { className: "flex-1 py-3 px-4 flex justify-between items-center" }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React.createElement(Sparkle, { size: 32, weight: "fill", className: "text-blue-700" }), /* @__PURE__ */ React.createElement("p", { className: "text-sm text-foreground" }, pluralise(suggestionsCount, "way"), " to level up this article.")), /* @__PURE__ */ React.createElement(ButtonGroup, { orientation: "horizontal", rounded: false, "aria-label": "Suggestion actions" }, /* @__PURE__ */ React.createElement(Button, { variant: "link", onClick: onStartReviewSuggestions }, "Start review"), /* @__PURE__ */ React.createElement(Button, { variant: "link", onClick: onRejectAllSuggestions }, "Reject all"), /* @__PURE__ */ React.createElement(Button, { variant: "shadowSurface", onClick: onApproveAllSuggestions }, "Approve all"))), /* @__PURE__ */ React.createElement("div", { className: "py-3 px-6 flex items-center bg-blue-300 border-l border-blue-700 gap-2 rounded-r-md" }, /* @__PURE__ */ React.createElement("p", { className: "text-sm text-foreground" }, /* @__PURE__ */ React.createElement("span", { "aria-hidden": "true" }, currentArticle, "/", totalArticles), /* @__PURE__ */ React.createElement("span", { className: "sr-only", "aria-live": "polite" }, "Article ", currentArticle, " of ", totalArticles)), /* @__PURE__ */ React.createElement(Tooltip, null, /* @__PURE__ */ React.createElement(TooltipTrigger, { asChild: true }, /* @__PURE__ */ React.createElement(
30
- Button,
31
- {
32
- variant: "link",
33
- size: "icon",
34
- disabled: !hasNextArticle,
35
- onClick: onNextArticle,
36
- "aria-label": "Go to next article"
37
- },
38
- /* @__PURE__ */ React.createElement(CaretDown, { "aria-hidden": "true", weight: "bold" })
39
- )), /* @__PURE__ */ React.createElement(TooltipContent, { side: "bottom", bgColor: "--bfc-foreground", className: "text-background" }, "Next Article")), /* @__PURE__ */ React.createElement(Tooltip, null, /* @__PURE__ */ React.createElement(TooltipTrigger, { asChild: true }, /* @__PURE__ */ React.createElement(
40
- Button,
41
- {
42
- variant: "link",
43
- size: "icon",
44
- disabled: !hasPreviousArticle,
45
- onClick: onPreviousArticle,
46
- "aria-label": "Go to previous article"
47
- },
48
- /* @__PURE__ */ React.createElement(CaretUp, { "aria-hidden": "true", weight: "bold" })
49
- )), /* @__PURE__ */ React.createElement(TooltipContent, { side: "top", bgColor: "--bfc-foreground", className: "text-background" }, "Previous Article"))));
50
- }
51
- );
52
-
53
- export { ArticleSuggestionsBanner };
1
+ import{Sparkle as e,CaretDown as t,CaretUp as r}from"@phosphor-icons/react";import*as a from"react";import{B as l}from"../chunks/button.BYc5d6AZ.js";import{Tooltip as n,TooltipTrigger as o,TooltipContent as i}from"./ui/tooltip.js";import{ButtonGroup as c}from"./ui/button-group.js";import{c as s}from"../chunks/utils.C6Qu-kwd.js";const m=a.forwardRef(function({suggestionsCount:m,currentArticleIndex:u,totalArticles:d,onNextArticle:p,onPreviousArticle:b,onStartReviewSuggestions:f,onRejectAllSuggestions:g,onApproveAllSuggestions:E,className:x,...v},h){const k=u<d-1,N=u>0,A=u+1;/* @__PURE__ */
2
+ return a.createElement("div",{ref:h,className:s("flex bg-blue-200 rounded-md border border-blue-600",x),...v},/* @__PURE__ */a.createElement("div",{className:"flex-1 py-3 px-4 flex justify-between items-center"},/* @__PURE__ */a.createElement("div",{className:"flex items-center gap-2"},/* @__PURE__ */a.createElement(e,{size:32,weight:"fill",className:"text-blue-700"}),/* @__PURE__ */a.createElement("p",{className:"text-sm text-foreground"},function(e,t,r=`${t}s`){return`${e} ${1===e?t:r}`}(m,"way")," to level up this article.")),/* @__PURE__ */a.createElement(c,{orientation:"horizontal",rounded:!1,"aria-label":"Suggestion actions"},/* @__PURE__ */a.createElement(l,{variant:"link",onClick:f},"Start review"),/* @__PURE__ */a.createElement(l,{variant:"link",onClick:g},"Reject all"),/* @__PURE__ */a.createElement(l,{variant:"shadowSurface",onClick:E},"Approve all"))),/* @__PURE__ */a.createElement("div",{className:"py-3 px-6 flex items-center bg-blue-300 border-l border-blue-700 gap-2 rounded-r-md"},/* @__PURE__ */a.createElement("p",{className:"text-sm text-foreground"},/* @__PURE__ */a.createElement("span",{"aria-hidden":"true"},A,"/",d),/* @__PURE__ */a.createElement("span",{className:"sr-only","aria-live":"polite"},"Article ",A," of ",d)),/* @__PURE__ */a.createElement(n,null,/* @__PURE__ */a.createElement(o,{asChild:!0},/* @__PURE__ */a.createElement(l,{variant:"link",size:"icon",disabled:!k,onClick:p,"aria-label":"Go to next article"},
3
+ /* @__PURE__ */a.createElement(t,{"aria-hidden":"true",weight:"bold"}))),/* @__PURE__ */a.createElement(i,{side:"bottom",bgColor:"--bfc-foreground",className:"text-background"},"Next Article")),/* @__PURE__ */a.createElement(n,null,/* @__PURE__ */a.createElement(o,{asChild:!0},/* @__PURE__ */a.createElement(l,{variant:"link",size:"icon",disabled:!N,onClick:b,"aria-label":"Go to previous article"},
4
+ /* @__PURE__ */a.createElement(r,{"aria-hidden":"true",weight:"bold"}))),/* @__PURE__ */a.createElement(i,{side:"top",bgColor:"--bfc-foreground",className:"text-background"},"Previous Article"))))});export{m as ArticleSuggestionsBanner};
54
5
  //# sourceMappingURL=article-suggestions-banner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"article-suggestions-banner.js","sources":["../../../src/lib/pluralise.ts","../../../src/components/article-suggestions-banner/article-suggestions-banner.tsx"],"sourcesContent":["export function pluralise(count: number, singular: string, plural = `${singular}s`) {\n const word = count === 1 ? singular : plural;\n\n return `${count} ${word}`;\n}\n","import { CaretDown, CaretUp, Sparkle } from '@phosphor-icons/react';\nimport * as React from 'react';\n\nimport { Button } from '../ui/button';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '../ui/tooltip';\nimport { ButtonGroup } from '../ui/button-group';\n\nimport { cn } from '@/lib/utils';\nimport { pluralise } from '@/lib/pluralise';\n\nexport interface ArticleSuggestionsBannerProps extends React.HTMLAttributes<HTMLDivElement> {\n suggestionsCount: number;\n currentArticleIndex: number;\n totalArticles: number;\n onNextArticle: () => void;\n onPreviousArticle: () => void;\n onStartReviewSuggestions: () => void;\n onRejectAllSuggestions: () => void;\n onApproveAllSuggestions: () => void;\n}\n\nexport const ArticleSuggestionsBanner = React.forwardRef<HTMLDivElement, ArticleSuggestionsBannerProps>(\n function ArticleSuggestionsBanner(\n {\n suggestionsCount,\n currentArticleIndex,\n totalArticles,\n onNextArticle,\n onPreviousArticle,\n onStartReviewSuggestions,\n onRejectAllSuggestions,\n onApproveAllSuggestions,\n className,\n ...props\n },\n ref,\n ) {\n const hasNextArticle = currentArticleIndex < totalArticles - 1;\n const hasPreviousArticle = currentArticleIndex > 0;\n const currentArticle = currentArticleIndex + 1;\n\n return (\n <div ref={ref} className={cn('flex bg-blue-200 rounded-md border border-blue-600', className)} {...props}>\n <div className=\"flex-1 py-3 px-4 flex justify-between items-center\">\n <div className=\"flex items-center gap-2\">\n <Sparkle size={32} weight=\"fill\" className=\"text-blue-700\" />\n <p className=\"text-sm text-foreground\">{pluralise(suggestionsCount, 'way')} to level up this article.</p>\n </div>\n <ButtonGroup orientation=\"horizontal\" rounded={false} aria-label=\"Suggestion actions\">\n <Button variant=\"link\" onClick={onStartReviewSuggestions}>\n Start review\n </Button>\n <Button variant=\"link\" onClick={onRejectAllSuggestions}>\n Reject all\n </Button>\n <Button variant=\"shadowSurface\" onClick={onApproveAllSuggestions}>\n Approve all\n </Button>\n </ButtonGroup>\n </div>\n <div className=\"py-3 px-6 flex items-center bg-blue-300 border-l border-blue-700 gap-2 rounded-r-md\">\n <p className=\"text-sm text-foreground\">\n <span aria-hidden=\"true\">\n {currentArticle}/{totalArticles}\n </span>\n <span className=\"sr-only\" aria-live=\"polite\">\n Article {currentArticle} of {totalArticles}\n </span>\n </p>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"link\"\n size=\"icon\"\n disabled={!hasNextArticle}\n onClick={onNextArticle}\n aria-label=\"Go to next article\"\n >\n <CaretDown aria-hidden=\"true\" weight=\"bold\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\" bgColor=\"--bfc-foreground\" className=\"text-background\">\n Next Article\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"link\"\n size=\"icon\"\n disabled={!hasPreviousArticle}\n onClick={onPreviousArticle}\n aria-label=\"Go to previous article\"\n >\n <CaretUp aria-hidden=\"true\" weight=\"bold\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent side=\"top\" bgColor=\"--bfc-foreground\" className=\"text-background\">\n Previous Article\n </TooltipContent>\n </Tooltip>\n </div>\n </div>\n );\n },\n);\n"],"names":["ArticleSuggestionsBanner"],"mappings":"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"}
1
+ {"version":3,"file":"article-suggestions-banner.js","sources":["../../../src/components/article-suggestions-banner/article-suggestions-banner.tsx","../../../src/lib/pluralise.ts"],"sourcesContent":["import { CaretDown, CaretUp, Sparkle } from '@phosphor-icons/react';\nimport * as React from 'react';\n\nimport { Button } from '../ui/button';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '../ui/tooltip';\nimport { ButtonGroup } from '../ui/button-group';\n\nimport { cn } from '@/lib/utils';\nimport { pluralise } from '@/lib/pluralise';\n\nexport interface ArticleSuggestionsBannerProps extends React.HTMLAttributes<HTMLDivElement> {\n suggestionsCount: number;\n currentArticleIndex: number;\n totalArticles: number;\n onNextArticle: () => void;\n onPreviousArticle: () => void;\n onStartReviewSuggestions: () => void;\n onRejectAllSuggestions: () => void;\n onApproveAllSuggestions: () => void;\n}\n\nexport const ArticleSuggestionsBanner = React.forwardRef<HTMLDivElement, ArticleSuggestionsBannerProps>(\n function ArticleSuggestionsBanner(\n {\n suggestionsCount,\n currentArticleIndex,\n totalArticles,\n onNextArticle,\n onPreviousArticle,\n onStartReviewSuggestions,\n onRejectAllSuggestions,\n onApproveAllSuggestions,\n className,\n ...props\n },\n ref,\n ) {\n const hasNextArticle = currentArticleIndex < totalArticles - 1;\n const hasPreviousArticle = currentArticleIndex > 0;\n const currentArticle = currentArticleIndex + 1;\n\n return (\n <div ref={ref} className={cn('flex bg-blue-200 rounded-md border border-blue-600', className)} {...props}>\n <div className=\"flex-1 py-3 px-4 flex justify-between items-center\">\n <div className=\"flex items-center gap-2\">\n <Sparkle size={32} weight=\"fill\" className=\"text-blue-700\" />\n <p className=\"text-sm text-foreground\">{pluralise(suggestionsCount, 'way')} to level up this article.</p>\n </div>\n <ButtonGroup orientation=\"horizontal\" rounded={false} aria-label=\"Suggestion actions\">\n <Button variant=\"link\" onClick={onStartReviewSuggestions}>\n Start review\n </Button>\n <Button variant=\"link\" onClick={onRejectAllSuggestions}>\n Reject all\n </Button>\n <Button variant=\"shadowSurface\" onClick={onApproveAllSuggestions}>\n Approve all\n </Button>\n </ButtonGroup>\n </div>\n <div className=\"py-3 px-6 flex items-center bg-blue-300 border-l border-blue-700 gap-2 rounded-r-md\">\n <p className=\"text-sm text-foreground\">\n <span aria-hidden=\"true\">\n {currentArticle}/{totalArticles}\n </span>\n <span className=\"sr-only\" aria-live=\"polite\">\n Article {currentArticle} of {totalArticles}\n </span>\n </p>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"link\"\n size=\"icon\"\n disabled={!hasNextArticle}\n onClick={onNextArticle}\n aria-label=\"Go to next article\"\n >\n <CaretDown aria-hidden=\"true\" weight=\"bold\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\" bgColor=\"--bfc-foreground\" className=\"text-background\">\n Next Article\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"link\"\n size=\"icon\"\n disabled={!hasPreviousArticle}\n onClick={onPreviousArticle}\n aria-label=\"Go to previous article\"\n >\n <CaretUp aria-hidden=\"true\" weight=\"bold\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent side=\"top\" bgColor=\"--bfc-foreground\" className=\"text-background\">\n Previous Article\n </TooltipContent>\n </Tooltip>\n </div>\n </div>\n );\n },\n);\n","export function pluralise(count: number, singular: string, plural = `${singular}s`) {\n const word = count === 1 ? singular : plural;\n\n return `${count} ${word}`;\n}\n"],"names":["ArticleSuggestionsBanner","React","forwardRef","suggestionsCount","currentArticleIndex","totalArticles","onNextArticle","onPreviousArticle","onStartReviewSuggestions","onRejectAllSuggestions","onApproveAllSuggestions","className","props","ref","hasNextArticle","hasPreviousArticle","currentArticle","createElement","cn","Sparkle","size","weight","count","singular","plural","pluralise","ButtonGroup","orientation","rounded","Button","variant","onClick","Tooltip","TooltipTrigger","asChild","disabled","CaretDown","TooltipContent","side","bgColor","CaretUp"],"mappings":"0UAqBO,MAAMA,EAA2BC,EAAMC,WAC5C,UACEC,iBACEA,EAAAC,oBACAA,EAAAC,cACAA,EAAAC,cACAA,EAAAC,kBACAA,EAAAC,yBACAA,EAAAC,uBACAA,EAAAC,wBACAA,EAAAC,UACAA,KACGC,GAELC,GAEA,MAAMC,EAAiBV,EAAsBC,EAAgB,EACvDU,EAAqBX,EAAsB,EAC3CY,EAAiBZ,EAAsB;AAE7C,OACEH,EAAAgB,cAAC,OAAIJ,MAAUF,UAAWO,EAAG,qDAAsDP,MAAgBC,kBACjGX,EAAAgB,cAAC,OAAIN,UAAU,qEACbV,EAAAgB,cAAC,MAAA,CAAIN,UAAU,0DACZQ,EAAA,CAAQC,KAAM,GAAIC,OAAO,OAAOV,UAAU,iCAC3CV,EAAAgB,cAAC,KAAEN,UAAU,2BC9ClB,SAAmBW,EAAeC,EAAkBC,EAAS,GAAGD,MAGrE,MAAO,GAAGD,KAFa,IAAVA,EAAcC,EAAWC,GAGxC,CD0CoDC,CAAUtB,EAAkB,OAAO,8DAE5EuB,EAAA,CAAYC,YAAY,aAAaC,SAAS,EAAO,aAAW,qCAC/D3B,EAAAgB,cAACY,EAAA,CAAOC,QAAQ,OAAOC,QAASvB,GAA0B,+BAG1DP,EAAAgB,cAACY,GAAOC,QAAQ,OAAOC,QAAStB,GAAwB,6BAGxDR,EAAAgB,cAACY,EAAA,CAAOC,QAAQ,gBAAgBC,QAASrB,GAAyB,gDAKrE,MAAA,CAAIC,UAAU,sGACbV,EAAAgB,cAAC,IAAA,CAAEN,UAAU,0CACXV,EAAAgB,cAAC,OAAA,CAAK,cAAY,QACfD,EAAe,IAAEX,kBAEpBJ,EAAAgB,cAAC,OAAA,CAAKN,UAAU,UAAU,YAAU,UAAS,WAClCK,EAAe,OAAKX,mCAGhC2B,EAAA,oBACC/B,EAAAgB,cAACgB,EAAA,CAAeC,SAAO,kBACrBjC,EAAAgB,cAACY,EAAA,CACCC,QAAQ,OACRV,KAAK,OACLe,UAAWrB,EACXiB,QAASzB,EACT,aAAW;eAEXL,EAAAgB,cAACmB,EAAA,CAAU,cAAY,OAAOf,OAAO,0BAGzCpB,EAAAgB,cAACoB,GAAeC,KAAK,SAASC,QAAQ,mBAAmB5B,UAAU,mBAAkB,gCAIvFV,EAAAgB,cAACe,sBACC/B,EAAAgB,cAACgB,EAAA,CAAeC,SAAO,kBACrBjC,EAAAgB,cAACY,EAAA,CACCC,QAAQ,OACRV,KAAK,OACLe,UAAWpB,EACXgB,QAASxB,EACT,aAAW;eAEXN,EAAAgB,cAACuB,EAAA,CAAQ,cAAY,OAAOnB,OAAO,0BAGvCpB,EAAAgB,cAACoB,EAAA,CAAeC,KAAK,MAAMC,QAAQ,mBAAmB5B,UAAU,mBAAkB,sBAO5F"}