@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.
Files changed (173) hide show
  1. package/README.md +25 -0
  2. package/dist/icons.cjs +731 -0
  3. package/dist/icons.cjs.map +1 -0
  4. package/dist/icons.js +29 -0
  5. package/dist/icons.js.map +1 -0
  6. package/dist/index.cjs +429 -333
  7. package/dist/index.cjs.map +1 -1
  8. package/dist/index.js +426 -331
  9. package/dist/index.js.map +1 -1
  10. package/dist/markdown-editor.cjs +270 -135
  11. package/dist/markdown-editor.cjs.map +1 -1
  12. package/dist/markdown-editor.js +270 -135
  13. package/dist/markdown-editor.js.map +1 -1
  14. package/dist/mermaid.cjs +24 -15
  15. package/dist/mermaid.cjs.map +1 -1
  16. package/dist/mermaid.js +24 -15
  17. package/dist/mermaid.js.map +1 -1
  18. package/dist/styles.css +1 -1
  19. package/package.json +12 -5
  20. package/src/blocks/AIKit/CollapsibleStepHeader.tsx +7 -8
  21. package/src/blocks/AIKit/InlineStepLabel.tsx +7 -7
  22. package/src/blocks/AIKit/MessageBubble.stories.tsx +11 -3
  23. package/src/blocks/AIKit/MessageBubble.tsx +1 -1
  24. package/src/blocks/AIKit/PlanApproval.tsx +9 -8
  25. package/src/blocks/AIKit/PlanRewritingIndicator.tsx +2 -2
  26. package/src/blocks/AIKit/PromptInput.stories.tsx +10 -2
  27. package/src/blocks/AIKit/PromptInputSubmit.tsx +12 -8
  28. package/src/blocks/AIKit/Question.tsx +8 -9
  29. package/src/blocks/AIKit/SuggestedPrompt.tsx +12 -5
  30. package/src/blocks/AIKit/ThinkingIndicator.tsx +2 -2
  31. package/src/blocks/AutoSaveTextarea/AutoSaveTextarea.tsx +4 -4
  32. package/src/blocks/ClipboardButton/ClipboardButton.tsx +7 -5
  33. package/src/blocks/ClipboardButton/ClipboardInline.tsx +2 -3
  34. package/src/blocks/ColorInput/ColorInput.tsx +4 -2
  35. package/src/blocks/ColorInput/ColorPicker.tsx +5 -2
  36. package/src/blocks/EmptyState/EmptyState.tsx +16 -0
  37. package/src/blocks/ErrorState/ErrorState.tsx +15 -0
  38. package/src/blocks/Form/formHook.ts +15 -0
  39. package/src/blocks/MultiActionButtonGroup/MultiActionButton.stories.tsx +12 -11
  40. package/src/blocks/MultiActionButtonGroup/MultiActionButton.tsx +4 -4
  41. package/src/blocks/MultiCombobox/MultiCombobox.tsx +28 -12
  42. package/src/blocks/PageHeader/AGENTS.md +63 -3
  43. package/src/blocks/PageHeader/PageHeader.stories.tsx +124 -28
  44. package/src/blocks/PageHeader/PageHeader.tsx +15 -0
  45. package/src/blocks/PageHeader/PageHeaderDetail.tsx +23 -1
  46. package/src/blocks/PageHeader/PageHeaderIndex.tsx +20 -1
  47. package/src/blocks/PageLayout/PageLayout.tsx +26 -0
  48. package/src/blocks/PageToolbar/PageToolbar.stories.tsx +348 -0
  49. package/src/blocks/PageToolbar/PageToolbar.tsx +119 -0
  50. package/src/blocks/PageToolbar/index.ts +1 -0
  51. package/src/blocks/PasswordInput/PasswordInput.tsx +10 -10
  52. package/src/blocks/SearchInput/SearchInput.tsx +30 -4
  53. package/src/blocks/SearchInputWithNavigation/SearchInputWithNavigation.tsx +9 -6
  54. package/src/blocks/SplitButton/SplitButton.stories.tsx +7 -4
  55. package/src/blocks/SplitButton/SplitButton.tsx +17 -4
  56. package/src/blocks/Tagger/TagItem.tsx +4 -1
  57. package/src/blocks/Tagger/TagSelectPopover/TagSelectCreateItem.tsx +3 -1
  58. package/src/blocks/Tagger/TagSelectPopover/TagSelectList.tsx +2 -2
  59. package/src/blocks/Tagger/Tagger.tsx +2 -2
  60. package/src/components/Alert/Alert.stories.tsx +11 -3
  61. package/src/components/Alert/Alert.tsx +19 -1
  62. package/src/components/Alert/AlertCollapsibleIcon.tsx +3 -4
  63. package/src/components/Alert/AlertIcon.tsx +18 -21
  64. package/src/components/Badge/Badge.stories.tsx +22 -4
  65. package/src/components/Badge/Badge.tsx +16 -0
  66. package/src/components/Badge/BadgeButton.tsx +7 -6
  67. package/src/components/Breadcrumb/BreadcrumbEllipsis.tsx +2 -2
  68. package/src/components/Breadcrumb/BreadcrumbSeparator.tsx +2 -2
  69. package/src/components/Button/Button.stories.tsx +14 -2
  70. package/src/components/Button/Button.tsx +42 -5
  71. package/src/components/Button/styles.ts +4 -6
  72. package/src/components/ButtonGroup/ButtonGroup.stories.tsx +32 -10
  73. package/src/components/Card/Card.tsx +17 -0
  74. package/src/components/Checkbox/Checkbox.tsx +3 -6
  75. package/src/components/CodeEditor/highlighting.ts +1 -1
  76. package/src/components/CollapsiblePanel.tsx +2 -5
  77. package/src/components/Combobox/Combobox.tsx +12 -14
  78. package/src/components/Combobox/ComboboxChips.tsx +6 -1
  79. package/src/components/Combobox/ComboboxItem.tsx +3 -4
  80. package/src/components/Combobox/ComboboxItemIndicator.tsx +6 -4
  81. package/src/components/Combobox/types.ts +2 -6
  82. package/src/components/Command/Command.stories.tsx +47 -56
  83. package/src/components/Command/CommandItem/CheckIndicator.tsx +26 -14
  84. package/src/components/Command/CommandItem/CommandItem.tsx +6 -3
  85. package/src/components/DropdownMenu/DropdownMenu.stories.tsx +8 -4
  86. package/src/components/DropdownMenu/DropdownMenuCheckboxItem.tsx +4 -1
  87. package/src/components/DropdownMenu/DropdownMenuItem.tsx +12 -6
  88. package/src/components/DropdownMenu/DropdownMenuItemIndicator.tsx +12 -6
  89. package/src/components/DropdownMenu/DropdownMenuRadioGroup/DropdownMenuRadioItem.tsx +8 -5
  90. package/src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSubTrigger.tsx +2 -2
  91. package/src/components/DropdownMenu/ItemIcon.tsx +16 -8
  92. package/src/components/FormGroup/FormGroup.tsx +15 -0
  93. package/src/components/FullScreenModal/FullScreenModalHeader.tsx +4 -1
  94. package/src/components/Input/DateInput/DateInput.tsx +4 -1
  95. package/src/components/Input/DateRangeInput/DateRangeInput.tsx +4 -6
  96. package/src/components/Input/Input.tsx +18 -2
  97. package/src/components/Input/TextInput/TextInput.tsx +16 -0
  98. package/src/components/Input/TimeInput/TimeInput.tsx +4 -1
  99. package/src/components/InputGroup/InputGroup.stories.tsx +11 -3
  100. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +63 -1
  101. package/src/components/MarkdownEditor/MarkdownEditor.tsx +105 -15
  102. package/src/components/MarkdownEditor/nodes/ImageNode.tsx +10 -10
  103. package/src/components/MarkdownEditor/nodes/MermaidNode.tsx +8 -8
  104. package/src/components/MarkdownEditor/plugins/KeyboardPlugin.tsx +47 -3
  105. package/src/components/MarkdownEditor/plugins/MarkdownSyncPlugin.tsx +12 -3
  106. package/src/components/MarkdownEditor/plugins/ToolbarPlugin.tsx +20 -10
  107. package/src/components/MarkdownEditor/plugins/toolbar/AlignmentDropdown.tsx +20 -14
  108. package/src/components/MarkdownEditor/plugins/toolbar/BlockTypeDropdown.tsx +25 -16
  109. package/src/components/MarkdownEditor/plugins/toolbar/LinkPanel.tsx +3 -3
  110. package/src/components/MarkdownEditor/transformers.ts +10 -0
  111. package/src/components/MergeEditor/AcceptControls/AcceptButton.tsx +9 -4
  112. package/src/components/MergeEditor/AcceptControls/AcceptControls.tsx +25 -14
  113. package/src/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.tsx +2 -2
  114. package/src/components/MergeEditor/MergeEditor.stories.tsx +15 -0
  115. package/src/components/MergeEditor/MergeEditor.tsx +9 -0
  116. package/src/components/MergeEditor/MergePane.tsx +22 -4
  117. package/src/components/MergeEditor/decorations.ts +2 -2
  118. package/src/components/Modal/Modal.stories.tsx +6 -4
  119. package/src/components/Modal/Modal.tsx +26 -0
  120. package/src/components/Modal/ModalBody.tsx +5 -0
  121. package/src/components/Modal/ModalCloseIcon.tsx +2 -3
  122. package/src/components/Modal/ModalContent.tsx +8 -0
  123. package/src/components/Modal/ModalFooter.tsx +5 -0
  124. package/src/components/Modal/ModalHeader.tsx +11 -0
  125. package/src/components/Modal/ModalIcon.tsx +45 -19
  126. package/src/components/Navbar/Navbar.stories.tsx +26 -13
  127. package/src/components/Navbar/NavbarMenuButton.tsx +11 -10
  128. package/src/components/Pagination/PaginationEllipsis.tsx +2 -2
  129. package/src/components/Pagination/PaginationNext.tsx +2 -1
  130. package/src/components/Pagination/PaginationPrevious.tsx +4 -1
  131. package/src/components/PanelWithDetails.tsx +3 -4
  132. package/src/components/Popconfirm/Popconfirm.stories.tsx +13 -5
  133. package/src/components/RadioGroup/Radio.tsx +6 -12
  134. package/src/components/Search/ClearButton.tsx +2 -2
  135. package/src/components/Search/Search.tsx +3 -3
  136. package/src/components/Select/Select.tsx +16 -5
  137. package/src/components/Select/SelectContent.tsx +13 -4
  138. package/src/components/Select/SelectItem.tsx +6 -5
  139. package/src/components/Select/SelectTrigger.tsx +2 -2
  140. package/src/components/Sidebar/Sidebar.stories.tsx +55 -19
  141. package/src/components/Sidebar/SidebarGroup/SidebarGroupAction.tsx +8 -4
  142. package/src/components/Sidebar/SidebarMenu/SidebarMenuButton.tsx +4 -2
  143. package/src/components/Sidebar/SidebarMenu/SidebarMenuCard.tsx +3 -2
  144. package/src/components/Sidebar/SidebarMenu/SidebarMenuIcon.tsx +12 -12
  145. package/src/components/Sidebar/SidebarMenu/SidebarMenuSub.tsx +3 -7
  146. package/src/components/Sidebar/SidebarMenu/SidebarSearchInput.tsx +3 -5
  147. package/src/components/Skeleton/Skeleton.stories.tsx +52 -0
  148. package/src/components/Skeleton/Skeleton.tsx +24 -1
  149. package/src/components/Table/Table.stories.tsx +223 -1
  150. package/src/components/Table/Table.tsx +17 -0
  151. package/src/components/Tabs.tsx +25 -2
  152. package/src/components/Toast/ToastDismiss.tsx +3 -3
  153. package/src/components/Toast/ToastRoot.tsx +24 -19
  154. package/src/components/Toggle/Toggle.tsx +11 -6
  155. package/src/components/Tooltip/Tooltip.tsx +23 -0
  156. package/src/components/ZoomableSvg/ZoomableSvg.tsx +8 -6
  157. package/src/icons/Keboola.tsx +28 -0
  158. package/src/icons/icons.stories.tsx +174 -0
  159. package/src/icons/index.ts +180 -0
  160. package/src/index.ts +1 -0
  161. package/src/patterns/AlertWithAction.stories.tsx +30 -0
  162. package/src/patterns/CardWithEmptyState.stories.tsx +66 -0
  163. package/src/patterns/ConfirmDialog.stories.tsx +72 -0
  164. package/src/patterns/CreatableMultiCombobox.stories.tsx +33 -0
  165. package/src/patterns/DataCardWithSkeleton.stories.tsx +48 -0
  166. package/src/patterns/DisabledButtonTooltip.stories.tsx +30 -0
  167. package/src/patterns/FilterToolbar.stories.tsx +71 -0
  168. package/src/patterns/InfoTooltip.stories.tsx +56 -0
  169. package/src/patterns/ListDetail.stories.tsx +65 -0
  170. package/src/patterns/ModalForm.stories.tsx +59 -0
  171. package/src/patterns/PageHeaderTabs.stories.tsx +48 -0
  172. package/src/styles.css +16 -8
  173. 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-secondary",
