@seedgrid/fe-components 0.2.9 → 2026.3.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 +168 -38
- package/dist/commons/SgAvatar.d.ts +66 -0
- package/dist/commons/SgAvatar.d.ts.map +1 -0
- package/dist/commons/SgAvatar.js +136 -0
- package/dist/commons/SgSkeleton.d.ts +16 -0
- package/dist/commons/SgSkeleton.d.ts.map +1 -0
- package/dist/commons/SgSkeleton.js +58 -0
- package/dist/commons/SgToaster.d.ts +9 -0
- package/dist/commons/SgToaster.d.ts.map +1 -1
- package/dist/commons/SgToaster.js +86 -17
- package/dist/digits/discard-digit/SgDiscardDigit.d.ts +39 -0
- package/dist/digits/discard-digit/SgDiscardDigit.d.ts.map +1 -0
- package/dist/digits/discard-digit/SgDiscardDigit.js +303 -0
- package/dist/digits/discard-digit/index.d.ts +3 -0
- package/dist/digits/discard-digit/index.d.ts.map +1 -0
- package/dist/digits/discard-digit/index.js +1 -0
- package/dist/digits/fade-digit/SgFadeDigit.d.ts +27 -0
- package/dist/digits/fade-digit/SgFadeDigit.d.ts.map +1 -0
- package/dist/digits/fade-digit/SgFadeDigit.js +85 -0
- package/dist/digits/fade-digit/index.d.ts +3 -0
- package/dist/digits/fade-digit/index.d.ts.map +1 -0
- package/dist/digits/fade-digit/index.js +1 -0
- package/dist/digits/flip-digit/SgFlipDigit.d.ts +27 -0
- package/dist/digits/flip-digit/SgFlipDigit.d.ts.map +1 -0
- package/dist/digits/flip-digit/SgFlipDigit.js +70 -0
- package/dist/digits/flip-digit/index.d.ts.map +1 -0
- package/dist/digits/matrix-digit/SgMatrixDigit.d.ts +32 -0
- package/dist/digits/matrix-digit/SgMatrixDigit.d.ts.map +1 -0
- package/dist/digits/matrix-digit/SgMatrixDigit.js +86 -0
- package/dist/digits/matrix-digit/index.d.ts +3 -0
- package/dist/digits/matrix-digit/index.d.ts.map +1 -0
- package/dist/digits/matrix-digit/index.js +1 -0
- package/dist/digits/neon-digit/SgNeonDigit.d.ts +37 -0
- package/dist/digits/neon-digit/SgNeonDigit.d.ts.map +1 -0
- package/dist/digits/neon-digit/SgNeonDigit.js +59 -0
- package/dist/digits/neon-digit/index.d.ts +3 -0
- package/dist/digits/neon-digit/index.d.ts.map +1 -0
- package/dist/digits/neon-digit/index.js +1 -0
- package/dist/digits/roller3d-digit/SgRoller3DDigit.d.ts +37 -0
- package/dist/digits/roller3d-digit/SgRoller3DDigit.d.ts.map +1 -0
- package/dist/digits/roller3d-digit/SgRoller3DDigit.js +47 -0
- package/dist/digits/roller3d-digit/index.d.ts +3 -0
- package/dist/digits/roller3d-digit/index.d.ts.map +1 -0
- package/dist/digits/roller3d-digit/index.js +1 -0
- package/dist/environment/SgEnvironmentProvider.d.ts +1 -0
- package/dist/environment/SgEnvironmentProvider.d.ts.map +1 -1
- package/dist/environment/SgEnvironmentProvider.js +51 -12
- package/dist/gadgets/clock/SgClock.d.ts +3 -1
- package/dist/gadgets/clock/SgClock.d.ts.map +1 -1
- package/dist/gadgets/clock/SgClock.js +111 -180
- package/dist/gadgets/clock/SgTimeProvider.d.ts +1 -0
- package/dist/gadgets/clock/SgTimeProvider.d.ts.map +1 -1
- package/dist/gadgets/clock/SgTimeProvider.js +11 -4
- package/dist/gadgets/gauge/SgLinearGauge.d.ts +59 -0
- package/dist/gadgets/gauge/SgLinearGauge.d.ts.map +1 -0
- package/dist/gadgets/gauge/SgLinearGauge.js +258 -0
- package/dist/gadgets/gauge/SgRadialGauge.d.ts +73 -0
- package/dist/gadgets/gauge/SgRadialGauge.d.ts.map +1 -0
- package/dist/gadgets/gauge/SgRadialGauge.js +311 -0
- package/dist/gadgets/gauge/index.d.ts +5 -0
- package/dist/gadgets/gauge/index.d.ts.map +1 -0
- package/dist/gadgets/gauge/index.js +2 -0
- package/dist/gadgets/qr-code/SgQRCode.d.ts +25 -0
- package/dist/gadgets/qr-code/SgQRCode.d.ts.map +1 -0
- package/dist/gadgets/qr-code/SgQRCode.js +75 -0
- package/dist/gadgets/qr-code/index.d.ts +3 -0
- package/dist/gadgets/qr-code/index.d.ts.map +1 -0
- package/dist/gadgets/qr-code/index.js +1 -0
- package/dist/gadgets/string-animator/SgStringAnimator.d.ts +91 -0
- package/dist/gadgets/string-animator/SgStringAnimator.d.ts.map +1 -0
- package/dist/gadgets/string-animator/SgStringAnimator.js +145 -0
- package/dist/gadgets/string-animator/index.d.ts +3 -0
- package/dist/gadgets/string-animator/index.d.ts.map +1 -0
- package/dist/gadgets/string-animator/index.js +1 -0
- package/dist/i18n/en-US.json +9 -1
- package/dist/i18n/es.json +55 -47
- package/dist/i18n/index.d.ts +32 -0
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/pt-BR.json +9 -1
- package/dist/i18n/pt-PT.json +9 -1
- package/dist/index.d.ts +53 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -1
- package/dist/inputs/SgAutocomplete.js +21 -5
- package/dist/inputs/SgCombobox.d.ts +26 -0
- package/dist/inputs/SgCombobox.d.ts.map +1 -0
- package/dist/inputs/SgCombobox.js +354 -0
- package/dist/inputs/SgInputOTP.d.ts.map +1 -1
- package/dist/inputs/SgInputOTP.js +9 -2
- package/dist/inputs/SgRadioGroup.d.ts +37 -0
- package/dist/inputs/SgRadioGroup.d.ts.map +1 -0
- package/dist/inputs/SgRadioGroup.js +139 -0
- package/dist/inputs/SgRating.d.ts +55 -0
- package/dist/inputs/SgRating.d.ts.map +1 -0
- package/dist/inputs/SgRating.js +135 -0
- package/dist/inputs/SgSlider.d.ts +20 -0
- package/dist/inputs/SgSlider.d.ts.map +1 -0
- package/dist/inputs/SgSlider.js +40 -0
- package/dist/inputs/SgStepperInput.d.ts +22 -0
- package/dist/inputs/SgStepperInput.d.ts.map +1 -0
- package/dist/inputs/SgStepperInput.js +51 -0
- package/dist/inputs/SgTextEditor.d.ts +1 -0
- package/dist/inputs/SgTextEditor.d.ts.map +1 -1
- package/dist/inputs/SgTextEditor.js +19 -3
- package/dist/inputs/SgToggleSwitch.d.ts +36 -0
- package/dist/inputs/SgToggleSwitch.d.ts.map +1 -0
- package/dist/inputs/SgToggleSwitch.js +174 -0
- package/dist/layout/SgAccordion.d.ts +39 -0
- package/dist/layout/SgAccordion.d.ts.map +1 -0
- package/dist/layout/SgAccordion.js +116 -0
- package/dist/layout/SgBreadcrumb.d.ts +33 -0
- package/dist/layout/SgBreadcrumb.d.ts.map +1 -0
- package/dist/layout/SgBreadcrumb.js +121 -0
- package/dist/layout/SgCarousel.d.ts +43 -0
- package/dist/layout/SgCarousel.d.ts.map +1 -0
- package/dist/layout/SgCarousel.js +166 -0
- package/dist/layout/SgDockLayout.d.ts +14 -0
- package/dist/layout/SgDockLayout.d.ts.map +1 -1
- package/dist/layout/SgDockLayout.js +145 -13
- package/dist/layout/SgDockScreen.d.ts +15 -0
- package/dist/layout/SgDockScreen.d.ts.map +1 -0
- package/dist/layout/SgDockScreen.js +13 -0
- package/dist/layout/SgDockZone.d.ts.map +1 -1
- package/dist/layout/SgDockZone.js +36 -2
- package/dist/layout/SgExpandablePanel.d.ts +50 -0
- package/dist/layout/SgExpandablePanel.d.ts.map +1 -0
- package/dist/layout/SgExpandablePanel.js +302 -0
- package/dist/layout/SgMainPanel.d.ts.map +1 -1
- package/dist/layout/SgMainPanel.js +36 -14
- package/dist/layout/SgMenu.d.ts +91 -0
- package/dist/layout/SgMenu.d.ts.map +1 -0
- package/dist/layout/SgMenu.js +939 -0
- package/dist/layout/SgPageControl.d.ts +49 -0
- package/dist/layout/SgPageControl.d.ts.map +1 -0
- package/dist/layout/SgPageControl.js +152 -0
- package/dist/layout/SgPanel.d.ts.map +1 -1
- package/dist/layout/SgPanel.js +10 -1
- package/dist/layout/SgScreen.d.ts +2 -0
- package/dist/layout/SgScreen.d.ts.map +1 -1
- package/dist/layout/SgScreen.js +4 -2
- package/dist/layout/SgToolBar.d.ts +9 -3
- package/dist/layout/SgToolBar.d.ts.map +1 -1
- package/dist/layout/SgToolBar.js +461 -55
- package/dist/menus/SgDockMenu.d.ts +62 -0
- package/dist/menus/SgDockMenu.d.ts.map +1 -0
- package/dist/menus/SgDockMenu.js +480 -0
- package/dist/others/SgPlayground.js +73 -73
- package/package.json +72 -57
- package/dist/gadgets/flip-digit/SgFlipDigit.d.ts +0 -23
- package/dist/gadgets/flip-digit/SgFlipDigit.d.ts.map +0 -1
- package/dist/gadgets/flip-digit/SgFlipDigit.js +0 -118
- package/dist/gadgets/flip-digit/index.d.ts.map +0 -1
- /package/dist/{gadgets → digits}/flip-digit/index.d.ts +0 -0
- /package/dist/{gadgets → digits}/flip-digit/index.js +0 -0
|
@@ -1,20 +1,53 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
|
-
import {
|
|
4
|
+
import { useSgTimeContext } from "./SgTimeProvider";
|
|
5
5
|
import { useSgClockThemeResolver } from "./themes/provider";
|
|
6
6
|
import { ThemeLayer, resolveTheme } from "./themes/renderTheme";
|
|
7
7
|
import { useDarkFlag } from "./themes/useDarkFlag";
|
|
8
8
|
import { getTheme } from "./themes/registry";
|
|
9
|
+
import { SgFlipDigit } from "../../digits/flip-digit";
|
|
10
|
+
import { SgRoller3DDigit } from "../../digits/roller3d-digit";
|
|
11
|
+
import { SgFadeDigit } from "../../digits/fade-digit";
|
|
12
|
+
import { SgMatrixDigit } from "../../digits/matrix-digit";
|
|
13
|
+
import { SgNeonDigit } from "../../digits/neon-digit";
|
|
14
|
+
import { SgDiscardDigit } from "../../digits/discard-digit";
|
|
9
15
|
function cn(...parts) {
|
|
10
16
|
return parts.filter(Boolean).join(" ");
|
|
11
17
|
}
|
|
12
|
-
function useSecondTick() {
|
|
18
|
+
function useSecondTick(enabled = true) {
|
|
13
19
|
const [, setTick] = React.useState(0);
|
|
14
20
|
React.useEffect(() => {
|
|
21
|
+
if (!enabled)
|
|
22
|
+
return;
|
|
15
23
|
const id = window.setInterval(() => setTick((v) => v + 1), 1000);
|
|
16
24
|
return () => window.clearInterval(id);
|
|
25
|
+
}, [enabled]);
|
|
26
|
+
}
|
|
27
|
+
function parseInitialServerMs(initialServerTime) {
|
|
28
|
+
if (!initialServerTime)
|
|
29
|
+
return Date.now();
|
|
30
|
+
const parsed = Date.parse(initialServerTime);
|
|
31
|
+
return Number.isFinite(parsed) ? parsed : Date.now();
|
|
32
|
+
}
|
|
33
|
+
function useClockNowMs(initialServerTime) {
|
|
34
|
+
const ctx = useSgTimeContext();
|
|
35
|
+
const [seedMs] = React.useState(() => parseInitialServerMs(initialServerTime));
|
|
36
|
+
const perfStartMsRef = React.useRef(0);
|
|
37
|
+
const [hydrated, setHydrated] = React.useState(false);
|
|
38
|
+
React.useEffect(() => {
|
|
39
|
+
perfStartMsRef.current = performance.now();
|
|
40
|
+
setHydrated(true);
|
|
17
41
|
}, []);
|
|
42
|
+
const nowMs = React.useCallback(() => {
|
|
43
|
+
if (ctx)
|
|
44
|
+
return ctx.nowMs();
|
|
45
|
+
if (!hydrated)
|
|
46
|
+
return seedMs;
|
|
47
|
+
const delta = performance.now() - perfStartMsRef.current;
|
|
48
|
+
return seedMs + delta;
|
|
49
|
+
}, [ctx, hydrated, seedMs]);
|
|
50
|
+
return { nowMs, hasProvider: Boolean(ctx), providerTick: ctx?.tick ?? 0 };
|
|
18
51
|
}
|
|
19
52
|
function getHmsForTimezone(date, locale, timeZone) {
|
|
20
53
|
const parts = new Intl.DateTimeFormat(locale, {
|
|
@@ -49,12 +82,6 @@ function digitalSizeToNumber(size) {
|
|
|
49
82
|
return 28;
|
|
50
83
|
return 16;
|
|
51
84
|
}
|
|
52
|
-
function getPrevNext(value, min, max) {
|
|
53
|
-
const range = max - min + 1;
|
|
54
|
-
const prev = ((value - 1 - min + range) % range) + min;
|
|
55
|
-
const next = ((value + 1 - min) % range) + min;
|
|
56
|
-
return { prev, next };
|
|
57
|
-
}
|
|
58
85
|
function buildRange(min, max) {
|
|
59
86
|
const out = [];
|
|
60
87
|
for (let i = min; i <= max; i += 1)
|
|
@@ -169,35 +196,10 @@ function renderSegmentText(text, sizePx) {
|
|
|
169
196
|
});
|
|
170
197
|
return { width, height, nodes };
|
|
171
198
|
}
|
|
172
|
-
function
|
|
173
|
-
const
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
}
|
|
177
|
-
function getTimeValue(date, locale, timeZone, mode, smooth) {
|
|
178
|
-
const { h, m, s } = getHmsForTimezone(date, locale, timeZone);
|
|
179
|
-
const ms = date.getMilliseconds();
|
|
180
|
-
if (mode === "hours") {
|
|
181
|
-
if (!smooth)
|
|
182
|
-
return { base: h, frac: 0 };
|
|
183
|
-
const value = h + m / 60 + s / 3600;
|
|
184
|
-
return { base: Math.floor(value), frac: value - Math.floor(value) };
|
|
185
|
-
}
|
|
186
|
-
if (mode === "minutes") {
|
|
187
|
-
if (!smooth)
|
|
188
|
-
return { base: m, frac: 0 };
|
|
189
|
-
const value = m + s / 60;
|
|
190
|
-
return { base: Math.floor(value), frac: value - Math.floor(value) };
|
|
191
|
-
}
|
|
192
|
-
if (!smooth)
|
|
193
|
-
return { base: s, frac: 0 };
|
|
194
|
-
const value = s + ms / 1000;
|
|
195
|
-
return { base: Math.floor(value), frac: value - Math.floor(value) };
|
|
196
|
-
}
|
|
197
|
-
function AnalogClock({ size = 280, timezone, locale = "pt-BR", showSeconds = true, secondHandMode = "step", themeId = "classic", theme, className, centerOverlay }) {
|
|
198
|
-
const { tick, nowMs } = useSgTime();
|
|
199
|
-
void tick;
|
|
200
|
-
useSecondTick();
|
|
199
|
+
function AnalogClock({ size = 280, initialServerTime, timezone, locale = "pt-BR", showSeconds = true, secondHandMode = "step", themeId = "classic", theme, className, centerOverlay }) {
|
|
200
|
+
const { nowMs, hasProvider, providerTick } = useClockNowMs(initialServerTime);
|
|
201
|
+
void providerTick;
|
|
202
|
+
useSecondTick(!hasProvider);
|
|
201
203
|
const resolver = useSgClockThemeResolver();
|
|
202
204
|
const dark = useDarkFlag();
|
|
203
205
|
const date = new Date(nowMs());
|
|
@@ -211,76 +213,10 @@ function AnalogClock({ size = 280, timezone, locale = "pt-BR", showSeconds = tru
|
|
|
211
213
|
(resolver ? resolveTheme(resolver, themeId, "classic") : getTheme(themeId) ?? getTheme("classic"));
|
|
212
214
|
return (_jsx("div", { className: className, children: _jsxs("svg", { width: size, height: size, viewBox: "0 0 100 100", className: "block", "aria-label": "Analog clock", children: [_jsx("g", { id: "theme", children: themeObj ? _jsx(ThemeLayer, { theme: themeObj, args: { size, dark } }) : null }), _jsxs("g", { id: "hands", children: [_jsx("g", { transform: `rotate(${hourDeg} 50 50)`, children: _jsx("line", { x1: "50", y1: "50", x2: "50", y2: "28", className: "stroke-neutral-800 dark:stroke-neutral-200", strokeWidth: "2.6", strokeLinecap: "round" }) }), _jsx("g", { transform: `rotate(${minDeg} 50 50)`, children: _jsx("line", { x1: "50", y1: "50", x2: "50", y2: "18", className: "stroke-neutral-800 dark:stroke-neutral-200", strokeWidth: "1.7", strokeLinecap: "round" }) }), showSeconds && (_jsx("g", { transform: `rotate(${secDeg} 50 50)`, children: _jsx("line", { x1: "50", y1: "54", x2: "50", y2: "14", className: "stroke-rose-500", strokeWidth: "0.9", strokeLinecap: "round" }) }))] }), _jsx("circle", { cx: "50", cy: "50", r: "2.2", className: "fill-neutral-800 dark:fill-neutral-200" }), showSeconds ? _jsx("circle", { cx: "50", cy: "50", r: "1.1", className: "fill-rose-500" }) : null, centerOverlay ? (_jsx("foreignObject", { x: "35", y: "35", width: "30", height: "30", children: _jsx("div", { className: "flex h-full w-full items-center justify-center", children: centerOverlay }) })) : null] }) }));
|
|
213
215
|
}
|
|
214
|
-
function
|
|
215
|
-
const
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
const [animKey, setAnimKey] = React.useState(0);
|
|
219
|
-
React.useEffect(() => {
|
|
220
|
-
if (ch === prevRef.current)
|
|
221
|
-
return;
|
|
222
|
-
setPrev(prevRef.current);
|
|
223
|
-
setFlip(false);
|
|
224
|
-
const raf = window.requestAnimationFrame(() => {
|
|
225
|
-
setAnimKey((v) => v + 1);
|
|
226
|
-
setFlip(true);
|
|
227
|
-
});
|
|
228
|
-
const id = window.setTimeout(() => {
|
|
229
|
-
setFlip(false);
|
|
230
|
-
prevRef.current = ch;
|
|
231
|
-
}, 1200);
|
|
232
|
-
return () => {
|
|
233
|
-
window.cancelAnimationFrame(raf);
|
|
234
|
-
window.clearTimeout(id);
|
|
235
|
-
};
|
|
236
|
-
}, [ch]);
|
|
237
|
-
const panel = "relative overflow-hidden rounded-lg bg-neutral-900 text-white shadow-[0_10px_24px_rgba(0,0,0,0.4)]";
|
|
238
|
-
const seam = "absolute left-0 right-0 top-1/2 z-10 h-[3px] bg-gradient-to-b from-black/70 to-transparent shadow-[0_3px_8px_rgba(0,0,0,0.7),0_-2px_6px_rgba(255,255,255,0.25)]";
|
|
239
|
-
const half = "absolute left-0 w-full overflow-hidden";
|
|
240
|
-
const glossTop = "before:absolute before:inset-0 before:bg-gradient-to-b before:from-white/10 before:to-transparent before:content-['']";
|
|
241
|
-
const glossBottom = "after:absolute after:inset-0 after:bg-gradient-to-t after:from-black/30 after:to-transparent after:content-['']";
|
|
242
|
-
return (_jsxs("div", { className: cn(panel, glossTop, glossBottom), style: { width: w, height: h, transformStyle: "preserve-3d", perspective: "1000px" }, children: [_jsx("div", { className: seam }), _jsx("div", { className: cn(half, "top-0"), style: { height: h / 2 }, children: _jsx("div", { className: "absolute flex items-center justify-center font-bold font-mono", style: {
|
|
243
|
-
fontSize: digitFont,
|
|
244
|
-
lineHeight: 1,
|
|
245
|
-
width: "100%",
|
|
246
|
-
height: h,
|
|
247
|
-
top: 0,
|
|
248
|
-
left: 0
|
|
249
|
-
}, children: flip ? prev : ch }) }), _jsx("div", { className: cn(half, "bottom-0"), style: { height: h / 2 }, children: _jsx("div", { className: "absolute flex items-center justify-center font-bold font-mono", style: {
|
|
250
|
-
fontSize: digitFont,
|
|
251
|
-
lineHeight: 1,
|
|
252
|
-
width: "100%",
|
|
253
|
-
height: h,
|
|
254
|
-
top: `-${h / 2}px`,
|
|
255
|
-
left: 0
|
|
256
|
-
}, children: ch }) }), flip ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "absolute left-0 top-0 z-20 w-full overflow-hidden rounded-t-lg", style: { height: h / 2 }, children: _jsx("div", { className: "flip-top", style: {
|
|
257
|
-
transformOrigin: "center bottom",
|
|
258
|
-
height: "100%",
|
|
259
|
-
width: "100%"
|
|
260
|
-
}, children: _jsx("div", { className: "absolute flex items-center justify-center font-bold font-mono", style: {
|
|
261
|
-
fontSize: digitFont,
|
|
262
|
-
lineHeight: 1,
|
|
263
|
-
width: "100%",
|
|
264
|
-
height: h,
|
|
265
|
-
top: 0,
|
|
266
|
-
left: 0
|
|
267
|
-
}, children: prev }) }, `top-${animKey}`) }), _jsx("div", { className: "absolute bottom-0 left-0 z-20 w-full overflow-hidden rounded-b-lg", style: { height: h / 2 }, children: _jsx("div", { className: "flip-bottom", style: {
|
|
268
|
-
transformOrigin: "center top",
|
|
269
|
-
height: "100%",
|
|
270
|
-
width: "100%"
|
|
271
|
-
}, children: _jsx("div", { className: "absolute flex items-center justify-center font-bold font-mono", style: {
|
|
272
|
-
fontSize: digitFont,
|
|
273
|
-
lineHeight: 1,
|
|
274
|
-
width: "100%",
|
|
275
|
-
height: h,
|
|
276
|
-
top: `-${h / 2}px`,
|
|
277
|
-
left: 0
|
|
278
|
-
}, children: ch }) }, `bottom-${animKey}`) })] })) : null] }));
|
|
279
|
-
}
|
|
280
|
-
function DigitalClock({ timezone, locale = "pt-BR", format = "24h", showSeconds = true, size = "md", digitalStyle = "default", className }) {
|
|
281
|
-
const { tick, nowMs } = useSgTime();
|
|
282
|
-
void tick;
|
|
283
|
-
useSecondTick();
|
|
216
|
+
function DigitalClock({ initialServerTime, timezone, locale = "pt-BR", format = "24h", showSeconds = true, size = "md", digitalStyle = "default", className }) {
|
|
217
|
+
const { nowMs, hasProvider, providerTick } = useClockNowMs(initialServerTime);
|
|
218
|
+
void providerTick;
|
|
219
|
+
useSecondTick(!hasProvider);
|
|
284
220
|
const d = new Date(nowMs());
|
|
285
221
|
const parts = new Intl.DateTimeFormat(locale, {
|
|
286
222
|
timeZone: timezone,
|
|
@@ -302,6 +238,7 @@ function DigitalClock({ timezone, locale = "pt-BR", format = "24h", showSeconds
|
|
|
302
238
|
const classSize = sizeToClass(size);
|
|
303
239
|
const fontSize = typeof size === "number" ? { fontSize: `${size}px`, lineHeight: 1 } : undefined;
|
|
304
240
|
const sizePx = digitalSizeToNumber(size);
|
|
241
|
+
const withPeriod = format === "12h" && dayPeriod ? `${text} ${dayPeriod.toUpperCase()}` : text;
|
|
305
242
|
if (digitalStyle === "flip") {
|
|
306
243
|
const hNum = Number.parseInt(hour, 10) || 0;
|
|
307
244
|
const mNum = Number.parseInt(minute, 10) || 0;
|
|
@@ -310,55 +247,17 @@ function DigitalClock({ timezone, locale = "pt-BR", format = "24h", showSeconds
|
|
|
310
247
|
const hh = String(safeHour).padStart(2, "0");
|
|
311
248
|
const mm = String(mNum).padStart(2, "0");
|
|
312
249
|
const ss = String(sNum).padStart(2, "0");
|
|
313
|
-
|
|
314
|
-
const h = Math.round(sizePx * 2.35);
|
|
250
|
+
// fontSize drives all sizing in SgFlipDigit/@pqina/flip
|
|
315
251
|
const digitFont = Math.round(sizePx * 1.4);
|
|
316
|
-
|
|
317
|
-
const
|
|
318
|
-
const
|
|
319
|
-
const
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
animation: sgFlipTop 0.6s cubic-bezier(0.4, 0.0, 0.2, 1) both;
|
|
326
|
-
backface-visibility: hidden;
|
|
327
|
-
transform-style: preserve-3d;
|
|
328
|
-
will-change: transform;
|
|
329
|
-
box-shadow: 0 2px 8px rgba(0,0,0,0.3), inset 0 -2px 4px rgba(0,0,0,0.2);
|
|
330
|
-
}
|
|
331
|
-
.flip-bottom {
|
|
332
|
-
background: #1a1a1a;
|
|
333
|
-
border-radius: 0 0 8px 8px;
|
|
334
|
-
animation: sgFlipBottom 0.6s cubic-bezier(0.4, 0.0, 0.2, 1) both;
|
|
335
|
-
animation-delay: 0.6s;
|
|
336
|
-
backface-visibility: hidden;
|
|
337
|
-
transform-style: preserve-3d;
|
|
338
|
-
will-change: transform;
|
|
339
|
-
box-shadow: 0 -2px 8px rgba(0,0,0,0.3), inset 0 2px 4px rgba(0,0,0,0.2);
|
|
340
|
-
}
|
|
341
|
-
@keyframes sgFlipTop {
|
|
342
|
-
0% {
|
|
343
|
-
transform: rotateX(0deg);
|
|
344
|
-
z-index: 30;
|
|
345
|
-
}
|
|
346
|
-
100% {
|
|
347
|
-
transform: rotateX(-180deg);
|
|
348
|
-
z-index: 5;
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
@keyframes sgFlipBottom {
|
|
352
|
-
0% {
|
|
353
|
-
transform: rotateX(180deg);
|
|
354
|
-
z-index: 5;
|
|
355
|
-
}
|
|
356
|
-
100% {
|
|
357
|
-
transform: rotateX(0deg);
|
|
358
|
-
z-index: 30;
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
` }), _jsx(FlipDigitCard, { ch: hh.charAt(0), w: w, h: h, digitFont: digitFont }), _jsx(FlipDigitCard, { ch: hh.charAt(1), w: w, h: h, digitFont: digitFont }), _jsx(Colon, {}), _jsx(FlipDigitCard, { ch: mm.charAt(0), w: w, h: h, digitFont: digitFont }), _jsx(FlipDigitCard, { ch: mm.charAt(1), w: w, h: h, digitFont: digitFont }), showSeconds ? (_jsxs(_Fragment, { children: [_jsx(Colon, {}), _jsx(FlipDigitCard, { ch: ss.charAt(0), w: w, h: h, digitFont: digitFont }), _jsx(FlipDigitCard, { ch: ss.charAt(1), w: w, h: h, digitFont: digitFont })] })) : null, format === "12h" && dayPeriod ? _jsx(PeriodCell, { value: dayPeriod.toUpperCase() }) : null] }));
|
|
252
|
+
// Approx card height: fontSize * line-height(1.4) from the library CSS
|
|
253
|
+
const cardH = Math.round(digitFont * 1.4);
|
|
254
|
+
const Colon = () => (_jsxs("div", { className: "flex flex-col items-center justify-center gap-2", style: { height: cardH }, children: [_jsx("div", { className: "h-2 w-2 rounded-full bg-[#edebeb]/80" }), _jsx("div", { className: "h-2 w-2 rounded-full bg-[#edebeb]/80" })] }));
|
|
255
|
+
const PeriodCell = ({ value }) => (_jsx("div", { className: "flex items-center justify-center rounded bg-[#333232]", style: {
|
|
256
|
+
height: cardH,
|
|
257
|
+
padding: `0 ${Math.round(sizePx * 0.4)}px`,
|
|
258
|
+
boxShadow: "0 .125em .3125em rgba(0,0,0,.25)",
|
|
259
|
+
}, children: _jsx("span", { style: { fontSize: Math.round(sizePx * 0.9), color: "#edebeb", fontWeight: 700, lineHeight: 1 }, children: value }) }));
|
|
260
|
+
return (_jsxs("div", { className: cn("flex items-center gap-2", className), "aria-label": "Digital clock", children: [_jsx(SgFlipDigit, { value: hh.charAt(0), fontSize: digitFont }), _jsx(SgFlipDigit, { value: hh.charAt(1), fontSize: digitFont }), _jsx(Colon, {}), _jsx(SgFlipDigit, { value: mm.charAt(0), fontSize: digitFont }), _jsx(SgFlipDigit, { value: mm.charAt(1), fontSize: digitFont }), showSeconds ? (_jsxs(_Fragment, { children: [_jsx(Colon, {}), _jsx(SgFlipDigit, { value: ss.charAt(0), fontSize: digitFont }), _jsx(SgFlipDigit, { value: ss.charAt(1), fontSize: digitFont })] })) : null, format === "12h" && dayPeriod ? _jsx(PeriodCell, { value: dayPeriod.toUpperCase() }) : null] }));
|
|
362
261
|
}
|
|
363
262
|
if (digitalStyle === "roller3d") {
|
|
364
263
|
const hNum = Number.parseInt(hour, 10) || 0;
|
|
@@ -367,29 +266,61 @@ function DigitalClock({ timezone, locale = "pt-BR", format = "24h", showSeconds
|
|
|
367
266
|
const hourMax = format === "12h" ? 12 : 23;
|
|
368
267
|
const hourMin = format === "12h" ? 1 : 0;
|
|
369
268
|
const safeHour = format === "12h" ? (hNum === 0 ? 12 : hNum) : hNum;
|
|
370
|
-
const
|
|
371
|
-
const
|
|
372
|
-
const
|
|
373
|
-
const
|
|
374
|
-
const
|
|
375
|
-
const
|
|
376
|
-
const
|
|
377
|
-
const
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
const
|
|
382
|
-
const
|
|
383
|
-
const
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
269
|
+
const hourItems = buildRange(hourMin, hourMax).map((n) => String(n).padStart(2, "0"));
|
|
270
|
+
const minuteItems = buildRange(0, 59).map((n) => String(n).padStart(2, "0"));
|
|
271
|
+
const secondItems = buildRange(0, 59).map((n) => String(n).padStart(2, "0"));
|
|
272
|
+
const periodItems = ["AM", "PM"];
|
|
273
|
+
const digitFont = Math.round(sizePx * 1.35);
|
|
274
|
+
const hh = String(safeHour).padStart(2, "0");
|
|
275
|
+
const mm = String(mNum).padStart(2, "0");
|
|
276
|
+
const ss = String(sNum).padStart(2, "0");
|
|
277
|
+
return (_jsxs("div", { className: cn("flex items-center gap-4", className), style: fontSize, "aria-label": "Digital clock", children: [_jsx(SgRoller3DDigit, { value: hh, items: hourItems, fontSize: digitFont }), _jsx(SgRoller3DDigit, { value: mm, items: minuteItems, fontSize: digitFont }), showSeconds ? _jsx(SgRoller3DDigit, { value: ss, items: secondItems, fontSize: digitFont }) : null, format === "12h" && dayPeriod ? (_jsx(SgRoller3DDigit, { value: dayPeriod.toUpperCase(), items: periodItems, fontSize: digitFont })) : null] }));
|
|
278
|
+
}
|
|
279
|
+
if (digitalStyle === "fade") {
|
|
280
|
+
const hNum = Number.parseInt(hour, 10) || 0;
|
|
281
|
+
const mNum = Number.parseInt(minute, 10) || 0;
|
|
282
|
+
const sNum = Number.parseInt(second || "0", 10) || 0;
|
|
283
|
+
const safeHour = format === "12h" ? (hNum === 0 ? 12 : hNum) : hNum;
|
|
284
|
+
const hh = String(safeHour).padStart(2, "0");
|
|
285
|
+
const mm = String(mNum).padStart(2, "0");
|
|
286
|
+
const ss = String(sNum).padStart(2, "0");
|
|
287
|
+
const digitFont = Math.round(sizePx * 1.35);
|
|
288
|
+
const cardH = Math.round(digitFont * 1.4);
|
|
289
|
+
const Colon = () => (_jsxs("div", { className: "flex flex-col items-center justify-center gap-2", style: { height: cardH }, children: [_jsx("div", { className: "h-2 w-2 rounded-full bg-neutral-500/70" }), _jsx("div", { className: "h-2 w-2 rounded-full bg-neutral-500/70" })] }));
|
|
290
|
+
return (_jsxs("div", { className: cn("flex items-center gap-2", className), "aria-label": "Digital clock", children: [_jsx(SgFadeDigit, { value: hh.charAt(0), fontSize: digitFont }), _jsx(SgFadeDigit, { value: hh.charAt(1), fontSize: digitFont }), _jsx(Colon, {}), _jsx(SgFadeDigit, { value: mm.charAt(0), fontSize: digitFont }), _jsx(SgFadeDigit, { value: mm.charAt(1), fontSize: digitFont }), showSeconds ? (_jsxs(_Fragment, { children: [_jsx(Colon, {}), _jsx(SgFadeDigit, { value: ss.charAt(0), fontSize: digitFont }), _jsx(SgFadeDigit, { value: ss.charAt(1), fontSize: digitFont })] })) : null, format === "12h" && dayPeriod ? (_jsx("span", { className: "text-xs font-semibold text-muted-foreground", children: dayPeriod.toUpperCase() })) : null] }));
|
|
291
|
+
}
|
|
292
|
+
if (digitalStyle === "discard") {
|
|
293
|
+
const hNum = Number.parseInt(hour, 10) || 0;
|
|
294
|
+
const mNum = Number.parseInt(minute, 10) || 0;
|
|
295
|
+
const sNum = Number.parseInt(second || "0", 10) || 0;
|
|
296
|
+
const safeHour = format === "12h" ? (hNum === 0 ? 12 : hNum) : hNum;
|
|
297
|
+
const hh = String(safeHour).padStart(2, "0");
|
|
298
|
+
const mm = String(mNum).padStart(2, "0");
|
|
299
|
+
const ss = String(sNum).padStart(2, "0");
|
|
300
|
+
const digitFont = typeof size === "number"
|
|
301
|
+
? Math.max(36, Math.round(sizePx * 2.2))
|
|
302
|
+
: size === "sm"
|
|
303
|
+
? 38
|
|
304
|
+
: size === "lg"
|
|
305
|
+
? 56
|
|
306
|
+
: 44;
|
|
307
|
+
const pagesForDigit = (digit) => {
|
|
308
|
+
const n = Number.parseInt(digit, 10);
|
|
309
|
+
if (!Number.isFinite(n))
|
|
310
|
+
return 1;
|
|
311
|
+
return Math.max(1, Math.min(30, n));
|
|
391
312
|
};
|
|
392
|
-
|
|
313
|
+
const Colon = () => (_jsx(SgDiscardDigit, { value: ":", fontSize: Math.max(26, Math.round(digitFont * 0.72)), totalNumberPages: 1, transitionMs: 560, animateOnChange: false }));
|
|
314
|
+
const PeriodCell = ({ value }) => (_jsx(SgDiscardDigit, { value: value, fontSize: Math.max(20, Math.round(digitFont * 0.52)), totalNumberPages: 1, transitionMs: 560, animateOnChange: false }));
|
|
315
|
+
return (_jsxs("div", { className: cn("flex items-end gap-2", className), "aria-label": "Digital clock", children: [_jsx(SgDiscardDigit, { value: hh.charAt(0), fontSize: digitFont, totalNumberPages: pagesForDigit(hh.charAt(0)), transitionMs: 560, changeAnimationMode: "incoming" }), _jsx(SgDiscardDigit, { value: hh.charAt(1), fontSize: digitFont, totalNumberPages: pagesForDigit(hh.charAt(1)), transitionMs: 560, changeAnimationMode: "incoming" }), _jsx(Colon, {}), _jsx(SgDiscardDigit, { value: mm.charAt(0), fontSize: digitFont, totalNumberPages: pagesForDigit(mm.charAt(0)), transitionMs: 560, changeAnimationMode: "incoming" }), _jsx(SgDiscardDigit, { value: mm.charAt(1), fontSize: digitFont, totalNumberPages: pagesForDigit(mm.charAt(1)), transitionMs: 560, changeAnimationMode: "incoming" }), showSeconds ? (_jsxs(_Fragment, { children: [_jsx(Colon, {}), _jsx(SgDiscardDigit, { value: ss.charAt(0), fontSize: digitFont, totalNumberPages: pagesForDigit(ss.charAt(0)), transitionMs: 560, changeAnimationMode: "incoming" }), _jsx(SgDiscardDigit, { value: ss.charAt(1), fontSize: digitFont, totalNumberPages: pagesForDigit(ss.charAt(1)), transitionMs: 560, changeAnimationMode: "incoming" })] })) : null, format === "12h" && dayPeriod ? _jsx(PeriodCell, { value: dayPeriod.toUpperCase() }) : null] }));
|
|
316
|
+
}
|
|
317
|
+
if (digitalStyle === "matrix") {
|
|
318
|
+
const dotSize = Math.max(3, Math.round(sizePx * 0.32));
|
|
319
|
+
return (_jsx("div", { className: cn("flex items-center", className), "aria-label": "Digital clock", children: _jsx(SgMatrixDigit, { value: withPeriod, dotSize: dotSize, gap: Math.max(1, Math.round(dotSize * 0.35)), charGap: Math.max(3, Math.round(dotSize * 0.9)), padding: Math.max(6, Math.round(dotSize * 1.3)), rounded: Math.max(8, Math.round(dotSize * 1.1)) }) }));
|
|
320
|
+
}
|
|
321
|
+
if (digitalStyle === "neon") {
|
|
322
|
+
const neonFont = Math.max(18, Math.round(sizePx * 1.35));
|
|
323
|
+
return (_jsx("div", { className: cn("flex items-center", className), "aria-label": "Digital clock", children: _jsx(SgNeonDigit, { value: withPeriod, fontSize: neonFont, padding: Math.max(8, Math.round(sizePx * 0.6)), rounded: Math.max(10, Math.round(sizePx * 0.45)) }) }));
|
|
393
324
|
}
|
|
394
325
|
if (digitalStyle === "segment") {
|
|
395
326
|
const seg = renderSegmentText(text, sizePx);
|
|
@@ -398,10 +329,10 @@ function DigitalClock({ timezone, locale = "pt-BR", format = "24h", showSeconds
|
|
|
398
329
|
return (_jsxs("div", { className: cn("font-mono tabular-nums", classSize, className), style: fontSize, children: [text, format === "12h" && dayPeriod ? (_jsx("span", { className: "ml-2 align-top text-xs font-semibold text-muted-foreground", children: dayPeriod })) : null] }));
|
|
399
330
|
}
|
|
400
331
|
export function SgClock(props) {
|
|
401
|
-
const { variant = "digital", size = "md", timezone, locale = "pt-BR", format = "24h", showSeconds = true, digitalStyle = "default", secondHandMode = "step", themeId = "classic", theme, className, centerOverlay } = props;
|
|
332
|
+
const { variant = "digital", size = "md", initialServerTime, timezone, locale = "pt-BR", format = "24h", showSeconds = true, digitalStyle = "default", secondHandMode = "step", themeId = "classic", theme, className, centerOverlay } = props;
|
|
402
333
|
if (variant === "analog") {
|
|
403
334
|
const analogSize = typeof size === "number" ? size : size === "sm" ? 140 : size === "lg" ? 320 : 240;
|
|
404
|
-
return (_jsx(AnalogClock, { size: analogSize, themeId: themeId, theme: theme, timezone: timezone, locale: locale, showSeconds: showSeconds, secondHandMode: secondHandMode, className: className, centerOverlay: centerOverlay }));
|
|
335
|
+
return (_jsx(AnalogClock, { size: analogSize, initialServerTime: initialServerTime, themeId: themeId, theme: theme, timezone: timezone, locale: locale, showSeconds: showSeconds, secondHandMode: secondHandMode, className: className, centerOverlay: centerOverlay }));
|
|
405
336
|
}
|
|
406
|
-
return (_jsx(DigitalClock, { timezone: timezone, locale: locale, format: format, showSeconds: showSeconds, size: size, digitalStyle: digitalStyle, className: className }));
|
|
337
|
+
return (_jsx(DigitalClock, { timezone: timezone, initialServerTime: initialServerTime, locale: locale, format: format, showSeconds: showSeconds, size: size, digitalStyle: digitalStyle, className: className }));
|
|
407
338
|
}
|
|
@@ -5,6 +5,7 @@ export type SgTimeContextValue = {
|
|
|
5
5
|
tick: number;
|
|
6
6
|
nowMs: () => number;
|
|
7
7
|
};
|
|
8
|
+
export declare function useSgTimeContext(): SgTimeContextValue | null;
|
|
8
9
|
export declare function useSgTime(): SgTimeContextValue;
|
|
9
10
|
export declare function SgTimeProvider({ initialServerTime, children }: {
|
|
10
11
|
initialServerTime: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SgTimeProvider.d.ts","sourceRoot":"","sources":["../../../src/gadgets/clock/SgTimeProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,MAAM,CAAC;CACrB,CAAC;AAIF,wBAAgB,SAAS,
|
|
1
|
+
{"version":3,"file":"SgTimeProvider.d.ts","sourceRoot":"","sources":["../../../src/gadgets/clock/SgTimeProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,MAAM,CAAC;CACrB,CAAC;AAIF,wBAAgB,gBAAgB,8BAE/B;AAED,wBAAgB,SAAS,uBAYxB;AAED,wBAAgB,cAAc,CAAC,EAC7B,iBAAiB,EACjB,QAAQ,EACT,EAAE;IACD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,2CAyCA"}
|
|
@@ -2,11 +2,18 @@
|
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
const SgTimeContext = React.createContext(null);
|
|
5
|
+
export function useSgTimeContext() {
|
|
6
|
+
return React.useContext(SgTimeContext);
|
|
7
|
+
}
|
|
5
8
|
export function useSgTime() {
|
|
6
|
-
const ctx =
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
const ctx = useSgTimeContext();
|
|
10
|
+
const localFallback = React.useMemo(() => ({
|
|
11
|
+
serverStartMs: Date.now(),
|
|
12
|
+
perfStartMs: 0,
|
|
13
|
+
tick: 0,
|
|
14
|
+
nowMs: () => Date.now()
|
|
15
|
+
}), []);
|
|
16
|
+
return ctx ?? localFallback;
|
|
10
17
|
}
|
|
11
18
|
export function SgTimeProvider({ initialServerTime, children }) {
|
|
12
19
|
const serverStartMsRef = React.useRef(Date.parse(initialServerTime));
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type SgLinearGaugeRange = {
|
|
3
|
+
start: number;
|
|
4
|
+
end: number;
|
|
5
|
+
color?: string;
|
|
6
|
+
thickness?: number;
|
|
7
|
+
opacity?: number;
|
|
8
|
+
label?: React.ReactNode;
|
|
9
|
+
};
|
|
10
|
+
export type SgLinearGaugePointerShape = "triangle" | "inverted-triangle" | "circle" | "diamond" | "rect";
|
|
11
|
+
export type SgLinearGaugePointer = {
|
|
12
|
+
id?: string;
|
|
13
|
+
value: number;
|
|
14
|
+
color?: string;
|
|
15
|
+
size?: number;
|
|
16
|
+
shape?: SgLinearGaugePointerShape;
|
|
17
|
+
draggable?: boolean;
|
|
18
|
+
onValueChange?: (value: number) => void;
|
|
19
|
+
label?: React.ReactNode;
|
|
20
|
+
};
|
|
21
|
+
export type SgLinearGaugeProps = {
|
|
22
|
+
min?: number;
|
|
23
|
+
max?: number;
|
|
24
|
+
value?: number;
|
|
25
|
+
defaultValue?: number;
|
|
26
|
+
onValueChange?: (value: number) => void;
|
|
27
|
+
pointers?: SgLinearGaugePointer[];
|
|
28
|
+
onPointerValueChange?: (pointerId: string, value: number, pointer: SgLinearGaugePointer) => void;
|
|
29
|
+
ranges?: SgLinearGaugeRange[];
|
|
30
|
+
orientation?: "horizontal" | "vertical";
|
|
31
|
+
isAxisInversed?: boolean;
|
|
32
|
+
showPrimaryPointer?: boolean;
|
|
33
|
+
primaryPointerShape?: SgLinearGaugePointerShape;
|
|
34
|
+
primaryPointerColor?: string;
|
|
35
|
+
primaryPointerSize?: number;
|
|
36
|
+
primaryPointerDraggable?: boolean;
|
|
37
|
+
barPointer?: boolean;
|
|
38
|
+
barColor?: string;
|
|
39
|
+
barThickness?: number;
|
|
40
|
+
showTicks?: boolean;
|
|
41
|
+
showLabels?: boolean;
|
|
42
|
+
majorTickCount?: number;
|
|
43
|
+
minorTicksPerInterval?: number;
|
|
44
|
+
labelFormatter?: (value: number) => React.ReactNode;
|
|
45
|
+
axisColor?: string;
|
|
46
|
+
axisThickness?: number;
|
|
47
|
+
width?: number;
|
|
48
|
+
height?: number;
|
|
49
|
+
animate?: boolean;
|
|
50
|
+
animationDuration?: number;
|
|
51
|
+
className?: string;
|
|
52
|
+
style?: React.CSSProperties;
|
|
53
|
+
ariaLabel?: string;
|
|
54
|
+
};
|
|
55
|
+
export declare function SgLinearGauge(props: Readonly<SgLinearGaugeProps>): import("react/jsx-runtime").JSX.Element;
|
|
56
|
+
export declare namespace SgLinearGauge {
|
|
57
|
+
var displayName: string;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=SgLinearGauge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SgLinearGauge.d.ts","sourceRoot":"","sources":["../../../src/gadgets/gauge/SgLinearGauge.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAc/B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GACjC,UAAU,GACV,mBAAmB,GACnB,QAAQ,GACR,SAAS,GACT,MAAM,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,yBAAyB,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC,QAAQ,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAClC,oBAAoB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAEjG,MAAM,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAE9B,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mBAAmB,CAAC,EAAE,yBAAyB,CAAC;IAChD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IAEpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAWF,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,kBAAkB,CAAC,2CAogBhE;yBApgBe,aAAa"}
|