@inf-monkeys-tech/monkeys-design 0.4.35 → 0.4.37

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 (38) hide show
  1. package/README.md +103 -0
  2. package/dist/components/base/index.d.mts +2 -2
  3. package/dist/components/base/index.d.ts +2 -2
  4. package/dist/components/base/index.js +445 -2
  5. package/dist/components/base/index.js.map +1 -1
  6. package/dist/components/base/index.mjs +445 -3
  7. package/dist/components/base/index.mjs.map +1 -1
  8. package/dist/components/login/index.d.mts +97 -1
  9. package/dist/components/login/index.d.ts +97 -1
  10. package/dist/components/login/index.js +262 -2
  11. package/dist/components/login/index.js.map +1 -1
  12. package/dist/components/login/index.mjs +262 -3
  13. package/dist/components/login/index.mjs.map +1 -1
  14. package/dist/components/workbench/index.d.mts +1 -1
  15. package/dist/components/workbench/index.d.ts +1 -1
  16. package/dist/components/workbench/index.js +444 -2
  17. package/dist/components/workbench/index.js.map +1 -1
  18. package/dist/components/workbench/index.mjs +444 -2
  19. package/dist/components/workbench/index.mjs.map +1 -1
  20. package/dist/index.d.mts +3 -3
  21. package/dist/index.d.ts +3 -3
  22. package/dist/index.js +705 -2
  23. package/dist/index.js.map +1 -1
  24. package/dist/index.mjs +704 -3
  25. package/dist/index.mjs.map +1 -1
  26. package/dist/styles/login-page.scss +423 -0
  27. package/dist/{theme-Cuy60thu.d.ts → theme-Clm5dVb0.d.mts} +4 -2
  28. package/dist/{theme-CoG9vCPT.d.mts → theme-sIoU5-YC.d.ts} +4 -2
  29. package/dist/theme-system/index.d.mts +1 -1
  30. package/dist/theme-system/index.d.ts +1 -1
  31. package/dist/theme-system/index.js +444 -2
  32. package/dist/theme-system/index.js.map +1 -1
  33. package/dist/theme-system/index.mjs +444 -2
  34. package/dist/theme-system/index.mjs.map +1 -1
  35. package/dist/{types-CZALgtez.d.ts → types-Bn6PEDsX.d.mts} +43 -1
  36. package/dist/{types-CZALgtez.d.mts → types-Bn6PEDsX.d.ts} +43 -1
  37. package/package.json +5 -2
  38. package/dist/styles/artist-login.scss +0 -375
