hazo_ui 6.11.2 → 6.12.3

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
@@ -16,6 +16,7 @@ var SelectPrimitive = require('@radix-ui/react-select');
16
16
  var TooltipPrimitive = require('@radix-ui/react-tooltip');
17
17
  var reactDayPicker = require('react-day-picker');
18
18
  var dateFns = require('date-fns');
19
+ var i18n = require('hazo_core/i18n');
19
20
  var core$1 = require('@dnd-kit/core');
20
21
  var sortable = require('@dnd-kit/sortable');
21
22
  var utilities = require('@dnd-kit/utilities');
@@ -181,8 +182,8 @@ var require_extends = __commonJS({
181
182
  function _extends11() {
182
183
  return module.exports = _extends11 = Object.assign ? Object.assign.bind() : function(n) {
183
184
  for (var e = 1; e < arguments.length; e++) {
184
- var t4 = arguments[e];
185
- for (var r in t4) ({}).hasOwnProperty.call(t4, r) && (n[r] = t4[r]);
185
+ var t14 = arguments[e];
186
+ for (var r in t14) ({}).hasOwnProperty.call(t14, r) && (n[r] = t14[r]);
186
187
  }
187
188
  return n;
188
189
  }, module.exports.__esModule = true, module.exports["default"] = module.exports, _extends11.apply(null, arguments);
@@ -196,12 +197,12 @@ var require_objectWithoutPropertiesLoose = __commonJS({
196
197
  "../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js"(exports, module) {
197
198
  function _objectWithoutPropertiesLoose10(r, e) {
198
199
  if (null == r) return {};
199
- var t4 = {};
200
+ var t14 = {};
200
201
  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
201
202
  if (-1 !== e.indexOf(n)) continue;
202
- t4[n] = r[n];
203
+ t14[n] = r[n];
203
204
  }
204
- return t4;
205
+ return t14;
205
206
  }
206
207
  module.exports = _objectWithoutPropertiesLoose10, module.exports.__esModule = true, module.exports["default"] = module.exports;
207
208
  }
@@ -712,47 +713,6 @@ function Calendar({
712
713
  );
713
714
  }
714
715
  Calendar.displayName = "Calendar";
715
- var hazo_i18n_module = null;
716
- void client$1.optional_import("hazo_i18n").then((mod) => {
717
- hazo_i18n_module = mod;
718
- }).catch(() => {
719
- hazo_i18n_module = null;
720
- });
721
- function interpolate(template, vars) {
722
- if (!vars) return template;
723
- return template.replace(
724
- /\{\{\s*(\w+)\s*\}\}/g,
725
- (whole, name) => Object.prototype.hasOwnProperty.call(vars, name) ? vars[name] : whole
726
- );
727
- }
728
- function createPackageT(namespace, fallbackCatalog) {
729
- return function t4(key, vars) {
730
- const mod = hazo_i18n_module;
731
- if (mod && typeof mod.t === "function") {
732
- try {
733
- const translated = mod.t(`${namespace}.${key}`, vars);
734
- if (typeof translated === "string" && translated.length > 0) {
735
- return translated;
736
- }
737
- } catch {
738
- }
739
- }
740
- const template = fallbackCatalog[key];
741
- if (template === void 0) return key;
742
- return interpolate(template, vars);
743
- };
744
- }
745
- function resolvePackageLocale(defaultLocale) {
746
- const mod = hazo_i18n_module;
747
- if (mod && typeof mod.getStaticLocale === "function") {
748
- try {
749
- const locale = mod.getStaticLocale();
750
- if (typeof locale === "string" && locale.length > 0) return locale;
751
- } catch {
752
- }
753
- }
754
- return defaultLocale;
755
- }
756
716
 
757
717
  // src/locales/en.json
758
718
  var en_default = {
@@ -825,9 +785,41 @@ var en_default = {
825
785
  "filter.no_fields_available": "No fields available.",
826
786
  "filter.clear_all": "Clear all",
827
787
  "filter.cancel": "Cancel",
828
- "filter.apply": "Apply"
788
+ "filter.apply": "Apply",
789
+ "sort.title": "Sort",
790
+ "sort.description": "Add fields to sort by, drag to reorder, toggle ascending or descending.",
791
+ "sort.search_fields": "Search fields...",
792
+ "sort.open_dialog_aria": "Open sort dialog",
793
+ "sort.clear_all": "Clear all",
794
+ "sort.cancel": "Cancel",
795
+ "sort.apply": "Apply",
796
+ "canvas_toolbar.bold": "Bold",
797
+ "canvas_toolbar.italic": "Italic",
798
+ "canvas_toolbar.underline": "Underline",
799
+ "canvas_toolbar.align_left": "Align left",
800
+ "canvas_toolbar.align_center": "Align center",
801
+ "canvas_toolbar.align_right": "Align right",
802
+ "canvas_toolbar.text_color": "Text color",
803
+ "canvas_toolbar.font_family": "Font family",
804
+ "canvas_toolbar.align_top": "Align top",
805
+ "canvas_toolbar.align_middle": "Align middle",
806
+ "canvas_toolbar.align_bottom": "Align bottom",
807
+ "canvas_toolbar.bullet_list": "Bullet list",
808
+ "toast.permission_required": "Permission required",
809
+ "toast.permission_denied_message": "You do not have permission to perform this action.",
810
+ "error.something_went_wrong": "Something went wrong",
811
+ "error.dismiss": "Dismiss",
812
+ "loading.taking_longer": "This is taking longer than expected",
813
+ "notification.loading": "Loading notifications",
814
+ "notification.mark_all_read": "Mark all as read",
815
+ "notification.unread": "Unread",
816
+ "confirm.cancel": "Cancel",
817
+ "icon_picker.search_placeholder": "Search icons...",
818
+ "common.loading": "Loading...",
819
+ "common.cancel": "Cancel",
820
+ "common.search": "Search..."
829
821
  };
830
- var t = createPackageT("hazo_ui", en_default);
822
+ var t = i18n.createPackageT("hazo_ui", en_default);
831
823
  function FilterFieldItem({
832
824
  filterConfig,
833
825
  fieldConfig,
@@ -1274,6 +1266,7 @@ function HazoUiMultiFilterDialog({
1274
1266
  ] })
1275
1267
  ] });
1276
1268
  }
1269
+ var t2 = i18n.createPackageT("hazo_ui", en_default);
1277
1270
  function SortableSortFieldItem({
1278
1271
  sortConfig,
1279
1272
  fieldLabel,
@@ -1384,8 +1377,8 @@ function HazoUiMultiSortDialog({
1384
1377
  availableFields,
1385
1378
  onSortChange,
1386
1379
  initialSortFields = [],
1387
- title = "Sort",
1388
- description = "Add fields to sort by, drag to reorder, toggle ascending or descending.",
1380
+ title = t2("sort.title"),
1381
+ description = t2("sort.description"),
1389
1382
  headerBackgroundColor,
1390
1383
  headerTextColor,
1391
1384
  submitButtonBackgroundColor,
@@ -1503,7 +1496,7 @@ function HazoUiMultiSortDialog({
1503
1496
  variant: "outline",
1504
1497
  size: "sm",
1505
1498
  className: "cls_sort_button",
1506
- "aria-label": "Open sort dialog",
1499
+ "aria-label": t2("sort.open_dialog_aria"),
1507
1500
  children: [
1508
1501
  /* @__PURE__ */ jsxRuntime.jsx(
1509
1502
  lucideReact.ArrowUpDown,
@@ -1576,7 +1569,7 @@ function HazoUiMultiSortDialog({
1576
1569
  }
1577
1570
  ) }),
1578
1571
  /* @__PURE__ */ jsxRuntime.jsx(PopoverContent, { className: "cls_combobox_popover w-[var(--radix-popover-trigger-width)] p-0", align: "start", children: /* @__PURE__ */ jsxRuntime.jsxs(Command, { children: [
1579
- /* @__PURE__ */ jsxRuntime.jsx(CommandInput, { placeholder: "Search fields...", className: "cls_command_input" }),
1572
+ /* @__PURE__ */ jsxRuntime.jsx(CommandInput, { placeholder: t2("sort.search_fields"), className: "cls_command_input" }),
1580
1573
  /* @__PURE__ */ jsxRuntime.jsx(CommandList, { children: availableFieldsToAdd.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(CommandEmpty, { children: "No fields available." }) : /* @__PURE__ */ jsxRuntime.jsx(CommandGroup, { children: availableFieldsToAdd.map((field) => /* @__PURE__ */ jsxRuntime.jsx(
1581
1574
  CommandItem,
1582
1575
  {
@@ -1599,7 +1592,7 @@ function HazoUiMultiSortDialog({
1599
1592
  onClick: handleClearAll,
1600
1593
  className: "cls_clear_all_btn text-muted-foreground hover:text-foreground",
1601
1594
  style: clearButtonStyles,
1602
- children: "Clear all"
1595
+ children: t2("sort.clear_all")
1603
1596
  }
1604
1597
  ) }),
1605
1598
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cls_footer_right flex items-center gap-2", children: [
@@ -1611,7 +1604,7 @@ function HazoUiMultiSortDialog({
1611
1604
  onClick: handleCancel,
1612
1605
  className: "cls_cancel_btn",
1613
1606
  style: cancelButtonStyles,
1614
- children: "Cancel"
1607
+ children: t2("sort.cancel")
1615
1608
  }
1616
1609
  ),
1617
1610
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -1621,7 +1614,7 @@ function HazoUiMultiSortDialog({
1621
1614
  onClick: handleApply,
1622
1615
  className: "cls_apply_btn",
1623
1616
  style: submitButtonStyles,
1624
- children: "Apply"
1617
+ children: t2("sort.apply")
1625
1618
  }
1626
1619
  )
1627
1620
  ] })
@@ -2040,6 +2033,7 @@ var TabsContent = React27__namespace.forwardRef(({ className, ...props }, ref) =
2040
2033
  }
2041
2034
  ));
2042
2035
  TabsContent.displayName = TabsPrimitive__namespace.Content.displayName;
2036
+ var t3 = i18n.createPackageT("hazo_ui", en_default);
2043
2037
  function isLucideValue(value) {
2044
2038
  return value.startsWith("lucide:");
2045
2039
  }
@@ -2305,7 +2299,7 @@ function HazoUiIconPicker({
2305
2299
  type: "text",
2306
2300
  value: search,
2307
2301
  onChange: (e) => set_search(e.target.value),
2308
- placeholder: "Search icons...",
2302
+ placeholder: t3("icon_picker.search_placeholder"),
2309
2303
  className: cn(
2310
2304
  "cls_hazo_ui_icon_picker_search",
2311
2305
  "mb-2 flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm",
@@ -3751,10 +3745,10 @@ var BLOCK_TYPE_LABEL_KEYS = {
3751
3745
  "code-block": "rte.block_type.code_block",
3752
3746
  blockquote: "rte.block_type.blockquote"
3753
3747
  };
3754
- function get_translated_block_types(t4) {
3748
+ function get_translated_block_types(t14) {
3755
3749
  return BLOCK_TYPES.map((type) => ({
3756
3750
  ...type,
3757
- label: t4(BLOCK_TYPE_LABEL_KEYS[type.value])
3751
+ label: t14(BLOCK_TYPE_LABEL_KEYS[type.value])
3758
3752
  }));
3759
3753
  }
3760
3754
 
@@ -3801,7 +3795,7 @@ function get_file_extension(filename) {
3801
3795
  function is_image_file(mime_type) {
3802
3796
  return mime_type.startsWith("image/");
3803
3797
  }
3804
- var t2 = createPackageT("hazo_ui", en_default);
3798
+ var t4 = i18n.createPackageT("hazo_ui", en_default);
3805
3799
  var ALL_ON = {
3806
3800
  undo_redo: true,
3807
3801
  block_type: true,
@@ -3856,7 +3850,7 @@ var Toolbar = ({
3856
3850
  }
3857
3851
  const tb = { ...ALL_ON, ...toolbar };
3858
3852
  const font_family_options = font_families && font_families.length > 0 ? font_families : FONT_FAMILIES;
3859
- const block_type_options = get_translated_block_types(t2);
3853
+ const block_type_options = get_translated_block_types(t4);
3860
3854
  const get_current_font_size = () => {
3861
3855
  const attrs = editor.getAttributes("textStyle");
3862
3856
  return attrs.fontSize || FONT_SIZE_CONFIG.default;
@@ -4000,7 +3994,7 @@ var Toolbar = ({
4000
3994
  {
4001
3995
  onClick: () => editor.chain().focus().undo().run(),
4002
3996
  disabled: !editor.can().undo(),
4003
- tooltip: t2("rte.undo"),
3997
+ tooltip: t4("rte.undo"),
4004
3998
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuUndo2, { className: "h-4 w-4" })
4005
3999
  },
4006
4000
  "undo"
@@ -4010,7 +4004,7 @@ var Toolbar = ({
4010
4004
  {
4011
4005
  onClick: () => editor.chain().focus().redo().run(),
4012
4006
  disabled: !editor.can().redo(),
4013
- tooltip: t2("rte.redo"),
4007
+ tooltip: t4("rte.redo"),
4014
4008
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuRedo2, { className: "h-4 w-4" })
4015
4009
  },
4016
4010
  "redo"
@@ -4051,7 +4045,7 @@ var Toolbar = ({
4051
4045
  ToolbarButton,
4052
4046
  {
4053
4047
  onClick: () => handle_font_size_change(-2),
4054
- tooltip: t2("rte.decrease_font_size"),
4048
+ tooltip: t4("rte.decrease_font_size"),
4055
4049
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuMinus, { className: "h-3 w-3" })
4056
4050
  }
4057
4051
  ),
@@ -4060,7 +4054,7 @@ var Toolbar = ({
4060
4054
  ToolbarButton,
4061
4055
  {
4062
4056
  onClick: () => handle_font_size_change(FONT_SIZE_CONFIG.step),
4063
- tooltip: t2("rte.increase_font_size"),
4057
+ tooltip: t4("rte.increase_font_size"),
4064
4058
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPlus, { className: "h-3 w-3" })
4065
4059
  }
4066
4060
  )
@@ -4078,7 +4072,7 @@ var Toolbar = ({
4078
4072
  {
4079
4073
  onClick: () => editor.chain().focus().toggleBold().run(),
4080
4074
  is_active: editor.isActive("bold"),
4081
- tooltip: t2("rte.bold"),
4075
+ tooltip: t4("rte.bold"),
4082
4076
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuBold, { className: "h-4 w-4" })
4083
4077
  },
4084
4078
  "bold"
@@ -4092,7 +4086,7 @@ var Toolbar = ({
4092
4086
  {
4093
4087
  onClick: () => editor.chain().focus().toggleItalic().run(),
4094
4088
  is_active: editor.isActive("italic"),
4095
- tooltip: t2("rte.italic"),
4089
+ tooltip: t4("rte.italic"),
4096
4090
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuItalic, { className: "h-4 w-4" })
4097
4091
  },
4098
4092
  "italic"
@@ -4106,7 +4100,7 @@ var Toolbar = ({
4106
4100
  {
4107
4101
  onClick: () => editor.chain().focus().toggleUnderline().run(),
4108
4102
  is_active: editor.isActive("underline"),
4109
- tooltip: t2("rte.underline"),
4103
+ tooltip: t4("rte.underline"),
4110
4104
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuUnderline, { className: "h-4 w-4" })
4111
4105
  },
4112
4106
  "underline"
@@ -4120,7 +4114,7 @@ var Toolbar = ({
4120
4114
  {
4121
4115
  onClick: () => editor.chain().focus().toggleStrike().run(),
4122
4116
  is_active: editor.isActive("strike"),
4123
- tooltip: t2("rte.strikethrough"),
4117
+ tooltip: t4("rte.strikethrough"),
4124
4118
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuStrikethrough, { className: "h-4 w-4" })
4125
4119
  },
4126
4120
  "strike"
@@ -4134,7 +4128,7 @@ var Toolbar = ({
4134
4128
  {
4135
4129
  onClick: () => editor.chain().focus().toggleSubscript().run(),
4136
4130
  is_active: editor.isActive("subscript"),
4137
- tooltip: t2("rte.subscript"),
4131
+ tooltip: t4("rte.subscript"),
4138
4132
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSubscript, { className: "h-4 w-4" })
4139
4133
  },
4140
4134
  "sub"
@@ -4148,7 +4142,7 @@ var Toolbar = ({
4148
4142
  {
4149
4143
  onClick: () => editor.chain().focus().toggleSuperscript().run(),
4150
4144
  is_active: editor.isActive("superscript"),
4151
- tooltip: t2("rte.superscript"),
4145
+ tooltip: t4("rte.superscript"),
4152
4146
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSuperscript, { className: "h-4 w-4" })
4153
4147
  },
4154
4148
  "super"
@@ -4162,7 +4156,7 @@ var Toolbar = ({
4162
4156
  if (tb.link) {
4163
4157
  items.push(
4164
4158
  /* @__PURE__ */ jsxRuntime.jsxs(Popover, { open: link_popover_open, onOpenChange: set_link_popover_open, children: [
4165
- /* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { is_active: editor.isActive("link"), tooltip: t2("rte.link"), children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuLink, { className: "h-4 w-4" }) }) }),
4159
+ /* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { is_active: editor.isActive("link"), tooltip: t4("rte.link"), children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuLink, { className: "h-4 w-4" }) }) }),
4166
4160
  /* @__PURE__ */ jsxRuntime.jsx(PopoverContent, { className: "w-80 p-3", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
4167
4161
  /* @__PURE__ */ jsxRuntime.jsx(
4168
4162
  Input,
@@ -4198,7 +4192,7 @@ var Toolbar = ({
4198
4192
  ToolbarButton,
4199
4193
  {
4200
4194
  onClick: () => editor.chain().focus().unsetAllMarks().clearNodes().run(),
4201
- tooltip: t2("rte.clear_formatting"),
4195
+ tooltip: t4("rte.clear_formatting"),
4202
4196
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuRemoveFormatting, { className: "h-4 w-4" })
4203
4197
  },
4204
4198
  "clear"
@@ -4212,7 +4206,7 @@ var Toolbar = ({
4212
4206
  if (tb.text_color) {
4213
4207
  items.push(
4214
4208
  /* @__PURE__ */ jsxRuntime.jsxs(Popover, { open: text_color_open, onOpenChange: set_text_color_open, children: [
4215
- /* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { tooltip: t2("rte.text_color"), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center", children: [
4209
+ /* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { tooltip: t4("rte.text_color"), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center", children: [
4216
4210
  /* @__PURE__ */ jsxRuntime.jsx(lu.LuPalette, { className: "h-4 w-4" }),
4217
4211
  /* @__PURE__ */ jsxRuntime.jsx(
4218
4212
  "div",
@@ -4255,7 +4249,7 @@ var Toolbar = ({
4255
4249
  if (tb.highlight_color) {
4256
4250
  items.push(
4257
4251
  /* @__PURE__ */ jsxRuntime.jsxs(Popover, { open: highlight_color_open, onOpenChange: set_highlight_color_open, children: [
4258
- /* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { tooltip: t2("rte.highlight_color"), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center", children: [
4252
+ /* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { tooltip: t4("rte.highlight_color"), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center", children: [
4259
4253
  /* @__PURE__ */ jsxRuntime.jsx(lu.LuHighlighter, { className: "h-4 w-4" }),
4260
4254
  /* @__PURE__ */ jsxRuntime.jsx(
4261
4255
  "div",
@@ -4298,7 +4292,7 @@ var Toolbar = ({
4298
4292
  {
4299
4293
  onClick: () => editor.chain().focus().setTextAlign("left").run(),
4300
4294
  is_active: editor.isActive({ textAlign: "left" }),
4301
- tooltip: t2("rte.align_left"),
4295
+ tooltip: t4("rte.align_left"),
4302
4296
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuAlignLeft, { className: "h-4 w-4" })
4303
4297
  },
4304
4298
  "align-left"
@@ -4308,7 +4302,7 @@ var Toolbar = ({
4308
4302
  {
4309
4303
  onClick: () => editor.chain().focus().setTextAlign("center").run(),
4310
4304
  is_active: editor.isActive({ textAlign: "center" }),
4311
- tooltip: t2("rte.align_center"),
4305
+ tooltip: t4("rte.align_center"),
4312
4306
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuAlignCenter, { className: "h-4 w-4" })
4313
4307
  },
4314
4308
  "align-center"
@@ -4318,7 +4312,7 @@ var Toolbar = ({
4318
4312
  {
4319
4313
  onClick: () => editor.chain().focus().setTextAlign("right").run(),
4320
4314
  is_active: editor.isActive({ textAlign: "right" }),
4321
- tooltip: t2("rte.align_right"),
4315
+ tooltip: t4("rte.align_right"),
4322
4316
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuAlignRight, { className: "h-4 w-4" })
4323
4317
  },
4324
4318
  "align-right"
@@ -4328,7 +4322,7 @@ var Toolbar = ({
4328
4322
  {
4329
4323
  onClick: () => editor.chain().focus().setTextAlign("justify").run(),
4330
4324
  is_active: editor.isActive({ textAlign: "justify" }),
4331
- tooltip: t2("rte.justify"),
4325
+ tooltip: t4("rte.justify"),
4332
4326
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuAlignJustify, { className: "h-4 w-4" })
4333
4327
  },
4334
4328
  "align-justify"
@@ -4344,7 +4338,7 @@ var Toolbar = ({
4344
4338
  {
4345
4339
  onClick: () => editor.chain().focus().toggleBulletList().run(),
4346
4340
  is_active: editor.isActive("bulletList"),
4347
- tooltip: t2("rte.bullet_list"),
4341
+ tooltip: t4("rte.bullet_list"),
4348
4342
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuList, { className: "h-4 w-4" })
4349
4343
  },
4350
4344
  "bullet"
@@ -4358,7 +4352,7 @@ var Toolbar = ({
4358
4352
  {
4359
4353
  onClick: () => editor.chain().focus().toggleOrderedList().run(),
4360
4354
  is_active: editor.isActive("orderedList"),
4361
- tooltip: t2("rte.ordered_list"),
4355
+ tooltip: t4("rte.ordered_list"),
4362
4356
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuListOrdered, { className: "h-4 w-4" })
4363
4357
  },
4364
4358
  "ordered"
@@ -4372,7 +4366,7 @@ var Toolbar = ({
4372
4366
  {
4373
4367
  onClick: () => editor.chain().focus().toggleTaskList().run(),
4374
4368
  is_active: editor.isActive("taskList"),
4375
- tooltip: t2("rte.checklist"),
4369
+ tooltip: t4("rte.checklist"),
4376
4370
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuListChecks, { className: "h-4 w-4" })
4377
4371
  },
4378
4372
  "task"
@@ -4394,7 +4388,7 @@ var Toolbar = ({
4394
4388
  }
4395
4389
  },
4396
4390
  disabled: !editor.can().liftListItem("listItem") && !editor.can().liftListItem("taskItem"),
4397
- tooltip: t2("rte.decrease_indent"),
4391
+ tooltip: t4("rte.decrease_indent"),
4398
4392
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuIndentDecrease, { className: "h-4 w-4" })
4399
4393
  },
4400
4394
  "indent-dec"
@@ -4410,7 +4404,7 @@ var Toolbar = ({
4410
4404
  }
4411
4405
  },
4412
4406
  disabled: !editor.can().sinkListItem("listItem") && !editor.can().sinkListItem("taskItem"),
4413
- tooltip: t2("rte.increase_indent"),
4407
+ tooltip: t4("rte.increase_indent"),
4414
4408
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuIndentIncrease, { className: "h-4 w-4" })
4415
4409
  },
4416
4410
  "indent-inc"
@@ -4421,7 +4415,7 @@ var Toolbar = ({
4421
4415
  const items = [];
4422
4416
  if (tb.horizontal_rule) {
4423
4417
  items.push(
4424
- /* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { onClick: handle_hr_insert, tooltip: t2("rte.horizontal_rule"), children: /* @__PURE__ */ jsxRuntime.jsx(rx.RxDividerHorizontal, { className: "h-4 w-4" }) }, "hr")
4418
+ /* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { onClick: handle_hr_insert, tooltip: t4("rte.horizontal_rule"), children: /* @__PURE__ */ jsxRuntime.jsx(rx.RxDividerHorizontal, { className: "h-4 w-4" }) }, "hr")
4425
4419
  );
4426
4420
  }
4427
4421
  if (tb.image) {
@@ -4430,7 +4424,7 @@ var Toolbar = ({
4430
4424
  ToolbarButton,
4431
4425
  {
4432
4426
  onClick: () => image_input_ref.current?.click(),
4433
- tooltip: t2("rte.insert_image"),
4427
+ tooltip: t4("rte.insert_image"),
4434
4428
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuImage, { className: "h-4 w-4" })
4435
4429
  },
4436
4430
  "image"
@@ -4444,7 +4438,7 @@ var Toolbar = ({
4444
4438
  ToolbarButton,
4445
4439
  {
4446
4440
  is_active: editor.isActive("table"),
4447
- tooltip: t2("rte.table"),
4441
+ tooltip: t4("rte.table"),
4448
4442
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuTable, { className: "h-4 w-4" })
4449
4443
  }
4450
4444
  ) }),
@@ -4616,7 +4610,7 @@ var Toolbar = ({
4616
4610
  if (tb.variables && variables.length > 0) {
4617
4611
  items.push(
4618
4612
  /* @__PURE__ */ jsxRuntime.jsxs(Popover, { open: variables_menu_open, onOpenChange: set_variables_menu_open, children: [
4619
- /* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { tooltip: t2("rte.insert_variable"), children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuVariable, { className: "h-4 w-4" }) }) }),
4613
+ /* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { tooltip: t4("rte.insert_variable"), children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuVariable, { className: "h-4 w-4" }) }) }),
4620
4614
  /* @__PURE__ */ jsxRuntime.jsx(PopoverContent, { className: "w-64 p-0", align: "start", children: /* @__PURE__ */ jsxRuntime.jsxs(Command, { children: [
4621
4615
  /* @__PURE__ */ jsxRuntime.jsx(CommandInput, { placeholder: "Search variables...", className: "h-8 text-xs" }),
4622
4616
  /* @__PURE__ */ jsxRuntime.jsxs(CommandList, { children: [
@@ -4645,7 +4639,7 @@ var Toolbar = ({
4645
4639
  ToolbarButton,
4646
4640
  {
4647
4641
  onClick: () => file_input_ref.current?.click(),
4648
- tooltip: t2("rte.attach_file"),
4642
+ tooltip: t4("rte.attach_file"),
4649
4643
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPaperclip, { className: "h-4 w-4" })
4650
4644
  },
4651
4645
  "attach"
@@ -5166,6 +5160,7 @@ var HazoUiRte = ({
5166
5160
  );
5167
5161
  };
5168
5162
  HazoUiRte.displayName = "HazoUiRte";
5163
+ var t5 = i18n.createPackageT("hazo_ui", en_default);
5169
5164
  function CanvasTextToolbar({
5170
5165
  bold,
5171
5166
  italic,
@@ -5196,14 +5191,14 @@ function CanvasTextToolbar({
5196
5191
  ),
5197
5192
  style,
5198
5193
  children: [
5199
- /* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { is_active: bold, onClick: onBold, tooltip: "Bold", children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuBold, { className: "h-4 w-4" }) }),
5200
- /* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { is_active: italic, onClick: onItalic, tooltip: "Italic", children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuItalic, { className: "h-4 w-4" }) }),
5194
+ /* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { is_active: bold, onClick: onBold, tooltip: t5("canvas_toolbar.bold"), children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuBold, { className: "h-4 w-4" }) }),
5195
+ /* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { is_active: italic, onClick: onItalic, tooltip: t5("canvas_toolbar.italic"), children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuItalic, { className: "h-4 w-4" }) }),
5201
5196
  /* @__PURE__ */ jsxRuntime.jsx(
5202
5197
  ToolbarButton,
5203
5198
  {
5204
5199
  is_active: underline,
5205
5200
  onClick: onUnderline,
5206
- tooltip: "Underline",
5201
+ tooltip: t5("canvas_toolbar.underline"),
5207
5202
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuUnderline, { className: "h-4 w-4" })
5208
5203
  }
5209
5204
  ),
@@ -5213,7 +5208,7 @@ function CanvasTextToolbar({
5213
5208
  {
5214
5209
  is_active: align === "left",
5215
5210
  onClick: () => onAlign?.("left"),
5216
- tooltip: "Align left",
5211
+ tooltip: t5("canvas_toolbar.align_left"),
5217
5212
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuAlignLeft, { className: "h-4 w-4" })
5218
5213
  }
5219
5214
  ),
@@ -5222,7 +5217,7 @@ function CanvasTextToolbar({
5222
5217
  {
5223
5218
  is_active: align === "center",
5224
5219
  onClick: () => onAlign?.("center"),
5225
- tooltip: "Align center",
5220
+ tooltip: t5("canvas_toolbar.align_center"),
5226
5221
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuAlignCenter, { className: "h-4 w-4" })
5227
5222
  }
5228
5223
  ),
@@ -5231,7 +5226,7 @@ function CanvasTextToolbar({
5231
5226
  {
5232
5227
  is_active: align === "right",
5233
5228
  onClick: () => onAlign?.("right"),
5234
- tooltip: "Align right",
5229
+ tooltip: t5("canvas_toolbar.align_right"),
5235
5230
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuAlignRight, { className: "h-4 w-4" })
5236
5231
  }
5237
5232
  ),
@@ -5240,7 +5235,7 @@ function CanvasTextToolbar({
5240
5235
  "label",
5241
5236
  {
5242
5237
  className: "relative flex h-8 w-8 cursor-pointer items-center justify-center rounded-md hover:bg-accent",
5243
- title: "Text color",
5238
+ title: t5("canvas_toolbar.text_color"),
5244
5239
  children: [
5245
5240
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center", children: [
5246
5241
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-bold text-muted-foreground", children: "A" }),
@@ -5270,7 +5265,7 @@ function CanvasTextToolbar({
5270
5265
  {
5271
5266
  is_active: verticalAlign === "top",
5272
5267
  onClick: () => onVerticalAlign?.("top"),
5273
- tooltip: "Align top",
5268
+ tooltip: t5("canvas_toolbar.align_top"),
5274
5269
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuAlignVerticalJustifyStart, { className: "h-4 w-4" })
5275
5270
  }
5276
5271
  ),
@@ -5279,7 +5274,7 @@ function CanvasTextToolbar({
5279
5274
  {
5280
5275
  is_active: verticalAlign === "middle",
5281
5276
  onClick: () => onVerticalAlign?.("middle"),
5282
- tooltip: "Align middle",
5277
+ tooltip: t5("canvas_toolbar.align_middle"),
5283
5278
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuAlignVerticalJustifyCenter, { className: "h-4 w-4" })
5284
5279
  }
5285
5280
  ),
@@ -5288,7 +5283,7 @@ function CanvasTextToolbar({
5288
5283
  {
5289
5284
  is_active: verticalAlign === "bottom",
5290
5285
  onClick: () => onVerticalAlign?.("bottom"),
5291
- tooltip: "Align bottom",
5286
+ tooltip: t5("canvas_toolbar.align_bottom"),
5292
5287
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuAlignVerticalJustifyEnd, { className: "h-4 w-4" })
5293
5288
  }
5294
5289
  ),
@@ -5299,7 +5294,7 @@ function CanvasTextToolbar({
5299
5294
  value: font,
5300
5295
  onChange: (e) => onFont?.(e.target.value),
5301
5296
  className: "h-8 text-xs rounded-md border border-border bg-background px-1 text-foreground focus:outline-none",
5302
- title: "Font family",
5297
+ title: t5("canvas_toolbar.font_family"),
5303
5298
  children: [
5304
5299
  /* @__PURE__ */ jsxRuntime.jsx("option", { value: "sans-serif", children: "Sans" }),
5305
5300
  /* @__PURE__ */ jsxRuntime.jsx("option", { value: "serif", children: "Serif" }),
@@ -5311,7 +5306,7 @@ function CanvasTextToolbar({
5311
5306
  }
5312
5307
  ),
5313
5308
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-1 h-6 w-px bg-border" }),
5314
- /* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { is_active: bullet, onClick: onBullet, tooltip: "Bullet list", children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuList, { className: "h-4 w-4" }) })
5309
+ /* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { is_active: bullet, onClick: onBullet, tooltip: t5("canvas_toolbar.bullet_list"), children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuList, { className: "h-4 w-4" }) })
5315
5310
  ]
5316
5311
  }
5317
5312
  ) });
@@ -7689,6 +7684,7 @@ function HazoUiDialog({
7689
7684
  )
7690
7685
  ] }) });
7691
7686
  }
7687
+ var t6 = i18n.createPackageT("hazo_ui", en_default);
7692
7688
  function HazoUiConfirmDialog({
7693
7689
  open,
7694
7690
  onOpenChange,
@@ -7697,7 +7693,7 @@ function HazoUiConfirmDialog({
7697
7693
  children,
7698
7694
  variant = "default",
7699
7695
  confirmLabel,
7700
- cancelLabel = "Cancel",
7696
+ cancelLabel = t6("confirm.cancel"),
7701
7697
  showCancelButton = true,
7702
7698
  onConfirm,
7703
7699
  onCancel,
@@ -8602,6 +8598,7 @@ function EmptyState({
8602
8598
  }
8603
8599
  );
8604
8600
  }
8601
+ var t7 = i18n.createPackageT("hazo_ui", en_default);
8605
8602
  function ErrorBanner({
8606
8603
  severity = "error",
8607
8604
  title,
@@ -8636,7 +8633,7 @@ function ErrorBanner({
8636
8633
  {
8637
8634
  type: "button",
8638
8635
  onClick: onDismiss,
8639
- "aria-label": "Dismiss",
8636
+ "aria-label": t7("error.dismiss"),
8640
8637
  className: "flex-shrink-0 rounded p-1 hover:bg-black/5 focus:outline-none focus:ring-2 focus:ring-offset-2 dark:hover:bg-white/5",
8641
8638
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4", "aria-hidden": "true" })
8642
8639
  }
@@ -8645,8 +8642,9 @@ function ErrorBanner({
8645
8642
  }
8646
8643
  );
8647
8644
  }
8645
+ var t8 = i18n.createPackageT("hazo_ui", en_default);
8648
8646
  function ErrorPage({
8649
- title = "Something went wrong",
8647
+ title = t8("error.something_went_wrong"),
8650
8648
  description,
8651
8649
  errorCode,
8652
8650
  correlationId,
@@ -8677,6 +8675,7 @@ function ErrorPage({
8677
8675
  }
8678
8676
  );
8679
8677
  }
8678
+ var t9 = i18n.createPackageT("hazo_ui", en_default);
8680
8679
  function LoadingTimeout({
8681
8680
  active,
8682
8681
  children,
@@ -8686,7 +8685,7 @@ function LoadingTimeout({
8686
8685
  label = "content",
8687
8686
  className
8688
8687
  }) {
8689
- const t4 = {
8688
+ const timeouts = {
8690
8689
  gentle: thresholds?.gentle ?? 5e3,
8691
8690
  firm: thresholds?.firm ?? 15e3,
8692
8691
  expired: thresholds?.expired ?? 3e4
@@ -8698,15 +8697,15 @@ function LoadingTimeout({
8698
8697
  return;
8699
8698
  }
8700
8699
  setPhase("silent");
8701
- const gentleTimer = window.setTimeout(() => setPhase("gentle"), t4.gentle);
8702
- const firmTimer = window.setTimeout(() => setPhase("firm"), t4.firm);
8703
- const expiredTimer = window.setTimeout(() => setPhase("expired"), t4.expired);
8700
+ const gentleTimer = window.setTimeout(() => setPhase("gentle"), timeouts.gentle);
8701
+ const firmTimer = window.setTimeout(() => setPhase("firm"), timeouts.firm);
8702
+ const expiredTimer = window.setTimeout(() => setPhase("expired"), timeouts.expired);
8704
8703
  return () => {
8705
8704
  window.clearTimeout(gentleTimer);
8706
8705
  window.clearTimeout(firmTimer);
8707
8706
  window.clearTimeout(expiredTimer);
8708
8707
  };
8709
- }, [active, t4.gentle, t4.firm, t4.expired]);
8708
+ }, [active, timeouts.gentle, timeouts.firm, timeouts.expired]);
8710
8709
  if (!active) {
8711
8710
  return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
8712
8711
  }
@@ -8715,7 +8714,7 @@ function LoadingTimeout({
8715
8714
  ErrorBanner,
8716
8715
  {
8717
8716
  severity: "error",
8718
- title: "This is taking longer than expected",
8717
+ title: t9("loading.taking_longer"),
8719
8718
  message: `We're still trying to load the ${label}. The connection may be slow.`,
8720
8719
  action: onRetry ? /* @__PURE__ */ jsxRuntime.jsx(
8721
8720
  "button",
@@ -8817,6 +8816,7 @@ function NotificationCountBadge({
8817
8816
  }
8818
8817
  );
8819
8818
  }
8819
+ var t10 = i18n.createPackageT("hazo_ui", en_default);
8820
8820
  function NotificationItem({
8821
8821
  isRead,
8822
8822
  timestamp,
@@ -8847,7 +8847,7 @@ function NotificationItem({
8847
8847
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cls_notification_item_dot_col flex-shrink-0 pt-1.5", children: !isRead ? /* @__PURE__ */ jsxRuntime.jsx(
8848
8848
  "span",
8849
8849
  {
8850
- "aria-label": "Unread",
8850
+ "aria-label": t10("notification.unread"),
8851
8851
  className: "cls_notification_item_dot block w-2 h-2 rounded-full bg-primary"
8852
8852
  }
8853
8853
  ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block w-2 h-2", "aria-hidden": "true" }) }),
@@ -8871,12 +8871,13 @@ function NotificationItem({
8871
8871
  }
8872
8872
  );
8873
8873
  }
8874
+ var t11 = i18n.createPackageT("hazo_ui", en_default);
8874
8875
  function LoadingSkeletons() {
8875
8876
  return /* @__PURE__ */ jsxRuntime.jsx(
8876
8877
  "div",
8877
8878
  {
8878
8879
  "aria-busy": "true",
8879
- "aria-label": "Loading notifications",
8880
+ "aria-label": t11("notification.loading"),
8880
8881
  className: "cls_notification_panel_loading space-y-0",
8881
8882
  children: [0, 1, 2].map((i) => /* @__PURE__ */ jsxRuntime.jsxs(
8882
8883
  "div",
@@ -8935,6 +8936,7 @@ function NotificationPanel({
8935
8936
  }
8936
8937
  );
8937
8938
  }
8939
+ var t12 = i18n.createPackageT("hazo_ui", en_default);
8938
8940
  function HazoUiToaster({
8939
8941
  position = "bottom-right",
8940
8942
  closeButton = true,
@@ -8980,12 +8982,12 @@ function permissionToast({
8980
8982
  action,
8981
8983
  duration = 5e3
8982
8984
  }) {
8983
- const description = missingPermissions.length === 0 ? "You do not have permission to perform this action." : `Missing: ${missingPermissions.map((key) => {
8985
+ const description = missingPermissions.length === 0 ? t12("toast.permission_denied_message") : `Missing: ${missingPermissions.map((key) => {
8984
8986
  const label = descriptions?.[key];
8985
8987
  return label ? `\`${key}\` \u2014 ${label}` : `\`${key}\``;
8986
8988
  }).join("; ")}`;
8987
8989
  return errorToast({
8988
- title: "Permission required",
8990
+ title: t12("toast.permission_required"),
8989
8991
  description,
8990
8992
  action,
8991
8993
  duration
@@ -9180,41 +9182,55 @@ function useWakeLock() {
9180
9182
  }
9181
9183
  function useFullscreen(elementRef) {
9182
9184
  const [is_fullscreen, set_is_fullscreen] = React27.useState(false);
9185
+ const supported = typeof document !== "undefined" && typeof document.documentElement.requestFullscreen === "function";
9183
9186
  React27.useEffect(() => {
9184
- if (typeof document === "undefined") return;
9187
+ if (typeof document === "undefined" || !supported) return;
9185
9188
  const handle_change = () => {
9186
9189
  set_is_fullscreen(!!document.fullscreenElement);
9187
9190
  };
9188
9191
  document.addEventListener("fullscreenchange", handle_change);
9189
9192
  set_is_fullscreen(!!document.fullscreenElement);
9190
9193
  return () => document.removeEventListener("fullscreenchange", handle_change);
9191
- }, []);
9194
+ }, [supported]);
9192
9195
  const get_target = React27.useCallback(() => {
9193
9196
  return elementRef?.current ?? document.documentElement;
9194
9197
  }, [elementRef]);
9195
9198
  const enter = React27.useCallback(async () => {
9196
- if (typeof document === "undefined" || !document.documentElement.requestFullscreen) return;
9199
+ if (typeof document === "undefined") return;
9200
+ if (!supported) {
9201
+ set_is_fullscreen(true);
9202
+ return;
9203
+ }
9197
9204
  if (document.fullscreenElement) return;
9198
9205
  try {
9199
9206
  await get_target().requestFullscreen();
9200
9207
  } catch {
9201
9208
  }
9202
- }, [get_target]);
9209
+ }, [supported, get_target]);
9203
9210
  const exit = React27.useCallback(async () => {
9204
9211
  if (typeof document === "undefined") return;
9212
+ if (!supported) {
9213
+ set_is_fullscreen(false);
9214
+ return;
9215
+ }
9205
9216
  if (!document.fullscreenElement) return;
9206
9217
  try {
9207
9218
  await document.exitFullscreen();
9208
9219
  } catch {
9209
9220
  }
9210
- }, []);
9221
+ }, [supported]);
9211
9222
  const toggle = React27.useCallback(async () => {
9223
+ if (!supported) {
9224
+ if (is_fullscreen) await exit();
9225
+ else await enter();
9226
+ return;
9227
+ }
9212
9228
  if (document.fullscreenElement) {
9213
9229
  await exit();
9214
9230
  } else {
9215
9231
  await enter();
9216
9232
  }
9217
- }, [enter, exit]);
9233
+ }, [supported, is_fullscreen, enter, exit]);
9218
9234
  return { isFullscreen: is_fullscreen, enter, exit, toggle };
9219
9235
  }
9220
9236
  function use_wake_lock(active) {
@@ -10834,7 +10850,7 @@ function serializeFilter(filter) {
10834
10850
  const fields = (filter.fields ?? []).map((f) => `${f.field}:${f.operator ?? ""}:${String(f.value)}`).join(",");
10835
10851
  return `${filter.search ?? ""}|${fields}`;
10836
10852
  }
10837
- var t3 = createPackageT("hazo_ui", en_default);
10853
+ var t13 = i18n.createPackageT("hazo_ui", en_default);
10838
10854
  function HazoUiTable(props) {
10839
10855
  const state = useTableState(props);
10840
10856
  const { columns, rows, getRowKey, className, caption } = props;
@@ -10869,12 +10885,12 @@ function HazoUiTable(props) {
10869
10885
  ) }) : state.serverError != null ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cls_hazo_ui_table_mobile_error py-6", children: renderErrorState(props.error, state.serverError) }) : state.displayed.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cls_hazo_ui_table_mobile_empty py-6", children: noActiveFilters(state.filter) && rows.length === 0 ? typeof props.empty === "string" || props.empty === void 0 ? /* @__PURE__ */ jsxRuntime.jsx(
10870
10886
  EmptyState,
10871
10887
  {
10872
- title: typeof props.empty === "string" && props.empty || t3("table.empty")
10888
+ title: typeof props.empty === "string" && props.empty || t13("table.empty")
10873
10889
  }
10874
10890
  ) : props.empty : typeof props.noResults === "string" || props.noResults === void 0 ? /* @__PURE__ */ jsxRuntime.jsx(
10875
10891
  EmptyState,
10876
10892
  {
10877
- title: typeof props.noResults === "string" && props.noResults || t3("table.no_results")
10893
+ title: typeof props.noResults === "string" && props.noResults || t13("table.no_results")
10878
10894
  }
10879
10895
  ) : props.noResults }) : /* @__PURE__ */ jsxRuntime.jsx(
10880
10896
  TableMobileCards,
@@ -10897,7 +10913,7 @@ function HazoUiTable(props) {
10897
10913
  {
10898
10914
  type: "button",
10899
10915
  onClick: (e) => state.cycleHeaderSort(c.key, e.shiftKey),
10900
- title: t3("table.sort_tooltip"),
10916
+ title: t13("table.sort_tooltip"),
10901
10917
  className: "cls_hazo_ui_table_sort_btn inline-flex items-center gap-1 hover:text-foreground",
10902
10918
  children: [
10903
10919
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: c.label }),
@@ -10929,12 +10945,12 @@ function HazoUiTable(props) {
10929
10945
  children: noActiveFilters(state.filter) && rows.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cls_hazo_ui_table_empty_wrap py-6", children: typeof props.empty === "string" || props.empty === void 0 ? /* @__PURE__ */ jsxRuntime.jsx(
10930
10946
  EmptyState,
10931
10947
  {
10932
- title: typeof props.empty === "string" && props.empty || t3("table.empty")
10948
+ title: typeof props.empty === "string" && props.empty || t13("table.empty")
10933
10949
  }
10934
10950
  ) : props.empty }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cls_hazo_ui_table_no_results_wrap py-6", children: typeof props.noResults === "string" || props.noResults === void 0 ? /* @__PURE__ */ jsxRuntime.jsx(
10935
10951
  EmptyState,
10936
10952
  {
10937
- title: typeof props.noResults === "string" && props.noResults || t3("table.no_results")
10953
+ title: typeof props.noResults === "string" && props.noResults || t13("table.no_results")
10938
10954
  }
10939
10955
  ) : props.noResults })
10940
10956
  }
@@ -10973,7 +10989,7 @@ function renderCell(c, row, i) {
10973
10989
  var DEFAULT_NUMBER_LOCALE = "en-US";
10974
10990
  function formatValue(value, formatter, currency, locale) {
10975
10991
  if (value === null || value === void 0 || value === "") return "\u2014";
10976
- const lc = locale ?? resolvePackageLocale(DEFAULT_NUMBER_LOCALE);
10992
+ const lc = locale ?? i18n.resolvePackageLocale(DEFAULT_NUMBER_LOCALE);
10977
10993
  switch (formatter) {
10978
10994
  case "date": {
10979
10995
  const d = value instanceof Date ? value : new Date(value);
@@ -11048,7 +11064,7 @@ function PaginationFooter({
11048
11064
  const end = Math.min((page + 1) * pageSize, total);
11049
11065
  const lastPage = Math.max(0, Math.ceil(total / pageSize) - 1);
11050
11066
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cls_hazo_ui_table_pagination flex items-center justify-between gap-3 pt-2 text-sm", children: [
11051
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cls_hazo_ui_table_page_counter text-muted-foreground", children: t3("table.showing", {
11067
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cls_hazo_ui_table_page_counter text-muted-foreground", children: t13("table.showing", {
11052
11068
  start: String(start),
11053
11069
  end: String(end),
11054
11070
  total: String(total)
@@ -11061,8 +11077,8 @@ function PaginationFooter({
11061
11077
  size: "sm",
11062
11078
  onClick: () => onPageChange(Math.max(0, page - 1)),
11063
11079
  disabled: page === 0,
11064
- "aria-label": t3("table.prev_aria"),
11065
- children: t3("table.prev")
11080
+ "aria-label": t13("table.prev_aria"),
11081
+ children: t13("table.prev")
11066
11082
  }
11067
11083
  ),
11068
11084
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -11072,8 +11088,8 @@ function PaginationFooter({
11072
11088
  size: "sm",
11073
11089
  onClick: () => onPageChange(Math.min(lastPage, page + 1)),
11074
11090
  disabled: page >= lastPage,
11075
- "aria-label": t3("table.next_aria"),
11076
- children: t3("table.next")
11091
+ "aria-label": t13("table.next_aria"),
11092
+ children: t13("table.next")
11077
11093
  }
11078
11094
  )
11079
11095
  ] })
@@ -11117,7 +11133,7 @@ function Toolbar2(props) {
11117
11133
  setSearchValue(v);
11118
11134
  onSearchChange(v);
11119
11135
  },
11120
- placeholder: searchPlaceholder ?? t3("table.search_placeholder"),
11136
+ placeholder: searchPlaceholder ?? t13("table.search_placeholder"),
11121
11137
  className: "cls_hazo_ui_table_search w-full sm:max-w-xs"
11122
11138
  }
11123
11139
  ) : /* @__PURE__ */ jsxRuntime.jsx("div", {}),
@@ -11165,8 +11181,8 @@ function renderErrorState(error, serverError) {
11165
11181
  return /* @__PURE__ */ jsxRuntime.jsx(
11166
11182
  EmptyState,
11167
11183
  {
11168
- title: t3("table.error_title"),
11169
- description: msg || t3("table.error_description")
11184
+ title: t13("table.error_title"),
11185
+ description: msg || t13("table.error_description")
11170
11186
  }
11171
11187
  );
11172
11188
  }
@@ -11952,8 +11968,8 @@ function computeEta(durationWindow, unitCount, concurrency = 1, fallbackUnitMs =
11952
11968
  }
11953
11969
  function easeToward(elapsed, eta, maxCap = 0.95) {
11954
11970
  if (eta <= 0 || elapsed <= 0) return 0;
11955
- const t4 = elapsed / eta;
11956
- return maxCap * (1 - Math.exp(-1.5 * t4));
11971
+ const t14 = elapsed / eta;
11972
+ return maxCap * (1 - Math.exp(-1.5 * t14));
11957
11973
  }
11958
11974
  function HazoUiProgressBar({
11959
11975
  value,
@@ -11984,7 +12000,7 @@ function HazoUiProgressBar({
11984
12000
  children: /* @__PURE__ */ jsxRuntime.jsx(
11985
12001
  "div",
11986
12002
  {
11987
- className: "h-full rounded-full bg-accent transition-[width] duration-200 ease-out motion-reduce:transition-none",
12003
+ className: "h-full rounded-full bg-primary transition-[width] duration-200 ease-out motion-reduce:transition-none",
11988
12004
  style: { width: `${pct}%` }
11989
12005
  }
11990
12006
  )
@@ -12071,6 +12087,8 @@ function HazoUiEtaProgress({
12071
12087
  fallbackUnitMs = 5e3,
12072
12088
  level = "global",
12073
12089
  label,
12090
+ showPercent,
12091
+ size,
12074
12092
  endpoint,
12075
12093
  handleRef,
12076
12094
  className
@@ -12105,6 +12123,8 @@ function HazoUiEtaProgress({
12105
12123
  {
12106
12124
  value: handle.value,
12107
12125
  label,
12126
+ showPercent,
12127
+ size,
12108
12128
  className
12109
12129
  }
12110
12130
  );