@brainfish-ai/components 0.6.5-alpha.3 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +94 -7
- package/dist/button.d.ts +16 -0
- package/dist/card.d.ts +17 -0
- package/dist/chat-search.d.ts +404 -0
- package/dist/collapsible.d.ts +10 -0
- package/dist/combobox.d.ts +18 -0
- package/dist/command.d.ts +90 -0
- package/dist/components/chat-search.d.ts +2 -0
- package/dist/components/combobox.d.ts +2 -0
- package/dist/components/date-picker.d.ts +2 -0
- package/dist/components/feedback.d.ts +2 -0
- package/dist/components/filter.d.ts +2 -0
- package/dist/components/generating-star.d.ts +6 -0
- package/dist/components/markdown.d.ts +2 -0
- package/dist/components/select.d.ts +2 -0
- package/dist/components/ui/button.d.ts +11 -0
- package/dist/components/ui/card.d.ts +9 -0
- package/dist/components/ui/collapsible.d.ts +6 -0
- package/dist/components/ui/command.d.ts +80 -0
- package/dist/components/ui/dialog.d.ts +19 -0
- package/dist/components/ui/dropdown-menu.d.ts +27 -0
- package/dist/components/ui/input.d.ts +3 -0
- package/dist/components/ui/label.d.ts +5 -0
- package/dist/components/ui/popover.d.ts +7 -0
- package/dist/components/ui/scroll-area.d.ts +5 -0
- package/dist/components/ui/switch.d.ts +4 -0
- package/dist/components/ui/textarea.d.ts +3 -0
- package/dist/components/ui/tooltip.d.ts +13 -0
- package/dist/date-picker.d.ts +12 -0
- package/dist/dialog.d.ts +30 -0
- package/dist/dropdown-menu.d.ts +43 -0
- package/dist/esm/ChatSearch.css +1 -0
- package/dist/esm/chunks/ChatSearch.BD2RqFhC.js +5855 -0
- package/dist/esm/chunks/ChatSearch.BD2RqFhC.js.map +1 -0
- package/dist/esm/chunks/FormattedMessage.DPRps9mh.js +39493 -0
- package/dist/esm/chunks/FormattedMessage.DPRps9mh.js.map +1 -0
- package/dist/esm/chunks/combobox.D30-HM1I.js +65 -0
- package/dist/esm/chunks/combobox.D30-HM1I.js.map +1 -0
- package/dist/esm/chunks/date-picker.Ca8jXimG.js +46 -0
- package/dist/esm/chunks/date-picker.Ca8jXimG.js.map +1 -0
- package/dist/esm/chunks/feedback.NWn6_mYe.js +209 -0
- package/dist/esm/chunks/feedback.NWn6_mYe.js.map +1 -0
- package/dist/esm/chunks/filters.Dy3yDv4K.js +264 -0
- package/dist/esm/chunks/filters.Dy3yDv4K.js.map +1 -0
- package/dist/esm/chunks/generating-star.C6eGHpse.js +106 -0
- package/dist/esm/chunks/generating-star.C6eGHpse.js.map +1 -0
- package/dist/esm/chunks/simpleSelect.BiVUOs29.js +97 -0
- package/dist/esm/chunks/simpleSelect.BiVUOs29.js.map +1 -0
- package/dist/esm/chunks/utils.DmKr1Ojo.js +54 -0
- package/dist/esm/chunks/utils.DmKr1Ojo.js.map +1 -0
- package/dist/esm/components/chat-search.js +2 -0
- package/dist/esm/components/chat-search.js.map +1 -0
- package/dist/esm/components/combobox.js +2 -0
- package/dist/esm/components/combobox.js.map +1 -0
- package/dist/esm/components/date-picker.js +2 -0
- package/dist/esm/components/date-picker.js.map +1 -0
- package/dist/esm/components/feedback.js +2 -0
- package/dist/esm/components/feedback.js.map +1 -0
- package/dist/esm/components/filter.js +2 -0
- package/dist/esm/components/filter.js.map +1 -0
- package/dist/esm/components/generating-star.js +2 -0
- package/dist/esm/components/generating-star.js.map +1 -0
- package/dist/esm/components/markdown.js +2 -0
- package/dist/esm/components/markdown.js.map +1 -0
- package/dist/esm/components/select.js +2 -0
- package/dist/esm/components/select.js.map +1 -0
- package/dist/esm/components/ui/button.js +166 -0
- package/dist/esm/components/ui/button.js.map +1 -0
- package/dist/esm/components/ui/card.js +51 -0
- package/dist/esm/components/ui/card.js.map +1 -0
- package/dist/esm/components/ui/collapsible.js +34 -0
- package/dist/esm/components/ui/collapsible.js.map +1 -0
- package/dist/esm/components/ui/command.js +103 -0
- package/dist/esm/components/ui/command.js.map +1 -0
- package/dist/esm/components/ui/dialog.js +87 -0
- package/dist/esm/components/ui/dialog.js.map +1 -0
- package/dist/esm/components/ui/dropdown-menu.js +132 -0
- package/dist/esm/components/ui/dropdown-menu.js.map +1 -0
- package/dist/esm/components/ui/input.js +23 -0
- package/dist/esm/components/ui/input.js.map +1 -0
- package/dist/esm/components/ui/label.js +20 -0
- package/dist/esm/components/ui/label.js.map +1 -0
- package/dist/esm/components/ui/popover.js +24 -0
- package/dist/esm/components/ui/popover.js.map +1 -0
- package/dist/esm/components/ui/scroll-area.js +34 -0
- package/dist/esm/components/ui/scroll-area.js.map +1 -0
- package/dist/esm/components/ui/switch.js +27 -0
- package/dist/esm/components/ui/switch.js.map +1 -0
- package/dist/esm/components/ui/textarea.js +20 -0
- package/dist/esm/components/ui/textarea.js.map +1 -0
- package/dist/esm/components/ui/tooltip.js +34 -0
- package/dist/esm/components/ui/tooltip.js.map +1 -0
- package/dist/esm/date-picker.css +1 -0
- package/dist/esm/index.css +1 -4
- package/dist/esm/index.js +176 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/feedback.d.ts +21 -0
- package/dist/filter.d.ts +76 -0
- package/dist/generating-star.d.ts +10 -0
- package/dist/index.d.ts +919 -810
- package/dist/input.d.ts +5 -0
- package/dist/label.d.ts +8 -0
- package/dist/markdown.d.ts +54 -0
- package/dist/popover.d.ts +12 -0
- package/dist/scroll-area.d.ts +8 -0
- package/dist/select.d.ts +20 -0
- package/dist/stats.html +4949 -0
- package/dist/switch.d.ts +6 -0
- package/dist/textarea.d.ts +5 -0
- package/dist/tooltip.d.ts +18 -0
- package/package.json +20 -16
- package/dist/esm/index.css.map +0 -1
- package/stats.html +0 -4949
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters.Dy3yDv4K.js","sources":["../../../src/components/filter/filter.tsx","../../../src/components/filter/filters.tsx"],"sourcesContent":["import React, { useState, useEffect, forwardRef, useRef } from 'react';\nimport { Check, XCircle } from '@phosphor-icons/react';\n\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\n\n// Types\nexport interface FilterOption {\n id: string;\n label: string;\n}\n\nexport enum Operator {\n IS = 'is',\n IS_NOT = 'is not',\n CONTAINS = 'contains',\n DOES_NOT_CONTAIN = 'does not contain',\n STARTS_WITH = 'starts with',\n}\n\nexport interface FilterValue {\n id: string | number;\n source?: string;\n operator?: Operator;\n value?: string;\n}\n\n/**\n * Filter rules for each source\n * How this works:\n * - You can define the rules for each source\n * - The rules are used to determine the available operators and value type\n * - The input type is used to determine the type of input displayed in when the dropdown is opened\n * - The getValueOptions function is used to determine the available options for the value\n *\n * @example\n * {\n * 'sourceId': {\n * operators: [\n * { id: 'is', label: 'is' },\n * { id: 'is not', label: 'is not' },\n * ],\n * inputType: 'dropdown' | 'custom',\n * getValueOptions?: () => FilterOption[],\n * },\n * }\n */\nexport interface FilterRules {\n [sourceId: string]: {\n operators: FilterOption[];\n inputType: 'dropdown' | 'custom';\n getValueOptions?: () => FilterOption[];\n };\n}\n\ninterface FilterProps {\n filter: FilterValue;\n sourceOptions: FilterOption[];\n rules: FilterRules;\n onSourceChange?: (sourceId: string) => void;\n onRemoveFilter: (id: string | number) => void;\n onFilterChange: (filter: FilterValue) => void;\n selectPlaceholder?: string;\n customValuePlaceholder?: string;\n customValueButtonLabel?: string;\n sourceFirstMessage?: string;\n}\n\nconst Filter = forwardRef<HTMLDivElement, FilterProps>(\n (\n {\n filter,\n sourceOptions,\n rules,\n onSourceChange,\n onRemoveFilter,\n onFilterChange,\n selectPlaceholder = 'Select a value',\n customValuePlaceholder = 'Enter custom value',\n customValueButtonLabel = 'Done',\n sourceFirstMessage = 'Please select a source first',\n }: FilterProps,\n ref,\n ) => {\n // State\n const [internalFilter, setInternalFilter] = useState<FilterValue>({\n id: filter.id,\n source: filter.source,\n operator: filter.operator || Operator.IS,\n value: filter.value,\n });\n const [inputValue, setInputValue] = useState('');\n const [openDropdownType, setOpenDropdownType] = useState<'source' | 'operator' | 'value' | null>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Get current rules for selected source\n const currentRules = internalFilter.source ? rules[internalFilter.source] : undefined;\n const operatorOptions = currentRules?.operators || [];\n let inputType = currentRules?.inputType || 'dropdown';\n if (internalFilter.operator === Operator.CONTAINS || internalFilter.operator === Operator.DOES_NOT_CONTAIN) {\n inputType = 'custom';\n }\n const valueOptions = currentRules?.getValueOptions ? currentRules.getValueOptions() : [];\n\n // Auto-focus input when dropdown opens and custom input is needed\n useEffect(() => {\n if (openDropdownType === 'value' && inputType === 'custom') {\n const timeoutId = setTimeout(() => inputRef.current?.focus(), 50);\n\n return () => clearTimeout(timeoutId);\n }\n\n return undefined;\n }, [openDropdownType, inputType]);\n\n // Sync with external state\n useEffect(() => {\n setInternalFilter({\n id: filter.id,\n source: filter.source,\n operator: filter.operator || Operator.IS,\n value: filter.value,\n });\n }, [filter]);\n\n // Handle field updates\n const updateFilterField = (field: keyof FilterValue, value: string) => {\n const newFilter: FilterValue = { ...internalFilter, [field]: value };\n\n // Special handling for source changes\n if (field === 'source') {\n const sourceRules = rules[value];\n newFilter.operator = sourceRules?.operators[0]?.id as Operator;\n // Do NOT auto-select the first value option; require explicit user selection\n newFilter.value = '';\n }\n // If operator changes, also clear value if inputType is dropdown\n if (field === 'operator') {\n if (internalFilter.source) {\n const sourceRules = rules[internalFilter.source];\n if (sourceRules?.inputType === 'dropdown') {\n newFilter.value = '';\n }\n }\n }\n\n setInternalFilter(newFilter);\n\n // Trigger onChange if filter is complete\n const isComplete = newFilter.source && newFilter.operator && newFilter.value?.trim();\n if (isComplete) onFilterChange(newFilter);\n\n setOpenDropdownType(null);\n };\n\n // Handle custom value submission\n const handleCustomValueSubmit = () => {\n if (inputValue.trim()) {\n const newFilter = { ...internalFilter, value: inputValue.trim() };\n setInternalFilter(newFilter);\n setInputValue('');\n setOpenDropdownType(null);\n if (newFilter.source && newFilter.operator && newFilter.value) {\n onFilterChange(newFilter);\n }\n }\n };\n\n // Tab trap handlers\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement | HTMLButtonElement>, isInput: boolean) => {\n if (e.key === 'Escape') {\n setOpenDropdownType(null);\n\n return;\n }\n if (e.key === 'Tab') {\n if (isInput && !e.shiftKey) {\n e.preventDefault();\n const button = document.querySelector('[data-custom-submit-button]') as HTMLButtonElement;\n button?.focus();\n } else if (!isInput) {\n e.preventDefault();\n inputRef.current?.focus();\n }\n }\n };\n\n return (\n <div className=\"inline-flex items-center rounded-full border border-foreground h-8 overflow-visible\" ref={ref}>\n {/* Source Dropdown */}\n <DropdownMenu\n open={openDropdownType === 'source'}\n onOpenChange={(open) => setOpenDropdownType(open ? 'source' : null)}\n modal={false}\n >\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n className=\"flex items-center px-2 py-1 text-sm font-bold border-r border-[#a3a3a3] hover:bg-black/5 text-foreground rounded-l-full\"\n >\n {sourceOptions.find((opt) => opt.id === internalFilter.source)?.label ||\n sourceOptions[0]?.label ||\n selectPlaceholder}\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"w-48\">\n {sourceOptions.map((option) => (\n <DropdownMenuItem\n key={option.id}\n className=\"flex items-center\"\n onSelect={() => {\n updateFilterField('source', option.id);\n onSourceChange?.(option.id);\n }}\n >\n {option.id === internalFilter.source && <Check size={14} className=\"mr-2\" />}\n {option.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n\n {/* Operator Dropdown */}\n <DropdownMenu\n open={openDropdownType === 'operator'}\n onOpenChange={(open) => setOpenDropdownType(open ? 'operator' : null)}\n modal={false}\n >\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n className=\"flex items-center px-2 py-1 text-sm border-r border-[#a3a3a3] hover:bg-black/5\"\n >\n {operatorOptions.find((opt) => opt.id === internalFilter.operator)?.label || selectPlaceholder}\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"w-48\">\n {operatorOptions.map((option) => (\n <DropdownMenuItem\n key={option.id}\n className=\"flex items-center\"\n onSelect={() => updateFilterField('operator', option.id)}\n >\n {option.id === internalFilter.operator && <Check size={14} className=\"mr-2\" />}\n {option.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n\n {/* Value Dropdown */}\n <DropdownMenu\n open={openDropdownType === 'value'}\n onOpenChange={(open) => setOpenDropdownType(open ? 'value' : null)}\n modal={false}\n >\n <DropdownMenuTrigger asChild>\n <button type=\"button\" className=\"flex items-center px-2 py-1 text-sm font-bold hover:bg-black/5\">\n {valueOptions.find((opt) => opt.id === internalFilter.value)?.label ||\n internalFilter.value ||\n selectPlaceholder}\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"w-64\">\n {inputType === 'custom' && (\n <form\n className=\"p-3\"\n onSubmit={(e) => {\n e.preventDefault();\n handleCustomValueSubmit();\n }}\n >\n <Input\n ref={inputRef}\n type=\"text\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n placeholder={customValuePlaceholder}\n className=\"mb-2\"\n onKeyDown={(e) => handleKeyDown(e, true)}\n />\n <Button\n type=\"submit\"\n variant=\"dark\"\n className=\"w-full\"\n onKeyDown={(e) => handleKeyDown(e, false)}\n data-custom-submit-button\n >\n {customValueButtonLabel}\n </Button>\n </form>\n )}\n {inputType === 'dropdown' && (\n <>\n {internalFilter.source ? (\n valueOptions.map((option) => (\n <DropdownMenuItem\n key={option.id}\n className=\"flex items-center\"\n onSelect={() => updateFilterField('value', option.id)}\n >\n {option.id === internalFilter.value && <Check size={14} className=\"mr-2\" />}\n {option.label}\n </DropdownMenuItem>\n ))\n ) : (\n <div className=\"p-3 text-sm text-gray-500\">{sourceFirstMessage}</div>\n )}\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n\n {/* Remove button */}\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => {\n setInternalFilter({ id: filter.id });\n setOpenDropdownType(null);\n onRemoveFilter(filter.id);\n }}\n className=\"p-2 hover:bg-black/10 rounded-none rounded-r-full\"\n >\n <XCircle size={16} weight=\"fill\" />\n </Button>\n </div>\n );\n },\n);\n\nFilter.displayName = 'Filter';\n\nexport { Filter };\n","import React, { useState } from 'react';\nimport { Plus } from '@phosphor-icons/react';\nimport { createId } from '@paralleldrive/cuid2';\n\nimport { Filter, FilterOption, FilterRules, FilterValue, Operator } from './filter';\nimport { Button } from '../ui/button';\n\nimport { cn } from '@/lib/utils';\n\ninterface FiltersProps extends React.HTMLAttributes<HTMLDivElement> {\n filters: FilterValue[];\n onFilterChange: (filter: FilterValue) => void;\n onFilterRemove: (filterId: string | number) => void;\n sourceOptions: FilterOption[];\n rules: FilterRules;\n}\n\nconst Filters = ({ filters, onFilterChange, onFilterRemove, sourceOptions, rules, className }: FiltersProps) => {\n const [internalFilters, setInternalFilters] = useState<FilterValue[]>(filters || []);\n\n const handleAddFilter = () => {\n const newFilter = { id: createId(), source: sourceOptions[0]?.id ?? '', operator: Operator.IS, value: '' };\n\n setInternalFilters([...internalFilters, newFilter]);\n };\n\n const handleRemoveFilter = (filter: FilterValue) => {\n setInternalFilters(internalFilters.filter((f) => f.id !== filter.id));\n onFilterRemove(filter.id);\n };\n\n return (\n <fieldset className={cn('flex flex-wrap gap-2', className)}>\n <legend className=\"sr-only\">Filters</legend>\n {internalFilters?.map((filter) => (\n <Filter\n key={filter.id}\n filter={filter}\n sourceOptions={sourceOptions}\n rules={rules}\n onRemoveFilter={() => handleRemoveFilter(filter)}\n onFilterChange={onFilterChange}\n />\n ))}\n <Button\n onClick={handleAddFilter}\n variant=\"ghost\"\n className=\"border border-foreground rounded-full gap-1\"\n size=\"sm\"\n >\n <Plus size={16} />\n Add filter\n </Button>\n </fieldset>\n );\n};\n\nexport { Filters };\n"],"names":["Operator","React"],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import React__default, { useState, useEffect } from 'react';
|
|
2
|
+
import { g as getLuminance, c as cn } from './utils.DmKr1Ojo.js';
|
|
3
|
+
|
|
4
|
+
const useDarkMode = () => {
|
|
5
|
+
const [isDarkMode, setIsDarkMode] = useState(() => document.documentElement.classList.contains("dark"));
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
const observer = new MutationObserver(() => {
|
|
8
|
+
setIsDarkMode(document.documentElement.classList.contains("dark"));
|
|
9
|
+
});
|
|
10
|
+
observer.observe(document.documentElement, {
|
|
11
|
+
attributes: true,
|
|
12
|
+
attributeFilter: ["class"]
|
|
13
|
+
});
|
|
14
|
+
return () => observer.disconnect();
|
|
15
|
+
}, []);
|
|
16
|
+
return isDarkMode;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const useAccessibleColor = (primaryColorVar, primaryForegroundVar) => {
|
|
20
|
+
const [foregroundColor, setForegroundColor] = useState(`rgb(var(${primaryForegroundVar}))`);
|
|
21
|
+
const isDarkMode = useDarkMode();
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
const primaryColor = getComputedStyle(document.documentElement).getPropertyValue(primaryColorVar).trim();
|
|
24
|
+
const rgbMatch = primaryColor.match(/^(\d+)\s+(\d+)\s+(\d+)$/);
|
|
25
|
+
if (rgbMatch) {
|
|
26
|
+
const luminance = getLuminance(rgbMatch.slice(1).join(","));
|
|
27
|
+
if (luminance <= 0.5) {
|
|
28
|
+
setForegroundColor(isDarkMode ? `rgb(var(--bfc-ring))` : `rgb(var(${primaryColorVar}))`);
|
|
29
|
+
} else {
|
|
30
|
+
setForegroundColor(isDarkMode ? `rgb(var(${primaryColorVar}))` : `rgb(var(${primaryForegroundVar}))`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}, [primaryColorVar, primaryForegroundVar, isDarkMode]);
|
|
34
|
+
return foregroundColor;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
const GeneratingStar = ({ loading, className, ...props }) => {
|
|
38
|
+
const strokeColor = useAccessibleColor("--bfc-primary", "--bfc-border");
|
|
39
|
+
return /* @__PURE__ */ React__default.createElement(
|
|
40
|
+
"svg",
|
|
41
|
+
{
|
|
42
|
+
width: "24",
|
|
43
|
+
height: "24",
|
|
44
|
+
viewBox: "0 0 24 24",
|
|
45
|
+
fill: "currentColor",
|
|
46
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
47
|
+
className: cn("min-w-5", className),
|
|
48
|
+
...props
|
|
49
|
+
},
|
|
50
|
+
/* @__PURE__ */ React__default.createElement(
|
|
51
|
+
"path",
|
|
52
|
+
{
|
|
53
|
+
className: loading ? "animate-spin" : "",
|
|
54
|
+
d: "M7.54672 16.0031L2.66234 14.2031C2.51881 14.1498 2.39502 14.0539 2.3076 13.9282C2.22019 13.8025 2.17333 13.6531 2.17333 13.5C2.17333 13.3469 2.22019 13.1975 2.3076 13.0718C2.39502 12.9461 2.51881 12.8501 2.66234 12.7969L7.54672 10.9969C7.64981 10.9589 7.74344 10.899 7.82113 10.8213C7.89882 10.7436 7.95873 10.65 7.99672 10.5469L9.79672 5.66249C9.84999 5.51896 9.94592 5.39517 10.0716 5.30775C10.1973 5.22033 10.3467 5.17348 10.4998 5.17348C10.6529 5.17348 10.8024 5.22033 10.9281 5.30775C11.0538 5.39517 11.1497 5.51896 11.203 5.66249L13.003 10.5469C13.041 10.65 13.1009 10.7436 13.1786 10.8213C13.2562 10.899 13.3499 10.9589 13.453 10.9969L18.3373 12.7969C18.4809 12.8501 18.6047 12.9461 18.6921 13.0718C18.7795 13.1975 18.8264 13.3469 18.8264 13.5C18.8264 13.6531 18.7795 13.8025 18.6921 13.9282C18.6047 14.0539 18.4809 14.1498 18.3373 14.2031L13.453 16.0031C13.3499 16.0411 13.2562 16.101 13.1786 16.1787C13.1009 16.2564 13.041 16.35 13.003 16.4531L11.203 21.3375C11.1497 21.481 11.0538 21.6048 10.9281 21.6922C10.8024 21.7796 10.6529 21.8265 10.4998 21.8265C10.3467 21.8265 10.1973 21.7796 10.0716 21.6922C9.94592 21.6048 9.84999 21.481 9.79672 21.3375L7.99672 16.4531C7.95873 16.35 7.89882 16.2564 7.82113 16.1787C7.74344 16.101 7.64981 16.0411 7.54672 16.0031Z",
|
|
55
|
+
stroke: strokeColor,
|
|
56
|
+
strokeWidth: "1.5",
|
|
57
|
+
strokeLinecap: "round",
|
|
58
|
+
fill: "rgb(var(--bfc-primary))",
|
|
59
|
+
strokeLinejoin: "round"
|
|
60
|
+
}
|
|
61
|
+
),
|
|
62
|
+
/* @__PURE__ */ React__default.createElement(
|
|
63
|
+
"path",
|
|
64
|
+
{
|
|
65
|
+
d: "M18.7497 3.75L14.2497 3.75",
|
|
66
|
+
stroke: "rgb(var(--bfc-primary))",
|
|
67
|
+
strokeWidth: "1.5",
|
|
68
|
+
strokeLinecap: "round",
|
|
69
|
+
strokeLinejoin: "round"
|
|
70
|
+
}
|
|
71
|
+
),
|
|
72
|
+
/* @__PURE__ */ React__default.createElement(
|
|
73
|
+
"path",
|
|
74
|
+
{
|
|
75
|
+
d: "M16.4999 6V1.5",
|
|
76
|
+
stroke: "rgb(var(--bfc-primary))",
|
|
77
|
+
strokeWidth: "1.5",
|
|
78
|
+
strokeLinecap: "round",
|
|
79
|
+
strokeLinejoin: "round"
|
|
80
|
+
}
|
|
81
|
+
),
|
|
82
|
+
/* @__PURE__ */ React__default.createElement(
|
|
83
|
+
"path",
|
|
84
|
+
{
|
|
85
|
+
d: "M22.4999 8.25001H19.4999",
|
|
86
|
+
stroke: "rgb(var(--bfc-primary))",
|
|
87
|
+
strokeWidth: "1.5",
|
|
88
|
+
strokeLinecap: "round",
|
|
89
|
+
strokeLinejoin: "round"
|
|
90
|
+
}
|
|
91
|
+
),
|
|
92
|
+
/* @__PURE__ */ React__default.createElement(
|
|
93
|
+
"path",
|
|
94
|
+
{
|
|
95
|
+
d: "M20.9998 9.75002V6.75002",
|
|
96
|
+
stroke: "rgb(var(--bfc-primary))",
|
|
97
|
+
strokeWidth: "1.5",
|
|
98
|
+
strokeLinecap: "round",
|
|
99
|
+
strokeLinejoin: "round"
|
|
100
|
+
}
|
|
101
|
+
)
|
|
102
|
+
);
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
export { GeneratingStar as G };
|
|
106
|
+
//# sourceMappingURL=generating-star.C6eGHpse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generating-star.C6eGHpse.js","sources":["../../../src/components/chat-search/hooks/useDarkMode.ts","../../../src/components/chat-search/hooks/useAccessibleColor.ts","../../../src/components/generating-star/generating-star.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport const useDarkMode = () => {\n const [isDarkMode, setIsDarkMode] = useState(() => document.documentElement.classList.contains('dark'));\n\n useEffect(() => {\n const observer = new MutationObserver(() => {\n setIsDarkMode(document.documentElement.classList.contains('dark'));\n });\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class'],\n });\n\n return () => observer.disconnect();\n }, []);\n\n return isDarkMode;\n};\n","import { useEffect, useState } from 'react';\n\nimport { useDarkMode } from './useDarkMode';\n\nimport { getLuminance } from '@/lib/utils';\n\nexport const useAccessibleColor = (primaryColorVar: string, primaryForegroundVar: string) => {\n const [foregroundColor, setForegroundColor] = useState(`rgb(var(${primaryForegroundVar}))`);\n const isDarkMode = useDarkMode();\n\n useEffect(() => {\n const primaryColor = getComputedStyle(document.documentElement).getPropertyValue(primaryColorVar).trim();\n const rgbMatch = primaryColor.match(/^(\\d+)\\s+(\\d+)\\s+(\\d+)$/);\n\n if (rgbMatch) {\n const luminance = getLuminance(rgbMatch.slice(1).join(','));\n if (luminance <= 0.5) {\n setForegroundColor(isDarkMode ? `rgb(var(--bfc-ring))` : `rgb(var(${primaryColorVar}))`);\n } else {\n setForegroundColor(isDarkMode ? `rgb(var(${primaryColorVar}))` : `rgb(var(${primaryForegroundVar}))`);\n }\n }\n }, [primaryColorVar, primaryForegroundVar, isDarkMode]);\n\n return foregroundColor;\n};\n","import React from 'react';\n\nimport { useAccessibleColor } from '../chat-search/hooks';\n\nimport { cn } from '@/lib/utils';\n\nexport interface GeneratingStarProps extends React.HTMLAttributes<SVGElement> {\n loading: boolean;\n}\n\nconst GeneratingStar = ({ loading, className, ...props }: GeneratingStarProps) => {\n const strokeColor = useAccessibleColor('--bfc-primary', '--bfc-border');\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn('min-w-5', className)}\n {...props}\n >\n <path\n className={loading ? 'animate-spin' : ''}\n d=\"M7.54672 16.0031L2.66234 14.2031C2.51881 14.1498 2.39502 14.0539 2.3076 13.9282C2.22019 13.8025 2.17333 13.6531 2.17333 13.5C2.17333 13.3469 2.22019 13.1975 2.3076 13.0718C2.39502 12.9461 2.51881 12.8501 2.66234 12.7969L7.54672 10.9969C7.64981 10.9589 7.74344 10.899 7.82113 10.8213C7.89882 10.7436 7.95873 10.65 7.99672 10.5469L9.79672 5.66249C9.84999 5.51896 9.94592 5.39517 10.0716 5.30775C10.1973 5.22033 10.3467 5.17348 10.4998 5.17348C10.6529 5.17348 10.8024 5.22033 10.9281 5.30775C11.0538 5.39517 11.1497 5.51896 11.203 5.66249L13.003 10.5469C13.041 10.65 13.1009 10.7436 13.1786 10.8213C13.2562 10.899 13.3499 10.9589 13.453 10.9969L18.3373 12.7969C18.4809 12.8501 18.6047 12.9461 18.6921 13.0718C18.7795 13.1975 18.8264 13.3469 18.8264 13.5C18.8264 13.6531 18.7795 13.8025 18.6921 13.9282C18.6047 14.0539 18.4809 14.1498 18.3373 14.2031L13.453 16.0031C13.3499 16.0411 13.2562 16.101 13.1786 16.1787C13.1009 16.2564 13.041 16.35 13.003 16.4531L11.203 21.3375C11.1497 21.481 11.0538 21.6048 10.9281 21.6922C10.8024 21.7796 10.6529 21.8265 10.4998 21.8265C10.3467 21.8265 10.1973 21.7796 10.0716 21.6922C9.94592 21.6048 9.84999 21.481 9.79672 21.3375L7.99672 16.4531C7.95873 16.35 7.89882 16.2564 7.82113 16.1787C7.74344 16.101 7.64981 16.0411 7.54672 16.0031Z\"\n stroke={strokeColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n fill=\"rgb(var(--bfc-primary))\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M18.7497 3.75L14.2497 3.75\"\n stroke=\"rgb(var(--bfc-primary))\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M16.4999 6V1.5\"\n stroke=\"rgb(var(--bfc-primary))\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M22.4999 8.25001H19.4999\"\n stroke=\"rgb(var(--bfc-primary))\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M20.9998 9.75002V6.75002\"\n stroke=\"rgb(var(--bfc-primary))\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n};\n\nexport default GeneratingStar;\n"],"names":["React"],"mappings":";;;AAEO,MAAM,cAAc,MAAM;AAC/B,EAAM,MAAA,CAAC,UAAY,EAAA,aAAa,CAAI,GAAA,QAAA,CAAS,MAAM,QAAA,CAAS,eAAgB,CAAA,SAAA,CAAU,QAAS,CAAA,MAAM,CAAC,CAAA;AAEtG,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,QAAA,GAAW,IAAI,gBAAA,CAAiB,MAAM;AAC1C,MAAA,aAAA,CAAc,QAAS,CAAA,eAAA,CAAgB,SAAU,CAAA,QAAA,CAAS,MAAM,CAAC,CAAA;AAAA,KAClE,CAAA;AAED,IAAS,QAAA,CAAA,OAAA,CAAQ,SAAS,eAAiB,EAAA;AAAA,MACzC,UAAY,EAAA,IAAA;AAAA,MACZ,eAAA,EAAiB,CAAC,OAAO;AAAA,KAC1B,CAAA;AAED,IAAO,OAAA,MAAM,SAAS,UAAW,EAAA;AAAA,GACnC,EAAG,EAAE,CAAA;AAEL,EAAO,OAAA,UAAA;AACT,CAAA;;ACba,MAAA,kBAAA,GAAqB,CAAC,eAAA,EAAyB,oBAAiC,KAAA;AAC3F,EAAA,MAAM,CAAC,eAAiB,EAAA,kBAAkB,IAAI,QAAS,CAAA,CAAA,QAAA,EAAW,oBAAoB,CAAI,EAAA,CAAA,CAAA;AAC1F,EAAA,MAAM,aAAa,WAAY,EAAA;AAE/B,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,YAAA,GAAe,iBAAiB,QAAS,CAAA,eAAe,EAAE,gBAAiB,CAAA,eAAe,EAAE,IAAK,EAAA;AACvG,IAAM,MAAA,QAAA,GAAW,YAAa,CAAA,KAAA,CAAM,yBAAyB,CAAA;AAE7D,IAAA,IAAI,QAAU,EAAA;AACZ,MAAM,MAAA,SAAA,GAAY,aAAa,QAAS,CAAA,KAAA,CAAM,CAAC,CAAE,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA;AAC1D,MAAA,IAAI,aAAa,GAAK,EAAA;AACpB,QAAA,kBAAA,CAAmB,UAAa,GAAA,CAAA,oBAAA,CAAA,GAAyB,CAAW,QAAA,EAAA,eAAe,CAAI,EAAA,CAAA,CAAA;AAAA,OAClF,MAAA;AACL,QAAA,kBAAA,CAAmB,aAAa,CAAW,QAAA,EAAA,eAAe,CAAO,EAAA,CAAA,GAAA,CAAA,QAAA,EAAW,oBAAoB,CAAI,EAAA,CAAA,CAAA;AAAA;AACtG;AACF,GACC,EAAA,CAAC,eAAiB,EAAA,oBAAA,EAAsB,UAAU,CAAC,CAAA;AAEtD,EAAO,OAAA,eAAA;AACT,CAAA;;ACfA,MAAM,iBAAiB,CAAC,EAAE,SAAS,SAAW,EAAA,GAAG,OAAiC,KAAA;AAChF,EAAM,MAAA,WAAA,GAAc,kBAAmB,CAAA,eAAA,EAAiB,cAAc,CAAA;AAEtE,EACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAM,EAAA,IAAA;AAAA,MACN,MAAO,EAAA,IAAA;AAAA,MACP,OAAQ,EAAA,WAAA;AAAA,MACR,IAAK,EAAA,cAAA;AAAA,MACL,KAAM,EAAA,4BAAA;AAAA,MACN,SAAA,EAAW,EAAG,CAAA,SAAA,EAAW,SAAS,CAAA;AAAA,MACjC,GAAG;AAAA,KAAA;AAAA,oBAEJA,cAAA,CAAA,aAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,UAAU,cAAiB,GAAA,EAAA;AAAA,QACtC,CAAE,EAAA,qvCAAA;AAAA,QACF,MAAQ,EAAA,WAAA;AAAA,QACR,WAAY,EAAA,KAAA;AAAA,QACZ,aAAc,EAAA,OAAA;AAAA,QACd,IAAK,EAAA,yBAAA;AAAA,QACL,cAAe,EAAA;AAAA;AAAA,KACjB;AAAA,oBACAA,cAAA,CAAA,aAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,CAAE,EAAA,4BAAA;AAAA,QACF,MAAO,EAAA,yBAAA;AAAA,QACP,WAAY,EAAA,KAAA;AAAA,QACZ,aAAc,EAAA,OAAA;AAAA,QACd,cAAe,EAAA;AAAA;AAAA,KACjB;AAAA,oBACAA,cAAA,CAAA,aAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,CAAE,EAAA,gBAAA;AAAA,QACF,MAAO,EAAA,yBAAA;AAAA,QACP,WAAY,EAAA,KAAA;AAAA,QACZ,aAAc,EAAA,OAAA;AAAA,QACd,cAAe,EAAA;AAAA;AAAA,KACjB;AAAA,oBACAA,cAAA,CAAA,aAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,CAAE,EAAA,0BAAA;AAAA,QACF,MAAO,EAAA,yBAAA;AAAA,QACP,WAAY,EAAA,KAAA;AAAA,QACZ,aAAc,EAAA,OAAA;AAAA,QACd,cAAe,EAAA;AAAA;AAAA,KACjB;AAAA,oBACAA,cAAA,CAAA,aAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,CAAE,EAAA,0BAAA;AAAA,QACF,MAAO,EAAA,yBAAA;AAAA,QACP,WAAY,EAAA,KAAA;AAAA,QACZ,aAAc,EAAA,OAAA;AAAA,QACd,cAAe,EAAA;AAAA;AAAA;AACjB,GACF;AAEJ;;;;"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { c as cn } from './utils.DmKr1Ojo.js';
|
|
3
|
+
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
4
|
+
import { CaretDown, Check } from '@phosphor-icons/react';
|
|
5
|
+
|
|
6
|
+
const Select = SelectPrimitive.Root;
|
|
7
|
+
const SelectValue = SelectPrimitive.Value;
|
|
8
|
+
const SelectTrigger = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React.createElement(
|
|
9
|
+
SelectPrimitive.Trigger,
|
|
10
|
+
{
|
|
11
|
+
ref,
|
|
12
|
+
className: cn(
|
|
13
|
+
"flex h-9 w-full items-center justify-between rounded border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
|
|
14
|
+
className
|
|
15
|
+
),
|
|
16
|
+
...props
|
|
17
|
+
},
|
|
18
|
+
children,
|
|
19
|
+
/* @__PURE__ */ React.createElement(SelectPrimitive.Icon, { asChild: true }, /* @__PURE__ */ React.createElement(CaretDown, { className: "h-4 w-4 opacity-50" }))
|
|
20
|
+
));
|
|
21
|
+
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
22
|
+
const SelectContent = React.forwardRef(({ className, children, position = "popper", appendToBody, ...props }, ref) => /* @__PURE__ */ React.createElement(SelectPrimitive.Portal, { container: appendToBody ? document.body : void 0 }, /* @__PURE__ */ React.createElement(
|
|
23
|
+
SelectPrimitive.Content,
|
|
24
|
+
{
|
|
25
|
+
ref,
|
|
26
|
+
className: cn(
|
|
27
|
+
"relative z-[9999] min-w-[8rem] overflow-hidden rounded border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
28
|
+
position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
|
|
29
|
+
className
|
|
30
|
+
),
|
|
31
|
+
position,
|
|
32
|
+
...props
|
|
33
|
+
},
|
|
34
|
+
/* @__PURE__ */ React.createElement(
|
|
35
|
+
SelectPrimitive.Viewport,
|
|
36
|
+
{
|
|
37
|
+
className: cn(
|
|
38
|
+
"p-1",
|
|
39
|
+
position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
|
|
40
|
+
)
|
|
41
|
+
},
|
|
42
|
+
children
|
|
43
|
+
)
|
|
44
|
+
)));
|
|
45
|
+
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
46
|
+
const SelectLabel = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(
|
|
47
|
+
SelectPrimitive.Label,
|
|
48
|
+
{
|
|
49
|
+
ref,
|
|
50
|
+
className: cn("px-2 py-1.5 text-sm font-semibold", className),
|
|
51
|
+
...props
|
|
52
|
+
}
|
|
53
|
+
));
|
|
54
|
+
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
55
|
+
const SelectItem = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React.createElement(
|
|
56
|
+
SelectPrimitive.Item,
|
|
57
|
+
{
|
|
58
|
+
ref,
|
|
59
|
+
className: cn(
|
|
60
|
+
"relative flex w-full cursor-default select-none items-center rounded py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
61
|
+
className
|
|
62
|
+
),
|
|
63
|
+
...props
|
|
64
|
+
},
|
|
65
|
+
/* @__PURE__ */ React.createElement("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center" }, /* @__PURE__ */ React.createElement(SelectPrimitive.ItemIndicator, null, /* @__PURE__ */ React.createElement(Check, { className: "h-4 w-4" }))),
|
|
66
|
+
/* @__PURE__ */ React.createElement(SelectPrimitive.ItemText, null, children)
|
|
67
|
+
));
|
|
68
|
+
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
69
|
+
const SelectSeparator = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(
|
|
70
|
+
SelectPrimitive.Separator,
|
|
71
|
+
{
|
|
72
|
+
ref,
|
|
73
|
+
className: cn("-mx-1 my-1 h-px bg-muted", className),
|
|
74
|
+
...props
|
|
75
|
+
}
|
|
76
|
+
));
|
|
77
|
+
SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
|
|
78
|
+
|
|
79
|
+
function SimpleSelect({
|
|
80
|
+
options,
|
|
81
|
+
value,
|
|
82
|
+
onChange,
|
|
83
|
+
placeholder = "Select...",
|
|
84
|
+
disabled = false,
|
|
85
|
+
className,
|
|
86
|
+
appendToBody = false
|
|
87
|
+
}) {
|
|
88
|
+
const handleValueChange = (newValue) => {
|
|
89
|
+
if (onChange) {
|
|
90
|
+
onChange(newValue);
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
return /* @__PURE__ */ React.createElement(Select, { value, onValueChange: handleValueChange, disabled }, /* @__PURE__ */ React.createElement(SelectTrigger, { className: cn("w-full", className) }, /* @__PURE__ */ React.createElement(SelectValue, { placeholder })), /* @__PURE__ */ React.createElement(SelectContent, { appendToBody }, options.map((option) => /* @__PURE__ */ React.createElement(SelectItem, { key: option.value, value: option.value }, option.label))));
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export { SimpleSelect as S };
|
|
97
|
+
//# sourceMappingURL=simpleSelect.BiVUOs29.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simpleSelect.BiVUOs29.js","sources":["../../../src/components/ui/select.tsx","../../../src/components/select/simpleSelect.tsx"],"sourcesContent":["import * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, CaretDown } from \"@phosphor-icons/react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Select = SelectPrimitive.Root\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-9 w-full items-center justify-between rounded border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <CaretDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content> & { appendToBody?: boolean }\n>(({ className, children, position = \"popper\", appendToBody, ...props }, ref) => (\n <SelectPrimitive.Portal container={appendToBody ? document.body : undefined}>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-[9999] min-w-[8rem] overflow-hidden rounded border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"px-2 py-1.5 text-sm font-semibold\", className)}\n {...props}\n />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n}","import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\nimport {\n Select as SelectComponent,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/ui/select';\n\nexport type SelectOption = {\n label: string;\n value: string;\n};\n\nexport interface SimpleSelectProps {\n options: SelectOption[];\n value?: string;\n onChange?: (value: string) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n appendToBody?: boolean;\n}\n\nexport function SimpleSelect({\n options,\n value,\n onChange,\n placeholder = 'Select...',\n disabled = false,\n className,\n appendToBody = false,\n}: SimpleSelectProps) {\n const handleValueChange = (newValue: string) => {\n if (onChange) {\n onChange(newValue);\n }\n };\n\n return (\n <SelectComponent value={value} onValueChange={handleValueChange} disabled={disabled}>\n <SelectTrigger className={cn('w-full', className)}>\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent appendToBody={appendToBody}>\n {options.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </SelectComponent>\n );\n}\n"],"names":["SelectComponent"],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import 'react';
|
|
2
|
+
import { clsx } from 'clsx';
|
|
3
|
+
import { twMerge } from 'tailwind-merge';
|
|
4
|
+
|
|
5
|
+
function cn(...inputs) {
|
|
6
|
+
return twMerge(clsx(inputs));
|
|
7
|
+
}
|
|
8
|
+
function isAnswerUncertain(response) {
|
|
9
|
+
const uncertaintyPatternsByLanguage = {
|
|
10
|
+
en: [
|
|
11
|
+
/i(?:\s|['\u2018\u2019])?m(?:\s+really)?\s+not\s+sure/i,
|
|
12
|
+
/i(?:\s+am)?(?:\s+really)?\s+not\s+sure/i,
|
|
13
|
+
/i\s+(?:really\s+)?don(?:['\u2018\u2019])?t\s+know/i,
|
|
14
|
+
/it(?:['\u2018\u2019]s| is) unclear/i,
|
|
15
|
+
/cannot determine/i,
|
|
16
|
+
/hard to say/i,
|
|
17
|
+
/difficult to determine/i,
|
|
18
|
+
/need more information/i
|
|
19
|
+
],
|
|
20
|
+
es: [/no (?:lo )?sé/i, /no estoy seguro/i, /no es claro/i, /desconocido/i],
|
|
21
|
+
fr: [/je ne sais pas/i, /je ne suis pas sûr/i, /ce n'est pas clair/i, /inconnu/i],
|
|
22
|
+
de: [/ich weiß nicht/i, /ich bin nicht sicher/i, /es ist unklar/i, /unbekannt/i],
|
|
23
|
+
it: [/non lo so/i, /non sono sicuro/i, /non è chiaro/i, /sconosciuto/i],
|
|
24
|
+
pt: [/não sei/i, /não tenho certeza/i, /não está claro/i, /desconhecido/i],
|
|
25
|
+
nl: [/ik weet het niet/i, /ik weet niet zeker/i, /het is onduidelijk/i, /onbekend/i],
|
|
26
|
+
pl: [/nie wiem/i, /nie jestem pewien/i, /to nie jest jasne/i, /nieznany/i],
|
|
27
|
+
ru: [/я не знаю/i, /я не уверен/i, /это не ясно/i, /неизвестно/i],
|
|
28
|
+
ja: [/知りません/i, /よくわからない/i, /不明です/i, /未知/i],
|
|
29
|
+
ko: [/모릅니다/i, /잘 모르겠습니다/i, /불확실합니다/i, /알 수 없음/i],
|
|
30
|
+
zh: [/我不知道/i, /我不确定/i, /不清楚/i, /未知/i],
|
|
31
|
+
"zh-TW": [/我不知道/i, /我不確定/i, /不清楚/i, /未知/i]
|
|
32
|
+
};
|
|
33
|
+
let earliestMatch = null;
|
|
34
|
+
for (const [language, patterns] of Object.entries(uncertaintyPatternsByLanguage)) {
|
|
35
|
+
for (const pattern of patterns) {
|
|
36
|
+
const match = response.match(pattern);
|
|
37
|
+
if (match && (earliestMatch === null || match.index < earliestMatch.index)) {
|
|
38
|
+
earliestMatch = { index: match.index, language };
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return earliestMatch ? { uncertain: true, language: earliestMatch.language } : { uncertain: false, language: null };
|
|
43
|
+
}
|
|
44
|
+
function getLuminance(rgb) {
|
|
45
|
+
const [r, g, b] = rgb.split(",").map(Number);
|
|
46
|
+
const [R, G, B] = [r, g, b].map((v) => {
|
|
47
|
+
v /= 255;
|
|
48
|
+
return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);
|
|
49
|
+
});
|
|
50
|
+
return 0.2126 * R + 0.7152 * G + 0.0722 * B;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export { cn as c, getLuminance as g, isAnswerUncertain as i };
|
|
54
|
+
//# sourceMappingURL=utils.DmKr1Ojo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.DmKr1Ojo.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 /need more information/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\nexport function getLuminance(rgb: string): number {\n const [r, g, b] = rgb.split(',').map(Number);\n const [R, G, B] = [r, g, b].map((v) => {\n v /= 255;\n\n return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\n });\n\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-search.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combobox.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-picker.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generating-star.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { cva } from 'class-variance-authority';
|
|
4
|
+
import { c as cn } from '../../chunks/utils.DmKr1Ojo.js';
|
|
5
|
+
|
|
6
|
+
// packages/react/compose-refs/src/compose-refs.tsx
|
|
7
|
+
function setRef(ref, value) {
|
|
8
|
+
if (typeof ref === "function") {
|
|
9
|
+
return ref(value);
|
|
10
|
+
} else if (ref !== null && ref !== void 0) {
|
|
11
|
+
ref.current = value;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function composeRefs(...refs) {
|
|
15
|
+
return (node) => {
|
|
16
|
+
let hasCleanup = false;
|
|
17
|
+
const cleanups = refs.map((ref) => {
|
|
18
|
+
const cleanup = setRef(ref, node);
|
|
19
|
+
if (!hasCleanup && typeof cleanup == "function") {
|
|
20
|
+
hasCleanup = true;
|
|
21
|
+
}
|
|
22
|
+
return cleanup;
|
|
23
|
+
});
|
|
24
|
+
if (hasCleanup) {
|
|
25
|
+
return () => {
|
|
26
|
+
for (let i = 0; i < cleanups.length; i++) {
|
|
27
|
+
const cleanup = cleanups[i];
|
|
28
|
+
if (typeof cleanup == "function") {
|
|
29
|
+
cleanup();
|
|
30
|
+
} else {
|
|
31
|
+
setRef(refs[i], null);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// src/slot.tsx
|
|
40
|
+
// @__NO_SIDE_EFFECTS__
|
|
41
|
+
function createSlot(ownerName) {
|
|
42
|
+
const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);
|
|
43
|
+
const Slot2 = React.forwardRef((props, forwardedRef) => {
|
|
44
|
+
const { children, ...slotProps } = props;
|
|
45
|
+
const childrenArray = React.Children.toArray(children);
|
|
46
|
+
const slottable = childrenArray.find(isSlottable);
|
|
47
|
+
if (slottable) {
|
|
48
|
+
const newElement = slottable.props.children;
|
|
49
|
+
const newChildren = childrenArray.map((child) => {
|
|
50
|
+
if (child === slottable) {
|
|
51
|
+
if (React.Children.count(newElement) > 1) return React.Children.only(null);
|
|
52
|
+
return React.isValidElement(newElement) ? newElement.props.children : null;
|
|
53
|
+
} else {
|
|
54
|
+
return child;
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });
|
|
58
|
+
}
|
|
59
|
+
return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });
|
|
60
|
+
});
|
|
61
|
+
Slot2.displayName = `${ownerName}.Slot`;
|
|
62
|
+
return Slot2;
|
|
63
|
+
}
|
|
64
|
+
var Slot = /* @__PURE__ */ createSlot("Slot");
|
|
65
|
+
// @__NO_SIDE_EFFECTS__
|
|
66
|
+
function createSlotClone(ownerName) {
|
|
67
|
+
const SlotClone = React.forwardRef((props, forwardedRef) => {
|
|
68
|
+
const { children, ...slotProps } = props;
|
|
69
|
+
if (React.isValidElement(children)) {
|
|
70
|
+
const childrenRef = getElementRef(children);
|
|
71
|
+
const props2 = mergeProps(slotProps, children.props);
|
|
72
|
+
if (children.type !== React.Fragment) {
|
|
73
|
+
props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;
|
|
74
|
+
}
|
|
75
|
+
return React.cloneElement(children, props2);
|
|
76
|
+
}
|
|
77
|
+
return React.Children.count(children) > 1 ? React.Children.only(null) : null;
|
|
78
|
+
});
|
|
79
|
+
SlotClone.displayName = `${ownerName}.SlotClone`;
|
|
80
|
+
return SlotClone;
|
|
81
|
+
}
|
|
82
|
+
var SLOTTABLE_IDENTIFIER = Symbol("radix.slottable");
|
|
83
|
+
function isSlottable(child) {
|
|
84
|
+
return React.isValidElement(child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;
|
|
85
|
+
}
|
|
86
|
+
function mergeProps(slotProps, childProps) {
|
|
87
|
+
const overrideProps = { ...childProps };
|
|
88
|
+
for (const propName in childProps) {
|
|
89
|
+
const slotPropValue = slotProps[propName];
|
|
90
|
+
const childPropValue = childProps[propName];
|
|
91
|
+
const isHandler = /^on[A-Z]/.test(propName);
|
|
92
|
+
if (isHandler) {
|
|
93
|
+
if (slotPropValue && childPropValue) {
|
|
94
|
+
overrideProps[propName] = (...args) => {
|
|
95
|
+
const result = childPropValue(...args);
|
|
96
|
+
slotPropValue(...args);
|
|
97
|
+
return result;
|
|
98
|
+
};
|
|
99
|
+
} else if (slotPropValue) {
|
|
100
|
+
overrideProps[propName] = slotPropValue;
|
|
101
|
+
}
|
|
102
|
+
} else if (propName === "style") {
|
|
103
|
+
overrideProps[propName] = { ...slotPropValue, ...childPropValue };
|
|
104
|
+
} else if (propName === "className") {
|
|
105
|
+
overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(" ");
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return { ...slotProps, ...overrideProps };
|
|
109
|
+
}
|
|
110
|
+
function getElementRef(element) {
|
|
111
|
+
let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get;
|
|
112
|
+
let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
|
|
113
|
+
if (mayWarn) {
|
|
114
|
+
return element.ref;
|
|
115
|
+
}
|
|
116
|
+
getter = Object.getOwnPropertyDescriptor(element, "ref")?.get;
|
|
117
|
+
mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
|
|
118
|
+
if (mayWarn) {
|
|
119
|
+
return element.props.ref;
|
|
120
|
+
}
|
|
121
|
+
return element.props.ref || element.ref;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const buttonVariants = cva(
|
|
125
|
+
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
126
|
+
{
|
|
127
|
+
variants: {
|
|
128
|
+
variant: {
|
|
129
|
+
default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
|
|
130
|
+
destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
|
|
131
|
+
outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
|
|
132
|
+
secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
|
|
133
|
+
ghost: "hover:bg-accent hover:text-accent-foreground",
|
|
134
|
+
link: "text-primary underline-offset-4 hover:underline",
|
|
135
|
+
dark: "bg-dark-700 text-white shadow hover:bg-dark-800 dark:bg-primary dark:text-primary-foreground dark:hover:bg-primary/80 focus-visible:bg-dark-800 dark:focus-visible:bg-primary/80"
|
|
136
|
+
},
|
|
137
|
+
size: {
|
|
138
|
+
default: "h-9 px-4 py-2",
|
|
139
|
+
sm: "h-8 rounded-md px-3 text-sm",
|
|
140
|
+
lg: "h-10 rounded-md px-8",
|
|
141
|
+
icon: "h-9 w-9"
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
defaultVariants: {
|
|
145
|
+
variant: "default",
|
|
146
|
+
size: "default"
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
);
|
|
150
|
+
const Button = React.forwardRef(
|
|
151
|
+
({ className, variant, size, asChild = false, ...props }, ref) => {
|
|
152
|
+
const Comp = asChild ? Slot : "button";
|
|
153
|
+
return /* @__PURE__ */ React.createElement(
|
|
154
|
+
Comp,
|
|
155
|
+
{
|
|
156
|
+
className: cn(buttonVariants({ variant, size, className })),
|
|
157
|
+
ref,
|
|
158
|
+
...props
|
|
159
|
+
}
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
);
|
|
163
|
+
Button.displayName = "Button";
|
|
164
|
+
|
|
165
|
+
export { Button, buttonVariants };
|
|
166
|
+
//# sourceMappingURL=button.js.map
|