@pactor-app/ui 1.14.0 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -3800,6 +3800,7 @@ function Grid({ columns = 1, gap, className, style, children }) {
3800
3800
  // src/components/components/Header/index.tsx
3801
3801
  var import_runtime11 = require("@pactor-app/runtime");
3802
3802
  var import_lucide_react16 = require("lucide-react");
3803
+ var import_react15 = require("react");
3803
3804
  var import_jsx_runtime62 = require("react/jsx-runtime");
3804
3805
  var menuItemClass = "flex items-center gap-1 rounded-md px-3 py-2 text-sm transition-colors text-muted-foreground hover:bg-accent/50 hover:text-foreground";
3805
3806
  function Header({
@@ -3810,6 +3811,8 @@ function Header({
3810
3811
  menu,
3811
3812
  user,
3812
3813
  locales,
3814
+ themeToggle = false,
3815
+ onThemeChange,
3813
3816
  onMenuSelect,
3814
3817
  onDropdownSelect,
3815
3818
  onUserSelect,
@@ -3830,7 +3833,7 @@ function Header({
3830
3833
  "flex h-14 shrink-0 items-center gap-4 border-b bg-card px-4",
3831
3834
  className
3832
3835
  );
3833
- if (!hasBrand && !dropdown && !hasMenu && !hasUser && !hasLocales) {
3836
+ if (!hasBrand && !dropdown && !hasMenu && !hasUser && !hasLocales && !themeToggle) {
3834
3837
  return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("header", { "data-slot": "layout-header", className: rootClass, style, children });
3835
3838
  }
3836
3839
  const brandNode = hasBrand && /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { "data-slot": "header-brand", className: "flex items-center gap-2", children: [
@@ -3847,7 +3850,7 @@ function Header({
3847
3850
  ] });
3848
3851
  const dropdownNode = dropdown !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(HeaderDropdownArea, { dropdown, onSelect: onDropdownSelect });
3849
3852
  const showLeft = brandLeft || dropdownLeft || hasMenu;
3850
- const showRight = dropdownRight || brandRight || hasLocales || hasUser;
3853
+ const showRight = dropdownRight || brandRight || hasLocales || hasUser || themeToggle;
3851
3854
  return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("header", { "data-slot": "layout-header", className: rootClass, style, children: [
3852
3855
  showLeft && /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { "data-slot": "header-left", className: "flex items-center gap-4", children: [
3853
3856
  brandLeft && brandNode,
@@ -3858,6 +3861,7 @@ function Header({
3858
3861
  showRight && /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { "data-slot": "header-right", className: "flex items-center gap-4", children: [
3859
3862
  dropdownRight && dropdownNode,
3860
3863
  brandRight && brandNode,
3864
+ themeToggle && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(HeaderThemeToggle, { onSelect: onThemeChange }),
3861
3865
  hasLocales && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(HeaderLocalesArea, { locales, onSelect: onLocaleChange }),
3862
3866
  hasUser && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(HeaderUserArea, { user, onSelect: onUserSelect })
3863
3867
  ] })
@@ -4005,6 +4009,39 @@ function HeaderLocalesArea({
4005
4009
  )) })
4006
4010
  ] });
4007
4011
  }
4012
+ function readCurrentTheme() {
4013
+ if (typeof document === "undefined") {
4014
+ return "light";
4015
+ }
4016
+ return document.documentElement.getAttribute("data-pactor-theme") === "dark" ? "dark" : "light";
4017
+ }
4018
+ function HeaderThemeToggle({
4019
+ onSelect
4020
+ }) {
4021
+ const [theme, setTheme] = (0, import_react15.useState)(readCurrentTheme);
4022
+ const handleToggle = () => {
4023
+ const next = readCurrentTheme() === "dark" ? "light" : "dark";
4024
+ if (next === "dark") {
4025
+ document.documentElement.setAttribute("data-pactor-theme", "dark");
4026
+ } else {
4027
+ document.documentElement.removeAttribute("data-pactor-theme");
4028
+ }
4029
+ setTheme(next);
4030
+ onSelect?.(next);
4031
+ };
4032
+ return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
4033
+ "button",
4034
+ {
4035
+ type: "button",
4036
+ "data-slot": "header-theme-toggle",
4037
+ className: "flex size-8 cursor-pointer items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent/50 hover:text-foreground",
4038
+ title: theme === "dark" ? "\u5207\u6362\u4E3A\u6D45\u8272" : "\u5207\u6362\u4E3A\u6DF1\u8272",
4039
+ "aria-label": "\u5207\u6362\u660E\u6697\u4E3B\u9898",
4040
+ onClick: handleToggle,
4041
+ children: theme === "dark" ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Icon, { name: "sun", size: "sm" }) : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Icon, { name: "moon", size: "sm" })
4042
+ }
4043
+ );
4044
+ }
4008
4045
 
4009
4046
  // src/components/components/HoverCard/index.tsx
4010
4047
  var import_runtime12 = require("@pactor-app/runtime");
@@ -4066,7 +4103,7 @@ function HoverCard2({ content, children, className, style }) {
4066
4103
 
4067
4104
  // src/components/components/Input/index.tsx
4068
4105
  var import_runtime13 = require("@pactor-app/runtime");
4069
- var import_react15 = require("react");
4106
+ var import_react16 = require("react");
4070
4107
  var import_jsx_runtime65 = require("react/jsx-runtime");
4071
4108
  function Input2({
4072
4109
  name,
@@ -4084,9 +4121,9 @@ function Input2({
4084
4121
  }) {
4085
4122
  const form = useFormContext();
4086
4123
  const { t } = (0, import_runtime13.useI18n)();
4087
- const controlId = (0, import_react15.useId)();
4124
+ const controlId = (0, import_react16.useId)();
4088
4125
  const inForm = form?.inForm === true && typeof name === "string" && name !== "";
4089
- (0, import_react15.useEffect)(() => {
4126
+ (0, import_react16.useEffect)(() => {
4090
4127
  if (inForm && form && name) {
4091
4128
  form.registerField(name, rules, value);
4092
4129
  return () => form.unregisterField(name);
@@ -4203,7 +4240,7 @@ function InputGroup2({ className, style, children }) {
4203
4240
  }
4204
4241
 
4205
4242
  // src/components/components/InputOTP/index.tsx
4206
- var import_react16 = require("react");
4243
+ var import_react17 = require("react");
4207
4244
 
4208
4245
  // src/ui/input-otp.tsx
4209
4246
  var import_input_otp = require("input-otp");
@@ -4279,15 +4316,15 @@ function InputOTP2({
4279
4316
  }) {
4280
4317
  const form = useFormContext();
4281
4318
  const inForm = form?.inForm === true && typeof name === "string" && name !== "";
4282
- (0, import_react16.useEffect)(() => {
4319
+ (0, import_react17.useEffect)(() => {
4283
4320
  if (inForm && form && name) {
4284
4321
  form.registerField(name, rules, value);
4285
4322
  return () => form.unregisterField(name);
4286
4323
  }
4287
4324
  return void 0;
4288
4325
  });
4289
- const [innerValue, setInnerValue] = (0, import_react16.useState)(typeof value === "string" ? value : "");
4290
- (0, import_react16.useEffect)(() => {
4326
+ const [innerValue, setInnerValue] = (0, import_react17.useState)(typeof value === "string" ? value : "");
4327
+ (0, import_react17.useEffect)(() => {
4291
4328
  if (!inForm) setInnerValue(typeof value === "string" ? value : "");
4292
4329
  }, [inForm, value]);
4293
4330
  const current = inForm && form && name ? typeof form.values[name] === "string" ? form.values[name] : "" : innerValue;
@@ -4525,7 +4562,7 @@ function Link2({ href, text, target, className, style, children }) {
4525
4562
  }
4526
4563
 
4527
4564
  // src/components/components/Menu/index.tsx
4528
- var import_react19 = require("react");
4565
+ var import_react20 = require("react");
4529
4566
 
4530
4567
  // src/components/components/Sidebar/rail-tooltip.tsx
4531
4568
  var import_jsx_runtime78 = require("react/jsx-runtime");
@@ -4541,7 +4578,7 @@ function RailTooltip({
4541
4578
 
4542
4579
  // src/components/components/Sidebar/index.tsx
4543
4580
  var import_runtime16 = require("@pactor-app/runtime");
4544
- var import_react18 = require("react");
4581
+ var import_react19 = require("react");
4545
4582
 
4546
4583
  // src/ui/sidebar.tsx
4547
4584
  var React5 = __toESM(require("react"), 1);
@@ -4549,13 +4586,13 @@ var import_class_variance_authority5 = require("class-variance-authority");
4549
4586
  var import_lucide_react19 = require("lucide-react");
4550
4587
 
4551
4588
  // src/hooks/use-mobile.ts
4552
- var import_react17 = require("react");
4589
+ var import_react18 = require("react");
4553
4590
  var MOBILE_MEDIA_QUERY = "(max-width: 767px)";
4554
4591
  function useIsMobile() {
4555
- const [isMobile, setIsMobile] = (0, import_react17.useState)(
4592
+ const [isMobile, setIsMobile] = (0, import_react18.useState)(
4556
4593
  () => typeof window !== "undefined" && typeof window.matchMedia === "function" && window.matchMedia(MOBILE_MEDIA_QUERY).matches
4557
4594
  );
4558
- (0, import_react17.useEffect)(() => {
4595
+ (0, import_react18.useEffect)(() => {
4559
4596
  if (typeof window.matchMedia !== "function") {
4560
4597
  return;
4561
4598
  }
@@ -4887,7 +4924,12 @@ function SidebarRoot({
4887
4924
  className: cn(
4888
4925
  "fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex",
4889
4926
  side === "left" ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",
4890
- variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",
4927
+ variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : (
4928
+ // 边框色显式声明:不能只给宽度——宿主引入 Tailwind 时其
4929
+ // preflight(同为 base 层且后加载)会把默认 border-color
4930
+ // 重置为 currentColor,宽度型边框会脱离皮肤令牌
4931
+ "border-sidebar-border group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l"
4932
+ ),
4891
4933
  className
4892
4934
  ),
4893
4935
  ...props,
@@ -5188,14 +5230,14 @@ function SidebarInner({
5188
5230
  const isMobile = useIsMobile();
5189
5231
  const { state, setOpenMobile, toggleSidebar } = useSidebar();
5190
5232
  const collapsed = state === "collapsed";
5191
- const prevCollapsed = (0, import_react18.useRef)(collapsed);
5192
- (0, import_react18.useEffect)(() => {
5233
+ const prevCollapsed = (0, import_react19.useRef)(collapsed);
5234
+ (0, import_react19.useEffect)(() => {
5193
5235
  if (prevCollapsed.current !== collapsed) {
5194
5236
  prevCollapsed.current = collapsed;
5195
5237
  onCollapse?.(collapsed);
5196
5238
  }
5197
5239
  }, [collapsed, onCollapse]);
5198
- (0, import_react18.useEffect)(() => {
5240
+ (0, import_react19.useEffect)(() => {
5199
5241
  if (locationKey !== void 0) {
5200
5242
  setOpenMobile(false);
5201
5243
  }
@@ -5293,7 +5335,7 @@ function Menu2({
5293
5335
  const drawer = useSidebarDrawer();
5294
5336
  const collapsed = mode === "inline" && drawer?.collapsed === true;
5295
5337
  const collapsibleOn = collapsible && mode === "inline" && !collapsed;
5296
- const [expandedKeys, setExpandedKeys] = (0, import_react19.useState)(() => {
5338
+ const [expandedKeys, setExpandedKeys] = (0, import_react20.useState)(() => {
5297
5339
  const initial = new Set(defaultExpandedKeys ?? []);
5298
5340
  if (selectedKey !== void 0) {
5299
5341
  collectAncestors(items, selectedKey, initial);
@@ -5373,8 +5415,8 @@ function MenuEntry({
5373
5415
  const isDirectory = collapsible && hasChildren;
5374
5416
  const expanded = isDirectory && expandedKeys?.has(item.key) === true;
5375
5417
  const railDirectory = collapsed && hasChildren;
5376
- const [flyoutOpen, setFlyoutOpen] = (0, import_react19.useState)(false);
5377
- const flyoutTimer = (0, import_react19.useRef)(void 0);
5418
+ const [flyoutOpen, setFlyoutOpen] = (0, import_react20.useState)(false);
5419
+ const flyoutTimer = (0, import_react20.useRef)(void 0);
5378
5420
  const flyoutOpenNow = () => {
5379
5421
  window.clearTimeout(flyoutTimer.current);
5380
5422
  setFlyoutOpen(true);
@@ -5383,7 +5425,7 @@ function MenuEntry({
5383
5425
  window.clearTimeout(flyoutTimer.current);
5384
5426
  flyoutTimer.current = window.setTimeout(() => setFlyoutOpen(false), 200);
5385
5427
  };
5386
- (0, import_react19.useEffect)(() => () => window.clearTimeout(flyoutTimer.current), []);
5428
+ (0, import_react20.useEffect)(() => () => window.clearTimeout(flyoutTimer.current), []);
5387
5429
  const button = /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)(
5388
5430
  "button",
5389
5431
  {
@@ -5782,7 +5824,7 @@ function Page({ title, className, style, children }) {
5782
5824
  }
5783
5825
 
5784
5826
  // src/components/components/Pagination/index.tsx
5785
- var import_react20 = require("react");
5827
+ var import_react21 = require("react");
5786
5828
 
5787
5829
  // src/ui/pagination.tsx
5788
5830
  var import_lucide_react21 = require("lucide-react");
@@ -5910,7 +5952,7 @@ function Pagination2({
5910
5952
  className,
5911
5953
  style
5912
5954
  }) {
5913
- const [innerPage, setInnerPage] = (0, import_react20.useState)(1);
5955
+ const [innerPage, setInnerPage] = (0, import_react21.useState)(1);
5914
5956
  const pageCount = Math.max(1, Math.ceil(total / Math.max(1, pageSize)));
5915
5957
  const current = Math.min(Math.max(1, page ?? innerPage), pageCount);
5916
5958
  const goTo = (next) => {
@@ -6030,7 +6072,7 @@ function Progress2({ value, className, style }) {
6030
6072
  }
6031
6073
 
6032
6074
  // src/components/components/RadioGroup/index.tsx
6033
- var import_react21 = require("react");
6075
+ var import_react22 = require("react");
6034
6076
 
6035
6077
  // src/ui/radio-group.tsx
6036
6078
  var import_radio = require("@base-ui/react/radio");
@@ -6116,9 +6158,9 @@ function RadioGroup2({
6116
6158
  style
6117
6159
  }) {
6118
6160
  const form = useFormContext();
6119
- const controlId = (0, import_react21.useId)();
6161
+ const controlId = (0, import_react22.useId)();
6120
6162
  const inForm = form?.inForm === true && typeof name === "string" && name !== "";
6121
- (0, import_react21.useEffect)(() => {
6163
+ (0, import_react22.useEffect)(() => {
6122
6164
  if (inForm && form && name) {
6123
6165
  form.registerField(name, rules, value);
6124
6166
  return () => form.unregisterField(name);
@@ -6190,7 +6232,7 @@ function RadioGroup2({
6190
6232
 
6191
6233
  // src/components/components/Resizable/index.tsx
6192
6234
  var import_runtime18 = require("@pactor-app/runtime");
6193
- var import_react22 = require("react");
6235
+ var import_react23 = require("react");
6194
6236
 
6195
6237
  // src/ui/resizable.tsx
6196
6238
  var import_lucide_react22 = require("lucide-react");
@@ -6243,7 +6285,7 @@ function Resizable({
6243
6285
  style
6244
6286
  }) {
6245
6287
  const { renderChildren } = (0, import_runtime18.useRenderer)();
6246
- return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(PanelGroup, { orientation: direction, className, style, children: panels.map((panel, index) => /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_react22.Fragment, { children: [
6288
+ return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(PanelGroup, { orientation: direction, className, style, children: panels.map((panel, index) => /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_react23.Fragment, { children: [
6247
6289
  index > 0 ? /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(ResizableHandle, { withHandle: true }) : null,
6248
6290
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
6249
6291
  Panel,
@@ -6335,7 +6377,7 @@ function ScrollArea2({
6335
6377
 
6336
6378
  // src/components/components/Select/index.tsx
6337
6379
  var import_runtime19 = require("@pactor-app/runtime");
6338
- var import_react23 = require("react");
6380
+ var import_react24 = require("react");
6339
6381
 
6340
6382
  // src/ui/select.tsx
6341
6383
  var import_select = require("@base-ui/react/select");
@@ -6485,9 +6527,9 @@ function Select2({
6485
6527
  }) {
6486
6528
  const form = useFormContext();
6487
6529
  const { t } = (0, import_runtime19.useI18n)();
6488
- const controlId = (0, import_react23.useId)();
6530
+ const controlId = (0, import_react24.useId)();
6489
6531
  const inForm = form?.inForm === true && typeof name === "string" && name !== "";
6490
- (0, import_react23.useEffect)(() => {
6532
+ (0, import_react24.useEffect)(() => {
6491
6533
  if (inForm && form && name) {
6492
6534
  form.registerField(name, rules, value);
6493
6535
  return () => form.unregisterField(name);
@@ -6682,7 +6724,7 @@ function Skeleton2({ shape = "line", width, height, className, style }) {
6682
6724
  }
6683
6725
 
6684
6726
  // src/components/components/Slider/index.tsx
6685
- var import_react24 = require("react");
6727
+ var import_react25 = require("react");
6686
6728
 
6687
6729
  // src/ui/slider.tsx
6688
6730
  var import_slider = require("@base-ui/react/slider");
@@ -6764,7 +6806,7 @@ function Slider2({
6764
6806
  }) {
6765
6807
  const form = useFormContext();
6766
6808
  const inForm = form?.inForm === true && typeof name === "string" && name !== "";
6767
- (0, import_react24.useEffect)(() => {
6809
+ (0, import_react25.useEffect)(() => {
6768
6810
  if (inForm && form && name) {
6769
6811
  form.registerField(name, rules, value);
6770
6812
  return () => form.unregisterField(name);
@@ -6815,7 +6857,7 @@ function Slider2({
6815
6857
 
6816
6858
  // src/components/components/Sonner/index.tsx
6817
6859
  var import_runtime20 = require("@pactor-app/runtime");
6818
- var import_react25 = require("react");
6860
+ var import_react26 = require("react");
6819
6861
 
6820
6862
  // src/ui/toast.tsx
6821
6863
  var import_toast = require("@base-ui/react/toast");
@@ -6895,7 +6937,7 @@ function Toaster({ className }) {
6895
6937
  var import_jsx_runtime111 = require("react/jsx-runtime");
6896
6938
  function Sonner({ className, style }) {
6897
6939
  const { context } = (0, import_runtime20.useRenderer)();
6898
- (0, import_react25.useEffect)(() => {
6940
+ (0, import_react26.useEffect)(() => {
6899
6941
  const { actions } = context;
6900
6942
  if (actions.has("toast")) {
6901
6943
  return;
@@ -6953,7 +6995,7 @@ function Statistic({ title, value, precision, suffix, className, style }) {
6953
6995
  }
6954
6996
 
6955
6997
  // src/components/components/Switch/index.tsx
6956
- var import_react26 = require("react");
6998
+ var import_react27 = require("react");
6957
6999
 
6958
7000
  // src/ui/switch.tsx
6959
7001
  var import_switch = require("@base-ui/react/switch");
@@ -6992,9 +7034,9 @@ function Switch2({
6992
7034
  style
6993
7035
  }) {
6994
7036
  const form = useFormContext();
6995
- const controlId = (0, import_react26.useId)();
7037
+ const controlId = (0, import_react27.useId)();
6996
7038
  const inForm = form?.inForm === true && typeof name === "string" && name !== "";
6997
- (0, import_react26.useEffect)(() => {
7039
+ (0, import_react27.useEffect)(() => {
6998
7040
  if (inForm && form && name) {
6999
7041
  form.registerField(name, rules, value);
7000
7042
  return () => form.unregisterField(name);
@@ -7048,7 +7090,7 @@ function Switch2({
7048
7090
 
7049
7091
  // src/components/components/Table/index.tsx
7050
7092
  var import_runtime21 = require("@pactor-app/runtime");
7051
- var import_react27 = require("react");
7093
+ var import_react28 = require("react");
7052
7094
  var import_jsx_runtime117 = require("react/jsx-runtime");
7053
7095
  function renderCellValue2(value) {
7054
7096
  if (value === void 0 || value === null) {
@@ -7071,7 +7113,7 @@ function Table3({
7071
7113
  }) {
7072
7114
  const { renderChildren } = (0, import_runtime21.useRenderer)();
7073
7115
  const { t } = (0, import_runtime21.useI18n)();
7074
- const [current, setCurrent] = (0, import_react27.useState)(1);
7116
+ const [current, setCurrent] = (0, import_react28.useState)(1);
7075
7117
  const pageSize = pagination === false ? void 0 : pagination?.pageSize;
7076
7118
  const total = dataSource.length;
7077
7119
  const pageCount = pageSize !== void 0 && pageSize > 0 ? Math.max(1, Math.ceil(total / pageSize)) : 1;
@@ -7306,7 +7348,7 @@ function Text({
7306
7348
  }
7307
7349
 
7308
7350
  // src/components/components/Textarea/index.tsx
7309
- var import_react28 = require("react");
7351
+ var import_react29 = require("react");
7310
7352
  var import_jsx_runtime121 = require("react/jsx-runtime");
7311
7353
  function Textarea2({
7312
7354
  name,
@@ -7321,9 +7363,9 @@ function Textarea2({
7321
7363
  style
7322
7364
  }) {
7323
7365
  const form = useFormContext();
7324
- const controlId = (0, import_react28.useId)();
7366
+ const controlId = (0, import_react29.useId)();
7325
7367
  const inForm = form?.inForm === true && typeof name === "string" && name !== "";
7326
- (0, import_react28.useEffect)(() => {
7368
+ (0, import_react29.useEffect)(() => {
7327
7369
  if (inForm && form && name) {
7328
7370
  form.registerField(name, rules, value);
7329
7371
  return () => form.unregisterField(name);
@@ -7751,10 +7793,10 @@ function collectDefaultOpenKeys(registry, activeMenuId) {
7751
7793
  var import_permission = require("@pactor-app/permission");
7752
7794
  var import_router = require("@pactor-app/router");
7753
7795
  var import_runtime23 = require("@pactor-app/runtime");
7754
- var import_react30 = require("react");
7796
+ var import_react31 = require("react");
7755
7797
 
7756
7798
  // src/layout/admin/use-media-query.ts
7757
- var import_react29 = require("react");
7799
+ var import_react30 = require("react");
7758
7800
  var BREAKPOINT_PX = {
7759
7801
  xs: 480,
7760
7802
  sm: 576,
@@ -7764,10 +7806,10 @@ var BREAKPOINT_PX = {
7764
7806
  xxl: 1600
7765
7807
  };
7766
7808
  function useMediaQuery(query) {
7767
- const [matches, setMatches] = (0, import_react29.useState)(
7809
+ const [matches, setMatches] = (0, import_react30.useState)(
7768
7810
  () => typeof window !== "undefined" && typeof window.matchMedia === "function" ? window.matchMedia(query).matches : false
7769
7811
  );
7770
- (0, import_react29.useEffect)(() => {
7812
+ (0, import_react30.useEffect)(() => {
7771
7813
  if (typeof window === "undefined" || typeof window.matchMedia !== "function") {
7772
7814
  return;
7773
7815
  }
@@ -7810,8 +7852,8 @@ function CollapsedGroupFlyout({
7810
7852
  activeMenuId,
7811
7853
  defaultOpenKeys
7812
7854
  }) {
7813
- const [open, setOpen] = (0, import_react30.useState)(false);
7814
- const closeTimer = (0, import_react30.useRef)(void 0);
7855
+ const [open, setOpen] = (0, import_react31.useState)(false);
7856
+ const closeTimer = (0, import_react31.useRef)(void 0);
7815
7857
  const openNow = () => {
7816
7858
  window.clearTimeout(closeTimer.current);
7817
7859
  setOpen(true);
@@ -7820,7 +7862,7 @@ function CollapsedGroupFlyout({
7820
7862
  window.clearTimeout(closeTimer.current);
7821
7863
  closeTimer.current = window.setTimeout(() => setOpen(false), 200);
7822
7864
  };
7823
- (0, import_react30.useEffect)(() => () => window.clearTimeout(closeTimer.current), []);
7865
+ (0, import_react31.useEffect)(() => () => window.clearTimeout(closeTimer.current), []);
7824
7866
  return /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(Popover, { open, onOpenChange: setOpen, children: [
7825
7867
  /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
7826
7868
  PopoverTrigger,
@@ -8004,16 +8046,16 @@ function AdminLayout({
8004
8046
  const showTabs = config.tabs ?? false;
8005
8047
  const showBreadcrumb = config.breadcrumb ?? false;
8006
8048
  const showFooter = config.footer ?? false;
8007
- const [collapsed, setCollapsed] = (0, import_react30.useState)(config.collapsed ?? false);
8049
+ const [collapsed, setCollapsed] = (0, import_react31.useState)(config.collapsed ?? false);
8008
8050
  const broken = useBreakpointBelow(config.breakpoint);
8009
8051
  const effectiveCollapsed = collapsed || broken;
8010
- const [bridgeRoute, setBridgeRoute] = (0, import_react30.useState)(
8052
+ const [bridgeRoute, setBridgeRoute] = (0, import_react31.useState)(
8011
8053
  () => (0, import_router.resolveRoute)(registry, bridge.getLocation())
8012
8054
  );
8013
- const [tabs, setTabs] = (0, import_react30.useState)([]);
8014
- const tabsRef = (0, import_react30.useRef)(tabs);
8055
+ const [tabs, setTabs] = (0, import_react31.useState)([]);
8056
+ const tabsRef = (0, import_react31.useRef)(tabs);
8015
8057
  tabsRef.current = tabs;
8016
- (0, import_react30.useEffect)(() => {
8058
+ (0, import_react31.useEffect)(() => {
8017
8059
  const handleLocation = (location) => {
8018
8060
  const next = (0, import_router.resolveRoute)(registry, location);
8019
8061
  setBridgeRoute(next);
@@ -8034,16 +8076,16 @@ function AdminLayout({
8034
8076
  }, [registry, bridge]);
8035
8077
  const route = routeProp ?? bridgeRoute;
8036
8078
  const activeMenuId = route?.activeMenu;
8037
- const visibleMenus = (0, import_react30.useMemo)(
8079
+ const visibleMenus = (0, import_react31.useMemo)(
8038
8080
  () => buildVisibleMenuTree(registry, permissionChecker),
8039
8081
  [registry, permissionChecker]
8040
8082
  );
8041
- const defaultOpenKeysRef = (0, import_react30.useRef)(null);
8083
+ const defaultOpenKeysRef = (0, import_react31.useRef)(null);
8042
8084
  if (defaultOpenKeysRef.current === null) {
8043
8085
  defaultOpenKeysRef.current = collectDefaultOpenKeys(registry, activeMenuId);
8044
8086
  }
8045
8087
  const defaultOpenKeys = defaultOpenKeysRef.current;
8046
- const activeTopId = (0, import_react30.useMemo)(() => {
8088
+ const activeTopId = (0, import_react31.useMemo)(() => {
8047
8089
  if (activeMenuId !== void 0) {
8048
8090
  const chain = findMenuChain(registry, activeMenuId);
8049
8091
  if (chain.length > 0) {
@@ -8052,11 +8094,11 @@ function AdminLayout({
8052
8094
  }
8053
8095
  return void 0;
8054
8096
  }, [registry, activeMenuId]);
8055
- const [selectedTopId, setSelectedTopId] = (0, import_react30.useState)();
8097
+ const [selectedTopId, setSelectedTopId] = (0, import_react31.useState)();
8056
8098
  const secondaryTopId = selectedTopId ?? activeTopId ?? visibleMenus.find((m) => m.type === "group")?.id ?? visibleMenus[0]?.id;
8057
8099
  const secondaryTop = visibleMenus.find((m) => m.id === secondaryTopId);
8058
8100
  const hasSecondary = (secondaryTop?.children?.length ?? 0) > 0;
8059
- const breadcrumbItems = (0, import_react30.useMemo)(() => {
8101
+ const breadcrumbItems = (0, import_react31.useMemo)(() => {
8060
8102
  if (!showBreadcrumb || activeMenuId === void 0) {
8061
8103
  return [];
8062
8104
  }
@@ -8309,7 +8351,7 @@ function BlankLayout({ children }) {
8309
8351
 
8310
8352
  // src/layout/chat/ChatLayout.tsx
8311
8353
  var import_permission2 = require("@pactor-app/permission");
8312
- var import_react31 = require("react");
8354
+ var import_react32 = require("react");
8313
8355
  var import_jsx_runtime131 = require("react/jsx-runtime");
8314
8356
  function ChatLayout({
8315
8357
  brand,
@@ -8325,7 +8367,7 @@ function ChatLayout({
8325
8367
  sidebarFooter,
8326
8368
  children
8327
8369
  }) {
8328
- const registryMenus = (0, import_react31.useMemo)(() => {
8370
+ const registryMenus = (0, import_react32.useMemo)(() => {
8329
8371
  if (menu !== void 0 || registry === void 0) {
8330
8372
  return [];
8331
8373
  }
@@ -8334,10 +8376,10 @@ function ChatLayout({
8334
8376
  return visible.flatMap((item) => menuItemToMenuData(item));
8335
8377
  }, [menu, registry, permissionChecker]);
8336
8378
  const menuItems = menu ?? registryMenus;
8337
- const [bridgePath, setBridgePath] = (0, import_react31.useState)(
8379
+ const [bridgePath, setBridgePath] = (0, import_react32.useState)(
8338
8380
  () => bridge?.getLocation().pathname ?? "/"
8339
8381
  );
8340
- (0, import_react31.useEffect)(() => {
8382
+ (0, import_react32.useEffect)(() => {
8341
8383
  if (bridge === void 0) {
8342
8384
  return;
8343
8385
  }
@@ -8345,7 +8387,7 @@ function ChatLayout({
8345
8387
  setBridgePath(location.pathname);
8346
8388
  });
8347
8389
  }, [bridge]);
8348
- const activeKey = (0, import_react31.useMemo)(() => {
8390
+ const activeKey = (0, import_react32.useMemo)(() => {
8349
8391
  if (activeMenuKey !== void 0) {
8350
8392
  return activeMenuKey;
8351
8393
  }
@@ -8720,7 +8762,7 @@ function isRecord(value) {
8720
8762
 
8721
8763
  // src/interaction/provider.tsx
8722
8764
  var import_runtime25 = require("@pactor-app/runtime");
8723
- var import_react32 = require("react");
8765
+ var import_react33 = require("react");
8724
8766
  var import_react_dom = require("react-dom");
8725
8767
  var import_jsx_runtime134 = require("react/jsx-runtime");
8726
8768
  var TOAST_DURATION = 3e3;
@@ -8734,11 +8776,11 @@ function InteractionProvider({
8734
8776
  bridge,
8735
8777
  children
8736
8778
  }) {
8737
- const [confirmState, setConfirmState] = (0, import_react32.useState)(null);
8738
- const [confirmOpen, setConfirmOpen] = (0, import_react32.useState)(false);
8739
- const [toasts, setToasts] = (0, import_react32.useState)([]);
8779
+ const [confirmState, setConfirmState] = (0, import_react33.useState)(null);
8780
+ const [confirmOpen, setConfirmOpen] = (0, import_react33.useState)(false);
8781
+ const [toasts, setToasts] = (0, import_react33.useState)([]);
8740
8782
  const { t } = (0, import_runtime25.useI18n)();
8741
- const { modal, message } = (0, import_react32.useMemo)(() => {
8783
+ const { modal, message } = (0, import_react33.useMemo)(() => {
8742
8784
  const pushToast = (type, content) => {
8743
8785
  const id = Date.now() + Math.random();
8744
8786
  setToasts((prev) => [...prev, { id, type, content }]);
@@ -8760,7 +8802,7 @@ function InteractionProvider({
8760
8802
  };
8761
8803
  return { modal: modalImpl, message: messageImpl };
8762
8804
  }, []);
8763
- (0, import_react32.useEffect)(() => {
8805
+ (0, import_react33.useEffect)(() => {
8764
8806
  bridge.modal = modal;
8765
8807
  bridge.message = message;
8766
8808
  return () => {
@@ -8843,7 +8885,7 @@ function InteractionProvider({
8843
8885
  // src/interaction/host.tsx
8844
8886
  var import_lucide_react27 = require("lucide-react");
8845
8887
  var import_runtime26 = require("@pactor-app/runtime");
8846
- var import_react33 = require("react");
8888
+ var import_react34 = require("react");
8847
8889
  var import_jsx_runtime135 = require("react/jsx-runtime");
8848
8890
  function toCssWidth(width) {
8849
8891
  if (width === void 0) {
@@ -8853,11 +8895,11 @@ function toCssWidth(width) {
8853
8895
  }
8854
8896
  function OverlayHost({ manager, resolvePage }) {
8855
8897
  const renderer = (0, import_runtime26.useRenderer)();
8856
- const stack = (0, import_react33.useSyncExternalStore)(
8898
+ const stack = (0, import_react34.useSyncExternalStore)(
8857
8899
  (onChange) => manager.subscribe(onChange),
8858
8900
  () => manager.stack()
8859
8901
  );
8860
- (0, import_react33.useSyncExternalStore)(
8902
+ (0, import_react34.useSyncExternalStore)(
8861
8903
  (onChange) => {
8862
8904
  const offState = renderer.context.state.subscribe(onChange);
8863
8905
  const offData = renderer.context.data.subscribe(onChange);
@@ -9004,9 +9046,9 @@ function PageOverlayBody({
9004
9046
  renderer,
9005
9047
  resolvePage
9006
9048
  }) {
9007
- const [child, setChild] = (0, import_react33.useState)(null);
9008
- const [error, setError] = (0, import_react33.useState)(null);
9009
- (0, import_react33.useEffect)(() => {
9049
+ const [child, setChild] = (0, import_react34.useState)(null);
9050
+ const [error, setError] = (0, import_react34.useState)(null);
9051
+ (0, import_react34.useEffect)(() => {
9010
9052
  if (!resolvePage) {
9011
9053
  setError(
9012
9054
  new Error(
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- export { Accordion, AccordionItemData, AccordionProps, Alert, AlertDialog, AlertDialogProps, AlertProps, AlertVariant, AspectRatio, AspectRatioProps, Avatar, AvatarProps, Badge, BadgeProps, BadgeVariant, Breadcrumb, BreadcrumbItemData, BreadcrumbProps, Button, ButtonGroup, ButtonGroupProps, ButtonProps, ButtonSize, ButtonVariant, Calendar, CalendarProps, Card, CardProps, Carousel, CarouselImage, CarouselItemData, CarouselProps, Chart, ChartProps, ChartType, ChatInput, ChatInputProps, Checkbox, CheckboxProps, Collapsible, CollapsibleProps, Combobox, ComboboxOption, ComboboxProps, Command, CommandGroupData, CommandItemData, CommandProps, Content, ContentProps, ContextMenu, ContextMenuItemData, ContextMenuProps, DataTable, DataTableColumn, DataTablePagination, DataTableProps, DataTableSort, DataTableSortOrder, DatePicker, DatePickerPreset, DatePickerPresetKey, DatePickerProps, DatePickerRangeProps, DatePickerSingleProps, DateRangeValue, Dialog, DialogProps, Drawer, DrawerPlacement, DrawerProps, DropdownMenu, DropdownMenuItemData, DropdownMenuProps, Empty, EmptyProps, Field, FieldProps, FieldRule, Flex, FlexProps, Footer, FooterProps, Form, FormContextValue, FormProps, Grid, GridProps, Header, HeaderBrandPosition, HeaderDropdown, HeaderDropdownItem, HeaderLocale, HeaderMenuItem, HeaderProps, HeaderUser, HeaderUserItem, HoverCard, HoverCardProps, ICONS, Icon, IconProps, IconSize, Input, InputGroup, InputGroupProps, InputOTP, InputOTPProps, InputProps, Item, ItemProps, Kbd, KbdProps, Label, LabelProps, Layout, LayoutProps, Link, LinkProps, Menu, MenuItem, MenuProps, Menubar, MenubarLeafItem, MenubarMenuData, MenubarProps, NavigationMenu, NavigationMenuChildItem, NavigationMenuItemData, NavigationMenuProps, Page, PageProps, Pagination, PaginationProps, Popover, PopoverProps, Progress, ProgressProps, RadioGroup, RadioGroupOption, RadioGroupProps, RailTooltip, Resizable, ResizablePanelData, ResizableProps, ScrollArea, ScrollAreaProps, Select, SelectOption, SelectProps, Separator, SeparatorProps, Sheet, SheetProps, SheetSide, Sidebar, SidebarBrand, SidebarNavItem, SidebarProps, Sider, SiderProps, Skeleton, SkeletonProps, SkeletonShape, Slider, SliderProps, Sonner, SonnerProps, Spinner, SpinnerProps, SpinnerSize, Statistic, StatisticProps, Switch, SwitchProps, TabItem, Table, TableColumn, TablePagination, TablePaginationInfo, TableProps, Tabs, TabsProps, Text, TextProps, TextType, Textarea, TextareaProps, Toggle, ToggleGroup, ToggleGroupOption, ToggleGroupProps, ToggleProps, Tooltip, TooltipProps, Typography, TypographyProps, TypographyVariant, builtinComponents, createComponentRegistry, normalizeIconName, registerBuiltinComponents, useFormContext, useSidebarDrawer } from './components/index.cjs';
1
+ export { Accordion, AccordionItemData, AccordionProps, Alert, AlertDialog, AlertDialogProps, AlertProps, AlertVariant, AspectRatio, AspectRatioProps, Avatar, AvatarProps, Badge, BadgeProps, BadgeVariant, Breadcrumb, BreadcrumbItemData, BreadcrumbProps, Button, ButtonGroup, ButtonGroupProps, ButtonProps, ButtonSize, ButtonVariant, Calendar, CalendarProps, Card, CardProps, Carousel, CarouselImage, CarouselItemData, CarouselProps, Chart, ChartProps, ChartType, ChatInput, ChatInputProps, Checkbox, CheckboxProps, Collapsible, CollapsibleProps, Combobox, ComboboxOption, ComboboxProps, Command, CommandGroupData, CommandItemData, CommandProps, Content, ContentProps, ContextMenu, ContextMenuItemData, ContextMenuProps, DataTable, DataTableColumn, DataTablePagination, DataTableProps, DataTableSort, DataTableSortOrder, DatePicker, DatePickerPreset, DatePickerPresetKey, DatePickerProps, DatePickerRangeProps, DatePickerSingleProps, DateRangeValue, Dialog, DialogProps, Drawer, DrawerPlacement, DrawerProps, DropdownMenu, DropdownMenuItemData, DropdownMenuProps, Empty, EmptyProps, Field, FieldProps, FieldRule, Flex, FlexProps, Footer, FooterProps, Form, FormContextValue, FormProps, Grid, GridProps, Header, HeaderBrandPosition, HeaderDropdown, HeaderDropdownItem, HeaderLocale, HeaderMenuItem, HeaderProps, HeaderTheme, HeaderUser, HeaderUserItem, HoverCard, HoverCardProps, ICONS, Icon, IconProps, IconSize, Input, InputGroup, InputGroupProps, InputOTP, InputOTPProps, InputProps, Item, ItemProps, Kbd, KbdProps, Label, LabelProps, Layout, LayoutProps, Link, LinkProps, Menu, MenuItem, MenuProps, Menubar, MenubarLeafItem, MenubarMenuData, MenubarProps, NavigationMenu, NavigationMenuChildItem, NavigationMenuItemData, NavigationMenuProps, Page, PageProps, Pagination, PaginationProps, Popover, PopoverProps, Progress, ProgressProps, RadioGroup, RadioGroupOption, RadioGroupProps, RailTooltip, Resizable, ResizablePanelData, ResizableProps, ScrollArea, ScrollAreaProps, Select, SelectOption, SelectProps, Separator, SeparatorProps, Sheet, SheetProps, SheetSide, Sidebar, SidebarBrand, SidebarNavItem, SidebarProps, Sider, SiderProps, Skeleton, SkeletonProps, SkeletonShape, Slider, SliderProps, Sonner, SonnerProps, Spinner, SpinnerProps, SpinnerSize, Statistic, StatisticProps, Switch, SwitchProps, TabItem, Table, TableColumn, TablePagination, TablePaginationInfo, TableProps, Tabs, TabsProps, Text, TextProps, TextType, Textarea, TextareaProps, Toggle, ToggleGroup, ToggleGroupOption, ToggleGroupProps, ToggleProps, Tooltip, TooltipProps, Typography, TypographyProps, TypographyVariant, builtinComponents, createComponentRegistry, normalizeIconName, registerBuiltinComponents, useFormContext, useSidebarDrawer } from './components/index.cjs';
2
2
  export { AdminBrand, AdminLayout, AdminLayoutBreakpoint, AdminLayoutConfig, AdminLayoutMode, AdminLayoutProps, BlankLayout, BlankLayoutProps, ChatLayout, ChatLayoutBrand, ChatLayoutMenuItem, ChatLayoutProps, LandingLayout, LandingLayoutProps, LayoutComponent, LayoutRegistry, LoginBrand, LoginLayout, LoginLayoutProps, collectDefaultOpenKeys, createLayoutRegistry, findMenuChain, registerBuiltinLayouts, resolveLayout } from './layout/index.cjs';
3
3
  export { InteractionProvider, InteractionProviderProps, OVERLAY_CANCEL_PAYLOAD, OverlayConfig, OverlayEntry, OverlayHost, OverlayHostProps, OverlayListener, OverlayManager, ResolvePageFn, UiBridge, UiMessage, UiModal, createUiBridge, registerInteractionActions } from './interaction/index.cjs';
4
4
  import '@pactor-app/runtime';
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { Accordion, AccordionItemData, AccordionProps, Alert, AlertDialog, AlertDialogProps, AlertProps, AlertVariant, AspectRatio, AspectRatioProps, Avatar, AvatarProps, Badge, BadgeProps, BadgeVariant, Breadcrumb, BreadcrumbItemData, BreadcrumbProps, Button, ButtonGroup, ButtonGroupProps, ButtonProps, ButtonSize, ButtonVariant, Calendar, CalendarProps, Card, CardProps, Carousel, CarouselImage, CarouselItemData, CarouselProps, Chart, ChartProps, ChartType, ChatInput, ChatInputProps, Checkbox, CheckboxProps, Collapsible, CollapsibleProps, Combobox, ComboboxOption, ComboboxProps, Command, CommandGroupData, CommandItemData, CommandProps, Content, ContentProps, ContextMenu, ContextMenuItemData, ContextMenuProps, DataTable, DataTableColumn, DataTablePagination, DataTableProps, DataTableSort, DataTableSortOrder, DatePicker, DatePickerPreset, DatePickerPresetKey, DatePickerProps, DatePickerRangeProps, DatePickerSingleProps, DateRangeValue, Dialog, DialogProps, Drawer, DrawerPlacement, DrawerProps, DropdownMenu, DropdownMenuItemData, DropdownMenuProps, Empty, EmptyProps, Field, FieldProps, FieldRule, Flex, FlexProps, Footer, FooterProps, Form, FormContextValue, FormProps, Grid, GridProps, Header, HeaderBrandPosition, HeaderDropdown, HeaderDropdownItem, HeaderLocale, HeaderMenuItem, HeaderProps, HeaderUser, HeaderUserItem, HoverCard, HoverCardProps, ICONS, Icon, IconProps, IconSize, Input, InputGroup, InputGroupProps, InputOTP, InputOTPProps, InputProps, Item, ItemProps, Kbd, KbdProps, Label, LabelProps, Layout, LayoutProps, Link, LinkProps, Menu, MenuItem, MenuProps, Menubar, MenubarLeafItem, MenubarMenuData, MenubarProps, NavigationMenu, NavigationMenuChildItem, NavigationMenuItemData, NavigationMenuProps, Page, PageProps, Pagination, PaginationProps, Popover, PopoverProps, Progress, ProgressProps, RadioGroup, RadioGroupOption, RadioGroupProps, RailTooltip, Resizable, ResizablePanelData, ResizableProps, ScrollArea, ScrollAreaProps, Select, SelectOption, SelectProps, Separator, SeparatorProps, Sheet, SheetProps, SheetSide, Sidebar, SidebarBrand, SidebarNavItem, SidebarProps, Sider, SiderProps, Skeleton, SkeletonProps, SkeletonShape, Slider, SliderProps, Sonner, SonnerProps, Spinner, SpinnerProps, SpinnerSize, Statistic, StatisticProps, Switch, SwitchProps, TabItem, Table, TableColumn, TablePagination, TablePaginationInfo, TableProps, Tabs, TabsProps, Text, TextProps, TextType, Textarea, TextareaProps, Toggle, ToggleGroup, ToggleGroupOption, ToggleGroupProps, ToggleProps, Tooltip, TooltipProps, Typography, TypographyProps, TypographyVariant, builtinComponents, createComponentRegistry, normalizeIconName, registerBuiltinComponents, useFormContext, useSidebarDrawer } from './components/index.js';
1
+ export { Accordion, AccordionItemData, AccordionProps, Alert, AlertDialog, AlertDialogProps, AlertProps, AlertVariant, AspectRatio, AspectRatioProps, Avatar, AvatarProps, Badge, BadgeProps, BadgeVariant, Breadcrumb, BreadcrumbItemData, BreadcrumbProps, Button, ButtonGroup, ButtonGroupProps, ButtonProps, ButtonSize, ButtonVariant, Calendar, CalendarProps, Card, CardProps, Carousel, CarouselImage, CarouselItemData, CarouselProps, Chart, ChartProps, ChartType, ChatInput, ChatInputProps, Checkbox, CheckboxProps, Collapsible, CollapsibleProps, Combobox, ComboboxOption, ComboboxProps, Command, CommandGroupData, CommandItemData, CommandProps, Content, ContentProps, ContextMenu, ContextMenuItemData, ContextMenuProps, DataTable, DataTableColumn, DataTablePagination, DataTableProps, DataTableSort, DataTableSortOrder, DatePicker, DatePickerPreset, DatePickerPresetKey, DatePickerProps, DatePickerRangeProps, DatePickerSingleProps, DateRangeValue, Dialog, DialogProps, Drawer, DrawerPlacement, DrawerProps, DropdownMenu, DropdownMenuItemData, DropdownMenuProps, Empty, EmptyProps, Field, FieldProps, FieldRule, Flex, FlexProps, Footer, FooterProps, Form, FormContextValue, FormProps, Grid, GridProps, Header, HeaderBrandPosition, HeaderDropdown, HeaderDropdownItem, HeaderLocale, HeaderMenuItem, HeaderProps, HeaderTheme, HeaderUser, HeaderUserItem, HoverCard, HoverCardProps, ICONS, Icon, IconProps, IconSize, Input, InputGroup, InputGroupProps, InputOTP, InputOTPProps, InputProps, Item, ItemProps, Kbd, KbdProps, Label, LabelProps, Layout, LayoutProps, Link, LinkProps, Menu, MenuItem, MenuProps, Menubar, MenubarLeafItem, MenubarMenuData, MenubarProps, NavigationMenu, NavigationMenuChildItem, NavigationMenuItemData, NavigationMenuProps, Page, PageProps, Pagination, PaginationProps, Popover, PopoverProps, Progress, ProgressProps, RadioGroup, RadioGroupOption, RadioGroupProps, RailTooltip, Resizable, ResizablePanelData, ResizableProps, ScrollArea, ScrollAreaProps, Select, SelectOption, SelectProps, Separator, SeparatorProps, Sheet, SheetProps, SheetSide, Sidebar, SidebarBrand, SidebarNavItem, SidebarProps, Sider, SiderProps, Skeleton, SkeletonProps, SkeletonShape, Slider, SliderProps, Sonner, SonnerProps, Spinner, SpinnerProps, SpinnerSize, Statistic, StatisticProps, Switch, SwitchProps, TabItem, Table, TableColumn, TablePagination, TablePaginationInfo, TableProps, Tabs, TabsProps, Text, TextProps, TextType, Textarea, TextareaProps, Toggle, ToggleGroup, ToggleGroupOption, ToggleGroupProps, ToggleProps, Tooltip, TooltipProps, Typography, TypographyProps, TypographyVariant, builtinComponents, createComponentRegistry, normalizeIconName, registerBuiltinComponents, useFormContext, useSidebarDrawer } from './components/index.js';
2
2
  export { AdminBrand, AdminLayout, AdminLayoutBreakpoint, AdminLayoutConfig, AdminLayoutMode, AdminLayoutProps, BlankLayout, BlankLayoutProps, ChatLayout, ChatLayoutBrand, ChatLayoutMenuItem, ChatLayoutProps, LandingLayout, LandingLayoutProps, LayoutComponent, LayoutRegistry, LoginBrand, LoginLayout, LoginLayoutProps, collectDefaultOpenKeys, createLayoutRegistry, findMenuChain, registerBuiltinLayouts, resolveLayout } from './layout/index.js';
3
3
  export { InteractionProvider, InteractionProviderProps, OVERLAY_CANCEL_PAYLOAD, OverlayConfig, OverlayEntry, OverlayHost, OverlayHostProps, OverlayListener, OverlayManager, ResolvePageFn, UiBridge, UiMessage, UiModal, createUiBridge, registerInteractionActions } from './interaction/index.js';
4
4
  import '@pactor-app/runtime';