react-os-shell 4.0.4 → 4.1.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.js CHANGED
@@ -15,8 +15,8 @@ export { ShellAuthProvider, setShellAuthBridge, useShellAuth } from './chunk-ADJ
15
15
  import { EditableGrid } from './chunk-GP4Y3VCB.js';
16
16
  export { EditableGrid } from './chunk-GP4Y3VCB.js';
17
17
  import './chunk-4SQU5YV6.js';
18
- import { APP_VERSION, VERSION } from './chunk-UBVU54RM.js';
19
- export { VERSION } from './chunk-UBVU54RM.js';
18
+ import { APP_VERSION, VERSION } from './chunk-C6KDEVSY.js';
19
+ export { VERSION } from './chunk-C6KDEVSY.js';
20
20
  import { registerModalEscapeInterceptor, useIsMobile, useWindowManager, PopupMenu, PopupMenuLabel, PopupMenuDivider, PopupMenuItem, WINDOW_REGISTRY, isPageEntry, Modal, useShellPrefs, SIDEBAR_STRIP_W, forgetMaximizedWindowBoxes, ModalActions, useModalActive, client_default, LoadingSpinner, isShellApiClientConfigured, CancelButton, setWindowPosition } from './chunk-GJUL4R5U.js';
21
21
  export { CancelButton, ConfirmProvider, CopyButton, DocFavStar, Modal, ModalActions, PopupMenu, PopupMenuDivider, PopupMenuItem, PopupMenuLabel, ShellPrefsProvider, WindowCrashedFallback, WindowErrorBoundary, WindowManagerProvider, WindowTitle, commitExposeHighlight, confirm, confirmDestructive, exitExposeMode, getActiveWindowRoute, getExposeHighlight, getWindowPosition, isEntityEntry, isPageEntry, prompt, registerModalEscapeInterceptor, setExposeHighlight, setShellApiClient, setShellWindowRegistry, setWindowDefaultPosition, setWindowPosition, subscribeExposeHighlight, toggleExposeMode, useLocalStoragePrefs, useModalActive, useShellPrefs, useWidgetSettings, useWindowManager, useWindowMenuItem, useWindowTitle } from './chunk-GJUL4R5U.js';
22
22
  import { glassStyle, startMenuCategories, navSections, isSection, GLASS_INPUT_BG, navIcons, sectionIcons } from './chunk-GW3RA6IS.js';
@@ -5915,12 +5915,12 @@ function Pagination({
5915
5915
  ] });
5916
5916
  }
5917
5917
  var Input = forwardRef(function Input2({ invalid, leftIcon, rightAdornment, className = "", ...rest }, ref) {
5918
- const pad = `${leftIcon ? "pl-9" : ""} ${rightAdornment ? "pr-9" : ""}`.trim();
5918
+ const pad2 = `${leftIcon ? "pl-9" : ""} ${rightAdornment ? "pr-9" : ""}`.trim();
5919
5919
  const field = /* @__PURE__ */ jsx(
5920
5920
  "input",
5921
5921
  {
5922
5922
  ref,
5923
- className: inputClasses({ invalid, className: [pad, className].filter(Boolean).join(" ") }),
5923
+ className: inputClasses({ invalid, className: [pad2, className].filter(Boolean).join(" ") }),
5924
5924
  ...rest
5925
5925
  }
5926
5926
  );
@@ -6801,6 +6801,328 @@ function MediaUploadGrid({
6801
6801
  }
6802
6802
  ) });
6803
6803
  }