579
- "tw-text-secondary-foreground",
580
- "hover:tw-bg-secondary/80",
581
- "hover:tw-text-secondary-foreground",
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": !children,
679
+ "data-icon-only": String(size).startsWith("icon"),
681
680
  type,
682
681
  onClick: handleClick,
683
682
  className: cn(classNames),
684
683
  children: [
685
- icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, { spin: isLoading, icon }),
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 Calendar = ({ className, classNames, ...props }) => {
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
- Calendar.displayName = "Calendar";
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(Calendar, { ...calendarProps })
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
- icon: "xmark",
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", icon: "calendar", variant: "inline", size: "icon-3xs" })
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", icon: "clock", variant: "inline", size: "icon-3xs" })
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(Icon, { className: "tw-size-4", icon: "xmark" })
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 Search = ({
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(Icon, { icon: ["far", "sparkles"], className: "[&_path]:tw-fill-aigradient-600" }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "tw-text-base tw-text-neutral-400", icon: "magnifying-glass" }),
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
- Search,
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-3"
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(Icon, { icon: "chevron-up" }) }),
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(Icon, { icon: "chevron-down" }) })
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
- icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon }),
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(Icon, { icon: "check", className: "tw-size-4" }) })
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(Icon, { icon: "chevron-down", className: "tw-size-3.5 tw-text-muted-foreground" }) })
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(Icon, { icon: "check", className: "tw-hidden tw-size-3 group-data-[state=checked]:tw-block" }),
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 icon = (() => {
3681
- if (variant === "switch") return "toggle-large-on";
3682
- if (variant === "radio") return "circle";
3683
- return "check";
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(Icon, { icon })
3677
+ children: /* @__PURE__ */ jsxRuntime.jsx(IconComp, {})
3697
3678
  }
3698
3679
  );
