@seedgrid/fe-components 2026.3.20 → 2026.3.27-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/buttons/SgFloatActionButton.d.ts.map +1 -1
- package/dist/buttons/SgFloatActionButton.js +5 -26
- package/dist/buttons/SgSplitButton.d.ts.map +1 -1
- package/dist/buttons/SgSplitButton.js +3 -1
- package/dist/buttons/fab-helpers.d.ts +6 -0
- package/dist/buttons/fab-helpers.d.ts.map +1 -0
- package/dist/buttons/fab-helpers.js +29 -0
- package/dist/commons/SgAvatar.d.ts.map +1 -1
- package/dist/commons/SgAvatar.js +6 -3
- package/dist/commons/SgBadge.d.ts.map +1 -1
- package/dist/commons/SgBadge.js +5 -2
- package/dist/commons/SgToast.d.ts.map +1 -1
- package/dist/commons/SgToast.js +3 -1
- package/dist/commons/SgToaster.d.ts.map +1 -1
- package/dist/commons/SgToaster.js +3 -1
- package/dist/environment/SgEnvironmentProvider.d.ts.map +1 -1
- package/dist/environment/SgEnvironmentProvider.js +10 -15
- package/dist/environment/persistent-state.d.ts +22 -0
- package/dist/environment/persistent-state.d.ts.map +1 -0
- package/dist/environment/persistent-state.js +33 -0
- package/dist/gadgets/calendar/SgCalendar.d.ts.map +1 -1
- package/dist/gadgets/calendar/SgCalendar.js +5 -23
- package/dist/gadgets/clock/SgClock.d.ts.map +1 -1
- package/dist/gadgets/clock/SgClock.js +12 -10
- package/dist/gadgets/clock/themes/SgClockThemePicker.d.ts +2 -1
- package/dist/gadgets/clock/themes/SgClockThemePicker.d.ts.map +1 -1
- package/dist/gadgets/clock/themes/SgClockThemePicker.js +23 -28
- package/dist/gadgets/clock/themes/search.d.ts +9 -0
- package/dist/gadgets/clock/themes/search.d.ts.map +1 -0
- package/dist/gadgets/clock/themes/search.js +15 -0
- package/dist/gadgets/gauge/SgLinearGauge.d.ts.map +1 -1
- package/dist/gadgets/gauge/SgLinearGauge.js +39 -28
- package/dist/gadgets/gauge/SgRadialGauge.d.ts.map +1 -1
- package/dist/gadgets/gauge/SgRadialGauge.js +44 -37
- package/dist/gadgets/gauge/math.d.ts +90 -0
- package/dist/gadgets/gauge/math.d.ts.map +1 -0
- package/dist/gadgets/gauge/math.js +81 -0
- package/dist/gadgets/qr-code/SgQRCode.d.ts.map +1 -1
- package/dist/gadgets/qr-code/SgQRCode.js +3 -1
- package/dist/i18n/en-US.d.ts.map +1 -1
- package/dist/i18n/en-US.js +99 -1
- package/dist/i18n/es.d.ts.map +1 -1
- package/dist/i18n/es.js +155 -57
- package/dist/i18n/fr.d.ts +3 -0
- package/dist/i18n/fr.d.ts.map +1 -0
- package/dist/i18n/fr.js +208 -0
- package/dist/i18n/index.d.ts +5 -1
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +50 -14
- package/dist/i18n/pt-BR.d.ts.map +1 -1
- package/dist/i18n/pt-BR.js +99 -1
- package/dist/i18n/pt-PT.d.ts.map +1 -1
- package/dist/i18n/pt-PT.js +99 -1
- package/dist/index.d.ts +12 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -2
- package/dist/inputs/SgAutocomplete.d.ts +1 -1
- package/dist/inputs/SgAutocomplete.d.ts.map +1 -1
- package/dist/inputs/SgAutocomplete.js +7 -4
- package/dist/inputs/SgCheckboxGroup.d.ts +2 -6
- package/dist/inputs/SgCheckboxGroup.d.ts.map +1 -1
- package/dist/inputs/SgCheckboxGroup.js +6 -6
- package/dist/inputs/SgCombobox.d.ts.map +1 -1
- package/dist/inputs/SgCombobox.js +11 -2
- package/dist/inputs/SgDatatable.d.ts.map +1 -1
- package/dist/inputs/SgDatatable.js +10 -10
- package/dist/inputs/SgInputBirthDate.d.ts.map +1 -1
- package/dist/inputs/SgInputBirthDate.js +6 -1
- package/dist/inputs/SgInputCNPJ.d.ts +3 -1
- package/dist/inputs/SgInputCNPJ.d.ts.map +1 -1
- package/dist/inputs/SgInputCNPJ.js +4 -3
- package/dist/inputs/SgInputCPF.d.ts +3 -1
- package/dist/inputs/SgInputCPF.d.ts.map +1 -1
- package/dist/inputs/SgInputCPF.js +8 -3
- package/dist/inputs/SgInputCPFCNPJ.d.ts +3 -1
- package/dist/inputs/SgInputCPFCNPJ.d.ts.map +1 -1
- package/dist/inputs/SgInputCPFCNPJ.js +8 -3
- package/dist/inputs/SgInputCurrency.d.ts +3 -7
- package/dist/inputs/SgInputCurrency.d.ts.map +1 -1
- package/dist/inputs/SgInputCurrency.js +5 -2
- package/dist/inputs/SgInputDate.d.ts.map +1 -1
- package/dist/inputs/SgInputDate.js +6 -1
- package/dist/inputs/SgInputEmail.d.ts.map +1 -1
- package/dist/inputs/SgInputEmail.js +1 -1
- package/dist/inputs/SgInputNumber.d.ts +3 -7
- package/dist/inputs/SgInputNumber.d.ts.map +1 -1
- package/dist/inputs/SgInputNumber.js +5 -2
- package/dist/inputs/SgInputOTP.d.ts +5 -12
- package/dist/inputs/SgInputOTP.d.ts.map +1 -1
- package/dist/inputs/SgInputOTP.js +7 -4
- package/dist/inputs/SgInputPassword.d.ts.map +1 -1
- package/dist/inputs/SgInputPassword.js +1 -1
- package/dist/inputs/SgInputPhone.d.ts +3 -1
- package/dist/inputs/SgInputPhone.d.ts.map +1 -1
- package/dist/inputs/SgInputPhone.js +2 -1
- package/dist/inputs/SgInputPostalCode.d.ts.map +1 -1
- package/dist/inputs/SgInputPostalCode.js +2 -1
- package/dist/inputs/SgInputSelect.d.ts +4 -2
- package/dist/inputs/SgInputSelect.d.ts.map +1 -1
- package/dist/inputs/SgInputSelect.js +38 -3
- package/dist/inputs/SgInputText.d.ts +3 -7
- package/dist/inputs/SgInputText.d.ts.map +1 -1
- package/dist/inputs/SgInputText.js +5 -2
- package/dist/inputs/SgInputTextArea.d.ts +4 -2
- package/dist/inputs/SgInputTextArea.d.ts.map +1 -1
- package/dist/inputs/SgInputTextArea.js +37 -2
- package/dist/inputs/SgOrderList.d.ts +3 -1
- package/dist/inputs/SgOrderList.d.ts.map +1 -1
- package/dist/inputs/SgOrderList.js +24 -8
- package/dist/inputs/SgPickList.d.ts +3 -1
- package/dist/inputs/SgPickList.d.ts.map +1 -1
- package/dist/inputs/SgPickList.js +33 -17
- package/dist/inputs/SgRadioGroup.d.ts +2 -6
- package/dist/inputs/SgRadioGroup.d.ts.map +1 -1
- package/dist/inputs/SgRadioGroup.js +6 -6
- package/dist/inputs/SgRating.d.ts +2 -10
- package/dist/inputs/SgRating.d.ts.map +1 -1
- package/dist/inputs/SgRating.js +6 -3
- package/dist/inputs/SgSlider.d.ts +8 -2
- package/dist/inputs/SgSlider.d.ts.map +1 -1
- package/dist/inputs/SgSlider.js +62 -10
- package/dist/inputs/SgStepperInput.d.ts +8 -2
- package/dist/inputs/SgStepperInput.d.ts.map +1 -1
- package/dist/inputs/SgStepperInput.js +62 -8
- package/dist/inputs/SgTextEditor.d.ts +3 -1
- package/dist/inputs/SgTextEditor.d.ts.map +1 -1
- package/dist/inputs/SgTextEditor.js +30 -16
- package/dist/inputs/SgToggleSwitch.d.ts +3 -7
- package/dist/inputs/SgToggleSwitch.d.ts.map +1 -1
- package/dist/inputs/SgToggleSwitch.js +6 -3
- package/dist/layout/SgBreadcrumb.d.ts.map +1 -1
- package/dist/layout/SgBreadcrumb.js +7 -3
- package/dist/layout/SgCard.d.ts.map +1 -1
- package/dist/layout/SgCard.js +3 -1
- package/dist/layout/SgCarousel.d.ts.map +1 -1
- package/dist/layout/SgCarousel.js +3 -1
- package/dist/layout/SgExpandablePanel.d.ts.map +1 -1
- package/dist/layout/SgExpandablePanel.js +3 -1
- package/dist/layout/SgMenu.d.ts.map +1 -1
- package/dist/layout/SgMenu.js +174 -298
- package/dist/layout/SgPageControl.d.ts.map +1 -1
- package/dist/layout/SgPageControl.js +7 -3
- package/dist/layout/SgToolBar.d.ts.map +1 -1
- package/dist/layout/SgToolBar.js +19 -55
- package/dist/layout/SgTreeView.d.ts.map +1 -1
- package/dist/layout/SgTreeView.js +7 -3
- package/dist/layout/drag-position.d.ts +7 -0
- package/dist/layout/drag-position.d.ts.map +1 -0
- package/dist/layout/drag-position.js +30 -0
- package/dist/layout/menu-logic.d.ts +187 -0
- package/dist/layout/menu-logic.d.ts.map +1 -0
- package/dist/layout/menu-logic.js +349 -0
- package/dist/layout/toolbar-logic.d.ts +26 -0
- package/dist/layout/toolbar-logic.d.ts.map +1 -0
- package/dist/layout/toolbar-logic.js +38 -0
- package/dist/menus/SgDockMenu.d.ts.map +1 -1
- package/dist/menus/SgDockMenu.js +44 -120
- package/dist/menus/dock-menu-logic.d.ts +50 -0
- package/dist/menus/dock-menu-logic.d.ts.map +1 -0
- package/dist/menus/dock-menu-logic.js +113 -0
- package/dist/overlay/SgDialog.d.ts.map +1 -1
- package/dist/overlay/SgDialog.js +4 -2
- package/dist/overlay/SgPopup.d.ts.map +1 -1
- package/dist/overlay/SgPopup.js +4 -1
- package/dist/rhf.d.ts +8 -3
- package/dist/rhf.d.ts.map +1 -1
- package/dist/rhf.js +18 -1
- package/dist/sandbox.cjs +64 -64
- package/dist/wizard/SgWizard.d.ts +2 -0
- package/dist/wizard/SgWizard.d.ts.map +1 -1
- package/dist/wizard/SgWizard.js +46 -38
- package/dist/wizard/logic.d.ts +16 -0
- package/dist/wizard/logic.d.ts.map +1 -0
- package/dist/wizard/logic.js +30 -0
- package/package.json +8 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SgFloatActionButton.d.ts","sourceRoot":"","sources":["../../src/buttons/SgFloatActionButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SgFloatActionButton.d.ts","sourceRoot":"","sources":["../../src/buttons/SgFloatActionButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAc/B,MAAM,MAAM,WAAW,GACnB,UAAU,GAAG,aAAa,GAAG,aAAa,GAC1C,YAAY,GAAG,eAAe,GAC9B,WAAW,GAAG,cAAc,GAAG,cAAc,CAAC;AAElD,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,WAAW,GACX,SAAS,GACT,MAAM,GACN,SAAS,GACT,MAAM,GACN,QAAQ,GACR,OAAO,CAAC;AACZ,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACzC,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AACvD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACvD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AACpF,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAC9D,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAEnF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,sBAAsB,CAAC,EAAE,WAAW,CAAC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,MAAM,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,sBAAsB,CAAC,EAAE,WAAW,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC7C,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AA6NF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,wBAAwB,CAAC,2CAyhB5E;yBAzhBe,mBAAmB"}
|
|
@@ -2,34 +2,13 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { t, useComponentsI18n } from "../i18n";
|
|
5
|
+
import { buildFabStorageKey, parseStoredFabDragPosition } from "./fab-helpers";
|
|
5
6
|
import { SgPopup } from "../overlay/SgPopup";
|
|
6
7
|
import { useHasSgEnvironmentProvider, useSgPersistence } from "../environment/SgEnvironmentProvider";
|
|
7
8
|
/* ── helpers ── */
|
|
8
9
|
function cn(...parts) {
|
|
9
10
|
return parts.filter(Boolean).join(" ");
|
|
10
11
|
}
|
|
11
|
-
function parseStoredDragPosition(raw) {
|
|
12
|
-
const value = typeof raw === "string" ? (() => {
|
|
13
|
-
try {
|
|
14
|
-
return JSON.parse(raw);
|
|
15
|
-
}
|
|
16
|
-
catch {
|
|
17
|
-
return null;
|
|
18
|
-
}
|
|
19
|
-
})() : raw;
|
|
20
|
-
if (!value ||
|
|
21
|
-
typeof value !== "object" ||
|
|
22
|
-
typeof value.x !== "number" ||
|
|
23
|
-
typeof value.y !== "number" ||
|
|
24
|
-
!Number.isFinite(value.x) ||
|
|
25
|
-
!Number.isFinite(value.y)) {
|
|
26
|
-
return null;
|
|
27
|
-
}
|
|
28
|
-
return {
|
|
29
|
-
x: value.x,
|
|
30
|
-
y: value.y
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
12
|
/* ── constants ── */
|
|
34
13
|
const EDGE = 24;
|
|
35
14
|
const POS_CSS = {
|
|
@@ -235,7 +214,7 @@ export function SgFloatActionButton(props) {
|
|
|
235
214
|
const hintTimer = React.useRef(null);
|
|
236
215
|
const dragCleanupRef = React.useRef(null);
|
|
237
216
|
const isAbsolute = absolute === true;
|
|
238
|
-
const storageKey = dragId
|
|
217
|
+
const storageKey = buildFabStorageKey(dragId);
|
|
239
218
|
const loadStoredPosition = React.useCallback(async () => {
|
|
240
219
|
if (!storageKey)
|
|
241
220
|
return null;
|
|
@@ -244,7 +223,7 @@ export function SgFloatActionButton(props) {
|
|
|
244
223
|
const loaded = await loadPersistedState(storageKey);
|
|
245
224
|
if (loaded === null || loaded === undefined)
|
|
246
225
|
return null;
|
|
247
|
-
const parsed =
|
|
226
|
+
const parsed = parseStoredFabDragPosition(loaded);
|
|
248
227
|
if (!parsed) {
|
|
249
228
|
await clearPersistedState(storageKey);
|
|
250
229
|
return null;
|
|
@@ -259,7 +238,7 @@ export function SgFloatActionButton(props) {
|
|
|
259
238
|
const raw = localStorage.getItem(storageKey);
|
|
260
239
|
if (!raw)
|
|
261
240
|
return null;
|
|
262
|
-
const parsed =
|
|
241
|
+
const parsed = parseStoredFabDragPosition(raw);
|
|
263
242
|
if (!parsed) {
|
|
264
243
|
localStorage.removeItem(storageKey);
|
|
265
244
|
return null;
|
|
@@ -647,7 +626,7 @@ export function SgFloatActionButton(props) {
|
|
|
647
626
|
["--tw-ring-color"]: ring,
|
|
648
627
|
...(enableDragDrop ? { touchAction: "none" } : {}),
|
|
649
628
|
...anim,
|
|
650
|
-
}, onClick: handleClick, onPointerDown: handlePointerDown, onContextMenu: handleContextMenu, onMouseEnter: onEnter, onMouseLeave: onLeave, "aria-label": hint ?? (open ? "
|
|
629
|
+
}, onClick: handleClick, onPointerDown: handlePointerDown, onContextMenu: handleContextMenu, onMouseEnter: onEnter, onMouseLeave: onLeave, "aria-label": hint ?? (open ? t(i18n, "components.actions.close") : t(i18n, "components.actions.open")), "aria-expanded": actions ? open : undefined, children: [loading ? (_jsx(Spinner, { size: iconSz })) : (_jsx("span", { className: "inline-flex items-center justify-center transition-transform duration-300", style: { transform: open && actions ? "rotate(45deg)" : "rotate(0deg)" }, children: open && activeIcon ? activeIcon : (icon ?? _jsx(PlusIcon, { size: iconSz })) })), hint && !open ? (_jsx("span", { className: cn("absolute whitespace-nowrap rounded bg-foreground/90 px-2.5 py-1.5 text-xs font-medium text-background", "transition-opacity duration-200 pointer-events-none", hintShow ? "opacity-100" : "opacity-0", TIP_CLS[hintPos]), children: hint })) : null] }), _jsx(SgPopup, { title: t(i18n, "components.fab.resetPosition"), open: menuOpen, onOpenChange: setMenuOpen, anchorRef: fabBtnRef, placement: "auto", preferPlacement: "left", align: "start", offset: 8, actions: [
|
|
651
630
|
{
|
|
652
631
|
label: t(i18n, "components.fab.yes"),
|
|
653
632
|
closeOnClick: false,
|
|
@@ -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;
|
|
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"}
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { SgButton } from "./SgButton";
|
|
5
|
+
import { t, useComponentsI18n } from "../i18n";
|
|
5
6
|
function ChevronDown({ className }) {
|
|
6
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" }) }));
|
|
7
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) => {
|
|
10
|
+
const i18n = useComponentsI18n();
|
|
9
11
|
const [open, setOpen] = React.useState(false);
|
|
10
12
|
const containerRef = React.useRef(null);
|
|
11
13
|
const menuRef = React.useRef(null);
|
|
@@ -50,6 +52,6 @@ export const SgSplitButton = React.forwardRef(({ label, leftIcon, severity = "pr
|
|
|
50
52
|
lg: { menu: "min-w-[180px]", item: "px-5 py-2.5", text: "text-base", iconSize: "size-5" }
|
|
51
53
|
};
|
|
52
54
|
const s = sizeClasses[size];
|
|
53
|
-
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": "
|
|
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))) }))] }));
|
|
54
56
|
});
|
|
55
57
|
SgSplitButton.displayName = "SgSplitButton";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fab-helpers.d.ts","sourceRoot":"","sources":["../../src/buttons/fab-helpers.ts"],"names":[],"mappings":"AAAA,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,OAAO,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA0BxF;AAED,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAGxE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export function parseStoredFabDragPosition(raw) {
|
|
2
|
+
const value = typeof raw === "string"
|
|
3
|
+
? (() => {
|
|
4
|
+
try {
|
|
5
|
+
return JSON.parse(raw);
|
|
6
|
+
}
|
|
7
|
+
catch {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
})()
|
|
11
|
+
: raw;
|
|
12
|
+
if (!value ||
|
|
13
|
+
typeof value !== "object" ||
|
|
14
|
+
typeof value.x !== "number" ||
|
|
15
|
+
typeof value.y !== "number" ||
|
|
16
|
+
!Number.isFinite(value.x) ||
|
|
17
|
+
!Number.isFinite(value.y)) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
x: value.x,
|
|
22
|
+
y: value.y
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export function buildFabStorageKey(dragId) {
|
|
26
|
+
if (!dragId)
|
|
27
|
+
return null;
|
|
28
|
+
return `sg-fab-pos:${dragId}`;
|
|
29
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SgAvatar.d.ts","sourceRoot":"","sources":["../../src/commons/SgAvatar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SgAvatar.d.ts","sourceRoot":"","sources":["../../src/commons/SgAvatar.tsx"],"names":[],"mappings":"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"}
|
package/dist/commons/SgAvatar.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
|
+
import { t, useComponentsI18n } from "../i18n";
|
|
4
5
|
function cn(...parts) {
|
|
5
6
|
return parts.filter(Boolean).join(" ");
|
|
6
7
|
}
|
|
@@ -100,7 +101,8 @@ function normalizeLabel(label) {
|
|
|
100
101
|
}
|
|
101
102
|
return trimmed.slice(0, 2).toUpperCase();
|
|
102
103
|
}
|
|
103
|
-
export const SgAvatar = React.forwardRef(({ src, alt
|
|
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) => {
|
|
105
|
+
const i18n = useComponentsI18n();
|
|
104
106
|
const [imageFailed, setImageFailed] = React.useState(false);
|
|
105
107
|
const s = SIZE[size];
|
|
106
108
|
React.useEffect(() => {
|
|
@@ -111,11 +113,12 @@ export const SgAvatar = React.forwardRef(({ src, alt = "Avatar", label, icon, fa
|
|
|
111
113
|
const showIcon = !hasChildren && !showImage && hasRenderable(icon);
|
|
112
114
|
const showLabel = !hasChildren && !showImage && !showIcon && hasRenderable(label);
|
|
113
115
|
const interactive = typeof onClick === "function" || role === "button" || typeof tabIndex === "number";
|
|
114
|
-
const
|
|
116
|
+
const resolvedAlt = alt ?? t(i18n, "components.avatar.defaultAlt");
|
|
117
|
+
const resolvedAriaLabel = ariaLabel ?? (typeof label === "string" ? label : resolvedAlt);
|
|
115
118
|
const squareRadius = size === "xs" || size === "sm" ? "rounded-md" : "rounded-xl";
|
|
116
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
|
|
117
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"
|
|
118
|
-
: "", disabled ? "pointer-events-none opacity-55" : "", className), ...rest, children: hasChildren ? (children) : showImage ? (_jsx("img", { src: src, alt:
|
|
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) => {
|
|
119
122
|
setImageFailed(true);
|
|
120
123
|
onImageError?.(event);
|
|
121
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 : "?" })) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SgBadge.d.ts","sourceRoot":"","sources":["../../src/commons/SgBadge.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
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"}
|
package/dist/commons/SgBadge.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
|
+
import { t, useComponentsI18n } from "../i18n";
|
|
4
5
|
function cn(...parts) {
|
|
5
6
|
return parts.filter(Boolean).join(" ");
|
|
6
7
|
}
|
|
@@ -108,7 +109,9 @@ function getDisplayValue(value, max, showZero) {
|
|
|
108
109
|
return value ?? null;
|
|
109
110
|
}
|
|
110
111
|
export function SgBadge(props) {
|
|
111
|
-
const { value, severity = "primary", badgeStyle = "solid", size = "md", rounded = true, dot = false, pulse = false, max, showZero = true, leftIcon, rightIcon, removable = false, onRemove, removeAriaLabel
|
|
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;
|
|
113
|
+
const i18n = useComponentsI18n();
|
|
114
|
+
const resolvedRemoveAriaLabel = removeAriaLabel ?? t(i18n, "components.badge.remove");
|
|
112
115
|
const displayValue = getDisplayValue(value, max, showZero);
|
|
113
116
|
const [autoRemoved, setAutoRemoved] = React.useState(false);
|
|
114
117
|
const cssVars = buildVars(severity, customColors);
|
|
@@ -137,6 +140,6 @@ export function SgBadge(props) {
|
|
|
137
140
|
if (autoRemove)
|
|
138
141
|
setAutoRemoved(true);
|
|
139
142
|
onRemove?.();
|
|
140
|
-
}, "aria-label":
|
|
143
|
+
}, "aria-label": resolvedRemoveAriaLabel, className: cn("ml-0.5 inline-flex items-center justify-center rounded-full", "opacity-70 hover:opacity-100", "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", partsClassName?.removeButton), children: _jsx("span", { className: cn("inline-flex", ICON_SIZE[size]), children: "x" }) })) : null] }));
|
|
141
144
|
}
|
|
142
145
|
SgBadge.displayName = "SgBadge";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SgToast.d.ts","sourceRoot":"","sources":["../../src/commons/SgToast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SgToast.d.ts","sourceRoot":"","sources":["../../src/commons/SgToast.ts"],"names":[],"mappings":"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"}
|
package/dist/commons/SgToast.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getComponentsI18n, t } from "../i18n";
|
|
1
2
|
const listeners = new Set();
|
|
2
3
|
let toasts = [];
|
|
3
4
|
let toastCounter = 0;
|
|
@@ -71,7 +72,8 @@ baseToast.dismiss = (id) => {
|
|
|
71
72
|
};
|
|
72
73
|
baseToast.promise = async (promiseOrFactory, messages, options) => {
|
|
73
74
|
const runPromise = typeof promiseOrFactory === "function" ? promiseOrFactory() : promiseOrFactory;
|
|
74
|
-
const
|
|
75
|
+
const i18n = getComponentsI18n();
|
|
76
|
+
const loadingId = baseToast.loading(messages.loading ?? t(i18n, "components.toast.loading"), options);
|
|
75
77
|
try {
|
|
76
78
|
const value = await runPromise;
|
|
77
79
|
if (messages.success !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SgToaster.d.ts","sourceRoot":"","sources":["../../src/commons/SgToaster.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"SgToaster.d.ts","sourceRoot":"","sources":["../../src/commons/SgToaster.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAQlF,MAAM,MAAM,iBAAiB,GACzB,WAAW,GACX,UAAU,GACV,YAAY,GACZ,cAAc,GACd,aAAa,GACb,eAAe,CAAC;AAEpB,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,OAAO,CACzC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,CACnD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,GAAG;IACpF,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,qBAAqB,CAAC;CACtC,CAAC;AAgGF,sEAAsE;AACtE,eAAO,MAAM,oBAAoB,wBAA6B,CAAC;AAE/D,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,kDA8I9C"}
|
|
@@ -3,6 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import React from "react";
|
|
4
4
|
import { dismissSgToast, subscribeSgToasts } from "./SgToast";
|
|
5
5
|
import { hasAnyHost, subscribeHostRegistry } from "./sgToastHostRegistry";
|
|
6
|
+
import { t, useComponentsI18n } from "../i18n";
|
|
6
7
|
function cn(...parts) {
|
|
7
8
|
return parts.filter(Boolean).join(" ");
|
|
8
9
|
}
|
|
@@ -97,6 +98,7 @@ export const SgToasterHostContext = React.createContext(false);
|
|
|
97
98
|
export function SgToaster(props) {
|
|
98
99
|
const renderedByHost = React.useContext(SgToasterHostContext);
|
|
99
100
|
const { position = "top-right", duration = 4000, visibleToasts = 6, closeButton = true, richColors = true, transparency = 0, customColors, className, style, ...rest } = props;
|
|
101
|
+
const i18n = useComponentsI18n();
|
|
100
102
|
const [toasts, setToasts] = React.useState([]);
|
|
101
103
|
const timersRef = React.useRef({});
|
|
102
104
|
const [hostPresent, setHostPresent] = React.useState(() => !renderedByHost && hasAnyHost());
|
|
@@ -162,6 +164,6 @@ export function SgToaster(props) {
|
|
|
162
164
|
}, role: "status", "aria-live": "polite", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [toast.title ? _jsx("div", { className: "text-sm font-semibold", children: toast.title }) : null, toast.description ? _jsx("div", { className: "mt-0.5 text-xs opacity-90", children: toast.description }) : null] }), toast.action ? (_jsx("button", { type: "button", className: "rounded border border-current/30 px-2 py-1 text-xs font-medium opacity-95 hover:opacity-100", onClick: () => {
|
|
163
165
|
toast.action?.onClick?.();
|
|
164
166
|
dismissSgToast(toast.id);
|
|
165
|
-
}, children: toast.action.label })) : null, canClose ? (_jsx("button", { type: "button", className: "rounded px-1.5 py-0.5 text-xs opacity-80 hover:opacity-100", onClick: () => dismissSgToast(toast.id), "aria-label":
|
|
167
|
+
}, children: toast.action.label })) : null, canClose ? (_jsx("button", { type: "button", className: "rounded px-1.5 py-0.5 text-xs opacity-80 hover:opacity-100", onClick: () => dismissSgToast(toast.id), "aria-label": t(i18n, "components.toaster.close"), children: "x" })) : null] }, toast.id));
|
|
166
168
|
}) }));
|
|
167
169
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SgEnvironmentProvider.d.ts","sourceRoot":"","sources":["../../src/environment/SgEnvironmentProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SgEnvironmentProvider.d.ts","sourceRoot":"","sources":["../../src/environment/SgEnvironmentProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACd,MAAM,eAAe,CAAC;AAGvB,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,GACd,CAAC;AACF,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,4BAA4B,EAC5B,kCAAkC,GACnC,MAAM,eAAe,CAAC;AAkBvB,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,2CAyBA;AAED,wBAAgB,gBAAgB,IAAI,kBAAkB,CAErD;AAED,wBAAgB,2BAA2B,IAAI,OAAO,CAErD;AAED,wBAAgB,sBAAsB,IAAI,iBAAiB,CAE1D;AAED,wBAAgB,gBAAgB;;;;;oBAOZ,MAAM;oBASN,MAAM,SAAS,OAAO;qBAStB,MAAM;EAiBzB;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,IAAI,EAAE;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,CAAC,CAAC;IAChB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;IAClC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,CAAC;CACrC;;qBA4DU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;;;EAoB9B"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import React from "react";
|
|
4
4
|
import { createLocalStorageStrategy, buildSgPersistenceKey, } from "./persistence";
|
|
5
|
+
import { clearLocalPersistentState, readLocalPersistentState, resolvePersistedStateValue, writeLocalPersistentState } from "./persistent-state";
|
|
5
6
|
export { buildSgPersistenceKey, createLocalStorageStrategy, createApiPersistenceStrategy, createCompositePersistenceStrategy, } from "./persistence";
|
|
6
7
|
const defaultNamespaceProvider = {
|
|
7
8
|
getNamespace: () => ""
|
|
@@ -93,22 +94,16 @@ export function useSgPersistentState(args) {
|
|
|
93
94
|
loaded = await persistence.load(baseKey);
|
|
94
95
|
}
|
|
95
96
|
else {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}
|
|
97
|
+
loaded = readLocalPersistentState({
|
|
98
|
+
storage: localStorage,
|
|
99
|
+
baseKey,
|
|
100
|
+
defaultValue: null,
|
|
101
|
+
deserialize: (value) => value
|
|
102
|
+
});
|
|
103
103
|
}
|
|
104
104
|
if (!alive)
|
|
105
105
|
return;
|
|
106
|
-
|
|
107
|
-
setValue(deserialize(loaded));
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
setValue(defaultValue);
|
|
111
|
-
}
|
|
106
|
+
setValue(resolvePersistedStateValue({ loaded, defaultValue, deserialize }));
|
|
112
107
|
setHydrated(true);
|
|
113
108
|
}
|
|
114
109
|
catch {
|
|
@@ -131,7 +126,7 @@ export function useSgPersistentState(args) {
|
|
|
131
126
|
}
|
|
132
127
|
else {
|
|
133
128
|
try {
|
|
134
|
-
localStorage
|
|
129
|
+
writeLocalPersistentState({ storage: localStorage, baseKey, value });
|
|
135
130
|
}
|
|
136
131
|
catch {
|
|
137
132
|
// ignore
|
|
@@ -147,7 +142,7 @@ export function useSgPersistentState(args) {
|
|
|
147
142
|
}
|
|
148
143
|
else {
|
|
149
144
|
try {
|
|
150
|
-
localStorage
|
|
145
|
+
clearLocalPersistentState({ storage: localStorage, baseKey, defaultValue });
|
|
151
146
|
}
|
|
152
147
|
catch {
|
|
153
148
|
// ignore
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare function resolvePersistedStateValue<T>(args: {
|
|
2
|
+
loaded: unknown;
|
|
3
|
+
defaultValue: T;
|
|
4
|
+
deserialize: (value: unknown) => T;
|
|
5
|
+
}): T;
|
|
6
|
+
export declare function readLocalPersistentState<T>(args: {
|
|
7
|
+
storage: Pick<Storage, "getItem">;
|
|
8
|
+
baseKey: string;
|
|
9
|
+
defaultValue: T;
|
|
10
|
+
deserialize: (value: unknown) => T;
|
|
11
|
+
}): T;
|
|
12
|
+
export declare function writeLocalPersistentState<T>(args: {
|
|
13
|
+
storage: Pick<Storage, "setItem">;
|
|
14
|
+
baseKey: string;
|
|
15
|
+
value: T;
|
|
16
|
+
}): void;
|
|
17
|
+
export declare function clearLocalPersistentState<T>(args: {
|
|
18
|
+
storage: Pick<Storage, "removeItem">;
|
|
19
|
+
baseKey: string;
|
|
20
|
+
defaultValue: T;
|
|
21
|
+
}): T;
|
|
22
|
+
//# sourceMappingURL=persistent-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistent-state.d.ts","sourceRoot":"","sources":["../../src/environment/persistent-state.ts"],"names":[],"mappings":"AAAA,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,IAAI,EAAE;IAClD,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,CAAC,CAAC;IAChB,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,CAAC;CACpC,GAAG,CAAC,CAMJ;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,IAAI,EAAE;IAChD,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,CAAC,CAAC;IAChB,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,CAAC;CACpC,GAAG,CAAC,CAeJ;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,IAAI,EAAE;IACjD,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,CAAC,CAAC;CACV,GAAG,IAAI,CAGP;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,IAAI,EAAE;IACjD,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,CAAC,CAAC;CACjB,GAAG,CAAC,CAIJ"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export function resolvePersistedStateValue(args) {
|
|
2
|
+
const { loaded, defaultValue, deserialize } = args;
|
|
3
|
+
if (loaded === null || loaded === undefined) {
|
|
4
|
+
return defaultValue;
|
|
5
|
+
}
|
|
6
|
+
return deserialize(loaded);
|
|
7
|
+
}
|
|
8
|
+
export function readLocalPersistentState(args) {
|
|
9
|
+
const { storage, baseKey, defaultValue, deserialize } = args;
|
|
10
|
+
try {
|
|
11
|
+
const raw = storage.getItem(baseKey);
|
|
12
|
+
if (raw === null) {
|
|
13
|
+
return defaultValue;
|
|
14
|
+
}
|
|
15
|
+
return resolvePersistedStateValue({
|
|
16
|
+
loaded: JSON.parse(raw),
|
|
17
|
+
defaultValue,
|
|
18
|
+
deserialize
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return defaultValue;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export function writeLocalPersistentState(args) {
|
|
26
|
+
const { storage, baseKey, value } = args;
|
|
27
|
+
storage.setItem(baseKey, JSON.stringify(value));
|
|
28
|
+
}
|
|
29
|
+
export function clearLocalPersistentState(args) {
|
|
30
|
+
const { storage, baseKey, defaultValue } = args;
|
|
31
|
+
storage.removeItem(baseKey);
|
|
32
|
+
return defaultValue;
|
|
33
|
+
}
|
|
@@ -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;
|
|
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"}
|
|
@@ -90,28 +90,6 @@ function capitalizeFirst(value, locale) {
|
|
|
90
90
|
return value;
|
|
91
91
|
return value.charAt(0).toLocaleUpperCase(locale) + value.slice(1);
|
|
92
92
|
}
|
|
93
|
-
function resolveCalendarUiLabels(locale) {
|
|
94
|
-
const lower = locale.toLowerCase();
|
|
95
|
-
if (lower.startsWith("pt")) {
|
|
96
|
-
return {
|
|
97
|
-
previousMonth: "Mes anterior",
|
|
98
|
-
nextMonth: "Proximo mes",
|
|
99
|
-
goToday: "Ir para hoje"
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
if (lower.startsWith("es")) {
|
|
103
|
-
return {
|
|
104
|
-
previousMonth: "Mes anterior",
|
|
105
|
-
nextMonth: "Mes siguiente",
|
|
106
|
-
goToday: "Ir a hoy"
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
return {
|
|
110
|
-
previousMonth: "Previous month",
|
|
111
|
-
nextMonth: "Next month",
|
|
112
|
-
goToday: "Go to today"
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
93
|
export function SgCalendar(props) {
|
|
116
94
|
const i18n = useComponentsI18n();
|
|
117
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;
|
|
@@ -152,7 +130,11 @@ export function SgCalendar(props) {
|
|
|
152
130
|
const safeWeekStartsOn = clampWeekStart(weekStartsOn);
|
|
153
131
|
const safeNumberOfMonths = clampInt(numberOfMonths, 1, 1, 12);
|
|
154
132
|
const safeMonthsPerLine = Math.min(safeNumberOfMonths, clampInt(monthsPerLine, 3, 1, 12));
|
|
155
|
-
const uiLabels =
|
|
133
|
+
const uiLabels = React.useMemo(() => ({
|
|
134
|
+
previousMonth: t(i18n, "components.gadgets.calendar.previousMonth"),
|
|
135
|
+
nextMonth: t(i18n, "components.gadgets.calendar.nextMonth"),
|
|
136
|
+
goToday: t(i18n, "components.gadgets.calendar.goToday")
|
|
137
|
+
}), [i18n]);
|
|
156
138
|
const formatSelectedDate = React.useMemo(() => new Intl.DateTimeFormat(locale, {
|
|
157
139
|
weekday: "long",
|
|
158
140
|
day: "numeric",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SgClock.d.ts","sourceRoot":"","sources":["../../../src/gadgets/clock/SgClock.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAUnD,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AA2C/D,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAClC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,SAAS,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC;CACrD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC3B,SAAS,GACT,SAAS,GACT,cAAc,GACd,UAAU,GACV,MAAM,GACN,MAAM,GACN,QAAQ,GACR,MAAM,GACN,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"SgClock.d.ts","sourceRoot":"","sources":["../../../src/gadgets/clock/SgClock.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAUnD,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AA2C/D,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAClC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,SAAS,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC;CACrD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC3B,SAAS,GACT,SAAS,GACT,cAAc,GACd,UAAU,GACV,MAAM,GACN,MAAM,GACN,QAAQ,GACR,MAAM,GACN,SAAS,CAAC;AAugBd,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,2CAsG1C"}
|