@seedgrid/fe-components 2026.11.2 → 2026.11.4

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 (168) hide show
  1. package/dist/ai/seedgrid-components.manifest.json +350 -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/gadgets/calendar/SgCalendar.d.ts +6 -0
  21. package/dist/gadgets/calendar/SgCalendar.d.ts.map +1 -1
  22. package/dist/gadgets/calendar/SgCalendar.js +9 -5
  23. package/dist/gadgets/calendar/SgCalendar.meta.d.ts.map +1 -1
  24. package/dist/gadgets/calendar/SgCalendar.meta.js +1 -0
  25. package/dist/generated/compiledStyles.d.ts +1 -1
  26. package/dist/generated/compiledStyles.d.ts.map +1 -1
  27. package/dist/generated/compiledStyles.js +1 -1
  28. package/dist/i18n/en-US.d.ts.map +1 -1
  29. package/dist/i18n/en-US.js +26 -0
  30. package/dist/i18n/es.d.ts.map +1 -1
  31. package/dist/i18n/es.js +26 -0
  32. package/dist/i18n/fr.d.ts.map +1 -1
  33. package/dist/i18n/fr.js +26 -0
  34. package/dist/i18n/pt-BR.d.ts.map +1 -1
  35. package/dist/i18n/pt-BR.js +26 -0
  36. package/dist/i18n/pt-PT.d.ts.map +1 -1
  37. package/dist/i18n/pt-PT.js +26 -0
  38. package/dist/index.d.ts +3 -1
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +2 -1
  41. package/dist/inputs/SgAutocomplete.d.ts +1 -1
  42. package/dist/inputs/SgAutocomplete.d.ts.map +1 -1
  43. package/dist/inputs/SgAutocomplete.js +3 -3
  44. package/dist/inputs/SgCameraCapture.d.ts +1 -1
  45. package/dist/inputs/SgCameraCapture.d.ts.map +1 -1
  46. package/dist/inputs/SgCameraCapture.js +4 -4
  47. package/dist/inputs/SgCameraCapture.meta.js +1 -1
  48. package/dist/inputs/SgCheckboxGroup.d.ts +2 -2
  49. package/dist/inputs/SgCheckboxGroup.d.ts.map +1 -1
  50. package/dist/inputs/SgCheckboxGroup.js +12 -12
  51. package/dist/inputs/SgCombobox.js +5 -5
  52. package/dist/inputs/SgDatatable.d.ts +7 -0
  53. package/dist/inputs/SgDatatable.d.ts.map +1 -1
  54. package/dist/inputs/SgDatatable.js +33 -21
  55. package/dist/inputs/SgDatatable.meta.d.ts.map +1 -1
  56. package/dist/inputs/SgDatatable.meta.js +5 -1
  57. package/dist/inputs/SgFileUpload.d.ts +1 -1
  58. package/dist/inputs/SgFileUpload.d.ts.map +1 -1
  59. package/dist/inputs/SgFileUpload.js +2 -2
  60. package/dist/inputs/SgFileUpload.meta.js +1 -1
  61. package/dist/inputs/SgImageUpload.meta.js +1 -1
  62. package/dist/inputs/SgInputCurrency.d.ts.map +1 -1
  63. package/dist/inputs/SgInputCurrency.js +6 -4
  64. package/dist/inputs/SgInputDate.d.ts.map +1 -1
  65. package/dist/inputs/SgInputDate.js +3 -4
  66. package/dist/inputs/SgInputDateTime.d.ts.map +1 -1
  67. package/dist/inputs/SgInputDateTime.js +11 -0
  68. package/dist/inputs/SgInputNumber.d.ts.map +1 -1
  69. package/dist/inputs/SgInputNumber.js +6 -4
  70. package/dist/inputs/SgInputText.d.ts.map +1 -1
  71. package/dist/inputs/SgInputText.js +6 -4
  72. package/dist/inputs/SgInputTextArea.d.ts.map +1 -1
  73. package/dist/inputs/SgInputTextArea.js +4 -2
  74. package/dist/inputs/SgMultiSelect.meta.js +1 -1
  75. package/dist/inputs/SgMultiSelectChips.meta.js +1 -1
  76. package/dist/inputs/SgMultiSelectDropdown.js +1 -1
  77. package/dist/inputs/SgOrderList.d.ts +3 -3
  78. package/dist/inputs/SgOrderList.d.ts.map +1 -1
  79. package/dist/inputs/SgOrderList.js +13 -13
  80. package/dist/inputs/SgOrderList.meta.js +1 -1
  81. package/dist/inputs/SgPeriodSelector.d.ts +1 -1
  82. package/dist/inputs/SgPeriodSelector.d.ts.map +1 -1
  83. package/dist/inputs/SgPeriodSelector.js +3 -3
  84. package/dist/inputs/SgPickList.d.ts +3 -3
  85. package/dist/inputs/SgPickList.d.ts.map +1 -1
  86. package/dist/inputs/SgPickList.js +28 -28
  87. package/dist/inputs/SgPickList.meta.js +1 -1
  88. package/dist/inputs/SgRadioGroup.d.ts +2 -2
  89. package/dist/inputs/SgRadioGroup.d.ts.map +1 -1
  90. package/dist/inputs/SgRadioGroup.js +5 -5
  91. package/dist/inputs/SgRating.d.ts +1 -1
  92. package/dist/inputs/SgRating.d.ts.map +1 -1
  93. package/dist/inputs/SgRating.js +7 -7
  94. package/dist/inputs/SgRating.meta.js +1 -1
  95. package/dist/inputs/SgSlider.d.ts +1 -1
  96. package/dist/inputs/SgSlider.d.ts.map +1 -1
  97. package/dist/inputs/SgSlider.js +3 -3
  98. package/dist/inputs/SgSlider.meta.js +1 -1
  99. package/dist/inputs/SgStepperInput.d.ts +2 -2
  100. package/dist/inputs/SgStepperInput.d.ts.map +1 -1
  101. package/dist/inputs/SgStepperInput.js +4 -4
  102. package/dist/inputs/SgStepperInput.meta.js +1 -1
  103. package/dist/inputs/SgTextEditor.d.ts +1 -1
  104. package/dist/inputs/SgTextEditor.d.ts.map +1 -1
  105. package/dist/inputs/SgTextEditor.js +14 -14
  106. package/dist/inputs/SgToggleSwitch.meta.js +1 -1
  107. package/dist/inputs/SgYearPartSelector.d.ts +1 -1
  108. package/dist/inputs/SgYearPartSelector.d.ts.map +1 -1
  109. package/dist/inputs/SgYearPartSelector.js +1 -2
  110. package/dist/inputs/SgYearPartSelector.meta.js +2 -2
  111. package/dist/inputs/dateTimeLogic.d.ts +7 -1
  112. package/dist/inputs/dateTimeLogic.d.ts.map +1 -1
  113. package/dist/inputs/dateTimeLogic.js +17 -4
  114. package/dist/inputs/useSgMultiSelect.d.ts +1 -1
  115. package/dist/inputs/useSgMultiSelect.d.ts.map +1 -1
  116. package/dist/inputs/useSgMultiSelect.js +1 -1
  117. package/dist/layout/SgAccordion.d.ts +1 -1
  118. package/dist/layout/SgAccordion.d.ts.map +1 -1
  119. package/dist/layout/SgAccordion.js +3 -3
  120. package/dist/layout/SgBreadcrumb.d.ts +1 -1
  121. package/dist/layout/SgBreadcrumb.d.ts.map +1 -1
  122. package/dist/layout/SgBreadcrumb.js +1 -1
  123. package/dist/layout/SgCard.d.ts +1 -1
  124. package/dist/layout/SgCard.d.ts.map +1 -1
  125. package/dist/layout/SgCard.js +14 -14
  126. package/dist/layout/SgMenu.d.ts +1 -1
  127. package/dist/layout/SgMenu.d.ts.map +1 -1
  128. package/dist/layout/SgMenu.js +15 -15
  129. package/dist/layout/SgPageControl.d.ts +1 -1
  130. package/dist/layout/SgPageControl.d.ts.map +1 -1
  131. package/dist/layout/SgPageControl.js +4 -4
  132. package/dist/layout/SgPageControlPage.meta.js +2 -2
  133. package/dist/layout/SgToolBar.d.ts +1 -1
  134. package/dist/layout/SgToolBar.d.ts.map +1 -1
  135. package/dist/layout/SgToolBar.js +4 -4
  136. package/dist/layout/SgToolbarIconButton.meta.js +2 -2
  137. package/dist/layout/SgTreeView.d.ts +4 -4
  138. package/dist/layout/SgTreeView.d.ts.map +1 -1
  139. package/dist/layout/SgTreeView.js +6 -6
  140. package/dist/menus/SgDockMenu.d.ts +1 -1
  141. package/dist/menus/SgDockMenu.d.ts.map +1 -1
  142. package/dist/menus/SgDockMenu.js +4 -4
  143. package/dist/notifications/SgNotificationBell.d.ts +51 -0
  144. package/dist/notifications/SgNotificationBell.d.ts.map +1 -0
  145. package/dist/notifications/SgNotificationBell.js +348 -0
  146. package/dist/notifications/SgNotificationBell.meta.d.ts +4 -0
  147. package/dist/notifications/SgNotificationBell.meta.d.ts.map +1 -0
  148. package/dist/notifications/SgNotificationBell.meta.js +75 -0
  149. package/dist/notifications/notificationBellLogic.d.ts +148 -0
  150. package/dist/notifications/notificationBellLogic.d.ts.map +1 -0
  151. package/dist/notifications/notificationBellLogic.js +244 -0
  152. package/dist/overlay/SgConfirmationDialog.d.ts +1 -1
  153. package/dist/overlay/SgConfirmationDialog.d.ts.map +1 -1
  154. package/dist/overlay/SgConfirmationDialog.js +1 -1
  155. package/dist/overlay/SgPopup.d.ts +1 -1
  156. package/dist/overlay/SgPopup.d.ts.map +1 -1
  157. package/dist/overlay/SgPopup.js +1 -1
  158. package/dist/realtime/SgRealtimeProvider.d.ts +5 -0
  159. package/dist/realtime/SgRealtimeProvider.d.ts.map +1 -1
  160. package/dist/realtime/SgRealtimeProvider.js +31 -8
  161. package/dist/sandbox.cjs +64 -64
  162. package/dist/style.css +1 -1
  163. package/dist/wizard/SgWizard.d.ts +7 -0
  164. package/dist/wizard/SgWizard.d.ts.map +1 -1
  165. package/dist/wizard/SgWizard.js +11 -2
  166. package/dist/wizard/SgWizard.meta.d.ts.map +1 -1
  167. package/dist/wizard/SgWizard.meta.js +1 -0
  168. package/package.json +3 -3