3699
3680
  };
3700
- var ItemIcon = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
3701
- Icon,
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
- "tw-p-0.5",
3707
- "tw-size-4",
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, { spin: true, icon: "spinner", className: isAtStart ? "" : "tw-ml-auto" }) : /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItemIndicator, { variant: indicator, className: isAtStart ? "" : "tw-ml-auto" });
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: iconProp,
3847
+ icon,
3861
3848
  iconClassName,
3862
3849
  isLoading = false,
3863
3850
  ...props
3864
3851
  }) => {
3865
3852
  const Comp = asChild ? reactSlot.Root : "div";
3866
- const icon = isLoading ? "spinner" : iconProp;
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
- icon && /* @__PURE__ */ jsxRuntime.jsx(ItemIcon, { spin: isLoading, icon, className: iconClassName }),
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, { spin: true, icon: "spinner", className: iconClassName }) : /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItemIndicator, { variant: indicator });
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, { icon, className: iconClassName }),
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(Icon, { icon: "chevron-right", className: "tw-ml-auto" })
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
- Icon,
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 = ({ color, ...props }) => {
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
- className: cn(
4326
- { "tw-text-white": color !== "violet", "tw-text-purple-500": color === "violet" },
4327
- "tw-size-6",
4328
- "tw-aspect-square"
4329
- ),
4330
- ...props
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, { icon: "angle-left", onClick: onClose, size: "icon", className: "tw-mr-6" }),
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.jsx(Button, { ...rest, ref, disabled, variant, size, argo }),
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
- icon: "caret-down",
4711
- "aria-label": "Additional actions"
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
- icon,
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: /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon, className: "tw-size-3 tw-text-neutral-400 hover:tw-text-secondary-600" })
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
- icon,
5447
+ children,
5457
5448
  ...rest
