@open-mercato/ui 0.7.1-develop.7193.1.910a5b0a1e → 0.7.1-develop.7195.1.b5efd1d51a

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.
Files changed (49) hide show
  1. package/.turbo/turbo-build.log +2 -2
  2. package/dist/backend/AppShell.js +66 -7
  3. package/dist/backend/AppShell.js.map +2 -2
  4. package/dist/backend/CrudForm.js +14 -8
  5. package/dist/backend/CrudForm.js.map +2 -2
  6. package/dist/backend/DataTable.js +108 -11
  7. package/dist/backend/DataTable.js.map +2 -2
  8. package/dist/backend/forms/ActionsDropdown.js +35 -5
  9. package/dist/backend/forms/ActionsDropdown.js.map +2 -2
  10. package/dist/backend/forms/index.js.map +2 -2
  11. package/dist/backend/icons/lucideRegistry.generated.js +6 -0
  12. package/dist/backend/icons/lucideRegistry.generated.js.map +2 -2
  13. package/dist/backend/injection/spotIds.js +2 -0
  14. package/dist/backend/injection/spotIds.js.map +2 -2
  15. package/dist/backend/inputs/DurationInput.js +182 -0
  16. package/dist/backend/inputs/DurationInput.js.map +7 -0
  17. package/dist/backend/inputs/EventSelect.js.map +2 -2
  18. package/dist/backend/inputs/index.js +1 -0
  19. package/dist/backend/inputs/index.js.map +2 -2
  20. package/dist/backend/nav/navBadges.js +38 -0
  21. package/dist/backend/nav/navBadges.js.map +7 -0
  22. package/dist/primitives/segmented-control.js +4 -4
  23. package/dist/primitives/segmented-control.js.map +1 -1
  24. package/dist/primitives/sheet.js +21 -11
  25. package/dist/primitives/sheet.js.map +2 -2
  26. package/dist/primitives/textarea.js +54 -4
  27. package/dist/primitives/textarea.js.map +2 -2
  28. package/package.json +3 -3
  29. package/src/backend/AppShell.tsx +106 -2
  30. package/src/backend/CrudForm.tsx +28 -9
  31. package/src/backend/DataTable.tsx +176 -22
  32. package/src/backend/__tests__/CrudForm.density.test.tsx +113 -0
  33. package/src/backend/__tests__/DataTable.propBulkActions.test.tsx +200 -0
  34. package/src/backend/__tests__/DataTable.render.test.tsx +76 -0
  35. package/src/backend/__tests__/navBadges.test.ts +57 -0
  36. package/src/backend/forms/ActionsDropdown.tsx +73 -6
  37. package/src/backend/forms/index.ts +1 -1
  38. package/src/backend/icons/lucideRegistry.generated.tsx +6 -0
  39. package/src/backend/injection/spotIds.ts +8 -0
  40. package/src/backend/inputs/DurationInput.tsx +207 -0
  41. package/src/backend/inputs/EventSelect.tsx +2 -0
  42. package/src/backend/inputs/__tests__/DurationInput.test.tsx +220 -0
  43. package/src/backend/inputs/index.ts +1 -0
  44. package/src/backend/nav/navBadges.ts +61 -0
  45. package/src/primitives/__tests__/segmented-control.test.tsx +2 -2
  46. package/src/primitives/__tests__/textarea.test.tsx +50 -0
  47. package/src/primitives/segmented-control.tsx +7 -7
  48. package/src/primitives/sheet.tsx +7 -1
  49. package/src/primitives/textarea.tsx +77 -4