6804
+ var PRESET_LABELS = ["Last 2 Weeks", "Last Month", "Last 3 Months", "Last 6 Months", "Last 12 Months"];
6805
+ var MONTH_NAMES = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
6806
+ var YEARS_PER_PAGE = 12;
6807
+ var yearPageStart = (y) => Math.floor(y / YEARS_PER_PAGE) * YEARS_PER_PAGE;
6808
+ var pad = (n) => String(n).padStart(2, "0");
6809
+ function toISODate2(d) {
6810
+ return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;
6811
+ }
6812
+ function parseDate(s) {
6813
+ const [y, m, d] = s.split("-").map(Number);
6814
+ return new Date(y, m - 1, d);
6815
+ }
6816
+ function defaultFormatDisplay(s) {
6817
+ const [y, m, d] = s.split("-");
6818
+ return y && m && d ? `${d}/${m}/${y}` : s;
6819
+ }
6820
+ function DateRangePicker({
6821
+ from,
6822
+ to,
6823
+ onChange,
6824
+ formatDisplay = defaultFormatDisplay,
6825
+ clearable = true,
6826
+ placeholder = "Date Range"
6827
+ }) {
6828
+ const [open, setOpen] = useState(false);
6829
+ const [tempFrom, setTempFrom] = useState(from);
6830
+ const [tempTo, setTempTo] = useState(to);
6831
+ const [activePreset, setActivePreset] = useState(null);
6832
+ const ref = useRef(null);
6833
+ const now = /* @__PURE__ */ new Date();
6834
+ const [month, setMonth] = useState(from ? parseDate(from).getMonth() : now.getMonth());
6835
+ const [year, setYear] = useState(from ? parseDate(from).getFullYear() : now.getFullYear());
6836
+ const [view, setView] = useState("days");
6837
+ const [yearPage, setYearPage] = useState(() => yearPageStart(year));
6838
+ const displayDate = (s) => s ? formatDisplay(s) : "";
6839
+ useClickOutside(ref, useCallback(() => {
6840
+ if (open) setOpen(false);
6841
+ }, [open]));
6842
+ const handleOpen = () => {
6843
+ setTempFrom(from);
6844
+ setTempTo(to);
6845
+ setActivePreset(null);
6846
+ const anchor = from ? parseDate(from) : now;
6847
+ setMonth(anchor.getMonth());
6848
+ setYear(anchor.getFullYear());
6849
+ setYearPage(yearPageStart(anchor.getFullYear()));
6850
+ setView("days");
6851
+ setOpen(true);
6852
+ };
6853
+ const handlePreset = (label) => {
6854
+ let start, end;
6855
+ switch (label) {
6856
+ case "Last 2 Weeks":
6857
+ end = /* @__PURE__ */ new Date();
6858
+ start = /* @__PURE__ */ new Date();
6859
+ start.setDate(start.getDate() - 14);
6860
+ break;
6861
+ case "Last Month":
6862
+ start = new Date(now.getFullYear(), now.getMonth() - 1, 1);
6863
+ end = new Date(now.getFullYear(), now.getMonth(), 0);
6864
+ break;
6865
+ case "Last 3 Months":
6866
+ start = new Date(now.getFullYear(), now.getMonth() - 3, 1);
6867
+ end = new Date(now.getFullYear(), now.getMonth(), 0);
6868
+ break;
6869
+ case "Last 6 Months":
6870
+ start = new Date(now.getFullYear(), now.getMonth() - 6, 1);
6871
+ end = new Date(now.getFullYear(), now.getMonth(), 0);
6872
+ break;
6873
+ case "Last 12 Months":
6874
+ start = new Date(now.getFullYear(), now.getMonth() - 12, 1);
6875
+ end = new Date(now.getFullYear(), now.getMonth(), 0);
6876
+ break;
6877
+ default:
6878
+ return;
6879
+ }
6880
+ setTempFrom(toISODate2(start));
6881
+ setTempTo(toISODate2(end));
6882
+ setActivePreset(label);
6883
+ setMonth(start.getMonth());
6884
+ setYear(start.getFullYear());
6885
+ setYearPage(yearPageStart(start.getFullYear()));
6886
+ setView("days");
6887
+ };
6888
+ const handleCalendarSelect = (date) => {
6889
+ setActivePreset("Custom");
6890
+ if (!tempFrom || tempFrom && tempTo) {
6891
+ setTempFrom(date);
6892
+ setTempTo("");
6893
+ } else {
6894
+ if (date < tempFrom) {
6895
+ setTempTo(tempFrom);
6896
+ setTempFrom(date);
6897
+ } else {
6898
+ setTempTo(date);
6899
+ }
6900
+ }
6901
+ };
6902
+ const handleApply = () => {
6903
+ onChange(tempFrom, tempTo);
6904
+ setOpen(false);
6905
+ };
6906
+ const handleClear = () => {
6907
+ onChange("", "");
6908
+ setOpen(false);
6909
+ };
6910
+ const changeMonth = (delta) => {
6911
+ let m = month + delta, y = year;
6912
+ if (m < 0) {
6913
+ m = 11;
6914
+ y--;
6915
+ } else if (m > 11) {
6916
+ m = 0;
6917
+ y++;
6918
+ }
6919
+ setMonth(m);
6920
+ setYear(y);
6921
+ };
6922
+ const handleStep = (delta) => {
6923
+ if (view === "days") changeMonth(delta);
6924
+ else if (view === "months") setYear(year + delta);
6925
+ else setYearPage(yearPage + delta * YEARS_PER_PAGE);
6926
+ };
6927
+ const selectMonth = (m) => {
6928
+ setMonth(m);
6929
+ setView("days");
6930
+ };
6931
+ const selectYear = (y) => {
6932
+ setYear(y);
6933
+ setView("months");
6934
+ };
6935
+ const openYears = () => {
6936
+ setYearPage(yearPageStart(year));
6937
+ setView("years");
6938
+ };
6939
+ const firstDay = new Date(year, month, 1).getDay();
6940
+ const daysInMonth = new Date(year, month + 1, 0).getDate();
6941
+ const prevDays = new Date(year, month, 0).getDate();
6942
+ const monthName = new Date(year, month).toLocaleString("default", { month: "long" });
6943
+ const cells = [];
6944
+ for (let i = firstDay - 1; i >= 0; i--) {
6945
+ const d = new Date(year, month - 1, prevDays - i);
6946
+ cells.push({ day: prevDays - i, current: false, date: toISODate2(d) });
6947
+ }
6948
+ for (let d = 1; d <= daysInMonth; d++) {
6949
+ cells.push({ day: d, current: true, date: toISODate2(new Date(year, month, d)) });
6950
+ }
6951
+ const remaining = 42 - cells.length;
6952
+ for (let d = 1; d <= remaining; d++) {
6953
+ cells.push({ day: d, current: false, date: toISODate2(new Date(year, month + 1, d)) });
6954
+ }
6955
+ const isInRange = (date) => {
6956
+ if (!tempFrom || !tempTo) return false;
6957
+ const s = tempFrom < tempTo ? tempFrom : tempTo;
6958
+ const e = tempFrom < tempTo ? tempTo : tempFrom;
6959
+ return date > s && date < e;
6960
+ };
6961
+ const displayText = from && to ? `${displayDate(from)} \u2014 ${displayDate(to)}` : from ? `From ${displayDate(from)}` : to ? `To ${displayDate(to)}` : "";
6962
+ return /* @__PURE__ */ jsxs("div", { className: "relative", ref, children: [
6963
+ /* @__PURE__ */ jsxs(
6964
+ "div",
6965
+ {
6966
+ className: `inline-flex items-center gap-2 border rounded-lg px-2.5 py-1.5 text-sm focus-within:border-blue-500 focus-within:ring-1 focus-within:ring-blue-500 ${from || to ? "border-blue-400 bg-blue-50 text-blue-700" : "border-gray-300 text-gray-500"}`,
6967
+ children: [
6968
+ /* @__PURE__ */ jsxs(
6969
+ "button",
6970
+ {
6971
+ type: "button",
6972
+ onClick: handleOpen,
6973
+ "aria-haspopup": "dialog",
6974
+ "aria-expanded": open,
6975
+ className: "inline-flex items-center gap-2 focus:outline-none",
6976
+ children: [
6977
+ /* @__PURE__ */ jsx("svg", { className: "w-4 h-4 shrink-0", fill: "none", stroke: "currentColor", strokeWidth: "2", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" }) }),
6978
+ displayText || placeholder
6979
+ ]
6980
+ }
6981
+ ),
6982
+ clearable && (from || to) && /* @__PURE__ */ jsx(
6983
+ "button",
6984
+ {
6985
+ type: "button",
6986
+ onClick: handleClear,
6987
+ "aria-label": "Clear date range",
6988
+ className: "text-blue-400 hover:text-red-500 focus:outline-none focus-visible:ring-1 focus-visible:ring-blue-500 rounded",
6989
+ children: "\xD7"
6990
+ }
6991
+ )
6992
+ ]
6993
+ }
6994
+ ),
6995
+ open && /* @__PURE__ */ jsxs("div", { className: "absolute z-50 mt-1 rounded-2xl p-4", style: { right: 0, ...glassStyle() }, children: [
6996
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 mb-3", children: [
6997
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
6998
+ /* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-gray-500", children: "From" }),
6999
+ /* @__PURE__ */ jsx("span", { className: `text-sm px-2 py-1 rounded border min-w-[90px] ${tempFrom ? "border-blue-300 bg-blue-50 text-blue-700" : "border-gray-200 bg-gray-50 text-gray-400"}`, children: tempFrom ? displayDate(tempFrom) : "Start" })
7000
+ ] }),
7001
+ /* @__PURE__ */ jsx("span", { className: "text-gray-300", children: "\u2014" }),
7002
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
7003
+ /* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-gray-500", children: "To" }),
7004
+ /* @__PURE__ */ jsx("span", { className: `text-sm px-2 py-1 rounded border min-w-[90px] ${tempTo ? "border-blue-300 bg-blue-50 text-blue-700" : "border-gray-200 bg-gray-50 text-gray-400"}`, children: tempTo ? displayDate(tempTo) : "End" })
7005
+ ] })
7006
+ ] }),
7007
+ /* @__PURE__ */ jsxs("div", { className: "flex gap-4", children: [
7008
+ /* @__PURE__ */ jsxs("div", { className: "w-64", children: [
7009
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mb-2 px-1", children: [
7010
+ /* @__PURE__ */ jsx("button", { type: "button", onClick: () => handleStep(-1), "aria-label": "Previous", className: "p-1 rounded-full hover:bg-gray-100 text-gray-600", children: /* @__PURE__ */ jsx("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", strokeWidth: "2", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15 19l-7-7 7-7" }) }) }),
7011
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 text-sm font-semibold text-gray-800", children: [
7012
+ view === "days" && /* @__PURE__ */ jsx(
7013
+ "button",
7014
+ {
7015
+ type: "button",
7016
+ onClick: () => setView("months"),
7017
+ className: "px-1.5 py-0.5 rounded-md hover:bg-gray-100 transition-colors",
7018
+ children: monthName
7019
+ }
7020
+ ),
7021
+ view === "years" ? /* @__PURE__ */ jsxs("span", { className: "px-1.5 py-0.5", children: [
7022
+ yearPage,
7023
+ " \u2013 ",
7024
+ yearPage + YEARS_PER_PAGE - 1
7025
+ ] }) : /* @__PURE__ */ jsx(
7026
+ "button",
7027
+ {
7028
+ type: "button",
7029
+ onClick: openYears,
7030
+ className: "px-1.5 py-0.5 rounded-md hover:bg-gray-100 transition-colors",
7031
+ children: year
7032
+ }
7033
+ )
7034
+ ] }),
7035
+ /* @__PURE__ */ jsx("button", { type: "button", onClick: () => handleStep(1), "aria-label": "Next", className: "p-1 rounded-full hover:bg-gray-100 text-gray-600", children: /* @__PURE__ */ jsx("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", strokeWidth: "2", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) }) })
7036
+ ] }),
7037
+ /* @__PURE__ */ jsxs("div", { className: "min-h-[13.75rem]", children: [
7038
+ view === "days" && /* @__PURE__ */ jsxs(Fragment, { children: [
7039
+ /* @__PURE__ */ jsx("div", { className: "grid grid-cols-7 text-center text-xs font-medium text-gray-500 mb-1", children: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"].map((d) => /* @__PURE__ */ jsx("div", { className: "py-1", children: d }, d)) }),
7040
+ /* @__PURE__ */ jsx("div", { className: "grid grid-cols-7 text-center text-sm", children: cells.map((c, i) => {
7041
+ const isStart = c.date === tempFrom;
7042
+ const isEnd = c.date === tempTo;
7043
+ const isSelected = isStart || isEnd;
7044
+ const inRange = isInRange(c.date);
7045
+ return /* @__PURE__ */ jsx(
7046
+ "button",
7047
+ {
7048
+ type: "button",
7049
+ onClick: () => handleCalendarSelect(c.date),
7050
+ className: `py-1.5 rounded-md transition-colors ${!c.current ? "text-gray-300" : isSelected ? "bg-blue-600 text-white font-semibold" : inRange ? "bg-blue-100 text-blue-800" : "text-gray-700 hover:bg-gray-100"}`,
7051
+ children: c.day
7052
+ },
7053
+ i
7054
+ );
7055
+ }) })
7056
+ ] }),
7057
+ view === "months" && /* @__PURE__ */ jsx("div", { className: "grid grid-cols-3 gap-1 text-center text-sm", children: MONTH_NAMES.map((name, m) => {
7058
+ const isCurrent = m === month;
7059
+ const isThisMonth = m === now.getMonth() && year === now.getFullYear();
7060
+ return /* @__PURE__ */ jsx(
7061
+ "button",
7062
+ {
7063
+ type: "button",
7064
+ onClick: () => selectMonth(m),
7065
+ className: `py-4 rounded-md transition-colors ${isCurrent ? "bg-blue-600 text-white font-semibold" : isThisMonth ? "text-blue-600 font-medium hover:bg-gray-100" : "text-gray-700 hover:bg-gray-100"}`,
7066
+ children: name
7067
+ },
7068
+ name
7069
+ );
7070
+ }) }),
7071
+ view === "years" && /* @__PURE__ */ jsx("div", { className: "grid grid-cols-3 gap-1 text-center text-sm", children: Array.from({ length: YEARS_PER_PAGE }, (_, i) => yearPage + i).map((y) => {
7072
+ const isCurrent = y === year;
7073
+ const isThisYear = y === now.getFullYear();
7074
+ return /* @__PURE__ */ jsx(
7075
+ "button",
7076
+ {
7077
+ type: "button",
7078
+ onClick: () => selectYear(y),
7079
+ className: `py-4 rounded-md transition-colors ${isCurrent ? "bg-blue-600 text-white font-semibold" : isThisYear ? "text-blue-600 font-medium hover:bg-gray-100" : "text-gray-700 hover:bg-gray-100"}`,
7080
+ children: y
7081
+ },
7082
+ y
7083
+ );
7084
+ }) })
7085
+ ] })
7086
+ ] }),
7087
+ /* @__PURE__ */ jsxs("div", { className: "border-l border-gray-200 pl-4 flex flex-col gap-1 min-w-[130px]", children: [
7088
+ PRESET_LABELS.map((label) => /* @__PURE__ */ jsx(
7089
+ "button",
7090
+ {
7091
+ type: "button",
7092
+ onClick: () => handlePreset(label),
7093
+ className: `text-left px-3 py-1.5 text-sm rounded-md transition-colors ${activePreset === label ? "bg-blue-50 text-blue-700 font-medium" : "text-gray-700 hover:bg-gray-50"}`,
7094
+ children: label
7095
+ },
7096
+ label
7097
+ )),
7098
+ /* @__PURE__ */ jsx(
7099
+ "button",
7100
+ {
7101
+ type: "button",
7102
+ onClick: () => setActivePreset("Custom"),
7103
+ className: `text-left px-3 py-1.5 text-sm rounded-md transition-colors ${activePreset === "Custom" ? "bg-blue-50 text-blue-700 font-medium" : "text-gray-700 hover:bg-gray-50"}`,
7104
+ children: "Custom"
7105
+ }
7106
+ )
7107
+ ] })
7108
+ ] }),
7109
+ /* @__PURE__ */ jsxs("div", { className: "flex justify-end gap-2 mt-4 pt-3 border-t border-gray-200", children: [
7110
+ clearable && /* @__PURE__ */ jsx("button", { type: "button", onClick: handleClear, className: "px-3 py-1.5 text-sm text-gray-500 hover:text-gray-700", children: "Clear" }),
7111
+ /* @__PURE__ */ jsx("button", { type: "button", onClick: () => setOpen(false), className: "px-3 py-1.5 text-sm text-gray-600 border border-gray-300 rounded-md hover:bg-gray-50", children: "Cancel" }),
7112
+ /* @__PURE__ */ jsx(
7113
+ "button",
7114
+ {
7115
+ type: "button",
7116
+ onClick: handleApply,
7117
+ disabled: !tempFrom || !tempTo,
7118
+ className: "px-4 py-1.5 text-sm font-medium text-white bg-blue-600 rounded-md hover:bg-blue-700 disabled:opacity-50",
7119
+ children: "Apply"
7120
+ }
7121
+ )
7122
+ ] })
7123
+ ] })
7124
+ ] });
7125
+ }
6804
7126
  function Card({ children, header, footer, padded = true, className = "" }) {
6805
7127
  return /* @__PURE__ */ jsxs("div", { className: `rounded-lg border border-gray-200 bg-white shadow-sm ${className}`.trim(), children: [
6806
7128
  header && /* @__PURE__ */ jsx("div", { className: "border-b border-gray-100 px-4 py-3 text-sm font-semibold text-gray-900", children: header }),
@@ -8934,8 +9256,8 @@ function Sparkline({
8934
9256
  const max = Math.max(...data);
8935
9257
  const min = Math.min(...data);
8936
9258
  const span = max - min || 1;
8937
- const pad = strokeWidth + (showDots ? 2 : 0);
8938
- const y = (v) => height - pad - (v - min) / span * (height - pad * 2);
9259
+ const pad2 = strokeWidth + (showDots ? 2 : 0);
9260
+ const y = (v) => height - pad2 - (v - min) / span * (height - pad2 * 2);
8939
9261
  const pts = data.length === 1 ? [[0, height / 2], [width, height / 2]] : data.map((v, i) => [i * width / (data.length - 1), y(v)]);
8940
9262
  const line = pts.map(([x, yy], i) => `${i === 0 ? "M" : "L"}${x.toFixed(2)},${yy.toFixed(2)}`).join(" ");
8941
9263
  const area = `${line} L${width.toFixed(2)},${height} L0,${height} Z`;
@@ -9641,6 +9963,6 @@ function useEditHotkey(callback) {
9641
9963
  }, [callback, isActive]);
9642
9964
  }
9643
9965
 
9644
- export { ALT, ALT_SHIFT_D, ALT_SHIFT_E, ALT_SHIFT_N, Accordion, AuthScreen, Avatar, AvatarGroup, Banner, BarChart, BehaviorPanel, BulkImportGrid, Button_default as Button, CMD_A, CMD_DOT, CMD_ENTER, CMD_K, CMD_S, Card, ChangePasswordForm, ChatTemplate, Checkbox_default as Checkbox, CheckoutTemplate, ColoredBadge, ContainerFillChart, Customization, DEV_BANNER_TEXT, DashboardTemplate, DataTablePage, Desktop, DesktopHostProvider, DevIndicator, DonutChart, ENTER, EmailTemplate, EmptyState, EntityList, ErrorPage, FilterBar, FormField, FormLayoutPage, GalleryTemplate, GlobalSearch, HelpCenter, INPUT_BASE, Input_default as Input, Kanban, Label, Layout, ListFooter, ListLoadError, LoadingSpinner2 as LoadingSpinner, MOD, Markdown, MediaUploadField, MediaUploadGrid, MetricBar, MilestoneTimeline, NativeSelect, NotificationBell, PageHeader, Pagination, PdfActionButton, Radio_default as Radio, ResizableTable, SHIFT, SearchableSelect, Select_default as Select, ServerStatusIndicator, ShellEntityFetcherProvider, ShortcutHelp, SidebarActionButton, SidebarGroupLabel, SidebarNavItem, SoundsPanel, Sparkline, StartMenu, StatCard, StatusBadge, StatusBadgeProvider, SystemPreferences, Tabs, Textarea_default as Textarea, Tooltip, TopNav, WidgetManager, applyDevTitle, createWindowRegistry, findDuplicateKeys, formatDate, inputClasses, isDevEnv, isMac, isSeverityTone, mediaFileName, mergeBulkItems, severityOf, useClickOutside, useColumnConfig, useDesktopHost, useEditHotkey, useFilters, useInfiniteScroll, useNewHotkey, useShellEntityFetcher, useSort, useTableNav };
9966
+ export { ALT, ALT_SHIFT_D, ALT_SHIFT_E, ALT_SHIFT_N, Accordion, AuthScreen, Avatar, AvatarGroup, Banner, BarChart, BehaviorPanel, BulkImportGrid, Button_default as Button, CMD_A, CMD_DOT, CMD_ENTER, CMD_K, CMD_S, Card, ChangePasswordForm, ChatTemplate, Checkbox_default as Checkbox, CheckoutTemplate, ColoredBadge, ContainerFillChart, Customization, DEV_BANNER_TEXT, DashboardTemplate, DataTablePage, DateRangePicker, Desktop, DesktopHostProvider, DevIndicator, DonutChart, ENTER, EmailTemplate, EmptyState, EntityList, ErrorPage, FilterBar, FormField, FormLayoutPage, GalleryTemplate, GlobalSearch, HelpCenter, INPUT_BASE, Input_default as Input, Kanban, Label, Layout, ListFooter, ListLoadError, LoadingSpinner2 as LoadingSpinner, MOD, Markdown, MediaUploadField, MediaUploadGrid, MetricBar, MilestoneTimeline, NativeSelect, NotificationBell, PageHeader, Pagination, PdfActionButton, Radio_default as Radio, ResizableTable, SHIFT, SearchableSelect, Select_default as Select, ServerStatusIndicator, ShellEntityFetcherProvider, ShortcutHelp, SidebarActionButton, SidebarGroupLabel, SidebarNavItem, SoundsPanel, Sparkline, StartMenu, StatCard, StatusBadge, StatusBadgeProvider, SystemPreferences, Tabs, Textarea_default as Textarea, Tooltip, TopNav, WidgetManager, applyDevTitle, createWindowRegistry, findDuplicateKeys, formatDate, inputClasses, isDevEnv, isMac, isSeverityTone, mediaFileName, mergeBulkItems, severityOf, toISODate2 as toISODate, useClickOutside, useColumnConfig, useDesktopHost, useEditHotkey, useFilters, useInfiniteScroll, useNewHotkey, useShellEntityFetcher, useSort, useTableNav };
9645
9967
  //# sourceMappingURL=index.js.map
9646
9968
  //# sourceMappingURL=index.js.map