@seedgrid/fe-components 2026.11.2 → 2026.11.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/dist/ai/seedgrid-components.manifest.json +323 -65
  2. package/dist/buttons/SgButton.d.ts +6 -2
  3. package/dist/buttons/SgButton.d.ts.map +1 -1
  4. package/dist/buttons/SgButton.js +2 -2
  5. package/dist/buttons/SgButton.meta.js +3 -3
  6. package/dist/buttons/SgFloatActionButton.d.ts +2 -2
  7. package/dist/buttons/SgFloatActionButton.d.ts.map +1 -1
  8. package/dist/buttons/SgFloatActionButton.js +7 -7
  9. package/dist/buttons/SgFloatActionButton.meta.js +2 -2
  10. package/dist/buttons/SgSplitButton.d.ts +2 -2
  11. package/dist/buttons/SgSplitButton.d.ts.map +1 -1
  12. package/dist/buttons/SgSplitButton.js +4 -4
  13. package/dist/buttons/SgSplitButton.meta.js +3 -3
  14. package/dist/commons/SgAvatar.d.ts +2 -2
  15. package/dist/commons/SgAvatar.d.ts.map +1 -1
  16. package/dist/commons/SgAvatar.js +3 -3
  17. package/dist/commons/SgBadge.d.ts +1 -1
  18. package/dist/commons/SgBadge.d.ts.map +1 -1
  19. package/dist/commons/SgBadge.js +3 -3
  20. package/dist/generated/compiledStyles.d.ts +1 -1
  21. package/dist/generated/compiledStyles.d.ts.map +1 -1
  22. package/dist/generated/compiledStyles.js +1 -1
  23. package/dist/i18n/en-US.d.ts.map +1 -1
  24. package/dist/i18n/en-US.js +26 -0
  25. package/dist/i18n/es.d.ts.map +1 -1
  26. package/dist/i18n/es.js +26 -0
  27. package/dist/i18n/fr.d.ts.map +1 -1
  28. package/dist/i18n/fr.js +26 -0
  29. package/dist/i18n/pt-BR.d.ts.map +1 -1
  30. package/dist/i18n/pt-BR.js +26 -0
  31. package/dist/i18n/pt-PT.d.ts.map +1 -1
  32. package/dist/i18n/pt-PT.js +26 -0
  33. package/dist/index.d.ts +3 -1
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +2 -1
  36. package/dist/inputs/SgAutocomplete.d.ts +1 -1
  37. package/dist/inputs/SgAutocomplete.d.ts.map +1 -1
  38. package/dist/inputs/SgAutocomplete.js +3 -3
  39. package/dist/inputs/SgCameraCapture.d.ts +1 -1
  40. package/dist/inputs/SgCameraCapture.d.ts.map +1 -1
  41. package/dist/inputs/SgCameraCapture.js +4 -4
  42. package/dist/inputs/SgCameraCapture.meta.js +1 -1
  43. package/dist/inputs/SgCheckboxGroup.d.ts +2 -2
  44. package/dist/inputs/SgCheckboxGroup.d.ts.map +1 -1
  45. package/dist/inputs/SgCheckboxGroup.js +12 -12
  46. package/dist/inputs/SgCombobox.js +5 -5
  47. package/dist/inputs/SgDatatable.js +11 -11
  48. package/dist/inputs/SgDatatable.meta.d.ts.map +1 -1
  49. package/dist/inputs/SgDatatable.meta.js +4 -1
  50. package/dist/inputs/SgFileUpload.d.ts +1 -1
  51. package/dist/inputs/SgFileUpload.d.ts.map +1 -1
  52. package/dist/inputs/SgFileUpload.js +2 -2
  53. package/dist/inputs/SgFileUpload.meta.js +1 -1
  54. package/dist/inputs/SgImageUpload.meta.js +1 -1
  55. package/dist/inputs/SgInputCurrency.d.ts.map +1 -1
  56. package/dist/inputs/SgInputCurrency.js +6 -4
  57. package/dist/inputs/SgInputDate.d.ts.map +1 -1
  58. package/dist/inputs/SgInputDate.js +3 -4
  59. package/dist/inputs/SgInputDateTime.d.ts.map +1 -1
  60. package/dist/inputs/SgInputDateTime.js +11 -0
  61. package/dist/inputs/SgInputNumber.d.ts.map +1 -1
  62. package/dist/inputs/SgInputNumber.js +6 -4
  63. package/dist/inputs/SgInputText.d.ts.map +1 -1
  64. package/dist/inputs/SgInputText.js +6 -4
  65. package/dist/inputs/SgInputTextArea.d.ts.map +1 -1
  66. package/dist/inputs/SgInputTextArea.js +4 -2
  67. package/dist/inputs/SgMultiSelect.meta.js +1 -1
  68. package/dist/inputs/SgMultiSelectChips.meta.js +1 -1
  69. package/dist/inputs/SgMultiSelectDropdown.js +1 -1
  70. package/dist/inputs/SgOrderList.d.ts +3 -3
  71. package/dist/inputs/SgOrderList.d.ts.map +1 -1
  72. package/dist/inputs/SgOrderList.js +13 -13
  73. package/dist/inputs/SgOrderList.meta.js +1 -1
  74. package/dist/inputs/SgPeriodSelector.d.ts +1 -1
  75. package/dist/inputs/SgPeriodSelector.d.ts.map +1 -1
  76. package/dist/inputs/SgPeriodSelector.js +3 -3
  77. package/dist/inputs/SgPickList.d.ts +3 -3
  78. package/dist/inputs/SgPickList.d.ts.map +1 -1
  79. package/dist/inputs/SgPickList.js +28 -28
  80. package/dist/inputs/SgPickList.meta.js +1 -1
  81. package/dist/inputs/SgRadioGroup.d.ts +2 -2
  82. package/dist/inputs/SgRadioGroup.d.ts.map +1 -1
  83. package/dist/inputs/SgRadioGroup.js +5 -5
  84. package/dist/inputs/SgRating.d.ts +1 -1
  85. package/dist/inputs/SgRating.d.ts.map +1 -1
  86. package/dist/inputs/SgRating.js +7 -7
  87. package/dist/inputs/SgRating.meta.js +1 -1
  88. package/dist/inputs/SgSlider.d.ts +1 -1
  89. package/dist/inputs/SgSlider.d.ts.map +1 -1
  90. package/dist/inputs/SgSlider.js +3 -3
  91. package/dist/inputs/SgSlider.meta.js +1 -1
  92. package/dist/inputs/SgStepperInput.d.ts +2 -2
  93. package/dist/inputs/SgStepperInput.d.ts.map +1 -1
  94. package/dist/inputs/SgStepperInput.js +4 -4
  95. package/dist/inputs/SgStepperInput.meta.js +1 -1
  96. package/dist/inputs/SgTextEditor.d.ts +1 -1
  97. package/dist/inputs/SgTextEditor.d.ts.map +1 -1
  98. package/dist/inputs/SgTextEditor.js +14 -14
  99. package/dist/inputs/SgToggleSwitch.meta.js +1 -1
  100. package/dist/inputs/SgYearPartSelector.d.ts +1 -1
  101. package/dist/inputs/SgYearPartSelector.d.ts.map +1 -1
  102. package/dist/inputs/SgYearPartSelector.js +1 -2
  103. package/dist/inputs/SgYearPartSelector.meta.js +2 -2
  104. package/dist/inputs/dateTimeLogic.d.ts +7 -1
  105. package/dist/inputs/dateTimeLogic.d.ts.map +1 -1
  106. package/dist/inputs/dateTimeLogic.js +17 -4
  107. package/dist/inputs/useSgMultiSelect.d.ts +1 -1
  108. package/dist/inputs/useSgMultiSelect.d.ts.map +1 -1
  109. package/dist/inputs/useSgMultiSelect.js +1 -1
  110. package/dist/layout/SgAccordion.d.ts +1 -1
  111. package/dist/layout/SgAccordion.d.ts.map +1 -1
  112. package/dist/layout/SgAccordion.js +3 -3
  113. package/dist/layout/SgBreadcrumb.d.ts +1 -1
  114. package/dist/layout/SgBreadcrumb.d.ts.map +1 -1
  115. package/dist/layout/SgBreadcrumb.js +1 -1
  116. package/dist/layout/SgCard.d.ts +1 -1
  117. package/dist/layout/SgCard.d.ts.map +1 -1
  118. package/dist/layout/SgCard.js +14 -14
  119. package/dist/layout/SgMenu.d.ts +1 -1
  120. package/dist/layout/SgMenu.d.ts.map +1 -1
  121. package/dist/layout/SgMenu.js +15 -15
  122. package/dist/layout/SgPageControl.d.ts +1 -1
  123. package/dist/layout/SgPageControl.d.ts.map +1 -1
  124. package/dist/layout/SgPageControl.js +4 -4
  125. package/dist/layout/SgPageControlPage.meta.js +2 -2
  126. package/dist/layout/SgToolBar.d.ts +1 -1
  127. package/dist/layout/SgToolBar.d.ts.map +1 -1
  128. package/dist/layout/SgToolBar.js +4 -4
  129. package/dist/layout/SgToolbarIconButton.meta.js +2 -2
  130. package/dist/layout/SgTreeView.d.ts +4 -4
  131. package/dist/layout/SgTreeView.d.ts.map +1 -1
  132. package/dist/layout/SgTreeView.js +6 -6
  133. package/dist/menus/SgDockMenu.d.ts +1 -1
  134. package/dist/menus/SgDockMenu.d.ts.map +1 -1
  135. package/dist/menus/SgDockMenu.js +4 -4
  136. package/dist/notifications/SgNotificationBell.d.ts +51 -0
  137. package/dist/notifications/SgNotificationBell.d.ts.map +1 -0
  138. package/dist/notifications/SgNotificationBell.js +348 -0
  139. package/dist/notifications/SgNotificationBell.meta.d.ts +4 -0
  140. package/dist/notifications/SgNotificationBell.meta.d.ts.map +1 -0
  141. package/dist/notifications/SgNotificationBell.meta.js +75 -0
  142. package/dist/notifications/notificationBellLogic.d.ts +148 -0
  143. package/dist/notifications/notificationBellLogic.d.ts.map +1 -0
  144. package/dist/notifications/notificationBellLogic.js +244 -0
  145. package/dist/overlay/SgConfirmationDialog.d.ts +1 -1
  146. package/dist/overlay/SgConfirmationDialog.d.ts.map +1 -1
  147. package/dist/overlay/SgConfirmationDialog.js +1 -1
  148. package/dist/overlay/SgPopup.d.ts +1 -1
  149. package/dist/overlay/SgPopup.d.ts.map +1 -1
  150. package/dist/overlay/SgPopup.js +1 -1
  151. package/dist/realtime/SgRealtimeProvider.d.ts +5 -0
  152. package/dist/realtime/SgRealtimeProvider.d.ts.map +1 -1
  153. package/dist/realtime/SgRealtimeProvider.js +31 -8
  154. package/dist/sandbox.cjs +62 -62
  155. package/dist/style.css +1 -1
  156. package/package.json +3 -3
