@rufous/ui 0.1.84 → 0.1.86

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/main.cjs CHANGED
@@ -6424,7 +6424,7 @@ var init_element = __esm({
6424
6424
  });
6425
6425
 
6426
6426
  // node_modules/jodit/esm/core/ui/button/button/button.js
6427
- function Button(jodit, stateOrText, text, variant) {
6427
+ function Button2(jodit, stateOrText, text, variant) {
6428
6428
  const button = new UIButton(jodit);
6429
6429
  button.state.tabIndex = jodit.o.allowTabNavigation ? 0 : -1;
6430
6430
  if (isString(stateOrText)) {
@@ -10303,7 +10303,7 @@ function Alert(msg, title, callback, className = "jodit-dialog_alert") {
10303
10303
  callback = title;
10304
10304
  title = void 0;
10305
10305
  }
10306
- const dialog = this instanceof Dialog ? this : new Dialog({ closeOnClickOverlay: true }), container = dialog.c.div(className), okButton = Button(dialog, "ok", "Ok");
10306
+ const dialog = this instanceof Dialog ? this : new Dialog({ closeOnClickOverlay: true }), container = dialog.c.div(className), okButton = Button2(dialog, "ok", "Ok");
10307
10307
  asArray(msg).forEach((oneMessage) => {
10308
10308
  container.appendChild(Dom.isNode(oneMessage) ? oneMessage : dialog.c.fromHTML(oneMessage));
10309
10309
  });
@@ -10341,8 +10341,8 @@ function Confirm(msg, title, callback) {
10341
10341
  dialog.close();
10342
10342
  }
10343
10343
  };
10344
- const $cancel = Button(dialog, "cancel", "Cancel");
10345
- const $ok = Button(dialog, "ok", "Yes");
10344
+ const $cancel = Button2(dialog, "cancel", "Cancel");
10345
+ const $ok = Button2(dialog, "ok", "Yes");
10346
10346
  $cancel.onAction(action(false));
10347
10347
  $ok.onAction(action(true));
10348
10348
  dialog.e.on($div, "submit", () => {
@@ -10364,7 +10364,7 @@ var init_confirm = __esm({
10364
10364
 
10365
10365
  // node_modules/jodit/esm/modules/dialog/prompt.js
10366
10366
  function Prompt(msg, title, callback, placeholder2, defaultValue) {
10367
- const dialog = this instanceof Dialog ? this : new Dialog({ closeOnClickOverlay: true }), cancelButton = Button(dialog, "cancel", "Cancel"), okButton = Button(dialog, "ok", "Ok"), form2 = dialog.c.element("form", {
10367
+ const dialog = this instanceof Dialog ? this : new Dialog({ closeOnClickOverlay: true }), cancelButton = Button2(dialog, "cancel", "Cancel"), okButton = Button2(dialog, "ok", "Ok"), form2 = dialog.c.element("form", {
10368
10368
  class: "jodit-dialog_prompt"
10369
10369
  }), inputElement = dialog.c.element("input", {
10370
10370
  autofocus: true,
@@ -10515,7 +10515,7 @@ var init_context_menu = __esm({
10515
10515
  if (!item) {
10516
10516
  return;
10517
10517
  }
10518
- const action = Button(this.jodit, item.icon || "empty", item.title);
10518
+ const action = Button2(this.jodit, item.icon || "empty", item.title);
10519
10519
  this.jodit && action.setParentView(this.jodit);
10520
10520
  action.setMod("context", "menu");
10521
10521
  action.onAction((e) => {
@@ -12018,9 +12018,9 @@ var init_image_editor = __esm({
12018
12018
  this.resizeUseRatio = o.resizeUseRatio;
12019
12019
  this.cropUseRatio = o.cropUseRatio;
12020
12020
  this.buttons = {
12021
- reset: Button(this.j, "update", "Reset"),
12022
- save: Button(this.j, "save", "Save"),
12023
- saveas: Button(this.j, {
12021
+ reset: Button2(this.j, "update", "Reset"),
12022
+ save: Button2(this.j, "save", "Save"),
12023
+ saveas: Button2(this.j, {
12024
12024
  icon: {
12025
12025
  name: "save"
12026
12026
  },
@@ -12508,7 +12508,7 @@ function stateListeners() {
12508
12508
  return;
12509
12509
  }
12510
12510
  if (options2.renameFolder && this.dataProvider.canI("FolderRename")) {
12511
- const btn = Button(this, {
12511
+ const btn = Button2(this, {
12512
12512
  icon: { name: "pencil" },
12513
12513
  name: "rename",
12514
12514
  tooltip: "Rename",
@@ -12518,7 +12518,7 @@ function stateListeners() {
12518
12518
  folderElm.appendChild(btn.container);
12519
12519
  }
12520
12520
  if (options2.deleteFolder && this.dataProvider.canI("FolderRemove")) {
12521
- const btn = Button(this, {
12521
+ const btn = Button2(this, {
12522
12522
  icon: { name: "cancel" },
12523
12523
  name: "remove",
12524
12524
  tooltip: "Delete",
@@ -12529,7 +12529,7 @@ function stateListeners() {
12529
12529
  }
12530
12530
  });
12531
12531
  if (options2.createNewFolder && this.dataProvider.canI("FolderCreate")) {
12532
- const button = Button(this, "plus", "Add folder", "secondary");
12532
+ const button = Button2(this, "plus", "Add folder", "secondary");
12533
12533
  button.onAction(() => {
12534
12534
  this.e.fire("addFolder", {
12535
12535
  path: normalizePath(source.path + "/"),
@@ -17623,7 +17623,7 @@ __export(modules_exports, {
17623
17623
  Alert: () => Alert,
17624
17624
  Async: () => Async,
17625
17625
  AsyncStorage: () => AsyncStorage,
17626
- Button: () => Button,
17626
+ Button: () => Button2,
17627
17627
  CommitStyle: () => CommitStyle,
17628
17628
  Component: () => Component,
17629
17629
  Confirm: () => Confirm,
@@ -25100,7 +25100,7 @@ var init_tabs = __esm({
25100
25100
  attr(tab2, {
25101
25101
  role: "tabpanel"
25102
25102
  });
25103
- const button = Button(jodit, icon || name, name);
25103
+ const button = Button2(jodit, icon || name, name);
25104
25104
  button.state.role = "tab";
25105
25105
  jodit.e.on(button.container, "pointerdown", (e) => e.preventDefault());
25106
25106
  if (!firstTab) {
@@ -28650,6 +28650,7 @@ __export(main_exports, {
28650
28650
  BaseDialog: () => BaseDialog_default,
28651
28651
  Box: () => Box,
28652
28652
  Breadcrumbs: () => Breadcrumbs,
28653
+ Button: () => Button,
28653
28654
  CameraIcon: () => cameraIcon_default,
28654
28655
  CancelButton: () => cancelButton_default,
28655
28656
  Card: () => Card,
@@ -28685,6 +28686,7 @@ __export(main_exports, {
28685
28686
  Grow: () => Grow,
28686
28687
  HelpOutlinedIcon: () => helpOutlinedIcon_default,
28687
28688
  HierarchyIcon: () => hierarchyIcon_default,
28689
+ IconButton: () => IconButton,
28688
28690
  ImageField: () => ImageField,
28689
28691
  InactiveGroupIcon: () => inactiveGroupIcon_default,
28690
28692
  IndustryIcon: () => industryIcon_default,
@@ -28749,6 +28751,7 @@ __export(main_exports, {
28749
28751
  SuspendUserIcon: () => suspendUserIcon_default,
28750
28752
  Switch: () => Switch,
28751
28753
  Tab: () => Tab,
28754
+ TabPanel: () => TabPanel,
28752
28755
  Tabs: () => Tabs,
28753
28756
  TechnicalSkillsIcon: () => technicalSkillsIcon_default,
28754
28757
  TextField: () => TextField,
@@ -30034,8 +30037,97 @@ var StandardButton = ({ children, sx, className, ...props }) => {
30034
30037
  };
30035
30038
  var stdButton_default = StandardButton;
30036
30039
 
30037
- // lib/Dialogs/BaseDialog.tsx
30040
+ // lib/Buttons/Button.tsx
30038
30041
  var React63 = __toESM(require("react"), 1);
30042
+ var Button = React63.forwardRef(
30043
+ ({
30044
+ variant = "text",
30045
+ color: color2 = "primary",
30046
+ size: size3 = "medium",
30047
+ startIcon,
30048
+ endIcon,
30049
+ fullWidth = false,
30050
+ disabled = false,
30051
+ disableElevation = false,
30052
+ loading = false,
30053
+ loadingPosition = "center",
30054
+ component: component2,
30055
+ children,
30056
+ className,
30057
+ style,
30058
+ sx,
30059
+ href,
30060
+ type = "button",
30061
+ ...rest
30062
+ }, ref) => {
30063
+ const sxClass = useSx(sx);
30064
+ const classes = [
30065
+ "rf-btn",
30066
+ `rf-btn--${variant}`,
30067
+ `rf-btn--${color2}`,
30068
+ `rf-btn--${size3}`,
30069
+ fullWidth && "rf-btn--full-width",
30070
+ disableElevation && "rf-btn--no-elevation",
30071
+ disabled && "rf-btn--disabled",
30072
+ loading && "rf-btn--loading",
30073
+ sxClass,
30074
+ className
30075
+ ].filter(Boolean).join(" ");
30076
+ const Tag = component2 || (href ? "a" : "button");
30077
+ const tagProps = { ...rest };
30078
+ if (Tag === "a") {
30079
+ tagProps.href = disabled ? void 0 : href;
30080
+ } else {
30081
+ tagProps.type = type;
30082
+ tagProps.disabled = disabled || loading;
30083
+ }
30084
+ return /* @__PURE__ */ React63.createElement(Tag, { ref, className: classes, style, ...tagProps }, loading && loadingPosition === "start" && /* @__PURE__ */ React63.createElement("span", { className: "rf-btn__loading-indicator rf-btn__loading--start" }, /* @__PURE__ */ React63.createElement(circularProgress_default, { size: size3 === "small" ? 14 : size3 === "large" ? 22 : 18 })), startIcon && !loading && /* @__PURE__ */ React63.createElement("span", { className: "rf-btn__start-icon" }, startIcon), loading && loadingPosition === "center" ? /* @__PURE__ */ React63.createElement("span", { className: "rf-btn__loading-indicator" }, /* @__PURE__ */ React63.createElement(circularProgress_default, { size: size3 === "small" ? 14 : size3 === "large" ? 22 : 18 })) : /* @__PURE__ */ React63.createElement("span", { className: "rf-btn__label" }, children), endIcon && !loading && /* @__PURE__ */ React63.createElement("span", { className: "rf-btn__end-icon" }, endIcon), loading && loadingPosition === "end" && /* @__PURE__ */ React63.createElement("span", { className: "rf-btn__loading-indicator rf-btn__loading--end" }, /* @__PURE__ */ React63.createElement(circularProgress_default, { size: size3 === "small" ? 14 : size3 === "large" ? 22 : 18 })));
30085
+ }
30086
+ );
30087
+ Button.displayName = "Button";
30088
+
30089
+ // lib/Buttons/IconButton.tsx
30090
+ var React64 = __toESM(require("react"), 1);
30091
+ var IconButton = React64.forwardRef(
30092
+ ({
30093
+ color: color2 = "default",
30094
+ size: size3 = "medium",
30095
+ edge = false,
30096
+ disabled = false,
30097
+ component: component2,
30098
+ children,
30099
+ className,
30100
+ style,
30101
+ sx,
30102
+ href,
30103
+ type = "button",
30104
+ ...rest
30105
+ }, ref) => {
30106
+ const sxClass = useSx(sx);
30107
+ const classes = [
30108
+ "rf-icon-btn",
30109
+ `rf-icon-btn--${color2}`,
30110
+ `rf-icon-btn--${size3}`,
30111
+ edge && `rf-icon-btn--edge-${edge}`,
30112
+ disabled && "rf-icon-btn--disabled",
30113
+ sxClass,
30114
+ className
30115
+ ].filter(Boolean).join(" ");
30116
+ const Tag = component2 || (href ? "a" : "button");
30117
+ const tagProps = { ...rest };
30118
+ if (Tag === "a") {
30119
+ tagProps.href = disabled ? void 0 : href;
30120
+ } else {
30121
+ tagProps.type = type;
30122
+ tagProps.disabled = disabled;
30123
+ }
30124
+ return /* @__PURE__ */ React64.createElement(Tag, { ref, className: classes, style, ...tagProps }, children);
30125
+ }
30126
+ );
30127
+ IconButton.displayName = "IconButton";
30128
+
30129
+ // lib/Dialogs/BaseDialog.tsx
30130
+ var React65 = __toESM(require("react"), 1);
30039
30131
  var import_react14 = require("react");
30040
30132
  var import_lucide_react = require("lucide-react");
30041
30133
  var BaseDialog = ({
@@ -30070,7 +30162,7 @@ var BaseDialog = ({
30070
30162
  const sxClass = useSx(sx);
30071
30163
  if (!open) return null;
30072
30164
  const isButtonLoading = isSubmitting || loading;
30073
- const renderButtons = () => /* @__PURE__ */ React63.createElement("div", { className: "dialog-footer", style: { justifyContent: buttonAlign } }, showCancelButton && /* @__PURE__ */ React63.createElement(
30165
+ const renderButtons = () => /* @__PURE__ */ React65.createElement("div", { className: "dialog-footer", style: { justifyContent: buttonAlign } }, showCancelButton && /* @__PURE__ */ React65.createElement(
30074
30166
  "button",
30075
30167
  {
30076
30168
  className: "btn-cancel",
@@ -30078,7 +30170,7 @@ var BaseDialog = ({
30078
30170
  disabled: isLoading || isButtonLoading
30079
30171
  },
30080
30172
  cancelText
30081
- ), onConfirm && /* @__PURE__ */ React63.createElement(
30173
+ ), onConfirm && /* @__PURE__ */ React65.createElement(
30082
30174
  "button",
30083
30175
  {
30084
30176
  className: "btn-confirm",
@@ -30090,10 +30182,10 @@ var BaseDialog = ({
30090
30182
  setIsSubmitting(false);
30091
30183
  }
30092
30184
  },
30093
- /* @__PURE__ */ React63.createElement("span", { style: { visibility: isButtonLoading ? "hidden" : "visible" } }, confirmText),
30094
- isButtonLoading && /* @__PURE__ */ React63.createElement("span", { className: "spinner", style: { position: "absolute" } })
30185
+ /* @__PURE__ */ React65.createElement("span", { style: { visibility: isButtonLoading ? "hidden" : "visible" } }, confirmText),
30186
+ isButtonLoading && /* @__PURE__ */ React65.createElement("span", { className: "spinner", style: { position: "absolute" } })
30095
30187
  ));
30096
- return /* @__PURE__ */ React63.createElement("div", { className: `dialog-overlay ${size3 === "fullScreen" ? "overlay-fullscreen" : ""}` }, /* @__PURE__ */ React63.createElement(
30188
+ return /* @__PURE__ */ React65.createElement("div", { className: `dialog-overlay ${size3 === "fullScreen" ? "overlay-fullscreen" : ""}` }, /* @__PURE__ */ React65.createElement(
30097
30189
  "div",
30098
30190
  {
30099
30191
  className: ["dialog-container", size3 ? `size-${size3}` : "", sxClass, className].filter(Boolean).join(" "),
@@ -30102,15 +30194,15 @@ var BaseDialog = ({
30102
30194
  minHeight
30103
30195
  }
30104
30196
  },
30105
- /* @__PURE__ */ React63.createElement("div", { className: "dialog-title" }, /* @__PURE__ */ React63.createElement("h2", null, formatTitle ? title?.charAt(0).toUpperCase() + title?.slice(1) : title), showCloseButton && /* @__PURE__ */ React63.createElement("button", { className: "btn-close", onClick: onClose }, /* @__PURE__ */ React63.createElement(
30197
+ /* @__PURE__ */ React65.createElement("div", { className: "dialog-title" }, /* @__PURE__ */ React65.createElement("h2", null, formatTitle ? title?.charAt(0).toUpperCase() + title?.slice(1) : title), showCloseButton && /* @__PURE__ */ React65.createElement("button", { className: "btn-close", onClick: onClose }, /* @__PURE__ */ React65.createElement(
30106
30198
  import_lucide_react.X,
30107
30199
  {
30108
30200
  size: 18,
30109
30201
  color: themeConfig?.icon || "#666666"
30110
30202
  }
30111
30203
  ))),
30112
- /* @__PURE__ */ React63.createElement("div", { className: "dialog-divider" }),
30113
- /* @__PURE__ */ React63.createElement(
30204
+ /* @__PURE__ */ React65.createElement("div", { className: "dialog-divider" }),
30205
+ /* @__PURE__ */ React65.createElement(
30114
30206
  "div",
30115
30207
  {
30116
30208
  className: "dialog-body",
@@ -30121,7 +30213,7 @@ var BaseDialog = ({
30121
30213
  },
30122
30214
  children
30123
30215
  ),
30124
- /* @__PURE__ */ React63.createElement("div", { className: "dialog-divider" }),
30216
+ /* @__PURE__ */ React65.createElement("div", { className: "dialog-divider" }),
30125
30217
  customButtons || renderButtons()
30126
30218
  ));
30127
30219
  };
@@ -30644,10 +30736,25 @@ var MONTHS = [
30644
30736
  "November",
30645
30737
  "December"
30646
30738
  ];
30739
+ var MONTHS_SHORT = [
30740
+ "Jan",
30741
+ "Feb",
30742
+ "Mar",
30743
+ "Apr",
30744
+ "May",
30745
+ "Jun",
30746
+ "Jul",
30747
+ "Aug",
30748
+ "Sep",
30749
+ "Oct",
30750
+ "Nov",
30751
+ "Dec"
30752
+ ];
30647
30753
  var formatDisplay = (d, fmt = "MM/DD/YYYY") => {
30648
30754
  const mm = String(d.getMonth() + 1).padStart(2, "0");
30649
30755
  const dd = String(d.getDate()).padStart(2, "0");
30650
30756
  const yyyy = String(d.getFullYear());
30757
+ const day = d.getDate();
30651
30758
  switch (fmt) {
30652
30759
  case "DD/MM/YYYY":
30653
30760
  return `${dd}/${mm}/${yyyy}`;
@@ -30659,13 +30766,49 @@ var formatDisplay = (d, fmt = "MM/DD/YYYY") => {
30659
30766
  return `${mm}-${dd}-${yyyy}`;
30660
30767
  case "YYYY/MM/DD":
30661
30768
  return `${yyyy}/${mm}/${dd}`;
30769
+ case "DD MMM YYYY":
30770
+ return `${dd} ${MONTHS_SHORT[d.getMonth()]} ${yyyy}`;
30771
+ case "MMM DD, YYYY":
30772
+ return `${MONTHS_SHORT[d.getMonth()]} ${dd}, ${yyyy}`;
30773
+ case "DD MMMM YYYY":
30774
+ return `${dd} ${MONTHS[d.getMonth()]} ${yyyy}`;
30775
+ case "MMMM DD, YYYY":
30776
+ return `${MONTHS[d.getMonth()]} ${dd}, ${yyyy}`;
30662
30777
  case "MM/DD/YYYY":
30663
30778
  default:
30664
30779
  return `${mm}/${dd}/${yyyy}`;
30665
30780
  }
30666
30781
  };
30667
30782
  var formatTimeDisplay = (h, m, ampm) => `${String(h).padStart(2, "0")}:${String(m).padStart(2, "0")} ${ampm}`;
30783
+ var parseMonthName = (name) => {
30784
+ const lower = name.toLowerCase();
30785
+ let idx = MONTHS.findIndex((m) => m.toLowerCase() === lower);
30786
+ if (idx >= 0) return idx;
30787
+ idx = MONTHS_SHORT.findIndex((m) => m.toLowerCase() === lower);
30788
+ return idx;
30789
+ };
30668
30790
  var parseDisplay = (str, fmt = "MM/DD/YYYY") => {
30791
+ if (fmt === "DD MMM YYYY" || fmt === "DD MMMM YYYY") {
30792
+ const parts2 = str.split(" ");
30793
+ if (parts2.length !== 3) return null;
30794
+ const dd2 = parseInt(parts2[0], 10);
30795
+ const mm2 = parseMonthName(parts2[1]);
30796
+ const yyyy2 = parseInt(parts2[2], 10);
30797
+ if (isNaN(dd2) || mm2 < 0 || isNaN(yyyy2) || yyyy2 < 1e3) return null;
30798
+ const d2 = new Date(yyyy2, mm2, dd2);
30799
+ return isNaN(d2.getTime()) ? null : d2;
30800
+ }
30801
+ if (fmt === "MMM DD, YYYY" || fmt === "MMMM DD, YYYY") {
30802
+ const cleaned = str.replace(",", "");
30803
+ const parts2 = cleaned.split(" ").filter(Boolean);
30804
+ if (parts2.length !== 3) return null;
30805
+ const mm2 = parseMonthName(parts2[0]);
30806
+ const dd2 = parseInt(parts2[1], 10);
30807
+ const yyyy2 = parseInt(parts2[2], 10);
30808
+ if (mm2 < 0 || isNaN(dd2) || isNaN(yyyy2) || yyyy2 < 1e3) return null;
30809
+ const d2 = new Date(yyyy2, mm2, dd2);
30810
+ return isNaN(d2.getTime()) ? null : d2;
30811
+ }
30669
30812
  const sep = str.includes("/") ? "/" : "-";
30670
30813
  const parts = str.split(sep);
30671
30814
  if (parts.length !== 3) return null;
@@ -30850,27 +30993,89 @@ var CalendarBody = ({
30850
30993
  dayCells,
30851
30994
  onDayClick,
30852
30995
  onPrev,
30853
- onNext
30854
- }) => /* @__PURE__ */ import_react19.default.createElement(import_react19.default.Fragment, null, /* @__PURE__ */ import_react19.default.createElement("div", { className: "rf-date-picker__header" }, /* @__PURE__ */ import_react19.default.createElement("span", { className: "rf-date-picker__month-label" }, MONTHS[viewMonth], " ", viewYear), /* @__PURE__ */ import_react19.default.createElement("div", { className: "rf-date-picker__nav" }, /* @__PURE__ */ import_react19.default.createElement("button", { type: "button", className: "rf-date-picker__nav-btn", onClick: onPrev, "aria-label": "Previous month" }, "\u2039"), /* @__PURE__ */ import_react19.default.createElement("button", { type: "button", className: "rf-date-picker__nav-btn", onClick: onNext, "aria-label": "Next month" }, "\u203A"))), /* @__PURE__ */ import_react19.default.createElement("div", { className: "rf-date-picker__weekdays" }, WEEKDAYS.map((w) => /* @__PURE__ */ import_react19.default.createElement("div", { key: w, className: "rf-date-picker__weekday" }, w))), /* @__PURE__ */ import_react19.default.createElement("div", { className: "rf-date-picker__grid" }, dayCells.map((day, idx) => {
30855
- if (day === null) return /* @__PURE__ */ import_react19.default.createElement("div", { key: `e-${idx}`, className: "rf-date-picker__day rf-date-picker__day--empty" });
30856
- const cellDate = new Date(viewYear, viewMonth, day);
30857
- const isSelected = selectedDate ? isSameDay(cellDate, selectedDate) : false;
30858
- const isToday = isSameDay(cellDate, todayDate);
30859
- return /* @__PURE__ */ import_react19.default.createElement(
30996
+ onNext,
30997
+ onMonthSelect,
30998
+ onYearSelect
30999
+ }) => {
31000
+ const [pickerView, setPickerView] = (0, import_react19.useState)("calendar");
31001
+ const handleMonthClick = () => {
31002
+ setPickerView(pickerView === "month" ? "calendar" : "month");
31003
+ };
31004
+ const handleYearClick = () => {
31005
+ setPickerView(pickerView === "year" ? "calendar" : "year");
31006
+ };
31007
+ const handleMonthPick = (month) => {
31008
+ onMonthSelect(month);
31009
+ setPickerView("calendar");
31010
+ };
31011
+ const handleYearPick = (year) => {
31012
+ onYearSelect(year);
31013
+ setPickerView("calendar");
31014
+ };
31015
+ const currentYear = todayDate.getFullYear();
31016
+ const yearStart = viewYear - 6;
31017
+ const years = Array.from({ length: 16 }, (_, i) => yearStart + i);
31018
+ return /* @__PURE__ */ import_react19.default.createElement(import_react19.default.Fragment, null, /* @__PURE__ */ import_react19.default.createElement("div", { className: "rf-date-picker__header" }, /* @__PURE__ */ import_react19.default.createElement("div", { className: "rf-date-picker__header-labels" }, /* @__PURE__ */ import_react19.default.createElement(
31019
+ "span",
31020
+ {
31021
+ className: `rf-date-picker__month-label ${pickerView === "month" ? "rf-date-picker__month-label--active" : ""}`,
31022
+ onClick: handleMonthClick
31023
+ },
31024
+ MONTHS[viewMonth]
31025
+ ), /* @__PURE__ */ import_react19.default.createElement(
31026
+ "span",
31027
+ {
31028
+ className: `rf-date-picker__year-label ${pickerView === "year" ? "rf-date-picker__year-label--active" : ""}`,
31029
+ onClick: handleYearClick
31030
+ },
31031
+ viewYear
31032
+ )), /* @__PURE__ */ import_react19.default.createElement("div", { className: "rf-date-picker__nav" }, pickerView === "year" ? /* @__PURE__ */ import_react19.default.createElement(import_react19.default.Fragment, null, /* @__PURE__ */ import_react19.default.createElement("button", { type: "button", className: "rf-date-picker__nav-btn", onClick: () => onYearSelect(viewYear - 16), "aria-label": "Previous years" }, "\u2039"), /* @__PURE__ */ import_react19.default.createElement("button", { type: "button", className: "rf-date-picker__nav-btn", onClick: () => onYearSelect(viewYear + 16), "aria-label": "Next years" }, "\u203A")) : /* @__PURE__ */ import_react19.default.createElement(import_react19.default.Fragment, null, /* @__PURE__ */ import_react19.default.createElement("button", { type: "button", className: "rf-date-picker__nav-btn", onClick: onPrev, "aria-label": "Previous month" }, "\u2039"), /* @__PURE__ */ import_react19.default.createElement("button", { type: "button", className: "rf-date-picker__nav-btn", onClick: onNext, "aria-label": "Next month" }, "\u203A")))), pickerView === "month" && /* @__PURE__ */ import_react19.default.createElement("div", { className: "rf-date-picker__month-grid" }, MONTHS_SHORT.map((m, idx) => /* @__PURE__ */ import_react19.default.createElement(
30860
31033
  "button",
30861
31034
  {
30862
- key: day,
31035
+ key: m,
30863
31036
  type: "button",
30864
31037
  className: [
30865
- "rf-date-picker__day",
30866
- isSelected ? "rf-date-picker__day--selected" : "",
30867
- isToday && !isSelected ? "rf-date-picker__day--today" : ""
31038
+ "rf-date-picker__month-cell",
31039
+ idx === viewMonth ? "rf-date-picker__month-cell--selected" : "",
31040
+ idx === todayDate.getMonth() && viewYear === currentYear ? "rf-date-picker__month-cell--current" : ""
30868
31041
  ].filter(Boolean).join(" "),
30869
- onClick: () => onDayClick(day)
31042
+ onClick: () => handleMonthPick(idx)
30870
31043
  },
30871
- day
30872
- );
30873
- })));
31044
+ m
31045
+ ))), pickerView === "year" && /* @__PURE__ */ import_react19.default.createElement("div", { className: "rf-date-picker__year-grid" }, years.map((y) => /* @__PURE__ */ import_react19.default.createElement(
31046
+ "button",
31047
+ {
31048
+ key: y,
31049
+ type: "button",
31050
+ className: [
31051
+ "rf-date-picker__year-cell",
31052
+ y === viewYear ? "rf-date-picker__year-cell--selected" : "",
31053
+ y === currentYear ? "rf-date-picker__year-cell--current" : ""
31054
+ ].filter(Boolean).join(" "),
31055
+ onClick: () => handleYearPick(y)
31056
+ },
31057
+ y
31058
+ ))), pickerView === "calendar" && /* @__PURE__ */ import_react19.default.createElement(import_react19.default.Fragment, null, /* @__PURE__ */ import_react19.default.createElement("div", { className: "rf-date-picker__weekdays" }, WEEKDAYS.map((w) => /* @__PURE__ */ import_react19.default.createElement("div", { key: w, className: "rf-date-picker__weekday" }, w))), /* @__PURE__ */ import_react19.default.createElement("div", { className: "rf-date-picker__grid" }, dayCells.map((day, idx) => {
31059
+ if (day === null) return /* @__PURE__ */ import_react19.default.createElement("div", { key: `e-${idx}`, className: "rf-date-picker__day rf-date-picker__day--empty" });
31060
+ const cellDate = new Date(viewYear, viewMonth, day);
31061
+ const isSelected = selectedDate ? isSameDay(cellDate, selectedDate) : false;
31062
+ const isToday = isSameDay(cellDate, todayDate);
31063
+ return /* @__PURE__ */ import_react19.default.createElement(
31064
+ "button",
31065
+ {
31066
+ key: day,
31067
+ type: "button",
31068
+ className: [
31069
+ "rf-date-picker__day",
31070
+ isSelected ? "rf-date-picker__day--selected" : "",
31071
+ isToday && !isSelected ? "rf-date-picker__day--today" : ""
31072
+ ].filter(Boolean).join(" "),
31073
+ onClick: () => onDayClick(day)
31074
+ },
31075
+ day
31076
+ );
31077
+ }))));
31078
+ };
30874
31079
  var DateField = ({
30875
31080
  label,
30876
31081
  value,
@@ -30928,7 +31133,9 @@ var DateField = ({
30928
31133
  const MINUTES = Array.from({ length: 60 }, (_, i) => String(i).padStart(2, "0"));
30929
31134
  const AMPMS = ["AM", "PM"];
30930
31135
  const containerRef = (0, import_react19.useRef)(null);
30931
- const inputId = (0, import_react19.useRef)(`rf-df-${Math.random().toString(36).substr(2, 9)}`).current;
31136
+ const pickerRef = (0, import_react19.useRef)(null);
31137
+ const [dropUp, setDropUp] = (0, import_react19.useState)(false);
31138
+ const inputId = (0, import_react19.useRef)(`rf-df-${Math.random().toString(36).substring(2, 11)}`).current;
30932
31139
  (0, import_react19.useEffect)(() => {
30933
31140
  if (value === void 0) return;
30934
31141
  if (!value) {
@@ -30960,6 +31167,13 @@ var DateField = ({
30960
31167
  document.addEventListener("mousedown", handler);
30961
31168
  return () => document.removeEventListener("mousedown", handler);
30962
31169
  }, [open]);
31170
+ (0, import_react19.useEffect)(() => {
31171
+ if (!open || !containerRef.current) return;
31172
+ const rect = containerRef.current.getBoundingClientRect();
31173
+ const spaceBelow = window.innerHeight - rect.bottom;
31174
+ const pickerHeight = 400;
31175
+ setDropUp(spaceBelow < pickerHeight && rect.top > pickerHeight);
31176
+ }, [open]);
30963
31177
  const commitDate = (0, import_react19.useCallback)((d, h, m, ap) => {
30964
31178
  setSelectedDate(d);
30965
31179
  if (!d) {
@@ -31152,9 +31366,11 @@ var DateField = ({
31152
31366
  ), open && !disabled && /* @__PURE__ */ import_react19.default.createElement(
31153
31367
  "div",
31154
31368
  {
31369
+ ref: pickerRef,
31155
31370
  className: [
31156
31371
  "rf-date-picker",
31157
- isSideVariant ? "rf-date-picker--side" : ""
31372
+ isSideVariant ? "rf-date-picker--side" : "",
31373
+ dropUp ? "rf-date-picker--drop-up" : ""
31158
31374
  ].filter(Boolean).join(" "),
31159
31375
  onMouseDown: (e) => e.preventDefault()
31160
31376
  },
@@ -31168,7 +31384,9 @@ var DateField = ({
31168
31384
  dayCells,
31169
31385
  onDayClick: handleDayClick,
31170
31386
  onPrev: prevMonth,
31171
- onNext: nextMonth
31387
+ onNext: nextMonth,
31388
+ onMonthSelect: setViewMonth,
31389
+ onYearSelect: setViewYear
31172
31390
  }
31173
31391
  ), type === "datetime" && /* @__PURE__ */ import_react19.default.createElement("div", { className: "rf-date-picker__time-section" }, /* @__PURE__ */ import_react19.default.createElement("div", { className: "rf-date-picker__time-label" }, "Time"), /* @__PURE__ */ import_react19.default.createElement(
31174
31392
  SpinnerPanel,
@@ -31240,7 +31458,7 @@ var MONTHS2 = [
31240
31458
  "November",
31241
31459
  "December"
31242
31460
  ];
31243
- var MONTHS_SHORT = [
31461
+ var MONTHS_SHORT2 = [
31244
31462
  "Jan",
31245
31463
  "Feb",
31246
31464
  "Mar",
@@ -31277,14 +31495,14 @@ var dateToISO = (d) => {
31277
31495
  const dd = String(d.getDate()).padStart(2, "0");
31278
31496
  return `${y}-${mo}-${dd}`;
31279
31497
  };
31280
- var formatShort = (d) => `${String(d.getDate()).padStart(2, "0")} ${MONTHS_SHORT[d.getMonth()]} ${d.getFullYear()}`;
31498
+ var formatShort = (d) => `${String(d.getDate()).padStart(2, "0")} ${MONTHS_SHORT2[d.getMonth()]} ${d.getFullYear()}`;
31281
31499
  var parseInputDate = (str) => {
31282
31500
  const s = str.trim();
31283
31501
  if (!s) return null;
31284
31502
  const shortMatch = s.match(/^(\d{1,2})\s+([A-Za-z]+)\s+(\d{4})$/);
31285
31503
  if (shortMatch) {
31286
31504
  const day = parseInt(shortMatch[1], 10);
31287
- const monthIdx = MONTHS_SHORT.findIndex((m) => m.toLowerCase() === shortMatch[2].toLowerCase());
31505
+ const monthIdx = MONTHS_SHORT2.findIndex((m) => m.toLowerCase() === shortMatch[2].toLowerCase());
31288
31506
  const year = parseInt(shortMatch[3], 10);
31289
31507
  if (monthIdx !== -1 && day >= 1 && day <= 31 && year >= 1e3) {
31290
31508
  const d = new Date(year, monthIdx, day);
@@ -32235,13 +32453,13 @@ var Autocomplete = import_react21.default.forwardRef(AutocompleteInner);
32235
32453
  Autocomplete.displayName = "Autocomplete";
32236
32454
 
32237
32455
  // lib/Progress/RufousLogoLoader.tsx
32238
- var React71 = __toESM(require("react"), 1);
32456
+ var React73 = __toESM(require("react"), 1);
32239
32457
  var _uid = 0;
32240
32458
  var RufousLogoLoader = ({ size: size3 = 80, sx, className }) => {
32241
- const clipId = React71.useRef(`rll-${++_uid}`).current;
32459
+ const clipId = React73.useRef(`rll-${++_uid}`).current;
32242
32460
  const height = size3 * (38.795 / 54.585);
32243
32461
  const sxClass = useSx(sx);
32244
- return /* @__PURE__ */ React71.createElement("div", { className: ["rufous-logo-loader", sxClass, className].filter(Boolean).join(" "), style: { width: size3, height } }, /* @__PURE__ */ React71.createElement(
32462
+ return /* @__PURE__ */ React73.createElement("div", { className: ["rufous-logo-loader", sxClass, className].filter(Boolean).join(" "), style: { width: size3, height } }, /* @__PURE__ */ React73.createElement(
32245
32463
  "svg",
32246
32464
  {
32247
32465
  xmlns: "http://www.w3.org/2000/svg",
@@ -32250,14 +32468,14 @@ var RufousLogoLoader = ({ size: size3 = 80, sx, className }) => {
32250
32468
  height,
32251
32469
  className: "rufous-logo-loader__svg"
32252
32470
  },
32253
- /* @__PURE__ */ React71.createElement("defs", null, /* @__PURE__ */ React71.createElement("clipPath", { id: clipId }, /* @__PURE__ */ React71.createElement(
32471
+ /* @__PURE__ */ React73.createElement("defs", null, /* @__PURE__ */ React73.createElement("clipPath", { id: clipId }, /* @__PURE__ */ React73.createElement(
32254
32472
  "path",
32255
32473
  {
32256
32474
  transform: "translate(2208 18.205)",
32257
32475
  d: "M.7,38.8a3.783,3.783,0,0,1-.5-.045l-.031,0A.26.26,0,0,1,0,38.564a.279.279,0,0,1,.14-.2c.222-.126.45-.251.671-.371l.047-.026c.357-.194.8-.435,1.209-.685.783-.479,1.565-.993,2.32-1.489l.033-.022.218-.143.49-.32c.575-.374,1.226-.8,1.824-1.241.98-.726,1.834-1.407,2.611-2.081a22.444,22.444,0,0,0,1.783-1.774A14.2,14.2,0,0,0,12.5,28.749l.012-.016a15.8,15.8,0,0,0,1.151-1.8,10.351,10.351,0,0,0,.586-1.511l0-.011.092-.278a4.425,4.425,0,0,0,.14-.583l.007-.036c.024-.119.048-.243.079-.363a4.639,4.639,0,0,0-.034-2.566c-.064-.212-.126-.43-.184-.636l-.008-.028c-.111-.391-.225-.8-.369-1.181a8.71,8.71,0,0,0-2.279-3.24,14.363,14.363,0,0,0-3.239-2.326c-.75-.4-1.553-.727-2.329-1.046L6.1,13.114l-.157-.065c-.294-.122-.6-.221-.9-.318l-.025-.008c-.19-.061-.427-.136-.649-.218-.108-.04-.265-.172-.252-.229a.7.7,0,0,1,.235-.4.915.915,0,0,1,.449-.112c.383-.029.77-.063,1.165-.1.969-.085,1.971-.174,2.962-.181h.119a13.145,13.145,0,0,1,2.907.315,11.888,11.888,0,0,1,3.128,1.123,10.286,10.286,0,0,1,2.3,1.554.92.92,0,0,1,.273.4,12.722,12.722,0,0,1,.458,3.3c-.009,1.494-.014,2.867-.014,4.2,0,.309.013.588.039.852a1.013,1.013,0,0,0,.078.26l0,.01c.027.067.051.129.077.207.029-.064.054-.116.076-.161l.009-.017.006-.012a.823.823,0,0,0,.076-.189c.051-.247.1-.494.164-.767.136-.618.276-1.257.359-1.9a24.362,24.362,0,0,0,0-6.777,13.01,13.01,0,0,0-.559-2.1c-.061-.185-.125-.382-.187-.579a9.42,9.42,0,0,0-.583-1.469c-.367-.727-.786-1.449-1.184-2.126a9.376,9.376,0,0,0-.643-.918c-.076-.1-.151-.2-.224-.3L15.548,6.3a8.128,8.128,0,0,0-.865-1.057,32.021,32.021,0,0,0-2.466-2.183,12.673,12.673,0,0,0-1.905-1.188c-.48-.256-1-.485-1.462-.687-.221-.1-.457-.2-.683-.306a.663.663,0,0,1-.11-.071L8.039.795c-.027-.02-.058-.043-.1-.069L8.062.667,8.108.644a1.786,1.786,0,0,1,.27-.12A11.679,11.679,0,0,1,11.866,0a13.332,13.332,0,0,1,1.769.121A13.927,13.927,0,0,1,15.9.693l.471.147a10.775,10.775,0,0,1,1.656.658,9.622,9.622,0,0,1,1.768,1.041,32.024,32.024,0,0,1,3.092,2.717,25.62,25.62,0,0,1,2.245,2.829l.084.117c.617.86,1.171,1.777,1.678,2.641.255.435.484.9.687,1.3.14.281.285.572.436.854.262.491.534.977.835,1.516l.005.01q.169.3.337.6c.064.116.13.232.2.347l.027.047c.12.212.244.431.357.651a8.518,8.518,0,0,0,2.121,2.695c.065.024.137.054.212.086l.013.006a1.268,1.268,0,0,0,.376.123.087.087,0,0,0,.063-.02.209.209,0,0,0,.083-.151c0-.083-.08-.153-.157-.22a.694.694,0,0,1-.135-.142c-.134-.216-.273-.436-.407-.649l-.063-.1c-.373-.587-.8-1.251-1.157-1.923s-.666-1.373-.964-2.057l0-.008q-.123-.284-.247-.564a1.707,1.707,0,0,1,.239-1.554l.026-.046.005-.009A12.918,12.918,0,0,1,31.408,9.3,7.814,7.814,0,0,1,33.75,7.612a5.391,5.391,0,0,1,2.218-.444,11.369,11.369,0,0,1,1.882.186,9.211,9.211,0,0,1,2.845,1.022c.138.071.261.135.373.188a4.155,4.155,0,0,0,1.849.464h.093c1.993-.052,4-.14,5.95-.224l.846-.036c.9-.038,1.808-.066,2.682-.093L52.7,8.67l1.007-.031h.041a1.787,1.787,0,0,1,.73.163c.1.051.109.256.109.318,0,.081-.147.169-.257.175-.466.028-.994.043-1.485.043a37.855,37.855,0,0,0-6.3.577A9.221,9.221,0,0,0,42.7,11.3a7.884,7.884,0,0,0-1.565,1.5c-.593.743-1.116,1.545-1.621,2.321l-.121.185c-.228.35-.435.709-.662,1.109l-.041.071c-.136.236-.276.481-.42.717l-.007.012c-.349.572-.709,1.162-1.1,1.716l-.216.307-.01.014a21.585,21.585,0,0,1-1.451,1.907c-1.317,1.485-2.538,2.8-3.734,4.006a30.822,30.822,0,0,1-2.5,2.207c-.548.446-1.139.86-1.71,1.26l-.01.007q-.254.177-.5.355c-.536.379-1.109.78-1.7,1.157-.545.35-1.143.71-1.828,1.1-.842.483-1.586.9-2.275,1.26-.271.144-.553.272-.868.412-.13.058-.3.135-.467.213a6.838,6.838,0,0,1-1.18.3,5.079,5.079,0,0,1,.647-.771l.008-.008c.132-.136.251-.26.365-.393l.048-.056c.566-.667,1.151-1.357,1.7-2.059s1.126-1.439,1.649-2.2c.4-.579.749-1.2,1.134-1.888l.016-.028c.406-.734.826-1.493,1.181-2.266.274-.6.733-1.787.866-2.189l.023-.07c.13-.389.215-.646-.013-.916a.369.369,0,0,1-.041.031l0,0c-.028.021-.055.041-.058.065a2.307,2.307,0,0,1-.146.5,5.257,5.257,0,0,1-.374.709c-.281.468-.536.959-.782,1.434-.2.385-.379.731-.57,1.069a20.042,20.042,0,0,1-1.161,1.871,30.689,30.689,0,0,1-1.985,2.531c-.74.821-1.567,1.648-2.6,2.6a21.448,21.448,0,0,1-2.1,1.669c-.85.606-1.754,1.2-2.688,1.768a17.867,17.867,0,0,1-1.993,1.037c-.994.445-2.066.891-3.185,1.324a12.127,12.127,0,0,1-1.714.514c-.955.213-1.969.413-3.1.611-1.023.18-2.054.328-2.927.449A1.41,1.41,0,0,1,.7,38.8ZM37.945,10.58l-.007,0a.583.583,0,0,0-.223.048.677.677,0,0,0-.437.555.637.637,0,0,0,.426.527.621.621,0,0,0,.209.046h.016a.72.72,0,0,0,.464-.194.676.676,0,0,0,.194-.282l0-.011,0-.005,0-.006,0-.009a.415.415,0,0,0,.014-.109.734.734,0,0,0-.657-.56Z"
32258
32476
  }
32259
32477
  ))),
32260
- /* @__PURE__ */ React71.createElement("g", { transform: "translate(-123.275 -24)" }, /* @__PURE__ */ React71.createElement("g", { transform: "translate(-2084.725 5.795)", clipPath: `url(#${clipId})` }, /* @__PURE__ */ React71.createElement("rect", { className: "rufous-ls rufous-ls-1", width: "40", height: "6", transform: "translate(2208 58) rotate(-90)", fill: "#d07f6f" }), /* @__PURE__ */ React71.createElement("rect", { className: "rufous-ls rufous-ls-2", width: "40", height: "6", transform: "translate(2214 58) rotate(-90)", fill: "#c66958" }), /* @__PURE__ */ React71.createElement("rect", { className: "rufous-ls rufous-ls-3", width: "40", height: "7", transform: "translate(2220 58) rotate(-90)", fill: "#bb5341" }), /* @__PURE__ */ React71.createElement("rect", { className: "rufous-ls rufous-ls-4", width: "40", height: "6", transform: "translate(2227 58) rotate(-90)", fill: "#b03a28" }), /* @__PURE__ */ React71.createElement("rect", { className: "rufous-ls rufous-ls-5", width: "40", height: "6", transform: "translate(2233 58) rotate(-90)", fill: "#a41b06" }), /* @__PURE__ */ React71.createElement("rect", { className: "rufous-ls rufous-ls-6", width: "40", height: "6", transform: "translate(2239 58) rotate(-90)", fill: "#8e1604" }), /* @__PURE__ */ React71.createElement("rect", { className: "rufous-ls rufous-ls-7", width: "40", height: "6", transform: "translate(2245 58) rotate(-90)", fill: "#791103" }), /* @__PURE__ */ React71.createElement("rect", { className: "rufous-ls rufous-ls-8", width: "40", height: "5", transform: "translate(2251 58) rotate(-90)", fill: "#640c02" }), /* @__PURE__ */ React71.createElement("rect", { className: "rufous-ls rufous-ls-9", width: "40", height: "7", transform: "translate(2256 58) rotate(-90)", fill: "#500801" })))
32478
+ /* @__PURE__ */ React73.createElement("g", { transform: "translate(-123.275 -24)" }, /* @__PURE__ */ React73.createElement("g", { transform: "translate(-2084.725 5.795)", clipPath: `url(#${clipId})` }, /* @__PURE__ */ React73.createElement("rect", { className: "rufous-ls rufous-ls-1", width: "40", height: "6", transform: "translate(2208 58) rotate(-90)", fill: "#d07f6f" }), /* @__PURE__ */ React73.createElement("rect", { className: "rufous-ls rufous-ls-2", width: "40", height: "6", transform: "translate(2214 58) rotate(-90)", fill: "#c66958" }), /* @__PURE__ */ React73.createElement("rect", { className: "rufous-ls rufous-ls-3", width: "40", height: "7", transform: "translate(2220 58) rotate(-90)", fill: "#bb5341" }), /* @__PURE__ */ React73.createElement("rect", { className: "rufous-ls rufous-ls-4", width: "40", height: "6", transform: "translate(2227 58) rotate(-90)", fill: "#b03a28" }), /* @__PURE__ */ React73.createElement("rect", { className: "rufous-ls rufous-ls-5", width: "40", height: "6", transform: "translate(2233 58) rotate(-90)", fill: "#a41b06" }), /* @__PURE__ */ React73.createElement("rect", { className: "rufous-ls rufous-ls-6", width: "40", height: "6", transform: "translate(2239 58) rotate(-90)", fill: "#8e1604" }), /* @__PURE__ */ React73.createElement("rect", { className: "rufous-ls rufous-ls-7", width: "40", height: "6", transform: "translate(2245 58) rotate(-90)", fill: "#791103" }), /* @__PURE__ */ React73.createElement("rect", { className: "rufous-ls rufous-ls-8", width: "40", height: "5", transform: "translate(2251 58) rotate(-90)", fill: "#640c02" }), /* @__PURE__ */ React73.createElement("rect", { className: "rufous-ls rufous-ls-9", width: "40", height: "7", transform: "translate(2256 58) rotate(-90)", fill: "#500801" })))
32261
32479
  ));
32262
32480
  };
32263
32481
 
@@ -32312,8 +32530,11 @@ function DataGrid({
32312
32530
  actions,
32313
32531
  pageSize: initialPageSize = 10,
32314
32532
  pageSizeOptions = [5, 10, 25, 50],
32315
- title
32533
+ title,
32534
+ className,
32535
+ sx
32316
32536
  }) {
32537
+ const sxClass = useSx(sx);
32317
32538
  const [columnOverrides, setColumnOverrides] = (0, import_react22.useState)({});
32318
32539
  const resolvedColumns = (0, import_react22.useMemo)(() => {
32319
32540
  return initialColumnsProp.map((col) => {
@@ -32614,7 +32835,7 @@ function DataGrid({
32614
32835
  return offset2;
32615
32836
  };
32616
32837
  const hasActiveFilters = advancedFilters.some((f) => f.value);
32617
- return /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-root" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-header" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-header-info" }, /* @__PURE__ */ import_react22.default.createElement("h2", null, title), /* @__PURE__ */ import_react22.default.createElement("p", null, filteredData.length, " total records")), /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-header-actions" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-search-wrap" }, /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.Search, { size: 15 }), /* @__PURE__ */ import_react22.default.createElement(
32838
+ return /* @__PURE__ */ import_react22.default.createElement("div", { className: ["dg-root", sxClass, className].filter(Boolean).join(" ") }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-header" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-header-info" }, /* @__PURE__ */ import_react22.default.createElement("h2", null, title), /* @__PURE__ */ import_react22.default.createElement("p", null, filteredData.length, " total records")), /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-header-actions" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-search-wrap" }, /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.Search, { size: 15 }), /* @__PURE__ */ import_react22.default.createElement(
32618
32839
  "input",
32619
32840
  {
32620
32841
  className: "dg-search",
@@ -34939,8 +35160,8 @@ var Tooltip = ({
34939
35160
  Tooltip.displayName = "Tooltip";
34940
35161
 
34941
35162
  // lib/Box/Box.tsx
34942
- var React87 = __toESM(require("react"), 1);
34943
- var Box = React87.forwardRef(
35163
+ var React89 = __toESM(require("react"), 1);
35164
+ var Box = React89.forwardRef(
34944
35165
  ({
34945
35166
  component: component2 = "div",
34946
35167
  children,
@@ -34953,6 +35174,23 @@ var Box = React87.forwardRef(
34953
35174
  margin,
34954
35175
  width,
34955
35176
  height,
35177
+ minWidth,
35178
+ maxWidth,
35179
+ minHeight,
35180
+ maxHeight,
35181
+ flex,
35182
+ flexWrap,
35183
+ flexGrow,
35184
+ flexShrink,
35185
+ overflow,
35186
+ position: position2,
35187
+ top,
35188
+ right,
35189
+ bottom,
35190
+ left,
35191
+ borderRadius,
35192
+ bgcolor,
35193
+ color: color2,
34956
35194
  className,
34957
35195
  style,
34958
35196
  sx,
@@ -34969,18 +35207,35 @@ var Box = React87.forwardRef(
34969
35207
  ...margin !== void 0 ? { margin: typeof margin === "number" ? `${margin}px` : margin } : {},
34970
35208
  ...width !== void 0 ? { width: typeof width === "number" ? `${width}px` : width } : {},
34971
35209
  ...height !== void 0 ? { height: typeof height === "number" ? `${height}px` : height } : {},
35210
+ ...minWidth !== void 0 ? { minWidth: typeof minWidth === "number" ? `${minWidth}px` : minWidth } : {},
35211
+ ...maxWidth !== void 0 ? { maxWidth: typeof maxWidth === "number" ? `${maxWidth}px` : maxWidth } : {},
35212
+ ...minHeight !== void 0 ? { minHeight: typeof minHeight === "number" ? `${minHeight}px` : minHeight } : {},
35213
+ ...maxHeight !== void 0 ? { maxHeight: typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight } : {},
35214
+ ...flex !== void 0 ? { flex } : {},
35215
+ ...flexWrap !== void 0 ? { flexWrap } : {},
35216
+ ...flexGrow !== void 0 ? { flexGrow } : {},
35217
+ ...flexShrink !== void 0 ? { flexShrink } : {},
35218
+ ...overflow !== void 0 ? { overflow } : {},
35219
+ ...position2 !== void 0 ? { position: position2 } : {},
35220
+ ...top !== void 0 ? { top: typeof top === "number" ? `${top}px` : top } : {},
35221
+ ...right !== void 0 ? { right: typeof right === "number" ? `${right}px` : right } : {},
35222
+ ...bottom !== void 0 ? { bottom: typeof bottom === "number" ? `${bottom}px` : bottom } : {},
35223
+ ...left !== void 0 ? { left: typeof left === "number" ? `${left}px` : left } : {},
35224
+ ...borderRadius !== void 0 ? { borderRadius: typeof borderRadius === "number" ? `${borderRadius}px` : borderRadius } : {},
35225
+ ...bgcolor !== void 0 ? { backgroundColor: bgcolor } : {},
35226
+ ...color2 !== void 0 ? { color: color2 } : {},
34972
35227
  ...style
34973
35228
  };
34974
35229
  const classes = ["rf-box", sxClass, className].filter(Boolean).join(" ");
34975
35230
  const Tag = component2;
34976
- return /* @__PURE__ */ React87.createElement(Tag, { ref, className: classes, style: inlineStyle, ...rest }, children);
35231
+ return /* @__PURE__ */ React89.createElement(Tag, { ref, className: classes, style: inlineStyle, ...rest }, children);
34977
35232
  }
34978
35233
  );
34979
35234
  Box.displayName = "Box";
34980
35235
 
34981
35236
  // lib/Stack/Stack.tsx
34982
- var React88 = __toESM(require("react"), 1);
34983
- var Stack2 = React88.forwardRef(
35237
+ var React90 = __toESM(require("react"), 1);
35238
+ var Stack2 = React90.forwardRef(
34984
35239
  ({
34985
35240
  direction = "column",
34986
35241
  spacing,
@@ -34989,6 +35244,8 @@ var Stack2 = React88.forwardRef(
34989
35244
  divider,
34990
35245
  flexWrap,
34991
35246
  useFlexGap = true,
35247
+ flex,
35248
+ overflow,
34992
35249
  component: component2 = "div",
34993
35250
  children,
34994
35251
  className,
@@ -35004,19 +35261,21 @@ var Stack2 = React88.forwardRef(
35004
35261
  ...justifyContent !== void 0 ? { justifyContent } : {},
35005
35262
  ...flexWrap !== void 0 ? { flexWrap } : {},
35006
35263
  ...gapValue !== void 0 && useFlexGap ? { gap: gapValue } : {},
35264
+ ...flex !== void 0 ? { flex } : {},
35265
+ ...overflow !== void 0 ? { overflow } : {},
35007
35266
  ...style
35008
35267
  };
35009
35268
  const classes = ["rf-stack", sxClass, className].filter(Boolean).join(" ");
35010
35269
  let content;
35011
35270
  if (divider) {
35012
- const childArray = React88.Children.toArray(children).filter(
35271
+ const childArray = React90.Children.toArray(children).filter(
35013
35272
  (child) => child !== null && child !== void 0
35014
35273
  );
35015
35274
  content = childArray.reduce((acc, child, idx) => {
35016
35275
  acc.push(child);
35017
35276
  if (idx < childArray.length - 1) {
35018
35277
  acc.push(
35019
- /* @__PURE__ */ React88.createElement("div", { key: `divider-${idx}`, className: "rf-stack-divider" }, divider)
35278
+ /* @__PURE__ */ React90.createElement("div", { key: `divider-${idx}`, className: "rf-stack-divider" }, divider)
35020
35279
  );
35021
35280
  }
35022
35281
  return acc;
@@ -35025,13 +35284,13 @@ var Stack2 = React88.forwardRef(
35025
35284
  content = children;
35026
35285
  }
35027
35286
  const Tag = component2;
35028
- return /* @__PURE__ */ React88.createElement(Tag, { ref, className: classes, style: inlineStyle, ...rest }, content);
35287
+ return /* @__PURE__ */ React90.createElement(Tag, { ref, className: classes, style: inlineStyle, ...rest }, content);
35029
35288
  }
35030
35289
  );
35031
35290
  Stack2.displayName = "Stack";
35032
35291
 
35033
35292
  // lib/Grid/Grid.tsx
35034
- var React89 = __toESM(require("react"), 1);
35293
+ var React91 = __toESM(require("react"), 1);
35035
35294
  function getBreakpointClass(bp, val2) {
35036
35295
  if (val2 === void 0) return "";
35037
35296
  if (val2 === true) return `rf-grid-${bp}-12`;
@@ -35044,7 +35303,7 @@ function getSpacingGap(spacing) {
35044
35303
  const base = spacing.xs ?? spacing.sm ?? spacing.md ?? 0;
35045
35304
  return `${base * 8}px`;
35046
35305
  }
35047
- var Grid = React89.forwardRef(
35306
+ var Grid = React91.forwardRef(
35048
35307
  ({
35049
35308
  container = false,
35050
35309
  item = false,
@@ -35094,14 +35353,14 @@ var Grid = React89.forwardRef(
35094
35353
  className
35095
35354
  ].filter(Boolean).join(" ");
35096
35355
  const Tag = component2;
35097
- return /* @__PURE__ */ React89.createElement(Tag, { ref, className: classes, style: inlineStyle, ...rest }, children);
35356
+ return /* @__PURE__ */ React91.createElement(Tag, { ref, className: classes, style: inlineStyle, ...rest }, children);
35098
35357
  }
35099
35358
  );
35100
35359
  Grid.displayName = "Grid";
35101
35360
 
35102
35361
  // lib/Paper/Paper.tsx
35103
- var React90 = __toESM(require("react"), 1);
35104
- var Paper = React90.forwardRef(
35362
+ var React92 = __toESM(require("react"), 1);
35363
+ var Paper = React92.forwardRef(
35105
35364
  ({
35106
35365
  elevation = 1,
35107
35366
  square = false,
@@ -35123,14 +35382,14 @@ var Paper = React90.forwardRef(
35123
35382
  className
35124
35383
  ].filter(Boolean).join(" ");
35125
35384
  const Tag = component2;
35126
- return /* @__PURE__ */ React90.createElement(Tag, { ref, className: classes, style, ...rest }, children);
35385
+ return /* @__PURE__ */ React92.createElement(Tag, { ref, className: classes, style, ...rest }, children);
35127
35386
  }
35128
35387
  );
35129
35388
  Paper.displayName = "Paper";
35130
35389
 
35131
35390
  // lib/Card/Card.tsx
35132
- var React91 = __toESM(require("react"), 1);
35133
- var Card = React91.forwardRef(
35391
+ var React93 = __toESM(require("react"), 1);
35392
+ var Card = React93.forwardRef(
35134
35393
  ({
35135
35394
  elevation = 1,
35136
35395
  variant = "elevation",
@@ -35149,33 +35408,33 @@ var Card = React91.forwardRef(
35149
35408
  sxClass,
35150
35409
  className
35151
35410
  ].filter(Boolean).join(" ");
35152
- return /* @__PURE__ */ React91.createElement("div", { ref, className: classes, style, ...rest }, children);
35411
+ return /* @__PURE__ */ React93.createElement("div", { ref, className: classes, style, ...rest }, children);
35153
35412
  }
35154
35413
  );
35155
35414
  Card.displayName = "Card";
35156
- var CardContent = React91.forwardRef(
35415
+ var CardContent = React93.forwardRef(
35157
35416
  ({ children, className, style, sx, ...rest }, ref) => {
35158
35417
  const sxClass = useSx(sx);
35159
35418
  const classes = ["rf-card-content", sxClass, className].filter(Boolean).join(" ");
35160
- return /* @__PURE__ */ React91.createElement("div", { ref, className: classes, style, ...rest }, children);
35419
+ return /* @__PURE__ */ React93.createElement("div", { ref, className: classes, style, ...rest }, children);
35161
35420
  }
35162
35421
  );
35163
35422
  CardContent.displayName = "CardContent";
35164
- var CardHeader = React91.forwardRef(
35423
+ var CardHeader = React93.forwardRef(
35165
35424
  ({ title, subheader, avatar, action, className, style, sx, ...rest }, ref) => {
35166
35425
  const sxClass = useSx(sx);
35167
35426
  const classes = ["rf-card-header", sxClass, className].filter(Boolean).join(" ");
35168
- return /* @__PURE__ */ React91.createElement("div", { ref, className: classes, style, ...rest }, avatar && /* @__PURE__ */ React91.createElement("div", { className: "rf-card-header-avatar" }, avatar), /* @__PURE__ */ React91.createElement("div", { className: "rf-card-header-content" }, /* @__PURE__ */ React91.createElement("div", { className: "rf-card-header-title" }, title), subheader && /* @__PURE__ */ React91.createElement("div", { className: "rf-card-header-subheader" }, subheader)), action && /* @__PURE__ */ React91.createElement("div", { className: "rf-card-header-action" }, action));
35427
+ return /* @__PURE__ */ React93.createElement("div", { ref, className: classes, style, ...rest }, avatar && /* @__PURE__ */ React93.createElement("div", { className: "rf-card-header-avatar" }, avatar), /* @__PURE__ */ React93.createElement("div", { className: "rf-card-header-content" }, /* @__PURE__ */ React93.createElement("div", { className: "rf-card-header-title" }, title), subheader && /* @__PURE__ */ React93.createElement("div", { className: "rf-card-header-subheader" }, subheader)), action && /* @__PURE__ */ React93.createElement("div", { className: "rf-card-header-action" }, action));
35169
35428
  }
35170
35429
  );
35171
35430
  CardHeader.displayName = "CardHeader";
35172
- var CardMedia = React91.forwardRef(
35431
+ var CardMedia = React93.forwardRef(
35173
35432
  ({ component: component2 = "div", image: image2, src, height, alt, className, style, sx, ...rest }, ref) => {
35174
35433
  const sxClass = useSx(sx);
35175
35434
  const classes = ["rf-card-media", sxClass, className].filter(Boolean).join(" ");
35176
35435
  const computedHeight = height !== void 0 ? typeof height === "number" ? `${height}px` : height : "200px";
35177
35436
  if (component2 === "img") {
35178
- return /* @__PURE__ */ React91.createElement(
35437
+ return /* @__PURE__ */ React93.createElement(
35179
35438
  "img",
35180
35439
  {
35181
35440
  ref,
@@ -35188,7 +35447,7 @@ var CardMedia = React91.forwardRef(
35188
35447
  );
35189
35448
  }
35190
35449
  if (component2 === "video") {
35191
- return /* @__PURE__ */ React91.createElement(
35450
+ return /* @__PURE__ */ React93.createElement(
35192
35451
  "video",
35193
35452
  {
35194
35453
  ref,
@@ -35204,7 +35463,7 @@ var CardMedia = React91.forwardRef(
35204
35463
  ...image2 ? { backgroundImage: `url(${image2})` } : {},
35205
35464
  ...style
35206
35465
  };
35207
- return /* @__PURE__ */ React91.createElement(
35466
+ return /* @__PURE__ */ React93.createElement(
35208
35467
  "div",
35209
35468
  {
35210
35469
  ref,
@@ -35216,7 +35475,7 @@ var CardMedia = React91.forwardRef(
35216
35475
  }
35217
35476
  );
35218
35477
  CardMedia.displayName = "CardMedia";
35219
- var CardActions = React91.forwardRef(
35478
+ var CardActions = React93.forwardRef(
35220
35479
  ({ disableSpacing = false, children, className, style, sx, ...rest }, ref) => {
35221
35480
  const sxClass = useSx(sx);
35222
35481
  const classes = [
@@ -35225,13 +35484,13 @@ var CardActions = React91.forwardRef(
35225
35484
  sxClass,
35226
35485
  className
35227
35486
  ].filter(Boolean).join(" ");
35228
- return /* @__PURE__ */ React91.createElement("div", { ref, className: classes, style, ...rest }, children);
35487
+ return /* @__PURE__ */ React93.createElement("div", { ref, className: classes, style, ...rest }, children);
35229
35488
  }
35230
35489
  );
35231
35490
  CardActions.displayName = "CardActions";
35232
35491
 
35233
35492
  // lib/Accordion/Accordion.tsx
35234
- var React92 = __toESM(require("react"), 1);
35493
+ var React94 = __toESM(require("react"), 1);
35235
35494
  var import_react37 = require("react");
35236
35495
  var AccordionContext = (0, import_react37.createContext)({
35237
35496
  expanded: false,
@@ -35239,7 +35498,7 @@ var AccordionContext = (0, import_react37.createContext)({
35239
35498
  toggle: () => {
35240
35499
  }
35241
35500
  });
35242
- var Accordion = React92.forwardRef(
35501
+ var Accordion = React94.forwardRef(
35243
35502
  ({
35244
35503
  expanded: expandedProp,
35245
35504
  defaultExpanded = false,
@@ -35274,11 +35533,11 @@ var Accordion = React92.forwardRef(
35274
35533
  sxClass,
35275
35534
  className
35276
35535
  ].filter(Boolean).join(" ");
35277
- return /* @__PURE__ */ React92.createElement(AccordionContext.Provider, { value: { expanded, disabled, toggle } }, /* @__PURE__ */ React92.createElement("div", { ref, className: classes, style, ...rest }, children));
35536
+ return /* @__PURE__ */ React94.createElement(AccordionContext.Provider, { value: { expanded, disabled, toggle } }, /* @__PURE__ */ React94.createElement("div", { ref, className: classes, style, ...rest }, children));
35278
35537
  }
35279
35538
  );
35280
35539
  Accordion.displayName = "Accordion";
35281
- var ChevronIcon = () => /* @__PURE__ */ React92.createElement(
35540
+ var ChevronIcon = () => /* @__PURE__ */ React94.createElement(
35282
35541
  "svg",
35283
35542
  {
35284
35543
  xmlns: "http://www.w3.org/2000/svg",
@@ -35292,9 +35551,9 @@ var ChevronIcon = () => /* @__PURE__ */ React92.createElement(
35292
35551
  strokeLinejoin: "round",
35293
35552
  "aria-hidden": "true"
35294
35553
  },
35295
- /* @__PURE__ */ React92.createElement("polyline", { points: "6 9 12 15 18 9" })
35554
+ /* @__PURE__ */ React94.createElement("polyline", { points: "6 9 12 15 18 9" })
35296
35555
  );
35297
- var AccordionSummary = React92.forwardRef(
35556
+ var AccordionSummary = React94.forwardRef(
35298
35557
  ({ expandIcon, children, sx, className, style, ...rest }, ref) => {
35299
35558
  const sxClass = useSx(sx);
35300
35559
  const { expanded, toggle, disabled } = (0, import_react37.useContext)(AccordionContext);
@@ -35308,7 +35567,7 @@ var AccordionSummary = React92.forwardRef(
35308
35567
  "rf-accordion-summary-icon",
35309
35568
  expanded ? "rf-accordion-icon-expanded" : ""
35310
35569
  ].filter(Boolean).join(" ");
35311
- return /* @__PURE__ */ React92.createElement(
35570
+ return /* @__PURE__ */ React94.createElement(
35312
35571
  "button",
35313
35572
  {
35314
35573
  ref,
@@ -35320,13 +35579,13 @@ var AccordionSummary = React92.forwardRef(
35320
35579
  "aria-expanded": expanded,
35321
35580
  ...rest
35322
35581
  },
35323
- /* @__PURE__ */ React92.createElement("span", { className: "rf-accordion-summary-content" }, children),
35324
- /* @__PURE__ */ React92.createElement("span", { className: iconClasses }, expandIcon !== void 0 ? expandIcon : /* @__PURE__ */ React92.createElement(ChevronIcon, null))
35582
+ /* @__PURE__ */ React94.createElement("span", { className: "rf-accordion-summary-content" }, children),
35583
+ /* @__PURE__ */ React94.createElement("span", { className: iconClasses }, expandIcon !== void 0 ? expandIcon : /* @__PURE__ */ React94.createElement(ChevronIcon, null))
35325
35584
  );
35326
35585
  }
35327
35586
  );
35328
35587
  AccordionSummary.displayName = "AccordionSummary";
35329
- var AccordionDetails = React92.forwardRef(
35588
+ var AccordionDetails = React94.forwardRef(
35330
35589
  ({ children, sx, className, style, ...rest }, ref) => {
35331
35590
  const sxClass = useSx(sx);
35332
35591
  const { expanded } = (0, import_react37.useContext)(AccordionContext);
@@ -35339,7 +35598,7 @@ var AccordionDetails = React92.forwardRef(
35339
35598
  sxClass,
35340
35599
  className
35341
35600
  ].filter(Boolean).join(" ");
35342
- return /* @__PURE__ */ React92.createElement("div", { className: wrapperClasses }, /* @__PURE__ */ React92.createElement("div", { className: "rf-accordion-details-inner" }, /* @__PURE__ */ React92.createElement("div", { ref, className: detailsClasses, style, ...rest }, children)));
35601
+ return /* @__PURE__ */ React94.createElement("div", { className: wrapperClasses }, /* @__PURE__ */ React94.createElement("div", { className: "rf-accordion-details-inner" }, /* @__PURE__ */ React94.createElement("div", { ref, className: detailsClasses, style, ...rest }, children)));
35343
35602
  }
35344
35603
  );
35345
35604
  AccordionDetails.displayName = "AccordionDetails";
@@ -35492,6 +35751,30 @@ var Tabs = ({
35492
35751
  ));
35493
35752
  };
35494
35753
  Tabs.displayName = "Tabs";
35754
+ var TabPanel = ({
35755
+ value,
35756
+ activeValue,
35757
+ children,
35758
+ keepMounted = false,
35759
+ className = "",
35760
+ style,
35761
+ sx
35762
+ }) => {
35763
+ const sxClass = useSx(sx);
35764
+ const isActive = value === activeValue;
35765
+ if (!isActive && !keepMounted) return null;
35766
+ return /* @__PURE__ */ import_react38.default.createElement(
35767
+ "div",
35768
+ {
35769
+ role: "tabpanel",
35770
+ hidden: !isActive,
35771
+ className: ["rf-tab-panel", sxClass, className].filter(Boolean).join(" "),
35772
+ style
35773
+ },
35774
+ isActive && children
35775
+ );
35776
+ };
35777
+ TabPanel.displayName = "TabPanel";
35495
35778
 
35496
35779
  // lib/Breadcrumbs/Breadcrumbs.tsx
35497
35780
  var import_react39 = __toESM(require("react"), 1);
@@ -36798,6 +37081,7 @@ ImageField.displayName = "ImageField";
36798
37081
  BaseDialog,
36799
37082
  Box,
36800
37083
  Breadcrumbs,
37084
+ Button,
36801
37085
  CameraIcon,
36802
37086
  CancelButton,
36803
37087
  Card,
@@ -36833,6 +37117,7 @@ ImageField.displayName = "ImageField";
36833
37117
  Grow,
36834
37118
  HelpOutlinedIcon,
36835
37119
  HierarchyIcon,
37120
+ IconButton,
36836
37121
  ImageField,
36837
37122
  InactiveGroupIcon,
36838
37123
  IndustryIcon,
@@ -36897,6 +37182,7 @@ ImageField.displayName = "ImageField";
36897
37182
  SuspendUserIcon,
36898
37183
  Switch,
36899
37184
  Tab,
37185
+ TabPanel,
36900
37186
  Tabs,
36901
37187
  TechnicalSkillsIcon,
36902
37188
  TextField,