5458
5449
  }) => /* @__PURE__ */ jsxRuntime.jsx(
5459
- Icon,
5450
+ "span",
5460
5451
  {
5461
5452
  ...rest,
5462
5453
  ref,
5463
- icon,
5464
5454
  className: cn(
5465
- "tw-size-4",
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
- Icon,
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-h-4",
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
- Icon,
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
- Icon,
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
- "group-data-[variant=radio]/check-indicator:tw-text-secondary-500",
6421
- "group-data-[variant=radio]/check-indicator:tw-size-3"
6422
- ),
6423
- icon: variant === "checkbox" ? "check" : "circle"
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(Icon, { icon, className: "tw-size-4 tw-shrink-0 tw-text-neutral-400" }),
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: /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon })
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, { icon: "xmark", "aria-label": "Remove value" })
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
- Icon,
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(Icon, { icon: "check" })
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 && /* @__PURE__ */ jsxRuntime.jsx(Icon, { 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, icon: "xmark", "aria-label": "Clear", disabled, children: /* @__PURE__ */ jsxRuntime.jsx(combobox.Combobox.Clear, {}) }),
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: "plus", children: queryToCreateLabel(itemOrGroup.value) });
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: "plus", children: queryToCreateLabel(maybeCreatable.value) });
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(Icon, { icon: ["far", "ellipsis"], className: "tw-size-4" }),
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(Icon, { icon: "chevron-right" })
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: iconProp,
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 icon = isSearchVariant ? "search" : iconProp;
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
- icon && /* @__PURE__ */ jsxRuntime.jsx(NavbarMenuItemAdornment, { asChild: true, variant: adornmentVariant, children: /* @__PURE__ */ jsxRuntime.jsx(design.Icon, { icon }) }),
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(Icon, { icon: ["far", "ellipsis"] })
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.jsx(
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: children ?? "Next"
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.jsx(PaginationButton, { ...props, size: "medium", "aria-label": "Go to previous page", icon: "chevron-left", children: children ?? "Previous" });
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
- "[&_path]:tw-fill-aigradient-600",
8067
- "[&_path]:aria-pressed:tw-fill-white",
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(Icon, { icon, className: "tw-inline-block tw-size-4 tw-shrink-0 tw-align-middle" }),
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, icon: "xmark", "aria-label": "Clear", disabled, children: /* @__PURE__ */ jsxRuntime.jsx(combobox.Combobox.Clear, {}) }),
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 Link = ({
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
- Icon,
9457
+ lucideReact.ChevronDown,
9464
9458
  {
9465
- icon: "chevron-down",
9466
9459
  className: cn(
9467
9460
  "tw-mt-px",
9468
- "tw-size-4",
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 ICONS = {
9502
- info: "circle-info",
9503
- warning: "triangle-exclamation",
9504
- error: "triangle-exclamation",
9505
- success: "circle-check"
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
- ref,
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-text-base",
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 = "copy";
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.jsx(Button, { ...rest, icon, variant, disabled: !text, children })
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(design.Icon, { icon: "copy" }),
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 = ({ conflicts, side, onAccept, onDismiss, contentRef }) => /* @__PURE__ */ jsxRuntime.jsx(
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-10" : "tw-w-0"
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 [&_>div]:tw-overflow-auto", children: /* @__PURE__ */ jsxRuntime.jsx(
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(Icon, { icon: allDone ? "circle-check" : "triangle-exclamation" }),
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
- Icon,
11517
+ lucideReact.ChevronDown,
11506
11518
  {
11507
- icon: "chevron-down",
11508
11519
  className: cn(
11509
- "tw-text-xs",
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("div", { className: cn(HEIGHT_CLASS_NAME[height], ANIMATION_CLASS_NAME, className) }, key)) });
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 Table = ({
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
- Table.Header = TableHeader;
11714
- Table.Head = TableHead;
11715
- Table.Body = TableBody;
11716
- Table.Row = TableRow;
11717
- Table.Cell = TableCell;
11718
- Table.Footer = TableFooter;
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-p-1",
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(Icon, { icon: "times" }),
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: "exclamation-triangle",
11964
- info: "info-circle",
11965
- success: "check-circle",
11966
- warning: "exclamation-circle"
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 "spinner";
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
- Icon,
12008
+ "span",
11991
12009
  {
11992
12010
  "data-slot": "toast-icon",
11993
- spin: loading,
11994
12011
  className: cn(
11995
- // styles
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-4",
12019
+ "tw-size-5",
11998
12020
  "tw-shrink-0",
11999
- "tw-p-1",
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(Icon, { icon: "magnifying-glass", className: "tw-text-muted-foreground" }) }),
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(design.Icon, { className: "tw-text-neutral-400", icon: "magnifying-glass" }),
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
- icon: "angle-up"
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
- icon: "angle-down"
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, icon: "xmark", "aria-label": "Remove Tag" }) })
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: "plus",
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(Icon, { icon: "search", className: "tw-size-4 tw-text-neutral-400" }),
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(Icon, { icon: "plus" }),
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(Icon, { icon: "spinner", spin: true, className: "tw-size-4" });
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(Icon, { icon: "circle-xmark", className: "tw-size-4" });
12949
+ return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.XCircle, { className: "tw-size-4" });
12851
12950
  }
12852
12951
  if (variant === "dismissed") {
12853
- return /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: "circle-xmark", className: "tw-size-4 tw-text-neutral-500" });
12952
+ return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.XCircle, { className: "tw-size-4 tw-text-neutral-500" });
12854
12953
  }