@@ -14,7 +14,9 @@ export type SgButtonCustomColors = {
14
14
  activeBg?: string;
15
15
  ring?: string;
16
16
  };
17
- export type SgButtonProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "color"> & {
17
+ export type SgButtonProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "color" | "disabled"> & {
18
+ /** Quando false, desabilita o botão. Padrão: true. */
19
+ enabled?: boolean;
18
20
  severity?: Severity;
19
21
  appearance?: Appearance;
20
22
  size?: Size;
@@ -28,7 +30,9 @@ export type SgButtonProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>,
28
30
  customColors?: SgButtonCustomColors;
29
31
  };
30
32
  export declare function resolveButtonColors(severity: Severity, custom?: SgButtonCustomColors): Required<SgButtonCustomColors>;
31
- export declare const SgButton: React.ForwardRefExoticComponent<Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "color"> & {
33
+ export declare const SgButton: React.ForwardRefExoticComponent<Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "disabled" | "color"> & {
34
+ /** Quando false, desabilita o botão. Padrão: true. */
35
+ enabled?: boolean;
32
36
  severity?: Severity;
33
37
  appearance?: Appearance;
34
38
  size?: Size;
@@ -1 +1 @@
1
- {"version":3,"file":"SgButton.d.ts","sourceRoot":"","sources":["../../src/buttons/SgButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,KAAK,QAAQ,GACT,SAAS,GACT,WAAW,GACX,SAAS,GACT,MAAM,GACN,SAAS,GACT,MAAM,GACN,QAAQ,CAAC;AAEb,KAAK,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEhD,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/B,KAAK,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzD,KAAK,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;AAEtC,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC,GAAG;IACzF,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,oBAAoB,CAAC;CACrC,CAAC;AAsEF,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,EAClB,MAAM,CAAC,EAAE,oBAAoB,GAC5B,QAAQ,CAAC,oBAAoB,CAAC,CAYhC;AAoDD,eAAO,MAAM,QAAQ;eApJR,QAAQ;iBACN,UAAU;WAChB,IAAI;YACH,KAAK;gBACD,SAAS;YACb,KAAK,CAAC,SAAS;eACZ,OAAO;eACP,KAAK,CAAC,SAAS;gBACd,KAAK,CAAC,SAAS;cACjB,OAAO;mBACF,oBAAoB;2CAmNpC,CAAC"}
1
+ {"version":3,"file":"SgButton.d.ts","sourceRoot":"","sources":["../../src/buttons/SgButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,KAAK,QAAQ,GACT,SAAS,GACT,WAAW,GACX,SAAS,GACT,MAAM,GACN,SAAS,GACT,MAAM,GACN,QAAQ,CAAC;AAEb,KAAK,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEhD,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/B,KAAK,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzD,KAAK,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;AAEtC,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,GAAG;IACtG,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,oBAAoB,CAAC;CACrC,CAAC;AAsEF,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,EAClB,MAAM,CAAC,EAAE,oBAAoB,GAC5B,QAAQ,CAAC,oBAAoB,CAAC,CAYhC;AAoDD,eAAO,MAAM,QAAQ;IAtJnB,sDAAsD;cAC5C,OAAO;eACN,QAAQ;iBACN,UAAU;WAChB,IAAI;YACH,KAAK;gBACD,SAAS;YACb,KAAK,CAAC,SAAS;eACZ,OAAO;eACP,KAAK,CAAC,SAAS;gBACd,KAAK,CAAC,SAAS;cACjB,OAAO;mBACF,oBAAoB;2CAmNpC,CAAC"}
@@ -108,9 +108,9 @@ function elevationClass(elevation) {
108
108
  return "";
109
109
  }
110
110
  }
111
- export const SgButton = React.forwardRef(({ severity = "primary", appearance = "solid", size, shape, elevation = "none", label, iconOnly, leftIcon, rightIcon, loading = false, disabled, className, children, style, customColors, type = "button", ...rest }, ref) => {
111
+ export const SgButton = React.forwardRef(({ severity = "primary", appearance = "solid", size, shape, elevation = "none", label, iconOnly, leftIcon, rightIcon, loading = false, enabled = true, className, children, style, customColors, type = "button", ...rest }, ref) => {
112
112
  const resolvedChildren = children ?? label;
113
- const isDisabled = Boolean(disabled || loading);
113
+ const isDisabled = Boolean(!enabled || loading);
114
114
  const inferredIconOnly = !resolvedChildren && (leftIcon || rightIcon);
115
115
  const isIconOnly = iconOnly ?? inferredIconOnly;
116
116
  const resolvedSize = size ?? (isIconOnly ? "sm" : "md");
@@ -52,10 +52,10 @@ export const sgMeta = {
52
52
  bindable: true
53
53
  },
54
54
  {
55
- name: "disabled",
55
+ name: "enabled",
56
56
  type: "boolean",
57
- default: false,
58
- description: "Desabilita a interacao do botao.",
57
+ default: true,
58
+ description: "Quando false, desabilita a interacao do botao.",
59
59
  semanticRole: "behavior",
60
60
  bindable: true
61
61
  },
@@ -13,7 +13,7 @@ export type SgFABAction = {
13
13
  onClick?: () => void;
14
14
  severity?: FABSeverity;
15
15
  floatActionButtonStyle?: FABSeverity;
16
- disabled?: boolean;
16
+ enabled?: boolean;
17
17
  };
18
18
  export type SgFloatActionButtonProps = {
19
19
  hint?: string;
@@ -34,7 +34,7 @@ export type SgFloatActionButtonProps = {
34
34
  size?: FABSize;
35
35
  shape?: FABShape;
36
36
  elevation?: FABElevation;
37
- disabled?: boolean;
37
+ enabled?: boolean;
38
38
  loading?: boolean;
39
39
  autoHideOnScroll?: boolean;
40
40
  hideDirection?: "down" | "up";
@@ -1 +1 @@
1
- {"version":3,"file":"SgFloatActionButton.d.ts","sourceRoot":"","sources":["../../src/buttons/SgFloatActionButton.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SgFloatActionButton.d.ts","sourceRoot":"","sources":["../../src/buttons/SgFloatActionButton.tsx"],"names":[],"mappings":"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"}
@@ -193,7 +193,7 @@ export function SgFloatActionButton(props) {
193
193
  const i18n = useComponentsI18n();
194
194
  const hasEnvironmentProvider = useHasSgEnvironmentProvider();
195
195
  const { load: loadPersistedState, save: savePersistedState, clear: clearPersistedState } = useSgPersistence();
196
- const { hint, hintDelay = 300, icon, activeIcon, position = "right-bottom", offset, enableDragDrop = false, dragId, severity = "primary", floatActionButtonStyle, color, size = "md", shape = "circle", elevation = "md", disabled = false, loading = false, autoHideOnScroll = false, hideDirection = "down", animation = "scale", animationOn = "mount", animationDuration = 200, type = "linear", radius, transitionDelay = 30, actions, onClick, className, style, zIndex = 50, absolute = false, } = props;
196
+ const { hint, hintDelay = 300, icon, activeIcon, position = "right-bottom", offset, enableDragDrop = false, dragId, severity = "primary", floatActionButtonStyle, color, size = "md", shape = "circle", elevation = "md", enabled = true, loading = false, autoHideOnScroll = false, hideDirection = "down", animation = "scale", animationOn = "mount", animationDuration = 200, type = "linear", radius, transitionDelay = 30, actions, onClick, className, style, zIndex = 50, absolute = false, } = props;
197
197
  const hintPos = props.hintPosition ?? DEFAULT_HINT[position];
198
198
  const dir = props.direction ?? DEFAULT_DIR[position];
199
199
  const [mounted, setMounted] = React.useState(false);
@@ -376,7 +376,7 @@ export function SgFloatActionButton(props) {
376
376
  setHintShow(false);
377
377
  }, []);
378
378
  const handleClick = React.useCallback(() => {
379
- if (disabled || loading)
379
+ if (!enabled || loading)
380
380
  return;
381
381
  if (enableDragDrop && dragMoved.current) {
382
382
  dragMoved.current = false;
@@ -391,11 +391,11 @@ export function SgFloatActionButton(props) {
391
391
  setOpen((p) => !p);
392
392
  else
393
393
  onClick?.();
394
- }, [disabled, loading, actions, onClick, enableDragDrop, menuOpen]);
394
+ }, [enabled, loading, actions, onClick, enableDragDrop, menuOpen]);
395
395
  const handlePointerDown = React.useCallback((event) => {
396
396
  if (event.button !== 0)
397
397
  return;
398
- if (!enableDragDrop || disabled || loading)
398
+ if (!enableDragDrop || !enabled || loading)
399
399
  return;
400
400
  if (!containerRef.current)
401
401
  return;
@@ -468,7 +468,7 @@ export function SgFloatActionButton(props) {
468
468
  view.addEventListener("pointercancel", handleUp);
469
469
  view.addEventListener("blur", handleUp);
470
470
  doc.addEventListener("visibilitychange", handleVisibilityChange);
471
- }, [enableDragDrop, disabled, loading, actions, dragId, isAbsolute, saveStoredPosition]);
471
+ }, [enableDragDrop, enabled, loading, actions, dragId, isAbsolute, saveStoredPosition]);
472
472
  const handleContextMenu = React.useCallback((event) => {
473
473
  if (!enableDragDrop || !dragId)
474
474
  return;
@@ -595,7 +595,7 @@ export function SgFloatActionButton(props) {
595
595
  }
596
596
  /* action positions */
597
597
  const actPos = computeItemPositions((actions ?? []).length, type, dir, size, radius);
598
- const isOff = disabled || loading;
598
+ const isOff = !enabled || loading;
599
599
  return (_jsxs("div", { ref: containerRef, style: {
600
600
  ...(inlinePosition ? { position: style?.position } : posStyle),
601
601
  transform: txParts.length > 0 ? txParts.join(" ") : undefined,
@@ -615,7 +615,7 @@ export function SgFloatActionButton(props) {
615
615
  opacity: open ? 1 : 0,
616
616
  transition: "transform 200ms ease, opacity 200ms ease",
617
617
  transitionDelay: open ? `${i * transitionDelay}ms` : `${((actions.length - 1 - i) * transitionDelay)}ms`,
618
- }, children: _jsxs("div", { className: "relative group", children: [_jsx("button", { disabled: a.disabled, className: cn("inline-flex items-center justify-center rounded-full", "hover:brightness-90 active:brightness-[0.85]", "focus-visible:outline-none focus-visible:ring-2", "disabled:opacity-50 disabled:cursor-not-allowed", "shadow-md transition-[filter] duration-150"), style: {
618
+ }, children: _jsxs("div", { className: "relative group", children: [_jsx("button", { disabled: a.enabled === false, className: cn("inline-flex items-center justify-center rounded-full", "hover:brightness-90 active:brightness-[0.85]", "focus-visible:outline-none focus-visible:ring-2", "disabled:opacity-50 disabled:cursor-not-allowed", "shadow-md transition-[filter] duration-150"), style: {
619
619
  width: actWh, height: actWh,
620
620
  backgroundColor: ac.bg, color: ac.fg,
621
621
  ["--tw-ring-color"]: ac.ring,
@@ -51,9 +51,9 @@ export const sgMeta = {
51
51
  bindable: true
52
52
  },
53
53
  {
54
- name: "disabled",
54
+ name: "enabled",
55
55
  type: "boolean",
56
- default: false,
56
+ default: true,
57
57
  description: "Desabilita a acao principal e as acoes derivadas.",
58
58
  semanticRole: "behavior",
59
59
  bindable: true
@@ -9,7 +9,7 @@ export type SgSplitButtonItem = {
9
9
  label: string;
10
10
  icon?: React.ReactNode;
11
11
  onClick?: () => void;
12
- disabled?: boolean;
12
+ enabled?: boolean;
13
13
  separator?: boolean;
14
14
  };
15
15
  export type SgSplitButtonProps = {
@@ -20,7 +20,7 @@ export type SgSplitButtonProps = {
20
20
  size?: Size;
21
21
  shape?: Shape;
22
22
  elevation?: Elevation;
23
- disabled?: boolean;
23
+ enabled?: boolean;
24
24
  loading?: boolean;
25
25
  onClick?: () => void;
26
26
  items: SgSplitButtonItem[];
@@ -1 +1 @@
1
- {"version":3,"file":"SgSplitButton.d.ts","sourceRoot":"","sources":["../../src/buttons/SgSplitButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGvD,KAAK,QAAQ,GACT,SAAS,GACT,WAAW,GACX,SAAS,GACT,MAAM,GACN,SAAS,GACT,MAAM,GACN,QAAQ,CAAC;AAEb,KAAK,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEhD,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/B,KAAK,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE9C,KAAK,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;AAEtC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B,CAAC;AAmBF,eAAO,MAAM,aAAa,2FAoIzB,CAAC"}
1
+ {"version":3,"file":"SgSplitButton.d.ts","sourceRoot":"","sources":["../../src/buttons/SgSplitButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGvD,KAAK,QAAQ,GACT,SAAS,GACT,WAAW,GACX,SAAS,GACT,MAAM,GACN,SAAS,GACT,MAAM,GACN,QAAQ,CAAC;AAEb,KAAK,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEhD,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/B,KAAK,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE9C,KAAK,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;AAEtC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B,CAAC;AAmBF,eAAO,MAAM,aAAa,2FAoIzB,CAAC"}
@@ -6,7 +6,7 @@ import { t, useComponentsI18n } from "../i18n";
6
6
  function ChevronDown({ className }) {
7
7
  return (_jsx("svg", { className: className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: _jsx("path", { d: "m6 9 6 6 6-6" }) }));
8
8
  }
9
- export const SgSplitButton = React.forwardRef(({ label, leftIcon, severity = "primary", appearance = "solid", size = "md", shape = "default", elevation = "none", disabled = false, loading = false, onClick, items, customColors, className, style }, ref) => {
9
+ export const SgSplitButton = React.forwardRef(({ label, leftIcon, severity = "primary", appearance = "solid", size = "md", shape = "default", elevation = "none", enabled = true, loading = false, onClick, items, customColors, className, style }, ref) => {
10
10
  const i18n = useComponentsI18n();
11
11
  const [open, setOpen] = React.useState(false);
12
12
  const containerRef = React.useRef(null);
@@ -32,11 +32,11 @@ export const SgSplitButton = React.forwardRef(({ label, leftIcon, severity = "pr
32
32
  };
33
33
  }, [open]);
34
34
  const toggle = () => {
35
- if (!disabled && !loading)
35
+ if (enabled && !loading)
36
36
  setOpen((prev) => !prev);
37
37
  };
38
38
  const handleItemClick = (item) => {
39
- if (item.disabled)
39
+ if (item.enabled === false)
40
40
  return;
41
41
  item.onClick?.();
42
42
  setOpen(false);
@@ -52,6 +52,6 @@ export const SgSplitButton = React.forwardRef(({ label, leftIcon, severity = "pr
52
52
  lg: { menu: "min-w-[180px]", item: "px-5 py-2.5", text: "text-base", iconSize: "size-5" }
53
53
  };
54
54
  const s = sizeClasses[size];
55
- return (_jsxs("div", { ref: containerRef, className: `relative inline-flex ${className ?? ""}`, style: style, children: [_jsx(SgButton, { severity: severity, appearance: appearance, size: size, shape: shape, elevation: elevation, disabled: disabled, loading: loading, leftIcon: leftIcon, onClick: onClick, customColors: customColors, className: "rounded-r-none", children: label }), _jsx(SgButton, { severity: severity, appearance: appearance, size: size, shape: shape, elevation: elevation, disabled: disabled || loading, leftIcon: _jsx(ChevronDown, { className: "size-4" }), onClick: toggle, customColors: customColors, className: `rounded-l-none ${dividerBorderClass}`, "aria-haspopup": "menu", "aria-expanded": open, "aria-label": open ? t(i18n, "components.actions.close") : t(i18n, "components.actions.openList") }), open && (_jsx("div", { ref: menuRef, role: "menu", className: `absolute left-0 top-full z-50 mt-1 ${s.menu} overflow-hidden rounded-lg shadow-lg bg-background text-foreground border border-border`, children: items.map((item, i) => (_jsxs(React.Fragment, { children: [item.separator && i > 0 ? (_jsx("div", { className: "my-0.5 border-t border-border" })) : null, _jsxs("button", { role: "menuitem", type: "button", disabled: item.disabled, className: `flex w-full items-center gap-2 ${s.item} ${s.text} transition-colors hover:bg-muted/60 disabled:opacity-50 disabled:cursor-not-allowed`, onClick: () => handleItemClick(item), children: [item.icon ? _jsx("span", { className: `shrink-0 ${s.iconSize}`, children: item.icon }) : null, _jsx("span", { children: item.label })] })] }, i))) }))] }));
55
+ return (_jsxs("div", { ref: containerRef, className: `relative inline-flex ${className ?? ""}`, style: style, children: [_jsx(SgButton, { severity: severity, appearance: appearance, size: size, shape: shape, elevation: elevation, enabled: enabled, loading: loading, leftIcon: leftIcon, onClick: onClick, customColors: customColors, className: "rounded-r-none", children: label }), _jsx(SgButton, { severity: severity, appearance: appearance, size: size, shape: shape, elevation: elevation, enabled: !(!enabled || loading), leftIcon: _jsx(ChevronDown, { className: "size-4" }), onClick: toggle, customColors: customColors, className: `rounded-l-none ${dividerBorderClass}`, "aria-haspopup": "menu", "aria-expanded": open, "aria-label": open ? t(i18n, "components.actions.close") : t(i18n, "components.actions.openList") }), open && (_jsx("div", { ref: menuRef, role: "menu", className: `absolute left-0 top-full z-50 mt-1 ${s.menu} overflow-hidden rounded-lg shadow-lg bg-background text-foreground border border-border`, children: items.map((item, i) => (_jsxs(React.Fragment, { children: [item.separator && i > 0 ? (_jsx("div", { className: "my-0.5 border-t border-border" })) : null, _jsxs("button", { role: "menuitem", type: "button", disabled: item.enabled === false, className: `flex w-full items-center gap-2 ${s.item} ${s.text} transition-colors hover:bg-muted/60 disabled:opacity-50 disabled:cursor-not-allowed`, onClick: () => handleItemClick(item), children: [item.icon ? _jsx("span", { className: `shrink-0 ${s.iconSize}`, children: item.icon }) : null, _jsx("span", { children: item.label })] })] }, i))) }))] }));
56
56
  });
57
57
  SgSplitButton.displayName = "SgSplitButton";
@@ -44,9 +44,9 @@ export const sgMeta = {
44
44
  bindable: true
45
45
  },
46
46
  {
47
- name: "disabled",
47
+ name: "enabled",
48
48
  type: "boolean",
49
- default: false,
49
+ default: true,
50
50
  description: "Desabilita a acao principal e o menu secundario.",
51
51
  semanticRole: "behavior",
52
52
  bindable: true
@@ -100,7 +100,7 @@ export const sgMeta = {
100
100
  defaultProps: {
101
101
  severity: "primary",
102
102
  appearance: "solid",
103
- disabled: false
103
+ enabled: true
104
104
  }
105
105
  }
106
106
  };
@@ -18,7 +18,7 @@ export type SgAvatarProps = Omit<React.HTMLAttributes<HTMLSpanElement>, "childre
18
18
  shape?: SgAvatarShape;
19
19
  severity?: SgAvatarSeverity;
20
20
  bordered?: boolean;
21
- disabled?: boolean;
21
+ enabled?: boolean;
22
22
  customColors?: SgAvatarCustomColors;
23
23
  imageClassName?: string;
24
24
  children?: React.ReactNode;
@@ -46,7 +46,7 @@ export declare const SgAvatar: React.ForwardRefExoticComponent<Omit<React.HTMLAt
46
46
  shape?: SgAvatarShape;
47
47
  severity?: SgAvatarSeverity;
48
48
  bordered?: boolean;
49
- disabled?: boolean;
49
+ enabled?: boolean;
50
50
  customColors?: SgAvatarCustomColors;
51
51
  imageClassName?: string;
52
52
  children?: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"SgAvatar.d.ts","sourceRoot":"","sources":["../../src/commons/SgAvatar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SgAvatar.d.ts","sourceRoot":"","sources":["../../src/commons/SgAvatar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,WAAW,GACX,SAAS,GACT,SAAS,GACT,QAAQ,GACR,MAAM,GACN,SAAS,GACT,QAAQ,CAAC;AAEb,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAChD,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5D,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG;IAC9F,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,gBAAgB,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;CAC/E,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/D,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,GAAG;IACxF,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IACnD,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AA8GF,eAAO,MAAM,QAAQ;UA1Ib,MAAM;UACN,MAAM;YACJ,KAAK,CAAC,SAAS;WAChB,KAAK,CAAC,SAAS;eACX,KAAK,CAAC,SAAS;WACnB,YAAY;YACX,aAAa;eACV,gBAAgB;eAChB,OAAO;cACR,OAAO;mBACF,oBAAoB;qBAClB,MAAM;eACZ,KAAK,CAAC,SAAS;mBACX,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,gBAAgB,EAAE,KAAK,CAAC,KAAK,IAAI;yCA8N9E,CAAC;AAIF,eAAO,MAAM,aAAa;cA5Nd,KAAK,CAAC,SAAS;UACnB,MAAM;YACJ,MAAM;cACJ,oBAAoB;mBACf,gBAAgB;gBACnB,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS;WAC3C,YAAY;YACX,aAAa;eACV,OAAO;wCAsQnB,CAAC"}
@@ -101,7 +101,7 @@ function normalizeLabel(label) {
101
101
  }
102
102
  return trimmed.slice(0, 2).toUpperCase();
103
103
  }
104
- export const SgAvatar = React.forwardRef(({ src, alt, label, icon, fallback, size = "md", shape = "circle", severity = "primary", bordered = true, disabled = false, customColors, className, imageClassName, children, onImageError, onClick, role, tabIndex, style, title, ["aria-label"]: ariaLabel, ...rest }, ref) => {
104
+ export const SgAvatar = React.forwardRef(({ src, alt, label, icon, fallback, size = "md", shape = "circle", severity = "primary", bordered = true, enabled = true, customColors, className, imageClassName, children, onImageError, onClick, role, tabIndex, style, title, ["aria-label"]: ariaLabel, ...rest }, ref) => {
105
105
  const i18n = useComponentsI18n();
106
106
  const [imageFailed, setImageFailed] = React.useState(false);
107
107
  const s = SIZE[size];
@@ -116,9 +116,9 @@ export const SgAvatar = React.forwardRef(({ src, alt, label, icon, fallback, siz
116
116
  const resolvedAlt = alt ?? t(i18n, "components.avatar.defaultAlt");
117
117
  const resolvedAriaLabel = ariaLabel ?? (typeof label === "string" ? label : resolvedAlt);
118
118
  const squareRadius = size === "xs" || size === "sm" ? "rounded-md" : "rounded-xl";
119
- return (_jsx("span", { ref: ref, title: title, role: role, tabIndex: tabIndex, onClick: disabled ? undefined : onClick, "aria-label": resolvedAriaLabel, style: { ...buildVars(severity, customColors), ...style }, className: cn("relative inline-flex shrink-0 select-none items-center justify-center overflow-hidden", "font-medium leading-none", s.box, s.text, shape === "circle" ? "rounded-full" : squareRadius, bordered ? "border border-[var(--sg-avatar-border)]" : "border border-transparent", showImage ? "bg-muted text-transparent" : "bg-[var(--sg-avatar-bg)] text-[var(--sg-avatar-fg)]", interactive
119
+ return (_jsx("span", { ref: ref, title: title, role: role, tabIndex: tabIndex, onClick: !enabled ? undefined : onClick, "aria-label": resolvedAriaLabel, style: { ...buildVars(severity, customColors), ...style }, className: cn("relative inline-flex shrink-0 select-none items-center justify-center overflow-hidden", "font-medium leading-none", s.box, s.text, shape === "circle" ? "rounded-full" : squareRadius, bordered ? "border border-[var(--sg-avatar-border)]" : "border border-transparent", showImage ? "bg-muted text-transparent" : "bg-[var(--sg-avatar-bg)] text-[var(--sg-avatar-fg)]", interactive
120
120
  ? "cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--sg-avatar-ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-background"
121
- : "", disabled ? "pointer-events-none opacity-55" : "", className), ...rest, children: hasChildren ? (children) : showImage ? (_jsx("img", { src: src, alt: resolvedAlt, loading: "lazy", draggable: false, className: cn("size-full object-cover", imageClassName), onError: (event) => {
121
+ : "", !enabled ? "pointer-events-none opacity-55" : "", className), ...rest, children: hasChildren ? (children) : showImage ? (_jsx("img", { src: src, alt: resolvedAlt, loading: "lazy", draggable: false, className: cn("size-full object-cover", imageClassName), onError: (event) => {
122
122
  setImageFailed(true);
123
123
  onImageError?.(event);
124
124
  } })) : showIcon ? (_jsx("span", { className: cn("inline-flex items-center justify-center", s.icon), children: icon })) : showLabel ? (_jsx("span", { className: "uppercase", children: normalizeLabel(label) })) : (_jsx("span", { className: cn("inline-flex items-center justify-center", s.icon), children: hasRenderable(fallback) ? fallback : "?" })) }));
@@ -36,7 +36,7 @@ export type SgBadgeProps = {
36
36
  removeAriaLabel?: string;
37
37
  autoRemove?: boolean;
38
38
  onClick?: (e: React.MouseEvent) => void;
39
- disabled?: boolean;
39
+ enabled?: boolean;
40
40
  title?: string;
41
41
  hint?: string;
42
42
  customColors?: SgBadgeCustomColors;
@@ -1 +1 @@
1
- {"version":3,"file":"SgBadge.d.ts","sourceRoot":"","sources":["../../src/commons/SgBadge.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,WAAW,GACX,SAAS,GACT,SAAS,GACT,QAAQ,GACR,MAAM,GACN,SAAS,GACT,QAAQ,CAAC;AAEb,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AACpE,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEpD,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AA0HF,wBAAgB,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,kDAqHpD;yBArHe,OAAO"}
1
+ {"version":3,"file":"SgBadge.d.ts","sourceRoot":"","sources":["../../src/commons/SgBadge.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,WAAW,GACX,SAAS,GACT,SAAS,GACT,QAAQ,GACR,MAAM,GACN,SAAS,GACT,QAAQ,CAAC;AAEb,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AACpE,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEpD,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AA0HF,wBAAgB,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,kDAqHpD;yBArHe,OAAO"}
@@ -109,7 +109,7 @@ function getDisplayValue(value, max, showZero) {
109
109
  return value ?? null;
110
110
  }
111
111
  export function SgBadge(props) {
112
- const { value, severity = "primary", badgeStyle = "solid", size = "md", rounded = true, dot = false, pulse = false, max, showZero = true, leftIcon, rightIcon, removable = false, onRemove, removeAriaLabel, autoRemove = false, onClick, disabled, title, hint, customColors, className, style, partsClassName, ...aria } = props;
112
+ const { value, severity = "primary", badgeStyle = "solid", size = "md", rounded = true, dot = false, pulse = false, max, showZero = true, leftIcon, rightIcon, removable = false, onRemove, removeAriaLabel, autoRemove = false, onClick, enabled = true, title, hint, customColors, className, style, partsClassName, ...aria } = props;
113
113
  const i18n = useComponentsI18n();
114
114
  const resolvedRemoveAriaLabel = removeAriaLabel ?? t(i18n, "components.badge.remove");
115
115
  const displayValue = getDisplayValue(value, max, showZero);
@@ -133,9 +133,9 @@ export function SgBadge(props) {
133
133
  : "bg-transparent text-[var(--sg-badge-bg)] border border-transparent", badgeStyle === "ghost" || badgeStyle === "outline"
134
134
  ? "hover:bg-[var(--sg-badge-hover-bg)] hover:text-[var(--sg-badge-hover-fg)] hover:border-[var(--sg-badge-hover-border)]"
135
135
  : "", isButton
136
- ? cn("cursor-pointer select-none", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--sg-badge-ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-background", disabled ? "pointer-events-none opacity-50" : "")
136
+ ? cn("cursor-pointer select-none", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--sg-badge-ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-background", !enabled ? "pointer-events-none opacity-50" : "")
137
137
  : "", className, partsClassName?.container);
138
- return (_jsxs(Tag, { type: isButton ? "button" : undefined, title: hint ?? title, onClick: disabled ? undefined : onClick, disabled: isButton ? disabled : undefined, style: { ...cssVars, ...style }, className: base, role: isButton ? undefined : "status", ...aria, children: [leftIcon ? _jsx("span", { className: cn("inline-flex", ICON_SIZE[size]), children: leftIcon }) : null, displayValue !== null ? _jsx("span", { className: cn("inline-flex items-center", partsClassName?.label), children: displayValue }) : null, rightIcon ? _jsx("span", { className: cn("inline-flex", ICON_SIZE[size]), children: rightIcon }) : null, removable ? (_jsx("button", { type: "button", onClick: (e) => {
138
+ return (_jsxs(Tag, { type: isButton ? "button" : undefined, title: hint ?? title, onClick: !enabled ? undefined : onClick, disabled: isButton ? !enabled : undefined, style: { ...cssVars, ...style }, className: base, role: isButton ? undefined : "status", ...aria, children: [leftIcon ? _jsx("span", { className: cn("inline-flex", ICON_SIZE[size]), children: leftIcon }) : null, displayValue !== null ? _jsx("span", { className: cn("inline-flex items-center", partsClassName?.label), children: displayValue }) : null, rightIcon ? _jsx("span", { className: cn("inline-flex", ICON_SIZE[size]), children: rightIcon }) : null, removable ? (_jsx("button", { type: "button", onClick: (e) => {
139
139
  e.stopPropagation();
140
140
  if (autoRemove)
141
141
  setAutoRemoved(true);
@@ -18,6 +18,12 @@ export type SgCalendarProps = Omit<React.HTMLAttributes<HTMLDivElement>, "childr
18
18
  minDate?: Date | string;
19
19
  maxDate?: Date | string;
20
20
  isDateDisabled?: (date: Date) => boolean;
21
+ /**
22
+ * Habilita o calendario (padrao `true`). Com `false` os dias, os botoes de mes anterior/proximo
23
+ * e o atalho "hoje" ficam desabilitados (nao focaveis, sem clique); a data e o mes atuais seguem
24
+ * legiveis.
25
+ */
26
+ enabled?: boolean;
21
27
  showTodayShortcut?: boolean;
22
28
  cardTitle?: React.ReactNode;
23
29
  cardProps?: Omit<SgCardProps, "children" | "title">;
@@ -1 +1 @@
1
- {"version":3,"file":"SgCalendar.d.ts","sourceRoot":"","sources":["../../../src/gadgets/calendar/SgCalendar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAuG/D,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAElE,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC,GAAG;IAClG,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAChC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,CAAC;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzC,aAAa,CAAC,EAAE,uBAAuB,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;IACzC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,SAAS,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC;CACrD,CAAC;AAEF,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,2CAgU1D;yBAhUe,UAAU"}
1
+ {"version":3,"file":"SgCalendar.d.ts","sourceRoot":"","sources":["../../../src/gadgets/calendar/SgCalendar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAuG/D,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAElE,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC,GAAG;IAClG,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAChC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,CAAC;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzC,aAAa,CAAC,EAAE,uBAAuB,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;IACzC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,SAAS,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC;CACrD,CAAC;AAEF,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,2CAwU1D;yBAxUe,UAAU"}
@@ -92,7 +92,7 @@ function capitalizeFirst(value, locale) {
92
92
  }
93
93
  export function SgCalendar(props) {
94
94
  const i18n = useComponentsI18n();
95
- const { value, defaultValue, onValueChange, viewDate, defaultViewDate, onViewDateChange, locale = "pt-BR", weekStartsOn = 0, weekdayFormat = "narrow", numberOfMonths = 1, monthsPerLine = 3, monthMinWidth, showAdjacentMonths = true, minDate, maxDate, isDateDisabled, showTodayShortcut = true, className, style, cardTitle, cardProps, ...rest } = props;
95
+ const { value, defaultValue, onValueChange, viewDate, defaultViewDate, onViewDateChange, locale = "pt-BR", weekStartsOn = 0, weekdayFormat = "narrow", numberOfMonths = 1, monthsPerLine = 3, monthMinWidth, showAdjacentMonths = true, minDate, maxDate, isDateDisabled, enabled = true, showTodayShortcut = true, className, style, cardTitle, cardProps, ...rest } = props;
96
96
  const resolvedCardTitle = cardTitle ?? t(i18n, "components.gadgets.calendar.title");
97
97
  const today = React.useMemo(() => normalizeDate(new Date()), []);
98
98
  const valueControlled = value !== undefined;
@@ -171,6 +171,8 @@ export function SgCalendar(props) {
171
171
  return false;
172
172
  }, [isDateDisabled, parsedMaxDate, parsedMinDate]);
173
173
  const handleSelectDate = React.useCallback((date) => {
174
+ if (!enabled)
175
+ return;
174
176
  if (isCellDisabled(date))
175
177
  return;
176
178
  if (!valueControlled) {
@@ -180,8 +182,10 @@ export function SgCalendar(props) {
180
182
  if (!isSameMonth(date, monthViewDate)) {
181
183
  setMonthViewDate(date);
182
184
  }
183
- }, [isCellDisabled, monthViewDate, onValueChange, setMonthViewDate, valueControlled]);
185
+ }, [enabled, isCellDisabled, monthViewDate, onValueChange, setMonthViewDate, valueControlled]);
184
186
  const handleGoToday = React.useCallback(() => {
187
+ if (!enabled)
188
+ return;
185
189
  const now = normalizeDate(new Date());
186
190
  if (!isCellDisabled(now)) {
187
191
  if (!valueControlled) {
@@ -190,7 +194,7 @@ export function SgCalendar(props) {
190
194
  onValueChange?.(new Date(now));
191
195
  }
192
196
  setMonthViewDate(now);
193
- }, [isCellDisabled, onValueChange, setMonthViewDate, valueControlled]);
197
+ }, [enabled, isCellDisabled, onValueChange, setMonthViewDate, valueControlled]);
194
198
  const monthDates = React.useMemo(() => Array.from({ length: safeNumberOfMonths }, (_, index) => addMonths(monthViewDate, index)), [monthViewDate, safeNumberOfMonths]);
195
199
  const selectedLabel = capitalizeFirst(formatSelectedDate.format(selectedDate), locale);
196
200
  const visibleColumns = Math.min(safeMonthsPerLine, safeNumberOfMonths);
@@ -206,7 +210,7 @@ export function SgCalendar(props) {
206
210
  maxWidth: "100%",
207
211
  ...(cardProps?.style ?? {})
208
212
  };
209
- return (_jsx(SgCard, { title: resolvedCardTitle, collapsible: true, defaultOpen: true, collapseToggleAlign: "right", collapseIconSize: 20, draggable: true, bgColor: "rgb(var(--sg-surface,var(--sg-bg)))", bgColorTitle: "rgb(var(--sg-surface-2,var(--sg-surface,var(--sg-bg))))", cardStyle: "outlined", ...cardProps, className: mergedCardClassName, bodyClassName: mergedCardBodyClassName, style: mergedCardStyle, children: _jsxs("div", { className: cn("inline-flex max-w-full select-none flex-col gap-3", className), style: style, ...rest, children: [_jsxs("div", { className: "flex items-center justify-between gap-3 rounded-lg border border-border/70 bg-background px-4 py-3", children: [_jsx("div", { className: "min-h-6 text-sm font-medium text-foreground", children: selectedLabel }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("button", { type: "button", onClick: () => setMonthViewDate(addMonths(monthViewDate, -1)), className: "inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground", "aria-label": uiLabels.previousMonth, title: uiLabels.previousMonth, children: _jsx("svg", { viewBox: "0 0 20 20", className: "h-4 w-4", "aria-hidden": "true", children: _jsx("path", { d: "m12.5 5.8-4.2 4.2 4.2 4.2", fill: "none", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round" }) }) }), _jsx("button", { type: "button", onClick: () => setMonthViewDate(addMonths(monthViewDate, 1)), className: "inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground", "aria-label": uiLabels.nextMonth, title: uiLabels.nextMonth, children: _jsx("svg", { viewBox: "0 0 20 20", className: "h-4 w-4", "aria-hidden": "true", children: _jsx("path", { d: "m7.5 5.8 4.2 4.2-4.2 4.2", fill: "none", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round" }) }) }), showTodayShortcut ? (_jsx("button", { type: "button", onClick: handleGoToday, className: "inline-flex h-8 w-8 items-center justify-center rounded-md border border-border/70 bg-muted/40 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground", "aria-label": uiLabels.goToday, title: uiLabels.goToday, children: _jsx("svg", { viewBox: "0 0 20 20", className: "h-4 w-4", "aria-hidden": "true", children: _jsx("path", { d: "M5.6 7.6 10 12l4.4-4.4", fill: "none", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round" }) }) })) : null] })] }), _jsx("div", { className: "max-h-full max-w-full overflow-auto", children: _jsx("div", { className: "grid gap-4", style: monthGridStyle, children: monthDates.map((monthDate) => {
213
+ return (_jsx(SgCard, { title: resolvedCardTitle, collapsible: true, defaultOpen: true, collapseToggleAlign: "right", collapseIconSize: 20, draggable: true, bgColor: "rgb(var(--sg-surface,var(--sg-bg)))", bgColorTitle: "rgb(var(--sg-surface-2,var(--sg-surface,var(--sg-bg))))", cardStyle: "outlined", ...cardProps, className: mergedCardClassName, bodyClassName: mergedCardBodyClassName, style: mergedCardStyle, children: _jsxs("div", { className: cn("inline-flex max-w-full select-none flex-col gap-3", !enabled && "opacity-60", className), style: style, "aria-disabled": enabled ? undefined : true, ...rest, children: [_jsxs("div", { className: "flex items-center justify-between gap-3 rounded-lg border border-border/70 bg-background px-4 py-3", children: [_jsx("div", { className: "min-h-6 text-sm font-medium text-foreground", children: selectedLabel }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("button", { type: "button", onClick: () => enabled && setMonthViewDate(addMonths(monthViewDate, -1)), disabled: !enabled, className: "inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground disabled:cursor-not-allowed disabled:hover:bg-transparent", "aria-label": uiLabels.previousMonth, title: uiLabels.previousMonth, children: _jsx("svg", { viewBox: "0 0 20 20", className: "h-4 w-4", "aria-hidden": "true", children: _jsx("path", { d: "m12.5 5.8-4.2 4.2 4.2 4.2", fill: "none", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round" }) }) }), _jsx("button", { type: "button", onClick: () => enabled && setMonthViewDate(addMonths(monthViewDate, 1)), disabled: !enabled, className: "inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground", "aria-label": uiLabels.nextMonth, title: uiLabels.nextMonth, children: _jsx("svg", { viewBox: "0 0 20 20", className: "h-4 w-4", "aria-hidden": "true", children: _jsx("path", { d: "m7.5 5.8 4.2 4.2-4.2 4.2", fill: "none", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round" }) }) }), showTodayShortcut ? (_jsx("button", { type: "button", onClick: handleGoToday, disabled: !enabled, className: "inline-flex h-8 w-8 items-center justify-center rounded-md border border-border/70 bg-muted/40 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground", "aria-label": uiLabels.goToday, title: uiLabels.goToday, children: _jsx("svg", { viewBox: "0 0 20 20", className: "h-4 w-4", "aria-hidden": "true", children: _jsx("path", { d: "M5.6 7.6 10 12l4.4-4.4", fill: "none", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round" }) }) })) : null] })] }), _jsx("div", { className: "max-h-full max-w-full overflow-auto", children: _jsx("div", { className: "grid gap-4", style: monthGridStyle, children: monthDates.map((monthDate) => {
210
214
  const firstDayOfMonth = startOfMonth(monthDate);
211
215
  const firstDayOffset = (firstDayOfMonth.getDay() - safeWeekStartsOn + 7) % 7;
212
216
  const gridStart = addDays(firstDayOfMonth, -firstDayOffset);
@@ -215,7 +219,7 @@ export function SgCalendar(props) {
215
219
  return (_jsxs("div", { className: "rounded-xl border border-border/70 bg-background", children: [_jsx("div", { className: "border-b border-border/70 px-4 py-3", children: _jsx("div", { className: "text-[1.1rem] font-semibold text-foreground", children: monthLabel }) }), _jsxs("div", { className: "px-4 pb-4 pt-3", children: [_jsx("div", { className: "mb-2 grid grid-cols-7 text-center text-[0.79rem] font-medium uppercase tracking-wide text-muted-foreground", children: weekdayLabels.map((label, index) => (_jsx("span", { className: "py-1", children: label }, `${label}-${index}`))) }), _jsx("div", { className: "grid grid-cols-7 gap-y-1", children: days.map((day) => {
216
220
  const inCurrentMonth = isSameMonth(day, monthDate);
217
221
  const hiddenAdjacentDay = !showAdjacentMonths && !inCurrentMonth;
218
- const disabled = isCellDisabled(day);
222
+ const disabled = !enabled || isCellDisabled(day);
219
223
  const selected = isSameDay(day, selectedDate) && inCurrentMonth;
220
224
  const isToday = isSameDay(day, today) && inCurrentMonth;
221
225
  if (hiddenAdjacentDay) {
@@ -1 +1 @@
1
- {"version":3,"file":"SgCalendar.meta.d.ts","sourceRoot":"","sources":["../../../src/gadgets/calendar/SgCalendar.meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEjE,eAAO,MAAM,MAAM,EAAE,QA+BpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WAmBrB,CAAC"}
1
+ {"version":3,"file":"SgCalendar.meta.d.ts","sourceRoot":"","sources":["../../../src/gadgets/calendar/SgCalendar.meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEjE,eAAO,MAAM,MAAM,EAAE,QAgCpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WAmBrB,CAAC"}
@@ -19,6 +19,7 @@ export const sgMeta = {
19
19
  { name: "numberOfMonths", type: "number", default: 1, description: "Quantidade de meses visiveis ao mesmo tempo.", semanticRole: "appearance", bindable: true },
20
20
  { name: "minDate", type: "Date | string", description: "Limite minimo de selecao.", semanticRole: "validation", bindable: true },
21
21
  { name: "maxDate", type: "Date | string", description: "Limite maximo de selecao.", semanticRole: "validation", bindable: true },
22
+ { name: "enabled", type: "boolean", default: true, description: "Quando false, os dias, os botoes de mes anterior/proximo e o atalho hoje ficam desabilitados (nao focaveis); a data e o mes atuais continuam legiveis.", semanticRole: "behavior", bindable: true },
22
23
  { name: "onValueChange", type: "(date: Date) => void", description: "Callback disparado ao selecionar uma data.", semanticRole: "event", bindable: false }
23
24
  ],
24
25
  states: ["default", "multi-month", "disabled-dates", "controlled"],