@keboola/design 1.2.0 → 1.3.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 +25 -0
- package/dist/icons.cjs +731 -0
- package/dist/icons.cjs.map +1 -0
- package/dist/icons.js +29 -0
- package/dist/icons.js.map +1 -0
- package/dist/index.cjs +429 -333
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +426 -331
- package/dist/index.js.map +1 -1
- package/dist/markdown-editor.cjs +270 -135
- package/dist/markdown-editor.cjs.map +1 -1
- package/dist/markdown-editor.js +270 -135
- package/dist/markdown-editor.js.map +1 -1
- package/dist/mermaid.cjs +24 -15
- package/dist/mermaid.cjs.map +1 -1
- package/dist/mermaid.js +24 -15
- package/dist/mermaid.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +12 -5
- package/src/blocks/AIKit/CollapsibleStepHeader.tsx +7 -8
- package/src/blocks/AIKit/InlineStepLabel.tsx +7 -7
- package/src/blocks/AIKit/MessageBubble.stories.tsx +11 -3
- package/src/blocks/AIKit/MessageBubble.tsx +1 -1
- package/src/blocks/AIKit/PlanApproval.tsx +9 -8
- package/src/blocks/AIKit/PlanRewritingIndicator.tsx +2 -2
- package/src/blocks/AIKit/PromptInput.stories.tsx +10 -2
- package/src/blocks/AIKit/PromptInputSubmit.tsx +12 -8
- package/src/blocks/AIKit/Question.tsx +8 -9
- package/src/blocks/AIKit/SuggestedPrompt.tsx +12 -5
- package/src/blocks/AIKit/ThinkingIndicator.tsx +2 -2
- package/src/blocks/AutoSaveTextarea/AutoSaveTextarea.tsx +4 -4
- package/src/blocks/ClipboardButton/ClipboardButton.tsx +7 -5
- package/src/blocks/ClipboardButton/ClipboardInline.tsx +2 -3
- package/src/blocks/ColorInput/ColorInput.tsx +4 -2
- package/src/blocks/ColorInput/ColorPicker.tsx +5 -2
- package/src/blocks/EmptyState/EmptyState.tsx +16 -0
- package/src/blocks/ErrorState/ErrorState.tsx +15 -0
- package/src/blocks/Form/formHook.ts +15 -0
- package/src/blocks/MultiActionButtonGroup/MultiActionButton.stories.tsx +12 -11
- package/src/blocks/MultiActionButtonGroup/MultiActionButton.tsx +4 -4
- package/src/blocks/MultiCombobox/MultiCombobox.tsx +28 -12
- package/src/blocks/PageHeader/AGENTS.md +63 -3
- package/src/blocks/PageHeader/PageHeader.stories.tsx +124 -28
- package/src/blocks/PageHeader/PageHeader.tsx +15 -0
- package/src/blocks/PageHeader/PageHeaderDetail.tsx +23 -1
- package/src/blocks/PageHeader/PageHeaderIndex.tsx +20 -1
- package/src/blocks/PageLayout/PageLayout.tsx +26 -0
- package/src/blocks/PageToolbar/PageToolbar.stories.tsx +348 -0
- package/src/blocks/PageToolbar/PageToolbar.tsx +119 -0
- package/src/blocks/PageToolbar/index.ts +1 -0
- package/src/blocks/PasswordInput/PasswordInput.tsx +10 -10
- package/src/blocks/SearchInput/SearchInput.tsx +30 -4
- package/src/blocks/SearchInputWithNavigation/SearchInputWithNavigation.tsx +9 -6
- package/src/blocks/SplitButton/SplitButton.stories.tsx +7 -4
- package/src/blocks/SplitButton/SplitButton.tsx +17 -4
- package/src/blocks/Tagger/TagItem.tsx +4 -1
- package/src/blocks/Tagger/TagSelectPopover/TagSelectCreateItem.tsx +3 -1
- package/src/blocks/Tagger/TagSelectPopover/TagSelectList.tsx +2 -2
- package/src/blocks/Tagger/Tagger.tsx +2 -2
- package/src/components/Alert/Alert.stories.tsx +11 -3
- package/src/components/Alert/Alert.tsx +19 -1
- package/src/components/Alert/AlertCollapsibleIcon.tsx +3 -4
- package/src/components/Alert/AlertIcon.tsx +18 -21
- package/src/components/Badge/Badge.stories.tsx +22 -4
- package/src/components/Badge/Badge.tsx +16 -0
- package/src/components/Badge/BadgeButton.tsx +7 -6
- package/src/components/Breadcrumb/BreadcrumbEllipsis.tsx +2 -2
- package/src/components/Breadcrumb/BreadcrumbSeparator.tsx +2 -2
- package/src/components/Button/Button.stories.tsx +14 -2
- package/src/components/Button/Button.tsx +42 -5
- package/src/components/Button/styles.ts +4 -6
- package/src/components/ButtonGroup/ButtonGroup.stories.tsx +32 -10
- package/src/components/Card/Card.tsx +17 -0
- package/src/components/Checkbox/Checkbox.tsx +3 -6
- package/src/components/CodeEditor/highlighting.ts +1 -1
- package/src/components/CollapsiblePanel.tsx +2 -5
- package/src/components/Combobox/Combobox.tsx +12 -14
- package/src/components/Combobox/ComboboxChips.tsx +6 -1
- package/src/components/Combobox/ComboboxItem.tsx +3 -4
- package/src/components/Combobox/ComboboxItemIndicator.tsx +6 -4
- package/src/components/Combobox/types.ts +2 -6
- package/src/components/Command/Command.stories.tsx +47 -56
- package/src/components/Command/CommandItem/CheckIndicator.tsx +26 -14
- package/src/components/Command/CommandItem/CommandItem.tsx +6 -3
- package/src/components/DropdownMenu/DropdownMenu.stories.tsx +8 -4
- package/src/components/DropdownMenu/DropdownMenuCheckboxItem.tsx +4 -1
- package/src/components/DropdownMenu/DropdownMenuItem.tsx +12 -6
- package/src/components/DropdownMenu/DropdownMenuItemIndicator.tsx +12 -6
- package/src/components/DropdownMenu/DropdownMenuRadioGroup/DropdownMenuRadioItem.tsx +8 -5
- package/src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSubTrigger.tsx +2 -2
- package/src/components/DropdownMenu/ItemIcon.tsx +16 -8
- package/src/components/FormGroup/FormGroup.tsx +15 -0
- package/src/components/FullScreenModal/FullScreenModalHeader.tsx +4 -1
- package/src/components/Input/DateInput/DateInput.tsx +4 -1
- package/src/components/Input/DateRangeInput/DateRangeInput.tsx +4 -6
- package/src/components/Input/Input.tsx +18 -2
- package/src/components/Input/TextInput/TextInput.tsx +16 -0
- package/src/components/Input/TimeInput/TimeInput.tsx +4 -1
- package/src/components/InputGroup/InputGroup.stories.tsx +11 -3
- package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +63 -1
- package/src/components/MarkdownEditor/MarkdownEditor.tsx +105 -15
- package/src/components/MarkdownEditor/nodes/ImageNode.tsx +10 -10
- package/src/components/MarkdownEditor/nodes/MermaidNode.tsx +8 -8
- package/src/components/MarkdownEditor/plugins/KeyboardPlugin.tsx +47 -3
- package/src/components/MarkdownEditor/plugins/MarkdownSyncPlugin.tsx +12 -3
- package/src/components/MarkdownEditor/plugins/ToolbarPlugin.tsx +20 -10
- package/src/components/MarkdownEditor/plugins/toolbar/AlignmentDropdown.tsx +20 -14
- package/src/components/MarkdownEditor/plugins/toolbar/BlockTypeDropdown.tsx +25 -16
- package/src/components/MarkdownEditor/plugins/toolbar/LinkPanel.tsx +3 -3
- package/src/components/MarkdownEditor/transformers.ts +10 -0
- package/src/components/MergeEditor/AcceptControls/AcceptButton.tsx +9 -4
- package/src/components/MergeEditor/AcceptControls/AcceptControls.tsx +25 -14
- package/src/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.tsx +2 -2
- package/src/components/MergeEditor/MergeEditor.stories.tsx +15 -0
- package/src/components/MergeEditor/MergeEditor.tsx +9 -0
- package/src/components/MergeEditor/MergePane.tsx +22 -4
- package/src/components/MergeEditor/decorations.ts +2 -2
- package/src/components/Modal/Modal.stories.tsx +6 -4
- package/src/components/Modal/Modal.tsx +26 -0
- package/src/components/Modal/ModalBody.tsx +5 -0
- package/src/components/Modal/ModalCloseIcon.tsx +2 -3
- package/src/components/Modal/ModalContent.tsx +8 -0
- package/src/components/Modal/ModalFooter.tsx +5 -0
- package/src/components/Modal/ModalHeader.tsx +11 -0
- package/src/components/Modal/ModalIcon.tsx +45 -19
- package/src/components/Navbar/Navbar.stories.tsx +26 -13
- package/src/components/Navbar/NavbarMenuButton.tsx +11 -10
- package/src/components/Pagination/PaginationEllipsis.tsx +2 -2
- package/src/components/Pagination/PaginationNext.tsx +2 -1
- package/src/components/Pagination/PaginationPrevious.tsx +4 -1
- package/src/components/PanelWithDetails.tsx +3 -4
- package/src/components/Popconfirm/Popconfirm.stories.tsx +13 -5
- package/src/components/RadioGroup/Radio.tsx +6 -12
- package/src/components/Search/ClearButton.tsx +2 -2
- package/src/components/Search/Search.tsx +3 -3
- package/src/components/Select/Select.tsx +16 -5
- package/src/components/Select/SelectContent.tsx +13 -4
- package/src/components/Select/SelectItem.tsx +6 -5
- package/src/components/Select/SelectTrigger.tsx +2 -2
- package/src/components/Sidebar/Sidebar.stories.tsx +55 -19
- package/src/components/Sidebar/SidebarGroup/SidebarGroupAction.tsx +8 -4
- package/src/components/Sidebar/SidebarMenu/SidebarMenuButton.tsx +4 -2
- package/src/components/Sidebar/SidebarMenu/SidebarMenuCard.tsx +3 -2
- package/src/components/Sidebar/SidebarMenu/SidebarMenuIcon.tsx +12 -12
- package/src/components/Sidebar/SidebarMenu/SidebarMenuSub.tsx +3 -7
- package/src/components/Sidebar/SidebarMenu/SidebarSearchInput.tsx +3 -5
- package/src/components/Skeleton/Skeleton.stories.tsx +52 -0
- package/src/components/Skeleton/Skeleton.tsx +24 -1
- package/src/components/Table/Table.stories.tsx +223 -1
- package/src/components/Table/Table.tsx +17 -0
- package/src/components/Tabs.tsx +25 -2
- package/src/components/Toast/ToastDismiss.tsx +3 -3
- package/src/components/Toast/ToastRoot.tsx +24 -19
- package/src/components/Toggle/Toggle.tsx +11 -6
- package/src/components/Tooltip/Tooltip.tsx +23 -0
- package/src/components/ZoomableSvg/ZoomableSvg.tsx +8 -6
- package/src/icons/Keboola.tsx +28 -0
- package/src/icons/icons.stories.tsx +174 -0
- package/src/icons/index.ts +180 -0
- package/src/index.ts +1 -0
- package/src/patterns/AlertWithAction.stories.tsx +30 -0
- package/src/patterns/CardWithEmptyState.stories.tsx +66 -0
- package/src/patterns/ConfirmDialog.stories.tsx +72 -0
- package/src/patterns/CreatableMultiCombobox.stories.tsx +33 -0
- package/src/patterns/DataCardWithSkeleton.stories.tsx +48 -0
- package/src/patterns/DisabledButtonTooltip.stories.tsx +30 -0
- package/src/patterns/FilterToolbar.stories.tsx +71 -0
- package/src/patterns/InfoTooltip.stories.tsx +56 -0
- package/src/patterns/ListDetail.stories.tsx +65 -0
- package/src/patterns/ModalForm.stories.tsx +59 -0
- package/src/patterns/PageHeaderTabs.stories.tsx +48 -0
- package/src/styles.css +16 -8
- package/src/utils/legacyIcon.tsx +28 -0
package/dist/index.cjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var reactSlot = require('@radix-ui/react-slot');
|
|
4
|
+
var lucideReact = require('lucide-react');
|
|
4
5
|
var clsx = require('clsx');
|
|
5
6
|
var tailwindMerge = require('tailwind-merge');
|
|
6
7
|
var react = require('react');
|
|
@@ -26,6 +27,7 @@ var reactCheckbox = require('@radix-ui/react-checkbox');
|
|
|
26
27
|
var DropdownMenuPrimitive3 = require('@radix-ui/react-dropdown-menu');
|
|
27
28
|
var DialogPrimitive = require('@radix-ui/react-dialog');
|
|
28
29
|
var reactDom = require('react-dom');
|
|
30
|
+
var icons$1 = require('@keboola/design/icons');
|
|
29
31
|
var reactCollapsible = require('@radix-ui/react-collapsible');
|
|
30
32
|
var cmdk = require('cmdk');
|
|
31
33
|
var combobox = require('@base-ui/react/combobox');
|
|
@@ -575,12 +577,10 @@ var argoVariants = classVarianceAuthority.cva(
|
|
|
575
577
|
"focus-visible:tw-ring-primary/50"
|
|
576
578
|
],
|
|
577
579
|
secondary: [
|
|
578
|
-
"tw-bg-
|
|
579
|
-
"tw-text-
|
|
580
|
-
"hover:tw-bg-
|
|
581
|
-
"
|
|
582
|
-
"focus:tw-text-secondary-foreground",
|
|
583
|
-
"focus-visible:tw-border-secondary",
|
|
580
|
+
"tw-bg-primary/10",
|
|
581
|
+
"tw-text-primary",
|
|
582
|
+
"hover:not-disabled:tw-bg-primary/20",
|
|
583
|
+
"focus-visible:tw-border-primary",
|
|
584
584
|
"focus-visible:tw-ring-primary/50"
|
|
585
585
|
],
|
|
586
586
|
// should be called "destructive" by Figma
|
|
@@ -643,7 +643,6 @@ var Button = ({
|
|
|
643
643
|
disabled = false,
|
|
644
644
|
className,
|
|
645
645
|
type = "button",
|
|
646
|
-
icon: iconProp,
|
|
647
646
|
isLoading = false,
|
|
648
647
|
asChild = false,
|
|
649
648
|
onClick,
|
|
@@ -651,10 +650,10 @@ var Button = ({
|
|
|
651
650
|
variant = "primary",
|
|
652
651
|
size = "medium",
|
|
653
652
|
block = false,
|
|
653
|
+
icon,
|
|
654
654
|
...buttonProps
|
|
655
655
|
}) => {
|
|
656
656
|
const Comp = asChild ? reactSlot.Root : "button";
|
|
657
|
-
const icon = isLoading ? "spinner" : iconProp;
|
|
658
657
|
const classNames = argo ? argoVariants({ variant, size, block, className }) : variants({
|
|
659
658
|
size,
|
|
660
659
|
variant,
|
|
@@ -677,12 +676,13 @@ var Button = ({
|
|
|
677
676
|
disabled,
|
|
678
677
|
"aria-disabled": disabled,
|
|
679
678
|
"data-variant": variant,
|
|
680
|
-
"data-icon-only":
|
|
679
|
+
"data-icon-only": String(size).startsWith("icon"),
|
|
681
680
|
type,
|
|
682
681
|
onClick: handleClick,
|
|
683
682
|
className: cn(classNames),
|
|
684
683
|
children: [
|
|
685
|
-
|
|
684
|
+
isLoading && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "tw-size-4 tw-shrink-0 tw-animate-spin" }),
|
|
685
|
+
!isLoading && icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon }),
|
|
686
686
|
/* @__PURE__ */ jsxRuntime.jsx(reactSlot.Slottable, { children })
|
|
687
687
|
]
|
|
688
688
|
}
|
|
@@ -822,7 +822,7 @@ var rangePickerClassNames = {
|
|
|
822
822
|
selected: `tw-font-medium tw-rounded`,
|
|
823
823
|
range_middle: `tw-bg-secondary-300 tw-border-secondary-300 tw-rounded-none tw-font-medium`
|
|
824
824
|
};
|
|
825
|
-
var
|
|
825
|
+
var Calendar2 = ({ className, classNames, ...props }) => {
|
|
826
826
|
const defaultClassNames = reactDayPicker.getDefaultClassNames();
|
|
827
827
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
828
828
|
reactDayPicker.DayPicker,
|
|
@@ -844,7 +844,7 @@ var Calendar = ({ className, classNames, ...props }) => {
|
|
|
844
844
|
}
|
|
845
845
|
);
|
|
846
846
|
};
|
|
847
|
-
|
|
847
|
+
Calendar2.displayName = "Calendar";
|
|
848
848
|
var variants2 = classVarianceAuthority.cva(
|
|
849
849
|
[
|
|
850
850
|
"tailwindcss-preflight",
|
|
@@ -946,7 +946,7 @@ var DatePicker = ({
|
|
|
946
946
|
alignOffset,
|
|
947
947
|
className: "tw-w-auto tw-p-0",
|
|
948
948
|
sideOffset,
|
|
949
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
949
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Calendar2, { ...calendarProps })
|
|
950
950
|
}
|
|
951
951
|
)
|
|
952
952
|
] });
|
|
@@ -1570,10 +1570,11 @@ var Input = ({
|
|
|
1570
1570
|
allowClear && isClearButtonVisible && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1571
1571
|
InputGroup.Button,
|
|
1572
1572
|
{
|
|
1573
|
-
|
|
1573
|
+
"aria-label": "Clear",
|
|
1574
1574
|
onMouseDown: (e) => e.preventDefault(),
|
|
1575
1575
|
onClick: handleClear,
|
|
1576
|
-
"data-testid": testId.clearButton
|
|
1576
|
+
"data-testid": testId.clearButton,
|
|
1577
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "tw-size-4" })
|
|
1577
1578
|
}
|
|
1578
1579
|
),
|
|
1579
1580
|
rightSuffix && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1726,7 +1727,7 @@ var DateInput = ({
|
|
|
1726
1727
|
open: isOpen,
|
|
1727
1728
|
selected: currentValue ?? void 0,
|
|
1728
1729
|
startMonth,
|
|
1729
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Button, { "aria-label": "Select Date",
|
|
1730
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Button, { "aria-label": "Select Date", variant: "inline", size: "icon-3xs", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Calendar, { className: "tw-size-4" }) })
|
|
1730
1731
|
}
|
|
1731
1732
|
) : void 0,
|
|
1732
1733
|
type: "text"
|
|
@@ -1853,15 +1854,7 @@ var DateRangeInput = ({
|
|
|
1853
1854
|
open: isOpen,
|
|
1854
1855
|
startMonth,
|
|
1855
1856
|
selected: currentValue ?? void 0,
|
|
1856
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1857
|
-
Button,
|
|
1858
|
-
{
|
|
1859
|
-
"aria-label": "Select Date Range",
|
|
1860
|
-
icon: "calendar",
|
|
1861
|
-
variant: "inline",
|
|
1862
|
-
size: "icon-3xs"
|
|
1863
|
-
}
|
|
1864
|
-
)
|
|
1857
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Button, { "aria-label": "Select Date Range", variant: "inline", size: "icon-3xs", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Calendar, { className: "tw-size-4" }) })
|
|
1865
1858
|
}
|
|
1866
1859
|
) : void 0,
|
|
1867
1860
|
type: "text"
|
|
@@ -1970,7 +1963,7 @@ var TimeInput = ({
|
|
|
1970
1963
|
onOpenChange: handleOpenChange,
|
|
1971
1964
|
onSelect: handleTimePickerSelect,
|
|
1972
1965
|
selected: currentValue,
|
|
1973
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Button, { "aria-label": "Select Time",
|
|
1966
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Button, { "aria-label": "Select Time", variant: "inline", size: "icon-3xs", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Clock, { className: "tw-size-4" }) })
|
|
1974
1967
|
}
|
|
1975
1968
|
) : void 0
|
|
1976
1969
|
}
|
|
@@ -2563,21 +2556,7 @@ var Radio = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
|
2563
2556
|
"focus-visible:tw-ring-secondary-200",
|
|
2564
2557
|
className
|
|
2565
2558
|
),
|
|
2566
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2567
|
-
RRadioGroup.Indicator,
|
|
2568
|
-
{
|
|
2569
|
-
className: cn(
|
|
2570
|
-
"tw-flex",
|
|
2571
|
-
"tw-items-center",
|
|
2572
|
-
"tw-justify-center",
|
|
2573
|
-
'after:tw-content-[""]',
|
|
2574
|
-
"after:tw-block",
|
|
2575
|
-
"after:tw-size-2.5",
|
|
2576
|
-
"after:tw-rounded-full",
|
|
2577
|
-
"after:tw-bg-primary"
|
|
2578
|
-
)
|
|
2579
|
-
}
|
|
2580
|
-
)
|
|
2559
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(RRadioGroup.Indicator, { className: cn("tw-flex", "tw-items-center", "tw-justify-center"), children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Circle, { className: "tw-size-2.5 tw-fill-current tw-text-primary" }) })
|
|
2581
2560
|
}
|
|
2582
2561
|
);
|
|
2583
2562
|
var RadioGroupItemButton = ({
|
|
@@ -2935,7 +2914,7 @@ var ClearButton = ({ onClick, testId }) => {
|
|
|
2935
2914
|
"hover:tw-text-neutral-800"
|
|
2936
2915
|
),
|
|
2937
2916
|
"data-testid": testId,
|
|
2938
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2917
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "tw-size-4" })
|
|
2939
2918
|
}
|
|
2940
2919
|
);
|
|
2941
2920
|
};
|
|
@@ -3028,7 +3007,7 @@ var genSearchTestId = (prefix = "") => {
|
|
|
3028
3007
|
clearButton: ps`search-clear-button`
|
|
3029
3008
|
};
|
|
3030
3009
|
};
|
|
3031
|
-
var
|
|
3010
|
+
var Search2 = ({
|
|
3032
3011
|
ref,
|
|
3033
3012
|
suffix,
|
|
3034
3013
|
className,
|
|
@@ -3087,7 +3066,7 @@ var Search = ({
|
|
|
3087
3066
|
),
|
|
3088
3067
|
"data-testid": testId.wrapper,
|
|
3089
3068
|
children: [
|
|
3090
|
-
variant === "ai" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3069
|
+
variant === "ai" ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: "tw-size-4 [&_*]:tw-stroke-aigradient-600" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "tw-size-4 tw-text-neutral-400" }),
|
|
3091
3070
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3092
3071
|
"input",
|
|
3093
3072
|
{
|
|
@@ -3125,7 +3104,7 @@ var SearchForm = ({
|
|
|
3125
3104
|
onSubmit("");
|
|
3126
3105
|
};
|
|
3127
3106
|
return /* @__PURE__ */ jsxRuntime.jsx("form", { onSubmit: handleSubmit, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3128
|
-
|
|
3107
|
+
Search2,
|
|
3129
3108
|
{
|
|
3130
3109
|
...props,
|
|
3131
3110
|
ref,
|
|
@@ -3141,7 +3120,7 @@ var scrollButtonStyles = cn(
|
|
|
3141
3120
|
"tw-justify-center",
|
|
3142
3121
|
"tw-rounded-sm",
|
|
3143
3122
|
"tw-p-1",
|
|
3144
|
-
"[&_svg]:tw-size-
|
|
3123
|
+
"[&_svg]:tw-size-5"
|
|
3145
3124
|
);
|
|
3146
3125
|
var SelectContent = ({
|
|
3147
3126
|
ref,
|
|
@@ -3197,7 +3176,7 @@ var SelectContent = ({
|
|
|
3197
3176
|
className
|
|
3198
3177
|
),
|
|
3199
3178
|
children: [
|
|
3200
|
-
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ScrollUpButton, { className: scrollButtonStyles, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3179
|
+
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ScrollUpButton, { className: scrollButtonStyles, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronUp, {}) }),
|
|
3201
3180
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3202
3181
|
SelectPrimitive__namespace.Viewport,
|
|
3203
3182
|
{
|
|
@@ -3207,11 +3186,13 @@ var SelectContent = ({
|
|
|
3207
3186
|
children
|
|
3208
3187
|
}
|
|
3209
3188
|
),
|
|
3210
|
-
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ScrollDownButton, { className: scrollButtonStyles, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3189
|
+
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ScrollDownButton, { className: scrollButtonStyles, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, {}) })
|
|
3211
3190
|
]
|
|
3212
3191
|
}
|
|
3213
3192
|
) });
|
|
3214
3193
|
var SelectGroup = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Group, { ...props, className: cn("tw-flex tw-flex-col tw-gap-0.5", className) });
|
|
3194
|
+
var isFAIconValue = (value) => typeof value === "string" || Array.isArray(value) && value.length === 2 && typeof value[0] === "string" && typeof value[1] === "string";
|
|
3195
|
+
var renderLegacyIcon = (value) => isFAIconValue(value) ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: value }) : value;
|
|
3215
3196
|
var SelectItem = ({
|
|
3216
3197
|
ref,
|
|
3217
3198
|
className,
|
|
@@ -3259,9 +3240,9 @@ var SelectItem = ({
|
|
|
3259
3240
|
className
|
|
3260
3241
|
),
|
|
3261
3242
|
children: [
|
|
3262
|
-
|
|
3243
|
+
renderLegacyIcon(icon),
|
|
3263
3244
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "tw-flex-1 tw-truncate", children: /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemText, { children }) }),
|
|
3264
|
-
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemIndicator, { className: "tw-pointer-events-none", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3245
|
+
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemIndicator, { className: "tw-pointer-events-none", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "tw-size-4" }) })
|
|
3265
3246
|
]
|
|
3266
3247
|
}
|
|
3267
3248
|
);
|
|
@@ -3436,7 +3417,7 @@ var SelectTrigger = ({
|
|
|
3436
3417
|
...props,
|
|
3437
3418
|
children: [
|
|
3438
3419
|
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Value, { placeholder }),
|
|
3439
|
-
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Icon, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3420
|
+
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Icon, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "tw-size-5 tw-text-muted-foreground" }) })
|
|
3440
3421
|
]
|
|
3441
3422
|
}
|
|
3442
3423
|
);
|
|
@@ -3602,14 +3583,8 @@ function Checkbox({
|
|
|
3602
3583
|
const id = idProp?.toString() ?? fallbackId;
|
|
3603
3584
|
const styleVariant = argo ? "argo" : "default";
|
|
3604
3585
|
const checkboxElement = /* @__PURE__ */ jsxRuntime.jsx(reactCheckbox.Root, { id, ...rest, className: cn(rootVariants({ variant: styleVariant, className })), children: /* @__PURE__ */ jsxRuntime.jsxs(reactCheckbox.Indicator, { className: cn(indicatorVariants({ variant: styleVariant })), children: [
|
|
3605
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3606
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3607
|
-
Icon,
|
|
3608
|
-
{
|
|
3609
|
-
icon: "minus",
|
|
3610
|
-
className: "tw-hidden tw-size-3 group-data-[state=indeterminate]:tw-block"
|
|
3611
|
-
}
|
|
3612
|
-
)
|
|
3586
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "tw-hidden tw-size-3 tw-stroke-[4px] group-data-[state=checked]:tw-block" }),
|
|
3587
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Minus, { className: "tw-hidden tw-size-3 tw-stroke-[4px] group-data-[state=indeterminate]:tw-block" })
|
|
3613
3588
|
] }) });
|
|
3614
3589
|
const rendered = !children ? checkboxElement : /* @__PURE__ */ jsxRuntime.jsxs(FieldBox, { htmlFor: id, variant, position, control: checkboxElement, children: [
|
|
3615
3590
|
/* @__PURE__ */ jsxRuntime.jsx(FieldBox.Title, { children }),
|
|
@@ -3643,6 +3618,9 @@ var variants4 = classVarianceAuthority.cva(
|
|
|
3643
3618
|
"tw-bg-white",
|
|
3644
3619
|
"[&_svg]:tw-size-2",
|
|
3645
3620
|
"[&_svg]:data-[state=unchecked]:tw-hidden",
|
|
3621
|
+
// Lucide Circle is stroke-only — force fill to match the stroke
|
|
3622
|
+
// (currentColor) so the indicator reads as a solid dot.
|
|
3623
|
+
"[&_svg]:tw-fill-current",
|
|
3646
3624
|
"group-data-[variant=argo]/dropdown-menu-content:[&_svg]:tw-text-primary",
|
|
3647
3625
|
"group-data-[variant=default]/dropdown-menu-content:[&_svg]:tw-text-secondary-500"
|
|
3648
3626
|
],
|
|
@@ -3662,6 +3640,9 @@ var variants4 = classVarianceAuthority.cva(
|
|
|
3662
3640
|
],
|
|
3663
3641
|
switch: [
|
|
3664
3642
|
"tw-size-5",
|
|
3643
|
+
// Lucide SVGs default to 24×24 — constrain the rendered ToggleRight
|
|
3644
|
+
// to the indicator slot so it doesn't overflow.
|
|
3645
|
+
"[&_svg]:tw-size-5",
|
|
3665
3646
|
"tw-text-neutral-400",
|
|
3666
3647
|
"data-[state=unchecked]:tw-rotate-180",
|
|
3667
3648
|
"group-data-[variant=default]/dropdown-menu-content:data-[state=checked]:tw-text-secondary-500",
|
|
@@ -3677,10 +3658,10 @@ var DropdownMenuItemIndicator = ({
|
|
|
3677
3658
|
forceMount: forceMountProp,
|
|
3678
3659
|
...rest
|
|
3679
3660
|
}) => {
|
|
3680
|
-
const
|
|
3681
|
-
if (variant === "switch") return
|
|
3682
|
-
if (variant === "radio") return
|
|
3683
|
-
return
|
|
3661
|
+
const IconComp = (() => {
|
|
3662
|
+
if (variant === "switch") return lucideReact.ToggleRight;
|
|
3663
|
+
if (variant === "radio") return lucideReact.Circle;
|
|
3664
|
+
return lucideReact.Check;
|
|
3684
3665
|
})();
|
|
3685
3666
|
const forceMount = (() => {
|
|
3686
3667
|
if (forceMountProp) return true;
|
|
@@ -3693,24 +3674,30 @@ var DropdownMenuItemIndicator = ({
|
|
|
3693
3674
|
...rest,
|
|
3694
3675
|
forceMount,
|
|
3695
3676
|
className: variants4({ variant, className }),
|
|
3696
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3677
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(IconComp, {})
|
|
3697
3678
|
}
|
|
3698
3679
|
);
|
|
3699
3680
|
};
|
|
3700
|
-
var ItemIcon = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3701
|
-
|
|
3681
|
+
var ItemIcon = ({ className, children, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3682
|
+
"span",
|
|
3702
3683
|
{
|
|
3703
3684
|
...props,
|
|
3704
3685
|
className: cn(
|
|
3686
|
+
"tw-inline-flex",
|
|
3687
|
+
"tw-items-center",
|
|
3688
|
+
"tw-justify-center",
|
|
3705
3689
|
"tw-aspect-square",
|
|
3706
|
-
|
|
3707
|
-
|
|
3690
|
+
// 20px container fits the 16px Lucide glyph plus 2px breathing room
|
|
3691
|
+
// each side — the previous tw-size-4 + tw-p-0.5 clipped the 16px child.
|
|
3692
|
+
"tw-size-5",
|
|
3693
|
+
"[&_svg]:tw-size-4",
|
|
3708
3694
|
"group-data-[variant=default]/dropdown-menu-content:tw-text-neutral-400",
|
|
3709
3695
|
"group-data-[variant=argo]/dropdown-menu-content:tw-text-primary",
|
|
3710
3696
|
"group-data-[variant=argo]/dropdown-menu-content:group-aria-disabled:tw-text-muted-foreground",
|
|
3711
3697
|
"group-data-[variant=default]/dropdown-menu-content:group-hover:tw-text-secondary-500",
|
|
3712
3698
|
className
|
|
3713
|
-
)
|
|
3699
|
+
),
|
|
3700
|
+
children
|
|
3714
3701
|
}
|
|
3715
3702
|
);
|
|
3716
3703
|
|
|
@@ -3791,7 +3778,7 @@ var DropdownMenuCheckboxItem = ({
|
|
|
3791
3778
|
...props
|
|
3792
3779
|
}) => {
|
|
3793
3780
|
const isAtStart = indicatorAlign === "start";
|
|
3794
|
-
const indicatorEle = isLoading ? /* @__PURE__ */ jsxRuntime.jsx(ItemIcon, {
|
|
3781
|
+
const indicatorEle = isLoading ? /* @__PURE__ */ jsxRuntime.jsx(ItemIcon, { className: isAtStart ? "" : "tw-ml-auto", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "tw-animate-spin" }) }) : /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItemIndicator, { variant: indicator, className: isAtStart ? "" : "tw-ml-auto" });
|
|
3795
3782
|
const handleSelect = (event) => {
|
|
3796
3783
|
if (!closeOnSelect) event.preventDefault();
|
|
3797
3784
|
onSelect?.(event);
|
|
@@ -3857,13 +3844,13 @@ var DropdownMenuItem = ({
|
|
|
3857
3844
|
onPointerMove,
|
|
3858
3845
|
children,
|
|
3859
3846
|
asChild,
|
|
3860
|
-
icon
|
|
3847
|
+
icon,
|
|
3861
3848
|
iconClassName,
|
|
3862
3849
|
isLoading = false,
|
|
3863
3850
|
...props
|
|
3864
3851
|
}) => {
|
|
3865
3852
|
const Comp = asChild ? reactSlot.Root : "div";
|
|
3866
|
-
const
|
|
3853
|
+
const adornment = isLoading ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "tw-animate-spin" }) : renderLegacyIcon(icon);
|
|
3867
3854
|
const handleOnSelect = (event) => {
|
|
3868
3855
|
if (asModalTrigger) event.preventDefault();
|
|
3869
3856
|
onSelect?.(event);
|
|
@@ -3887,7 +3874,7 @@ var DropdownMenuItem = ({
|
|
|
3887
3874
|
className: cn(itemVariants, className),
|
|
3888
3875
|
asChild: true,
|
|
3889
3876
|
children: /* @__PURE__ */ jsxRuntime.jsxs(Comp, { children: [
|
|
3890
|
-
|
|
3877
|
+
adornment && /* @__PURE__ */ jsxRuntime.jsx(ItemIcon, { className: iconClassName, children: adornment }),
|
|
3891
3878
|
/* @__PURE__ */ jsxRuntime.jsx(reactSlot.Slottable, { children })
|
|
3892
3879
|
] })
|
|
3893
3880
|
}
|
|
@@ -3968,7 +3955,7 @@ var DropdownMenuRadioItem = ({
|
|
|
3968
3955
|
...props
|
|
3969
3956
|
}) => {
|
|
3970
3957
|
const isAtStart = indicatorAlign === "start";
|
|
3971
|
-
const indicatorEle = isLoading ? /* @__PURE__ */ jsxRuntime.jsx(ItemIcon, {
|
|
3958
|
+
const indicatorEle = isLoading ? /* @__PURE__ */ jsxRuntime.jsx(ItemIcon, { className: iconClassName, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "tw-animate-spin" }) }) : /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItemIndicator, { variant: indicator });
|
|
3972
3959
|
const handleSelect = (event) => {
|
|
3973
3960
|
if (!closeOnSelect) event.preventDefault();
|
|
3974
3961
|
onSelect?.(event);
|
|
@@ -3989,7 +3976,7 @@ var DropdownMenuRadioItem = ({
|
|
|
3989
3976
|
...props,
|
|
3990
3977
|
children: [
|
|
3991
3978
|
isAtStart && indicatorEle,
|
|
3992
|
-
icon && /* @__PURE__ */ jsxRuntime.jsx(ItemIcon, {
|
|
3979
|
+
icon && /* @__PURE__ */ jsxRuntime.jsx(ItemIcon, { className: iconClassName, children: renderLegacyIcon(icon) }),
|
|
3993
3980
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "tw-flex tw-min-w-0 tw-flex-1 tw-items-center tw-gap-2", children }),
|
|
3994
3981
|
!isAtStart && indicatorEle
|
|
3995
3982
|
]
|
|
@@ -4035,7 +4022,7 @@ var DropdownMenuSubContent = ({ className, ...props }) => {
|
|
|
4035
4022
|
var DropdownMenuSubTrigger = ({ className, children, ...props }) => {
|
|
4036
4023
|
return /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuPrimitive3__namespace.SubTrigger, { className: cn(itemVariants, className), ...props, children: [
|
|
4037
4024
|
children,
|
|
4038
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4025
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "tw-ml-auto tw-size-5" })
|
|
4039
4026
|
] });
|
|
4040
4027
|
};
|
|
4041
4028
|
var DropdownMenuTrigger = ({
|
|
@@ -4207,9 +4194,8 @@ var ModalCloseIcon = ({ className, ...rest }) => /* @__PURE__ */ jsxRuntime.jsxs
|
|
|
4207
4194
|
),
|
|
4208
4195
|
children: [
|
|
4209
4196
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4210
|
-
|
|
4197
|
+
lucideReact.X,
|
|
4211
4198
|
{
|
|
4212
|
-
icon: "close",
|
|
4213
4199
|
className: cn(
|
|
4214
4200
|
"tw-size-4",
|
|
4215
4201
|
"tw-text-neutral-400",
|
|
@@ -4276,7 +4262,7 @@ var ModalHeader = ({
|
|
|
4276
4262
|
}
|
|
4277
4263
|
);
|
|
4278
4264
|
var NAMED_COLORS = /* @__PURE__ */ new Set(["orange", "blue", "red", "green", "gray", "violet"]);
|
|
4279
|
-
var ModalIcon = (
|
|
4265
|
+
var ModalIcon = (props) => {
|
|
4280
4266
|
const [hasImageError, setHasImageError] = react.useState(false);
|
|
4281
4267
|
if ("iconUrl" in props && hasImageError) {
|
|
4282
4268
|
return null;
|
|
@@ -4297,14 +4283,14 @@ var ModalIcon = ({ color, ...props }) => {
|
|
|
4297
4283
|
"div",
|
|
4298
4284
|
{
|
|
4299
4285
|
className: cn("tw-relative", "tw-rounded-full", "tw-size-12", {
|
|
4300
|
-
"tw-bg-warning-500": color === "orange",
|
|
4301
|
-
"tw-bg-secondary-500": color === "blue",
|
|
4302
|
-
"tw-bg-primary-500": color === "green",
|
|
4303
|
-
"tw-bg-error-500": color === "red",
|
|
4304
|
-
"tw-bg-neutral-150": color === "gray",
|
|
4305
|
-
"tw-bg-purple-100": color === "violet"
|
|
4286
|
+
"tw-bg-warning-500": props.color === "orange",
|
|
4287
|
+
"tw-bg-secondary-500": props.color === "blue",
|
|
4288
|
+
"tw-bg-primary-500": props.color === "green",
|
|
4289
|
+
"tw-bg-error-500": props.color === "red",
|
|
4290
|
+
"tw-bg-neutral-150": props.color === "gray",
|
|
4291
|
+
"tw-bg-purple-100": props.color === "violet"
|
|
4306
4292
|
}),
|
|
4307
|
-
style: color && !NAMED_COLORS.has(color) ? { backgroundColor: color } : void 0,
|
|
4293
|
+
style: props.color && !NAMED_COLORS.has(props.color) ? { backgroundColor: props.color } : void 0,
|
|
4308
4294
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4309
4295
|
"span",
|
|
4310
4296
|
{
|
|
@@ -4317,19 +4303,15 @@ var ModalIcon = ({ color, ...props }) => {
|
|
|
4317
4303
|
"tw-top-1/2",
|
|
4318
4304
|
"tw-left-1/2",
|
|
4319
4305
|
"-tw-translate-x-1/2",
|
|
4320
|
-
"-tw-translate-y-1/2"
|
|
4321
|
-
),
|
|
4322
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4323
|
-
Icon,
|
|
4306
|
+
"-tw-translate-y-1/2",
|
|
4324
4307
|
{
|
|
4325
|
-
|
|
4326
|
-
|
|
4327
|
-
|
|
4328
|
-
|
|
4329
|
-
|
|
4330
|
-
|
|
4331
|
-
|
|
4332
|
-
)
|
|
4308
|
+
"tw-text-white": props.color !== "violet",
|
|
4309
|
+
"tw-text-purple-500": props.color === "violet"
|
|
4310
|
+
},
|
|
4311
|
+
"[&_svg]:tw-size-6",
|
|
4312
|
+
"[&_svg]:tw-aspect-square"
|
|
4313
|
+
),
|
|
4314
|
+
children: isFAIconValue(props.icon) ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: props.icon, spin: props.spin }) : props.icon
|
|
4333
4315
|
}
|
|
4334
4316
|
)
|
|
4335
4317
|
}
|
|
@@ -4431,7 +4413,7 @@ var FullScreenModalHeader = ({
|
|
|
4431
4413
|
...props,
|
|
4432
4414
|
children: [
|
|
4433
4415
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("tw-flex tw-flex-1 tw-items-center", titleWrapperClassName), children: [
|
|
4434
|
-
previousTitle && onClose && /* @__PURE__ */ jsxRuntime.jsx(Button, {
|
|
4416
|
+
previousTitle && onClose && /* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: onClose, size: "icon", className: "tw-mr-6", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { className: "tw-size-4" }) }),
|
|
4435
4417
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw-w-full", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4436
4418
|
"div",
|
|
4437
4419
|
{
|
|
@@ -4691,9 +4673,14 @@ var SplitButtonBase = ({
|
|
|
4691
4673
|
isActionsOpen,
|
|
4692
4674
|
onActionsOpenChange,
|
|
4693
4675
|
argo = false,
|
|
4676
|
+
icon,
|
|
4677
|
+
children,
|
|
4694
4678
|
...rest
|
|
4695
4679
|
}) => /* @__PURE__ */ jsxRuntime.jsxs(ButtonGroup, { space: "compact", children: [
|
|
4696
|
-
/* @__PURE__ */ jsxRuntime.
|
|
4680
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Button, { ...rest, ref, disabled, variant, size, argo, children: [
|
|
4681
|
+
!rest.isLoading && renderLegacyIcon(icon),
|
|
4682
|
+
children
|
|
4683
|
+
] }),
|
|
4697
4684
|
actions && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4698
4685
|
DropdownMenu,
|
|
4699
4686
|
{
|
|
@@ -4707,8 +4694,8 @@ var SplitButtonBase = ({
|
|
|
4707
4694
|
argo,
|
|
4708
4695
|
size: iconSizeMap[size],
|
|
4709
4696
|
variant,
|
|
4710
|
-
|
|
4711
|
-
"
|
|
4697
|
+
"aria-label": "Additional actions",
|
|
4698
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(icons$1.ChevronDown, { className: "tw-size-5" })
|
|
4712
4699
|
}
|
|
4713
4700
|
) }),
|
|
4714
4701
|
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenu.Content, { align: "end", children: actions })
|
|
@@ -5305,7 +5292,7 @@ var SidebarGroupAction = ({
|
|
|
5305
5292
|
ref,
|
|
5306
5293
|
className,
|
|
5307
5294
|
type = "button",
|
|
5308
|
-
|
|
5295
|
+
children,
|
|
5309
5296
|
...props
|
|
5310
5297
|
}) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
5311
5298
|
"button",
|
|
@@ -5327,6 +5314,10 @@ var SidebarGroupAction = ({
|
|
|
5327
5314
|
// styles
|
|
5328
5315
|
"tw-text-neutral-800",
|
|
5329
5316
|
"tw-rounded-full",
|
|
5317
|
+
// svg defaults: size + colour
|
|
5318
|
+
"[&_svg]:tw-size-3",
|
|
5319
|
+
"[&_svg]:tw-text-neutral-400",
|
|
5320
|
+
"hover:[&_svg]:tw-text-secondary-600",
|
|
5330
5321
|
"hover:tw-bg-neutral-100",
|
|
5331
5322
|
"focus-visible:tw-ring-4",
|
|
5332
5323
|
"focus-visible:tw-ring-secondary-200",
|
|
@@ -5335,7 +5326,7 @@ var SidebarGroupAction = ({
|
|
|
5335
5326
|
"focus-visible:tw-outline-secondary-500",
|
|
5336
5327
|
className
|
|
5337
5328
|
),
|
|
5338
|
-
children
|
|
5329
|
+
children
|
|
5339
5330
|
}
|
|
5340
5331
|
);
|
|
5341
5332
|
var SidebarGroupLabel = ({
|
|
@@ -5453,22 +5444,25 @@ var SidebarMenu = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
|
5453
5444
|
var SidebarMenuIcon = ({
|
|
5454
5445
|
ref,
|
|
5455
5446
|
className,
|
|
5456
|
-
|
|
5447
|
+
children,
|
|
5457
5448
|
...rest
|
|
5458
5449
|
}) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
5459
|
-
|
|
5450
|
+
"span",
|
|
5460
5451
|
{
|
|
5461
5452
|
...rest,
|
|
5462
5453
|
ref,
|
|
5463
|
-
icon,
|
|
5464
5454
|
className: cn(
|
|
5465
|
-
"tw-
|
|
5455
|
+
"tw-inline-flex",
|
|
5456
|
+
"tw-items-center",
|
|
5457
|
+
"tw-justify-center",
|
|
5466
5458
|
"tw-aspect-square",
|
|
5467
|
-
"tw-text-sidebar-primary",
|
|
5468
5459
|
"tw-shrink-0",
|
|
5469
5460
|
"tw-p-0.5",
|
|
5461
|
+
"tw-text-sidebar-primary",
|
|
5462
|
+
"[&_svg]:tw-size-4",
|
|
5470
5463
|
className
|
|
5471
|
-
)
|
|
5464
|
+
),
|
|
5465
|
+
children
|
|
5472
5466
|
}
|
|
5473
5467
|
);
|
|
5474
5468
|
var SidebarMenuButton = ({
|
|
@@ -5541,7 +5535,7 @@ var SidebarMenuButton = ({
|
|
|
5541
5535
|
),
|
|
5542
5536
|
tabIndex: 0,
|
|
5543
5537
|
children: [
|
|
5544
|
-
icon && /* @__PURE__ */ jsxRuntime.jsx(SidebarMenuIcon, { icon }),
|
|
5538
|
+
icon && /* @__PURE__ */ jsxRuntime.jsx(SidebarMenuIcon, { children: renderLegacyIcon(icon) }),
|
|
5545
5539
|
/* @__PURE__ */ jsxRuntime.jsx(reactSlot.Slottable, { children })
|
|
5546
5540
|
]
|
|
5547
5541
|
}
|
|
@@ -5643,15 +5637,13 @@ var SidebarSearchInput = ({
|
|
|
5643
5637
|
};
|
|
5644
5638
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(wrapperClassnames, className), children: [
|
|
5645
5639
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5646
|
-
|
|
5640
|
+
lucideReact.Search,
|
|
5647
5641
|
{
|
|
5648
|
-
icon: "search",
|
|
5649
|
-
fixedWidth: true,
|
|
5650
5642
|
className: cn(
|
|
5651
5643
|
"tw-pointer-events-none",
|
|
5652
5644
|
"tw-absolute",
|
|
5653
5645
|
"tw-left-2",
|
|
5654
|
-
"tw-
|
|
5646
|
+
"tw-size-4",
|
|
5655
5647
|
"tw-text-sidebar-primary",
|
|
5656
5648
|
"group-data-[state=expanded]/sidebar:tw-text-neutral-400"
|
|
5657
5649
|
)
|
|
@@ -5742,7 +5734,7 @@ var SidebarMenuCard = ({ children, className, icon, title, ...rest }) => {
|
|
|
5742
5734
|
),
|
|
5743
5735
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "tw-flex tw-flex-col tw-gap-2", children: [
|
|
5744
5736
|
/* @__PURE__ */ jsxRuntime.jsxs(Title3, { children: [
|
|
5745
|
-
/* @__PURE__ */ jsxRuntime.jsx(SidebarMenuIcon, { className: "tw-p-px", icon }),
|
|
5737
|
+
/* @__PURE__ */ jsxRuntime.jsx(SidebarMenuIcon, { className: "tw-p-px", children: renderLegacyIcon(icon) }),
|
|
5746
5738
|
title
|
|
5747
5739
|
] }),
|
|
5748
5740
|
/* @__PURE__ */ jsxRuntime.jsx(Content8, { className, children })
|
|
@@ -5907,13 +5899,7 @@ var SidebarMenuSub = ({
|
|
|
5907
5899
|
),
|
|
5908
5900
|
children: [
|
|
5909
5901
|
label,
|
|
5910
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5911
|
-
Icon,
|
|
5912
|
-
{
|
|
5913
|
-
icon: ["far", "angle-down"],
|
|
5914
|
-
className: "tw-ml-auto tw-transition-transform tw-duration-200 group-data-[state=open]:tw-rotate-180"
|
|
5915
|
-
}
|
|
5916
|
-
)
|
|
5902
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "tw-ml-auto tw-size-5 tw-transition-transform tw-duration-200 group-data-[state=open]:tw-rotate-180" })
|
|
5917
5903
|
]
|
|
5918
5904
|
}
|
|
5919
5905
|
) }),
|
|
@@ -6368,9 +6354,8 @@ var CheckIndicator = ({ variant = "default" }) => {
|
|
|
6368
6354
|
if (variant === "default") return null;
|
|
6369
6355
|
if (variant === "argo") {
|
|
6370
6356
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6371
|
-
|
|
6357
|
+
lucideReact.Check,
|
|
6372
6358
|
{
|
|
6373
|
-
icon: "check",
|
|
6374
6359
|
className: cn(
|
|
6375
6360
|
// visibility
|
|
6376
6361
|
"tw-hidden",
|
|
@@ -6410,17 +6395,30 @@ var CheckIndicator = ({ variant = "default" }) => {
|
|
|
6410
6395
|
"data-[variant=checkbox]:group-data-[checked=true]/command-item:tw-bg-secondary-500",
|
|
6411
6396
|
"tw-shrink-0"
|
|
6412
6397
|
),
|
|
6413
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6414
|
-
|
|
6398
|
+
children: variant === "checkbox" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
6399
|
+
lucideReact.Check,
|
|
6415
6400
|
{
|
|
6416
6401
|
className: cn(
|
|
6417
6402
|
"tw-hidden",
|
|
6403
|
+
// Lucide SVGs default to 24×24; constrain to the 16px indicator slot.
|
|
6404
|
+
"tw-size-3",
|
|
6405
|
+
"tw-stroke-[4px]",
|
|
6418
6406
|
"group-data-[checked=true]/command-item:tw-block",
|
|
6419
|
-
"group-data-[variant=checkbox]/check-indicator:tw-text-white"
|
|
6420
|
-
|
|
6421
|
-
|
|
6422
|
-
|
|
6423
|
-
|
|
6407
|
+
"group-data-[variant=checkbox]/check-indicator:tw-text-white"
|
|
6408
|
+
)
|
|
6409
|
+
}
|
|
6410
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
6411
|
+
lucideReact.Circle,
|
|
6412
|
+
{
|
|
6413
|
+
className: cn(
|
|
6414
|
+
"tw-hidden",
|
|
6415
|
+
// Lucide Circle is stroke-only — force fill to match the stroke so
|
|
6416
|
+
// the indicator reads as a solid dot.
|
|
6417
|
+
"tw-size-3",
|
|
6418
|
+
"tw-fill-current",
|
|
6419
|
+
"group-data-[checked=true]/command-item:tw-block",
|
|
6420
|
+
"group-data-[variant=radio]/check-indicator:tw-text-secondary-500"
|
|
6421
|
+
)
|
|
6424
6422
|
}
|
|
6425
6423
|
)
|
|
6426
6424
|
}
|
|
@@ -6476,7 +6474,7 @@ var CommandItem = ({
|
|
|
6476
6474
|
),
|
|
6477
6475
|
children: [
|
|
6478
6476
|
/* @__PURE__ */ jsxRuntime.jsx(CheckIndicator, { variant }),
|
|
6479
|
-
icon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6477
|
+
icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "tw-inline-flex tw-size-4 tw-shrink-0 tw-items-center tw-justify-center tw-text-neutral-400 [&_svg]:tw-size-4", children: icon }),
|
|
6480
6478
|
children
|
|
6481
6479
|
]
|
|
6482
6480
|
}
|
|
@@ -6599,8 +6597,8 @@ var BadgeAddon = ({
|
|
|
6599
6597
|
var BadgeButton = ({
|
|
6600
6598
|
ref,
|
|
6601
6599
|
className,
|
|
6602
|
-
icon,
|
|
6603
6600
|
type = "button",
|
|
6601
|
+
children,
|
|
6604
6602
|
...rest
|
|
6605
6603
|
}) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
6606
6604
|
"button",
|
|
@@ -6618,9 +6616,13 @@ var BadgeButton = ({
|
|
|
6618
6616
|
"tw-text-inherit",
|
|
6619
6617
|
"hover:tw-brightness-95",
|
|
6620
6618
|
"tw-px-1",
|
|
6619
|
+
// Default sizing for Lucide-icon children (which ship at 24×24); keeps
|
|
6620
|
+
// the visual baseline aligned with the previous FA-icon API and other
|
|
6621
|
+
// icon-wrapper components (ItemIcon, SidebarMenuIcon).
|
|
6622
|
+
"[&_svg]:tw-size-3",
|
|
6621
6623
|
className
|
|
6622
6624
|
),
|
|
6623
|
-
children
|
|
6625
|
+
children
|
|
6624
6626
|
}
|
|
6625
6627
|
);
|
|
6626
6628
|
var BadgeLabel = ({
|
|
@@ -6834,7 +6836,7 @@ var ComboboxChips = ({
|
|
|
6834
6836
|
/* @__PURE__ */ jsxRuntime.jsx(Badge.Addon, { variant: "inline", align: "inline-end", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6835
6837
|
combobox.Combobox.ChipRemove,
|
|
6836
6838
|
{
|
|
6837
|
-
render: /* @__PURE__ */ jsxRuntime.jsx(Badge.Button, {
|
|
6839
|
+
render: /* @__PURE__ */ jsxRuntime.jsx(Badge.Button, { "aria-label": "Remove value", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "tw-size-3" }) })
|
|
6838
6840
|
}
|
|
6839
6841
|
) })
|
|
6840
6842
|
]
|
|
@@ -6994,12 +6996,12 @@ var ComboboxItemIndicator = ({
|
|
|
6994
6996
|
),
|
|
6995
6997
|
...props,
|
|
6996
6998
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6997
|
-
|
|
6999
|
+
lucideReact.Check,
|
|
6998
7000
|
{
|
|
6999
|
-
icon: "check",
|
|
7000
7001
|
className: cn(
|
|
7001
7002
|
"tw-hidden",
|
|
7002
7003
|
"tw-size-3",
|
|
7004
|
+
"tw-stroke-[4px]",
|
|
7003
7005
|
"!tw-text-white",
|
|
7004
7006
|
"group-data-[selected]/combobox-item-indicator:tw-block"
|
|
7005
7007
|
)
|
|
@@ -7018,12 +7020,14 @@ var ComboboxItemIndicator = ({
|
|
|
7018
7020
|
"tw-absolute",
|
|
7019
7021
|
"tw-right-2",
|
|
7020
7022
|
"group-data-[variant=default]/combobox-content:tw-right-4",
|
|
7023
|
+
// Lucide SVGs default to 24×24 — constrain the rendered child so the
|
|
7024
|
+
// 16px indicator slot owns the actual size.
|
|
7021
7025
|
"[&_svg]:tw-size-4",
|
|
7022
7026
|
"group-data-[highlighted]/combobox-item:tw-text-accent-foreground",
|
|
7023
7027
|
"group-data-[variant=default]/combobox-content:group-data-[highlighted]/combobox-item:tw-text-foreground",
|
|
7024
7028
|
className
|
|
7025
7029
|
),
|
|
7026
|
-
render: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7030
|
+
render: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, {})
|
|
7027
7031
|
}
|
|
7028
7032
|
);
|
|
7029
7033
|
};
|
|
@@ -7076,7 +7080,7 @@ var ComboboxItem = ({
|
|
|
7076
7080
|
),
|
|
7077
7081
|
children: [
|
|
7078
7082
|
/* @__PURE__ */ jsxRuntime.jsx(ComboboxItemIndicator, { variant }),
|
|
7079
|
-
icon
|
|
7083
|
+
icon,
|
|
7080
7084
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "tw-truncate", children })
|
|
7081
7085
|
]
|
|
7082
7086
|
}
|
|
@@ -7311,17 +7315,8 @@ var Combobox = ({
|
|
|
7311
7315
|
prefix && /* @__PURE__ */ jsxRuntime.jsx(InputGroup.Addon, { align: "inline-start", children: prefix }),
|
|
7312
7316
|
/* @__PURE__ */ jsxRuntime.jsx(ComboboxInput, { id, placeholder, disabled }),
|
|
7313
7317
|
/* @__PURE__ */ jsxRuntime.jsxs(InputGroup.Addon, { align: "inline-end", children: [
|
|
7314
|
-
allowClear && /* @__PURE__ */ jsxRuntime.jsx(InputGroup.Button, { asChild: true,
|
|
7315
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7316
|
-
InputGroup.Button,
|
|
7317
|
-
{
|
|
7318
|
-
disabled,
|
|
7319
|
-
asChild: true,
|
|
7320
|
-
icon: "chevron-down",
|
|
7321
|
-
"aria-label": "Open combobox",
|
|
7322
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(combobox.Combobox.Trigger, {})
|
|
7323
|
-
}
|
|
7324
|
-
)
|
|
7318
|
+
allowClear && /* @__PURE__ */ jsxRuntime.jsx(InputGroup.Button, { asChild: true, "aria-label": "Clear", disabled, children: /* @__PURE__ */ jsxRuntime.jsx(combobox.Combobox.Clear, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "tw-size-4" }) }) }),
|
|
7319
|
+
/* @__PURE__ */ jsxRuntime.jsx(InputGroup.Button, { disabled, asChild: true, "aria-label": "Open combobox", children: /* @__PURE__ */ jsxRuntime.jsx(combobox.Combobox.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "tw-size-4" }) }) })
|
|
7325
7320
|
] })
|
|
7326
7321
|
]
|
|
7327
7322
|
}
|
|
@@ -7330,11 +7325,11 @@ var Combobox = ({
|
|
|
7330
7325
|
/* @__PURE__ */ jsxRuntime.jsx(ComboboxEmpty, { children: empty }),
|
|
7331
7326
|
/* @__PURE__ */ jsxRuntime.jsx(ComboboxList, { children: (itemOrGroup) => {
|
|
7332
7327
|
if (isCreatableItem(itemOrGroup))
|
|
7333
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Combobox.Item, { value: itemOrGroup, icon:
|
|
7328
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Combobox.Item, { value: itemOrGroup, icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, {}), children: queryToCreateLabel(itemOrGroup.value) });
|
|
7334
7329
|
if (isGroupItem(itemOrGroup)) {
|
|
7335
7330
|
const maybeCreatable = itemOrGroup.items[0];
|
|
7336
7331
|
if (isCreatableItem(maybeCreatable)) {
|
|
7337
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Combobox.Item, { value: maybeCreatable, icon:
|
|
7332
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Combobox.Item, { value: maybeCreatable, icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, {}), children: queryToCreateLabel(maybeCreatable.value) });
|
|
7338
7333
|
}
|
|
7339
7334
|
const groupLabel = groupToLabel(itemOrGroup);
|
|
7340
7335
|
return /* @__PURE__ */ jsxRuntime.jsxs(Combobox.Group, { items: itemOrGroup.items, children: [
|
|
@@ -7392,7 +7387,7 @@ var BreadcrumbEllipsis = ({
|
|
|
7392
7387
|
),
|
|
7393
7388
|
...props,
|
|
7394
7389
|
children: [
|
|
7395
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7390
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Ellipsis, { className: "tw-size-4" }),
|
|
7396
7391
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "tw-sr-only", children: "More" })
|
|
7397
7392
|
]
|
|
7398
7393
|
}
|
|
@@ -7486,7 +7481,7 @@ var BreadcrumbSeparator = ({ children, className, ...props }) => /* @__PURE__ */
|
|
|
7486
7481
|
className
|
|
7487
7482
|
),
|
|
7488
7483
|
...props,
|
|
7489
|
-
children: children ?? /* @__PURE__ */ jsxRuntime.jsx(
|
|
7484
|
+
children: children ?? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "!tw-size-4" })
|
|
7490
7485
|
}
|
|
7491
7486
|
);
|
|
7492
7487
|
var Breadcrumb = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": "breadcrumb", className: cn("tailwindcss-preflight", className), ...props });
|
|
@@ -7711,7 +7706,7 @@ var NavbarMenuButton = ({
|
|
|
7711
7706
|
className,
|
|
7712
7707
|
type = "button",
|
|
7713
7708
|
children,
|
|
7714
|
-
icon
|
|
7709
|
+
icon,
|
|
7715
7710
|
asChild = false,
|
|
7716
7711
|
variant = "default",
|
|
7717
7712
|
...rest
|
|
@@ -7719,7 +7714,7 @@ var NavbarMenuButton = ({
|
|
|
7719
7714
|
const Comp = asChild ? reactSlot.Root : "button";
|
|
7720
7715
|
const isSearchVariant = variant === "search";
|
|
7721
7716
|
const isEmphasizedVariant = variant === "emphasized";
|
|
7722
|
-
const
|
|
7717
|
+
const adornment = isSearchVariant ? /* @__PURE__ */ jsxRuntime.jsx(icons$1.Search, {}) : renderLegacyIcon(icon);
|
|
7723
7718
|
const adornmentVariant = (() => {
|
|
7724
7719
|
if (isSearchVariant || variant === "icon") return "icon-button";
|
|
7725
7720
|
if (isEmphasizedVariant) return "icon-accent-emphasized";
|
|
@@ -7734,7 +7729,7 @@ var NavbarMenuButton = ({
|
|
|
7734
7729
|
"data-variant": variant,
|
|
7735
7730
|
className: design.cn(variants7({ className, variant })),
|
|
7736
7731
|
children: [
|
|
7737
|
-
|
|
7732
|
+
adornment && /* @__PURE__ */ jsxRuntime.jsx(NavbarMenuItemAdornment, { variant: adornmentVariant, children: adornment }),
|
|
7738
7733
|
/* @__PURE__ */ jsxRuntime.jsx(reactSlot.Slottable, { children })
|
|
7739
7734
|
]
|
|
7740
7735
|
}
|
|
@@ -7839,22 +7834,27 @@ var PaginationEllipsis = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime
|
|
|
7839
7834
|
className
|
|
7840
7835
|
),
|
|
7841
7836
|
...props,
|
|
7842
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7837
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Ellipsis, {})
|
|
7843
7838
|
}
|
|
7844
7839
|
);
|
|
7845
7840
|
var PaginationItem = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: cn("tw-list-none", className), ...props });
|
|
7846
|
-
var PaginationNext = ({ children, className, ...props }) => /* @__PURE__ */ jsxRuntime.
|
|
7841
|
+
var PaginationNext = ({ children, className, ...props }) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7847
7842
|
PaginationButton,
|
|
7848
7843
|
{
|
|
7849
7844
|
...props,
|
|
7850
7845
|
"aria-label": "Go to next page",
|
|
7851
|
-
icon: "chevron-right",
|
|
7852
7846
|
size: "medium",
|
|
7853
7847
|
className: cn("tw-flex-row-reverse", className),
|
|
7854
|
-
children:
|
|
7848
|
+
children: [
|
|
7849
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "tw-size-5" }),
|
|
7850
|
+
children ?? "Next"
|
|
7851
|
+
]
|
|
7855
7852
|
}
|
|
7856
7853
|
);
|
|
7857
|
-
var PaginationPrevious = ({ children, ...props }) => /* @__PURE__ */ jsxRuntime.
|
|
7854
|
+
var PaginationPrevious = ({ children, ...props }) => /* @__PURE__ */ jsxRuntime.jsxs(PaginationButton, { ...props, size: "medium", "aria-label": "Go to previous page", children: [
|
|
7855
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { className: "tw-size-5" }),
|
|
7856
|
+
children ?? "Previous"
|
|
7857
|
+
] });
|
|
7858
7858
|
var Pagination = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
7859
7859
|
"nav",
|
|
7860
7860
|
{
|
|
@@ -8062,9 +8062,12 @@ var toggleVariants = classVarianceAuthority.cva(
|
|
|
8062
8062
|
"aria-pressed:tw-to-purple-600",
|
|
8063
8063
|
"hover:aria-pressed:tw-from-secondary-700",
|
|
8064
8064
|
"hover:aria-pressed:tw-to-purple-700",
|
|
8065
|
-
// icon color - gradient when off, white when on
|
|
8066
|
-
|
|
8067
|
-
|
|
8065
|
+
// icon color - gradient stroke when off, white stroke when on.
|
|
8066
|
+
// Lucide icons are stroke-based; targeting every shape (`*`)
|
|
8067
|
+
// catches paths, circles, and other non-path sub-shapes so the
|
|
8068
|
+
// whole glyph picks up the gradient.
|
|
8069
|
+
"[&_*]:tw-stroke-aigradient-600",
|
|
8070
|
+
"[&_*]:aria-pressed:tw-stroke-white",
|
|
8068
8071
|
"*:aria-pressed:tw-text-white"
|
|
8069
8072
|
],
|
|
8070
8073
|
"ai-vivid": [
|
|
@@ -8153,7 +8156,7 @@ var Toggle = ({
|
|
|
8153
8156
|
disabled,
|
|
8154
8157
|
children: [
|
|
8155
8158
|
badge && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "tw-absolute tw-right-0 tw-top-0 -tw-translate-y-1/2 tw-translate-x-1/4", children: badge }),
|
|
8156
|
-
icon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8159
|
+
icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "tw-inline-flex tw-size-4 tw-shrink-0 tw-items-center tw-justify-center tw-align-middle [&_svg]:tw-size-4", children: renderLegacyIcon(icon) }),
|
|
8157
8160
|
isAiVariant ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw-bg-gradient-to-br tw-from-secondary-700 tw-to-purple-700 tw-bg-clip-text tw-text-transparent", children }) : children
|
|
8158
8161
|
]
|
|
8159
8162
|
}
|
|
@@ -8995,17 +8998,8 @@ var MultiCombobox = ({
|
|
|
8995
8998
|
className: "tw-w-auto tw-min-w-[120px] tw-flex-1"
|
|
8996
8999
|
}
|
|
8997
9000
|
),
|
|
8998
|
-
allowClear && /* @__PURE__ */ jsxRuntime.jsx(InputGroup.Button, { asChild: true,
|
|
8999
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9000
|
-
InputGroup.Button,
|
|
9001
|
-
{
|
|
9002
|
-
disabled,
|
|
9003
|
-
asChild: true,
|
|
9004
|
-
icon: "chevron-down",
|
|
9005
|
-
"aria-label": "Open combobox",
|
|
9006
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(combobox.Combobox.Trigger, {})
|
|
9007
|
-
}
|
|
9008
|
-
)
|
|
9001
|
+
allowClear && /* @__PURE__ */ jsxRuntime.jsx(InputGroup.Button, { asChild: true, "aria-label": "Clear", disabled, children: /* @__PURE__ */ jsxRuntime.jsx(combobox.Combobox.Clear, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "tw-size-4" }) }) }),
|
|
9002
|
+
/* @__PURE__ */ jsxRuntime.jsx(InputGroup.Button, { disabled, asChild: true, "aria-label": "Open combobox", children: /* @__PURE__ */ jsxRuntime.jsx(combobox.Combobox.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "tw-size-4" }) }) })
|
|
9009
9003
|
] })
|
|
9010
9004
|
] })
|
|
9011
9005
|
}
|
|
@@ -9097,9 +9091,9 @@ var ColorPicker = ({ value, disabled, readOnly, ...props }) => {
|
|
|
9097
9091
|
{
|
|
9098
9092
|
onMouseDown: (event) => event.preventDefault(),
|
|
9099
9093
|
disabled: disabled || readOnly,
|
|
9100
|
-
icon: "eye-dropper",
|
|
9101
9094
|
onClick: handleOpenPicker,
|
|
9102
|
-
"aria-label": "Pick color"
|
|
9095
|
+
"aria-label": "Pick color",
|
|
9096
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(icons$1.Pipette, { className: "tw-size-4" })
|
|
9103
9097
|
}
|
|
9104
9098
|
)
|
|
9105
9099
|
] });
|
|
@@ -9215,10 +9209,10 @@ var ColorInput = ({
|
|
|
9215
9209
|
canClear && /* @__PURE__ */ jsxRuntime.jsx(
|
|
9216
9210
|
InputGroup.Button,
|
|
9217
9211
|
{
|
|
9218
|
-
icon: "xmark",
|
|
9219
9212
|
onMouseDown: (event) => event.preventDefault(),
|
|
9220
9213
|
onClick: handleClear,
|
|
9221
|
-
"aria-label": "Clear color"
|
|
9214
|
+
"aria-label": "Clear color",
|
|
9215
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "tw-size-4" })
|
|
9222
9216
|
}
|
|
9223
9217
|
),
|
|
9224
9218
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -9326,7 +9320,7 @@ FormGroup.TextInput = FormGroupTextInput;
|
|
|
9326
9320
|
FormGroup.NumberInput = FormGroupNumberInput;
|
|
9327
9321
|
FormGroup.ColorInput = FormGroupColorInput;
|
|
9328
9322
|
FormGroup.Textarea = FormGroupTextarea;
|
|
9329
|
-
var
|
|
9323
|
+
var Link2 = ({
|
|
9330
9324
|
ref,
|
|
9331
9325
|
children,
|
|
9332
9326
|
target = "_blank",
|
|
@@ -9411,14 +9405,14 @@ var Tabs = ({
|
|
|
9411
9405
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9412
9406
|
Button,
|
|
9413
9407
|
{
|
|
9414
|
-
icon: "xmark",
|
|
9415
9408
|
variant: "inline",
|
|
9416
9409
|
size: "icon-3xs",
|
|
9417
9410
|
disabled: rest2.disabled,
|
|
9418
9411
|
onClick: () => onClose(value),
|
|
9419
9412
|
onMouseDown: (e) => e.preventDefault(),
|
|
9420
9413
|
className: "!tw-size-8 tw-opacity-0 tw-duration-200 group-hover/tab-trigger:tw-opacity-100",
|
|
9421
|
-
"aria-label": "Close tab"
|
|
9414
|
+
"aria-label": "Close tab",
|
|
9415
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "tw-size-4" })
|
|
9422
9416
|
}
|
|
9423
9417
|
)
|
|
9424
9418
|
] })
|
|
@@ -9460,12 +9454,11 @@ var AlertAction = ({
|
|
|
9460
9454
|
);
|
|
9461
9455
|
};
|
|
9462
9456
|
var AlertCollapsibleIcon = ({ open }) => /* @__PURE__ */ jsxRuntime.jsx(Tooltip, { placement: "top", tooltip: open ? "Collapse alert" : "Expand alert", triggerAsChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9463
|
-
|
|
9457
|
+
lucideReact.ChevronDown,
|
|
9464
9458
|
{
|
|
9465
|
-
icon: "chevron-down",
|
|
9466
9459
|
className: cn(
|
|
9467
9460
|
"tw-mt-px",
|
|
9468
|
-
"tw-size-
|
|
9461
|
+
"tw-size-5",
|
|
9469
9462
|
"tw-text-neutral-400",
|
|
9470
9463
|
"group-data-[state=open]/alert:tw-rotate-180",
|
|
9471
9464
|
"group-data-[variant=info]/alert:group-hover:tw-text-secondary-600",
|
|
@@ -9498,35 +9491,31 @@ var AlertDescription = ({
|
|
|
9498
9491
|
children
|
|
9499
9492
|
}
|
|
9500
9493
|
);
|
|
9501
|
-
var
|
|
9502
|
-
info:
|
|
9503
|
-
warning:
|
|
9504
|
-
error:
|
|
9505
|
-
success:
|
|
9494
|
+
var VARIANT_ICONS = {
|
|
9495
|
+
info: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Info, {}),
|
|
9496
|
+
warning: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangle, {}),
|
|
9497
|
+
error: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangle, {}),
|
|
9498
|
+
success: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleCheck, {})
|
|
9506
9499
|
};
|
|
9507
|
-
var AlertIcon = ({
|
|
9508
|
-
|
|
9509
|
-
variant,
|
|
9510
|
-
icon,
|
|
9511
|
-
className,
|
|
9512
|
-
...rest
|
|
9513
|
-
}) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
9514
|
-
Icon,
|
|
9500
|
+
var AlertIcon = ({ variant, icon, className, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
9501
|
+
"span",
|
|
9515
9502
|
{
|
|
9516
9503
|
...rest,
|
|
9517
|
-
ref,
|
|
9518
9504
|
"data-slot": "alert-icon",
|
|
9519
|
-
icon: icon ?? ICONS[variant],
|
|
9520
9505
|
className: cn(
|
|
9506
|
+
"tw-inline-flex",
|
|
9507
|
+
"tw-items-center",
|
|
9508
|
+
"tw-justify-center",
|
|
9521
9509
|
"tw-self-start",
|
|
9522
9510
|
"tw-p-0.5",
|
|
9523
|
-
"tw-
|
|
9511
|
+
"[&_svg]:tw-size-4",
|
|
9524
9512
|
"group-data-[variant=info]/alert:tw-text-secondary-500",
|
|
9525
9513
|
"group-data-[variant=warning]/alert:tw-text-warning-500",
|
|
9526
9514
|
"group-data-[variant=error]/alert:tw-text-error-500",
|
|
9527
9515
|
"group-data-[variant=success]/alert:tw-text-primary-500",
|
|
9528
9516
|
className
|
|
9529
|
-
)
|
|
9517
|
+
),
|
|
9518
|
+
children: icon ?? VARIANT_ICONS[variant]
|
|
9530
9519
|
}
|
|
9531
9520
|
);
|
|
9532
9521
|
var AlertRoot = ({
|
|
@@ -9651,7 +9640,7 @@ var Alert = ({
|
|
|
9651
9640
|
actions && /* @__PURE__ */ jsxRuntime.jsx(AlertAction, { children: actions })
|
|
9652
9641
|
] });
|
|
9653
9642
|
};
|
|
9654
|
-
var DEFAULT_ICON =
|
|
9643
|
+
var DEFAULT_ICON = /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Copy, {});
|
|
9655
9644
|
var ClipboardButton = ({
|
|
9656
9645
|
// clipboard props
|
|
9657
9646
|
text,
|
|
@@ -9671,7 +9660,10 @@ var ClipboardButton = ({
|
|
|
9671
9660
|
tooltipPlacement,
|
|
9672
9661
|
tooltipVariant,
|
|
9673
9662
|
text,
|
|
9674
|
-
children: /* @__PURE__ */ jsxRuntime.
|
|
9663
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(Button, { ...rest, variant, disabled: !text, children: [
|
|
9664
|
+
icon,
|
|
9665
|
+
children
|
|
9666
|
+
] })
|
|
9675
9667
|
}
|
|
9676
9668
|
);
|
|
9677
9669
|
var ClipboardInline = ({
|
|
@@ -9693,7 +9685,7 @@ var ClipboardInline = ({
|
|
|
9693
9685
|
tooltipPlacement,
|
|
9694
9686
|
tooltipVariant,
|
|
9695
9687
|
children: /* @__PURE__ */ jsxRuntime.jsxs(ButtonInline, { ...rest, disabled: !text, children: [
|
|
9696
|
-
!hideIcon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
9688
|
+
!hideIcon && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Copy, { className: "tw-size-4" }),
|
|
9697
9689
|
children
|
|
9698
9690
|
] })
|
|
9699
9691
|
}
|
|
@@ -10456,26 +10448,35 @@ var CHANGE_CLASS = {
|
|
|
10456
10448
|
};
|
|
10457
10449
|
var LINE_HEIGHT_PX = 20;
|
|
10458
10450
|
var PANE_HEADER_HEIGHT_PX = 58;
|
|
10459
|
-
var AcceptButton = ({ side, onAccept }) => {
|
|
10451
|
+
var AcceptButton = ({ side, onAccept, argo }) => {
|
|
10460
10452
|
const label = `Accept ${side === "left" ? "production" : "branch"} version`;
|
|
10453
|
+
const Chevron = side === "left" ? lucideReact.ChevronsRight : lucideReact.ChevronsLeft;
|
|
10461
10454
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
10462
10455
|
Button,
|
|
10463
10456
|
{
|
|
10464
|
-
icon: side === "left" ? ["far", "chevrons-right"] : ["far", "chevrons-left"],
|
|
10465
10457
|
onClick: onAccept,
|
|
10466
10458
|
variant: "outline",
|
|
10467
|
-
size: "icon",
|
|
10459
|
+
size: "icon-sm",
|
|
10468
10460
|
title: label,
|
|
10469
|
-
"aria-label": label
|
|
10461
|
+
"aria-label": label,
|
|
10462
|
+
argo,
|
|
10463
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Chevron, { className: "tw-size-5" })
|
|
10470
10464
|
}
|
|
10471
10465
|
);
|
|
10472
10466
|
};
|
|
10473
|
-
var AcceptControls = ({
|
|
10467
|
+
var AcceptControls = ({
|
|
10468
|
+
conflicts,
|
|
10469
|
+
side,
|
|
10470
|
+
onAccept,
|
|
10471
|
+
onDismiss,
|
|
10472
|
+
contentRef,
|
|
10473
|
+
argo
|
|
10474
|
+
}) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
10474
10475
|
"div",
|
|
10475
10476
|
{
|
|
10476
10477
|
className: cn(
|
|
10477
10478
|
"tw-z-10 tw-flex tw-shrink-0 tw-flex-col tw-items-center",
|
|
10478
|
-
conflicts.length > 0 ? "tw-w-
|
|
10479
|
+
conflicts.length > 0 ? "tw-w-7" : "tw-w-0"
|
|
10479
10480
|
),
|
|
10480
10481
|
children: conflicts.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
10481
10482
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw-shrink-0", style: { height: `${PANE_HEADER_HEIGHT_PX}px` } }),
|
|
@@ -10488,16 +10489,17 @@ var AcceptControls = ({ conflicts, side, onAccept, onDismiss, contentRef }) => /
|
|
|
10488
10489
|
className: "tw-absolute tw-inset-x-0 tw-flex tw-flex-col tw-items-center tw-gap-0.5",
|
|
10489
10490
|
style: { top: `${topOffset}px` },
|
|
10490
10491
|
children: [
|
|
10491
|
-
/* @__PURE__ */ jsxRuntime.jsx(AcceptButton, { side, onAccept: () => onAccept(conflict) }),
|
|
10492
|
+
/* @__PURE__ */ jsxRuntime.jsx(AcceptButton, { side, onAccept: () => onAccept(conflict), argo }),
|
|
10492
10493
|
onDismiss && /* @__PURE__ */ jsxRuntime.jsx(
|
|
10493
10494
|
Button,
|
|
10494
10495
|
{
|
|
10495
|
-
icon: "xmark",
|
|
10496
10496
|
onClick: () => onDismiss(conflict),
|
|
10497
10497
|
variant: "outline",
|
|
10498
|
-
size: "icon",
|
|
10498
|
+
size: "icon-sm",
|
|
10499
10499
|
title: "Dismiss",
|
|
10500
|
-
"aria-label": `Dismiss ${side === "left" ? "production" : "branch"} change
|
|
10500
|
+
"aria-label": `Dismiss ${side === "left" ? "production" : "branch"} change`,
|
|
10501
|
+
argo,
|
|
10502
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "tw-size-4" })
|
|
10501
10503
|
}
|
|
10502
10504
|
)
|
|
10503
10505
|
]
|
|
@@ -10600,14 +10602,18 @@ var MergePane = ({
|
|
|
10600
10602
|
backgroundColor: colors__default.default.neutral[50],
|
|
10601
10603
|
outline: "none"
|
|
10602
10604
|
},
|
|
10603
|
-
"&.cm-editor .cm-scroller": {
|
|
10604
|
-
alignItems: "stretch !important"
|
|
10605
|
-
},
|
|
10606
10605
|
".cm-gutters": {
|
|
10607
10606
|
backgroundColor: colors__default.default.neutral[100]
|
|
10608
10607
|
},
|
|
10609
10608
|
"*": { lineHeight: `${LINE_HEIGHT_PX}px` },
|
|
10610
10609
|
".cm-lineNumbers .cm-gutterElement": { padding: "0 0 0 25px" }
|
|
10610
|
+
}),
|
|
10611
|
+
// Recalc viewport after every doc change so late-settling layouts (alerts
|
|
10612
|
+
// appearing above the editor) don't leave trailing lines blank.
|
|
10613
|
+
view.EditorView.updateListener.of((update) => {
|
|
10614
|
+
if (update.docChanged) {
|
|
10615
|
+
requestAnimationFrame(() => update.view.dispatch({}));
|
|
10616
|
+
}
|
|
10611
10617
|
})
|
|
10612
10618
|
],
|
|
10613
10619
|
[]
|
|
@@ -10628,12 +10634,21 @@ var MergePane = ({
|
|
|
10628
10634
|
react.useEffect(() => {
|
|
10629
10635
|
return () => onScrollDOMReady?.(null);
|
|
10630
10636
|
}, [onScrollDOMReady]);
|
|
10637
|
+
react.useEffect(() => {
|
|
10638
|
+
const view = editorRef.current?.view;
|
|
10639
|
+
const wrapper = view?.dom.parentElement;
|
|
10640
|
+
if (!view || !wrapper) return;
|
|
10641
|
+
const observer = new ResizeObserver(() => view.dispatch({}));
|
|
10642
|
+
observer.observe(wrapper);
|
|
10643
|
+
return () => observer.disconnect();
|
|
10644
|
+
}, []);
|
|
10631
10645
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("tw-flex tw-min-w-0 tw-flex-1 tw-flex-col tw-overflow-hidden", className), children: [
|
|
10632
10646
|
header && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("tw-bg-white tw-px-4 tw-py-3", headerClassName), children: header }),
|
|
10633
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw-flex tw-h-0 tw-flex-1 tw-flex-col [&_>div]:tw-h-full
|
|
10647
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw-flex tw-h-0 tw-flex-1 tw-flex-col [&_>div]:tw-h-full", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
10634
10648
|
CodeMirror__default.default,
|
|
10635
10649
|
{
|
|
10636
10650
|
ref: editorRef,
|
|
10651
|
+
height: "100%",
|
|
10637
10652
|
value,
|
|
10638
10653
|
onChange,
|
|
10639
10654
|
extensions,
|
|
@@ -10725,7 +10740,8 @@ var MergeEditor = ({
|
|
|
10725
10740
|
middleHeaderClassName,
|
|
10726
10741
|
middleClassName,
|
|
10727
10742
|
rightHeader,
|
|
10728
|
-
className
|
|
10743
|
+
className,
|
|
10744
|
+
argo
|
|
10729
10745
|
}) => {
|
|
10730
10746
|
const { registerScroller, registerFollower } = useScrollSync();
|
|
10731
10747
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -10755,7 +10771,8 @@ var MergeEditor = ({
|
|
|
10755
10771
|
side: "left",
|
|
10756
10772
|
onAccept: acceptLeft,
|
|
10757
10773
|
onDismiss: dismissLeft,
|
|
10758
|
-
contentRef: registerFollower(0, "left-controls")
|
|
10774
|
+
contentRef: registerFollower(0, "left-controls"),
|
|
10775
|
+
argo
|
|
10759
10776
|
}
|
|
10760
10777
|
),
|
|
10761
10778
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -10778,7 +10795,8 @@ var MergeEditor = ({
|
|
|
10778
10795
|
side: "right",
|
|
10779
10796
|
onAccept: acceptRight,
|
|
10780
10797
|
onDismiss: dismissRight,
|
|
10781
|
-
contentRef: registerFollower(2, "right-controls")
|
|
10798
|
+
contentRef: registerFollower(2, "right-controls"),
|
|
10799
|
+
argo
|
|
10782
10800
|
}
|
|
10783
10801
|
),
|
|
10784
10802
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -10820,7 +10838,7 @@ var ConflictStatusIndicator = ({ remainingConflicts, remainingSafeChanges }) =>
|
|
|
10820
10838
|
colorClass
|
|
10821
10839
|
),
|
|
10822
10840
|
children: [
|
|
10823
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10841
|
+
allDone ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleCheck, { className: "tw-size-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangle, { className: "tw-size-4" }),
|
|
10824
10842
|
allDone ? "All changes resolved" : `${parts.join(", ")} remaining`
|
|
10825
10843
|
]
|
|
10826
10844
|
}
|
|
@@ -11456,13 +11474,7 @@ var CollapsiblePanel = ({
|
|
|
11456
11474
|
},
|
|
11457
11475
|
children: [
|
|
11458
11476
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw-flex tw-flex-1 tw-items-center tw-gap-2 tw-py-px tw-text-sm tw-font-medium tw-text-neutral-800", children: header }),
|
|
11459
|
-
!isDisabled && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw-ml-auto tw-shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
11460
|
-
Icon,
|
|
11461
|
-
{
|
|
11462
|
-
icon: "chevron-down",
|
|
11463
|
-
className: cn("tw-text-xs group-data-[state=open]:tw-rotate-180")
|
|
11464
|
-
}
|
|
11465
|
-
) })
|
|
11477
|
+
!isDisabled && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw-ml-auto tw-shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: cn("tw-size-5 group-data-[state=open]:tw-rotate-180") }) })
|
|
11466
11478
|
]
|
|
11467
11479
|
}
|
|
11468
11480
|
),
|
|
@@ -11502,11 +11514,10 @@ var PanelWithDetails = ({
|
|
|
11502
11514
|
onKeyUp: handleKeyUp,
|
|
11503
11515
|
children: [
|
|
11504
11516
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw-mr-2 tw-flex tw-shrink-0 tw-items-center", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
11505
|
-
|
|
11517
|
+
lucideReact.ChevronDown,
|
|
11506
11518
|
{
|
|
11507
|
-
icon: "chevron-down",
|
|
11508
11519
|
className: cn(
|
|
11509
|
-
"tw-
|
|
11520
|
+
"tw-size-5",
|
|
11510
11521
|
!isOpen ? "-tw-rotate-90" : placement === "bottom" ? "tw-rotate-180" : ""
|
|
11511
11522
|
)
|
|
11512
11523
|
}
|
|
@@ -11549,7 +11560,14 @@ var ANIMATION_CLASS_NAME = cn(
|
|
|
11549
11560
|
var Skeleton = ({ height = "md", className, count = 1 }) => {
|
|
11550
11561
|
const prefixId = react.useId();
|
|
11551
11562
|
const keys2 = Array.from({ length: count }, (_, i) => `${prefixId}-${i}`);
|
|
11552
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: keys2.map((key) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
11563
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: keys2.map((key) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
11564
|
+
"div",
|
|
11565
|
+
{
|
|
11566
|
+
"data-skeleton": "true",
|
|
11567
|
+
className: cn(HEIGHT_CLASS_NAME[height], ANIMATION_CLASS_NAME, className)
|
|
11568
|
+
},
|
|
11569
|
+
key
|
|
11570
|
+
)) });
|
|
11553
11571
|
};
|
|
11554
11572
|
var duplicateArray = (arr, times) => {
|
|
11555
11573
|
return Array(times).fill(arr).flat();
|
|
@@ -11681,7 +11699,7 @@ var TableRow = ({
|
|
|
11681
11699
|
className,
|
|
11682
11700
|
...props
|
|
11683
11701
|
}) => /* @__PURE__ */ jsxRuntime.jsx("tr", { ref, className: cn("hover:tw-bg-neutral-100", className), ...props });
|
|
11684
|
-
var
|
|
11702
|
+
var Table2 = ({
|
|
11685
11703
|
borderCollapsed = true,
|
|
11686
11704
|
bordered = false,
|
|
11687
11705
|
containerClassName,
|
|
@@ -11710,12 +11728,12 @@ var Table = ({
|
|
|
11710
11728
|
}
|
|
11711
11729
|
);
|
|
11712
11730
|
};
|
|
11713
|
-
|
|
11714
|
-
|
|
11715
|
-
|
|
11716
|
-
|
|
11717
|
-
|
|
11718
|
-
|
|
11731
|
+
Table2.Header = TableHeader;
|
|
11732
|
+
Table2.Head = TableHead;
|
|
11733
|
+
Table2.Body = TableBody;
|
|
11734
|
+
Table2.Row = TableRow;
|
|
11735
|
+
Table2.Cell = TableCell;
|
|
11736
|
+
Table2.Footer = TableFooter;
|
|
11719
11737
|
var resizableHandleVariants = classVarianceAuthority.cva([
|
|
11720
11738
|
// base styles
|
|
11721
11739
|
"tw-bg-neutral-50",
|
|
@@ -11850,7 +11868,7 @@ var ToastDismiss = ({
|
|
|
11850
11868
|
"tailwindcss-preflight",
|
|
11851
11869
|
"[&_svg]:tw-aspect-square",
|
|
11852
11870
|
"[&_svg]:tw-size-4",
|
|
11853
|
-
"[&_svg]:tw-
|
|
11871
|
+
"[&_svg]:tw-m-1",
|
|
11854
11872
|
"tw-text-white",
|
|
11855
11873
|
"group-data-[variant=default]/toast:[&_svg]:tw-text-popover-foreground",
|
|
11856
11874
|
className
|
|
@@ -11858,7 +11876,7 @@ var ToastDismiss = ({
|
|
|
11858
11876
|
type: "button",
|
|
11859
11877
|
...rest,
|
|
11860
11878
|
children: [
|
|
11861
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11879
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, {}),
|
|
11862
11880
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "tw-sr-only", children: "Dismiss" })
|
|
11863
11881
|
]
|
|
11864
11882
|
}
|
|
@@ -11960,10 +11978,10 @@ var variants11 = classVarianceAuthority.cva(
|
|
|
11960
11978
|
}
|
|
11961
11979
|
);
|
|
11962
11980
|
var DEFAULT_VARIANT_ICON = {
|
|
11963
|
-
error:
|
|
11964
|
-
info:
|
|
11965
|
-
success:
|
|
11966
|
-
warning:
|
|
11981
|
+
error: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangle, {}),
|
|
11982
|
+
info: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Info, {}),
|
|
11983
|
+
success: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleCheck, {}),
|
|
11984
|
+
warning: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertCircle, {})
|
|
11967
11985
|
};
|
|
11968
11986
|
var ToastRoot = ({
|
|
11969
11987
|
id,
|
|
@@ -11976,8 +11994,8 @@ var ToastRoot = ({
|
|
|
11976
11994
|
icon: iconProp
|
|
11977
11995
|
}) => {
|
|
11978
11996
|
const icon = (() => {
|
|
11979
|
-
if (loading) return "
|
|
11980
|
-
if (iconProp) return iconProp;
|
|
11997
|
+
if (loading) return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "tw-animate-spin" });
|
|
11998
|
+
if (iconProp) return renderLegacyIcon(iconProp);
|
|
11981
11999
|
if (variant === "default" || variant === null) return null;
|
|
11982
12000
|
return DEFAULT_VARIANT_ICON[variant];
|
|
11983
12001
|
})();
|
|
@@ -11987,20 +12005,24 @@ var ToastRoot = ({
|
|
|
11987
12005
|
};
|
|
11988
12006
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-variant": variant, className: cn(variants11({ variant })), children: [
|
|
11989
12007
|
icon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
11990
|
-
|
|
12008
|
+
"span",
|
|
11991
12009
|
{
|
|
11992
12010
|
"data-slot": "toast-icon",
|
|
11993
|
-
spin: loading,
|
|
11994
12011
|
className: cn(
|
|
11995
|
-
|
|
12012
|
+
"tw-inline-flex",
|
|
12013
|
+
"tw-items-center",
|
|
12014
|
+
"tw-justify-center",
|
|
12015
|
+
// styles — container at 20px with no padding so the 20px Lucide
|
|
12016
|
+
// glyph fills the slot (previous tw-size-4 + tw-p-1 clipped a
|
|
12017
|
+
// 16px child into 8px of visible space)
|
|
11996
12018
|
"tw-aspect-square",
|
|
11997
|
-
"tw-size-
|
|
12019
|
+
"tw-size-5",
|
|
11998
12020
|
"tw-shrink-0",
|
|
11999
|
-
"tw-
|
|
12021
|
+
"[&_svg]:tw-size-5",
|
|
12000
12022
|
"tw-text-white",
|
|
12001
12023
|
"group-data-[variant=default]/toast:tw-text-popover-foreground"
|
|
12002
12024
|
),
|
|
12003
|
-
icon
|
|
12025
|
+
children: icon
|
|
12004
12026
|
}
|
|
12005
12027
|
),
|
|
12006
12028
|
/* @__PURE__ */ jsxRuntime.jsx(ToastTitle, { children: title }),
|
|
@@ -12349,11 +12371,17 @@ var Footer = ({
|
|
|
12349
12371
|
}
|
|
12350
12372
|
);
|
|
12351
12373
|
var PageLayout = Object.assign(Root27, {
|
|
12374
|
+
/** Detail-pattern breadcrumb row. Usually composed automatically by `PageHeader.Detail` — slot exists for layouts that don't fit either `PageHeader` variant. */
|
|
12352
12375
|
Breadcrumbs,
|
|
12376
|
+
/** Host slot for `PageHeader.Index` / `PageHeader.Detail`, or custom header JSX when neither variant fits. */
|
|
12353
12377
|
Header,
|
|
12378
|
+
/** Escape hatch for routing-based tab rows. Use `Tabs` / `TabsContent` core components inside, never a raw `<button>`. */
|
|
12354
12379
|
Tabs: Tabs2,
|
|
12380
|
+
/** Search / filter pill row. Belongs here, NOT in the header per the page-header patterns. */
|
|
12355
12381
|
Toolbar,
|
|
12382
|
+
/** Main content slot. Lists, cards, tables. */
|
|
12356
12383
|
Content: Content11,
|
|
12384
|
+
/** Bottom action bar — form submit + cancel. Pass `sticky` for a footer that pins to the viewport. */
|
|
12357
12385
|
Footer
|
|
12358
12386
|
});
|
|
12359
12387
|
|
|
@@ -12431,9 +12459,80 @@ var PageHeaderIndex = ({
|
|
|
12431
12459
|
|
|
12432
12460
|
// src/blocks/PageHeader/PageHeader.tsx
|
|
12433
12461
|
var PageHeader = {
|
|
12462
|
+
/** Index variant — top-level list / collection pages. No breadcrumbs; `metadata` wins over `description`. */
|
|
12434
12463
|
Index: PageHeaderIndex,
|
|
12464
|
+
/** Detail variant — single-entity pages with required breadcrumbs and an overflow-actions slot. Max 2 visible actions. */
|
|
12435
12465
|
Detail: PageHeaderDetail
|
|
12436
12466
|
};
|
|
12467
|
+
var Root28 = ({ ref, className, children, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
12468
|
+
"div",
|
|
12469
|
+
{
|
|
12470
|
+
ref,
|
|
12471
|
+
className: cn("tw-flex tw-flex-wrap tw-items-center tw-gap-3 tw-w-full", className),
|
|
12472
|
+
...props,
|
|
12473
|
+
children
|
|
12474
|
+
}
|
|
12475
|
+
);
|
|
12476
|
+
var Search4 = ({ ref, className, children, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
12477
|
+
"div",
|
|
12478
|
+
{
|
|
12479
|
+
ref,
|
|
12480
|
+
className: cn(
|
|
12481
|
+
"tw-mr-auto tw-flex tw-items-center tw-gap-2 tw-w-full sm:tw-w-auto sm:tw-min-w-64 sm:tw-max-w-md",
|
|
12482
|
+
className
|
|
12483
|
+
),
|
|
12484
|
+
...props,
|
|
12485
|
+
children
|
|
12486
|
+
}
|
|
12487
|
+
);
|
|
12488
|
+
var Right = ({ ref, className, children, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
12489
|
+
"div",
|
|
12490
|
+
{
|
|
12491
|
+
ref,
|
|
12492
|
+
className: cn("tw-flex tw-flex-wrap tw-items-center tw-gap-2", className),
|
|
12493
|
+
...props,
|
|
12494
|
+
children
|
|
12495
|
+
}
|
|
12496
|
+
);
|
|
12497
|
+
var ControlGroup = ({ ref, className, children, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cn("tw-flex tw-items-center tw-gap-2", className), ...props, children });
|
|
12498
|
+
var ActiveFilters = ({ ref, className, children, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
12499
|
+
"div",
|
|
12500
|
+
{
|
|
12501
|
+
ref,
|
|
12502
|
+
className: cn("tw-flex tw-flex-wrap tw-items-center tw-gap-2 tw-basis-full", className),
|
|
12503
|
+
...props,
|
|
12504
|
+
children
|
|
12505
|
+
}
|
|
12506
|
+
);
|
|
12507
|
+
var AddFilter = ({ className, children, ...props }) => /* @__PURE__ */ jsxRuntime.jsxs(Button, { argo: true, variant: "invisible", size: "small", className: cn("tw-gap-1.5", className), ...props, children: [
|
|
12508
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: "plus" }),
|
|
12509
|
+
children ?? "Add filter"
|
|
12510
|
+
] });
|
|
12511
|
+
var Clear = ({ className, children, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(Button, { argo: true, variant: "invisible", size: "small", className: cn("tw-ml-auto", className), ...props, children: children ?? "Clear all" });
|
|
12512
|
+
var PageToolbar = Object.assign(Root28, {
|
|
12513
|
+
/** Left slot — typically a `SearchInput`. */
|
|
12514
|
+
Search: Search4,
|
|
12515
|
+
/** Right cluster — host the four control groups below in the recommended order. */
|
|
12516
|
+
Right,
|
|
12517
|
+
/** Filter controls (`Combobox`, `Select`, `DatePicker`). */
|
|
12518
|
+
Filters: ControlGroup,
|
|
12519
|
+
/** Sort control. */
|
|
12520
|
+
Sort: ControlGroup,
|
|
12521
|
+
/** Utility actions (Export, Refresh, …). */
|
|
12522
|
+
Actions: ControlGroup,
|
|
12523
|
+
/** View toggle (List / Grid). Always render last in the right cluster. */
|
|
12524
|
+
View: ControlGroup,
|
|
12525
|
+
/**
|
|
12526
|
+
* Active filters row. Render only when one or more filters are active. Pass filter chips
|
|
12527
|
+
* (Standard variant) or tokens (Query Builder variant) as children, optionally followed
|
|
12528
|
+
* by `AddFilter` / `Clear`.
|
|
12529
|
+
*/
|
|
12530
|
+
ActiveFilters,
|
|
12531
|
+
/** "+ Add filter" action — typically rendered after the chips/tokens in `ActiveFilters`. */
|
|
12532
|
+
AddFilter,
|
|
12533
|
+
/** "Clear all" action — self-aligns to the far right of `ActiveFilters`. */
|
|
12534
|
+
Clear
|
|
12535
|
+
});
|
|
12437
12536
|
var SearchInput = ({
|
|
12438
12537
|
ref,
|
|
12439
12538
|
// group props
|
|
@@ -12513,7 +12612,7 @@ var SearchInput = ({
|
|
|
12513
12612
|
focusVariant,
|
|
12514
12613
|
className,
|
|
12515
12614
|
children: [
|
|
12516
|
-
/* @__PURE__ */ jsxRuntime.jsx(InputGroup.Addon, { align: "inline-start", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
12615
|
+
/* @__PURE__ */ jsxRuntime.jsx(InputGroup.Addon, { align: "inline-start", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "tw-size-4 tw-text-muted-foreground" }) }),
|
|
12517
12616
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12518
12617
|
InputGroup.Input,
|
|
12519
12618
|
{
|
|
@@ -12529,10 +12628,10 @@ var SearchInput = ({
|
|
|
12529
12628
|
canClear && /* @__PURE__ */ jsxRuntime.jsx(InputGroup.Addon, { align: "inline-end", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
12530
12629
|
InputGroup.Button,
|
|
12531
12630
|
{
|
|
12532
|
-
icon: "xmark",
|
|
12533
12631
|
"aria-label": "Clear search",
|
|
12534
12632
|
onMouseDown: (event) => event.preventDefault(),
|
|
12535
|
-
onClick: handleClear
|
|
12633
|
+
onClick: handleClear,
|
|
12634
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "tw-size-4" })
|
|
12536
12635
|
}
|
|
12537
12636
|
) })
|
|
12538
12637
|
]
|
|
@@ -12569,7 +12668,7 @@ var SearchInputWithNavigation = ({
|
|
|
12569
12668
|
placeholder,
|
|
12570
12669
|
onValueChange,
|
|
12571
12670
|
onClear,
|
|
12572
|
-
prefix: /* @__PURE__ */ jsxRuntime.jsx(
|
|
12671
|
+
prefix: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "tw-size-4 tw-text-neutral-400" }),
|
|
12573
12672
|
focusVariant,
|
|
12574
12673
|
onKeyDown: handleKeyDown2,
|
|
12575
12674
|
variant,
|
|
@@ -12595,7 +12694,7 @@ var SearchInputWithNavigation = ({
|
|
|
12595
12694
|
size: "icon-3xs",
|
|
12596
12695
|
onClick: onNavigatePrevious,
|
|
12597
12696
|
disabled: !totalResults,
|
|
12598
|
-
|
|
12697
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronUp, { className: "tw-size-4" })
|
|
12599
12698
|
}
|
|
12600
12699
|
),
|
|
12601
12700
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -12605,7 +12704,7 @@ var SearchInputWithNavigation = ({
|
|
|
12605
12704
|
size: "icon-3xs",
|
|
12606
12705
|
onClick: onNavigateNext,
|
|
12607
12706
|
disabled: !totalResults,
|
|
12608
|
-
|
|
12707
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "tw-size-4" })
|
|
12609
12708
|
}
|
|
12610
12709
|
)
|
|
12611
12710
|
] })
|
|
@@ -12622,7 +12721,7 @@ var TagItem = ({ tag, onRemove, disabled = false }) => {
|
|
|
12622
12721
|
const isDisabled = disabled || !!tag.disabled;
|
|
12623
12722
|
return /* @__PURE__ */ jsxRuntime.jsxs(Badge.Root, { variant: "tag", color: tag.color, children: [
|
|
12624
12723
|
/* @__PURE__ */ jsxRuntime.jsx(Badge.Label, { children: tag.name }),
|
|
12625
|
-
onRemove && !isDisabled && /* @__PURE__ */ jsxRuntime.jsx(Badge.Addon, { variant: "floating", align: "inline-end", children: /* @__PURE__ */ jsxRuntime.jsx(Badge.Button, { onClick: handleRemove,
|
|
12724
|
+
onRemove && !isDisabled && /* @__PURE__ */ jsxRuntime.jsx(Badge.Addon, { variant: "floating", align: "inline-end", children: /* @__PURE__ */ jsxRuntime.jsx(Badge.Button, { onClick: handleRemove, "aria-label": "Remove Tag", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "tw-size-3" }) }) })
|
|
12626
12725
|
] });
|
|
12627
12726
|
};
|
|
12628
12727
|
var TagSelectCreateItem = ({ onCreate, value }) => {
|
|
@@ -12641,7 +12740,7 @@ var TagSelectCreateItem = ({ onCreate, value }) => {
|
|
|
12641
12740
|
className: cn("[&_svg]:tw-text-primary-500", {
|
|
12642
12741
|
"tw-hidden": !isCreateItemVisible
|
|
12643
12742
|
}),
|
|
12644
|
-
icon: "
|
|
12743
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(icons$1.Plus, { className: "tw-size-4" }),
|
|
12645
12744
|
children: [
|
|
12646
12745
|
"Create",
|
|
12647
12746
|
" ",
|
|
@@ -12723,7 +12822,7 @@ var TagSelectList = ({ options = defaultOptions, onAdd, onCreate }) => {
|
|
|
12723
12822
|
Command.Input,
|
|
12724
12823
|
{
|
|
12725
12824
|
variant: "secondary",
|
|
12726
|
-
prefix: /* @__PURE__ */ jsxRuntime.jsx(
|
|
12825
|
+
prefix: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "tw-size-4 tw-text-neutral-400" }),
|
|
12727
12826
|
placeholder: "Search tags",
|
|
12728
12827
|
allowClear: true
|
|
12729
12828
|
}
|
|
@@ -12799,7 +12898,7 @@ var Tagger = ({
|
|
|
12799
12898
|
return /* @__PURE__ */ jsxRuntime.jsx(TooltipProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("ul", { className: "tailwindcss-preflight tw-flex tw-min-h-6 tw-flex-wrap tw-items-center tw-gap-2", children: [
|
|
12800
12899
|
value.map((tag) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(TagItem, { disabled, tag, onRemove: handleRemove }) }, tag.name)),
|
|
12801
12900
|
!disabled && /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(TagSelectPopover, { options: tagsToAdd, onAdd: handleAdd, onCreate: handleCreate, children: /* @__PURE__ */ jsxRuntime.jsx(Badge, { color: "gray-inverse", asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs("button", { type: "button", className: "tw-flex tw-items-center tw-gap-1", children: [
|
|
12802
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12901
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "tw-size-4" }),
|
|
12803
12902
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12804
12903
|
"span",
|
|
12805
12904
|
{
|
|
@@ -12825,13 +12924,13 @@ var MultiActionButton = ({
|
|
|
12825
12924
|
Button,
|
|
12826
12925
|
{
|
|
12827
12926
|
disabled,
|
|
12828
|
-
icon,
|
|
12829
12927
|
isLoading,
|
|
12830
12928
|
"aria-label": label,
|
|
12831
12929
|
onClick,
|
|
12832
12930
|
variant: "invisible",
|
|
12833
12931
|
size: "icon",
|
|
12834
|
-
"data-testid": dataTestId
|
|
12932
|
+
"data-testid": dataTestId,
|
|
12933
|
+
children: !isLoading && icon
|
|
12835
12934
|
}
|
|
12836
12935
|
) });
|
|
12837
12936
|
var MultiActionButtonGroup = ({ children, className }) => /* @__PURE__ */ jsxRuntime.jsx(ButtonGroup, { className: cn("tw-text-nowrap", className), children });
|
|
@@ -12844,15 +12943,15 @@ var variantClasses = {
|
|
|
12844
12943
|
};
|
|
12845
12944
|
var renderVariantIcon = (variant) => {
|
|
12846
12945
|
if (variant === "processing") {
|
|
12847
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12946
|
+
return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "tw-size-4 tw-animate-spin" });
|
|
12848
12947
|
}
|
|
12849
12948
|
if (variant === "error") {
|
|
12850
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12949
|
+
return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.XCircle, { className: "tw-size-4" });
|
|
12851
12950
|
}
|
|
12852
12951
|
if (variant === "dismissed") {
|
|
12853
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12952
|
+
return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.XCircle, { className: "tw-size-4 tw-text-neutral-500" });
|
|
12854
12953
|
}
|
|
12855
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12954
|
+
return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleCheck, { className: "tw-size-4" });
|
|
12856
12955
|
};
|
|
12857
12956
|
var CollapsibleStepHeader = ({
|
|
12858
12957
|
isExpanded,
|
|
@@ -12876,10 +12975,9 @@ var CollapsibleStepHeader = ({
|
|
|
12876
12975
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: label })
|
|
12877
12976
|
] }),
|
|
12878
12977
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12879
|
-
|
|
12978
|
+
lucideReact.ChevronDown,
|
|
12880
12979
|
{
|
|
12881
|
-
|
|
12882
|
-
className: cn("tw-size-3 tw-transition-transform", isExpanded && "tw-rotate-180")
|
|
12980
|
+
className: cn("tw-size-4 tw-transition-transform", isExpanded && "tw-rotate-180")
|
|
12883
12981
|
}
|
|
12884
12982
|
)
|
|
12885
12983
|
]
|
|
@@ -12889,19 +12987,19 @@ var CollapsibleStepHeader = ({
|
|
|
12889
12987
|
var InlineStepDetail = ({ children }) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw-ml-2.5 tw-whitespace-pre-wrap tw-border-l tw-border-neutral-200 tw-pl-3 tw-text-xs tw-text-neutral-400", children });
|
|
12890
12988
|
var renderVariantIcon2 = (variant) => {
|
|
12891
12989
|
if (variant === "processing") {
|
|
12892
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12990
|
+
return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "tw-size-4 tw-animate-spin tw-text-neutral-200" });
|
|
12893
12991
|
}
|
|
12894
12992
|
if (variant === "error") {
|
|
12895
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12993
|
+
return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.XCircle, { className: "tw-size-4 tw-text-error-500" });
|
|
12896
12994
|
}
|
|
12897
12995
|
if (variant === "dismissed") {
|
|
12898
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12996
|
+
return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.XCircle, { className: "tw-size-4 tw-text-neutral-200" });
|
|
12899
12997
|
}
|
|
12900
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12998
|
+
return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleCheck, { className: "tw-size-4 tw-text-neutral-200" });
|
|
12901
12999
|
};
|
|
12902
|
-
var InlineStepLabel = ({ variant, children }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "tw-flex tw-items-center tw-gap-1", children: [
|
|
13000
|
+
var InlineStepLabel = ({ variant, children }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "tw-flex tw-min-w-0 tw-items-center tw-gap-1", children: [
|
|
12903
13001
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw-flex tw-size-5 tw-shrink-0 tw-items-center tw-justify-center", children: renderVariantIcon2(variant) }),
|
|
12904
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw-flex tw-flex-wrap tw-items-center tw-gap-x-1.5 tw-gap-y-1 tw-text-sm tw-font-medium tw-italic tw-text-neutral-800", children })
|
|
13002
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw-flex tw-min-w-0 tw-flex-wrap tw-items-center tw-gap-x-1.5 tw-gap-y-1 tw-text-sm tw-font-medium tw-italic tw-text-neutral-800", children })
|
|
12905
13003
|
] });
|
|
12906
13004
|
var SECTION_LABELS = {
|
|
12907
13005
|
success: "Answered questions",
|
|
@@ -12955,7 +13053,7 @@ var contentClasses = classVarianceAuthority.cva(
|
|
|
12955
13053
|
{
|
|
12956
13054
|
variants: {
|
|
12957
13055
|
variant: {
|
|
12958
|
-
assistant: ["tw-flex-1", "tw-w-full", "tw-min-w-0"],
|
|
13056
|
+
assistant: ["tw-flex-1", "tw-w-full", "tw-min-w-0", "[&>*]:tw-min-w-0"],
|
|
12959
13057
|
user: [
|
|
12960
13058
|
"tw-max-w-screen-sm",
|
|
12961
13059
|
"tw-w-fit",
|
|
@@ -13016,10 +13114,9 @@ var ExpandToggle = ({
|
|
|
13016
13114
|
children: [
|
|
13017
13115
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: isExpanded ? showLessLabel : showMoreLabel }),
|
|
13018
13116
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
13019
|
-
|
|
13117
|
+
lucideReact.ChevronDown,
|
|
13020
13118
|
{
|
|
13021
|
-
|
|
13022
|
-
className: cn("tw-size-3 tw-transition-transform", isExpanded && "tw-rotate-180")
|
|
13119
|
+
className: cn("tw-size-5 tw-transition-transform", isExpanded && "tw-rotate-180")
|
|
13023
13120
|
}
|
|
13024
13121
|
)
|
|
13025
13122
|
]
|
|
@@ -13125,11 +13222,11 @@ var PlanApproval = ({
|
|
|
13125
13222
|
argo: true,
|
|
13126
13223
|
variant: "outline",
|
|
13127
13224
|
size: "icon-sm",
|
|
13128
|
-
icon: ["far", "xmark"],
|
|
13129
13225
|
"aria-label": closeLabel,
|
|
13130
13226
|
onClick: onClose,
|
|
13131
13227
|
disabled: isSubmitting,
|
|
13132
|
-
"data-testid": "plan-close-button"
|
|
13228
|
+
"data-testid": "plan-close-button",
|
|
13229
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "tw-size-4" })
|
|
13133
13230
|
}
|
|
13134
13231
|
)
|
|
13135
13232
|
] }),
|
|
@@ -13173,11 +13270,11 @@ var PlanApproval = ({
|
|
|
13173
13270
|
type: "submit",
|
|
13174
13271
|
variant: "invisible",
|
|
13175
13272
|
size: "icon-sm",
|
|
13176
|
-
icon: "paper-plane-top",
|
|
13177
13273
|
"aria-label": changeRequestSubmitLabel,
|
|
13178
13274
|
disabled: !canSubmitChangeRequest,
|
|
13179
13275
|
className: "tw-absolute tw-right-2 tw-top-1/2 tw--translate-y-1/2 [&_svg]:tw-text-secondary-500 not-disabled:hover:[&_svg]:tw-text-secondary-600",
|
|
13180
|
-
"data-testid": "plan-change-request-submit"
|
|
13276
|
+
"data-testid": "plan-change-request-submit",
|
|
13277
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Send, { className: "tw-size-4" })
|
|
13181
13278
|
}
|
|
13182
13279
|
)
|
|
13183
13280
|
] })
|
|
@@ -13253,7 +13350,7 @@ var PlanRewritingIndicator = ({
|
|
|
13253
13350
|
role: "status",
|
|
13254
13351
|
"data-testid": "plan-rewriting-indicator",
|
|
13255
13352
|
children: [
|
|
13256
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
13353
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "tw-size-4 tw-animate-spin tw-text-secondary-500" }),
|
|
13257
13354
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "tw-text-sm tw-italic tw-text-secondary-500", children: label })
|
|
13258
13355
|
]
|
|
13259
13356
|
}
|
|
@@ -13274,11 +13371,11 @@ var PromptInputSubmit = ({
|
|
|
13274
13371
|
disabled,
|
|
13275
13372
|
status = "ready"
|
|
13276
13373
|
}) => {
|
|
13277
|
-
const
|
|
13278
|
-
if (status === "streaming") return "
|
|
13279
|
-
if (status === "interrupted") return "
|
|
13280
|
-
return "
|
|
13281
|
-
};
|
|
13374
|
+
const icon = (() => {
|
|
13375
|
+
if (status === "streaming") return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CirclePause, { className: "tw-size-4" });
|
|
13376
|
+
if (status === "interrupted") return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Play, { className: "tw-size-4" });
|
|
13377
|
+
return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Send, { className: "tw-size-4" });
|
|
13378
|
+
})();
|
|
13282
13379
|
const getTooltipText = () => {
|
|
13283
13380
|
if (status === "streaming") return "Stop";
|
|
13284
13381
|
if (status === "interrupted") return "Continue";
|
|
@@ -13294,8 +13391,8 @@ var PromptInputSubmit = ({
|
|
|
13294
13391
|
size: "icon-sm",
|
|
13295
13392
|
variant: "invisible",
|
|
13296
13393
|
isLoading: status === "submitted",
|
|
13297
|
-
|
|
13298
|
-
|
|
13394
|
+
className: "tw-ml-auto tw-flex tw-items-center tw-rounded-lg [&_svg]:tw-text-secondary-500 not-disabled:hover:[&_svg]:tw-text-secondary-600",
|
|
13395
|
+
children: status !== "submitted" && icon
|
|
13299
13396
|
}
|
|
13300
13397
|
) }) }),
|
|
13301
13398
|
getTooltipText() && /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Content, { placement: "top", variant: "action", children: getTooltipText() })
|
|
@@ -13545,10 +13642,10 @@ var Question = ({
|
|
|
13545
13642
|
argo: true,
|
|
13546
13643
|
variant: "outline",
|
|
13547
13644
|
size: "icon-sm",
|
|
13548
|
-
icon: ["far", "xmark"],
|
|
13549
13645
|
"aria-label": "Close",
|
|
13550
13646
|
onClick: onClose,
|
|
13551
|
-
"data-testid": "question-close-button"
|
|
13647
|
+
"data-testid": "question-close-button",
|
|
13648
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "tw-size-4" })
|
|
13552
13649
|
}
|
|
13553
13650
|
)
|
|
13554
13651
|
] }),
|
|
@@ -13657,11 +13754,10 @@ var Question = ({
|
|
|
13657
13754
|
onClick: onPrevious,
|
|
13658
13755
|
"aria-label": "Previous step",
|
|
13659
13756
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
13660
|
-
|
|
13757
|
+
lucideReact.ChevronLeft,
|
|
13661
13758
|
{
|
|
13662
|
-
icon: "chevron-left",
|
|
13663
13759
|
className: cn(
|
|
13664
|
-
"tw-size-
|
|
13760
|
+
"tw-size-5",
|
|
13665
13761
|
isFirstStep ? "tw-text-primary/25" : "tw-text-primary"
|
|
13666
13762
|
)
|
|
13667
13763
|
}
|
|
@@ -13682,11 +13778,10 @@ var Question = ({
|
|
|
13682
13778
|
onClick: onNext,
|
|
13683
13779
|
"aria-label": "Next step",
|
|
13684
13780
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
13685
|
-
|
|
13781
|
+
lucideReact.ChevronRight,
|
|
13686
13782
|
{
|
|
13687
|
-
icon: "chevron-right",
|
|
13688
13783
|
className: cn(
|
|
13689
|
-
"tw-size-
|
|
13784
|
+
"tw-size-5",
|
|
13690
13785
|
currentStep === totalSteps ? "tw-text-primary/25" : "tw-text-primary"
|
|
13691
13786
|
)
|
|
13692
13787
|
}
|
|
@@ -13786,11 +13881,18 @@ var SuggestedPrompt = ({ label, disabled, onClick, icon, className }) => {
|
|
|
13786
13881
|
onClick,
|
|
13787
13882
|
children: [
|
|
13788
13883
|
icon ?? /* @__PURE__ */ jsxRuntime.jsx(
|
|
13789
|
-
|
|
13884
|
+
lucideReact.FileText,
|
|
13790
13885
|
{
|
|
13791
|
-
className:
|
|
13792
|
-
|
|
13793
|
-
|
|
13886
|
+
className: cn(
|
|
13887
|
+
"tw-size-4 tw-shrink-0 tw-basis-4",
|
|
13888
|
+
// Lucide icons are stroke-based — paint the visible line with the
|
|
13889
|
+
// AI gradient (no fill, so the glyph keeps its outline silhouette
|
|
13890
|
+
// instead of becoming a solid block). The `*` selector catches
|
|
13891
|
+
// every shape element (path, circle, polyline, …) so multi-part
|
|
13892
|
+
// icons don't lose sub-shapes the way `path`-only selectors do.
|
|
13893
|
+
"[&_*]:tw-stroke-aigradient-600",
|
|
13894
|
+
"group-not-disabled:group-hover:[&_*]:tw-stroke-secondary-600"
|
|
13895
|
+
)
|
|
13794
13896
|
}
|
|
13795
13897
|
),
|
|
13796
13898
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw-whitespace-normal tw-text-left", children: label })
|
|
@@ -13800,7 +13902,7 @@ var SuggestedPrompt = ({ label, disabled, onClick, icon, className }) => {
|
|
|
13800
13902
|
};
|
|
13801
13903
|
var ThinkingIndicator = ({ label = "Thinking..." }) => {
|
|
13802
13904
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "tw-flex tw-items-center tw-gap-2", "data-testid": "chat-thinking-indicator", children: [
|
|
13803
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
13905
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "tw-size-4 tw-animate-spin tw-text-secondary-500" }),
|
|
13804
13906
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "tw-text-sm tw-italic tw-text-secondary-500", children: label })
|
|
13805
13907
|
] });
|
|
13806
13908
|
};
|
|
@@ -13870,15 +13972,15 @@ var AutoSaveTextarea = ({
|
|
|
13870
13972
|
" / ",
|
|
13871
13973
|
maxLength
|
|
13872
13974
|
] }),
|
|
13873
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "tw-text-neutral-400", children: [
|
|
13975
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "tw-flex tw-items-center tw-gap-1 tw-text-neutral-400", children: [
|
|
13874
13976
|
isOverLimit && "Character limit exceeded",
|
|
13875
13977
|
!isOverLimit && isChanged && !isSaving && "Unsaved",
|
|
13876
13978
|
!isOverLimit && isChanged && isSaving && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
13877
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
13979
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "tw-size-4 tw-animate-spin" }),
|
|
13878
13980
|
" Saving"
|
|
13879
13981
|
] }),
|
|
13880
13982
|
!isOverLimit && value !== null && !isChanged && !isSaving && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
13881
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
13983
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleCheck, { className: "tw-size-4 tw-text-primary-500" }),
|
|
13882
13984
|
" Saved"
|
|
13883
13985
|
] })
|
|
13884
13986
|
] })
|
|
@@ -13987,30 +14089,23 @@ var PasswordInput = ({
|
|
|
13987
14089
|
}
|
|
13988
14090
|
),
|
|
13989
14091
|
(capsLock || canClear || allowPasswordToggle) && /* @__PURE__ */ jsxRuntime.jsxs(InputGroup.Addon, { align: "inline-end", children: [
|
|
13990
|
-
capsLock && /* @__PURE__ */ jsxRuntime.jsx(
|
|
13991
|
-
Icon,
|
|
13992
|
-
{
|
|
13993
|
-
icon: "up-from-line",
|
|
13994
|
-
title: "Caps Lock is on",
|
|
13995
|
-
className: "tw-size-4 tw-text-primary"
|
|
13996
|
-
}
|
|
13997
|
-
),
|
|
14092
|
+
capsLock && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowBigUpDash, { className: "tw-size-4 tw-text-primary", children: /* @__PURE__ */ jsxRuntime.jsx("title", { children: "Caps Lock is on" }) }),
|
|
13998
14093
|
canClear && /* @__PURE__ */ jsxRuntime.jsx(
|
|
13999
14094
|
InputGroup.Button,
|
|
14000
14095
|
{
|
|
14001
|
-
icon: "xmark",
|
|
14002
14096
|
"aria-label": "Clear password",
|
|
14003
14097
|
onMouseDown: (event) => event.preventDefault(),
|
|
14004
|
-
onClick: handleClear
|
|
14098
|
+
onClick: handleClear,
|
|
14099
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "tw-size-4" })
|
|
14005
14100
|
}
|
|
14006
14101
|
),
|
|
14007
14102
|
allowPasswordToggle && /* @__PURE__ */ jsxRuntime.jsx(
|
|
14008
14103
|
InputGroup.Button,
|
|
14009
14104
|
{
|
|
14010
|
-
icon: isPasswordVisible ? "eye-slash" : "eye",
|
|
14011
14105
|
"aria-label": isPasswordVisible ? "Hide password" : "Show password",
|
|
14012
14106
|
onMouseDown: (event) => event.preventDefault(),
|
|
14013
|
-
onClick: handleTogglePasswordVisibility
|
|
14107
|
+
onClick: handleTogglePasswordVisibility,
|
|
14108
|
+
children: isPasswordVisible ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.EyeOff, { className: "tw-size-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Eye, { className: "tw-size-4" })
|
|
14014
14109
|
}
|
|
14015
14110
|
)
|
|
14016
14111
|
] })
|
|
@@ -14380,10 +14475,10 @@ var ZoomableSvg = ({ html, copyText, className }) => {
|
|
|
14380
14475
|
{
|
|
14381
14476
|
size: "icon-sm",
|
|
14382
14477
|
variant: "outline",
|
|
14383
|
-
icon: isFullscreen ? "down-left-and-up-right-to-center" : "up-right-and-down-left-from-center",
|
|
14384
14478
|
"aria-label": isFullscreen ? "Exit fullscreen" : "Fullscreen",
|
|
14385
14479
|
onClick: () => setIsFullscreen((f) => !f),
|
|
14386
|
-
argo: true
|
|
14480
|
+
argo: true,
|
|
14481
|
+
children: isFullscreen ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Minimize2, { className: "tw-size-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Maximize2, { className: "tw-size-4" })
|
|
14387
14482
|
}
|
|
14388
14483
|
)
|
|
14389
14484
|
}
|
|
@@ -14505,7 +14600,7 @@ exports.Breadcrumb = Breadcrumb;
|
|
|
14505
14600
|
exports.Button = Button;
|
|
14506
14601
|
exports.ButtonGroup = ButtonGroup;
|
|
14507
14602
|
exports.ButtonInline = ButtonInline;
|
|
14508
|
-
exports.Calendar =
|
|
14603
|
+
exports.Calendar = Calendar2;
|
|
14509
14604
|
exports.Card = Card;
|
|
14510
14605
|
exports.Checkbox = Checkbox;
|
|
14511
14606
|
exports.Clipboard = Clipboard;
|
|
@@ -14547,7 +14642,7 @@ exports.InlineStepLabel = InlineStepLabel;
|
|
|
14547
14642
|
exports.InputGroup = InputGroup;
|
|
14548
14643
|
exports.Kbd = Kbd;
|
|
14549
14644
|
exports.Label = Label;
|
|
14550
|
-
exports.Link =
|
|
14645
|
+
exports.Link = Link2;
|
|
14551
14646
|
exports.MarkedText = MarkedText;
|
|
14552
14647
|
exports.MergeEditor = MergeEditor;
|
|
14553
14648
|
exports.MessageBubble = MessageBubble;
|
|
@@ -14558,6 +14653,7 @@ exports.Navbar = Navbar;
|
|
|
14558
14653
|
exports.NumberInput = NumberInput;
|
|
14559
14654
|
exports.PageHeader = PageHeader;
|
|
14560
14655
|
exports.PageLayout = PageLayout;
|
|
14656
|
+
exports.PageToolbar = PageToolbar;
|
|
14561
14657
|
exports.Pagination = Pagination;
|
|
14562
14658
|
exports.PaneHeader = PaneHeader;
|
|
14563
14659
|
exports.PanelWithDetails = PanelWithDetails;
|
|
@@ -14576,7 +14672,7 @@ exports.ResizablePanel = ResizablePanel;
|
|
|
14576
14672
|
exports.ResizablePanelGroup = ResizablePanelGroup;
|
|
14577
14673
|
exports.ScrollArea = ScrollArea;
|
|
14578
14674
|
exports.ScrollBar = ScrollBar;
|
|
14579
|
-
exports.Search =
|
|
14675
|
+
exports.Search = Search2;
|
|
14580
14676
|
exports.SearchForm = SearchForm;
|
|
14581
14677
|
exports.SearchInput = SearchInput;
|
|
14582
14678
|
exports.SearchInputWithNavigation = SearchInputWithNavigation;
|
|
@@ -14592,7 +14688,7 @@ exports.SplitButton = SplitButton;
|
|
|
14592
14688
|
exports.SqlEditor = SqlEditor;
|
|
14593
14689
|
exports.SuggestedPrompt = SuggestedPrompt;
|
|
14594
14690
|
exports.Switch = Switch;
|
|
14595
|
-
exports.Table =
|
|
14691
|
+
exports.Table = Table2;
|
|
14596
14692
|
exports.Tabs = Tabs;
|
|
14597
14693
|
exports.TabsContent = TabsContent;
|
|
14598
14694
|
exports.Tagger = Tagger;
|