hazo_ui 6.12.3 → 6.12.5
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/CHANGE_LOG.md +48 -0
- package/README.md +4 -0
- package/dist/index.cjs +368 -221
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +368 -221
- package/dist/index.js.map +1 -1
- package/dist/index.locale-picker.cjs +217 -3
- package/dist/index.locale-picker.cjs.map +1 -1
- package/dist/index.locale-picker.d.cts +1 -1
- package/dist/index.locale-picker.d.ts +1 -1
- package/dist/index.locale-picker.js +217 -3
- package/dist/index.locale-picker.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -112,8 +112,8 @@ var require_extends = __commonJS({
|
|
|
112
112
|
function _extends11() {
|
|
113
113
|
return module.exports = _extends11 = Object.assign ? Object.assign.bind() : function(n) {
|
|
114
114
|
for (var e = 1; e < arguments.length; e++) {
|
|
115
|
-
var
|
|
116
|
-
for (var r in
|
|
115
|
+
var t35 = arguments[e];
|
|
116
|
+
for (var r in t35) ({}).hasOwnProperty.call(t35, r) && (n[r] = t35[r]);
|
|
117
117
|
}
|
|
118
118
|
return n;
|
|
119
119
|
}, module.exports.__esModule = true, module.exports["default"] = module.exports, _extends11.apply(null, arguments);
|
|
@@ -127,12 +127,12 @@ var require_objectWithoutPropertiesLoose = __commonJS({
|
|
|
127
127
|
"../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js"(exports, module) {
|
|
128
128
|
function _objectWithoutPropertiesLoose10(r, e) {
|
|
129
129
|
if (null == r) return {};
|
|
130
|
-
var
|
|
130
|
+
var t35 = {};
|
|
131
131
|
for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
|
|
132
132
|
if (-1 !== e.indexOf(n)) continue;
|
|
133
|
-
|
|
133
|
+
t35[n] = r[n];
|
|
134
134
|
}
|
|
135
|
-
return
|
|
135
|
+
return t35;
|
|
136
136
|
}
|
|
137
137
|
module.exports = _objectWithoutPropertiesLoose10, module.exports.__esModule = true, module.exports["default"] = module.exports;
|
|
138
138
|
}
|
|
@@ -747,7 +747,112 @@ var en_default = {
|
|
|
747
747
|
"icon_picker.search_placeholder": "Search icons...",
|
|
748
748
|
"common.loading": "Loading...",
|
|
749
749
|
"common.cancel": "Cancel",
|
|
750
|
-
"common.search": "Search..."
|
|
750
|
+
"common.search": "Search...",
|
|
751
|
+
"dialog.default_title": "Action required",
|
|
752
|
+
"dialog.cancel": "Cancel",
|
|
753
|
+
"dialog.ok": "OK",
|
|
754
|
+
"dialog.confirm": "Confirm",
|
|
755
|
+
"dialog.close": "Close",
|
|
756
|
+
"kanban.status_label": "Status",
|
|
757
|
+
"kanban.edit_fallback": "Edit {{id}}",
|
|
758
|
+
"kanban.update_description": "Update card details below.",
|
|
759
|
+
"kanban.saving": "Saving\u2026",
|
|
760
|
+
"kanban.save": "Save",
|
|
761
|
+
"kanban.cancel": "Cancel",
|
|
762
|
+
"kanban.select_placeholder": "Select {{label}}\u2026",
|
|
763
|
+
"kanban.select_priority": "Select priority\u2026",
|
|
764
|
+
"kanban.select_status": "Select status\u2026",
|
|
765
|
+
"markdown.placeholder": "Write in Markdown\u2026",
|
|
766
|
+
"markdown.upload_failed": "Upload failed.",
|
|
767
|
+
"markdown.loading_editor": "Loading editor\u2026",
|
|
768
|
+
"markdown.uploading_image": "Uploading image\u2026",
|
|
769
|
+
"cropper.title": "Crop photo",
|
|
770
|
+
"cropper.save": "Save",
|
|
771
|
+
"cropper.cancel": "Cancel",
|
|
772
|
+
"cropper.zoom": "Zoom",
|
|
773
|
+
"memory.search_placeholder": "Search history\u2026",
|
|
774
|
+
"memory.no_history": "No history yet",
|
|
775
|
+
"memory.remove_aria": "Remove {{label}} from history",
|
|
776
|
+
"celebration.close": "Close celebration",
|
|
777
|
+
"celebration.download_png": "Download PNG",
|
|
778
|
+
"celebration.share": "Share",
|
|
779
|
+
"celebration.copy_image": "Copy image",
|
|
780
|
+
"celebration.dismiss": "Dismiss",
|
|
781
|
+
"charts.date_range": "Date range",
|
|
782
|
+
"flex_input.must_be_valid_number": "Must be a valid number",
|
|
783
|
+
"flex_input.max_decimals": "Maximum {{count}} decimal places allowed",
|
|
784
|
+
"flex_input.min_value": "Must be at least {{min}}",
|
|
785
|
+
"flex_input.max_value": "Must be at most {{max}}",
|
|
786
|
+
"flex_input.alpha_only": "Only letters, numbers, and spaces are allowed",
|
|
787
|
+
"flex_input.must_be_valid_email": "Must be a valid email address",
|
|
788
|
+
"flex_input.min_characters": "Must be at least {{min}} characters",
|
|
789
|
+
"flex_input.max_characters": "Must be at most {{max}} characters",
|
|
790
|
+
"flex_input.invalid_format": "Invalid format",
|
|
791
|
+
"flex_input.invalid_input": "Invalid input",
|
|
792
|
+
"textbox.placeholder": "Type here...",
|
|
793
|
+
"textarea.placeholder": "Type here...",
|
|
794
|
+
"common.remove": "Remove",
|
|
795
|
+
"locale_picker.change_language": "Change language",
|
|
796
|
+
"app_logo.alt_fallback": "Logo",
|
|
797
|
+
"app_header.aria_label": "Application header",
|
|
798
|
+
"skeleton.loading_content": "Loading content",
|
|
799
|
+
"spinner.loading": "Loading",
|
|
800
|
+
"spinner.loading_text": "Loading...",
|
|
801
|
+
"rte.update_link": "Update Link",
|
|
802
|
+
"rte.add_link": "Add Link",
|
|
803
|
+
"rte.remove_link": "Remove",
|
|
804
|
+
"rte.select_size": "Select size",
|
|
805
|
+
"rte.custom_size": "Custom size",
|
|
806
|
+
"rte.insert_table": "Insert",
|
|
807
|
+
"rte.search_variables": "Search variables...",
|
|
808
|
+
"rte.no_variables": "No variables found.",
|
|
809
|
+
"rte.table_operations": "Table Operations",
|
|
810
|
+
"rte.add_row_above": "Add row above",
|
|
811
|
+
"rte.add_row_below": "Add row below",
|
|
812
|
+
"rte.add_col_left": "Add col left",
|
|
813
|
+
"rte.add_col_right": "Add col right",
|
|
814
|
+
"rte.delete_row": "Delete row",
|
|
815
|
+
"rte.delete_col": "Delete col",
|
|
816
|
+
"rte.delete_table": "Delete table",
|
|
817
|
+
"rte.insert_table_heading": "Insert Table",
|
|
818
|
+
"rte.placeholder": "Start typing...",
|
|
819
|
+
"sort.asc": "Asc",
|
|
820
|
+
"sort.desc": "Desc",
|
|
821
|
+
"sort.reorder_aria": "Reorder {{field}}",
|
|
822
|
+
"sort.priority_aria": "Sort priority {{n}}",
|
|
823
|
+
"sort.direction_aria": "Sort direction for {{field}}",
|
|
824
|
+
"sort.remove_aria": "Remove {{field}} from sort",
|
|
825
|
+
"sort.active_sorts": "Active sorts",
|
|
826
|
+
"sort.no_active_sorts": "No active sorts",
|
|
827
|
+
"sort.button_label": "Sort",
|
|
828
|
+
"sort.empty_message": "No sort fields yet. Add one below to start ordering rows.",
|
|
829
|
+
"sort.all_fields_added": "All fields added",
|
|
830
|
+
"sort.add_sort_field": "Add sort field",
|
|
831
|
+
"sort.no_fields_available": "No fields available.",
|
|
832
|
+
"kanban.dnd_pickup": "Picked up {{item}}. Currently in {{column}}. Use arrow keys to choose a different column. Press space to drop, escape to cancel.",
|
|
833
|
+
"kanban.dnd_over": "{{item}} over {{column}}.",
|
|
834
|
+
"kanban.dnd_drop": "{{item}} dropped in {{column}}, position {{pos}}.",
|
|
835
|
+
"kanban.dnd_reorder": "{{item}} reordered to position {{pos}} in {{column}}.",
|
|
836
|
+
"kanban.dnd_cancel": "Movement cancelled. {{item}} returned to {{column}}.",
|
|
837
|
+
"kanban.draggable_card": "draggable card",
|
|
838
|
+
"loading.still_loading": "We're still trying to load the {{label}}. The connection may be slow.",
|
|
839
|
+
"loading.try_again": "Try again",
|
|
840
|
+
"loading.gentle_message": "Loading {{label}}\u2026",
|
|
841
|
+
"loading.default_label": "content",
|
|
842
|
+
"loading.firm_message": "Still working on it \u2014 almost there.",
|
|
843
|
+
"icon_picker.emoji_tab": "Emoji",
|
|
844
|
+
"icon_picker.tools_group": "Tools",
|
|
845
|
+
"icon_picker.home_group": "Home",
|
|
846
|
+
"icon_picker.weather_group": "Weather",
|
|
847
|
+
"icon_picker.nature_group": "Nature",
|
|
848
|
+
"icon_picker.symbols_group": "Symbols",
|
|
849
|
+
"icon_picker.no_results": "No icons found",
|
|
850
|
+
"error.correlation_id": "Correlation ID",
|
|
851
|
+
"charts.total": "Total: {{value}}",
|
|
852
|
+
"charts.pct_of_first": "% of first: {{pct}}%",
|
|
853
|
+
"charts.pct_of_prev": "% of prev: {{pct}}%",
|
|
854
|
+
"charts.dropoff": "Drop-off: \u2212{{value}}",
|
|
855
|
+
"toast.missing_prefix": "Missing: {{items}}"
|
|
751
856
|
};
|
|
752
857
|
var t = createPackageT("hazo_ui", en_default);
|
|
753
858
|
function FilterFieldItem({
|
|
@@ -1235,7 +1340,7 @@ function SortableSortFieldItem({
|
|
|
1235
1340
|
...attributes,
|
|
1236
1341
|
...listeners,
|
|
1237
1342
|
className: "cls_drag_handle flex h-7 w-5 shrink-0 cursor-grab items-center justify-center rounded text-muted-foreground/60 hover:text-foreground active:cursor-grabbing",
|
|
1238
|
-
"aria-label":
|
|
1343
|
+
"aria-label": t2("sort.reorder_aria", { field: fieldLabel }),
|
|
1239
1344
|
children: /* @__PURE__ */ jsx(GripVertical, { className: "cls_drag_icon h-4 w-4" })
|
|
1240
1345
|
}
|
|
1241
1346
|
),
|
|
@@ -1243,7 +1348,7 @@ function SortableSortFieldItem({
|
|
|
1243
1348
|
"span",
|
|
1244
1349
|
{
|
|
1245
1350
|
className: "cls_priority_badge inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-muted text-[10px] font-semibold tabular-nums text-muted-foreground",
|
|
1246
|
-
"aria-label":
|
|
1351
|
+
"aria-label": t2("sort.priority_aria", { n: priority }),
|
|
1247
1352
|
children: priority
|
|
1248
1353
|
}
|
|
1249
1354
|
),
|
|
@@ -1252,7 +1357,7 @@ function SortableSortFieldItem({
|
|
|
1252
1357
|
"div",
|
|
1253
1358
|
{
|
|
1254
1359
|
role: "radiogroup",
|
|
1255
|
-
"aria-label":
|
|
1360
|
+
"aria-label": t2("sort.direction_aria", { field: fieldLabel }),
|
|
1256
1361
|
className: "cls_direction_control inline-flex shrink-0 items-center rounded-md border border-border/70 bg-muted/40 p-0.5",
|
|
1257
1362
|
children: [
|
|
1258
1363
|
/* @__PURE__ */ jsxs(
|
|
@@ -1266,7 +1371,7 @@ function SortableSortFieldItem({
|
|
|
1266
1371
|
className: "cls_dir_asc inline-flex items-center gap-1 rounded px-2 py-1 text-xs font-medium text-muted-foreground transition-colors data-[active=true]:bg-background data-[active=true]:text-foreground data-[active=true]:shadow-sm hover:text-foreground",
|
|
1267
1372
|
children: [
|
|
1268
1373
|
/* @__PURE__ */ jsx(ArrowUp, { className: "h-3 w-3" }),
|
|
1269
|
-
"
|
|
1374
|
+
t2("sort.asc")
|
|
1270
1375
|
]
|
|
1271
1376
|
}
|
|
1272
1377
|
),
|
|
@@ -1281,7 +1386,7 @@ function SortableSortFieldItem({
|
|
|
1281
1386
|
className: "cls_dir_desc inline-flex items-center gap-1 rounded px-2 py-1 text-xs font-medium text-muted-foreground transition-colors data-[active=true]:bg-background data-[active=true]:text-foreground data-[active=true]:shadow-sm hover:text-foreground",
|
|
1282
1387
|
children: [
|
|
1283
1388
|
/* @__PURE__ */ jsx(ArrowDown, { className: "h-3 w-3" }),
|
|
1284
|
-
"
|
|
1389
|
+
t2("sort.desc")
|
|
1285
1390
|
]
|
|
1286
1391
|
}
|
|
1287
1392
|
)
|
|
@@ -1295,7 +1400,7 @@ function SortableSortFieldItem({
|
|
|
1295
1400
|
size: "sm",
|
|
1296
1401
|
onClick: onDelete,
|
|
1297
1402
|
className: "cls_delete_btn h-7 w-7 shrink-0 p-0 text-muted-foreground/60 hover:bg-destructive/10 hover:text-destructive",
|
|
1298
|
-
"aria-label":
|
|
1403
|
+
"aria-label": t2("sort.remove_aria", { field: fieldLabel }),
|
|
1299
1404
|
children: /* @__PURE__ */ jsx(X, { className: "cls_delete_icon h-3.5 w-3.5" })
|
|
1300
1405
|
}
|
|
1301
1406
|
)
|
|
@@ -1408,16 +1513,16 @@ function HazoUiMultiSortDialog({
|
|
|
1408
1513
|
};
|
|
1409
1514
|
const hasActiveSorts = initialSortFields.length > 0;
|
|
1410
1515
|
const tooltipContent = hasActiveSorts ? /* @__PURE__ */ jsxs("div", { className: "cls_sort_tooltip_content space-y-1", children: [
|
|
1411
|
-
/* @__PURE__ */ jsx("div", { className: "cls_tooltip_title text-xs font-semibold mb-1", children: "
|
|
1516
|
+
/* @__PURE__ */ jsx("div", { className: "cls_tooltip_title text-xs font-semibold mb-1", children: t2("sort.active_sorts") }),
|
|
1412
1517
|
initialSortFields.map((sortConfig, index) => /* @__PURE__ */ jsxs("div", { className: "cls_tooltip_item text-xs", children: [
|
|
1413
1518
|
index + 1,
|
|
1414
1519
|
". ",
|
|
1415
1520
|
getFieldLabel(sortConfig.field),
|
|
1416
1521
|
" (",
|
|
1417
|
-
sortConfig.direction === "asc" ? "
|
|
1522
|
+
sortConfig.direction === "asc" ? t2("sort.asc") : t2("sort.desc"),
|
|
1418
1523
|
")"
|
|
1419
1524
|
] }, sortConfig.field))
|
|
1420
|
-
] }) : /* @__PURE__ */ jsx("div", { className: "cls_sort_tooltip_content text-xs", children: "
|
|
1525
|
+
] }) : /* @__PURE__ */ jsx("div", { className: "cls_sort_tooltip_content text-xs", children: t2("sort.no_active_sorts") });
|
|
1421
1526
|
return /* @__PURE__ */ jsxs(Dialog, { open: isOpen, onOpenChange: setIsOpen, children: [
|
|
1422
1527
|
/* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
1423
1528
|
/* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(DialogTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
|
|
@@ -1437,7 +1542,7 @@ function HazoUiMultiSortDialog({
|
|
|
1437
1542
|
)
|
|
1438
1543
|
}
|
|
1439
1544
|
),
|
|
1440
|
-
"
|
|
1545
|
+
t2("sort.button_label"),
|
|
1441
1546
|
hasActiveSorts && /* @__PURE__ */ jsx("span", { className: "cls_sort_count ml-2 inline-flex h-4 min-w-4 items-center justify-center rounded-full bg-blue-600 px-1 text-[10px] font-semibold text-white", children: initialSortFields.length })
|
|
1442
1547
|
]
|
|
1443
1548
|
}
|
|
@@ -1482,7 +1587,7 @@ function HazoUiMultiSortDialog({
|
|
|
1482
1587
|
}
|
|
1483
1588
|
)
|
|
1484
1589
|
}
|
|
1485
|
-
) }) : /* @__PURE__ */ jsx("div", { className: "cls_empty_sort_fields rounded-lg border border-dashed border-border/70 bg-muted/20 px-4 py-6 text-center text-xs text-muted-foreground", children: "
|
|
1590
|
+
) }) : /* @__PURE__ */ jsx("div", { className: "cls_empty_sort_fields rounded-lg border border-dashed border-border/70 bg-muted/20 px-4 py-6 text-center text-xs text-muted-foreground", children: t2("sort.empty_message") }),
|
|
1486
1591
|
/* @__PURE__ */ jsx("div", { className: "cls_add_field_section", children: /* @__PURE__ */ jsxs(Popover, { open: isComboboxOpen, onOpenChange: setIsComboboxOpen, children: [
|
|
1487
1592
|
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
|
|
1488
1593
|
Button,
|
|
@@ -1494,13 +1599,13 @@ function HazoUiMultiSortDialog({
|
|
|
1494
1599
|
className: "cls_add_field_combobox w-full justify-start gap-2 border border-dashed border-border/70 text-sm font-medium text-muted-foreground hover:border-border hover:bg-muted/40 hover:text-foreground",
|
|
1495
1600
|
children: [
|
|
1496
1601
|
/* @__PURE__ */ jsx(Plus, { className: "cls_plus_icon h-4 w-4" }),
|
|
1497
|
-
/* @__PURE__ */ jsx("span", { children: availableFieldsToAdd.length === 0 ? "
|
|
1602
|
+
/* @__PURE__ */ jsx("span", { children: availableFieldsToAdd.length === 0 ? t2("sort.all_fields_added") : t2("sort.add_sort_field") })
|
|
1498
1603
|
]
|
|
1499
1604
|
}
|
|
1500
1605
|
) }),
|
|
1501
1606
|
/* @__PURE__ */ jsx(PopoverContent, { className: "cls_combobox_popover w-[var(--radix-popover-trigger-width)] p-0", align: "start", children: /* @__PURE__ */ jsxs(Command, { children: [
|
|
1502
1607
|
/* @__PURE__ */ jsx(CommandInput, { placeholder: t2("sort.search_fields"), className: "cls_command_input" }),
|
|
1503
|
-
/* @__PURE__ */ jsx(CommandList, { children: availableFieldsToAdd.length === 0 ? /* @__PURE__ */ jsx(CommandEmpty, { children: "
|
|
1608
|
+
/* @__PURE__ */ jsx(CommandList, { children: availableFieldsToAdd.length === 0 ? /* @__PURE__ */ jsx(CommandEmpty, { children: t2("sort.no_fields_available") }) : /* @__PURE__ */ jsx(CommandGroup, { children: availableFieldsToAdd.map((field) => /* @__PURE__ */ jsx(
|
|
1504
1609
|
CommandItem,
|
|
1505
1610
|
{
|
|
1506
1611
|
value: field.label,
|
|
@@ -2036,11 +2141,11 @@ var SYMBOLS_ICONS = [
|
|
|
2036
2141
|
"Wrench"
|
|
2037
2142
|
];
|
|
2038
2143
|
var LUCIDE_GROUPS = [
|
|
2039
|
-
{ key: "tools",
|
|
2040
|
-
{ key: "home",
|
|
2041
|
-
{ key: "weather",
|
|
2042
|
-
{ key: "nature",
|
|
2043
|
-
{ key: "symbols",
|
|
2144
|
+
{ key: "tools", label_key: "icon_picker.tools_group", icons: TOOLS_ICONS },
|
|
2145
|
+
{ key: "home", label_key: "icon_picker.home_group", icons: HOME_ICONS },
|
|
2146
|
+
{ key: "weather", label_key: "icon_picker.weather_group", icons: WEATHER_ICONS },
|
|
2147
|
+
{ key: "nature", label_key: "icon_picker.nature_group", icons: NATURE_ICONS },
|
|
2148
|
+
{ key: "symbols", label_key: "icon_picker.symbols_group", icons: SYMBOLS_ICONS }
|
|
2044
2149
|
];
|
|
2045
2150
|
var EMOJI_ITEMS = [
|
|
2046
2151
|
// Faces
|
|
@@ -2253,11 +2358,11 @@ function HazoUiIconPicker({
|
|
|
2253
2358
|
name
|
|
2254
2359
|
);
|
|
2255
2360
|
}),
|
|
2256
|
-
filtered_search_results.length === 0 && /* @__PURE__ */ jsx("p", { className: "col-span-8 py-4 text-center text-sm text-muted-foreground", children: "
|
|
2361
|
+
filtered_search_results.length === 0 && /* @__PURE__ */ jsx("p", { className: "col-span-8 py-4 text-center text-sm text-muted-foreground", children: t3("icon_picker.no_results") })
|
|
2257
2362
|
] }) : /* @__PURE__ */ jsxs(Tabs, { defaultValue: "emoji", children: [
|
|
2258
2363
|
/* @__PURE__ */ jsxs(TabsList, { className: "grid w-full grid-cols-6", children: [
|
|
2259
|
-
/* @__PURE__ */ jsx(TabsTrigger, { value: "emoji", children: "
|
|
2260
|
-
LUCIDE_GROUPS.map((group) => /* @__PURE__ */ jsx(TabsTrigger, { value: group.key, children: group.
|
|
2364
|
+
/* @__PURE__ */ jsx(TabsTrigger, { value: "emoji", children: t3("icon_picker.emoji_tab") }),
|
|
2365
|
+
LUCIDE_GROUPS.map((group) => /* @__PURE__ */ jsx(TabsTrigger, { value: group.key, children: t3(group.label_key) }, group.key))
|
|
2261
2366
|
] }),
|
|
2262
2367
|
/* @__PURE__ */ jsx(TabsContent, { value: "emoji", children: /* @__PURE__ */ jsx("div", { className: "grid max-h-56 grid-cols-8 gap-1 overflow-y-auto", children: EMOJI_ITEMS.map((emoji, index) => /* @__PURE__ */ jsx(
|
|
2263
2368
|
"button",
|
|
@@ -2289,6 +2394,7 @@ function HazoUiIconPicker({
|
|
|
2289
2394
|
}
|
|
2290
2395
|
) });
|
|
2291
2396
|
}
|
|
2397
|
+
var t4 = createPackageT("hazo_ui", en_default);
|
|
2292
2398
|
function validateInput(value, input_type, text_len_min, text_len_max, num_min, num_max, regex, num_decimals) {
|
|
2293
2399
|
if (value === "") {
|
|
2294
2400
|
return { isValid: true };
|
|
@@ -2297,36 +2403,36 @@ function validateInput(value, input_type, text_len_min, text_len_max, num_min, n
|
|
|
2297
2403
|
case "numeric": {
|
|
2298
2404
|
const numValue = parseFloat(value);
|
|
2299
2405
|
if (isNaN(numValue)) {
|
|
2300
|
-
return { isValid: false, errorMessage: "
|
|
2406
|
+
return { isValid: false, errorMessage: t4("flex_input.must_be_valid_number") };
|
|
2301
2407
|
}
|
|
2302
2408
|
if (num_decimals !== void 0) {
|
|
2303
2409
|
const decimalPlaces = value.split(".")[1]?.length || 0;
|
|
2304
2410
|
if (decimalPlaces > num_decimals) {
|
|
2305
2411
|
return {
|
|
2306
2412
|
isValid: false,
|
|
2307
|
-
errorMessage:
|
|
2413
|
+
errorMessage: t4("flex_input.max_decimals", { count: num_decimals })
|
|
2308
2414
|
};
|
|
2309
2415
|
}
|
|
2310
2416
|
}
|
|
2311
2417
|
if (num_min !== void 0 && numValue < num_min) {
|
|
2312
|
-
return { isValid: false, errorMessage:
|
|
2418
|
+
return { isValid: false, errorMessage: t4("flex_input.min_value", { min: num_min }) };
|
|
2313
2419
|
}
|
|
2314
2420
|
if (num_max !== void 0 && numValue > num_max) {
|
|
2315
|
-
return { isValid: false, errorMessage:
|
|
2421
|
+
return { isValid: false, errorMessage: t4("flex_input.max_value", { max: num_max }) };
|
|
2316
2422
|
}
|
|
2317
2423
|
break;
|
|
2318
2424
|
}
|
|
2319
2425
|
case "alpha": {
|
|
2320
2426
|
const alphaRegex = /^[A-Za-z0-9\s]*$/;
|
|
2321
2427
|
if (!alphaRegex.test(value)) {
|
|
2322
|
-
return { isValid: false, errorMessage: "
|
|
2428
|
+
return { isValid: false, errorMessage: t4("flex_input.alpha_only") };
|
|
2323
2429
|
}
|
|
2324
2430
|
break;
|
|
2325
2431
|
}
|
|
2326
2432
|
case "email": {
|
|
2327
2433
|
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
2328
2434
|
if (!emailRegex.test(value)) {
|
|
2329
|
-
return { isValid: false, errorMessage: "
|
|
2435
|
+
return { isValid: false, errorMessage: t4("flex_input.must_be_valid_email") };
|
|
2330
2436
|
}
|
|
2331
2437
|
break;
|
|
2332
2438
|
}
|
|
@@ -2334,13 +2440,13 @@ function validateInput(value, input_type, text_len_min, text_len_max, num_min, n
|
|
|
2334
2440
|
if (text_len_min !== void 0 && value.length < text_len_min) {
|
|
2335
2441
|
return {
|
|
2336
2442
|
isValid: false,
|
|
2337
|
-
errorMessage:
|
|
2443
|
+
errorMessage: t4("flex_input.min_characters", { min: text_len_min })
|
|
2338
2444
|
};
|
|
2339
2445
|
}
|
|
2340
2446
|
if (text_len_max !== void 0 && value.length > text_len_max) {
|
|
2341
2447
|
return {
|
|
2342
2448
|
isValid: false,
|
|
2343
|
-
errorMessage:
|
|
2449
|
+
errorMessage: t4("flex_input.max_characters", { max: text_len_max })
|
|
2344
2450
|
};
|
|
2345
2451
|
}
|
|
2346
2452
|
break;
|
|
@@ -2349,7 +2455,7 @@ function validateInput(value, input_type, text_len_min, text_len_max, num_min, n
|
|
|
2349
2455
|
if (regex) {
|
|
2350
2456
|
const regexPattern = typeof regex === "string" ? new RegExp(regex) : regex;
|
|
2351
2457
|
if (!regexPattern.test(value)) {
|
|
2352
|
-
return { isValid: false, errorMessage: "
|
|
2458
|
+
return { isValid: false, errorMessage: t4("flex_input.invalid_format") };
|
|
2353
2459
|
}
|
|
2354
2460
|
}
|
|
2355
2461
|
return { isValid: true };
|
|
@@ -2445,7 +2551,7 @@ var HazoUiFlexInput = React27.forwardRef(
|
|
|
2445
2551
|
num_decimals
|
|
2446
2552
|
);
|
|
2447
2553
|
if (!validation.isValid) {
|
|
2448
|
-
setErrorMessage(validation.errorMessage || format_guide || "
|
|
2554
|
+
setErrorMessage(validation.errorMessage || format_guide || t4("flex_input.invalid_input"));
|
|
2449
2555
|
} else {
|
|
2450
2556
|
setErrorMessage(void 0);
|
|
2451
2557
|
}
|
|
@@ -3675,10 +3781,10 @@ var BLOCK_TYPE_LABEL_KEYS = {
|
|
|
3675
3781
|
"code-block": "rte.block_type.code_block",
|
|
3676
3782
|
blockquote: "rte.block_type.blockquote"
|
|
3677
3783
|
};
|
|
3678
|
-
function get_translated_block_types(
|
|
3784
|
+
function get_translated_block_types(t35) {
|
|
3679
3785
|
return BLOCK_TYPES.map((type) => ({
|
|
3680
3786
|
...type,
|
|
3681
|
-
label:
|
|
3787
|
+
label: t35(BLOCK_TYPE_LABEL_KEYS[type.value])
|
|
3682
3788
|
}));
|
|
3683
3789
|
}
|
|
3684
3790
|
|
|
@@ -3725,7 +3831,7 @@ function get_file_extension(filename) {
|
|
|
3725
3831
|
function is_image_file(mime_type) {
|
|
3726
3832
|
return mime_type.startsWith("image/");
|
|
3727
3833
|
}
|
|
3728
|
-
var
|
|
3834
|
+
var t5 = createPackageT("hazo_ui", en_default);
|
|
3729
3835
|
var ALL_ON = {
|
|
3730
3836
|
undo_redo: true,
|
|
3731
3837
|
block_type: true,
|
|
@@ -3780,7 +3886,7 @@ var Toolbar = ({
|
|
|
3780
3886
|
}
|
|
3781
3887
|
const tb = { ...ALL_ON, ...toolbar };
|
|
3782
3888
|
const font_family_options = font_families && font_families.length > 0 ? font_families : FONT_FAMILIES;
|
|
3783
|
-
const block_type_options = get_translated_block_types(
|
|
3889
|
+
const block_type_options = get_translated_block_types(t5);
|
|
3784
3890
|
const get_current_font_size = () => {
|
|
3785
3891
|
const attrs = editor.getAttributes("textStyle");
|
|
3786
3892
|
return attrs.fontSize || FONT_SIZE_CONFIG.default;
|
|
@@ -3924,7 +4030,7 @@ var Toolbar = ({
|
|
|
3924
4030
|
{
|
|
3925
4031
|
onClick: () => editor.chain().focus().undo().run(),
|
|
3926
4032
|
disabled: !editor.can().undo(),
|
|
3927
|
-
tooltip:
|
|
4033
|
+
tooltip: t5("rte.undo"),
|
|
3928
4034
|
children: /* @__PURE__ */ jsx(LuUndo2, { className: "h-4 w-4" })
|
|
3929
4035
|
},
|
|
3930
4036
|
"undo"
|
|
@@ -3934,7 +4040,7 @@ var Toolbar = ({
|
|
|
3934
4040
|
{
|
|
3935
4041
|
onClick: () => editor.chain().focus().redo().run(),
|
|
3936
4042
|
disabled: !editor.can().redo(),
|
|
3937
|
-
tooltip:
|
|
4043
|
+
tooltip: t5("rte.redo"),
|
|
3938
4044
|
children: /* @__PURE__ */ jsx(LuRedo2, { className: "h-4 w-4" })
|
|
3939
4045
|
},
|
|
3940
4046
|
"redo"
|
|
@@ -3975,7 +4081,7 @@ var Toolbar = ({
|
|
|
3975
4081
|
ToolbarButton,
|
|
3976
4082
|
{
|
|
3977
4083
|
onClick: () => handle_font_size_change(-2),
|
|
3978
|
-
tooltip:
|
|
4084
|
+
tooltip: t5("rte.decrease_font_size"),
|
|
3979
4085
|
children: /* @__PURE__ */ jsx(LuMinus, { className: "h-3 w-3" })
|
|
3980
4086
|
}
|
|
3981
4087
|
),
|
|
@@ -3984,7 +4090,7 @@ var Toolbar = ({
|
|
|
3984
4090
|
ToolbarButton,
|
|
3985
4091
|
{
|
|
3986
4092
|
onClick: () => handle_font_size_change(FONT_SIZE_CONFIG.step),
|
|
3987
|
-
tooltip:
|
|
4093
|
+
tooltip: t5("rte.increase_font_size"),
|
|
3988
4094
|
children: /* @__PURE__ */ jsx(LuPlus, { className: "h-3 w-3" })
|
|
3989
4095
|
}
|
|
3990
4096
|
)
|
|
@@ -4002,7 +4108,7 @@ var Toolbar = ({
|
|
|
4002
4108
|
{
|
|
4003
4109
|
onClick: () => editor.chain().focus().toggleBold().run(),
|
|
4004
4110
|
is_active: editor.isActive("bold"),
|
|
4005
|
-
tooltip:
|
|
4111
|
+
tooltip: t5("rte.bold"),
|
|
4006
4112
|
children: /* @__PURE__ */ jsx(LuBold, { className: "h-4 w-4" })
|
|
4007
4113
|
},
|
|
4008
4114
|
"bold"
|
|
@@ -4016,7 +4122,7 @@ var Toolbar = ({
|
|
|
4016
4122
|
{
|
|
4017
4123
|
onClick: () => editor.chain().focus().toggleItalic().run(),
|
|
4018
4124
|
is_active: editor.isActive("italic"),
|
|
4019
|
-
tooltip:
|
|
4125
|
+
tooltip: t5("rte.italic"),
|
|
4020
4126
|
children: /* @__PURE__ */ jsx(LuItalic, { className: "h-4 w-4" })
|
|
4021
4127
|
},
|
|
4022
4128
|
"italic"
|
|
@@ -4030,7 +4136,7 @@ var Toolbar = ({
|
|
|
4030
4136
|
{
|
|
4031
4137
|
onClick: () => editor.chain().focus().toggleUnderline().run(),
|
|
4032
4138
|
is_active: editor.isActive("underline"),
|
|
4033
|
-
tooltip:
|
|
4139
|
+
tooltip: t5("rte.underline"),
|
|
4034
4140
|
children: /* @__PURE__ */ jsx(LuUnderline, { className: "h-4 w-4" })
|
|
4035
4141
|
},
|
|
4036
4142
|
"underline"
|
|
@@ -4044,7 +4150,7 @@ var Toolbar = ({
|
|
|
4044
4150
|
{
|
|
4045
4151
|
onClick: () => editor.chain().focus().toggleStrike().run(),
|
|
4046
4152
|
is_active: editor.isActive("strike"),
|
|
4047
|
-
tooltip:
|
|
4153
|
+
tooltip: t5("rte.strikethrough"),
|
|
4048
4154
|
children: /* @__PURE__ */ jsx(LuStrikethrough, { className: "h-4 w-4" })
|
|
4049
4155
|
},
|
|
4050
4156
|
"strike"
|
|
@@ -4058,7 +4164,7 @@ var Toolbar = ({
|
|
|
4058
4164
|
{
|
|
4059
4165
|
onClick: () => editor.chain().focus().toggleSubscript().run(),
|
|
4060
4166
|
is_active: editor.isActive("subscript"),
|
|
4061
|
-
tooltip:
|
|
4167
|
+
tooltip: t5("rte.subscript"),
|
|
4062
4168
|
children: /* @__PURE__ */ jsx(LuSubscript, { className: "h-4 w-4" })
|
|
4063
4169
|
},
|
|
4064
4170
|
"sub"
|
|
@@ -4072,7 +4178,7 @@ var Toolbar = ({
|
|
|
4072
4178
|
{
|
|
4073
4179
|
onClick: () => editor.chain().focus().toggleSuperscript().run(),
|
|
4074
4180
|
is_active: editor.isActive("superscript"),
|
|
4075
|
-
tooltip:
|
|
4181
|
+
tooltip: t5("rte.superscript"),
|
|
4076
4182
|
children: /* @__PURE__ */ jsx(LuSuperscript, { className: "h-4 w-4" })
|
|
4077
4183
|
},
|
|
4078
4184
|
"super"
|
|
@@ -4086,7 +4192,7 @@ var Toolbar = ({
|
|
|
4086
4192
|
if (tb.link) {
|
|
4087
4193
|
items.push(
|
|
4088
4194
|
/* @__PURE__ */ jsxs(Popover, { open: link_popover_open, onOpenChange: set_link_popover_open, children: [
|
|
4089
|
-
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx(ToolbarButton, { is_active: editor.isActive("link"), tooltip:
|
|
4195
|
+
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx(ToolbarButton, { is_active: editor.isActive("link"), tooltip: t5("rte.link"), children: /* @__PURE__ */ jsx(LuLink, { className: "h-4 w-4" }) }) }),
|
|
4090
4196
|
/* @__PURE__ */ jsx(PopoverContent, { className: "w-80 p-3", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
4091
4197
|
/* @__PURE__ */ jsx(
|
|
4092
4198
|
Input,
|
|
@@ -4098,17 +4204,14 @@ var Toolbar = ({
|
|
|
4098
4204
|
}
|
|
4099
4205
|
),
|
|
4100
4206
|
/* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
|
|
4101
|
-
/* @__PURE__ */
|
|
4102
|
-
editor.isActive("link") ? "Update" : "Add",
|
|
4103
|
-
" Link"
|
|
4104
|
-
] }),
|
|
4207
|
+
/* @__PURE__ */ jsx(Button, { size: "sm", onClick: handle_set_link, className: "flex-1", children: editor.isActive("link") ? t5("rte.update_link") : t5("rte.add_link") }),
|
|
4105
4208
|
editor.isActive("link") && /* @__PURE__ */ jsx(
|
|
4106
4209
|
Button,
|
|
4107
4210
|
{
|
|
4108
4211
|
size: "sm",
|
|
4109
4212
|
variant: "destructive",
|
|
4110
4213
|
onClick: handle_remove_link,
|
|
4111
|
-
children: "
|
|
4214
|
+
children: t5("rte.remove_link")
|
|
4112
4215
|
}
|
|
4113
4216
|
)
|
|
4114
4217
|
] })
|
|
@@ -4122,7 +4225,7 @@ var Toolbar = ({
|
|
|
4122
4225
|
ToolbarButton,
|
|
4123
4226
|
{
|
|
4124
4227
|
onClick: () => editor.chain().focus().unsetAllMarks().clearNodes().run(),
|
|
4125
|
-
tooltip:
|
|
4228
|
+
tooltip: t5("rte.clear_formatting"),
|
|
4126
4229
|
children: /* @__PURE__ */ jsx(LuRemoveFormatting, { className: "h-4 w-4" })
|
|
4127
4230
|
},
|
|
4128
4231
|
"clear"
|
|
@@ -4136,7 +4239,7 @@ var Toolbar = ({
|
|
|
4136
4239
|
if (tb.text_color) {
|
|
4137
4240
|
items.push(
|
|
4138
4241
|
/* @__PURE__ */ jsxs(Popover, { open: text_color_open, onOpenChange: set_text_color_open, children: [
|
|
4139
|
-
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx(ToolbarButton, { tooltip:
|
|
4242
|
+
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx(ToolbarButton, { tooltip: t5("rte.text_color"), children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center", children: [
|
|
4140
4243
|
/* @__PURE__ */ jsx(LuPalette, { className: "h-4 w-4" }),
|
|
4141
4244
|
/* @__PURE__ */ jsx(
|
|
4142
4245
|
"div",
|
|
@@ -4179,7 +4282,7 @@ var Toolbar = ({
|
|
|
4179
4282
|
if (tb.highlight_color) {
|
|
4180
4283
|
items.push(
|
|
4181
4284
|
/* @__PURE__ */ jsxs(Popover, { open: highlight_color_open, onOpenChange: set_highlight_color_open, children: [
|
|
4182
|
-
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx(ToolbarButton, { tooltip:
|
|
4285
|
+
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx(ToolbarButton, { tooltip: t5("rte.highlight_color"), children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center", children: [
|
|
4183
4286
|
/* @__PURE__ */ jsx(LuHighlighter, { className: "h-4 w-4" }),
|
|
4184
4287
|
/* @__PURE__ */ jsx(
|
|
4185
4288
|
"div",
|
|
@@ -4222,7 +4325,7 @@ var Toolbar = ({
|
|
|
4222
4325
|
{
|
|
4223
4326
|
onClick: () => editor.chain().focus().setTextAlign("left").run(),
|
|
4224
4327
|
is_active: editor.isActive({ textAlign: "left" }),
|
|
4225
|
-
tooltip:
|
|
4328
|
+
tooltip: t5("rte.align_left"),
|
|
4226
4329
|
children: /* @__PURE__ */ jsx(LuAlignLeft, { className: "h-4 w-4" })
|
|
4227
4330
|
},
|
|
4228
4331
|
"align-left"
|
|
@@ -4232,7 +4335,7 @@ var Toolbar = ({
|
|
|
4232
4335
|
{
|
|
4233
4336
|
onClick: () => editor.chain().focus().setTextAlign("center").run(),
|
|
4234
4337
|
is_active: editor.isActive({ textAlign: "center" }),
|
|
4235
|
-
tooltip:
|
|
4338
|
+
tooltip: t5("rte.align_center"),
|
|
4236
4339
|
children: /* @__PURE__ */ jsx(LuAlignCenter, { className: "h-4 w-4" })
|
|
4237
4340
|
},
|
|
4238
4341
|
"align-center"
|
|
@@ -4242,7 +4345,7 @@ var Toolbar = ({
|
|
|
4242
4345
|
{
|
|
4243
4346
|
onClick: () => editor.chain().focus().setTextAlign("right").run(),
|
|
4244
4347
|
is_active: editor.isActive({ textAlign: "right" }),
|
|
4245
|
-
tooltip:
|
|
4348
|
+
tooltip: t5("rte.align_right"),
|
|
4246
4349
|
children: /* @__PURE__ */ jsx(LuAlignRight, { className: "h-4 w-4" })
|
|
4247
4350
|
},
|
|
4248
4351
|
"align-right"
|
|
@@ -4252,7 +4355,7 @@ var Toolbar = ({
|
|
|
4252
4355
|
{
|
|
4253
4356
|
onClick: () => editor.chain().focus().setTextAlign("justify").run(),
|
|
4254
4357
|
is_active: editor.isActive({ textAlign: "justify" }),
|
|
4255
|
-
tooltip:
|
|
4358
|
+
tooltip: t5("rte.justify"),
|
|
4256
4359
|
children: /* @__PURE__ */ jsx(LuAlignJustify, { className: "h-4 w-4" })
|
|
4257
4360
|
},
|
|
4258
4361
|
"align-justify"
|
|
@@ -4268,7 +4371,7 @@ var Toolbar = ({
|
|
|
4268
4371
|
{
|
|
4269
4372
|
onClick: () => editor.chain().focus().toggleBulletList().run(),
|
|
4270
4373
|
is_active: editor.isActive("bulletList"),
|
|
4271
|
-
tooltip:
|
|
4374
|
+
tooltip: t5("rte.bullet_list"),
|
|
4272
4375
|
children: /* @__PURE__ */ jsx(LuList, { className: "h-4 w-4" })
|
|
4273
4376
|
},
|
|
4274
4377
|
"bullet"
|
|
@@ -4282,7 +4385,7 @@ var Toolbar = ({
|
|
|
4282
4385
|
{
|
|
4283
4386
|
onClick: () => editor.chain().focus().toggleOrderedList().run(),
|
|
4284
4387
|
is_active: editor.isActive("orderedList"),
|
|
4285
|
-
tooltip:
|
|
4388
|
+
tooltip: t5("rte.ordered_list"),
|
|
4286
4389
|
children: /* @__PURE__ */ jsx(LuListOrdered, { className: "h-4 w-4" })
|
|
4287
4390
|
},
|
|
4288
4391
|
"ordered"
|
|
@@ -4296,7 +4399,7 @@ var Toolbar = ({
|
|
|
4296
4399
|
{
|
|
4297
4400
|
onClick: () => editor.chain().focus().toggleTaskList().run(),
|
|
4298
4401
|
is_active: editor.isActive("taskList"),
|
|
4299
|
-
tooltip:
|
|
4402
|
+
tooltip: t5("rte.checklist"),
|
|
4300
4403
|
children: /* @__PURE__ */ jsx(LuListChecks, { className: "h-4 w-4" })
|
|
4301
4404
|
},
|
|
4302
4405
|
"task"
|
|
@@ -4318,7 +4421,7 @@ var Toolbar = ({
|
|
|
4318
4421
|
}
|
|
4319
4422
|
},
|
|
4320
4423
|
disabled: !editor.can().liftListItem("listItem") && !editor.can().liftListItem("taskItem"),
|
|
4321
|
-
tooltip:
|
|
4424
|
+
tooltip: t5("rte.decrease_indent"),
|
|
4322
4425
|
children: /* @__PURE__ */ jsx(LuIndentDecrease, { className: "h-4 w-4" })
|
|
4323
4426
|
},
|
|
4324
4427
|
"indent-dec"
|
|
@@ -4334,7 +4437,7 @@ var Toolbar = ({
|
|
|
4334
4437
|
}
|
|
4335
4438
|
},
|
|
4336
4439
|
disabled: !editor.can().sinkListItem("listItem") && !editor.can().sinkListItem("taskItem"),
|
|
4337
|
-
tooltip:
|
|
4440
|
+
tooltip: t5("rte.increase_indent"),
|
|
4338
4441
|
children: /* @__PURE__ */ jsx(LuIndentIncrease, { className: "h-4 w-4" })
|
|
4339
4442
|
},
|
|
4340
4443
|
"indent-inc"
|
|
@@ -4345,7 +4448,7 @@ var Toolbar = ({
|
|
|
4345
4448
|
const items = [];
|
|
4346
4449
|
if (tb.horizontal_rule) {
|
|
4347
4450
|
items.push(
|
|
4348
|
-
/* @__PURE__ */ jsx(ToolbarButton, { onClick: handle_hr_insert, tooltip:
|
|
4451
|
+
/* @__PURE__ */ jsx(ToolbarButton, { onClick: handle_hr_insert, tooltip: t5("rte.horizontal_rule"), children: /* @__PURE__ */ jsx(RxDividerHorizontal, { className: "h-4 w-4" }) }, "hr")
|
|
4349
4452
|
);
|
|
4350
4453
|
}
|
|
4351
4454
|
if (tb.image) {
|
|
@@ -4354,7 +4457,7 @@ var Toolbar = ({
|
|
|
4354
4457
|
ToolbarButton,
|
|
4355
4458
|
{
|
|
4356
4459
|
onClick: () => image_input_ref.current?.click(),
|
|
4357
|
-
tooltip:
|
|
4460
|
+
tooltip: t5("rte.insert_image"),
|
|
4358
4461
|
children: /* @__PURE__ */ jsx(LuImage, { className: "h-4 w-4" })
|
|
4359
4462
|
},
|
|
4360
4463
|
"image"
|
|
@@ -4368,14 +4471,14 @@ var Toolbar = ({
|
|
|
4368
4471
|
ToolbarButton,
|
|
4369
4472
|
{
|
|
4370
4473
|
is_active: editor.isActive("table"),
|
|
4371
|
-
tooltip:
|
|
4474
|
+
tooltip: t5("rte.table"),
|
|
4372
4475
|
children: /* @__PURE__ */ jsx(LuTable, { className: "h-4 w-4" })
|
|
4373
4476
|
}
|
|
4374
4477
|
) }),
|
|
4375
4478
|
/* @__PURE__ */ jsx(PopoverContent, { className: "w-auto p-3", align: "start", children: editor.isActive("table") ? (
|
|
4376
4479
|
// Table editing controls when inside a table
|
|
4377
4480
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
4378
|
-
/* @__PURE__ */ jsx("div", { className: "text-xs font-medium mb-1", children: "
|
|
4481
|
+
/* @__PURE__ */ jsx("div", { className: "text-xs font-medium mb-1", children: t5("rte.table_operations") }),
|
|
4379
4482
|
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-1", children: [
|
|
4380
4483
|
/* @__PURE__ */ jsxs(
|
|
4381
4484
|
Button,
|
|
@@ -4386,7 +4489,7 @@ var Toolbar = ({
|
|
|
4386
4489
|
onClick: handle_add_row_before,
|
|
4387
4490
|
children: [
|
|
4388
4491
|
/* @__PURE__ */ jsx(LuTableRowsSplit, { className: "h-3 w-3 mr-1" }),
|
|
4389
|
-
"
|
|
4492
|
+
t5("rte.add_row_above")
|
|
4390
4493
|
]
|
|
4391
4494
|
}
|
|
4392
4495
|
),
|
|
@@ -4399,7 +4502,7 @@ var Toolbar = ({
|
|
|
4399
4502
|
onClick: handle_add_row_after,
|
|
4400
4503
|
children: [
|
|
4401
4504
|
/* @__PURE__ */ jsx(LuTableRowsSplit, { className: "h-3 w-3 mr-1" }),
|
|
4402
|
-
"
|
|
4505
|
+
t5("rte.add_row_below")
|
|
4403
4506
|
]
|
|
4404
4507
|
}
|
|
4405
4508
|
),
|
|
@@ -4412,7 +4515,7 @@ var Toolbar = ({
|
|
|
4412
4515
|
onClick: handle_add_col_before,
|
|
4413
4516
|
children: [
|
|
4414
4517
|
/* @__PURE__ */ jsx(LuTableColumnsSplit, { className: "h-3 w-3 mr-1" }),
|
|
4415
|
-
"
|
|
4518
|
+
t5("rte.add_col_left")
|
|
4416
4519
|
]
|
|
4417
4520
|
}
|
|
4418
4521
|
),
|
|
@@ -4425,7 +4528,7 @@ var Toolbar = ({
|
|
|
4425
4528
|
onClick: handle_add_col_after,
|
|
4426
4529
|
children: [
|
|
4427
4530
|
/* @__PURE__ */ jsx(LuTableColumnsSplit, { className: "h-3 w-3 mr-1" }),
|
|
4428
|
-
"
|
|
4531
|
+
t5("rte.add_col_right")
|
|
4429
4532
|
]
|
|
4430
4533
|
}
|
|
4431
4534
|
),
|
|
@@ -4438,7 +4541,7 @@ var Toolbar = ({
|
|
|
4438
4541
|
onClick: handle_delete_row,
|
|
4439
4542
|
children: [
|
|
4440
4543
|
/* @__PURE__ */ jsx(LuTrash2, { className: "h-3 w-3 mr-1" }),
|
|
4441
|
-
"
|
|
4544
|
+
t5("rte.delete_row")
|
|
4442
4545
|
]
|
|
4443
4546
|
}
|
|
4444
4547
|
),
|
|
@@ -4451,7 +4554,7 @@ var Toolbar = ({
|
|
|
4451
4554
|
onClick: handle_delete_col,
|
|
4452
4555
|
children: [
|
|
4453
4556
|
/* @__PURE__ */ jsx(LuTrash2, { className: "h-3 w-3 mr-1" }),
|
|
4454
|
-
"
|
|
4557
|
+
t5("rte.delete_col")
|
|
4455
4558
|
]
|
|
4456
4559
|
}
|
|
4457
4560
|
)
|
|
@@ -4465,7 +4568,7 @@ var Toolbar = ({
|
|
|
4465
4568
|
onClick: handle_delete_table,
|
|
4466
4569
|
children: [
|
|
4467
4570
|
/* @__PURE__ */ jsx(LuTrash2, { className: "h-3 w-3 mr-1" }),
|
|
4468
|
-
"
|
|
4571
|
+
t5("rte.delete_table")
|
|
4469
4572
|
]
|
|
4470
4573
|
}
|
|
4471
4574
|
)
|
|
@@ -4473,7 +4576,7 @@ var Toolbar = ({
|
|
|
4473
4576
|
) : (
|
|
4474
4577
|
// Table size picker when not in a table
|
|
4475
4578
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
4476
|
-
/* @__PURE__ */ jsx("div", { className: "text-xs font-medium mb-1", children: "
|
|
4579
|
+
/* @__PURE__ */ jsx("div", { className: "text-xs font-medium mb-1", children: t5("rte.insert_table_heading") }),
|
|
4477
4580
|
/* @__PURE__ */ jsx("div", { className: "grid gap-0.5", children: Array.from({ length: 6 }).map((_, row_idx) => /* @__PURE__ */ jsx("div", { className: "flex gap-0.5", children: Array.from({ length: 6 }).map((_2, col_idx) => /* @__PURE__ */ jsx(
|
|
4478
4581
|
"div",
|
|
4479
4582
|
{
|
|
@@ -4487,9 +4590,9 @@ var Toolbar = ({
|
|
|
4487
4590
|
},
|
|
4488
4591
|
col_idx
|
|
4489
4592
|
)) }, row_idx)) }),
|
|
4490
|
-
/* @__PURE__ */ jsx("div", { className: "text-xs text-center text-muted-foreground", children: hovered_cell ? `${hovered_cell.col} x ${hovered_cell.row}` : "
|
|
4593
|
+
/* @__PURE__ */ jsx("div", { className: "text-xs text-center text-muted-foreground", children: hovered_cell ? `${hovered_cell.col} x ${hovered_cell.row}` : t5("rte.select_size") }),
|
|
4491
4594
|
/* @__PURE__ */ jsxs("div", { className: "border-t pt-2 mt-1", children: [
|
|
4492
|
-
/* @__PURE__ */ jsx("div", { className: "text-xs text-muted-foreground mb-2", children: "
|
|
4595
|
+
/* @__PURE__ */ jsx("div", { className: "text-xs text-muted-foreground mb-2", children: t5("rte.custom_size") }),
|
|
4493
4596
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
4494
4597
|
/* @__PURE__ */ jsx(
|
|
4495
4598
|
Input,
|
|
@@ -4522,7 +4625,7 @@ var Toolbar = ({
|
|
|
4522
4625
|
onClick: () => handle_table_insert(table_rows, table_cols),
|
|
4523
4626
|
children: [
|
|
4524
4627
|
/* @__PURE__ */ jsx(LuGrid3X3, { className: "h-3 w-3 mr-1" }),
|
|
4525
|
-
"
|
|
4628
|
+
t5("rte.insert_table")
|
|
4526
4629
|
]
|
|
4527
4630
|
}
|
|
4528
4631
|
)
|
|
@@ -4540,11 +4643,11 @@ var Toolbar = ({
|
|
|
4540
4643
|
if (tb.variables && variables.length > 0) {
|
|
4541
4644
|
items.push(
|
|
4542
4645
|
/* @__PURE__ */ jsxs(Popover, { open: variables_menu_open, onOpenChange: set_variables_menu_open, children: [
|
|
4543
|
-
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx(ToolbarButton, { tooltip:
|
|
4646
|
+
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx(ToolbarButton, { tooltip: t5("rte.insert_variable"), children: /* @__PURE__ */ jsx(LuVariable, { className: "h-4 w-4" }) }) }),
|
|
4544
4647
|
/* @__PURE__ */ jsx(PopoverContent, { className: "w-64 p-0", align: "start", children: /* @__PURE__ */ jsxs(Command, { children: [
|
|
4545
|
-
/* @__PURE__ */ jsx(CommandInput, { placeholder: "
|
|
4648
|
+
/* @__PURE__ */ jsx(CommandInput, { placeholder: t5("rte.search_variables"), className: "h-8 text-xs" }),
|
|
4546
4649
|
/* @__PURE__ */ jsxs(CommandList, { children: [
|
|
4547
|
-
/* @__PURE__ */ jsx(CommandEmpty, { children: "
|
|
4650
|
+
/* @__PURE__ */ jsx(CommandEmpty, { children: t5("rte.no_variables") }),
|
|
4548
4651
|
/* @__PURE__ */ jsx(CommandGroup, { children: variables.map((variable) => /* @__PURE__ */ jsx(
|
|
4549
4652
|
CommandItem,
|
|
4550
4653
|
{
|
|
@@ -4569,7 +4672,7 @@ var Toolbar = ({
|
|
|
4569
4672
|
ToolbarButton,
|
|
4570
4673
|
{
|
|
4571
4674
|
onClick: () => file_input_ref.current?.click(),
|
|
4572
|
-
tooltip:
|
|
4675
|
+
tooltip: t5("rte.attach_file"),
|
|
4573
4676
|
children: /* @__PURE__ */ jsx(LuPaperclip, { className: "h-4 w-4" })
|
|
4574
4677
|
},
|
|
4575
4678
|
"attach"
|
|
@@ -4841,6 +4944,7 @@ var VariableExtension = Node.create({
|
|
|
4841
4944
|
};
|
|
4842
4945
|
}
|
|
4843
4946
|
});
|
|
4947
|
+
var t6 = createPackageT("hazo_ui", en_default);
|
|
4844
4948
|
function debounce_fn(func, wait) {
|
|
4845
4949
|
let timeout_id = null;
|
|
4846
4950
|
return (output) => {
|
|
@@ -4857,7 +4961,7 @@ var HazoUiRte = ({
|
|
|
4857
4961
|
attachments: initial_attachments = [],
|
|
4858
4962
|
variables = [],
|
|
4859
4963
|
on_change,
|
|
4860
|
-
placeholder
|
|
4964
|
+
placeholder,
|
|
4861
4965
|
min_height = "200px",
|
|
4862
4966
|
max_height = "400px",
|
|
4863
4967
|
disabled = false,
|
|
@@ -4866,6 +4970,7 @@ var HazoUiRte = ({
|
|
|
4866
4970
|
toolbar,
|
|
4867
4971
|
font_families
|
|
4868
4972
|
}) => {
|
|
4973
|
+
const resolved_placeholder = placeholder ?? t6("rte.placeholder");
|
|
4869
4974
|
const [attachments, set_attachments] = React27.useState(
|
|
4870
4975
|
initial_attachments
|
|
4871
4976
|
);
|
|
@@ -4915,7 +5020,7 @@ var HazoUiRte = ({
|
|
|
4915
5020
|
}
|
|
4916
5021
|
}),
|
|
4917
5022
|
Placeholder.configure({
|
|
4918
|
-
placeholder
|
|
5023
|
+
placeholder: resolved_placeholder
|
|
4919
5024
|
}),
|
|
4920
5025
|
HorizontalRule,
|
|
4921
5026
|
Table.configure({
|
|
@@ -5090,7 +5195,7 @@ var HazoUiRte = ({
|
|
|
5090
5195
|
);
|
|
5091
5196
|
};
|
|
5092
5197
|
HazoUiRte.displayName = "HazoUiRte";
|
|
5093
|
-
var
|
|
5198
|
+
var t7 = createPackageT("hazo_ui", en_default);
|
|
5094
5199
|
function CanvasTextToolbar({
|
|
5095
5200
|
bold,
|
|
5096
5201
|
italic,
|
|
@@ -5121,14 +5226,14 @@ function CanvasTextToolbar({
|
|
|
5121
5226
|
),
|
|
5122
5227
|
style,
|
|
5123
5228
|
children: [
|
|
5124
|
-
/* @__PURE__ */ jsx(ToolbarButton, { is_active: bold, onClick: onBold, tooltip:
|
|
5125
|
-
/* @__PURE__ */ jsx(ToolbarButton, { is_active: italic, onClick: onItalic, tooltip:
|
|
5229
|
+
/* @__PURE__ */ jsx(ToolbarButton, { is_active: bold, onClick: onBold, tooltip: t7("canvas_toolbar.bold"), children: /* @__PURE__ */ jsx(LuBold, { className: "h-4 w-4" }) }),
|
|
5230
|
+
/* @__PURE__ */ jsx(ToolbarButton, { is_active: italic, onClick: onItalic, tooltip: t7("canvas_toolbar.italic"), children: /* @__PURE__ */ jsx(LuItalic, { className: "h-4 w-4" }) }),
|
|
5126
5231
|
/* @__PURE__ */ jsx(
|
|
5127
5232
|
ToolbarButton,
|
|
5128
5233
|
{
|
|
5129
5234
|
is_active: underline,
|
|
5130
5235
|
onClick: onUnderline,
|
|
5131
|
-
tooltip:
|
|
5236
|
+
tooltip: t7("canvas_toolbar.underline"),
|
|
5132
5237
|
children: /* @__PURE__ */ jsx(LuUnderline, { className: "h-4 w-4" })
|
|
5133
5238
|
}
|
|
5134
5239
|
),
|
|
@@ -5138,7 +5243,7 @@ function CanvasTextToolbar({
|
|
|
5138
5243
|
{
|
|
5139
5244
|
is_active: align === "left",
|
|
5140
5245
|
onClick: () => onAlign?.("left"),
|
|
5141
|
-
tooltip:
|
|
5246
|
+
tooltip: t7("canvas_toolbar.align_left"),
|
|
5142
5247
|
children: /* @__PURE__ */ jsx(LuAlignLeft, { className: "h-4 w-4" })
|
|
5143
5248
|
}
|
|
5144
5249
|
),
|
|
@@ -5147,7 +5252,7 @@ function CanvasTextToolbar({
|
|
|
5147
5252
|
{
|
|
5148
5253
|
is_active: align === "center",
|
|
5149
5254
|
onClick: () => onAlign?.("center"),
|
|
5150
|
-
tooltip:
|
|
5255
|
+
tooltip: t7("canvas_toolbar.align_center"),
|
|
5151
5256
|
children: /* @__PURE__ */ jsx(LuAlignCenter, { className: "h-4 w-4" })
|
|
5152
5257
|
}
|
|
5153
5258
|
),
|
|
@@ -5156,7 +5261,7 @@ function CanvasTextToolbar({
|
|
|
5156
5261
|
{
|
|
5157
5262
|
is_active: align === "right",
|
|
5158
5263
|
onClick: () => onAlign?.("right"),
|
|
5159
|
-
tooltip:
|
|
5264
|
+
tooltip: t7("canvas_toolbar.align_right"),
|
|
5160
5265
|
children: /* @__PURE__ */ jsx(LuAlignRight, { className: "h-4 w-4" })
|
|
5161
5266
|
}
|
|
5162
5267
|
),
|
|
@@ -5165,7 +5270,7 @@ function CanvasTextToolbar({
|
|
|
5165
5270
|
"label",
|
|
5166
5271
|
{
|
|
5167
5272
|
className: "relative flex h-8 w-8 cursor-pointer items-center justify-center rounded-md hover:bg-accent",
|
|
5168
|
-
title:
|
|
5273
|
+
title: t7("canvas_toolbar.text_color"),
|
|
5169
5274
|
children: [
|
|
5170
5275
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center", children: [
|
|
5171
5276
|
/* @__PURE__ */ jsx("span", { className: "text-xs font-bold text-muted-foreground", children: "A" }),
|
|
@@ -5195,7 +5300,7 @@ function CanvasTextToolbar({
|
|
|
5195
5300
|
{
|
|
5196
5301
|
is_active: verticalAlign === "top",
|
|
5197
5302
|
onClick: () => onVerticalAlign?.("top"),
|
|
5198
|
-
tooltip:
|
|
5303
|
+
tooltip: t7("canvas_toolbar.align_top"),
|
|
5199
5304
|
children: /* @__PURE__ */ jsx(LuAlignVerticalJustifyStart, { className: "h-4 w-4" })
|
|
5200
5305
|
}
|
|
5201
5306
|
),
|
|
@@ -5204,7 +5309,7 @@ function CanvasTextToolbar({
|
|
|
5204
5309
|
{
|
|
5205
5310
|
is_active: verticalAlign === "middle",
|
|
5206
5311
|
onClick: () => onVerticalAlign?.("middle"),
|
|
5207
|
-
tooltip:
|
|
5312
|
+
tooltip: t7("canvas_toolbar.align_middle"),
|
|
5208
5313
|
children: /* @__PURE__ */ jsx(LuAlignVerticalJustifyCenter, { className: "h-4 w-4" })
|
|
5209
5314
|
}
|
|
5210
5315
|
),
|
|
@@ -5213,7 +5318,7 @@ function CanvasTextToolbar({
|
|
|
5213
5318
|
{
|
|
5214
5319
|
is_active: verticalAlign === "bottom",
|
|
5215
5320
|
onClick: () => onVerticalAlign?.("bottom"),
|
|
5216
|
-
tooltip:
|
|
5321
|
+
tooltip: t7("canvas_toolbar.align_bottom"),
|
|
5217
5322
|
children: /* @__PURE__ */ jsx(LuAlignVerticalJustifyEnd, { className: "h-4 w-4" })
|
|
5218
5323
|
}
|
|
5219
5324
|
),
|
|
@@ -5224,7 +5329,7 @@ function CanvasTextToolbar({
|
|
|
5224
5329
|
value: font,
|
|
5225
5330
|
onChange: (e) => onFont?.(e.target.value),
|
|
5226
5331
|
className: "h-8 text-xs rounded-md border border-border bg-background px-1 text-foreground focus:outline-none",
|
|
5227
|
-
title:
|
|
5332
|
+
title: t7("canvas_toolbar.font_family"),
|
|
5228
5333
|
children: [
|
|
5229
5334
|
/* @__PURE__ */ jsx("option", { value: "sans-serif", children: "Sans" }),
|
|
5230
5335
|
/* @__PURE__ */ jsx("option", { value: "serif", children: "Serif" }),
|
|
@@ -5236,18 +5341,19 @@ function CanvasTextToolbar({
|
|
|
5236
5341
|
}
|
|
5237
5342
|
),
|
|
5238
5343
|
/* @__PURE__ */ jsx("div", { className: "mx-1 h-6 w-px bg-border" }),
|
|
5239
|
-
/* @__PURE__ */ jsx(ToolbarButton, { is_active: bullet, onClick: onBullet, tooltip:
|
|
5344
|
+
/* @__PURE__ */ jsx(ToolbarButton, { is_active: bullet, onClick: onBullet, tooltip: t7("canvas_toolbar.bullet_list"), children: /* @__PURE__ */ jsx(LuList, { className: "h-4 w-4" }) })
|
|
5240
5345
|
]
|
|
5241
5346
|
}
|
|
5242
5347
|
) });
|
|
5243
5348
|
}
|
|
5349
|
+
var t8 = createPackageT("hazo_ui", en_default);
|
|
5244
5350
|
var MdEditorLazy = lazy(() => import('@uiw/react-md-editor'));
|
|
5245
5351
|
var EDITOR_TEXTAREA_SELECTOR = ".w-md-editor-text-input";
|
|
5246
5352
|
function MarkdownEditor({
|
|
5247
5353
|
value,
|
|
5248
5354
|
onChange,
|
|
5249
5355
|
height = 600,
|
|
5250
|
-
placeholder
|
|
5356
|
+
placeholder,
|
|
5251
5357
|
className,
|
|
5252
5358
|
colorMode = "light",
|
|
5253
5359
|
preview = "edit",
|
|
@@ -5330,13 +5436,13 @@ function MarkdownEditor({
|
|
|
5330
5436
|
try {
|
|
5331
5437
|
const url = await onImageUpload(file);
|
|
5332
5438
|
if (!url) {
|
|
5333
|
-
setError("
|
|
5439
|
+
setError(t8("markdown.upload_failed"));
|
|
5334
5440
|
onChange(before + after);
|
|
5335
5441
|
return;
|
|
5336
5442
|
}
|
|
5337
5443
|
onChange(before + `` + after);
|
|
5338
5444
|
} catch {
|
|
5339
|
-
setError("
|
|
5445
|
+
setError(t8("markdown.upload_failed"));
|
|
5340
5446
|
onChange(before + after);
|
|
5341
5447
|
} finally {
|
|
5342
5448
|
setUploading(false);
|
|
@@ -5360,7 +5466,7 @@ function MarkdownEditor({
|
|
|
5360
5466
|
{
|
|
5361
5467
|
className: "flex items-center justify-center rounded-md border border-border bg-muted/30 text-sm text-muted-foreground",
|
|
5362
5468
|
style: { height },
|
|
5363
|
-
children: "
|
|
5469
|
+
children: t8("markdown.loading_editor")
|
|
5364
5470
|
}
|
|
5365
5471
|
),
|
|
5366
5472
|
children: /* @__PURE__ */ jsx(
|
|
@@ -5372,7 +5478,7 @@ function MarkdownEditor({
|
|
|
5372
5478
|
preview: effectivePreview,
|
|
5373
5479
|
visibleDragbar: false,
|
|
5374
5480
|
commands: editorCommands,
|
|
5375
|
-
textareaProps: { placeholder, onPaste: handlePaste }
|
|
5481
|
+
textareaProps: { placeholder: placeholder ?? t8("markdown.placeholder"), onPaste: handlePaste }
|
|
5376
5482
|
}
|
|
5377
5483
|
)
|
|
5378
5484
|
}
|
|
@@ -5381,7 +5487,7 @@ function MarkdownEditor({
|
|
|
5381
5487
|
{
|
|
5382
5488
|
className: "flex items-center justify-center rounded-md border border-border bg-muted/30 text-sm text-muted-foreground",
|
|
5383
5489
|
style: { height },
|
|
5384
|
-
children: "
|
|
5490
|
+
children: t8("markdown.loading_editor")
|
|
5385
5491
|
}
|
|
5386
5492
|
) }),
|
|
5387
5493
|
useCustomPreview && showPreview && /* @__PURE__ */ jsx(
|
|
@@ -5395,7 +5501,7 @@ function MarkdownEditor({
|
|
|
5395
5501
|
]
|
|
5396
5502
|
}
|
|
5397
5503
|
),
|
|
5398
|
-
uploading && /* @__PURE__ */ jsx("p", { className: "mt-2 text-xs text-muted-foreground", children: "
|
|
5504
|
+
uploading && /* @__PURE__ */ jsx("p", { className: "mt-2 text-xs text-muted-foreground", children: t8("markdown.uploading_image") }),
|
|
5399
5505
|
error && /* @__PURE__ */ jsx("p", { className: "mt-2 text-xs text-destructive", children: error })
|
|
5400
5506
|
] });
|
|
5401
5507
|
}
|
|
@@ -6094,6 +6200,7 @@ var Text = Node.create({
|
|
|
6094
6200
|
renderMarkdown: (node) => node.text || ""
|
|
6095
6201
|
});
|
|
6096
6202
|
var index_default3 = Text;
|
|
6203
|
+
var t9 = createPackageT("hazo_ui", en_default);
|
|
6097
6204
|
var SingleLineDocument = index_default.extend({
|
|
6098
6205
|
content: "paragraph"
|
|
6099
6206
|
});
|
|
@@ -6131,7 +6238,7 @@ var HazoUiTextbox = ({
|
|
|
6131
6238
|
value,
|
|
6132
6239
|
default_value,
|
|
6133
6240
|
prefixes,
|
|
6134
|
-
placeholder
|
|
6241
|
+
placeholder,
|
|
6135
6242
|
disabled = false,
|
|
6136
6243
|
className,
|
|
6137
6244
|
pill_variant = "default",
|
|
@@ -6142,6 +6249,7 @@ var HazoUiTextbox = ({
|
|
|
6142
6249
|
on_command_change,
|
|
6143
6250
|
on_command_remove
|
|
6144
6251
|
}) => {
|
|
6252
|
+
const resolved_placeholder = placeholder ?? t9("textbox.placeholder");
|
|
6145
6253
|
const generated_instance_id = React27.useId();
|
|
6146
6254
|
const instance_id = provided_instance_id || generated_instance_id;
|
|
6147
6255
|
const [suggestion_state, set_suggestion_state] = React27.useState(null);
|
|
@@ -6174,7 +6282,7 @@ var HazoUiTextbox = ({
|
|
|
6174
6282
|
index_default2,
|
|
6175
6283
|
index_default3,
|
|
6176
6284
|
Placeholder.configure({
|
|
6177
|
-
placeholder
|
|
6285
|
+
placeholder: resolved_placeholder
|
|
6178
6286
|
}),
|
|
6179
6287
|
CommandNodeExtension.configure({}),
|
|
6180
6288
|
...suggestion_extensions
|
|
@@ -6553,7 +6661,7 @@ var HazoUiTextbox = ({
|
|
|
6553
6661
|
edit_selected_index === edit_commands.length && "bg-destructive/10"
|
|
6554
6662
|
),
|
|
6555
6663
|
onClick: handle_command_remove,
|
|
6556
|
-
children: /* @__PURE__ */ jsx("span", { children: "
|
|
6664
|
+
children: /* @__PURE__ */ jsx("span", { children: t9("common.remove") })
|
|
6557
6665
|
}
|
|
6558
6666
|
)
|
|
6559
6667
|
] })
|
|
@@ -6631,6 +6739,7 @@ var HardBreak = Node.create({
|
|
|
6631
6739
|
}
|
|
6632
6740
|
});
|
|
6633
6741
|
var index_default4 = HardBreak;
|
|
6742
|
+
var t10 = createPackageT("hazo_ui", en_default);
|
|
6634
6743
|
var get_editor_output2 = (editor) => {
|
|
6635
6744
|
if (!editor) {
|
|
6636
6745
|
return { plain_text: "", display_text: "", commands: [] };
|
|
@@ -6685,7 +6794,7 @@ var HazoUiTextarea = ({
|
|
|
6685
6794
|
value,
|
|
6686
6795
|
default_value,
|
|
6687
6796
|
prefixes,
|
|
6688
|
-
placeholder
|
|
6797
|
+
placeholder,
|
|
6689
6798
|
disabled = false,
|
|
6690
6799
|
className,
|
|
6691
6800
|
pill_variant = "default",
|
|
@@ -6699,6 +6808,7 @@ var HazoUiTextarea = ({
|
|
|
6699
6808
|
on_command_change,
|
|
6700
6809
|
on_command_remove
|
|
6701
6810
|
}) => {
|
|
6811
|
+
const resolved_placeholder = placeholder ?? t10("textarea.placeholder");
|
|
6702
6812
|
const generated_instance_id = React27.useId();
|
|
6703
6813
|
const instance_id = provided_instance_id || generated_instance_id;
|
|
6704
6814
|
const [suggestion_state, set_suggestion_state] = React27.useState(null);
|
|
@@ -6733,7 +6843,7 @@ var HazoUiTextarea = ({
|
|
|
6733
6843
|
index_default3,
|
|
6734
6844
|
index_default4,
|
|
6735
6845
|
Placeholder.configure({
|
|
6736
|
-
placeholder
|
|
6846
|
+
placeholder: resolved_placeholder
|
|
6737
6847
|
}),
|
|
6738
6848
|
CommandNodeExtension.configure({}),
|
|
6739
6849
|
...suggestion_extensions
|
|
@@ -7123,7 +7233,7 @@ var HazoUiTextarea = ({
|
|
|
7123
7233
|
backgroundColor: edit_selected_index === edit_commands.length ? "rgba(239, 68, 68, 0.1)" : "inherit"
|
|
7124
7234
|
},
|
|
7125
7235
|
onClick: handle_command_remove,
|
|
7126
|
-
children: /* @__PURE__ */ jsx("span", { children: "
|
|
7236
|
+
children: /* @__PURE__ */ jsx("span", { children: t10("common.remove") })
|
|
7127
7237
|
}
|
|
7128
7238
|
)
|
|
7129
7239
|
] })
|
|
@@ -7183,6 +7293,7 @@ function resolve_animation_classes(open_anim = "zoom", close_anim = "zoom") {
|
|
|
7183
7293
|
const close_classes = close_anim in ANIMATION_PRESETS ? ANIMATION_PRESETS[close_anim].close : close_anim;
|
|
7184
7294
|
return `${open_classes} ${close_classes}`;
|
|
7185
7295
|
}
|
|
7296
|
+
var t11 = createPackageT("hazo_ui", en_default);
|
|
7186
7297
|
var VARIANT_PRESETS = {
|
|
7187
7298
|
info: {
|
|
7188
7299
|
header_background_color: "var(--dialog-info-bg)",
|
|
@@ -7232,11 +7343,11 @@ function HazoUiDialog({
|
|
|
7232
7343
|
children,
|
|
7233
7344
|
onConfirm,
|
|
7234
7345
|
onCancel,
|
|
7235
|
-
title
|
|
7346
|
+
title,
|
|
7236
7347
|
description,
|
|
7237
7348
|
actionButtonText: actionButtonTextProp,
|
|
7238
7349
|
actionButtonVariant,
|
|
7239
|
-
cancelButtonText
|
|
7350
|
+
cancelButtonText,
|
|
7240
7351
|
showCancelButton: showCancelButtonProp,
|
|
7241
7352
|
showActionButton = true,
|
|
7242
7353
|
closeOnConfirm: closeOnConfirmProp,
|
|
@@ -7276,9 +7387,11 @@ function HazoUiDialog({
|
|
|
7276
7387
|
const cancel_ref = React27.useRef(null);
|
|
7277
7388
|
const variant_preset = variant !== "default" ? VARIANT_PRESETS[variant] : is_status_kind || is_confirm_kind ? NEUTRAL_VARIANT_PRESET : void 0;
|
|
7278
7389
|
const resolved_action_button_variant = actionButtonVariant ?? variant_preset?.action_button_variant ?? "default";
|
|
7390
|
+
const resolved_title = title ?? t11("dialog.default_title");
|
|
7391
|
+
const resolved_cancel_text = cancelButtonText ?? t11("dialog.cancel");
|
|
7279
7392
|
const showCancelButton = showCancelButtonProp ?? (is_status_kind ? false : true);
|
|
7280
7393
|
const closeOnConfirm = closeOnConfirmProp ?? (is_status_kind || is_confirm_kind ? true : false);
|
|
7281
|
-
const actionButtonText = actionButtonTextProp ?? (is_status_kind ? "
|
|
7394
|
+
const actionButtonText = actionButtonTextProp ?? (is_status_kind ? t11("dialog.ok") : is_confirm_kind ? showCancelButton ? t11("dialog.confirm") : t11("dialog.ok") : t11("dialog.confirm"));
|
|
7282
7395
|
const actionButtonLoading = actionButtonLoadingProp ?? (is_confirm_kind ? internal_confirm_loading : false);
|
|
7283
7396
|
const handleConfirm = () => {
|
|
7284
7397
|
if (is_confirm_kind) {
|
|
@@ -7413,7 +7526,7 @@ function HazoUiDialog({
|
|
|
7413
7526
|
},
|
|
7414
7527
|
children: [
|
|
7415
7528
|
/* @__PURE__ */ jsxs("div", { className: "cls_confirm_dialog_body px-6 pt-7 pb-5", children: [
|
|
7416
|
-
/* @__PURE__ */ jsx(DialogPrimitive.Title, { className: "cls_confirm_dialog_title text-[17px] font-semibold text-foreground mb-2.5", children:
|
|
7529
|
+
/* @__PURE__ */ jsx(DialogPrimitive.Title, { className: "cls_confirm_dialog_title text-[17px] font-semibold text-foreground mb-2.5", children: resolved_title }),
|
|
7417
7530
|
children ? /* @__PURE__ */ jsx(DialogPrimitive.Description, { asChild: true, children: /* @__PURE__ */ jsx("div", { className: "cls_confirm_dialog_children text-sm text-muted-foreground leading-relaxed", children }) }) : description ? /* @__PURE__ */ jsx(DialogPrimitive.Description, { className: "cls_confirm_dialog_description text-sm text-muted-foreground leading-relaxed", children: description }) : null
|
|
7418
7531
|
] }),
|
|
7419
7532
|
/* @__PURE__ */ jsx("div", { className: "cls_confirm_dialog_separator border-t border-border" }),
|
|
@@ -7428,7 +7541,7 @@ function HazoUiDialog({
|
|
|
7428
7541
|
onClick: handleCancel,
|
|
7429
7542
|
disabled: actionButtonLoading,
|
|
7430
7543
|
style: cancelButtonStyles,
|
|
7431
|
-
children:
|
|
7544
|
+
children: resolved_cancel_text
|
|
7432
7545
|
}
|
|
7433
7546
|
),
|
|
7434
7547
|
showActionButton && /* @__PURE__ */ jsxs(
|
|
@@ -7494,7 +7607,7 @@ function HazoUiDialog({
|
|
|
7494
7607
|
...finalHeaderBackgroundColor && { backgroundColor: finalHeaderBackgroundColor },
|
|
7495
7608
|
...finalHeaderTextColor && { color: finalHeaderTextColor }
|
|
7496
7609
|
},
|
|
7497
|
-
children: /* @__PURE__ */ jsx(DialogTitle, { className: titleClassName, children:
|
|
7610
|
+
children: /* @__PURE__ */ jsx(DialogTitle, { className: titleClassName, children: resolved_title })
|
|
7498
7611
|
}
|
|
7499
7612
|
),
|
|
7500
7613
|
/* @__PURE__ */ jsx(
|
|
@@ -7525,7 +7638,7 @@ function HazoUiDialog({
|
|
|
7525
7638
|
),
|
|
7526
7639
|
style: headerStyles,
|
|
7527
7640
|
children: [
|
|
7528
|
-
/* @__PURE__ */ jsx(DialogTitle, { className: titleClassName, children:
|
|
7641
|
+
/* @__PURE__ */ jsx(DialogTitle, { className: titleClassName, children: resolved_title }),
|
|
7529
7642
|
description && /* @__PURE__ */ jsx(
|
|
7530
7643
|
DialogDescription,
|
|
7531
7644
|
{
|
|
@@ -7576,7 +7689,7 @@ function HazoUiDialog({
|
|
|
7576
7689
|
variant: "outline",
|
|
7577
7690
|
onClick: handleCancel,
|
|
7578
7691
|
style: cancelButtonStyles,
|
|
7579
|
-
children:
|
|
7692
|
+
children: resolved_cancel_text
|
|
7580
7693
|
}
|
|
7581
7694
|
),
|
|
7582
7695
|
showActionButton && /* @__PURE__ */ jsxs(
|
|
@@ -7605,7 +7718,7 @@ function HazoUiDialog({
|
|
|
7605
7718
|
style: headerBar ? { color: "var(--dialog-header-bar-fg)" } : finalHeaderTextColor ? { color: finalHeaderTextColor } : void 0,
|
|
7606
7719
|
children: [
|
|
7607
7720
|
/* @__PURE__ */ jsx(X, { className: "h-4 w-4" }),
|
|
7608
|
-
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "
|
|
7721
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: t11("dialog.close") })
|
|
7609
7722
|
]
|
|
7610
7723
|
}
|
|
7611
7724
|
)
|
|
@@ -7614,7 +7727,7 @@ function HazoUiDialog({
|
|
|
7614
7727
|
)
|
|
7615
7728
|
] }) });
|
|
7616
7729
|
}
|
|
7617
|
-
var
|
|
7730
|
+
var t12 = createPackageT("hazo_ui", en_default);
|
|
7618
7731
|
function HazoUiConfirmDialog({
|
|
7619
7732
|
open,
|
|
7620
7733
|
onOpenChange,
|
|
@@ -7623,7 +7736,7 @@ function HazoUiConfirmDialog({
|
|
|
7623
7736
|
children,
|
|
7624
7737
|
variant = "default",
|
|
7625
7738
|
confirmLabel,
|
|
7626
|
-
cancelLabel =
|
|
7739
|
+
cancelLabel = t12("confirm.cancel"),
|
|
7627
7740
|
showCancelButton = true,
|
|
7628
7741
|
onConfirm,
|
|
7629
7742
|
onCancel,
|
|
@@ -7672,6 +7785,7 @@ var Slider = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
|
|
|
7672
7785
|
}
|
|
7673
7786
|
));
|
|
7674
7787
|
Slider.displayName = SliderPrimitive.Root.displayName;
|
|
7788
|
+
var t13 = createPackageT("hazo_ui", en_default);
|
|
7675
7789
|
async function getCroppedImg(imageSrc, areaPixels, outputSize, quality) {
|
|
7676
7790
|
const img = await new Promise((resolve, reject) => {
|
|
7677
7791
|
const image = new Image();
|
|
@@ -7717,7 +7831,7 @@ var HazoUiImageCropper = React27.forwardRef(function HazoUiImageCropper2({
|
|
|
7717
7831
|
onCropped,
|
|
7718
7832
|
outputSize = 512,
|
|
7719
7833
|
quality = 0.9,
|
|
7720
|
-
zoomLabel
|
|
7834
|
+
zoomLabel,
|
|
7721
7835
|
className
|
|
7722
7836
|
}, ref) {
|
|
7723
7837
|
const [crop, set_crop] = React27.useState({
|
|
@@ -7725,6 +7839,7 @@ var HazoUiImageCropper = React27.forwardRef(function HazoUiImageCropper2({
|
|
|
7725
7839
|
y: 0
|
|
7726
7840
|
});
|
|
7727
7841
|
const [zoom, set_zoom] = React27.useState(1);
|
|
7842
|
+
const resolved_zoom_label = zoomLabel ?? t13("cropper.zoom");
|
|
7728
7843
|
const cropped_area_pixels_ref = React27.useRef(null);
|
|
7729
7844
|
const handle_crop_complete = React27.useCallback(
|
|
7730
7845
|
(_croppedArea, croppedAreaPixels) => {
|
|
@@ -7781,7 +7896,7 @@ var HazoUiImageCropper = React27.forwardRef(function HazoUiImageCropper2({
|
|
|
7781
7896
|
{
|
|
7782
7897
|
className: "cls_zoom_label text-sm font-medium text-foreground",
|
|
7783
7898
|
id: "hazo-cropper-zoom-label",
|
|
7784
|
-
children:
|
|
7899
|
+
children: resolved_zoom_label
|
|
7785
7900
|
}
|
|
7786
7901
|
),
|
|
7787
7902
|
/* @__PURE__ */ jsx(
|
|
@@ -7799,19 +7914,24 @@ var HazoUiImageCropper = React27.forwardRef(function HazoUiImageCropper2({
|
|
|
7799
7914
|
] });
|
|
7800
7915
|
});
|
|
7801
7916
|
HazoUiImageCropper.displayName = "HazoUiImageCropper";
|
|
7917
|
+
var t14 = createPackageT("hazo_ui", en_default);
|
|
7802
7918
|
function HazoUiImageCropperDialog({
|
|
7803
7919
|
open,
|
|
7804
7920
|
onOpenChange,
|
|
7805
7921
|
file,
|
|
7806
7922
|
onConfirm,
|
|
7807
7923
|
onCancel,
|
|
7808
|
-
title
|
|
7809
|
-
confirmLabel
|
|
7810
|
-
cancelLabel
|
|
7811
|
-
zoomLabel
|
|
7924
|
+
title,
|
|
7925
|
+
confirmLabel,
|
|
7926
|
+
cancelLabel,
|
|
7927
|
+
zoomLabel,
|
|
7812
7928
|
outputSize = 512,
|
|
7813
7929
|
quality = 0.9
|
|
7814
7930
|
}) {
|
|
7931
|
+
const resolved_title = title ?? t14("cropper.title");
|
|
7932
|
+
const resolved_confirm_label = confirmLabel ?? t14("cropper.save");
|
|
7933
|
+
const resolved_cancel_label = cancelLabel ?? t14("cropper.cancel");
|
|
7934
|
+
const resolved_zoom_label = zoomLabel ?? t14("cropper.zoom");
|
|
7815
7935
|
const cropper_ref = React27.useRef(null);
|
|
7816
7936
|
const [image_src, set_image_src] = React27.useState(null);
|
|
7817
7937
|
const [is_confirming, set_is_confirming] = React27.useState(false);
|
|
@@ -7842,9 +7962,9 @@ function HazoUiImageCropperDialog({
|
|
|
7842
7962
|
{
|
|
7843
7963
|
open,
|
|
7844
7964
|
onOpenChange,
|
|
7845
|
-
title,
|
|
7846
|
-
actionButtonText:
|
|
7847
|
-
cancelButtonText:
|
|
7965
|
+
title: resolved_title,
|
|
7966
|
+
actionButtonText: resolved_confirm_label,
|
|
7967
|
+
cancelButtonText: resolved_cancel_label,
|
|
7848
7968
|
onConfirm: handle_confirm,
|
|
7849
7969
|
onCancel,
|
|
7850
7970
|
actionButtonLoading: is_confirming,
|
|
@@ -7857,7 +7977,7 @@ function HazoUiImageCropperDialog({
|
|
|
7857
7977
|
imageSrc: image_src,
|
|
7858
7978
|
outputSize,
|
|
7859
7979
|
quality,
|
|
7860
|
-
zoomLabel
|
|
7980
|
+
zoomLabel: resolved_zoom_label
|
|
7861
7981
|
}
|
|
7862
7982
|
)
|
|
7863
7983
|
}
|
|
@@ -8297,6 +8417,7 @@ var CardFooter = React27.forwardRef(
|
|
|
8297
8417
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex items-center p-6 pt-0", className), ...props })
|
|
8298
8418
|
);
|
|
8299
8419
|
CardFooter.displayName = "CardFooter";
|
|
8420
|
+
var t15 = createPackageT("hazo_ui", en_default);
|
|
8300
8421
|
function Spinner({ className, size = "md" }) {
|
|
8301
8422
|
const sizeClasses = { sm: "h-4 w-4", md: "h-8 w-8", lg: "h-12 w-12" };
|
|
8302
8423
|
return /* @__PURE__ */ jsx(
|
|
@@ -8304,8 +8425,8 @@ function Spinner({ className, size = "md" }) {
|
|
|
8304
8425
|
{
|
|
8305
8426
|
className: cn("animate-spin rounded-full border-2 border-current border-t-transparent text-primary", sizeClasses[size], className),
|
|
8306
8427
|
role: "status",
|
|
8307
|
-
"aria-label": "
|
|
8308
|
-
children: /* @__PURE__ */ jsx("span", { className: "sr-only", children: "
|
|
8428
|
+
"aria-label": t15("spinner.loading"),
|
|
8429
|
+
children: /* @__PURE__ */ jsx("span", { className: "sr-only", children: t15("spinner.loading_text") })
|
|
8309
8430
|
}
|
|
8310
8431
|
);
|
|
8311
8432
|
}
|
|
@@ -8441,6 +8562,7 @@ var InputAffix = React27.forwardRef(
|
|
|
8441
8562
|
}
|
|
8442
8563
|
);
|
|
8443
8564
|
InputAffix.displayName = "InputAffix";
|
|
8565
|
+
var t16 = createPackageT("hazo_ui", en_default);
|
|
8444
8566
|
var SkeletonBase = React27.forwardRef(
|
|
8445
8567
|
({ className, ...rest }, ref) => /* @__PURE__ */ jsx(
|
|
8446
8568
|
"div",
|
|
@@ -8482,18 +8604,19 @@ function SkeletonRect({ width = "100%", height = 96, radius = 6, className }) {
|
|
|
8482
8604
|
}
|
|
8483
8605
|
);
|
|
8484
8606
|
}
|
|
8485
|
-
function SkeletonGroup({ label
|
|
8607
|
+
function SkeletonGroup({ label, children, className, ...rest }) {
|
|
8608
|
+
const resolved_label = label ?? t16("skeleton.loading_content");
|
|
8486
8609
|
return /* @__PURE__ */ jsxs(
|
|
8487
8610
|
"div",
|
|
8488
8611
|
{
|
|
8489
8612
|
role: "status",
|
|
8490
8613
|
"aria-busy": "true",
|
|
8491
|
-
"aria-label":
|
|
8614
|
+
"aria-label": resolved_label,
|
|
8492
8615
|
className: cn("space-y-2", className),
|
|
8493
8616
|
...rest,
|
|
8494
8617
|
children: [
|
|
8495
8618
|
children,
|
|
8496
|
-
/* @__PURE__ */ jsx("span", { className: "sr-only", children:
|
|
8619
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: resolved_label })
|
|
8497
8620
|
]
|
|
8498
8621
|
}
|
|
8499
8622
|
);
|
|
@@ -8528,7 +8651,7 @@ function EmptyState({
|
|
|
8528
8651
|
}
|
|
8529
8652
|
);
|
|
8530
8653
|
}
|
|
8531
|
-
var
|
|
8654
|
+
var t17 = createPackageT("hazo_ui", en_default);
|
|
8532
8655
|
function ErrorBanner({
|
|
8533
8656
|
severity = "error",
|
|
8534
8657
|
title,
|
|
@@ -8563,7 +8686,7 @@ function ErrorBanner({
|
|
|
8563
8686
|
{
|
|
8564
8687
|
type: "button",
|
|
8565
8688
|
onClick: onDismiss,
|
|
8566
|
-
"aria-label":
|
|
8689
|
+
"aria-label": t17("error.dismiss"),
|
|
8567
8690
|
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",
|
|
8568
8691
|
children: /* @__PURE__ */ jsx(X, { className: "h-4 w-4", "aria-hidden": "true" })
|
|
8569
8692
|
}
|
|
@@ -8572,9 +8695,9 @@ function ErrorBanner({
|
|
|
8572
8695
|
}
|
|
8573
8696
|
);
|
|
8574
8697
|
}
|
|
8575
|
-
var
|
|
8698
|
+
var t18 = createPackageT("hazo_ui", en_default);
|
|
8576
8699
|
function ErrorPage({
|
|
8577
|
-
title
|
|
8700
|
+
title,
|
|
8578
8701
|
description,
|
|
8579
8702
|
errorCode,
|
|
8580
8703
|
correlationId,
|
|
@@ -8582,6 +8705,7 @@ function ErrorPage({
|
|
|
8582
8705
|
illustration,
|
|
8583
8706
|
className
|
|
8584
8707
|
}) {
|
|
8708
|
+
const resolved_title = title ?? t18("error.something_went_wrong");
|
|
8585
8709
|
return /* @__PURE__ */ jsxs(
|
|
8586
8710
|
"div",
|
|
8587
8711
|
{
|
|
@@ -8594,10 +8718,10 @@ function ErrorPage({
|
|
|
8594
8718
|
children: [
|
|
8595
8719
|
/* @__PURE__ */ jsx("div", { className: "text-destructive", children: illustration ?? /* @__PURE__ */ jsx(OctagonAlert, { className: "h-16 w-16", "aria-hidden": "true" }) }),
|
|
8596
8720
|
errorCode ? /* @__PURE__ */ jsx("div", { className: "rounded-full bg-muted px-3 py-1 text-xs font-mono uppercase tracking-wider text-muted-foreground", children: errorCode }) : null,
|
|
8597
|
-
/* @__PURE__ */ jsx("h1", { className: "text-2xl font-semibold text-foreground", children:
|
|
8721
|
+
/* @__PURE__ */ jsx("h1", { className: "text-2xl font-semibold text-foreground", children: resolved_title }),
|
|
8598
8722
|
description ? /* @__PURE__ */ jsx("div", { className: "text-sm text-muted-foreground", children: description }) : null,
|
|
8599
8723
|
correlationId ? /* @__PURE__ */ jsxs("div", { className: "w-full rounded-md border bg-muted/40 px-3 py-2 text-left", children: [
|
|
8600
|
-
/* @__PURE__ */ jsx("div", { className: "text-[10px] uppercase tracking-wider text-muted-foreground", children: "
|
|
8724
|
+
/* @__PURE__ */ jsx("div", { className: "text-[10px] uppercase tracking-wider text-muted-foreground", children: t18("error.correlation_id") }),
|
|
8601
8725
|
/* @__PURE__ */ jsx("code", { className: "break-all text-xs", children: correlationId })
|
|
8602
8726
|
] }) : null,
|
|
8603
8727
|
actions ? /* @__PURE__ */ jsx("div", { className: "mt-2 flex flex-wrap items-center justify-center gap-2", children: actions }) : null
|
|
@@ -8605,16 +8729,17 @@ function ErrorPage({
|
|
|
8605
8729
|
}
|
|
8606
8730
|
);
|
|
8607
8731
|
}
|
|
8608
|
-
var
|
|
8732
|
+
var t19 = createPackageT("hazo_ui", en_default);
|
|
8609
8733
|
function LoadingTimeout({
|
|
8610
8734
|
active,
|
|
8611
8735
|
children,
|
|
8612
8736
|
skeleton,
|
|
8613
8737
|
onRetry,
|
|
8614
8738
|
thresholds,
|
|
8615
|
-
label
|
|
8739
|
+
label,
|
|
8616
8740
|
className
|
|
8617
8741
|
}) {
|
|
8742
|
+
const resolved_label = label ?? t19("loading.default_label");
|
|
8618
8743
|
const timeouts = {
|
|
8619
8744
|
gentle: thresholds?.gentle ?? 5e3,
|
|
8620
8745
|
firm: thresholds?.firm ?? 15e3,
|
|
@@ -8644,15 +8769,15 @@ function LoadingTimeout({
|
|
|
8644
8769
|
ErrorBanner,
|
|
8645
8770
|
{
|
|
8646
8771
|
severity: "error",
|
|
8647
|
-
title:
|
|
8648
|
-
message:
|
|
8772
|
+
title: t19("loading.taking_longer"),
|
|
8773
|
+
message: t19("loading.still_loading", { label: resolved_label }),
|
|
8649
8774
|
action: onRetry ? /* @__PURE__ */ jsx(
|
|
8650
8775
|
"button",
|
|
8651
8776
|
{
|
|
8652
8777
|
type: "button",
|
|
8653
8778
|
onClick: onRetry,
|
|
8654
8779
|
className: "rounded bg-foreground/10 px-3 py-1.5 text-sm font-medium hover:bg-foreground/15",
|
|
8655
|
-
children: "
|
|
8780
|
+
children: t19("loading.try_again")
|
|
8656
8781
|
}
|
|
8657
8782
|
) : null
|
|
8658
8783
|
}
|
|
@@ -8660,12 +8785,8 @@ function LoadingTimeout({
|
|
|
8660
8785
|
}
|
|
8661
8786
|
return /* @__PURE__ */ jsxs("div", { className, role: "status", "aria-busy": "true", "aria-live": "polite", children: [
|
|
8662
8787
|
skeleton,
|
|
8663
|
-
phase === "gentle" ? /* @__PURE__ */
|
|
8664
|
-
|
|
8665
|
-
label,
|
|
8666
|
-
"\u2026"
|
|
8667
|
-
] }) : null,
|
|
8668
|
-
phase === "firm" ? /* @__PURE__ */ jsx("div", { className: "mt-3 text-center text-sm text-muted-foreground", children: "Still working on it \u2014 almost there." }) : null
|
|
8788
|
+
phase === "gentle" ? /* @__PURE__ */ jsx("div", { className: "mt-3 text-center text-sm text-muted-foreground", children: t19("loading.gentle_message", { label: resolved_label }) }) : null,
|
|
8789
|
+
phase === "firm" ? /* @__PURE__ */ jsx("div", { className: "mt-3 text-center text-sm text-muted-foreground", children: t19("loading.firm_message") }) : null
|
|
8669
8790
|
] });
|
|
8670
8791
|
}
|
|
8671
8792
|
function ProgressiveImage({
|
|
@@ -8746,7 +8867,7 @@ function NotificationCountBadge({
|
|
|
8746
8867
|
}
|
|
8747
8868
|
);
|
|
8748
8869
|
}
|
|
8749
|
-
var
|
|
8870
|
+
var t20 = createPackageT("hazo_ui", en_default);
|
|
8750
8871
|
function NotificationItem({
|
|
8751
8872
|
isRead,
|
|
8752
8873
|
timestamp,
|
|
@@ -8777,7 +8898,7 @@ function NotificationItem({
|
|
|
8777
8898
|
/* @__PURE__ */ jsx("div", { className: "cls_notification_item_dot_col flex-shrink-0 pt-1.5", children: !isRead ? /* @__PURE__ */ jsx(
|
|
8778
8899
|
"span",
|
|
8779
8900
|
{
|
|
8780
|
-
"aria-label":
|
|
8901
|
+
"aria-label": t20("notification.unread"),
|
|
8781
8902
|
className: "cls_notification_item_dot block w-2 h-2 rounded-full bg-primary"
|
|
8782
8903
|
}
|
|
8783
8904
|
) : /* @__PURE__ */ jsx("span", { className: "block w-2 h-2", "aria-hidden": "true" }) }),
|
|
@@ -8801,13 +8922,13 @@ function NotificationItem({
|
|
|
8801
8922
|
}
|
|
8802
8923
|
);
|
|
8803
8924
|
}
|
|
8804
|
-
var
|
|
8925
|
+
var t21 = createPackageT("hazo_ui", en_default);
|
|
8805
8926
|
function LoadingSkeletons() {
|
|
8806
8927
|
return /* @__PURE__ */ jsx(
|
|
8807
8928
|
"div",
|
|
8808
8929
|
{
|
|
8809
8930
|
"aria-busy": "true",
|
|
8810
|
-
"aria-label":
|
|
8931
|
+
"aria-label": t21("notification.loading"),
|
|
8811
8932
|
className: "cls_notification_panel_loading space-y-0",
|
|
8812
8933
|
children: [0, 1, 2].map((i) => /* @__PURE__ */ jsxs(
|
|
8813
8934
|
"div",
|
|
@@ -8866,7 +8987,7 @@ function NotificationPanel({
|
|
|
8866
8987
|
}
|
|
8867
8988
|
);
|
|
8868
8989
|
}
|
|
8869
|
-
var
|
|
8990
|
+
var t22 = createPackageT("hazo_ui", en_default);
|
|
8870
8991
|
function HazoUiToaster({
|
|
8871
8992
|
position = "bottom-right",
|
|
8872
8993
|
closeButton = true,
|
|
@@ -8912,12 +9033,14 @@ function permissionToast({
|
|
|
8912
9033
|
action,
|
|
8913
9034
|
duration = 5e3
|
|
8914
9035
|
}) {
|
|
8915
|
-
const description = missingPermissions.length === 0 ?
|
|
8916
|
-
|
|
8917
|
-
|
|
8918
|
-
|
|
9036
|
+
const description = missingPermissions.length === 0 ? t22("toast.permission_denied_message") : t22("toast.missing_prefix", {
|
|
9037
|
+
items: missingPermissions.map((key) => {
|
|
9038
|
+
const label = descriptions?.[key];
|
|
9039
|
+
return label ? `\`${key}\` \u2014 ${label}` : `\`${key}\``;
|
|
9040
|
+
}).join("; ")
|
|
9041
|
+
});
|
|
8919
9042
|
return errorToast({
|
|
8920
|
-
title:
|
|
9043
|
+
title: t22("toast.permission_required"),
|
|
8921
9044
|
description,
|
|
8922
9045
|
action,
|
|
8923
9046
|
duration
|
|
@@ -9175,6 +9298,7 @@ function use_fullscreen() {
|
|
|
9175
9298
|
const { isFullscreen, toggle } = useFullscreen(ref);
|
|
9176
9299
|
return { is_fullscreen: isFullscreen, toggle, ref };
|
|
9177
9300
|
}
|
|
9301
|
+
var t23 = createPackageT("hazo_ui", en_default);
|
|
9178
9302
|
function KanbanCard({
|
|
9179
9303
|
item,
|
|
9180
9304
|
renderCard,
|
|
@@ -9236,7 +9360,7 @@ function KanbanCard({
|
|
|
9236
9360
|
...listeners,
|
|
9237
9361
|
role: "button",
|
|
9238
9362
|
tabIndex: 0,
|
|
9239
|
-
"aria-roledescription": "
|
|
9363
|
+
"aria-roledescription": t23("kanban.draggable_card"),
|
|
9240
9364
|
"aria-grabbed": isDragging,
|
|
9241
9365
|
onDoubleClick: () => {
|
|
9242
9366
|
if (showEdit && onEditRequest && !dragging) onEditRequest(item);
|
|
@@ -9561,6 +9685,7 @@ function KanbanLaneStrip({
|
|
|
9561
9685
|
}
|
|
9562
9686
|
);
|
|
9563
9687
|
}
|
|
9688
|
+
var t24 = createPackageT("hazo_ui", en_default);
|
|
9564
9689
|
var DEFAULT_PRIORITIES = ["P0", "P1", "P2", "P3"];
|
|
9565
9690
|
function humanize(key) {
|
|
9566
9691
|
return key.replace(/[_\-]+/g, " ").replace(/([a-z])([A-Z])/g, "$1 $2").replace(/\s+/g, " ").trim().split(" ").map((w) => w ? w[0].toUpperCase() + w.slice(1) : w).join(" ");
|
|
@@ -9575,7 +9700,7 @@ function auto_detect_fields(item, columns) {
|
|
|
9575
9700
|
}
|
|
9576
9701
|
}
|
|
9577
9702
|
if (columns.length > 0) {
|
|
9578
|
-
out.push({ key: "columnKey", type: "status", label: "
|
|
9703
|
+
out.push({ key: "columnKey", type: "status", label: t24("kanban.status_label") });
|
|
9579
9704
|
}
|
|
9580
9705
|
return out;
|
|
9581
9706
|
}
|
|
@@ -9672,7 +9797,7 @@ function KanbanEditor({
|
|
|
9672
9797
|
isDirty: is_dirty
|
|
9673
9798
|
};
|
|
9674
9799
|
const open = item !== null;
|
|
9675
|
-
const title = item && titleFn ? titleFn(item) : item ?
|
|
9800
|
+
const title = item && titleFn ? titleFn(item) : item ? t24("kanban.edit_fallback", { id: item.id }) : "";
|
|
9676
9801
|
const priority_var = item?.priority ? `--hazo-kanban-priority-${String(item.priority).toLowerCase()}` : null;
|
|
9677
9802
|
const header_bar_color = priority_var ? `hsl(var(${priority_var}))` : void 0;
|
|
9678
9803
|
const use_default_footer = !(renderBody && hideFooter);
|
|
@@ -9684,18 +9809,18 @@ function KanbanEditor({
|
|
|
9684
9809
|
if (!o && !saving) onClose();
|
|
9685
9810
|
},
|
|
9686
9811
|
title,
|
|
9687
|
-
description: "
|
|
9812
|
+
description: t24("kanban.update_description"),
|
|
9688
9813
|
sizeWidth: "min(90vw, 480px)",
|
|
9689
9814
|
openAnimation: "none",
|
|
9690
9815
|
closeAnimation: "none",
|
|
9691
9816
|
headerBar: !!priority_var,
|
|
9692
9817
|
headerBarColor: header_bar_color,
|
|
9693
9818
|
contentClassName: cn("cls_hazo_kanban_editor", priority_var && "pt-0"),
|
|
9694
|
-
actionButtonText: saving ? "
|
|
9819
|
+
actionButtonText: saving ? t24("kanban.saving") : t24("kanban.save"),
|
|
9695
9820
|
actionButtonIcon: saving ? void 0 : /* @__PURE__ */ jsx(Check, { className: "h-4 w-4 mr-2" }),
|
|
9696
9821
|
actionButtonLoading: saving,
|
|
9697
9822
|
actionButtonDisabled: !is_dirty || !all_required_filled || saving,
|
|
9698
|
-
cancelButtonText: "
|
|
9823
|
+
cancelButtonText: t24("kanban.cancel"),
|
|
9699
9824
|
showCancelButton: true,
|
|
9700
9825
|
onConfirm: handle_save,
|
|
9701
9826
|
onCancel: onClose,
|
|
@@ -9800,7 +9925,7 @@ function KanbanEditorFieldRow({
|
|
|
9800
9925
|
/* @__PURE__ */ jsx(SelectTrigger, { id, children: /* @__PURE__ */ jsx(
|
|
9801
9926
|
SelectValue,
|
|
9802
9927
|
{
|
|
9803
|
-
placeholder: field.placeholder ??
|
|
9928
|
+
placeholder: field.placeholder ?? t24("kanban.select_placeholder", { label })
|
|
9804
9929
|
}
|
|
9805
9930
|
) }),
|
|
9806
9931
|
/* @__PURE__ */ jsx(SelectContent, { children: (field.options ?? []).map((opt) => /* @__PURE__ */ jsx(SelectItem, { value: opt, children: opt }, opt)) })
|
|
@@ -9816,7 +9941,7 @@ function KanbanEditorFieldRow({
|
|
|
9816
9941
|
/* @__PURE__ */ jsx(SelectTrigger, { id, children: /* @__PURE__ */ jsx(
|
|
9817
9942
|
SelectValue,
|
|
9818
9943
|
{
|
|
9819
|
-
placeholder: field.placeholder ?? "
|
|
9944
|
+
placeholder: field.placeholder ?? t24("kanban.select_priority")
|
|
9820
9945
|
}
|
|
9821
9946
|
) }),
|
|
9822
9947
|
/* @__PURE__ */ jsx(SelectContent, { children: priorities.map((p) => /* @__PURE__ */ jsx(SelectItem, { value: p, children: p }, p)) })
|
|
@@ -9832,7 +9957,7 @@ function KanbanEditorFieldRow({
|
|
|
9832
9957
|
/* @__PURE__ */ jsx(SelectTrigger, { id, children: /* @__PURE__ */ jsx(
|
|
9833
9958
|
SelectValue,
|
|
9834
9959
|
{
|
|
9835
|
-
placeholder: field.placeholder ?? "
|
|
9960
|
+
placeholder: field.placeholder ?? t24("kanban.select_status")
|
|
9836
9961
|
}
|
|
9837
9962
|
) }),
|
|
9838
9963
|
/* @__PURE__ */ jsx(SelectContent, { children: columns.map((col) => /* @__PURE__ */ jsx(SelectItem, { value: col.key, children: col.title }, col.key)) })
|
|
@@ -9841,6 +9966,7 @@ function KanbanEditorFieldRow({
|
|
|
9841
9966
|
)
|
|
9842
9967
|
] });
|
|
9843
9968
|
}
|
|
9969
|
+
var t25 = createPackageT("hazo_ui", en_default);
|
|
9844
9970
|
var EMPTY_FILTER = {
|
|
9845
9971
|
search: "",
|
|
9846
9972
|
categories: [],
|
|
@@ -9848,7 +9974,7 @@ var EMPTY_FILTER = {
|
|
|
9848
9974
|
};
|
|
9849
9975
|
function HazoUiKanbanFilter({
|
|
9850
9976
|
search = true,
|
|
9851
|
-
searchPlaceholder
|
|
9977
|
+
searchPlaceholder,
|
|
9852
9978
|
categories,
|
|
9853
9979
|
priorities,
|
|
9854
9980
|
value,
|
|
@@ -9856,6 +9982,7 @@ function HazoUiKanbanFilter({
|
|
|
9856
9982
|
onChange,
|
|
9857
9983
|
className
|
|
9858
9984
|
}) {
|
|
9985
|
+
const resolved_search_placeholder = searchPlaceholder ?? t25("common.search");
|
|
9859
9986
|
const is_controlled = value !== void 0;
|
|
9860
9987
|
const [internal, set_internal] = React27.useState(
|
|
9861
9988
|
defaultValue ?? EMPTY_FILTER
|
|
@@ -9882,7 +10009,7 @@ function HazoUiKanbanFilter({
|
|
|
9882
10009
|
{
|
|
9883
10010
|
value: current.search,
|
|
9884
10011
|
onChange: (e) => update({ ...current, search: e.target.value }),
|
|
9885
|
-
placeholder:
|
|
10012
|
+
placeholder: resolved_search_placeholder,
|
|
9886
10013
|
className: "cls_hazo_kanban_filter_search w-full sm:w-64"
|
|
9887
10014
|
}
|
|
9888
10015
|
),
|
|
@@ -9967,16 +10094,25 @@ function applyKanbanFilter(items, filter) {
|
|
|
9967
10094
|
return true;
|
|
9968
10095
|
});
|
|
9969
10096
|
}
|
|
10097
|
+
var t26 = createPackageT("hazo_ui", en_default);
|
|
9970
10098
|
var UNMATCHED_LANE_KEY = "__hazo_lane_unmatched__";
|
|
9971
10099
|
function bucket_key(lane_key, column_key) {
|
|
9972
10100
|
return lane_key == null ? column_key : `${lane_key}\0${column_key}`;
|
|
9973
10101
|
}
|
|
9974
10102
|
function default_announcements(itemLabel) {
|
|
9975
10103
|
return {
|
|
9976
|
-
onDragStart: ({ item, fromColumn }) =>
|
|
9977
|
-
onDragOver: ({ item, overColumn }) => overColumn ?
|
|
9978
|
-
onDragEnd: ({ item, fromColumn, toColumn, newIndex }) => fromColumn === toColumn ?
|
|
9979
|
-
|
|
10104
|
+
onDragStart: ({ item, fromColumn }) => t26("kanban.dnd_pickup", { item: itemLabel(item), column: fromColumn }),
|
|
10105
|
+
onDragOver: ({ item, overColumn }) => overColumn ? t26("kanban.dnd_over", { item: itemLabel(item), column: overColumn }) : "",
|
|
10106
|
+
onDragEnd: ({ item, fromColumn, toColumn, newIndex }) => fromColumn === toColumn ? t26("kanban.dnd_reorder", {
|
|
10107
|
+
item: itemLabel(item),
|
|
10108
|
+
pos: newIndex + 1,
|
|
10109
|
+
column: toColumn
|
|
10110
|
+
}) : t26("kanban.dnd_drop", {
|
|
10111
|
+
item: itemLabel(item),
|
|
10112
|
+
column: toColumn,
|
|
10113
|
+
pos: newIndex + 1
|
|
10114
|
+
}),
|
|
10115
|
+
onDragCancel: ({ item, fromColumn }) => t26("kanban.dnd_cancel", { item: itemLabel(item), column: fromColumn })
|
|
9980
10116
|
};
|
|
9981
10117
|
}
|
|
9982
10118
|
function group_items_by_column(items, overlay, columns, lanes) {
|
|
@@ -10780,7 +10916,7 @@ function serializeFilter(filter) {
|
|
|
10780
10916
|
const fields = (filter.fields ?? []).map((f) => `${f.field}:${f.operator ?? ""}:${String(f.value)}`).join(",");
|
|
10781
10917
|
return `${filter.search ?? ""}|${fields}`;
|
|
10782
10918
|
}
|
|
10783
|
-
var
|
|
10919
|
+
var t27 = createPackageT("hazo_ui", en_default);
|
|
10784
10920
|
function HazoUiTable(props) {
|
|
10785
10921
|
const state = useTableState(props);
|
|
10786
10922
|
const { columns, rows, getRowKey, className, caption } = props;
|
|
@@ -10815,12 +10951,12 @@ function HazoUiTable(props) {
|
|
|
10815
10951
|
) }) : state.serverError != null ? /* @__PURE__ */ jsx("div", { className: "cls_hazo_ui_table_mobile_error py-6", children: renderErrorState(props.error, state.serverError) }) : state.displayed.length === 0 ? /* @__PURE__ */ 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__ */ jsx(
|
|
10816
10952
|
EmptyState,
|
|
10817
10953
|
{
|
|
10818
|
-
title: typeof props.empty === "string" && props.empty ||
|
|
10954
|
+
title: typeof props.empty === "string" && props.empty || t27("table.empty")
|
|
10819
10955
|
}
|
|
10820
10956
|
) : props.empty : typeof props.noResults === "string" || props.noResults === void 0 ? /* @__PURE__ */ jsx(
|
|
10821
10957
|
EmptyState,
|
|
10822
10958
|
{
|
|
10823
|
-
title: typeof props.noResults === "string" && props.noResults ||
|
|
10959
|
+
title: typeof props.noResults === "string" && props.noResults || t27("table.no_results")
|
|
10824
10960
|
}
|
|
10825
10961
|
) : props.noResults }) : /* @__PURE__ */ jsx(
|
|
10826
10962
|
TableMobileCards,
|
|
@@ -10843,7 +10979,7 @@ function HazoUiTable(props) {
|
|
|
10843
10979
|
{
|
|
10844
10980
|
type: "button",
|
|
10845
10981
|
onClick: (e) => state.cycleHeaderSort(c.key, e.shiftKey),
|
|
10846
|
-
title:
|
|
10982
|
+
title: t27("table.sort_tooltip"),
|
|
10847
10983
|
className: "cls_hazo_ui_table_sort_btn inline-flex items-center gap-1 hover:text-foreground",
|
|
10848
10984
|
children: [
|
|
10849
10985
|
/* @__PURE__ */ jsx("span", { children: c.label }),
|
|
@@ -10875,12 +11011,12 @@ function HazoUiTable(props) {
|
|
|
10875
11011
|
children: noActiveFilters(state.filter) && rows.length === 0 ? /* @__PURE__ */ jsx("div", { className: "cls_hazo_ui_table_empty_wrap py-6", children: typeof props.empty === "string" || props.empty === void 0 ? /* @__PURE__ */ jsx(
|
|
10876
11012
|
EmptyState,
|
|
10877
11013
|
{
|
|
10878
|
-
title: typeof props.empty === "string" && props.empty ||
|
|
11014
|
+
title: typeof props.empty === "string" && props.empty || t27("table.empty")
|
|
10879
11015
|
}
|
|
10880
11016
|
) : props.empty }) : /* @__PURE__ */ jsx("div", { className: "cls_hazo_ui_table_no_results_wrap py-6", children: typeof props.noResults === "string" || props.noResults === void 0 ? /* @__PURE__ */ jsx(
|
|
10881
11017
|
EmptyState,
|
|
10882
11018
|
{
|
|
10883
|
-
title: typeof props.noResults === "string" && props.noResults ||
|
|
11019
|
+
title: typeof props.noResults === "string" && props.noResults || t27("table.no_results")
|
|
10884
11020
|
}
|
|
10885
11021
|
) : props.noResults })
|
|
10886
11022
|
}
|
|
@@ -10994,7 +11130,7 @@ function PaginationFooter({
|
|
|
10994
11130
|
const end = Math.min((page + 1) * pageSize, total);
|
|
10995
11131
|
const lastPage = Math.max(0, Math.ceil(total / pageSize) - 1);
|
|
10996
11132
|
return /* @__PURE__ */ jsxs("div", { className: "cls_hazo_ui_table_pagination flex items-center justify-between gap-3 pt-2 text-sm", children: [
|
|
10997
|
-
/* @__PURE__ */ jsx("span", { className: "cls_hazo_ui_table_page_counter text-muted-foreground", children:
|
|
11133
|
+
/* @__PURE__ */ jsx("span", { className: "cls_hazo_ui_table_page_counter text-muted-foreground", children: t27("table.showing", {
|
|
10998
11134
|
start: String(start),
|
|
10999
11135
|
end: String(end),
|
|
11000
11136
|
total: String(total)
|
|
@@ -11007,8 +11143,8 @@ function PaginationFooter({
|
|
|
11007
11143
|
size: "sm",
|
|
11008
11144
|
onClick: () => onPageChange(Math.max(0, page - 1)),
|
|
11009
11145
|
disabled: page === 0,
|
|
11010
|
-
"aria-label":
|
|
11011
|
-
children:
|
|
11146
|
+
"aria-label": t27("table.prev_aria"),
|
|
11147
|
+
children: t27("table.prev")
|
|
11012
11148
|
}
|
|
11013
11149
|
),
|
|
11014
11150
|
/* @__PURE__ */ jsx(
|
|
@@ -11018,8 +11154,8 @@ function PaginationFooter({
|
|
|
11018
11154
|
size: "sm",
|
|
11019
11155
|
onClick: () => onPageChange(Math.min(lastPage, page + 1)),
|
|
11020
11156
|
disabled: page >= lastPage,
|
|
11021
|
-
"aria-label":
|
|
11022
|
-
children:
|
|
11157
|
+
"aria-label": t27("table.next_aria"),
|
|
11158
|
+
children: t27("table.next")
|
|
11023
11159
|
}
|
|
11024
11160
|
)
|
|
11025
11161
|
] })
|
|
@@ -11063,7 +11199,7 @@ function Toolbar2(props) {
|
|
|
11063
11199
|
setSearchValue(v);
|
|
11064
11200
|
onSearchChange(v);
|
|
11065
11201
|
},
|
|
11066
|
-
placeholder: searchPlaceholder ??
|
|
11202
|
+
placeholder: searchPlaceholder ?? t27("table.search_placeholder"),
|
|
11067
11203
|
className: "cls_hazo_ui_table_search w-full sm:max-w-xs"
|
|
11068
11204
|
}
|
|
11069
11205
|
) : /* @__PURE__ */ jsx("div", {}),
|
|
@@ -11111,8 +11247,8 @@ function renderErrorState(error, serverError) {
|
|
|
11111
11247
|
return /* @__PURE__ */ jsx(
|
|
11112
11248
|
EmptyState,
|
|
11113
11249
|
{
|
|
11114
|
-
title:
|
|
11115
|
-
description: msg ||
|
|
11250
|
+
title: t27("table.error_title"),
|
|
11251
|
+
description: msg || t27("table.error_description")
|
|
11116
11252
|
}
|
|
11117
11253
|
);
|
|
11118
11254
|
}
|
|
@@ -11348,18 +11484,20 @@ function StackedBars({
|
|
|
11348
11484
|
}
|
|
11349
11485
|
);
|
|
11350
11486
|
}
|
|
11487
|
+
var t28 = createPackageT("hazo_ui", en_default);
|
|
11351
11488
|
function DateRangeSelector({
|
|
11352
11489
|
value,
|
|
11353
11490
|
onChange,
|
|
11354
11491
|
options,
|
|
11355
11492
|
className,
|
|
11356
|
-
ariaLabel
|
|
11493
|
+
ariaLabel
|
|
11357
11494
|
}) {
|
|
11495
|
+
const resolved_aria = ariaLabel ?? t28("charts.date_range");
|
|
11358
11496
|
return /* @__PURE__ */ jsx(
|
|
11359
11497
|
"div",
|
|
11360
11498
|
{
|
|
11361
11499
|
role: "group",
|
|
11362
|
-
"aria-label":
|
|
11500
|
+
"aria-label": resolved_aria,
|
|
11363
11501
|
className: cn(
|
|
11364
11502
|
"cls_hazo_date_range_selector inline-flex items-center gap-0 rounded-md border bg-background p-0.5",
|
|
11365
11503
|
className
|
|
@@ -11386,6 +11524,7 @@ function DateRangeSelector({
|
|
|
11386
11524
|
}
|
|
11387
11525
|
);
|
|
11388
11526
|
}
|
|
11527
|
+
var t29 = createPackageT("hazo_ui", en_default);
|
|
11389
11528
|
var PAD_LEFT2 = 80;
|
|
11390
11529
|
var PAD_RIGHT2 = 72;
|
|
11391
11530
|
var PAD_TOP2 = 12;
|
|
@@ -11536,12 +11675,12 @@ function FunnelChart({
|
|
|
11536
11675
|
const bubble_anchor_y = bar_y + BAR_H / 2;
|
|
11537
11676
|
const lines = [
|
|
11538
11677
|
{ text: step.label, accent: true },
|
|
11539
|
-
{ text:
|
|
11540
|
-
{ text:
|
|
11678
|
+
{ text: t29("charts.total", { value: fmt(total) }), accent: false },
|
|
11679
|
+
{ text: t29("charts.pct_of_first", { pct: pct_first }), accent: false }
|
|
11541
11680
|
];
|
|
11542
11681
|
if (i > 0) {
|
|
11543
|
-
lines.push({ text:
|
|
11544
|
-
lines.push({ text:
|
|
11682
|
+
lines.push({ text: t29("charts.pct_of_prev", { pct: pct_prev }), accent: false });
|
|
11683
|
+
lines.push({ text: t29("charts.dropoff", { value: fmt(dropoff) }), accent: false });
|
|
11545
11684
|
}
|
|
11546
11685
|
if (step.segments) {
|
|
11547
11686
|
step.segments.forEach((seg) => {
|
|
@@ -11602,6 +11741,7 @@ function FunnelChart({
|
|
|
11602
11741
|
|
|
11603
11742
|
// src/assets/celebration-chime.mp3
|
|
11604
11743
|
var celebration_chime_default = "data:text/plain;charset=utf-8,";
|
|
11744
|
+
var t30 = createPackageT("hazo_ui", en_default);
|
|
11605
11745
|
var CELEBRATION_GRADIENT = "linear-gradient(135deg, #667eea 0%, #764ba2 100%)";
|
|
11606
11746
|
var CARD_SIZE = 1080;
|
|
11607
11747
|
var PREVIEW_SIZE = 400;
|
|
@@ -11799,7 +11939,7 @@ function CelebrationModalInner({
|
|
|
11799
11939
|
{
|
|
11800
11940
|
className: "cls_celebration_close_btn absolute top-3 right-3 z-10 p-1.5 rounded-full hover:bg-black/10 transition-colors",
|
|
11801
11941
|
onClick: close_modal,
|
|
11802
|
-
"aria-label": "
|
|
11942
|
+
"aria-label": t30("celebration.close"),
|
|
11803
11943
|
children: /* @__PURE__ */ jsx(X, { className: "h-4 w-4 text-gray-600" })
|
|
11804
11944
|
}
|
|
11805
11945
|
),
|
|
@@ -11862,21 +12002,21 @@ function CelebrationModalInner({
|
|
|
11862
12002
|
disabled: is_downloading,
|
|
11863
12003
|
children: [
|
|
11864
12004
|
is_downloading ? /* @__PURE__ */ jsx(Loader2, { className: "h-3.5 w-3.5 mr-1.5 animate-spin" }) : /* @__PURE__ */ jsx(Download, { className: "h-3.5 w-3.5 mr-1.5" }),
|
|
11865
|
-
"
|
|
12005
|
+
t30("celebration.download_png")
|
|
11866
12006
|
]
|
|
11867
12007
|
}
|
|
11868
12008
|
),
|
|
11869
12009
|
can_share && /* @__PURE__ */ jsxs(Button, { variant: "outline", size: "sm", onClick: handle_share, children: [
|
|
11870
12010
|
/* @__PURE__ */ jsx(Share2, { className: "h-3.5 w-3.5 mr-1.5" }),
|
|
11871
|
-
"
|
|
12011
|
+
t30("celebration.share")
|
|
11872
12012
|
] }),
|
|
11873
12013
|
/* @__PURE__ */ jsxs(Button, { variant: "outline", size: "sm", onClick: handle_copy, children: [
|
|
11874
12014
|
/* @__PURE__ */ jsx(Copy, { className: "h-3.5 w-3.5 mr-1.5" }),
|
|
11875
|
-
"
|
|
12015
|
+
t30("celebration.copy_image")
|
|
11876
12016
|
] })
|
|
11877
12017
|
] })
|
|
11878
12018
|
] }),
|
|
11879
|
-
!shareableCard && /* @__PURE__ */ jsx("div", { className: "cls_celebration_footer pb-8", children: /* @__PURE__ */ jsx(Button, { size: "sm", onClick: close_modal, children: "
|
|
12019
|
+
!shareableCard && /* @__PURE__ */ jsx("div", { className: "cls_celebration_footer pb-8", children: /* @__PURE__ */ jsx(Button, { size: "sm", onClick: close_modal, children: t30("celebration.dismiss") }) })
|
|
11880
12020
|
]
|
|
11881
12021
|
}
|
|
11882
12022
|
)
|
|
@@ -11898,8 +12038,8 @@ function computeEta(durationWindow, unitCount, concurrency = 1, fallbackUnitMs =
|
|
|
11898
12038
|
}
|
|
11899
12039
|
function easeToward(elapsed, eta, maxCap = 0.95) {
|
|
11900
12040
|
if (eta <= 0 || elapsed <= 0) return 0;
|
|
11901
|
-
const
|
|
11902
|
-
return maxCap * (1 - Math.exp(-1.5 *
|
|
12041
|
+
const t35 = elapsed / eta;
|
|
12042
|
+
return maxCap * (1 - Math.exp(-1.5 * t35));
|
|
11903
12043
|
}
|
|
11904
12044
|
function HazoUiProgressBar({
|
|
11905
12045
|
value,
|
|
@@ -12075,13 +12215,16 @@ function upsertEntry(entries, entry) {
|
|
|
12075
12215
|
function removeEntry(entries, id) {
|
|
12076
12216
|
return entries.filter((e) => e.id !== id);
|
|
12077
12217
|
}
|
|
12218
|
+
var t31 = createPackageT("hazo_ui", en_default);
|
|
12078
12219
|
function HazoUiMemoryDropdown({
|
|
12079
12220
|
history_key,
|
|
12080
|
-
placeholder
|
|
12221
|
+
placeholder,
|
|
12081
12222
|
on_select,
|
|
12082
12223
|
add_entry,
|
|
12083
|
-
empty_label
|
|
12224
|
+
empty_label
|
|
12084
12225
|
}) {
|
|
12226
|
+
const resolved_placeholder = placeholder ?? t31("memory.search_placeholder");
|
|
12227
|
+
const resolved_empty_label = empty_label ?? t31("memory.no_history");
|
|
12085
12228
|
const { value: stored, setValue } = useHazoState(history_key, {
|
|
12086
12229
|
level: "scope",
|
|
12087
12230
|
fallback: []
|
|
@@ -12119,7 +12262,7 @@ function HazoUiMemoryDropdown({
|
|
|
12119
12262
|
type: "text",
|
|
12120
12263
|
value: query,
|
|
12121
12264
|
onChange: (e) => setQuery(e.target.value),
|
|
12122
|
-
placeholder,
|
|
12265
|
+
placeholder: resolved_placeholder,
|
|
12123
12266
|
style: {
|
|
12124
12267
|
width: "100%",
|
|
12125
12268
|
background: "#FFFFFF",
|
|
@@ -12149,7 +12292,7 @@ function HazoUiMemoryDropdown({
|
|
|
12149
12292
|
fontStyle: "italic",
|
|
12150
12293
|
fontSize: 13
|
|
12151
12294
|
},
|
|
12152
|
-
children:
|
|
12295
|
+
children: resolved_empty_label
|
|
12153
12296
|
}
|
|
12154
12297
|
) : filtered.map((entry) => /* @__PURE__ */ jsx(
|
|
12155
12298
|
EntryRow,
|
|
@@ -12206,7 +12349,7 @@ function EntryRow({ entry, on_select, onDelete }) {
|
|
|
12206
12349
|
onClick: (e) => onDelete(entry.id, e),
|
|
12207
12350
|
onMouseEnter: () => setDeleteHovered(true),
|
|
12208
12351
|
onMouseLeave: () => setDeleteHovered(false),
|
|
12209
|
-
"aria-label":
|
|
12352
|
+
"aria-label": t31("memory.remove_aria", { label: entry.label }),
|
|
12210
12353
|
style: {
|
|
12211
12354
|
flexShrink: 0,
|
|
12212
12355
|
background: "none",
|
|
@@ -12225,6 +12368,7 @@ function EntryRow({ entry, on_select, onDelete }) {
|
|
|
12225
12368
|
}
|
|
12226
12369
|
);
|
|
12227
12370
|
}
|
|
12371
|
+
var t32 = createPackageT("hazo_ui", en_default);
|
|
12228
12372
|
function Logo({
|
|
12229
12373
|
logoUrl,
|
|
12230
12374
|
logoUrlDark,
|
|
@@ -12234,7 +12378,7 @@ function Logo({
|
|
|
12234
12378
|
className,
|
|
12235
12379
|
imgClassName
|
|
12236
12380
|
}) {
|
|
12237
|
-
const alt = appTitle ?? "
|
|
12381
|
+
const alt = appTitle ?? t32("app_logo.alt_fallback");
|
|
12238
12382
|
let content = null;
|
|
12239
12383
|
if (logoUrl) {
|
|
12240
12384
|
content = /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
@@ -12269,11 +12413,12 @@ function Logo({
|
|
|
12269
12413
|
}
|
|
12270
12414
|
return /* @__PURE__ */ jsx("div", { className: cn("inline-flex items-center gap-2", className), children: content });
|
|
12271
12415
|
}
|
|
12416
|
+
var t33 = createPackageT("hazo_ui", en_default);
|
|
12272
12417
|
function AppHeader({ identity, homeHref, navItems, actions, className }) {
|
|
12273
12418
|
return /* @__PURE__ */ jsxs(
|
|
12274
12419
|
"header",
|
|
12275
12420
|
{
|
|
12276
|
-
"aria-label": "
|
|
12421
|
+
"aria-label": t33("app_header.aria_label"),
|
|
12277
12422
|
className: cn(
|
|
12278
12423
|
"flex w-full items-center justify-between gap-4 border-b bg-navbar text-navbar-fg border-navbar-border px-4 py-2.5",
|
|
12279
12424
|
className
|
|
@@ -12781,6 +12926,7 @@ function HazoBrowserTab({
|
|
|
12781
12926
|
}
|
|
12782
12927
|
);
|
|
12783
12928
|
}
|
|
12929
|
+
var t34 = createPackageT("hazo_ui", en_default);
|
|
12784
12930
|
var native_name_cache = /* @__PURE__ */ new Map();
|
|
12785
12931
|
function get_native_name(code) {
|
|
12786
12932
|
const cached = native_name_cache.get(code);
|
|
@@ -12852,9 +12998,10 @@ function LocalePicker({
|
|
|
12852
12998
|
flags = false,
|
|
12853
12999
|
alternates,
|
|
12854
13000
|
activeLocale,
|
|
12855
|
-
triggerLabel
|
|
13001
|
+
triggerLabel,
|
|
12856
13002
|
className
|
|
12857
13003
|
}) {
|
|
13004
|
+
const resolved_trigger_label = triggerLabel ?? t34("locale_picker.change_language");
|
|
12858
13005
|
const options = React27.useMemo(() => {
|
|
12859
13006
|
return Object.entries(alternates ?? {}).map(([code, url]) => {
|
|
12860
13007
|
const href = safeHref(url);
|
|
@@ -12869,7 +13016,7 @@ function LocalePicker({
|
|
|
12869
13016
|
return /* @__PURE__ */ jsx(
|
|
12870
13017
|
"nav",
|
|
12871
13018
|
{
|
|
12872
|
-
"aria-label":
|
|
13019
|
+
"aria-label": resolved_trigger_label,
|
|
12873
13020
|
className: cn("cls_locale_picker_inline flex items-center gap-1", className),
|
|
12874
13021
|
children: options.map((opt) => /* @__PURE__ */ jsxs(
|
|
12875
13022
|
"a",
|
|
@@ -12899,7 +13046,7 @@ function LocalePicker({
|
|
|
12899
13046
|
variant: "outline",
|
|
12900
13047
|
size: "sm",
|
|
12901
13048
|
lang: activeLocale,
|
|
12902
|
-
"aria-label":
|
|
13049
|
+
"aria-label": resolved_trigger_label,
|
|
12903
13050
|
className: cn("cls_locale_picker_trigger gap-1.5", className),
|
|
12904
13051
|
children: [
|
|
12905
13052
|
flags && /* @__PURE__ */ jsx(FlagIcon, { code: active_option?.code ?? options[0].code }),
|