@brainfish-ai/components 0.24.4 → 0.24.7

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 (59) hide show
  1. package/dist/esm/chunks/{ChatSearch.DvpPvB5F.js → ChatSearch.s2AQdrx5.js} +7 -7
  2. package/dist/esm/chunks/{ChatSearch.DvpPvB5F.js.map → ChatSearch.s2AQdrx5.js.map} +1 -1
  3. package/dist/esm/chunks/{FormattedMessage.Br7XTLD2.js → FormattedMessage.CRbM-hF6.js} +2 -2
  4. package/dist/esm/chunks/{FormattedMessage.Br7XTLD2.js.map → FormattedMessage.CRbM-hF6.js.map} +1 -1
  5. package/dist/esm/chunks/button.DQL6gCAt.js +48 -0
  6. package/dist/esm/chunks/button.DQL6gCAt.js.map +1 -0
  7. package/dist/esm/chunks/{combobox.DNYCWyub.js → combobox.BpGnNZ6a.js} +2 -2
  8. package/dist/esm/chunks/{combobox.DNYCWyub.js.map → combobox.BpGnNZ6a.js.map} +1 -1
  9. package/dist/esm/chunks/{date-picker.sQXSlqNZ.js → date-picker._cBTpdEK.js} +2 -2
  10. package/dist/esm/chunks/{date-picker.sQXSlqNZ.js.map → date-picker._cBTpdEK.js.map} +1 -1
  11. package/dist/esm/chunks/{feedback.D139-1Wr.js → feedback.W2OzN-5r.js} +2 -2
  12. package/dist/esm/chunks/{feedback.D139-1Wr.js.map → feedback.W2OzN-5r.js.map} +1 -1
  13. package/dist/esm/chunks/{file-upload-status.Vw0Zxmir.js → file-upload-status.DP2iuttI.js} +2 -2
  14. package/dist/esm/chunks/{file-upload-status.Vw0Zxmir.js.map → file-upload-status.DP2iuttI.js.map} +1 -1
  15. package/dist/esm/chunks/{filters.Be4KPvMA.js → filters.LuyM6z8R.js} +2 -2
  16. package/dist/esm/chunks/{filters.Be4KPvMA.js.map → filters.LuyM6z8R.js.map} +1 -1
  17. package/dist/esm/chunks/{font-picker.DX1mER3H.js → font-picker.CtGg-OWt.js} +2 -2
  18. package/dist/esm/chunks/{font-picker.DX1mER3H.js.map → font-picker.CtGg-OWt.js.map} +1 -1
  19. package/dist/esm/chunks/{header-nav.BxK3FN1j.js → header-nav.D8xGU5LA.js} +10 -3
  20. package/dist/esm/chunks/header-nav.D8xGU5LA.js.map +1 -0
  21. package/dist/esm/chunks/{layout.Dx6MGe6T.js → layout.CYR502iz.js} +4 -4
  22. package/dist/esm/chunks/{layout.Dx6MGe6T.js.map → layout.CYR502iz.js.map} +1 -1
  23. package/dist/esm/chunks/{sidebar.zsMK3xuM.js → sidebar.CYhTQT2L.js} +2 -2
  24. package/dist/esm/chunks/{sidebar.zsMK3xuM.js.map → sidebar.CYhTQT2L.js.map} +1 -1
  25. package/dist/esm/chunks/{two-level-combobox.DsWPDcI6.js → two-level-combobox.BXs2z9u5.js} +2 -2
  26. package/dist/esm/chunks/{two-level-combobox.DsWPDcI6.js.map → two-level-combobox.BXs2z9u5.js.map} +1 -1
  27. package/dist/esm/components/article-suggestions-banner.js +1 -1
  28. package/dist/esm/components/chat-search.js +1 -1
  29. package/dist/esm/components/combobox.js +1 -1
  30. package/dist/esm/components/convos.js +2 -2
  31. package/dist/esm/components/date-picker.js +1 -1
  32. package/dist/esm/components/feedback.js +1 -1
  33. package/dist/esm/components/file-upload.js +1 -1
  34. package/dist/esm/components/filter.js +1 -1
  35. package/dist/esm/components/font-picker.js +1 -1
  36. package/dist/esm/components/markdown.js +1 -1
  37. package/dist/esm/components/two-level-combobox.js +1 -1
  38. package/dist/esm/components/ui/alert-dialog.js +1 -1
  39. package/dist/esm/components/ui/button.js +5 -45
  40. package/dist/esm/components/ui/button.js.map +1 -1
  41. package/dist/esm/components/ui/select.js +3 -17
  42. package/dist/esm/components/ui/select.js.map +1 -1
  43. package/dist/esm/components/ui/sheet.js +1 -1
  44. package/dist/esm/global.css +1 -1
  45. package/dist/esm/index.js +14 -14
  46. package/dist/esm/layouts/full-layout.js +2 -2
  47. package/dist/esm/layouts/header-nav.js +1 -1
  48. package/dist/esm/layouts/sidebar.js +1 -1
  49. package/dist/esm/scenes/knowledge-review.js +24 -36
  50. package/dist/esm/scenes/knowledge-review.js.map +1 -1
  51. package/dist/esm/tailwind.preset.js +9 -1
  52. package/dist/esm/tailwind.preset.js.map +1 -1
  53. package/dist/full-layout.d.ts +1 -0
  54. package/dist/header-nav.d.ts +1 -0
  55. package/dist/index.d.ts +1 -0
  56. package/dist/stats.html +1 -1
  57. package/package.json +1 -1
  58. package/tailwind.preset.ts +8 -0
  59. package/dist/esm/chunks/header-nav.BxK3FN1j.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brainfish-ai/components",