package/README.md CHANGED
@@ -68,6 +68,109 @@ export function Example() {
68
68
  | `@inf-monkeys-tech/monkeys-design/palette` | palette 工具 |
69
69
  | `@inf-monkeys-tech/monkeys-design/theme-system` | 主题解析与应用工具 |
70
70
 
71
+ ## LoginPage
72
+
73
+ `LoginPage` 是通用登录页 UI 组件。组件库只负责页面结构和样式契约,不包含登录请求、OAuth、路由、租户判断、i18n 初始化或租户定制样式。
74
+
75
+ ```tsx
76
+ import {
77
+ LoginPage,
78
+ type LoginPageMethodConfig,
79
+ } from '@inf-monkeys-tech/monkeys-design/components/login';
80
+ import '@inf-monkeys-tech/monkeys-design/styles/login-page.scss';
81
+
82
+ const methods: LoginPageMethodConfig[] = [
83
+ {
84
+ id: 'email',
85
+ label: 'Email',
86
+ fields: [],
87
+ submitLabel: 'Login',
88
+ onSubmit: (event) => event.preventDefault(),
89
+ },
90
+ ];
91
+
92
+ export function Example() {
93
+ return (
94
+ <LoginPage
95
+ background={{ imageUrl: '', gradient: '' }}
96
+ logo={{ url: '', position: 'bottom', scale: 1 }}
97
+ primaryColor="#4D8F9D"
98
+ radius="12px"
99
+ toolbar={<div />}
100
+ title="Welcome"
101
+ methods={methods}
102
+ />
103
+ );
104
+ }
105
+ ```
106
+
107
+ 默认背景规则:
108
+
109
+ - 配置了 `background.imageUrl` 或 `background.gradient` 时,使用配置背景。
110
+ - 未配置背景时,浅色模式使用白色和主题色渐变。
111
+ - 未配置背景时,`.dark` 深色模式使用黑色和主题色渐变。
112
+
113
+ 宿主应用负责把全局主题传入 `primaryColor` 和 `radius`,组件会把它们作为 `--login-page-theme-primary-color` 和 `--login-page-theme-radius` 默认来源;页面级 `customCss` 仍可通过公开的 `--login-page-*` 变量做租户级覆盖。深浅色切换、语言切换等应用级控件通过 `toolbar` 传入。
114
+
115
+ ### LoginPage CSS 契约
116
+
117
+ 页面级自定义样式只能依赖 `data-login-page`、`data-login-part` 和公开 CSS 变量。不要依赖租户 id,不要新增登录页代码分支。
118
+
119
+ 推荐优先覆盖变量:
120
+
121
+ ```css
122
+ [data-login-page] {
123
+ --login-page-panel-bg: rgb(255 255 255 / 0.92);
124
+ --login-page-panel-border: rgb(17 17 17 / 0.08);
125
+ --login-page-panel-shadow: 0 24px 60px rgb(0 0 0 / 0.08);
126
+ --login-page-control-bg: #ffffff;
127
+ --login-page-control-border: rgb(17 17 17 / 0.12);
128
+ --login-page-control-text: #111111;
129
+ --login-page-control-placeholder: #9f9fa9;
130
+ --login-page-form-width: 500px;
131
+ }
132
+
133
+ .dark [data-login-page] {
134
+ --login-page-panel-bg: rgb(12 12 12 / 0.9);
135
+ --login-page-control-bg: #111111;
136
+ }
137
+ ```
138
+
139
+ 公开部件:
140
+
141
+ ```css
142
+ [data-login-part='root'] {}
143
+ [data-login-part='background'] {}
144
+ [data-login-part='toolbar'] {}
145
+ [data-login-part='logo'] {}
146
+ [data-login-part='logo-image'] {}
147
+ [data-login-part='panel'] {}
148
+ [data-login-part='back'] {}
149
+ [data-login-part='back-icon'] {}
150
+ [data-login-part='title'] {}
151
+ [data-login-part='tabs'] {}
152
+ [data-login-part='tab'] {}
153
+ [data-login-part='tab-icon'] {}
154
+ [data-login-part='form'] {}
155
+ [data-login-part='field'] {}
156
+ [data-login-part='input'] {}
157
+ [data-login-part='checkbox-label'] {}
158
+ [data-login-part='checkbox'] {}
159
+ [data-login-part='method-footer'] {}
160
+ [data-login-part='method-footer-action'] {}
161
+ [data-login-part='submit-button'] {}
162
+ [data-login-part='callout'] {}
163
+ [data-login-part='callout-title'] {}
164
+ [data-login-part='callout-description'] {}
165
+ [data-login-part='callout-detail'] {}
166
+ [data-login-part='callout-action'] {}
167
+ [data-login-part='external-methods'] {}
168
+ [data-login-part='external-label'] {}
169
+ [data-login-part='external-list'] {}
170
+ [data-login-part='external-button'] {}
171
+ [data-login-part='external-icon'] {}
172
+ ```
173
+
71
174
  ## 基础组件
72
175
 
73
176
  基础组件从 `components/base` 子路径导入:
@@ -1,5 +1,5 @@
1
- export { B as BaseAccordion, a as BaseAvatar, b as BaseBadge, c as BaseBreadcrumb, d as BaseButton, e as BaseCheckbox, f as BaseContextMenu, g as BaseContextMenuCheckboxItem, h as BaseContextMenuContent, i as BaseContextMenuItem, j as BaseContextMenuLabel, k as BaseContextMenuRadioGroup, l as BaseContextMenuRadioItem, m as BaseContextMenuSeparator, n as BaseContextMenuSub, o as BaseContextMenuSubContent, p as BaseContextMenuSubTrigger, q as BaseContextMenuTrigger, r as BaseDescriptionList, s as BaseDialog, t as BaseDivider, u as BaseDropdownMenu, v as BaseEmptyState, w as BaseField, x as BaseInput, y as BaseLayout, z as BaseLayoutPane, A as BaseLayoutResizeHandle, C as BaseLayoutSplit, D as BaseLoadingState, E as BaseNotice, G as BasePagination, F as BasePanel, H as BaseProgress, I as BaseRadioGroup, K as BaseSectionHeader, L as BaseSegmentedControl, J as BaseSelect, M as BaseSkeleton, N as BaseSwitch, O as BaseTable, P as BaseTableBody, Q as BaseTableCaption, R as BaseTableCell, S as BaseTableContainer, T as BaseTableEmpty, U as BaseTableFooter, V as BaseTableFooterBar, W as BaseTableHead, X as BaseTableHeader, Y as BaseTableLoading, Z as BaseTableRow, _ as BaseTabs, $ as BaseTextarea, a1 as BaseToolbar, a0 as BaseTooltip, a2 as getBaseBadgeToneClassName, a3 as getBaseButtonToneClassName, a4 as getBaseMenuItemToneClassName, a5 as getBaseNoticeToneClassName, a6 as resolveBaseAppearance } from '../../theme-CoG9vCPT.mjs';
2
- export { B as BaseAccordionClassNames, a as BaseAccordionItem, b as BaseAccordionProps, c as BaseAppearance, d as BaseAvatarClassNames, e as BaseAvatarProps, f as BaseBackground, g as BaseBadgeClassNames, h as BaseBadgeProps, i as BaseBorder, j as BaseBreadcrumbClassNames, k as BaseBreadcrumbItem, l as BaseBreadcrumbProps, m as BaseButtonClassNames, n as BaseButtonProps, o as BaseCheckboxClassNames, p as BaseCheckboxProps, s as BaseContextMenuCheckboxItemProps, t as BaseContextMenuClassNames, u as BaseContextMenuContentClassNames, v as BaseContextMenuContentProps, w as BaseContextMenuItemClassNames, x as BaseContextMenuItemProps, y as BaseContextMenuLabelProps, z as BaseContextMenuProps, A as BaseContextMenuRadioGroupProps, C as BaseContextMenuRadioItemProps, D as BaseContextMenuSeparatorProps, E as BaseContextMenuSubContentProps, F as BaseContextMenuSubProps, G as BaseContextMenuSubTriggerProps, H as BaseContextMenuTriggerProps, q as BaseControlClassNames, r as BaseControlTone, I as BaseDensity, J as BaseDescriptionListClassNames, K as BaseDescriptionListItem, L as BaseDescriptionListProps, M as BaseDialogClassNames, N as BaseDialogProps, O as BaseDividerClassNames, P as BaseDividerProps, Q as BaseDropdownMenuClassNames, R as BaseDropdownMenuItem, S as BaseDropdownMenuPlacement, T as BaseDropdownMenuProps, U as BaseEmptyStateProps, V as BaseFieldClassNames, W as BaseFieldProps, X as BaseInputProps, Y as BaseLayoutClassNames, Z as BaseLayoutGap, _ as BaseLayoutOrientation, $ as BaseLayoutPaneClassNames, a0 as BaseLayoutPaneProps, a1 as BaseLayoutPaneSurface, a2 as BaseLayoutProps, a3 as BaseLayoutResizeHandleClassNames, a4 as BaseLayoutResizeHandleProps, a5 as BaseLayoutSize, a6 as BaseLayoutSplitClassNames, a7 as BaseLayoutSplitProps, a8 as BaseLoadingStateProps, a9 as BaseNoticeClassNames, aa as BaseNoticeProps, ad as BasePaginationClassNames, ae as BasePaginationProps, ab as BasePanelClassNames, ac as BasePanelProps, af as BaseProgressClassNames, ag as BaseProgressProps, ai as BaseRadioGroupClassNames, aj as BaseRadioGroupProps, ak as BaseRadioOption, ah as BaseRadius, al as BaseResolvedTheme, am as BaseSectionHeaderClassNames, an as BaseSectionHeaderProps, aq as BaseSegmentedControlClassNames, ar as BaseSegmentedControlOption, as as BaseSegmentedControlProps, ao as BaseSelectOption, ap as BaseSelectProps, at as BaseSkeletonClassNames, au as BaseSkeletonProps, av as BaseStateClassNames, aw as BaseSwitchClassNames, ax as BaseSwitchProps, ay as BaseTableAlign, az as BaseTableBodyProps, aA as BaseTableCaptionClassNames, aB as BaseTableCaptionProps, aC as BaseTableCellClassNames, aD as BaseTableCellProps, aE as BaseTableClassNames, aF as BaseTableColumnInteractionOptions, aG as BaseTableColumnOrderChangeDetail, aH as BaseTableColumnSizeChangeDetail, aI as BaseTableColumnSizes, aJ as BaseTableContainerClassNames, aK as BaseTableContainerProps, aL as BaseTableEmptyClassNames, aM as BaseTableEmptyProps, aN as BaseTableFooterBarClassNames, aO as BaseTableFooterBarProps, aP as BaseTableFooterProps, aR as BaseTableHeadClassNames, aS as BaseTableHeadProps, aQ as BaseTableHeaderProps, aT as BaseTableLoadingClassNames, aU as BaseTableLoadingProps, aV as BaseTableProps, aW as BaseTableRowClassNames, aX as BaseTableRowProps, aY as BaseTableSectionClassNames, aZ as BaseTableSortDirection, a_ as BaseTabsClassNames, a$ as BaseTabsItem, b0 as BaseTabsProps, b1 as BaseTextareaProps, b7 as BaseThemePresetId, b8 as BaseThemeSlots, b9 as BaseThemeStyles, b5 as BaseToolbarClassNames, b6 as BaseToolbarProps, b2 as BaseTooltipClassNames, b3 as BaseTooltipPlacement, b4 as BaseTooltipProps } from '../../types-CZALgtez.mjs';
1
+ export { B as BaseAccordion, a as BaseAvatar, b as BaseBadge, c as BaseBreadcrumb, d as BaseButton, e as BaseCheckbox, f as BaseContextMenu, g as BaseContextMenuCheckboxItem, h as BaseContextMenuContent, i as BaseContextMenuItem, j as BaseContextMenuLabel, k as BaseContextMenuRadioGroup, l as BaseContextMenuRadioItem, m as BaseContextMenuSeparator, n as BaseContextMenuSub, o as BaseContextMenuSubContent, p as BaseContextMenuSubTrigger, q as BaseContextMenuTrigger, r as BaseDescriptionList, s as BaseDialog, t as BaseDivider, u as BaseDropdownMenu, v as BaseEmptyState, w as BaseField, x as BaseInput, y as BaseLayout, z as BaseLayoutPane, A as BaseLayoutResizeHandle, C as BaseLayoutSplit, D as BaseLoadingState, E as BaseMultiSelect, F as BaseNotice, H as BasePagination, G as BasePanel, I as BaseProgress, J as BaseRadioGroup, L as BaseSectionHeader, M as BaseSegmentedControl, K as BaseSelect, N as BaseSkeleton, O as BaseSwitch, P as BaseTable, Q as BaseTableBody, R as BaseTableCaption, S as BaseTableCell, T as BaseTableContainer, U as BaseTableEmpty, V as BaseTableFooter, W as BaseTableFooterBar, X as BaseTableHead, Y as BaseTableHeader, Z as BaseTableLoading, _ as BaseTableRow, $ as BaseTabs, a0 as BaseTextarea, a2 as BaseToolbar, a1 as BaseTooltip, a3 as getBaseBadgeToneClassName, a4 as getBaseButtonToneClassName, a5 as getBaseMenuItemToneClassName, a6 as getBaseNoticeToneClassName, a7 as resolveBaseAppearance } from '../../theme-Clm5dVb0.mjs';
2
+ export { B as BaseAccordionClassNames, a as BaseAccordionItem, b as BaseAccordionProps, c as BaseAppearance, d as BaseAvatarClassNames, e as BaseAvatarProps, f as BaseBackground, g as BaseBadgeClassNames, h as BaseBadgeProps, i as BaseBorder, j as BaseBreadcrumbClassNames, k as BaseBreadcrumbItem, l as BaseBreadcrumbProps, m as BaseButtonClassNames, n as BaseButtonProps, o as BaseCheckboxClassNames, p as BaseCheckboxProps, s as BaseContextMenuCheckboxItemProps, t as BaseContextMenuClassNames, u as BaseContextMenuContentClassNames, v as BaseContextMenuContentProps, w as BaseContextMenuItemClassNames, x as BaseContextMenuItemProps, y as BaseContextMenuLabelProps, z as BaseContextMenuProps, A as BaseContextMenuRadioGroupProps, C as BaseContextMenuRadioItemProps, D as BaseContextMenuSeparatorProps, E as BaseContextMenuSubContentProps, F as BaseContextMenuSubProps, G as BaseContextMenuSubTriggerProps, H as BaseContextMenuTriggerProps, q as BaseControlClassNames, r as BaseControlTone, I as BaseDensity, J as BaseDescriptionListClassNames, K as BaseDescriptionListItem, L as BaseDescriptionListProps, M as BaseDialogClassNames, N as BaseDialogProps, O as BaseDividerClassNames, P as BaseDividerProps, Q as BaseDropdownMenuClassNames, R as BaseDropdownMenuItem, S as BaseDropdownMenuPlacement, T as BaseDropdownMenuProps, U as BaseEmptyStateProps, V as BaseFieldClassNames, W as BaseFieldProps, X as BaseInputProps, Y as BaseLayoutClassNames, Z as BaseLayoutGap, _ as BaseLayoutOrientation, $ as BaseLayoutPaneClassNames, a0 as BaseLayoutPaneProps, a1 as BaseLayoutPaneSurface, a2 as BaseLayoutProps, a3 as BaseLayoutResizeHandleClassNames, a4 as BaseLayoutResizeHandleProps, a5 as BaseLayoutSize, a6 as BaseLayoutSplitClassNames, a7 as BaseLayoutSplitProps, a8 as BaseLoadingStateProps, a9 as BaseMultiSelectClassNames, aa as BaseMultiSelectOption, ab as BaseMultiSelectProps, ac as BaseNoticeClassNames, ad as BaseNoticeProps, ag as BasePaginationClassNames, ah as BasePaginationProps, ae as BasePanelClassNames, af as BasePanelProps, ai as BaseProgressClassNames, aj as BaseProgressProps, al as BaseRadioGroupClassNames, am as BaseRadioGroupProps, an as BaseRadioOption, ak as BaseRadius, ao as BaseResolvedTheme, ap as BaseSectionHeaderClassNames, aq as BaseSectionHeaderProps, at as BaseSegmentedControlClassNames, au as BaseSegmentedControlOption, av as BaseSegmentedControlProps, ar as BaseSelectOption, as as BaseSelectProps, aw as BaseSkeletonClassNames, ax as BaseSkeletonProps, ay as BaseStateClassNames, az as BaseSwitchClassNames, aA as BaseSwitchProps, aB as BaseTableAlign, aC as BaseTableBodyProps, aD as BaseTableCaptionClassNames, aE as BaseTableCaptionProps, aF as BaseTableCellClassNames, aG as BaseTableCellProps, aH as BaseTableClassNames, aI as BaseTableColumnInteractionOptions, aJ as BaseTableColumnOrderChangeDetail, aK as BaseTableColumnSizeChangeDetail, aL as BaseTableColumnSizes, aM as BaseTableContainerClassNames, aN as BaseTableContainerProps, aO as BaseTableEmptyClassNames, aP as BaseTableEmptyProps, aQ as BaseTableFooterBarClassNames, aR as BaseTableFooterBarProps, aS as BaseTableFooterProps, aU as BaseTableHeadClassNames, aV as BaseTableHeadProps, aT as BaseTableHeaderProps, aW as BaseTableLoadingClassNames, aX as BaseTableLoadingProps, aY as BaseTableProps, aZ as BaseTableRowClassNames, a_ as BaseTableRowProps, a$ as BaseTableSectionClassNames, b0 as BaseTableSortDirection, b1 as BaseTabsClassNames, b2 as BaseTabsItem, b3 as BaseTabsProps, b4 as BaseTextareaProps, ba as BaseThemePresetId, bb as BaseThemeSlots, bc as BaseThemeStyles, b8 as BaseToolbarClassNames, b9 as BaseToolbarProps, b5 as BaseTooltipClassNames, b6 as BaseTooltipPlacement, b7 as BaseTooltipProps } from '../../types-Bn6PEDsX.mjs';
3
3
  import 'react/jsx-runtime';
4
4
  import 'react';
5
5
  import '@radix-ui/react-context-menu';
@@ -1,5 +1,5 @@
1
- export { B as BaseAccordion, a as BaseAvatar, b as BaseBadge, c as BaseBreadcrumb, d as BaseButton, e as BaseCheckbox, f as BaseContextMenu, g as BaseContextMenuCheckboxItem, h as BaseContextMenuContent, i as BaseContextMenuItem, j as BaseContextMenuLabel, k as BaseContextMenuRadioGroup, l as BaseContextMenuRadioItem, m as BaseContextMenuSeparator, n as BaseContextMenuSub, o as BaseContextMenuSubContent, p as BaseContextMenuSubTrigger, q as BaseContextMenuTrigger, r as BaseDescriptionList, s as BaseDialog, t as BaseDivider, u as BaseDropdownMenu, v as BaseEmptyState, w as BaseField, x as BaseInput, y as BaseLayout, z as BaseLayoutPane, A as BaseLayoutResizeHandle, C as BaseLayoutSplit, D as BaseLoadingState, E as BaseNotice, G as BasePagination, F as BasePanel, H as BaseProgress, I as BaseRadioGroup, K as BaseSectionHeader, L as BaseSegmentedControl, J as BaseSelect, M as BaseSkeleton, N as BaseSwitch, O as BaseTable, P as BaseTableBody, Q as BaseTableCaption, R as BaseTableCell, S as BaseTableContainer, T as BaseTableEmpty, U as BaseTableFooter, V as BaseTableFooterBar, W as BaseTableHead, X as BaseTableHeader, Y as BaseTableLoading, Z as BaseTableRow, _ as BaseTabs, $ as BaseTextarea, a1 as BaseToolbar, a0 as BaseTooltip, a2 as getBaseBadgeToneClassName, a3 as getBaseButtonToneClassName, a4 as getBaseMenuItemToneClassName, a5 as getBaseNoticeToneClassName, a6 as resolveBaseAppearance } from '../../theme-Cuy60thu.js';
2
- export { B as BaseAccordionClassNames, a as BaseAccordionItem, b as BaseAccordionProps, c as BaseAppearance, d as BaseAvatarClassNames, e as BaseAvatarProps, f as BaseBackground, g as BaseBadgeClassNames, h as BaseBadgeProps, i as BaseBorder, j as BaseBreadcrumbClassNames, k as BaseBreadcrumbItem, l as BaseBreadcrumbProps, m as BaseButtonClassNames, n as BaseButtonProps, o as BaseCheckboxClassNames, p as BaseCheckboxProps, s as BaseContextMenuCheckboxItemProps, t as BaseContextMenuClassNames, u as BaseContextMenuContentClassNames, v as BaseContextMenuContentProps, w as BaseContextMenuItemClassNames, x as BaseContextMenuItemProps, y as BaseContextMenuLabelProps, z as BaseContextMenuProps, A as BaseContextMenuRadioGroupProps, C as BaseContextMenuRadioItemProps, D as BaseContextMenuSeparatorProps, E as BaseContextMenuSubContentProps, F as BaseContextMenuSubProps, G as BaseContextMenuSubTriggerProps, H as BaseContextMenuTriggerProps, q as BaseControlClassNames, r as BaseControlTone, I as BaseDensity, J as BaseDescriptionListClassNames, K as BaseDescriptionListItem, L as BaseDescriptionListProps, M as BaseDialogClassNames, N as BaseDialogProps, O as BaseDividerClassNames, P as BaseDividerProps, Q as BaseDropdownMenuClassNames, R as BaseDropdownMenuItem, S as BaseDropdownMenuPlacement, T as BaseDropdownMenuProps, U as BaseEmptyStateProps, V as BaseFieldClassNames, W as BaseFieldProps, X as BaseInputProps, Y as BaseLayoutClassNames, Z as BaseLayoutGap, _ as BaseLayoutOrientation, $ as BaseLayoutPaneClassNames, a0 as BaseLayoutPaneProps, a1 as BaseLayoutPaneSurface, a2 as BaseLayoutProps, a3 as BaseLayoutResizeHandleClassNames, a4 as BaseLayoutResizeHandleProps, a5 as BaseLayoutSize, a6 as BaseLayoutSplitClassNames, a7 as BaseLayoutSplitProps, a8 as BaseLoadingStateProps, a9 as BaseNoticeClassNames, aa as BaseNoticeProps, ad as BasePaginationClassNames, ae as BasePaginationProps, ab as BasePanelClassNames, ac as BasePanelProps, af as BaseProgressClassNames, ag as BaseProgressProps, ai as BaseRadioGroupClassNames, aj as BaseRadioGroupProps, ak as BaseRadioOption, ah as BaseRadius, al as BaseResolvedTheme, am as BaseSectionHeaderClassNames, an as BaseSectionHeaderProps, aq as BaseSegmentedControlClassNames, ar as BaseSegmentedControlOption, as as BaseSegmentedControlProps, ao as BaseSelectOption, ap as BaseSelectProps, at as BaseSkeletonClassNames, au as BaseSkeletonProps, av as BaseStateClassNames, aw as BaseSwitchClassNames, ax as BaseSwitchProps, ay as BaseTableAlign, az as BaseTableBodyProps, aA as BaseTableCaptionClassNames, aB as BaseTableCaptionProps, aC as BaseTableCellClassNames, aD as BaseTableCellProps, aE as BaseTableClassNames, aF as BaseTableColumnInteractionOptions, aG as BaseTableColumnOrderChangeDetail, aH as BaseTableColumnSizeChangeDetail, aI as BaseTableColumnSizes, aJ as BaseTableContainerClassNames, aK as BaseTableContainerProps, aL as BaseTableEmptyClassNames, aM as BaseTableEmptyProps, aN as BaseTableFooterBarClassNames, aO as BaseTableFooterBarProps, aP as BaseTableFooterProps, aR as BaseTableHeadClassNames, aS as BaseTableHeadProps, aQ as BaseTableHeaderProps, aT as BaseTableLoadingClassNames, aU as BaseTableLoadingProps, aV as BaseTableProps, aW as BaseTableRowClassNames, aX as BaseTableRowProps, aY as BaseTableSectionClassNames, aZ as BaseTableSortDirection, a_ as BaseTabsClassNames, a$ as BaseTabsItem, b0 as BaseTabsProps, b1 as BaseTextareaProps, b7 as BaseThemePresetId, b8 as BaseThemeSlots, b9 as BaseThemeStyles, b5 as BaseToolbarClassNames, b6 as BaseToolbarProps, b2 as BaseTooltipClassNames, b3 as BaseTooltipPlacement, b4 as BaseTooltipProps } from '../../types-CZALgtez.js';
1
+ export { B as BaseAccordion, a as BaseAvatar, b as BaseBadge, c as BaseBreadcrumb, d as BaseButton, e as BaseCheckbox, f as BaseContextMenu, g as BaseContextMenuCheckboxItem, h as BaseContextMenuContent, i as BaseContextMenuItem, j as BaseContextMenuLabel, k as BaseContextMenuRadioGroup, l as BaseContextMenuRadioItem, m as BaseContextMenuSeparator, n as BaseContextMenuSub, o as BaseContextMenuSubContent, p as BaseContextMenuSubTrigger, q as BaseContextMenuTrigger, r as BaseDescriptionList, s as BaseDialog, t as BaseDivider, u as BaseDropdownMenu, v as BaseEmptyState, w as BaseField, x as BaseInput, y as BaseLayout, z as BaseLayoutPane, A as BaseLayoutResizeHandle, C as BaseLayoutSplit, D as BaseLoadingState, E as BaseMultiSelect, F as BaseNotice, H as BasePagination, G as BasePanel, I as BaseProgress, J as BaseRadioGroup, L as BaseSectionHeader, M as BaseSegmentedControl, K as BaseSelect, N as BaseSkeleton, O as BaseSwitch, P as BaseTable, Q as BaseTableBody, R as BaseTableCaption, S as BaseTableCell, T as BaseTableContainer, U as BaseTableEmpty, V as BaseTableFooter, W as BaseTableFooterBar, X as BaseTableHead, Y as BaseTableHeader, Z as BaseTableLoading, _ as BaseTableRow, $ as BaseTabs, a0 as BaseTextarea, a2 as BaseToolbar, a1 as BaseTooltip, a3 as getBaseBadgeToneClassName, a4 as getBaseButtonToneClassName, a5 as getBaseMenuItemToneClassName, a6 as getBaseNoticeToneClassName, a7 as resolveBaseAppearance } from '../../theme-sIoU5-YC.js';
2
+ export { B as BaseAccordionClassNames, a as BaseAccordionItem, b as BaseAccordionProps, c as BaseAppearance, d as BaseAvatarClassNames, e as BaseAvatarProps, f as BaseBackground, g as BaseBadgeClassNames, h as BaseBadgeProps, i as BaseBorder, j as BaseBreadcrumbClassNames, k as BaseBreadcrumbItem, l as BaseBreadcrumbProps, m as BaseButtonClassNames, n as BaseButtonProps, o as BaseCheckboxClassNames, p as BaseCheckboxProps, s as BaseContextMenuCheckboxItemProps, t as BaseContextMenuClassNames, u as BaseContextMenuContentClassNames, v as BaseContextMenuContentProps, w as BaseContextMenuItemClassNames, x as BaseContextMenuItemProps, y as BaseContextMenuLabelProps, z as BaseContextMenuProps, A as BaseContextMenuRadioGroupProps, C as BaseContextMenuRadioItemProps, D as BaseContextMenuSeparatorProps, E as BaseContextMenuSubContentProps, F as BaseContextMenuSubProps, G as BaseContextMenuSubTriggerProps, H as BaseContextMenuTriggerProps, q as BaseControlClassNames, r as BaseControlTone, I as BaseDensity, J as BaseDescriptionListClassNames, K as BaseDescriptionListItem, L as BaseDescriptionListProps, M as BaseDialogClassNames, N as BaseDialogProps, O as BaseDividerClassNames, P as BaseDividerProps, Q as BaseDropdownMenuClassNames, R as BaseDropdownMenuItem, S as BaseDropdownMenuPlacement, T as BaseDropdownMenuProps, U as BaseEmptyStateProps, V as BaseFieldClassNames, W as BaseFieldProps, X as BaseInputProps, Y as BaseLayoutClassNames, Z as BaseLayoutGap, _ as BaseLayoutOrientation, $ as BaseLayoutPaneClassNames, a0 as BaseLayoutPaneProps, a1 as BaseLayoutPaneSurface, a2 as BaseLayoutProps, a3 as BaseLayoutResizeHandleClassNames, a4 as BaseLayoutResizeHandleProps, a5 as BaseLayoutSize, a6 as BaseLayoutSplitClassNames, a7 as BaseLayoutSplitProps, a8 as BaseLoadingStateProps, a9 as BaseMultiSelectClassNames, aa as BaseMultiSelectOption, ab as BaseMultiSelectProps, ac as BaseNoticeClassNames, ad as BaseNoticeProps, ag as BasePaginationClassNames, ah as BasePaginationProps, ae as BasePanelClassNames, af as BasePanelProps, ai as BaseProgressClassNames, aj as BaseProgressProps, al as BaseRadioGroupClassNames, am as BaseRadioGroupProps, an as BaseRadioOption, ak as BaseRadius, ao as BaseResolvedTheme, ap as BaseSectionHeaderClassNames, aq as BaseSectionHeaderProps, at as BaseSegmentedControlClassNames, au as BaseSegmentedControlOption, av as BaseSegmentedControlProps, ar as BaseSelectOption, as as BaseSelectProps, aw as BaseSkeletonClassNames, ax as BaseSkeletonProps, ay as BaseStateClassNames, az as BaseSwitchClassNames, aA as BaseSwitchProps, aB as BaseTableAlign, aC as BaseTableBodyProps, aD as BaseTableCaptionClassNames, aE as BaseTableCaptionProps, aF as BaseTableCellClassNames, aG as BaseTableCellProps, aH as BaseTableClassNames, aI as BaseTableColumnInteractionOptions, aJ as BaseTableColumnOrderChangeDetail, aK as BaseTableColumnSizeChangeDetail, aL as BaseTableColumnSizes, aM as BaseTableContainerClassNames, aN as BaseTableContainerProps, aO as BaseTableEmptyClassNames, aP as BaseTableEmptyProps, aQ as BaseTableFooterBarClassNames, aR as BaseTableFooterBarProps, aS as BaseTableFooterProps, aU as BaseTableHeadClassNames, aV as BaseTableHeadProps, aT as BaseTableHeaderProps, aW as BaseTableLoadingClassNames, aX as BaseTableLoadingProps, aY as BaseTableProps, aZ as BaseTableRowClassNames, a_ as BaseTableRowProps, a$ as BaseTableSectionClassNames, b0 as BaseTableSortDirection, b1 as BaseTabsClassNames, b2 as BaseTabsItem, b3 as BaseTabsProps, b4 as BaseTextareaProps, ba as BaseThemePresetId, bb as BaseThemeSlots, bc as BaseThemeStyles, b8 as BaseToolbarClassNames, b9 as BaseToolbarProps, b5 as BaseTooltipClassNames, b6 as BaseTooltipPlacement, b7 as BaseTooltipProps } from '../../types-Bn6PEDsX.js';
3
3
  import 'react/jsx-runtime';
4
4
  import 'react';
5
5
  import '@radix-ui/react-context-menu';
@@ -3546,6 +3546,448 @@ function BaseLoadingState({
3546
3546
  }
3547
3547
  );
3548
3548
  }