@@ -381,6 +381,7 @@ function CrudForm({
381
381
  loadingMessage,
382
382
  customEntity = false,
383
383
  embedded = false,
384
+ density = "default",
384
385
  hideFooterActions = false,
385
386
  trackDirtyWhenEmbedded = false,
386
387
  onDirtyChange,
@@ -886,6 +887,11 @@ function CrudForm({
886
887
  }, []);
887
888
  const dialogFooterClass = isInDialog ? "sticky bottom-0 left-0 right-0 z-20 -mx-6 px-6 bg-card border-t border-border/70 py-2 sm:-mx-6 sm:px-6" : "";
888
889
  const dialogFormPadding = "";
890
+ const isCompactDensity = density === "compact";
891
+ const densityStackLg = isCompactDensity ? "space-y-3" : "space-y-4";
892
+ const densityStackMd = isCompactDensity ? "space-y-2" : "space-y-3";
893
+ const densityCardPadding = isCompactDensity ? "p-3" : "p-4";
894
+ const densityGroupCardPadding = isCompactDensity ? "px-3 py-2" : "px-4 py-3";
889
895
  const buildCustomFieldsManageHref = React.useCallback(
890
896
  (targetEntityId) => {
891
897
  if (!targetEntityId) return null;
@@ -2551,7 +2557,7 @@ function CrudForm({
2551
2557
  const sectionKey = `${entityLayout.entityId}:${section.fieldsetCode ?? "default"}`;
2552
2558
  const manageDisabled = !manageHref;
2553
2559
  nodes.push(
2554
- /* @__PURE__ */ jsxs("div", { className: "rounded-lg border bg-card p-4 space-y-4", children: [
2560
+ /* @__PURE__ */ jsxs("div", { className: `rounded-lg border bg-card ${densityCardPadding} ${densityStackLg}`, children: [
2555
2561
  /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-3", children: [
2556
2562
  /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2", children: [
2557
2563
  FieldsetIcon ? /* @__PURE__ */ jsx(FieldsetIcon, { className: "size-5 text-muted-foreground" }) : null,
@@ -2763,7 +2769,7 @@ function CrudForm({
2763
2769
  errorCount: customFieldErrors,
2764
2770
  fieldCount: customFieldCount,
2765
2771
  chevronPosition: collapsibleChevronPosition,
2766
- children: /* @__PURE__ */ jsx("div", { className: "space-y-3", children: customFieldsInnerNodes })
2772
+ children: /* @__PURE__ */ jsx("div", { className: densityStackMd, children: customFieldsInnerNodes })
2767
2773
  },
2768
2774
  g.id
2769
2775
  )
@@ -2812,14 +2818,14 @@ function CrudForm({
2812
2818
  errorCount: groupErrorCount,
2813
2819
  fieldCount: groupFields.length,
2814
2820
  chevronPosition: collapsibleChevronPosition,
2815
- children: /* @__PURE__ */ jsx("div", { className: "space-y-3", children: groupContent })
2821
+ children: /* @__PURE__ */ jsx("div", { className: densityStackMd, children: groupContent })
2816
2822
  },
2817
2823
  g.id
2818
2824
  )
2819
2825
  );
2820
2826
  } else {
2821
2827
  nodes.push(
2822
- /* @__PURE__ */ jsxs("div", { className: "rounded-lg border bg-card px-4 py-3 space-y-3", children: [
2828
+ /* @__PURE__ */ jsxs("div", { className: `rounded-lg border bg-card ${densityGroupCardPadding} ${densityStackMd}`, children: [
2823
2829
  g.title ? /* @__PURE__ */ jsx("div", { className: "text-sm font-medium", children: t(g.title, g.title) }) : null,
2824
2830
  groupContent
2825
2831
  ] }, g.id)
@@ -2862,7 +2868,7 @@ function CrudForm({
2862
2868
  spinnerSize: "md",
2863
2869
  className: embedded ? "min-h-[1px]" : "min-h-[400px]",
2864
2870
  children: wrapFormBody(
2865
- /* @__PURE__ */ jsxs("form", { id: formId, onSubmit: handleSubmit, className: `space-y-4 ${dialogFormPadding}`, children: [
2871
+ /* @__PURE__ */ jsxs("form", { id: formId, onSubmit: handleSubmit, className: `${densityStackLg} ${dialogFormPadding}`, children: [
2866
2872
  resolvedInjectionSpotId ? /* @__PURE__ */ jsx(
2867
2873
  InjectionSpot,
2868
2874
  {
@@ -2879,8 +2885,8 @@ function CrudForm({
2879
2885
  {
2880
2886
  className: hasSecondaryColumn ? "grid grid-cols-1 lg:grid-cols-[7fr_3fr] gap-4" : "grid grid-cols-1 gap-4",
2881
2887
  children: [
2882
- sortableGroupsEnabled ? /* @__PURE__ */ jsx(DndContext, { sensors: sortableSensors, collisionDetection: closestCenter, onDragEnd: handleGroupDragEnd, children: /* @__PURE__ */ jsx(SortableContext, { items: col1Ids, strategy: verticalListSortingStrategy, children: /* @__PURE__ */ jsx("div", { className: "space-y-3", children: col1Content }) }) }) : /* @__PURE__ */ jsx("div", { className: "space-y-3", children: col1Content }),
2883
- hasSecondaryColumn ? /* @__PURE__ */ jsx("div", { className: "space-y-3", "data-crud-injection-region": true, children: col2Content }) : null
2888
+ sortableGroupsEnabled ? /* @__PURE__ */ jsx(DndContext, { sensors: sortableSensors, collisionDetection: closestCenter, onDragEnd: handleGroupDragEnd, children: /* @__PURE__ */ jsx(SortableContext, { items: col1Ids, strategy: verticalListSortingStrategy, children: /* @__PURE__ */ jsx("div", { className: densityStackMd, children: col1Content }) }) }) : /* @__PURE__ */ jsx("div", { className: densityStackMd, children: col1Content }),
2889
+ hasSecondaryColumn ? /* @__PURE__ */ jsx("div", { className: densityStackMd, "data-crud-injection-region": true, children: col2Content }) : null
2884
2890
  ]
2885
2891
  }
2886
2892
  ),
@@ -2945,7 +2951,7 @@ function CrudForm({
2945
2951
  {
2946
2952
  id: formId,
2947
2953
  onSubmit: handleSubmit,
2948
- className: `${embedded ? "space-y-4" : "rounded-lg border bg-card p-4 space-y-4"} ${dialogFormPadding}`,
2954
+ className: `${embedded ? densityStackLg : `rounded-lg border bg-card ${densityCardPadding} ${densityStackLg}`} ${dialogFormPadding}`,
2949
2955
  children: [
2950
2956
  resolvedInjectionSpotId ? /* @__PURE__ */ jsx(
2951
2957
  InjectionSpot,