@@ -423,7 +423,7 @@ export function SgMenu(props) {
423
423
  }));
424
424
  }, [maps.childrenByParent, maps.parentById, mode, setExpandedIds]);
425
425
  const activateNode = React.useCallback((node) => {
426
- if (node.disabled)
426
+ if ((node.enabled === false))
427
427
  return;
428
428
  hideMenuHint();
429
429
  onItemClick?.(node);
@@ -593,7 +593,7 @@ export function SgMenu(props) {
593
593
  const openNow = hasSearch || expandedSet.has(node.id);
594
594
  const isExactActive = activeSets.exact.has(node.id);
595
595
  const isBranchActive = activeSets.branch.has(node.id);
596
- const disabled = !!node.disabled;
596
+ const disabled = node.enabled === false;
597
597
  const iconNode = resolveIcon(node);
598
598
  const hideChildren = isCollapsed;
599
599
  const nodeHint = node.hint ?? (isCollapsed ? node.label : undefined);
@@ -642,8 +642,8 @@ export function SgMenu(props) {
642
642
  const isBranchActive = activeSets.branch.has(node.id);
643
643
  const hasChildren = !!node.children?.length;
644
644
  const iconNode = resolveIcon(node);
645
- return (_jsxs("button", { type: "button", disabled: node.disabled, "aria-current": isExactActive ? "page" : undefined, onMouseEnter: node.hint ? (event) => showMenuHint(event.currentTarget, node.hint) : undefined, onMouseLeave: node.hint ? hideMenuHint : undefined, onClick: () => {
646
- if (node.disabled)
645
+ return (_jsxs("button", { type: "button", disabled: node.enabled === false, "aria-current": isExactActive ? "page" : undefined, onMouseEnter: node.hint ? (event) => showMenuHint(event.currentTarget, node.hint) : undefined, onMouseLeave: node.hint ? hideMenuHint : undefined, onClick: () => {
646
+ if ((node.enabled === false))
647
647
  return;
648
648
  const intent = resolveMenuNodeActionIntent({
649
649
  variant: "flat",
@@ -657,7 +657,7 @@ export function SgMenu(props) {
657
657
  ? "bg-primary/15 text-primary"
658
658
  : isBranchActive
659
659
  ? "bg-muted/60 text-foreground"
660
- : "text-foreground hover:bg-muted/60", node.disabled ? "cursor-not-allowed opacity-55" : "", className), children: [_jsx("span", { className: cn("inline-flex shrink-0 items-center justify-center rounded", densityCfg.icon, iconNode ? "" : "bg-muted text-[10px] font-semibold"), children: iconNode ?? firstChars(node.label, 1) }), _jsx("span", { className: "min-w-0 flex-1 truncate", children: node.label }), hasChildren ? _jsx(ChevronRight, { className: "size-4 shrink-0 text-muted-foreground" }) : null] }, node.id));
660
+ : "text-foreground hover:bg-muted/60", (node.enabled === false) ? "cursor-not-allowed opacity-55" : "", className), children: [_jsx("span", { className: cn("inline-flex shrink-0 items-center justify-center rounded", densityCfg.icon, iconNode ? "" : "bg-muted text-[10px] font-semibold"), children: iconNode ?? firstChars(node.label, 1) }), _jsx("span", { className: "min-w-0 flex-1 truncate", children: node.label }), hasChildren ? _jsx(ChevronRight, { className: "size-4 shrink-0 text-muted-foreground" }) : null] }, node.id));
661
661
  }, [activateNode, activeSets.branch, activeSets.exact, densityCfg.icon, hideMenuHint, showMenuHint]);
662
662
  const renderTieredLevels = React.useCallback((nodes, depth) => {
663
663
  if (!nodes.length)
@@ -671,7 +671,7 @@ export function SgMenu(props) {
671
671
  const isOpen = activeIdAtDepth === node.id;
672
672
  const isExactActive = activeSets.exact.has(node.id);
673
673
  const iconNode = resolveIcon(node);
674
- return (_jsxs("button", { type: "button", disabled: node.disabled, "aria-current": isExactActive ? "page" : undefined, onMouseEnter: (event) => {
674
+ return (_jsxs("button", { type: "button", disabled: node.enabled === false, "aria-current": isExactActive ? "page" : undefined, onMouseEnter: (event) => {
675
675
  if (node.hint)
676
676
  showMenuHint(event.currentTarget, node.hint);
677
677
  setTieredPath((prev) => resolveTieredHoverIntent({
@@ -682,7 +682,7 @@ export function SgMenu(props) {
682
682
  openSubmenuOnHover
683
683
  }) ?? prev);
684
684
  }, onMouseLeave: node.hint ? hideMenuHint : undefined, onClick: () => {
685
- if (node.disabled)
685
+ if ((node.enabled === false))
686
686
  return;
687
687
  const nextState = resolveTieredNodeClickIntent({
688
688
  currentPath: tieredPath,
@@ -701,7 +701,7 @@ export function SgMenu(props) {
701
701
  setTieredPath([]);
702
702
  }
703
703
  activateNode(node);
704
- }, className: cn("flex w-full items-center gap-2 rounded-md px-2.5 py-2 text-left text-sm transition-colors", isExactActive ? "bg-primary/15 text-primary" : isOpen ? "bg-muted/70" : "hover:bg-muted/60", node.disabled ? "cursor-not-allowed opacity-55" : ""), children: [_jsx("span", { className: cn("inline-flex shrink-0 items-center justify-center rounded", densityCfg.icon, iconNode ? "" : "bg-muted text-[10px] font-semibold"), children: iconNode ?? firstChars(node.label, 1) }), _jsx("span", { className: "min-w-0 flex-1 truncate", children: node.label }), hasChildren ? (tieredOpenToLeft ? (_jsx(ChevronLeft, { className: "size-4 shrink-0 text-muted-foreground" })) : (_jsx(ChevronRight, { className: "size-4 shrink-0 text-muted-foreground" }))) : null] }, node.id));
704
+ }, className: cn("flex w-full items-center gap-2 rounded-md px-2.5 py-2 text-left text-sm transition-colors", isExactActive ? "bg-primary/15 text-primary" : isOpen ? "bg-muted/70" : "hover:bg-muted/60", (node.enabled === false) ? "cursor-not-allowed opacity-55" : ""), children: [_jsx("span", { className: cn("inline-flex shrink-0 items-center justify-center rounded", densityCfg.icon, iconNode ? "" : "bg-muted text-[10px] font-semibold"), children: iconNode ?? firstChars(node.label, 1) }), _jsx("span", { className: "min-w-0 flex-1 truncate", children: node.label }), hasChildren ? (tieredOpenToLeft ? (_jsx(ChevronLeft, { className: "size-4 shrink-0 text-muted-foreground" })) : (_jsx(ChevronRight, { className: "size-4 shrink-0 text-muted-foreground" }))) : null] }, node.id));
705
705
  }) }), activeNode?.children?.length
706
706
  ? renderTieredLevels(activeNode.children, depth + 1)
707
707
  : null] }));
@@ -737,7 +737,7 @@ export function SgMenu(props) {
737
737
  const hasChildren = !!node.children?.length;
738
738
  const active = activeMegaNode?.id === node.id;
739
739
  const iconNode = resolveIcon(node);
740
- return (_jsxs("button", { type: "button", disabled: node.disabled, onMouseEnter: (event) => {
740
+ return (_jsxs("button", { type: "button", disabled: node.enabled === false, onMouseEnter: (event) => {
741
741
  if (node.hint)
742
742
  showMenuHint(event.currentTarget, node.hint);
743
743
  const nextMegaActiveId = resolveMegaMenuHoverActiveId({
@@ -747,7 +747,7 @@ export function SgMenu(props) {
747
747
  if (nextMegaActiveId)
748
748
  setMegaActiveId(nextMegaActiveId);
749
749
  }, onMouseLeave: node.hint ? hideMenuHint : undefined, onClick: () => {
750
- if (node.disabled)
750
+ if ((node.enabled === false))
751
751
  return;
752
752
  const nextState = resolveMegaMenuInteraction({
753
753
  nodeId: node.id,
@@ -759,14 +759,14 @@ export function SgMenu(props) {
759
759
  if (!nextState.shouldActivateNode)
760
760
  return;
761
761
  activateNode(node);
762
- }, className: cn("inline-flex items-center gap-2 rounded-md px-3 py-2 text-sm transition-colors", active ? "bg-muted/80 text-foreground" : "hover:bg-muted/60", node.disabled ? "cursor-not-allowed opacity-55" : ""), children: [iconNode ? (_jsx("span", { className: cn("inline-flex shrink-0 items-center justify-center", densityCfg.icon), children: iconNode })) : null, _jsx("span", { className: "truncate", children: node.label }), hasChildren ? _jsx(ChevronDown, { className: "size-4 shrink-0 text-muted-foreground" }) : null] }, node.id));
762
+ }, className: cn("inline-flex items-center gap-2 rounded-md px-3 py-2 text-sm transition-colors", active ? "bg-muted/80 text-foreground" : "hover:bg-muted/60", (node.enabled === false) ? "cursor-not-allowed opacity-55" : ""), children: [iconNode ? (_jsx("span", { className: cn("inline-flex shrink-0 items-center justify-center", densityCfg.icon), children: iconNode })) : null, _jsx("span", { className: "truncate", children: node.label }), hasChildren ? _jsx(ChevronDown, { className: "size-4 shrink-0 text-muted-foreground" }) : null] }, node.id));
763
763
  }) }), _jsx("div", { className: "p-4", children: renderMegaColumns(activeMegaNode?.children ?? []) })] }));
764
764
  }
765
765
  return (_jsxs("div", { className: "flex rounded-md border border-border bg-background", children: [_jsx("div", { className: "w-52 shrink-0 border-r border-border p-1", children: items.map((node) => {
766
766
  const hasChildren = !!node.children?.length;
767
767
  const active = activeMegaNode?.id === node.id;
768
768
  const iconNode = resolveIcon(node);
769
- return (_jsxs("button", { type: "button", disabled: node.disabled, onMouseEnter: (event) => {
769
+ return (_jsxs("button", { type: "button", disabled: node.enabled === false, onMouseEnter: (event) => {
770
770
  if (node.hint)
771
771
  showMenuHint(event.currentTarget, node.hint);
772
772
  const nextMegaActiveId = resolveMegaMenuHoverActiveId({
@@ -776,7 +776,7 @@ export function SgMenu(props) {
776
776
  if (nextMegaActiveId)
777
777
  setMegaActiveId(nextMegaActiveId);
778
778
  }, onMouseLeave: node.hint ? hideMenuHint : undefined, onClick: () => {
779
- if (node.disabled)
779
+ if ((node.enabled === false))
780
780
  return;
781
781
  const nextState = resolveMegaMenuInteraction({
782
782
  nodeId: node.id,
@@ -788,7 +788,7 @@ export function SgMenu(props) {
788
788
  if (!nextState.shouldActivateNode)
789
789
  return;
790
790
  activateNode(node);
791
- }, className: cn("flex w-full items-center gap-2 rounded-md px-2.5 py-2 text-left text-sm transition-colors", active ? "bg-muted/80 text-foreground" : "hover:bg-muted/60", node.disabled ? "cursor-not-allowed opacity-55" : ""), children: [iconNode ? (_jsx("span", { className: cn("inline-flex shrink-0 items-center justify-center", densityCfg.icon), children: iconNode })) : null, _jsx("span", { className: "min-w-0 flex-1 truncate", children: node.label }), hasChildren ? _jsx(ChevronRight, { className: "size-4 shrink-0 text-muted-foreground" }) : null] }, node.id));
791
+ }, className: cn("flex w-full items-center gap-2 rounded-md px-2.5 py-2 text-left text-sm transition-colors", active ? "bg-muted/80 text-foreground" : "hover:bg-muted/60", (node.enabled === false) ? "cursor-not-allowed opacity-55" : ""), children: [iconNode ? (_jsx("span", { className: cn("inline-flex shrink-0 items-center justify-center", densityCfg.icon), children: iconNode })) : null, _jsx("span", { className: "min-w-0 flex-1 truncate", children: node.label }), hasChildren ? _jsx(ChevronRight, { className: "size-4 shrink-0 text-muted-foreground" }) : null] }, node.id));
792
792
  }) }), _jsx("div", { className: "min-h-[220px] flex-1 p-4", children: renderMegaColumns(activeMegaNode?.children ?? []) })] }));
793
793
  };
794
794
  const showDockDragHandle = dockMode && draggable && (!isCollapsed || isHorizontalDockZone);
@@ -831,7 +831,7 @@ export function SgMenu(props) {
831
831
  if (!nodeId)
832
832
  return;
833
833
  const node = maps.nodeById.get(nodeId);
834
- if (!node || node.disabled)
834
+ if (!node || (node.enabled === false))
835
835
  return;
836
836
  const parentChain = collectParentChain(maps.parentById, node.id);
837
837
  const rootToParent = [...parentChain].reverse();
@@ -5,7 +5,7 @@ export type SgPageControlPageProps = {
5
5
  hint?: string;
6
6
  icon?: React.ReactNode;
7
7
  hidden?: boolean;
8
- disabled?: boolean;
8
+ enabled?: boolean;
9
9
  keepMounted?: boolean;
10
10
  className?: string;
11
11
  style?: React.CSSProperties;
@@ -1 +1 @@
1
- {"version":3,"file":"SgPageControl.d.ts","sourceRoot":"","sources":["../../src/layout/SgPageControl.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAE1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,CACrB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,sBAAsB,CAAA;KAAE,KACrD,IAAI,CAAC;IACV,mBAAmB,CAAC,EAAE,CACpB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,sBAAsB,CAAA;KAAE,KACtD,IAAI,CAAC;IAEV,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;IACzC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACxC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B,CAAC;AA4CF,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,kBAAkB,CAAC,2CA+ThE;yBA/Te,aAAa;;;AAmU7B,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,2CAExE;yBAFe,iBAAiB"}
1
+ {"version":3,"file":"SgPageControl.d.ts","sourceRoot":"","sources":["../../src/layout/SgPageControl.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAE1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,CACrB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,sBAAsB,CAAA;KAAE,KACrD,IAAI,CAAC;IACV,mBAAmB,CAAC,EAAE,CACpB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,sBAAsB,CAAA;KAAE,KACtD,IAAI,CAAC;IAEV,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;IACzC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACxC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B,CAAC;AA4CF,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,kBAAkB,CAAC,2CA+ThE;yBA/Te,aAAa;;;AAmU7B,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,2CAExE;yBAFe,iBAAiB"}
@@ -77,7 +77,7 @@ export function SgPageControl(props) {
77
77
  }, [onActiveIndexChange, onActivePageIdChange, visiblePages]);
78
78
  const selectPage = React.useCallback((nextId) => {
79
79
  const next = visiblePages.find((record) => record.id === nextId);
80
- if (!next || next.props.disabled)
80
+ if (!next || (next.props.enabled === false))
81
81
  return;
82
82
  if (!isControlled)
83
83
  setInternalActiveId(nextId);
@@ -144,7 +144,7 @@ export function SgPageControl(props) {
144
144
  // Alternativa do celular: as abas viram um select nativo. Fica escondido a partir
145
145
  // do tablet, e a troca e feita por CSS (nao por media query em JS) para nao
146
146
  // depender do tamanho da janela na primeira renderizacao.
147
- _jsx("div", { className: "mb-2 md:hidden", children: _jsx("select", { "aria-label": resolvedAriaLabel, value: resolvedActiveId ?? "", onChange: (event) => selectPage(event.target.value), className: cn("w-full rounded-md border border-border bg-background px-3 font-medium text-foreground", sizeClasses.select), children: visiblePages.map((record) => (_jsx("option", { value: record.id, disabled: record.props.disabled, children: optionLabel(record) }, record.id))) }) })) : null, _jsx("div", { role: "tablist", ref: tabListRef, "aria-label": resolvedAriaLabel, className: cn("min-h-0 items-end gap-1 overflow-x-auto border-b border-border pb-0.5",
147
+ _jsx("div", { className: "mb-2 md:hidden", children: _jsx("select", { "aria-label": resolvedAriaLabel, value: resolvedActiveId ?? "", onChange: (event) => selectPage(event.target.value), className: cn("w-full rounded-md border border-border bg-background px-3 font-medium text-foreground", sizeClasses.select), children: visiblePages.map((record) => (_jsx("option", { value: record.id, disabled: record.props.enabled === false, children: optionLabel(record) }, record.id))) }) })) : null, _jsx("div", { role: "tablist", ref: tabListRef, "aria-label": resolvedAriaLabel, className: cn("min-h-0 items-end gap-1 overflow-x-auto border-b border-border pb-0.5",
148
148
  // Um unico utilitario de display por breakpoint. Antes `flex` e `grid` saiam
149
149
  // juntos no mesmo elemento e quem vencia dependia da ordem no CSS gerado.
150
150
  mobilePageControl === "select" ? "hidden" : "flex", fullWidthTabs ? "md:grid md:auto-cols-fr md:grid-flow-col" : "md:flex", tabListClassName), onKeyDown: (event) => {
@@ -188,10 +188,10 @@ export function SgPageControl(props) {
188
188
  const panelId = `${rootId}-panel-${record.id}`;
189
189
  return (_jsxs("button", { ref: (el) => {
190
190
  tabsRef.current[index] = el;
191
- }, type: "button", id: tabId, role: "tab", "aria-controls": panelId, "aria-selected": isActive, tabIndex: isActive ? 0 : -1, title: record.props.hint, disabled: record.props.disabled, onClick: () => selectPage(record.id), className: cn("inline-flex shrink-0 items-center justify-center whitespace-nowrap font-medium transition-colors", sizeClasses.tab, tabStyle.base, isActive ? tabStyle.active : tabStyle.inactive,
191
+ }, type: "button", id: tabId, role: "tab", "aria-controls": panelId, "aria-selected": isActive, tabIndex: isActive ? 0 : -1, title: record.props.hint, disabled: record.props.enabled === false, onClick: () => selectPage(record.id), className: cn("inline-flex shrink-0 items-center justify-center whitespace-nowrap font-medium transition-colors", sizeClasses.tab, tabStyle.base, isActive ? tabStyle.active : tabStyle.inactive,
192
192
  // No celular a lista e flex com rolagem: `w-full` faria cada aba ocupar a
193
193
  // largura toda do container.
194
- fullWidthTabs ? "md:w-full" : "", record.props.disabled ? "cursor-not-allowed opacity-45" : "", tabClassName, record.props.tabClassName), children: [record.props.icon ? (_jsx("span", { className: cn("inline-flex items-center justify-center", sizeClasses.icon), children: record.props.icon })) : null, _jsx("span", { className: "truncate", children: record.props.title })] }, record.id));
194
+ fullWidthTabs ? "md:w-full" : "", (record.props.enabled === false) ? "cursor-not-allowed opacity-45" : "", tabClassName, record.props.tabClassName), children: [record.props.icon ? (_jsx("span", { className: cn("inline-flex items-center justify-center", sizeClasses.icon), children: record.props.icon })) : null, _jsx("span", { className: "truncate", children: record.props.title })] }, record.id));
195
195
  }) }), _jsx("div", { className: cn("rounded-b-md border border-t-0 border-border bg-background", panelClassName), children: visiblePages.length === 0 ? (_jsx("div", { className: cn(sizeClasses.panel, "text-sm text-muted-foreground"), children: resolvedEmptyMessage })) : keepMounted ? (visiblePages.map((record) => {
196
196
  const isActive = record.id === resolvedActiveId;
197
197
  const tabId = `${rootId}-tab-${record.id}`;
@@ -17,13 +17,13 @@ export const sgMeta = {
17
17
  { name: "hint", type: "string", description: "Descricao curta associada a aba.", semanticRole: "label", bindable: true },
18
18
  { name: "icon", type: "ReactNode", description: "Icone opcional da aba.", semanticRole: "label", bindable: true },
19
19
  { name: "hidden", type: "boolean", default: false, description: "Oculta a pagina sem remove-la da estrutura.", semanticRole: "behavior", bindable: true },
20
- { name: "disabled", type: "boolean", default: false, description: "Desabilita a selecao da pagina.", semanticRole: "behavior", bindable: true },
20
+ { name: "enabled", type: "boolean", default: true, description: "Desabilita a selecao da pagina.", semanticRole: "behavior", bindable: true },
21
21
  { name: "children", type: "ReactNode", required: true, description: "Conteudo exibido no painel desta pagina.", semanticRole: "data", bindable: false }
22
22
  ],
23
23
  states: ["default", "active", "hidden", "disabled"],
24
24
  examples: [{ id: "basic", title: "Basico", file: "apps/showcase/src/app/components/sg-page-control/samples/basico.tsx.sample", kind: "sample" }],
25
25
  showcase: { route: "/components/sg-page-control", hasPlayground: true, hasPropsTable: true },
26
- sdui: { rendererType: "navigation.page-control-page", acceptsDataBinding: true, defaultProps: { hidden: false, disabled: false } }
26
+ sdui: { rendererType: "navigation.page-control-page", acceptsDataBinding: true, defaultProps: { hidden: false, enabled: true } }
27
27
  };
28
28
  export const aiHints = {
29
29
  version: "0.1",
@@ -36,7 +36,7 @@ export type SgToolbarIconButtonProps = {
36
36
  hint?: string;
37
37
  loading?: boolean;
38
38
  severity?: SgToolBarSeverity;
39
- disabled?: boolean;
39
+ enabled?: boolean;
40
40
  onClick?: () => void | Promise<void>;
41
41
  className?: string;
42
42
  style?: React.CSSProperties;
@@ -1 +1 @@
1
- {"version":3,"file":"SgToolBar.d.ts","sourceRoot":"","sources":["../../src/layout/SgToolBar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,UAAU,CAAC;AAC7D,MAAM,MAAM,6BAA6B,GACrC,aAAa,GACb,eAAe,GACf,iBAAiB,GACjB,kBAAkB,CAAC;AACvB,MAAM,MAAM,iBAAiB,GACzB,SAAS,GACT,WAAW,GACX,SAAS,GACT,MAAM,GACN,SAAS,GACT,MAAM,GACN,QAAQ,GACR,OAAO,CAAC;AAEZ,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,oBAAoB,CAAC,EAAE,6BAA6B,CAAC;IACrD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAExD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAE3C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAEjD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B,CAAC;AAgFF,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,2CAsjBxD;yBAtjBe,SAAS;;;AAwjBzB,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,QAAQ,CAAC,wBAAwB,GAAG;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,2CAiJpE;yBAlJe,mBAAmB"}
1
+ {"version":3,"file":"SgToolBar.d.ts","sourceRoot":"","sources":["../../src/layout/SgToolBar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,UAAU,CAAC;AAC7D,MAAM,MAAM,6BAA6B,GACrC,aAAa,GACb,eAAe,GACf,iBAAiB,GACjB,kBAAkB,CAAC;AACvB,MAAM,MAAM,iBAAiB,GACzB,SAAS,GACT,WAAW,GACX,SAAS,GACT,MAAM,GACN,SAAS,GACT,MAAM,GACN,QAAQ,GACR,OAAO,CAAC;AAEZ,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,oBAAoB,CAAC,EAAE,6BAA6B,CAAC;IACrD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAExD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAE3C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAEjD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B,CAAC;AAgFF,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,2CAsjBxD;yBAtjBe,SAAS;;;AAwjBzB,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,QAAQ,CAAC,wBAAwB,GAAG;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,2CAiJpE;yBAlJe,mBAAmB"}
@@ -479,7 +479,7 @@ export function SgToolBar(props) {
479
479
  return toolbarForRender;
480
480
  }
481
481
  export function SgToolbarIconButton(props) {
482
- const { icon, label, showLabel = true, hint, loading = false, severity = "plain", disabled, onClick, hideLabel, className, style } = props;
482
+ const { icon, label, showLabel = true, hint, loading = false, severity = "plain", enabled = true, onClick, hideLabel, className, style } = props;
483
483
  const toolbarOrientation = React.useContext(SgToolbarOrientationContext);
484
484
  const isHorizontalToolbar = toolbarOrientation === "horizontal";
485
485
  const c = BTN_COLORS[severity];
@@ -492,7 +492,7 @@ export function SgToolbarIconButton(props) {
492
492
  const [isHintHovered, setIsHintHovered] = React.useState(false);
493
493
  const buttonRef = React.useRef(null);
494
494
  const handleClick = React.useCallback(() => {
495
- if (!onClick || disabled || isLoading)
495
+ if (!onClick || !enabled || isLoading)
496
496
  return;
497
497
  const result = onClick();
498
498
  if (!result || typeof result.then !== "function")
@@ -501,7 +501,7 @@ export function SgToolbarIconButton(props) {
501
501
  void result.finally(() => {
502
502
  setIsPending(false);
503
503
  });
504
- }, [disabled, isLoading, onClick]);
504
+ }, [enabled, isLoading, onClick]);
505
505
  const updateHintPosition = React.useCallback(() => {
506
506
  if (!buttonRef.current)
507
507
  return;
@@ -546,7 +546,7 @@ export function SgToolbarIconButton(props) {
546
546
  : "translateY(-50%)"
547
547
  }, children: hint }), document.body)
548
548
  : null;
549
- return (_jsxs(_Fragment, { children: [_jsxs("button", { ref: buttonRef, type: "button", disabled: disabled || isLoading, onClick: handleClick, "aria-busy": isLoading || undefined, onMouseEnter: showHintTooltip ? () => {
549
+ return (_jsxs(_Fragment, { children: [_jsxs("button", { ref: buttonRef, type: "button", disabled: !enabled || isLoading, onClick: handleClick, "aria-busy": isLoading || undefined, onMouseEnter: showHintTooltip ? () => {
550
550
  updateHintPosition();
551
551
  setIsHintHovered(true);
552
552
  } : undefined, onMouseLeave: showHintTooltip ? () => setIsHintHovered(false) : undefined, "aria-label": hint ?? label ?? text ?? undefined, className: cn("group", "relative inline-flex items-center justify-center rounded-lg", "transition-[transform,filter] duration-150", "hover:brightness-95 active:brightness-90", "focus-visible:outline-none focus-visible:ring-4", "disabled:opacity-50 disabled:cursor-not-allowed", hasVisibleLabel ? "gap-2 px-2 pr-3" : "", className), style: {
@@ -18,13 +18,13 @@ export const sgMeta = {
18
18
  { name: "showLabel", type: "boolean", default: false, description: "Exibe o rotulo junto do icone quando suportado pela toolbar.", semanticRole: "appearance", bindable: true },
19
19
  { name: "loading", type: "boolean", default: false, description: "Indica processamento em andamento.", semanticRole: "behavior", bindable: true },
20
20
  { name: "severity", type: '"primary" | "secondary" | "success" | "info" | "warning" | "help" | "danger" | "plain"', default: "plain", description: "Tom visual do botao de toolbar.", semanticRole: "appearance", bindable: true },
21
- { name: "disabled", type: "boolean", default: false, description: "Desabilita interacao.", semanticRole: "behavior", bindable: true },
21
+ { name: "enabled", type: "boolean", default: true, description: "Desabilita interacao.", semanticRole: "behavior", bindable: true },
22
22
  { name: "onClick", type: "() => void | Promise<void>", description: "Callback executado ao clicar no item.", semanticRole: "event", bindable: false }
23
23
  ],
24
24
  states: ["default", "disabled", "loading"],
25
25
  examples: [{ id: "basic", title: "Basico", file: "apps/showcase/src/app/components/sg-toolbar/samples/basico.tsx.sample", kind: "sample" }],
26
26
  showcase: { route: "/components/sg-toolbar", hasPlayground: true, hasPropsTable: true },
27
- sdui: { rendererType: "action.toolbar-icon-button", acceptsDataBinding: true, defaultProps: { showLabel: false, severity: "plain", disabled: false } }
27
+ sdui: { rendererType: "action.toolbar-icon-button", acceptsDataBinding: true, defaultProps: { showLabel: false, severity: "plain", enabled: true } }
28
28
  };
29
29
  export const aiHints = {
30
30
  version: "0.1",
@@ -7,14 +7,14 @@ export type SgTreeNode = {
7
7
  label: string;
8
8
  icon?: React.ReactNode;
9
9
  children?: SgTreeNode[];
10
- disabled?: boolean;
10
+ enabled?: boolean;
11
11
  meta?: unknown;
12
12
  };
13
13
  export type SgTreeNodeJson = {
14
14
  id: string;
15
15
  label: string;
16
16
  icon?: string;
17
- disabled?: boolean;
17
+ enabled?: boolean;
18
18
  checked?: boolean;
19
19
  children?: SgTreeNodeJson[];
20
20
  meta?: unknown;
@@ -40,7 +40,7 @@ export type SgTreeTrackBoolean = SgTreeTrackBase & {
40
40
  kind: "boolean";
41
41
  checkedIds: string[];
42
42
  onCheckedChange: (ids: string[]) => void;
43
- disabled?: (node: SgTreeNode) => boolean;
43
+ enabled?: (node: SgTreeNode) => boolean;
44
44
  ariaLabel?: string;
45
45
  /** Conteudo livre ao lado do controle desta coluna, por no'. O componente nao sabe (nem
46
46
  * precisa saber) o que ele significa -- icone, badge, contador, o que a tela quiser. */
@@ -54,7 +54,7 @@ export type SgTreeTrackEnum = SgTreeTrackBase & {
54
54
  }[];
55
55
  valueByNodeId: Record<string, string | undefined>;
56
56
  onChange: (next: Record<string, string | undefined>) => void;
57
- disabled?: (node: SgTreeNode) => boolean;
57
+ enabled?: (node: SgTreeNode) => boolean;
58
58
  ariaLabel?: string;
59
59
  placeholder?: string;
60
60
  mixedLabel?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"SgTreeView.d.ts","sourceRoot":"","sources":["../../src/layout/SgTreeView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SgTreeView.d.ts","sourceRoot":"","sources":["../../src/layout/SgTreeView.tsx"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ export function sgTreeFromJson(json, iconRegistry) {
12
12
  const walk = (list) => list.map((n) => ({
13
13
  id: n.id,
14
14
  label: n.label,
15
- disabled: n.disabled,
15
+ disabled: n.enabled === false,
16
16
  icon: n.icon ? iconRegistry?.[n.icon] : undefined,
17
17
  children: n.children?.length ? walk(n.children) : undefined,
18
18
  meta: n.meta
@@ -27,7 +27,7 @@ export function sgTreeFromJsonWithChecked(json, iconRegistry) {
27
27
  return {
28
28
  id: n.id,
29
29
  label: n.label,
30
- disabled: n.disabled,
30
+ disabled: n.enabled === false,
31
31
  icon: n.icon ? iconRegistry?.[n.icon] : undefined,
32
32
  children: n.children?.length ? walk(n.children) : undefined,
33
33
  meta: n.meta
@@ -309,7 +309,7 @@ export const SgTreeView = React.forwardRef(function SgTreeView(props, ref) {
309
309
  }
310
310
  }, [checkMode, setCheckedIdsLive]);
311
311
  const toggleCheck = React.useCallback((node) => {
312
- if (!checkable || node.disabled)
312
+ if (!checkable || (node.enabled === false))
313
313
  return;
314
314
  const next = new Set(checkedSet);
315
315
  const st = computeCheckedState(node.id, maps.childrenById, checkedSet);
@@ -365,7 +365,7 @@ export const SgTreeView = React.forwardRef(function SgTreeView(props, ref) {
365
365
  const renderNode = (node, depth) => {
366
366
  const hasChildren = !!node.children?.length;
367
367
  const isOpen = expandedSet.has(node.id);
368
- const isDisabled = !!node.disabled;
368
+ const isDisabled = node.enabled === false;
369
369
  const checkedState = checkable ? computeCheckedState(node.id, maps.childrenById, checkedSet) : "unchecked";
370
370
  return (_jsxs("div", { children: [_jsxs("div", { className: cn("flex items-center rounded-md", DY.rowPx, DY.rowPy, DY.gap, T.rowHover, isDisabled && "opacity-60"), style: { paddingLeft: 8 + depth * DY.indent }, children: [_jsx("button", { type: "button", className: cn(DY.caret, "shrink-0 rounded-md flex items-center justify-center", "hover:bg-sg-hover2 hover:bg-foreground/10", "focus:outline-none focus:ring-2 focus:ring-sg-focus/30", !hasChildren && "opacity-0 pointer-events-none"), onClick: () => hasChildren && !isDisabled && toggleExpand(node), "aria-label": isOpen ? t(i18n, "components.actions.collapse") : t(i18n, "components.actions.expand"), disabled: isDisabled, children: _jsx("span", { className: cn("transition-transform", isOpen && "rotate-90"), children: ">" }) }), checkable &&
371
371
  (() => {
@@ -380,7 +380,7 @@ export const SgTreeView = React.forwardRef(function SgTreeView(props, ref) {
380
380
  if (track.kind === "custom") {
381
381
  return (_jsx("div", { className: cn(TRACK_CELL_CLASS, "flex items-center gap-1"), style: trackCellWidth(track), children: track.render(node) }, track.id));
382
382
  }
383
- const trackDisabled = isDisabled || !!track.disabled?.(node);
383
+ const trackDisabled = isDisabled || track.enabled?.(node) === false;
384
384
  const adornment = track.adornment?.(node) ?? null;
385
385
  if (track.kind === "boolean") {
386
386
  const checkedSetTrack = data.checkedSet;
@@ -415,6 +415,6 @@ export const SgTreeView = React.forwardRef(function SgTreeView(props, ref) {
415
415
  }, disabled: isDisabled, children: node.label })] }), hasChildren && isOpen && _jsx("div", { children: node.children.map((c) => renderNode(c, depth + 1)) })] }, node.id));
416
416
  };
417
417
  const hasAny = filtered.length > 0;
418
- return (_jsxs("div", { className: cn("w-full", className), style: style, children: [_jsxs("div", { className: "mb-2 flex items-center gap-2", children: [searchable && (_jsx(SgInputText, { id: searchId, labelText: searchPlaceholder, placeholder: searchPlaceholder, prefixIcon: _jsx(Search, { size: 16 }), clearButton: true, filled: true, inputProps: { value: search }, onChange: (value) => setSearch(value) })), _jsx(SgButton, { severity: "secondary", appearance: "ghost", size: "sm", shape: "rounded", onClick: expandAll, leftIcon: _jsx(ChevronDown, { className: "size-4" }), children: t(i18n, "components.actions.expandAll") }), _jsx(SgButton, { severity: "secondary", appearance: "ghost", size: "sm", shape: "rounded", onClick: collapseAll, leftIcon: _jsx(ChevronUp, { className: "size-4" }), children: t(i18n, "components.actions.collapseAll") }), checkable && (_jsx(SgButton, { severity: "danger", appearance: "outline", size: "sm", shape: "rounded", onClick: clearChecked, title: t(i18n, "components.actions.clearSelection"), children: t(i18n, "components.actions.clear") }))] }), _jsxs("div", { className: cn("rounded-sg border border-sg-border", T.panelBg, "text-sg-text"), children: [hasTracks && (_jsxs("div", { className: cn("flex items-center border-b border-sg-border", DY.rowPx, DY.rowPy, DY.gap, SZ.text, "font-semibold text-sg-muted"), children: [_jsx("span", { className: cn(DY.caret, "shrink-0") }), checkable && (_jsx("div", { className: cn(TRACK_CELL_CLASS, "truncate"), style: trackCellWidth({}), title: props.checkableLabel, children: props.checkableLabel })), (tracks ?? []).map((track) => (_jsx("div", { className: cn(TRACK_CELL_CLASS, "truncate"), style: trackCellWidth(track), title: track.label, children: track.label }, track.id)))] })), _jsx("div", { className: cn("overflow-auto", maxHeightClassName), children: _jsx("div", { className: "p-2", children: !hasAny ? (_jsx("div", { className: cn("p-6 text-center", SZ.text, T.subtle), children: emptyText })) : (filtered.map((n) => renderNode(n, 0))) }) }), confirmEnabled && confirmCfg && (_jsx("div", { className: cn("border-t border-sg-border px-3 py-2", (confirmCfg.sticky ?? true) && "sticky bottom-0 bg-sg-surface/95 bg-background/95 backdrop-blur"), children: _jsxs("div", { className: "flex items-center justify-between gap-3", children: [_jsx("div", { className: cn("text-xs", T.subtle), children: confirmCfg.hint ?? (_jsxs(_Fragment, { children: [t(i18n, "components.tree.selected", { count: confirmSelectedIds.length }), confirmSelection === "leafOnly" ? t(i18n, "components.tree.selectedLeafs") : ""] })) }), _jsxs("div", { className: "flex items-center gap-2", children: [(confirmCfg.showCancel ?? false) && (_jsx("button", { type: "button", onClick: onCancel, className: cn("rounded-md border border-sg-border", T.panelBg, "text-sg-text hover:bg-sg-hover", "focus:outline-none focus:ring-2 focus:ring-sg-focus/30", SZ.btn), children: confirmCfg.cancelLabel ?? t(i18n, "components.actions.cancel") })), _jsx(SgButton, { severity: "secondary", appearance: "outline", size: "md", shape: "rounded", onClick: clearChecked, disabled: !!confirmDisabled, children: t(i18n, "components.actions.clear") }), _jsx(SgButton, { severity: "primary", appearance: "solid", elevation: "sm", size: "md", shape: "rounded", disabled: !!confirmDisabled, onClick: onConfirm, children: confirmCfg.label ?? t(i18n, "components.actions.confirm") })] })] }) }))] })] }));
418
+ return (_jsxs("div", { className: cn("w-full", className), style: style, children: [_jsxs("div", { className: "mb-2 flex items-center gap-2", children: [searchable && (_jsx(SgInputText, { id: searchId, labelText: searchPlaceholder, placeholder: searchPlaceholder, prefixIcon: _jsx(Search, { size: 16 }), clearButton: true, filled: true, inputProps: { value: search }, onChange: (value) => setSearch(value) })), _jsx(SgButton, { severity: "secondary", appearance: "ghost", size: "sm", shape: "rounded", onClick: expandAll, leftIcon: _jsx(ChevronDown, { className: "size-4" }), children: t(i18n, "components.actions.expandAll") }), _jsx(SgButton, { severity: "secondary", appearance: "ghost", size: "sm", shape: "rounded", onClick: collapseAll, leftIcon: _jsx(ChevronUp, { className: "size-4" }), children: t(i18n, "components.actions.collapseAll") }), checkable && (_jsx(SgButton, { severity: "danger", appearance: "outline", size: "sm", shape: "rounded", onClick: clearChecked, title: t(i18n, "components.actions.clearSelection"), children: t(i18n, "components.actions.clear") }))] }), _jsxs("div", { className: cn("rounded-sg border border-sg-border", T.panelBg, "text-sg-text"), children: [hasTracks && (_jsxs("div", { className: cn("flex items-center border-b border-sg-border", DY.rowPx, DY.rowPy, DY.gap, SZ.text, "font-semibold text-sg-muted"), children: [_jsx("span", { className: cn(DY.caret, "shrink-0") }), checkable && (_jsx("div", { className: cn(TRACK_CELL_CLASS, "truncate"), style: trackCellWidth({}), title: props.checkableLabel, children: props.checkableLabel })), (tracks ?? []).map((track) => (_jsx("div", { className: cn(TRACK_CELL_CLASS, "truncate"), style: trackCellWidth(track), title: track.label, children: track.label }, track.id)))] })), _jsx("div", { className: cn("overflow-auto", maxHeightClassName), children: _jsx("div", { className: "p-2", children: !hasAny ? (_jsx("div", { className: cn("p-6 text-center", SZ.text, T.subtle), children: emptyText })) : (filtered.map((n) => renderNode(n, 0))) }) }), confirmEnabled && confirmCfg && (_jsx("div", { className: cn("border-t border-sg-border px-3 py-2", (confirmCfg.sticky ?? true) && "sticky bottom-0 bg-sg-surface/95 bg-background/95 backdrop-blur"), children: _jsxs("div", { className: "flex items-center justify-between gap-3", children: [_jsx("div", { className: cn("text-xs", T.subtle), children: confirmCfg.hint ?? (_jsxs(_Fragment, { children: [t(i18n, "components.tree.selected", { count: confirmSelectedIds.length }), confirmSelection === "leafOnly" ? t(i18n, "components.tree.selectedLeafs") : ""] })) }), _jsxs("div", { className: "flex items-center gap-2", children: [(confirmCfg.showCancel ?? false) && (_jsx("button", { type: "button", onClick: onCancel, className: cn("rounded-md border border-sg-border", T.panelBg, "text-sg-text hover:bg-sg-hover", "focus:outline-none focus:ring-2 focus:ring-sg-focus/30", SZ.btn), children: confirmCfg.cancelLabel ?? t(i18n, "components.actions.cancel") })), _jsx(SgButton, { severity: "secondary", appearance: "outline", size: "md", shape: "rounded", onClick: clearChecked, enabled: !(!!confirmDisabled), children: t(i18n, "components.actions.clear") }), _jsx(SgButton, { severity: "primary", appearance: "solid", elevation: "sm", size: "md", shape: "rounded", enabled: !(!!confirmDisabled), onClick: onConfirm, children: confirmCfg.label ?? t(i18n, "components.actions.confirm") })] })] }) }))] })] }));
419
419
  });
420
420
  SgTreeView.displayName = "SgTreeView";
@@ -11,7 +11,7 @@ export type SgDockMenuItem = {
11
11
  /** Click handler */
12
12
  onClick?: () => void;
13
13
  /** Disabled state */
14
- disabled?: boolean;
14
+ enabled?: boolean;
15
15
  /** Badge content */
16
16
  badge?: string | number;
17
17
  /** Custom class name */
@@ -1 +1 @@
1
- {"version":3,"file":"SgDockMenu.d.ts","sourceRoot":"","sources":["../../src/menus/SgDockMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,MAAM,MAAM,kBAAkB,GAC1B,UAAU,GAAG,aAAa,GAAG,aAAa,GAC1C,YAAY,GAAG,eAAe,GAC9B,WAAW,GAAG,cAAc,GAAG,cAAc,CAAC;AAElD,MAAM,MAAM,qBAAqB,GAAG,YAAY,GAAG,UAAU,CAAC;AAE9D,MAAM,MAAM,cAAc,GAAG;IAC3B,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,sBAAsB;IACtB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,mCAAmC;IACnC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,yCAAyC;IACzC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,MAAM,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oCAAoC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0BAA0B;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACxC,mBAAmB;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AA0BD,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,2CA2f1D"}
1
+ {"version":3,"file":"SgDockMenu.d.ts","sourceRoot":"","sources":["../../src/menus/SgDockMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,MAAM,MAAM,kBAAkB,GAC1B,UAAU,GAAG,aAAa,GAAG,aAAa,GAC1C,YAAY,GAAG,eAAe,GAC9B,WAAW,GAAG,cAAc,GAAG,cAAc,CAAC;AAElD,MAAM,MAAM,qBAAqB,GAAG,YAAY,GAAG,UAAU,CAAC;AAE9D,MAAM,MAAM,cAAc,GAAG;IAC3B,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,sBAAsB;IACtB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,qBAAqB;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,mCAAmC;IACnC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,yCAAyC;IACzC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,MAAM,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oCAAoC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0BAA0B;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACxC,mBAAmB;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AA0BD,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,2CA2f1D"}
@@ -265,7 +265,7 @@ export function SgDockMenu(props) {
265
265
  dragMoved.current = false;
266
266
  }, [clearStoredPosition, dragId, enableDragDrop, storageKey]);
267
267
  const handleItemClick = React.useCallback((item) => {
268
- if (item.disabled)
268
+ if ((item.enabled === false))
269
269
  return;
270
270
  if (dragMoved.current) {
271
271
  dragMoved.current = false;
@@ -331,8 +331,8 @@ export function SgDockMenu(props) {
331
331
  transformOrigin: motion.transformOrigin,
332
332
  transition: "transform 0.22s cubic-bezier(0.2, 0.8, 0.2, 1)",
333
333
  willChange: "transform",
334
- cursor: item.disabled ? "not-allowed" : "pointer",
335
- opacity: item.disabled ? 0.5 : 1,
334
+ cursor: (item.enabled === false) ? "not-allowed" : "pointer",
335
+ opacity: (item.enabled === false) ? 0.5 : 1,
336
336
  zIndex: motion.zIndex,
337
337
  }, onMouseEnter: () => setHoveredIndex(index), onMouseLeave: () => setHoveredIndex(null), children: [_jsx("button", { type: "button", className: "sg-dock-item-icon focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/35", style: {
338
338
  width: "100%",
@@ -348,7 +348,7 @@ export function SgDockMenu(props) {
348
348
  e.currentTarget.style.backgroundColor = itemSurfaceHoverColor;
349
349
  }, onMouseLeave: (e) => {
350
350
  e.currentTarget.style.backgroundColor = itemSurfaceColor;
351
- }, onClick: () => handleItemClick(item), "aria-label": item.label, title: item.label, disabled: item.disabled, children: item.icon }), item.badge && (_jsx("div", { className: "sg-dock-item-badge", style: {
351
+ }, onClick: () => handleItemClick(item), "aria-label": item.label, title: item.label, disabled: item.enabled === false, children: item.icon }), item.badge && (_jsx("div", { className: "sg-dock-item-badge", style: {
352
352
  position: "absolute",
353
353
  top: -4,
354
354
  right: -4,
@@ -0,0 +1,51 @@
1
+ import React from "react";
2
+ import { type SgNotification, type SgNotificationPlacement, type SgPollingStats } from "./notificationBellLogic";
3
+ export type { SgNotification, SgNotificationPlacement, SgPollingStats } from "./notificationBellLogic";
4
+ /** Como um tipo de notificacao aparece (icone) e o que faz ao abrir. */
5
+ export type SgNotificationTypeConfig = {
6
+ icon?: React.ReactNode;
7
+ onOpen?: (notification: SgNotification) => void;
8
+ };
9
+ export type SgNotificationBellProps = {
10
+ /** Base das rotas da extension `user-notifications`. Default: `/api/user-notifications` (BFF, mesma origem). */
11
+ apiUrl?: string;
12
+ /** Rota que entrega o token do Pulse (usada se nao houver `SgRealtimeProvider` acima). Default: `/api/realtime/connect`. */
13
+ tokenEndpoint?: string;
14
+ /** Opcoes do `fetch` (ex.: `headers: { Authorization }` quando nao ha cookie). */
15
+ requestInit?: RequestInit;
16
+ /** Substitui o `fetch` (apps sem BFF, testes, demonstracao). Default: `fetch` global. */
17
+ fetcher?: (input: string, init?: RequestInit) => Promise<Response>;
18
+ /** Tipo -> icone e acao ao abrir. O sino nao conhece o negocio: relatorio e so um tipo. */
19
+ types?: Record<string, SgNotificationTypeConfig>;
20
+ /** Evento do Pulse que dispara a leitura. Default: `user-notification.*`. */
21
+ eventPattern?: string;
22
+ /** Intervalo do polling de reserva (so com o Pulse desligado ou fora do ar), preso entre 30 e 60 s. Default: 45000. */
23
+ pollIntervalMs?: number;
24
+ /** Maximo de notificacoes na lista. Default e maximo: 100 (uma pagina da rota). */
25
+ maxVisible?: number;
26
+ /** De que lado do sino o painel abre (como o `placement` do SgPopup). `auto` escolhe o lado em que cabe. Default: `auto`. */
27
+ placement?: SgNotificationPlacement;
28
+ /** Mostra o interruptor "Nao lidas" no topo do painel. `false` esconde so o interruptor (o sino fica) e o painel lista tudo. Default: true. */
29
+ showUnreadToggle?: boolean;
30
+ /** O painel abre em "Nao lidas" (ainda nao clicadas). Ignorada com `showUnreadToggle=false`. Nao persiste entre recargas. Default: true. */
31
+ defaultUnreadOnly?: boolean;
32
+ /** Chegou uma notificacao nova (aviso do Pulse). */
33
+ onNotification?: (notification: SgNotification) => void;
34
+ /** O usuario excluiu uma notificacao. */
35
+ onNotificationDelete?: (notification: SgNotification) => void;
36
+ /** O usuario abriu uma notificacao (depois do `onOpen` do tipo). */
37
+ onOpen?: (notification: SgNotification) => void;
38
+ /** O polling consultou a API: contador, instante e motivo. Para medir o custo. */
39
+ onPollingTick?: (stats: SgPollingStats) => void;
40
+ className?: string;
41
+ };
42
+ /**
43
+ * Sino de notificacoes do usuario logado (P129). Autonomo: se nao houver `SgRealtimeProvider` acima, abre a propria
44
+ * conexao com o Pulse (token por `tokenEndpoint`, nunca a apikey no front); com o Pulse desligado ou fora do ar, faz
45
+ * polling de reserva. Sem regra de negocio: o que cada `type` mostra e faz vem de `types`.
46
+ */
47
+ export declare function SgNotificationBell(props: Readonly<SgNotificationBellProps>): import("react/jsx-runtime").JSX.Element;
48
+ export declare namespace SgNotificationBell {
49
+ var displayName: string;
50
+ }
51
+ //# sourceMappingURL=SgNotificationBell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SgNotificationBell.d.ts","sourceRoot":"","sources":["../../src/notifications/SgNotificationBell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,OAAO,EA2BL,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAG5B,KAAK,cAAc,EACpB,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EAAE,cAAc,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEvG,wEAAwE;AACxE,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,cAAc,KAAK,IAAI,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,gHAAgH;IAChH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4HAA4H;IAC5H,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kFAAkF;IAClF,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,yFAAyF;IACzF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnE,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IACjD,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uHAAuH;IACvH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6HAA6H;IAC7H,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC,+IAA+I;IAC/I,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,4IAA4I;IAC5I,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,oDAAoD;IACpD,cAAc,CAAC,EAAE,CAAC,YAAY,EAAE,cAAc,KAAK,IAAI,CAAC;IACxD,yCAAyC;IACzC,oBAAoB,CAAC,EAAE,CAAC,YAAY,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9D,oEAAoE;IACpE,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,cAAc,KAAK,IAAI,CAAC;IAChD,kFAAkF;IAClF,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AA8dF;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,uBAAuB,CAAC,2CAoB1E;yBApBe,kBAAkB"}