3549
+ function normalizeValues(values) {
3550
+ const nextValues = [];
3551
+ const seen = /* @__PURE__ */ new Set();
3552
+ values?.forEach((value) => {
3553
+ if (seen.has(value)) return;
3554
+ seen.add(value);
3555
+ nextValues.push(value);
3556
+ });
3557
+ return nextValues;
3558
+ }
3559
+ function getNextEnabledIndex(options, currentIndex, direction) {
3560
+ if (!options.length) return -1;
3561
+ const startIndex = currentIndex >= 0 ? currentIndex : 0;
3562
+ for (let offset = 1; offset <= options.length; offset += 1) {
3563
+ const nextIndex = (startIndex + offset * direction + options.length) % options.length;
3564
+ if (!options[nextIndex]?.disabled) {
3565
+ return nextIndex;
3566
+ }
3567
+ }
3568
+ return -1;
3569
+ }
3570
+ function getFirstEnabledIndex(options) {
3571
+ return options.findIndex((option) => !option.disabled);
3572
+ }
3573
+ function getSafeTagCount(maxTagCount, total) {
3574
+ if (maxTagCount === void 0) return total;
3575
+ if (!Number.isFinite(maxTagCount)) return total;
3576
+ return Math.max(0, Math.min(total, Math.floor(maxTagCount)));
3577
+ }
3578
+ function getDefaultRemoveLabel(option) {
3579
+ return `Remove ${option.value}`;
3580
+ }
3581
+ var BaseMultiSelect = react.forwardRef(
3582
+ function BaseMultiSelect2({
3583
+ options,
3584
+ value,
3585
+ defaultValue,
3586
+ name,
3587
+ placeholder = "Select options",
3588
+ icon,
3589
+ invalid = false,
3590
+ disabled = false,
3591
+ required = false,
3592
+ openForPreview = false,
3593
+ maxTagCount,
3594
+ removeLabel = getDefaultRemoveLabel,
3595
+ emptyLabel = "No options",
3596
+ appearance,
3597
+ className,
3598
+ classNames,
3599
+ style,
3600
+ id,
3601
+ "aria-invalid": nativeAriaInvalid,
3602
+ "aria-label": nativeAriaLabel,
3603
+ "aria-labelledby": nativeAriaLabelledBy,
3604
+ onValueChange,
3605
+ ...rootProps
3606
+ }, ref) {
3607
+ const theme = resolveBaseAppearance(appearance);
3608
+ const generatedId = react.useId();
3609
+ const multiSelectId = id ?? generatedId;
3610
+ const controlId = `${multiSelectId}-control`;
3611
+ const listboxId = `${multiSelectId}-listbox`;
3612
+ const rootRef = react.useRef(null);
3613
+ const optionList = options ?? [];
3614
+ const forceOpen = openForPreview;
3615
+ const [uncontrolledOpen, setUncontrolledOpen] = react.useState(false);
3616
+ const open = forceOpen || uncontrolledOpen;
3617
+ const [uncontrolledValue, setUncontrolledValue] = react.useState(
3618
+ () => normalizeValues(defaultValue)
3619
+ );
3620
+ const [activeIndex, setActiveIndex] = react.useState(
3621
+ () => getFirstEnabledIndex(optionList)
3622
+ );
3623
+ const isControlled = value !== void 0;
3624
+ const selectedValues = react.useMemo(
3625
+ () => normalizeValues(isControlled ? value : uncontrolledValue),
3626
+ [isControlled, uncontrolledValue, value]
3627
+ );
3628
+ const selectedValueSet = react.useMemo(
3629
+ () => new Set(selectedValues),
3630
+ [selectedValues]
3631
+ );
3632
+ const optionByValue = react.useMemo(() => {
3633
+ const map = /* @__PURE__ */ new Map();
3634
+ optionList.forEach((option) => {
3635
+ if (!map.has(option.value)) {
3636
+ map.set(option.value, option);
3637
+ }
3638
+ });
3639
+ return map;
3640
+ }, [optionList]);
3641
+ const selectedOptions = react.useMemo(
3642
+ () => selectedValues.map((selectedValue) => optionByValue.get(selectedValue)).filter(
3643
+ (option) => option !== void 0
3644
+ ),
3645
+ [optionByValue, selectedValues]
3646
+ );
3647
+ const firstEnabledIndex = react.useMemo(
3648
+ () => getFirstEnabledIndex(optionList),
3649
+ [optionList]
3650
+ );
3651
+ const resolvedActiveIndex = activeIndex >= 0 && !optionList[activeIndex]?.disabled ? activeIndex : firstEnabledIndex;
3652
+ const visibleTagCount = getSafeTagCount(
3653
+ maxTagCount,
3654
+ selectedOptions.length
3655
+ );
3656
+ const visibleOptions = selectedOptions.slice(0, visibleTagCount);
3657
+ const overflowCount = selectedOptions.length - visibleOptions.length;
3658
+ const isPlaceholder = selectedOptions.length === 0;
3659
+ const setRootRef = (node) => {
3660
+ rootRef.current = node;
3661
+ if (typeof ref === "function") {
3662
+ ref(node);
3663
+ } else if (ref) {
3664
+ ref.current = node;
3665
+ }
3666
+ };
3667
+ const setOpen = (nextOpen) => {
3668
+ if (disabled || forceOpen) return;
3669
+ setUncontrolledOpen(nextOpen);
3670
+ if (nextOpen) {
3671
+ setActiveIndex(resolvedActiveIndex);
3672
+ }
3673
+ };
3674
+ react.useEffect(() => {
3675
+ if (!open || forceOpen) return void 0;
3676
+ const handlePointerDown = (event) => {
3677
+ if (!rootRef.current?.contains(event.target)) {
3678
+ setUncontrolledOpen(false);
3679
+ }
3680
+ };
3681
+ document.addEventListener("pointerdown", handlePointerDown);
3682
+ return () => {
3683
+ document.removeEventListener("pointerdown", handlePointerDown);
3684
+ };
3685
+ }, [forceOpen, open]);
3686
+ react.useEffect(() => {
3687
+ if (resolvedActiveIndex >= 0 && resolvedActiveIndex !== activeIndex) {
3688
+ setActiveIndex(resolvedActiveIndex);
3689
+ }
3690
+ }, [activeIndex, resolvedActiveIndex]);
3691
+ const commitValues = (nextValues) => {
3692
+ const normalizedValues = normalizeValues(nextValues);
3693
+ if (!isControlled) {
3694
+ setUncontrolledValue(normalizedValues);
3695
+ }
3696
+ onValueChange?.(normalizedValues);
3697
+ };
3698
+ const toggleOption = (option) => {
3699
+ if (!option || option.disabled || disabled) return;
3700
+ const nextValues = selectedValueSet.has(option.value) ? selectedValues.filter((selectedValue) => selectedValue !== option.value) : [...selectedValues, option.value];
3701
+ commitValues(nextValues);
3702
+ };
3703
+ const removeOption = (option) => {
3704
+ if (disabled) return;
3705
+ commitValues(
3706
+ selectedValues.filter((selectedValue) => selectedValue !== option.value)
3707
+ );
3708
+ };
3709
+ const focusOption = (direction) => {
3710
+ const nextIndex = getNextEnabledIndex(
3711
+ optionList,
3712
+ resolvedActiveIndex,
3713
+ direction
3714
+ );
3715
+ if (nextIndex >= 0) {
3716
+ setActiveIndex(nextIndex);
3717
+ }
3718
+ };
3719
+ const handleKeyDown = (event) => {
3720
+ if (disabled) return;
3721
+ if (event.key === "ArrowDown" || event.key === "ArrowUp") {
3722
+ event.preventDefault();
3723
+ if (!open) {
3724
+ setOpen(true);
3725
+ setActiveIndex(firstEnabledIndex);
3726
+ return;
3727
+ }
3728
+ focusOption(event.key === "ArrowDown" ? 1 : -1);
3729
+ return;
3730
+ }
3731
+ if (event.key === "Home") {
3732
+ event.preventDefault();
3733
+ setOpen(true);
3734
+ setActiveIndex(firstEnabledIndex);
3735
+ return;
3736
+ }
3737
+ if (event.key === "End") {
3738
+ event.preventDefault();
3739
+ setOpen(true);
3740
+ for (let index = optionList.length - 1; index >= 0; index -= 1) {
3741
+ if (!optionList[index]?.disabled) {
3742
+ setActiveIndex(index);
3743
+ break;
3744
+ }
3745
+ }
3746
+ return;
3747
+ }
3748
+ if (event.key === "Enter" || event.key === " ") {
3749
+ event.preventDefault();
3750
+ if (!open) {
3751
+ setOpen(true);
3752
+ return;
3753
+ }
3754
+ toggleOption(optionList[resolvedActiveIndex]);
3755
+ return;
3756
+ }
3757
+ if (event.key === "Escape") {
3758
+ setOpen(false);
3759
+ }
3760
+ };
3761
+ return /* @__PURE__ */ jsxRuntime.jsxs(
3762
+ "div",
3763
+ {
3764
+ ...rootProps,
3765
+ id,
3766
+ ref: setRootRef,
3767
+ className: cn(
3768
+ theme.slots.controlWrapper,
3769
+ "overflow-visible",
3770
+ open && "z-50",
3771
+ invalid && theme.slots.controlInvalid,
3772
+ disabled && theme.slots.controlDisabled,
3773
+ classNames?.root,
3774
+ className
3775
+ ),
3776
+ style: {
3777
+ ...theme.styles.control,
3778
+ ...invalid ? theme.styles.controlInvalid : void 0,
3779
+ ...disabled ? theme.styles.controlDisabled : void 0,
3780
+ ...style
3781
+ },
3782
+ children: [
3783
+ hasRenderableNode(icon) ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(theme.slots.controlIcon, classNames?.icon), children: icon }) : null,
3784
+ /* @__PURE__ */ jsxRuntime.jsx(
3785
+ "div",
3786
+ {
3787
+ id: controlId,
3788
+ role: "combobox",
3789
+ tabIndex: disabled ? -1 : 0,
3790
+ "aria-haspopup": "listbox",
3791
+ "aria-expanded": open,
3792
+ "aria-controls": listboxId,
3793
+ "aria-disabled": disabled || void 0,
3794
+ "aria-required": required || void 0,
3795
+ "aria-invalid": nativeAriaInvalid ?? (invalid || void 0),
3796
+ "aria-label": nativeAriaLabel,
3797
+ "aria-labelledby": nativeAriaLabelledBy,
3798
+ className: cn(
3799
+ theme.slots.controlBase,
3800
+ "flex min-h-9 cursor-pointer flex-wrap items-center gap-1.5 py-1.5 pr-9 text-left",
3801
+ disabled && "!cursor-not-allowed",
3802
+ classNames?.control
3803
+ ),
3804
+ onClick: () => setOpen(!open),
3805
+ onKeyDown: handleKeyDown,
3806
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
3807
+ "span",
3808
+ {
3809
+ className: cn(
3810
+ "flex min-w-0 flex-1 flex-wrap items-center gap-1.5",
3811
+ classNames?.tagList
3812
+ ),
3813
+ children: [
3814
+ visibleOptions.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(
3815
+ "span",
3816
+ {
3817
+ className: cn(
3818
+ "inline-flex max-w-full items-center gap-1 rounded-full border border-border/70 bg-muted/65 px-2 py-0.5 text-xs font-medium text-foreground",
3819
+ classNames?.tag
3820
+ ),
3821
+ children: [
3822
+ /* @__PURE__ */ jsxRuntime.jsx(
3823
+ "span",
3824
+ {
3825
+ className: cn(
3826
+ "max-w-40 truncate",
3827
+ classNames?.tagLabel
3828
+ ),
3829
+ children: option.label
3830
+ }
3831
+ ),
3832
+ /* @__PURE__ */ jsxRuntime.jsx(
3833
+ "button",
3834
+ {
3835
+ type: "button",
3836
+ "aria-label": removeLabel(option),
3837
+ disabled,
3838
+ className: cn(
3839
+ "inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-muted-foreground hover:bg-background/80 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed",
3840
+ classNames?.tagRemove
3841
+ ),
3842
+ onClick: (event) => {
3843
+ event.preventDefault();
3844
+ event.stopPropagation();
3845
+ removeOption(option);
3846
+ },
3847
+ onMouseDown: (event) => {
3848
+ event.preventDefault();
3849
+ event.stopPropagation();
3850
+ },
3851
+ onKeyDown: (event) => event.stopPropagation(),
3852
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", children: "x" })
3853
+ }
3854
+ )
3855
+ ]
3856
+ },
3857
+ option.value
3858
+ )),
3859
+ overflowCount > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(
3860
+ "span",
3861
+ {
3862
+ className: cn(
3863
+ "inline-flex max-w-full items-center rounded-full border border-border/70 bg-muted/45 px-2 py-0.5 text-xs font-medium text-muted-foreground",
3864
+ classNames?.tag
3865
+ ),
3866
+ children: [
3867
+ "+",
3868
+ overflowCount
3869
+ ]
3870
+ }
3871
+ ) : null,
3872
+ isPlaceholder ? /* @__PURE__ */ jsxRuntime.jsx(
3873
+ "span",
3874
+ {
3875
+ className: cn(
3876
+ "min-w-0 truncate",
3877
+ theme.slots.selectPlaceholder,
3878
+ classNames?.placeholder
3879
+ ),
3880
+ children: placeholder
3881
+ }
3882
+ ) : null
3883
+ ]
3884
+ }
3885
+ )
3886
+ }
3887
+ ),
3888
+ /* @__PURE__ */ jsxRuntime.jsx(
3889
+ "span",
3890
+ {
3891
+ className: cn(
3892
+ theme.slots.selectChevron,
3893
+ open && "rotate-[225deg]",
3894
+ classNames?.chevron
3895
+ )
3896
+ }
3897
+ ),
3898
+ name ? selectedValues.map((selectedValue) => /* @__PURE__ */ jsxRuntime.jsx(
3899
+ "input",
3900
+ {
3901
+ type: "hidden",
3902
+ name,
3903
+ value: selectedValue,
3904
+ className: classNames?.hiddenInput
3905
+ },
3906
+ selectedValue
3907
+ )) : null,
3908
+ open ? /* @__PURE__ */ jsxRuntime.jsx(
3909
+ "div",
3910
+ {
3911
+ id: listboxId,
3912
+ role: "listbox",
3913
+ "aria-multiselectable": "true",
3914
+ "aria-labelledby": controlId,
3915
+ className: cn(theme.slots.selectMenu, classNames?.menu),
3916
+ style: theme.styles.selectMenu,
3917
+ children: optionList.length > 0 ? optionList.map((option, index) => {
3918
+ const selected = selectedValueSet.has(option.value);
3919
+ const active = index === resolvedActiveIndex;
3920
+ return /* @__PURE__ */ jsxRuntime.jsxs(
3921
+ "button",
3922
+ {
3923
+ type: "button",
3924
+ role: "option",
3925
+ "aria-selected": selected,
3926
+ disabled: option.disabled,
3927
+ className: cn(
3928
+ theme.slots.selectOption,
3929
+ "gap-2",
3930
+ active && theme.slots.selectOptionActive,
3931
+ selected && theme.slots.selectOptionSelected,
3932
+ option.disabled && theme.slots.selectOptionDisabled,
3933
+ classNames?.option
3934
+ ),
3935
+ style: {
3936
+ ...theme.styles.selectOption,
3937
+ ...active ? theme.styles.selectOptionActive : void 0,
3938
+ ...selected ? theme.styles.selectOptionSelected : void 0
3939
+ },
3940
+ onMouseEnter: () => {
3941
+ if (!option.disabled) {
3942
+ setActiveIndex(index);
3943
+ }
3944
+ },
3945
+ onMouseDown: (event) => event.preventDefault(),
3946
+ onClick: () => toggleOption(option),
3947
+ children: [
3948
+ /* @__PURE__ */ jsxRuntime.jsx(
3949
+ "span",
3950
+ {
3951
+ "aria-hidden": "true",
3952
+ className: cn(
3953
+ "inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-sm border border-border/70 text-[10px]",
3954
+ selected && "border-primary/40 bg-primary text-primary-foreground",
3955
+ classNames?.optionIndicator
3956
+ ),
3957
+ children: selected ? "\u2713" : null
3958
+ }
3959
+ ),
3960
+ /* @__PURE__ */ jsxRuntime.jsx(
3961
+ "span",
3962
+ {
3963
+ className: cn(
3964
+ "min-w-0 flex-1 truncate",
3965
+ classNames?.optionLabel
3966
+ ),
3967
+ children: option.label
3968
+ }
3969
+ )
3970
+ ]
3971
+ },
3972
+ option.value
3973
+ );
3974
+ }) : /* @__PURE__ */ jsxRuntime.jsx(
3975
+ "div",
3976
+ {
3977
+ className: cn(
3978
+ "px-2.5 py-2 text-sm text-muted-foreground",
3979
+ classNames?.empty
3980
+ ),
3981
+ children: emptyLabel
3982
+ }
3983
+ )
3984
+ }
3985
+ ) : null
3986
+ ]
3987
+ }
3988
+ );
3989
+ }
3990
+ );
3549
3991
  function BaseNotice({
3550
3992
  tone,
3551
3993
  icon,
@@ -3947,7 +4389,7 @@ function getInitialValue2(options, defaultValue) {
3947
4389
  }
3948
4390
  return "";
3949
4391
  }
3950
- function getNextEnabledIndex(options, currentIndex, direction) {
4392
+ function getNextEnabledIndex2(options, currentIndex, direction) {
3951
4393
  if (!options.length) return -1;
3952
4394
  for (let offset = 1; offset <= options.length; offset += 1) {
3953
4395
  const nextIndex = (currentIndex + offset * direction + options.length) % options.length;
@@ -4049,7 +4491,7 @@ var BaseSelect = react.forwardRef(
4049
4491
  };
4050
4492
  const focusOption = (direction) => {
4051
4493
  const currentIndex = activeIndex >= 0 ? activeIndex : 0;
4052
- const nextIndex = getNextEnabledIndex(optionList, currentIndex, direction);
4494
+ const nextIndex = getNextEnabledIndex2(optionList, currentIndex, direction);
4053
4495
  if (nextIndex >= 0) {
4054
4496
  commitValue(optionList[nextIndex].value, optionList[nextIndex].disabled);
4055
4497
  }
@@ -5448,6 +5890,7 @@ exports.BaseLayoutPane = BaseLayoutPane;
5448
5890
  exports.BaseLayoutResizeHandle = BaseLayoutResizeHandle;
5449
5891
  exports.BaseLayoutSplit = BaseLayoutSplit;
5450
5892
  exports.BaseLoadingState = BaseLoadingState;
5893
+ exports.BaseMultiSelect = BaseMultiSelect;
5451
5894
  exports.BaseNotice = BaseNotice;
5452
5895
  exports.BasePagination = BasePagination;
5453
5896
  exports.BasePanel = BasePanel;