3
- "version": "0.24.4",
3
+ "version": "0.24.7",
4
4
  "description": "Brainfish Components",
5
5
  "license": "MIT",
6
6
  "main": "./dist/esm/index.js",
@@ -146,8 +146,16 @@ const preset: Partial<Config> = {
146
146
  'gradient-yellowfin':
147
147
  'linear-gradient(168deg, rgb(24, 104, 219) 7.35%, rgb(53, 125, 232) 23.69%, rgb(126, 226, 184) 61.42%, rgb(179, 238, 43) 82.59%)',
148
148
  },
149
+ zIndex: {
150
+ 'above-modal': '9999',
151
+ },
149
152
  boxShadow: {
150
153
  md: '2px 4px 12px 0 rgba(0,0,0,0.14)',
154
+ 'md-invert': '2px 4px 12px 0 rgba(255,255,255,0.14)',
155
+ brand: '2px 2px 0 0 #0A0A0D',
156
+ 'brand-active': 'inset 2px 2px 0 0 #262626',
157
+ 'brand-dark': '2px 2px 0 0 #FFF',
158
+ 'brand-dark-active': 'inset 2px 2px 0 0 #FFF',
151
159
  },
152
160
  gridTemplateColumns: {
153
161
  12: 'repeat(12, minmax(0, 1fr))',
@@ -1 +0,0 @@
1
- {"version":3,"file":"header-nav.BxK3FN1j.js","sources":["../../../src/layouts/header-nav/account-dropdown.tsx","../../../src/layouts/header-nav/header-nav.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Copy, Crown } from '@phosphor-icons/react';\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from '../../components/ui/dropdown-menu';\nimport { Avatar, AvatarFallback, AvatarImage, AvatarBadge } from '../../components/ui/avatar';\nimport { Button } from '../../components/ui/button';\n\nimport { cn } from '@/lib/utils';\n\nexport type AccountDropdownActionItem = {\n type?: 'action';\n id: string;\n label: string;\n icon?: React.ReactNode;\n onClick: () => void;\n /** Second line (e.g. \"ID: xyz\"); copy button shown when copyValue is set. */\n secondaryLabel?: React.ReactNode;\n copyValue?: string;\n onCopy?: (value: string) => void;\n /** Keyboard shortcut hint (e.g. \"⌘K\") shown on the right. */\n shortcut?: string;\n};\n\nexport type AccountDropdownSubOption = {\n id: string;\n label: string;\n icon?: React.ReactNode;\n /** Required for radio mode. */\n value?: string;\n /** Used in plain (non-radio) mode. */\n onClick?: () => void;\n /** Keyboard shortcut hint (e.g. \"⌘K\") shown on the right. */\n shortcut?: string;\n};\n\n/** Sub-option with a required `value`, used in radio-mode submenus. */\nexport type AccountDropdownRadioSubOption = Omit<AccountDropdownSubOption, 'value' | 'onClick'> & {\n value: string;\n};\n\ntype AccountDropdownSubmenuBase = {\n type: 'submenu';\n id: string;\n label: string;\n icon?: React.ReactNode;\n /** Second line on the submenu trigger (e.g. \"ID: xyz\"); copy button when copyValue is set. */\n secondaryLabel?: React.ReactNode;\n copyValue?: string;\n onCopy?: (value: string) => void;\n};\n\nexport type AccountDropdownSubmenuItem = AccountDropdownSubmenuBase &\n (\n | {\n /** The currently selected value. When provided with onValueChange, renders items as a radio group with selection indicators. */\n value: string;\n onValueChange: (value: string) => void;\n items: AccountDropdownRadioSubOption[];\n }\n | {\n value?: never;\n onValueChange?: never;\n items: AccountDropdownSubOption[];\n }\n );\n\nexport type AccountDropdownItem = AccountDropdownActionItem | AccountDropdownSubmenuItem;\n\nexport type AccountDropdownTeam = {\n id: string;\n name: string;\n isCurrent: boolean;\n logoUrl?: string;\n};\n\nexport interface AccountDropdownProps extends React.ComponentPropsWithoutRef<typeof DropdownMenu> {\n accountPhoto: string;\n accountName: string;\n /** Pass a flat array for a single group, or an array of arrays for multiple groups separated by dividers. */\n accountDropdownItems: AccountDropdownItem[] | AccountDropdownItem[][];\n teams: AccountDropdownTeam[];\n /** Side the dropdown opens on relative to the trigger. Defaults to 'bottom'. */\n side?: React.ComponentPropsWithoutRef<typeof DropdownMenuContent>['side'];\n /** Alignment of the dropdown relative to the trigger. Defaults to 'end'. */\n align?: React.ComponentPropsWithoutRef<typeof DropdownMenuContent>['align'];\n isSuperAdmin?: boolean;\n}\n\nexport function AccountDropdown({\n accountPhoto,\n accountName,\n accountDropdownItems,\n teams,\n side = 'bottom',\n align = 'end',\n isSuperAdmin = false,\n ...props\n}: AccountDropdownProps) {\n const showTeamName = teams?.length > 1 || isSuperAdmin;\n const currentTeamName = (showTeamName && teams?.find((el) => el.isCurrent)?.name) || '';\n const initial = accountName[0];\n\n const groups: AccountDropdownItem[][] = Array.isArray(accountDropdownItems[0])\n ? (accountDropdownItems as AccountDropdownItem[][])\n : [accountDropdownItems as AccountDropdownItem[]];\n\n const handleCopy = React.useCallback((value: string, onCopy?: (value: string) => void) => {\n return (e: React.MouseEvent) => {\n e.stopPropagation();\n if (onCopy) onCopy(value);\n else navigator.clipboard.writeText(value);\n };\n }, []);\n\n const renderCopyRow = (\n secondaryLabel: React.ReactNode,\n copyValue: string | undefined,\n onCopy?: (value: string) => void,\n ) =>\n secondaryLabel && (\n <div className=\"flex w-full items-center gap-1 text-xs text-subtlest ml-7\">\n {secondaryLabel}\n {copyValue != null && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-4 shrink-0 p-0 [&>svg]:!size-3\"\n onClick={handleCopy(copyValue, onCopy)}\n aria-label=\"Copy ID\"\n >\n <Copy className=\"size-3\" />\n </Button>\n )}\n </div>\n );\n\n return (\n <DropdownMenu {...props}>\n <DropdownMenuTrigger asChild>\n <Button\n size=\"default\"\n variant=\"ghost\"\n className=\"rounded-full p-[1px] border border-dark-300 relative\"\n aria-label=\"Toggle account dropdown\"\n >\n <Avatar>\n <AvatarImage\n src={accountPhoto}\n alt={`${accountName}'s account`}\n className={cn(\n 'block rounded-full border border-background',\n isSuperAdmin && 'border-2 border-solid border-red-700 inset-1',\n )}\n />\n <AvatarFallback>{initial}</AvatarFallback>\n {isSuperAdmin && (\n <AvatarBadge className=\"bg-red-700 text-white\">\n <Crown />\n </AvatarBadge>\n )}\n </Avatar>\n {showTeamName && <span className=\"text-xs text-default font-semibold pr-1\">{currentTeamName}</span>}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n side={side}\n align={align}\n className=\"border-none shadow-[2px_4px_12px_0px_rgba(0,0,0,0.14)] dark:shadow-[2px_4px_12px_0px_rgba(255,255,255,0.14)]\"\n >\n {groups.map((group, groupIndex) => (\n <React.Fragment key={groupIndex}>\n {groupIndex > 0 && <DropdownMenuSeparator />}\n <DropdownMenuGroup>\n {group.map((item) =>\n item.type === 'submenu' ? (\n <DropdownMenuSub key={item.id}>\n <DropdownMenuSubTrigger\n secondaryRow={renderCopyRow(item.secondaryLabel, item.copyValue, item.onCopy)}\n >\n {item.icon}\n {item.label}\n </DropdownMenuSubTrigger>\n <DropdownMenuPortal>\n <DropdownMenuSubContent className=\"border-none shadow-[2px_4px_12px_0px_rgba(0,0,0,0.14)] dark:shadow-[2px_4px_12px_0px_rgba(255,255,255,0.14)]\">\n {item.value != null && item.onValueChange ? (\n <DropdownMenuRadioGroup value={item.value} onValueChange={item.onValueChange}>\n {item.items.map((option) => (\n <DropdownMenuRadioItem key={option.id} value={option.value}>\n {option.icon}\n {option.label}\n {option.shortcut != null && (\n <DropdownMenuShortcut>{option.shortcut}</DropdownMenuShortcut>\n )}\n </DropdownMenuRadioItem>\n ))}\n </DropdownMenuRadioGroup>\n ) : (\n item.items.map((option) => (\n <DropdownMenuItem key={option.id} onClick={option.onClick}>\n {option.icon}\n {option.label}\n {option.shortcut != null && (\n <DropdownMenuShortcut>{option.shortcut}</DropdownMenuShortcut>\n )}\n </DropdownMenuItem>\n ))\n )}\n </DropdownMenuSubContent>\n </DropdownMenuPortal>\n </DropdownMenuSub>\n ) : (\n <DropdownMenuItem\n key={item.id}\n onClick={item.onClick}\n secondaryRow={renderCopyRow(item.secondaryLabel, item.copyValue, item.onCopy)}\n >\n {item.icon}\n {item.label}\n {item.shortcut != null && <DropdownMenuShortcut>{item.shortcut}</DropdownMenuShortcut>}\n </DropdownMenuItem>\n ),\n )}\n </DropdownMenuGroup>\n </React.Fragment>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n","import * as React from 'react';\nimport { Question, SidebarSimple, Lightning, Sparkle } from '@phosphor-icons/react';\n\nimport { Logo } from '../../components/logo';\nimport { Button } from '../../components/ui/button';\nimport { AccountDropdown, AccountDropdownProps } from './account-dropdown';\n\nimport { cn } from '@/lib/utils';\nimport { useBooleanFlagValue } from '@/lib/feature-flags';\n\ninterface HeaderNavProps extends React.ComponentPropsWithoutRef<'header'>, Omit<AccountDropdownProps, 'dir'> {\n isSideNavOpen?: boolean;\n onSideNavigationToggle: () => void;\n onHelpClick: () => void;\n onBrainfishNativeClick: () => void;\n onLogoNav: () => void;\n isHomePath?: boolean;\n showSuggestionAction?: boolean;\n suggestionAction?: React.ReactNode;\n onSuggestionActionClick?: () => void;\n showSidebarToggle?: boolean;\n isSuperAdmin?: boolean;\n /** Ref for the sidebar toggle button; used by layout to move focus here when sidebar is collapsed. */\n sidebarToggleRef?: React.Ref<HTMLButtonElement>;\n}\n\nexport const HEADER_NAV_HEIGHT = 60;\n\nexport const HeaderNav = React.forwardRef<HTMLElement, HeaderNavProps>(function HeaderNav(\n {\n className,\n isSideNavOpen = false,\n onSideNavigationToggle,\n onHelpClick,\n onBrainfishNativeClick,\n accountName,\n accountPhoto,\n accountDropdownItems,\n teams,\n side,\n align,\n showSuggestionAction,\n suggestionAction,\n onSuggestionActionClick,\n onLogoNav,\n isHomePath = false,\n showSidebarToggle = true,\n sidebarToggleRef,\n isSuperAdmin,\n ...props\n },\n ref,\n) {\n const hasSuggestionAction = showSuggestionAction && !!suggestionAction && !!onSuggestionActionClick;\n const brainfishNativeEnabled = useBooleanFlagValue('platform.brainfish-native.enabled', false);\n\n return (\n <header ref={ref} {...props} className={cn('px-4 py-3 relative', className)}>\n <nav aria-label=\"Account navigation\" className=\"flex justify-between items-center\">\n <div className=\"flex items-center gap-2\">\n <a\n href=\"/\"\n onClick={(e) => {\n const isPlainLeftClick = e.button === 0 && !e.metaKey && !e.ctrlKey && !e.shiftKey && !e.altKey;\n\n if (isPlainLeftClick) {\n e.preventDefault();\n onLogoNav();\n }\n }}\n aria-current={isHomePath ? 'page' : undefined}\n >\n <Logo\n variant=\"full\"\n color={isHomePath ? 'fill' : 'outline'}\n width={130}\n height={20}\n className=\"hidden md:block\"\n />\n <Logo\n variant=\"mark\"\n color={isHomePath ? 'fill' : 'outline'}\n width={37}\n height={20}\n className=\"block md:hidden\"\n />\n </a>\n {showSidebarToggle && (\n <Button\n ref={sidebarToggleRef}\n size=\"icon\"\n variant=\"ghost\"\n aria-label=\"Toggle side navigation\"\n className=\"[&_svg]:size-6\"\n onClick={onSideNavigationToggle}\n >\n <SidebarSimple aria-hidden=\"true\" weight={isSideNavOpen ? 'fill' : 'regular'} />\n </Button>\n )}\n </div>\n <div className=\"flex items-center gap-4\">\n {hasSuggestionAction && (\n <Button variant=\"suggestion\" onClick={onSuggestionActionClick}>\n <Lightning weight=\"fill\" aria-hidden=\"true\" /> {suggestionAction}\n </Button>\n )}\n <Button size=\"icon\" variant=\"ghost\" aria-label=\"Open help\" className=\"[&_svg]:size-6\" onClick={onHelpClick}>\n <Question aria-hidden=\"true\" />\n </Button>\n {brainfishNativeEnabled && (\n <Button\n size=\"icon\"\n aria-label=\"Open Brainfish Native\"\n className=\"[&_svg]:size-4 size-6 rounded-3xl bg-yellowfin-gradient hover:bg-yellowfin-gradient-reverse focus-visible:bg-yellowfin-gradient-reverse\"\n style={\n {\n cornerShape: 'squircle',\n } as React.CSSProperties\n }\n onClick={onBrainfishNativeClick}\n >\n <span className=\"relative\">\n <Sparkle aria-hidden=\"true\" weight=\"fill\" color=\"white\" className=\"relative z-10\" />\n <Sparkle\n aria-hidden=\"true\"\n weight=\"fill\"\n className=\"text-dark-800 opacity-20 absolute z-0 left-[1px] top-[1px]\"\n />\n </span>\n </Button>\n )}\n <AccountDropdown\n accountName={accountName}\n accountPhoto={accountPhoto}\n accountDropdownItems={accountDropdownItems}\n teams={teams}\n side={side}\n align={align}\n isSuperAdmin={isSuperAdmin}\n />\n </div>\n </nav>\n </header>\n );\n});\n"],"names":["HeaderNav"],"mappings":"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"}