12855
- return /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: "circle-check", className: "tw-size-4" });
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
- Icon,
12978
+ lucideReact.ChevronDown,
12880
12979
  {
12881
- icon: "chevron-down",
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(Icon, { icon: "spinner", spin: true, className: "tw-size-3 tw-text-neutral-200" });
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(Icon, { icon: "circle-xmark", className: "tw-size-3 tw-text-error-500" });
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(Icon, { icon: "circle-xmark", className: "tw-size-3 tw-text-neutral-200" });
12996
+ return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.XCircle, { className: "tw-size-4 tw-text-neutral-200" });
12899
12997
  }
12900
- return /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: "circle-check", className: "tw-size-3 tw-text-neutral-200" });
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
- Icon,
13117
+ lucideReact.ChevronDown,
13020
13118
  {
13021
- icon: "chevron-down",
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(Icon, { icon: "spinner", spin: true, className: "tw-size-4 tw-text-secondary-500" }),
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 getIcon = () => {
13278
- if (status === "streaming") return "stop-circle";
13279
- if (status === "interrupted") return "play";
13280
- return "paper-plane-top";
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
- icon: getIcon(),
13298
- 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"
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
- Icon,
13757
+ lucideReact.ChevronLeft,
13661
13758
  {
13662
- icon: "chevron-left",
13663
13759
  className: cn(
13664
- "tw-size-4",
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
- Icon,
13781
+ lucideReact.ChevronRight,
13686
13782
  {
13687
- icon: "chevron-right",
13688
13783
  className: cn(
13689
- "tw-size-4",
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
- Icon,
13884
+ lucideReact.FileText,
13790
13885
  {
13791
- className: "group-not-disabled:group-hover:[&_path]:tw-fill-secondary-600 tw-size-4 tw-shrink-0 tw-basis-4 [&_path]:tw-fill-aigradient-600",
13792
- fixedWidth: true,
13793
- icon: ["far", "file-lines"]
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(Icon, { icon: "spinner", spin: true, className: "tw-size-4 tw-text-secondary-500" }),
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(Icon, { spin: true, icon: "spinner", className: "tw-mr-1" }),
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(Icon, { icon: "check-circle", className: "tw-text-primary-500" }),
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 = 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 = 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 = 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 = Table;
14691
+ exports.Table = Table2;
14596
14692
  exports.Tabs = Tabs;
14597
14693
  exports.TabsContent = TabsContent;
14598
14694
  exports.Tagger = Tagger;