@seedgrid/fe-components 2026.8.6 → 2026.8.7

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 (61) hide show
  1. package/dist/ai/seedgrid-components.manifest.json +330 -148
  2. package/dist/commons/SgSkeleton.meta.js +3 -3
  3. package/dist/commons/SgToastHost.meta.js +1 -1
  4. package/dist/commons/SgToaster.meta.js +1 -1
  5. package/dist/commons/SgWhistleHost.meta.d.ts.map +1 -1
  6. package/dist/commons/SgWhistleHost.meta.js +1 -0
  7. package/dist/commons/SgWhistler.d.ts +10 -0
  8. package/dist/commons/SgWhistler.d.ts.map +1 -1
  9. package/dist/commons/SgWhistler.js +8 -4
  10. package/dist/commons/SgWhistler.meta.d.ts.map +1 -1
  11. package/dist/commons/SgWhistler.meta.js +1 -0
  12. package/dist/commons/dismissSgToast.meta.js +3 -3
  13. package/dist/commons/dismissSgWhistle.meta.js +3 -3
  14. package/dist/commons/subscribeSgToasts.meta.js +3 -3
  15. package/dist/commons/subscribeSgWhistles.meta.js +3 -3
  16. package/dist/commons/toast.meta.d.ts.map +1 -1
  17. package/dist/commons/toast.meta.js +32 -11
  18. package/dist/commons/whistle.meta.d.ts.map +1 -1
  19. package/dist/commons/whistle.meta.js +27 -9
  20. package/dist/digits/fade-digit/SgFadeDigit.meta.js +1 -1
  21. package/dist/digits/matrix-digit/SgMatrixDigit.meta.js +1 -1
  22. package/dist/digits/roller3d-digit/SgRoller3DDigit.meta.js +1 -1
  23. package/dist/digits/segment-digit/SgSegmentDigit.meta.js +1 -1
  24. package/dist/digits/seven-segment-digit/SgSevenSegmentDigit.meta.js +1 -1
  25. package/dist/environment/useSgEnvironment.meta.js +6 -6
  26. package/dist/environment/useSgNamespaceProvider.meta.js +2 -2
  27. package/dist/environment/useSgPersistence.meta.js +6 -6
  28. package/dist/environment/useSgPersistentState.meta.d.ts.map +1 -1
  29. package/dist/environment/useSgPersistentState.meta.js +15 -9
  30. package/dist/gadgets/calendar/SgCalendar.meta.js +1 -1
  31. package/dist/gadgets/clock/themes/useSgClockThemeResolver.meta.d.ts.map +1 -1
  32. package/dist/gadgets/clock/themes/useSgClockThemeResolver.meta.js +24 -17
  33. package/dist/gadgets/clock/useSgTime.meta.js +3 -3
  34. package/dist/gadgets/qr-code/SgQRCode.meta.js +1 -1
  35. package/dist/gadgets/string-animator/SgStringAnimator.meta.js +1 -1
  36. package/dist/i18n/en-US.d.ts.map +1 -1
  37. package/dist/i18n/en-US.js +1 -0
  38. package/dist/i18n/es.d.ts.map +1 -1
  39. package/dist/i18n/es.js +1 -0
  40. package/dist/i18n/fr.d.ts.map +1 -1
  41. package/dist/i18n/fr.js +1 -0
  42. package/dist/i18n/pt-BR.d.ts.map +1 -1
  43. package/dist/i18n/pt-BR.js +1 -0
  44. package/dist/i18n/pt-PT.d.ts.map +1 -1
  45. package/dist/i18n/pt-PT.js +1 -0
  46. package/dist/i18n/useComponentsI18n.meta.js +6 -6
  47. package/dist/layout/SgCarousel.meta.js +1 -1
  48. package/dist/layout/SgExpandablePanel.meta.d.ts.map +1 -1
  49. package/dist/layout/SgExpandablePanel.meta.js +5 -1
  50. package/dist/layout/SgGrid.meta.js +3 -3
  51. package/dist/layout/SgMenu.meta.d.ts.map +1 -1
  52. package/dist/layout/SgMenu.meta.js +39 -3
  53. package/dist/layout/SgStack.meta.js +3 -3
  54. package/dist/sandbox.cjs +34 -34
  55. package/dist/wizard/SgWizard.d.ts +12 -0
  56. package/dist/wizard/SgWizard.d.ts.map +1 -1
  57. package/dist/wizard/SgWizard.js +11 -2
  58. package/dist/wizard/SgWizard.meta.d.ts.map +1 -1
  59. package/dist/wizard/SgWizard.meta.js +11 -1
  60. package/dist/wizard/SgWizardPage.meta.js +1 -1
  61. package/package.json +3 -3
@@ -60,9 +60,9 @@ export const sgMeta = {
60
60
  states: ["loading", "static"],
61
61
  examples: [
62
62
  {
63
- id: "basic",
64
- title: "Basico",
65
- file: "apps/showcase/src/app/components/sg-skeleton/samples/basico.tsx.sample",
63
+ id: "basic-shapes",
64
+ title: "Formas basicas",
65
+ file: "apps/showcase/src/app/components/sg-skeleton/samples/basic-shapes.tsx.sample",
66
66
  kind: "sample"
67
67
  },
68
68
  {
@@ -18,7 +18,7 @@ export const sgMeta = {
18
18
  ],
19
19
  states: ["inactive", "active-host"],
20
20
  examples: [
21
- { id: "basic", title: "Basico", file: "apps/showcase/src/app/components/sg-toast-host/samples/basico.tsx.sample", kind: "sample" },
21
+ { id: "base-setup", title: "Setup basico", file: "apps/showcase/src/app/components/sg-toast-host/samples/base-setup.tsx.sample", kind: "sample" },
22
22
  { id: "playground", title: "Playground", file: "apps/showcase/src/app/components/sg-toast-host/sg-toast-host.tsx.playground", kind: "playground" }
23
23
  ],
24
24
  showcase: { route: "/components/sg-toast-host", hasPlayground: true, hasPropsTable: true },
@@ -21,7 +21,7 @@ export const sgMeta = {
21
21
  ],
22
22
  states: ["idle", "showing-toasts"],
23
23
  examples: [
24
- { id: "basic", title: "Basico", file: "apps/showcase/src/app/components/sg-toaster/samples/basico.tsx.sample", kind: "sample" },
24
+ { id: "base-setup", title: "Setup basico", file: "apps/showcase/src/app/components/sg-toaster/samples/base-setup.tsx.sample", kind: "sample" },
25
25
  { id: "playground", title: "Playground", file: "apps/showcase/src/app/components/sg-toaster/sg-toaster.tsx.playground", kind: "playground" }
26
26
  ],
27
27
  showcase: { route: "/components/sg-toaster", hasPlayground: true, hasPropsTable: true },
@@ -1 +1 @@
1
- {"version":3,"file":"SgWhistleHost.meta.d.ts","sourceRoot":"","sources":["../../src/commons/SgWhistleHost.meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE9D,eAAO,MAAM,MAAM,EAAE,QA2BpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WAoBrB,CAAC"}
1
+ {"version":3,"file":"SgWhistleHost.meta.d.ts","sourceRoot":"","sources":["../../src/commons/SgWhistleHost.meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE9D,eAAO,MAAM,MAAM,EAAE,QA4BpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WAoBrB,CAAC"}
@@ -13,6 +13,7 @@ export const sgMeta = {
13
13
  fieldSemantics: ["alertHost", "persistentFeedback", "stackedAlerts"],
14
14
  props: [
15
15
  { name: "max", type: "number", default: 4, description: "Quantidade maxima de whistle items visiveis neste host.", semanticRole: "behavior", bindable: true },
16
+ { name: "duration", type: "number", default: 4000, description: "Duracao padrao aplicada aos whistles deste host, em milissegundos (mesmo default do SgToastHost). Cada whistle sobrescreve com options.duration, que tem prioridade; use 0 (ou negativo) para que nada suma sozinho. Whistle 'loading' nunca expira. Com varios hosts montados, vale o do host ATIVO (o ultimo montado).", semanticRole: "behavior", bindable: true },
16
17
  { name: "newestOnTop", type: "boolean", default: false, description: "Inverte a ordem visual para mostrar os mais novos primeiro.", semanticRole: "behavior", bindable: true },
17
18
  { name: "gap", type: "number", default: 12, description: "Espacamento entre os avisos renderizados.", semanticRole: "appearance", bindable: true },
18
19
  { name: "rounded", type: "boolean", default: true, description: "Arredonda os cantos de cada whistle (desligue para cantos retos).", semanticRole: "appearance", bindable: true }
@@ -9,6 +9,16 @@ export type SgWhistlerProps = Omit<React.HTMLAttributes<HTMLDivElement>, "childr
9
9
  max?: number;
10
10
  newestOnTop?: boolean;
11
11
  gap?: number;
12
+ /**
13
+ * Duracao padrao, em milissegundos, dos whistles deste host. Cada whistle pode sobrescrever
14
+ * com `options.duration`, que tem PRIORIDADE. Use 0 (ou negativo) para que nada suma sozinho
15
+ * por padrao. Whistle `loading` nunca expira, qualquer que seja o valor.
16
+ *
17
+ * Espelha o `duration` do SgToaster/SgToastHost — mesmo default e mesma precedencia. Antes o
18
+ * valor era fixo no codigo e nao havia como mudar o padrao sem repetir `duration` em toda
19
+ * chamada de sgWhistle.
20
+ */
21
+ duration?: number;
12
22
  /** Arredonda os cantos de cada whistle (rounded-lg). Desligue para cantos retos. */
13
23
  rounded?: boolean;
14
24
  customColors?: Partial<Record<SgWhistleSeverity, SgWhistleColors>>;
@@ -1 +1 @@
1
- {"version":3,"file":"SgWhistler.d.ts","sourceRoot":"","sources":["../../src/commons/SgWhistler.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AAOrB,KAAK,eAAe,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,GAAG;IACrF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC,CAAC;CACpE,CAAC;AAEF,qFAAqF;AACrF,eAAO,MAAM,qBAAqB,wBAA6B,CAAC;AA2GhE,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,kDA6IhD"}
1
+ {"version":3,"file":"SgWhistler.d.ts","sourceRoot":"","sources":["../../src/commons/SgWhistler.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AAOrB,KAAK,eAAe,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,GAAG;IACrF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oFAAoF;IACpF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC,CAAC;CACpE,CAAC;AAEF,qFAAqF;AACrF,eAAO,MAAM,qBAAqB,wBAA6B,CAAC;AA2GhE,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,kDAiJhD"}
@@ -96,7 +96,11 @@ function renderWhistleContent(whistle) {
96
96
  }
97
97
  export function SgWhistler(props) {
98
98
  const renderedByHost = React.useContext(SgWhistlerHostContext);
99
- const { max = 4, newestOnTop = false, gap = 12, rounded = true, customColors, className, style, ...rest } = props;
99
+ const { max = 4,
100
+ // Mesmo default do SgToaster: os dois pares (toast/host e whistle/host) expoem o mesmo
101
+ // contrato de duracao, entao o numero tambem tem que bater. O 5000 anterior era um valor
102
+ // cravado no efeito, sem prop e sem documentacao — nao uma escolha.
103
+ duration = 4000, newestOnTop = false, gap = 12, rounded = true, customColors, className, style, ...rest } = props;
100
104
  const i18n = useComponentsI18n();
101
105
  const [whistles, setWhistles] = React.useState([]);
102
106
  const timersRef = React.useRef({});
@@ -126,7 +130,7 @@ export function SgWhistler(props) {
126
130
  if (whistle.severity === "loading") {
127
131
  return;
128
132
  }
129
- const timeout = whistle.duration ?? 5000;
133
+ const timeout = whistle.duration ?? duration;
130
134
  if (timeout <= 0) {
131
135
  return;
132
136
  }
@@ -142,7 +146,7 @@ export function SgWhistler(props) {
142
146
  clearTimeout(timeoutRef);
143
147
  delete timersRef.current[id];
144
148
  });
145
- }, [visible]);
149
+ }, [visible, duration]);
146
150
  React.useEffect(() => {
147
151
  return () => {
148
152
  Object.values(timersRef.current).forEach((timeoutRef) => clearTimeout(timeoutRef));
@@ -163,6 +167,6 @@ export function SgWhistler(props) {
163
167
  }, role: "status", "aria-live": "polite", children: [whistle.icon ? _jsx("div", { className: "shrink-0 pt-0.5", children: whistle.icon }) : null, renderWhistleContent(whistle), whistle.action ? (_jsx("button", { type: "button", className: "shrink-0 rounded border border-current/25 px-2 py-1 text-xs font-medium", onClick: () => {
164
168
  whistle.action?.onClick();
165
169
  dismissSgWhistle(whistle.id);
166
- }, children: whistle.action.label })) : null, dismissible ? (_jsx("button", { type: "button", className: "shrink-0 rounded px-1 py-0.5 text-sm leading-none opacity-80", "aria-label": t(i18n, "components.toaster.close"), onClick: () => dismissSgWhistle(whistle.id), children: "x" })) : null] }, whistle.id));
170
+ }, children: whistle.action.label })) : null, dismissible ? (_jsx("button", { type: "button", className: "shrink-0 rounded px-1 py-0.5 text-sm leading-none opacity-80", "aria-label": t(i18n, "components.whistler.close"), onClick: () => dismissSgWhistle(whistle.id), children: "x" })) : null] }, whistle.id));
167
171
  }) }));
168
172
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SgWhistler.meta.d.ts","sourceRoot":"","sources":["../../src/commons/SgWhistler.meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE9D,eAAO,MAAM,MAAM,EAAE,QA2BpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WAmBrB,CAAC"}
1
+ {"version":3,"file":"SgWhistler.meta.d.ts","sourceRoot":"","sources":["../../src/commons/SgWhistler.meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE9D,eAAO,MAAM,MAAM,EAAE,QA4BpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WAmBrB,CAAC"}
@@ -13,6 +13,7 @@ export const sgMeta = {
13
13
  fieldSemantics: ["alertRenderer", "persistentFeedback", "stackedAlerts"],
14
14
  props: [
15
15
  { name: "max", type: "number", default: 4, description: "Quantidade maxima de whistle items visiveis.", semanticRole: "behavior", bindable: true },
16
+ { name: "duration", type: "number", default: 4000, description: "Duracao padrao dos whistles em milissegundos (mesmo default do SgToaster). Cada whistle sobrescreve com options.duration, que tem prioridade; use 0 (ou negativo) para que nada suma sozinho. Whistle 'loading' nunca expira.", semanticRole: "behavior", bindable: true },
16
17
  { name: "newestOnTop", type: "boolean", default: false, description: "Inverte a ordem visual para mostrar os mais novos primeiro.", semanticRole: "behavior", bindable: true },
17
18
  { name: "gap", type: "number", default: 12, description: "Espacamento entre os avisos renderizados.", semanticRole: "appearance", bindable: true },
18
19
  { name: "rounded", type: "boolean", default: true, description: "Arredonda os cantos de cada whistle (desligue para cantos retos).", semanticRole: "appearance", bindable: true }
@@ -25,18 +25,18 @@ export const sgMeta = {
25
25
  {
26
26
  id: "dismiss-one",
27
27
  title: "Fechar um toast especifico",
28
- file: "apps/showcase/src/app/components/toasts/samples/dismiss-one.tsx.sample",
28
+ file: "apps/showcase/src/app/components/sg-toaster/samples/dismiss-one.tsx.sample",
29
29
  kind: "sample"
30
30
  },
31
31
  {
32
32
  id: "dismiss-all",
33
33
  title: "Fechar todos os toasts",
34
- file: "apps/showcase/src/app/components/toasts/samples/dismiss-all.tsx.sample",
34
+ file: "apps/showcase/src/app/components/sg-toaster/samples/dismiss-all.tsx.sample",
35
35
  kind: "sample"
36
36
  }
37
37
  ],
38
38
  showcase: {
39
- route: "/components/toasts",
39
+ route: "/components/sg-toaster",
40
40
  hasPlayground: true,
41
41
  hasPropsTable: true
42
42
  }
@@ -25,18 +25,18 @@ export const sgMeta = {
25
25
  {
26
26
  id: "dismiss-one",
27
27
  title: "Fechar um whistle especifico",
28
- file: "apps/showcase/src/app/components/whistles/samples/dismiss-one.tsx.sample",
28
+ file: "apps/showcase/src/app/components/sg-whistler/samples/dismiss-one.tsx.sample",
29
29
  kind: "sample"
30
30
  },
31
31
  {
32
32
  id: "dismiss-all",
33
33
  title: "Fechar todos os whistles",
34
- file: "apps/showcase/src/app/components/whistles/samples/dismiss-all.tsx.sample",
34
+ file: "apps/showcase/src/app/components/sg-whistler/samples/dismiss-all.tsx.sample",
35
35
  kind: "sample"
36
36
  }
37
37
  ],
38
38
  showcase: {
39
- route: "/components/whistles",
39
+ route: "/components/sg-whistler",
40
40
  hasPlayground: true,
41
41
  hasPropsTable: true
42
42
  }
@@ -26,18 +26,18 @@ export const sgMeta = {
26
26
  {
27
27
  id: "basic",
28
28
  title: "Monitorar mudancas de toasts",
29
- file: "apps/showcase/src/app/components/toasts/samples/subscribe.tsx.sample",
29
+ file: "apps/showcase/src/app/components/sg-toaster/samples/subscribe.tsx.sample",
30
30
  kind: "sample"
31
31
  },
32
32
  {
33
33
  id: "in-effect",
34
34
  title: "Usar em useEffect",
35
- file: "apps/showcase/src/app/components/toasts/samples/subscribe-effect.tsx.sample",
35
+ file: "apps/showcase/src/app/components/sg-toaster/samples/subscribe-effect.tsx.sample",
36
36
  kind: "sample"
37
37
  }
38
38
  ],
39
39
  showcase: {
40
- route: "/components/toasts",
40
+ route: "/components/sg-toaster",
41
41
  hasPlayground: false,
42
42
  hasPropsTable: true
43
43
  }
@@ -26,18 +26,18 @@ export const sgMeta = {
26
26
  {
27
27
  id: "basic",
28
28
  title: "Monitorar mudancas de whistles",
29
- file: "apps/showcase/src/app/components/whistles/samples/subscribe.tsx.sample",
29
+ file: "apps/showcase/src/app/components/sg-whistler/samples/subscribe.tsx.sample",
30
30
  kind: "sample"
31
31
  },
32
32
  {
33
33
  id: "in-effect",
34
34
  title: "Usar em useEffect",
35
- file: "apps/showcase/src/app/components/whistles/samples/subscribe-effect.tsx.sample",
35
+ file: "apps/showcase/src/app/components/sg-whistler/samples/subscribe-effect.tsx.sample",
36
36
  kind: "sample"
37
37
  }
38
38
  ],
39
39
  showcase: {
40
- route: "/components/whistles",
40
+ route: "/components/sg-whistler",
41
41
  hasPlayground: false,
42
42
  hasPropsTable: true
43
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"toast.meta.d.ts","sourceRoot":"","sources":["../../src/commons/toast.meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE9D,eAAO,MAAM,MAAM,EAAE,QA6GpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WA4BrB,CAAC"}
1
+ {"version":3,"file":"toast.meta.d.ts","sourceRoot":"","sources":["../../src/commons/toast.meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE9D,eAAO,MAAM,MAAM,EAAE,QAkIpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WA4BrB,CAAC"}
@@ -45,8 +45,11 @@ export const sgMeta = {
45
45
  {
46
46
  name: "options.duration",
47
47
  type: "number",
48
- default: 3000,
49
- description: "Duracao em milissegundos antes de auto-fechar (0 = permanente).",
48
+ // SEM default de proposito: a opcao por toast nao tem valor proprio no codigo
49
+ // (`toast.duration ?? duration`), quem tem default e' o host. O antigo `default: 3000`
50
+ // era um terceiro numero que nao existe em lugar nenhum. Espelha `options.duration` do
51
+ // sgWhistle, que ja' era assim.
52
+ description: "Duracao em milissegundos deste toast; tem PRIORIDADE sobre o host. Omitir NAO significa permanente: cai no `duration` do SgToaster/SgToastHost, cujo default e' 4000 (4s), igual ao par whistle/SgWhistleHost. Use 0 (ou negativo) para permanente, ate' o usuario fechar. Toast do tipo 'loading' nunca fecha sozinho, qualquer que seja o valor.",
50
53
  semanticRole: "behavior",
51
54
  bindable: true
52
55
  },
@@ -83,26 +86,44 @@ export const sgMeta = {
83
86
  states: ["success", "error", "warning", "info", "loading", "default"],
84
87
  examples: [
85
88
  {
86
- id: "basic",
87
- title: "Toast simples",
88
- file: "apps/showcase/src/app/components/toasts/samples/basic.tsx.sample",
89
+ id: "base-setup",
90
+ title: "Setup basico (host + toast)",
91
+ file: "apps/showcase/src/app/components/sg-toaster/samples/base-setup.tsx.sample",
89
92
  kind: "sample"
90
93
  },
91
94
  {
92
- id: "with-action",
93
- title: "Toast com acao",
94
- file: "apps/showcase/src/app/components/toasts/samples/with-action.tsx.sample",
95
+ id: "toast-types",
96
+ title: "Tipos de toast",
97
+ file: "apps/showcase/src/app/components/sg-toaster/samples/toast-types.tsx.sample",
95
98
  kind: "sample"
96
99
  },
97
100
  {
98
- id: "promise",
101
+ id: "options-per-toast",
102
+ title: "Opcoes por toast (duration, etc.)",
103
+ file: "apps/showcase/src/app/components/sg-toaster/samples/options-per-toast.tsx.sample",
104
+ kind: "sample"
105
+ },
106
+ {
107
+ id: "actions-and-custom-toast",
108
+ title: "Acao e toast customizado",
109
+ file: "apps/showcase/src/app/components/sg-toaster/samples/actions-and-custom-toast.tsx.sample",
110
+ kind: "sample"
111
+ },
112
+ {
113
+ id: "loading-by-id-update-same-toast",
114
+ title: "Loading atualizado pelo id",
115
+ file: "apps/showcase/src/app/components/sg-toaster/samples/loading-by-id-update-same-toast.tsx.sample",
116
+ kind: "sample"
117
+ },
118
+ {
119
+ id: "toast-promise",
99
120
  title: "Toast com promise",
100
- file: "apps/showcase/src/app/components/toasts/samples/promise.tsx.sample",
121
+ file: "apps/showcase/src/app/components/sg-toaster/samples/toast-promise.tsx.sample",
101
122
  kind: "sample"
102
123
  }
103
124
  ],
104
125
  showcase: {
105
- route: "/components/toasts",
126
+ route: "/components/sg-toaster",
106
127
  hasPlayground: true,
107
128
  hasPropsTable: true
108
129
  }
@@ -1 +1 @@
1
- {"version":3,"file":"whistle.meta.d.ts","sourceRoot":"","sources":["../../src/commons/whistle.meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE9D,eAAO,MAAM,MAAM,EAAE,QAyIpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WA4BrB,CAAC"}
1
+ {"version":3,"file":"whistle.meta.d.ts","sourceRoot":"","sources":["../../src/commons/whistle.meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE9D,eAAO,MAAM,MAAM,EAAE,QA2JpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WA4BrB,CAAC"}
@@ -52,7 +52,7 @@ export const sgMeta = {
52
52
  {
53
53
  name: "options.duration",
54
54
  type: "number",
55
- description: "Duracao em milissegundos (0 = permanente, padrao = permanente).",
55
+ description: "Duracao em milissegundos deste whistle; tem PRIORIDADE sobre o host. Omitir NAO significa permanente: cai no `duration` do SgWhistler/SgWhistleHost, cujo default e' 4000 (4s), igual ao par toast/SgToastHost. Use 0 (ou negativo) para permanente, ate' o usuario fechar no x — obrigatorio quando o aviso bloqueia uma acao ou carrega um botao de acao, porque sumir leva embora a informacao e o caminho de saida junto. Severidade 'loading' nunca expira sozinha.",
56
56
  semanticRole: "behavior",
57
57
  bindable: true
58
58
  },
@@ -111,26 +111,44 @@ export const sgMeta = {
111
111
  states: ["default", "success", "info", "warning", "error", "loading"],
112
112
  examples: [
113
113
  {
114
- id: "basic",
115
- title: "Whistle simples",
116
- file: "apps/showcase/src/app/components/whistles/samples/basic.tsx.sample",
114
+ id: "base-setup",
115
+ title: "Setup basico (host + sgWhistle)",
116
+ file: "apps/showcase/src/app/components/sg-whistler/samples/base-setup.tsx.sample",
117
117
  kind: "sample"
118
118
  },
119
119
  {
120
- id: "with-action",
121
- title: "Whistle com acao",
122
- file: "apps/showcase/src/app/components/whistles/samples/with-action.tsx.sample",
120
+ id: "severities-and-stack",
121
+ title: "Severidades e empilhamento",
122
+ file: "apps/showcase/src/app/components/sg-whistler/samples/severities-and-stack.tsx.sample",
123
+ kind: "sample"
124
+ },
125
+ {
126
+ id: "actions-border-opacity",
127
+ title: "Acao, borda e opacidade",
128
+ file: "apps/showcase/src/app/components/sg-whistler/samples/actions-border-opacity.tsx.sample",
129
+ kind: "sample"
130
+ },
131
+ {
132
+ id: "update-by-id",
133
+ title: "Substituir/atualizar pelo id",
134
+ file: "apps/showcase/src/app/components/sg-whistler/samples/update-by-id.tsx.sample",
135
+ kind: "sample"
136
+ },
137
+ {
138
+ id: "custom-renderer-and-colors",
139
+ title: "Renderer e cores customizados",
140
+ file: "apps/showcase/src/app/components/sg-whistler/samples/custom-renderer-and-colors.tsx.sample",
123
141
  kind: "sample"
124
142
  },
125
143
  {
126
144
  id: "promise",
127
145
  title: "Whistle com promise",
128
- file: "apps/showcase/src/app/components/whistles/samples/promise.tsx.sample",
146
+ file: "apps/showcase/src/app/components/sg-whistler/samples/promise.tsx.sample",
129
147
  kind: "sample"
130
148
  }
131
149
  ],
132
150
  showcase: {
133
- route: "/components/whistles",
151
+ route: "/components/sg-whistler",
134
152
  hasPlayground: true,
135
153
  hasPropsTable: true
136
154
  }
@@ -20,7 +20,7 @@ export const sgMeta = {
20
20
  ],
21
21
  states: ["idle", "animating"],
22
22
  examples: [
23
- { id: "basic", title: "Basico", file: "apps/showcase/src/app/components/digits/sg-fade-digit/samples/basico.tsx.sample", kind: "sample" },
23
+ { id: "basico-0-9", title: "Basico (0-9)", file: "apps/showcase/src/app/components/digits/sg-fade-digit/samples/basico-0-9.tsx.sample", kind: "sample" },
24
24
  { id: "playground", title: "Playground", file: "apps/showcase/src/app/components/digits/sg-fade-digit/sg-fade-digit.tsx.playground", kind: "playground" }
25
25
  ],
26
26
  showcase: { route: "/components/digits/sg-fade-digit", hasPlayground: true, hasPropsTable: true },
@@ -20,7 +20,7 @@ export const sgMeta = {
20
20
  ],
21
21
  states: ["idle", "animating"],
22
22
  examples: [
23
- { id: "basic", title: "Basico", file: "apps/showcase/src/app/components/digits/sg-matrix-digit/samples/basico.tsx.sample", kind: "sample" },
23
+ { id: "basico-0-9", title: "Basico (0-9)", file: "apps/showcase/src/app/components/digits/sg-matrix-digit/samples/basico-0-9.tsx.sample", kind: "sample" },
24
24
  { id: "playground", title: "Playground", file: "apps/showcase/src/app/components/digits/sg-matrix-digit/sg-matrix-digit.tsx.playground", kind: "playground" }
25
25
  ],
26
26
  showcase: { route: "/components/digits/sg-matrix-digit", hasPlayground: true, hasPropsTable: true },
@@ -20,7 +20,7 @@ export const sgMeta = {
20
20
  ],
21
21
  states: ["idle", "animating"],
22
22
  examples: [
23
- { id: "basic", title: "Basico", file: "apps/showcase/src/app/components/digits/sg-roller3d-digit/samples/basico.tsx.sample", kind: "sample" },
23
+ { id: "basico-0-9", title: "Basico (0-9)", file: "apps/showcase/src/app/components/digits/sg-roller3d-digit/samples/basico-0-9.tsx.sample", kind: "sample" },
24
24
  { id: "playground", title: "Playground", file: "apps/showcase/src/app/components/digits/sg-roller3d-digit/sg-roller3d-digit.tsx.playground", kind: "playground" }
25
25
  ],
26
26
  showcase: { route: "/components/digits/sg-roller3d-digit", hasPlayground: true, hasPropsTable: true },
@@ -20,7 +20,7 @@ export const sgMeta = {
20
20
  ],
21
21
  states: ["idle"],
22
22
  examples: [
23
- { id: "basic", title: "Basico", file: "apps/showcase/src/app/components/digits/sg-segment-digit/samples/basico.tsx.sample", kind: "sample" },
23
+ { id: "basico-0-9", title: "Basico (0-9)", file: "apps/showcase/src/app/components/digits/sg-segment-digit/samples/basico-0-9.tsx.sample", kind: "sample" },
24
24
  { id: "playground", title: "Playground", file: "apps/showcase/src/app/components/digits/sg-segment-digit/sg-segment-digit.tsx.playground", kind: "playground" }
25
25
  ],
26
26
  showcase: { route: "/components/digits/sg-segment-digit", hasPlayground: true, hasPropsTable: true },
@@ -20,7 +20,7 @@ export const sgMeta = {
20
20
  ],
21
21
  states: ["idle"],
22
22
  examples: [
23
- { id: "basic", title: "Basico", file: "apps/showcase/src/app/components/digits/sg-seven-segment-digit/samples/basico.tsx.sample", kind: "sample" },
23
+ { id: "basico-0-9", title: "Basico (0-9)", file: "apps/showcase/src/app/components/digits/sg-seven-segment-digit/samples/basico-0-9.tsx.sample", kind: "sample" },
24
24
  { id: "playground", title: "Playground", file: "apps/showcase/src/app/components/digits/sg-seven-segment-digit/sg-seven-segment-digit.tsx.playground", kind: "playground" }
25
25
  ],
26
26
  showcase: { route: "/components/digits/sg-seven-segment-digit", hasPlayground: true, hasPropsTable: true },
@@ -51,15 +51,15 @@ export const sgMeta = {
51
51
  states: ["default", "custom", "persisted"],
52
52
  examples: [
53
53
  {
54
- id: "basic",
55
- title: "Acessar config de ambiente",
56
- file: "apps/showcase/src/app/components/hooks/use-sg-environment/samples/basic.tsx.sample",
54
+ id: "default-sem-provider",
55
+ title: "Default sem provider",
56
+ file: "apps/showcase/src/app/components/hooks/use-sg-environment/samples/default-sem-provider.tsx.sample",
57
57
  kind: "sample"
58
58
  },
59
59
  {
60
- id: "with-namespace",
61
- title: "Com namespace customizado",
62
- file: "apps/showcase/src/app/components/hooks/use-sg-environment/samples/with-namespace.tsx.sample",
60
+ id: "com-provider",
61
+ title: "Com provider",
62
+ file: "apps/showcase/src/app/components/hooks/use-sg-environment/samples/com-provider.tsx.sample",
63
63
  kind: "sample"
64
64
  }
65
65
  ],
@@ -25,12 +25,12 @@ export const sgMeta = {
25
25
  {
26
26
  id: "basic",
27
27
  title: "Obter namespace atual",
28
- file: "apps/showcase/src/app/components/hooks/use-sg-namespace-provider/samples/basic.tsx.sample",
28
+ file: "apps/showcase/src/app/components/providers/sg-environment-provider/samples/namespace-provider-hook.tsx.sample",
29
29
  kind: "sample"
30
30
  }
31
31
  ],
32
32
  showcase: {
33
- route: "/components/hooks/use-sg-namespace-provider",
33
+ route: "/components/providers/sg-environment-provider",
34
34
  hasPlayground: false,
35
35
  hasPropsTable: true
36
36
  }
@@ -65,15 +65,15 @@ export const sgMeta = {
65
65
  states: ["idle", "loading", "saving", "error"],
66
66
  examples: [
67
67
  {
68
- id: "basic",
69
- title: "Carregar e salvar estado",
70
- file: "apps/showcase/src/app/components/hooks/use-sg-persistence/samples/basic.tsx.sample",
68
+ id: "uso-basico",
69
+ title: "Uso basico",
70
+ file: "apps/showcase/src/app/components/hooks/use-sg-persistence/samples/uso-basico.tsx.sample",
71
71
  kind: "sample"
72
72
  },
73
73
  {
74
- id: "form-state",
75
- title: "Persistir estado de formulario",
76
- file: "apps/showcase/src/app/components/hooks/use-sg-persistence/samples/form-state.tsx.sample",
74
+ id: "quando-usar-vs-persistent-state",
75
+ title: "Quando usar vs useSgPersistentState",
76
+ file: "apps/showcase/src/app/components/hooks/use-sg-persistence/samples/quando-usar-vs-persistent-state.tsx.sample",
77
77
  kind: "sample"
78
78
  }
79
79
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"useSgPersistentState.meta.d.ts","sourceRoot":"","sources":["../../src/environment/useSgPersistentState.meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE9D,eAAO,MAAM,MAAM,EAAE,QAsFpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WA2BrB,CAAC"}
1
+ {"version":3,"file":"useSgPersistentState.meta.d.ts","sourceRoot":"","sources":["../../src/environment/useSgPersistentState.meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE9D,eAAO,MAAM,MAAM,EAAE,QA4FpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WA2BrB,CAAC"}
@@ -60,21 +60,27 @@ export const sgMeta = {
60
60
  states: ["loading", "loaded", "saving", "error"],
61
61
  examples: [
62
62
  {
63
- id: "basic",
64
- title: "Estado persistido simples",
65
- file: "apps/showcase/src/app/components/hooks/use-sg-persistent-state/samples/basic.tsx.sample",
63
+ id: "uso-basico",
64
+ title: "Uso basico",
65
+ file: "apps/showcase/src/app/components/hooks/use-sg-persistent-state/samples/uso-basico.tsx.sample",
66
66
  kind: "sample"
67
67
  },
68
68
  {
69
- id: "with-serialization",
70
- title: "Com serializacao customizada",
71
- file: "apps/showcase/src/app/components/hooks/use-sg-persistent-state/samples/with-serialization.tsx.sample",
69
+ id: "serializacao-customizada",
70
+ title: "Serializacao customizada",
71
+ file: "apps/showcase/src/app/components/hooks/use-sg-persistent-state/samples/serialize-e-deserialize-customizados.tsx.sample",
72
72
  kind: "sample"
73
73
  },
74
74
  {
75
- id: "form-state",
76
- title: "Estado persistido de formulario",
77
- file: "apps/showcase/src/app/components/hooks/use-sg-persistent-state/samples/form-state.tsx.sample",
75
+ id: "com-isolamento-por-namespace",
76
+ title: "Isolamento por namespace",
77
+ file: "apps/showcase/src/app/components/hooks/use-sg-persistent-state/samples/com-isolamento-por-namespace.tsx.sample",
78
+ kind: "sample"
79
+ },
80
+ {
81
+ id: "versionamento-de-estado",
82
+ title: "Versionamento de estado",
83
+ file: "apps/showcase/src/app/components/hooks/use-sg-persistent-state/samples/versionamento-de-estado.tsx.sample",
78
84
  kind: "sample"
79
85
  }
80
86
  ],
@@ -23,7 +23,7 @@ export const sgMeta = {
23
23
  ],
24
24
  states: ["default", "multi-month", "disabled-dates", "controlled"],
25
25
  examples: [
26
- { id: "basic", title: "Basico", file: "apps/showcase/src/app/components/gadgets/sg-calendar/samples/basico.tsx.sample", kind: "sample" },
26
+ { id: "basico-mes-atual", title: "Basico (mes atual)", file: "apps/showcase/src/app/components/gadgets/sg-calendar/samples/basico-mes-atual.tsx.sample", kind: "sample" },
27
27
  { id: "playground", title: "Playground", file: "apps/showcase/src/app/components/gadgets/sg-calendar/sg-calendar.tsx.playground", kind: "playground" }
28
28
  ],
29
29
  showcase: { route: "/components/gadgets/sg-calendar", hasPlayground: true, hasPropsTable: true },
@@ -1 +1 @@
1
- {"version":3,"file":"useSgClockThemeResolver.meta.d.ts","sourceRoot":"","sources":["../../../../src/gadgets/clock/themes/useSgClockThemeResolver.meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEpE,eAAO,MAAM,MAAM,EAAE,QA0DpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WAwBrB,CAAC"}
1
+ {"version":3,"file":"useSgClockThemeResolver.meta.d.ts","sourceRoot":"","sources":["../../../../src/gadgets/clock/themes/useSgClockThemeResolver.meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEpE,eAAO,MAAM,MAAM,EAAE,QAoEpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WAwBrB,CAAC"}
@@ -13,45 +13,52 @@ export const sgMeta = {
13
13
  fieldSemantics: ["themeResolver", "clockTheme", "dynamicStyling"],
14
14
  props: [
15
15
  {
16
- name: "returns.resolveMode",
17
- type: "SgClockThemeResolveMode",
18
- description: "Modo de resolucao do tema (auto, light, dark, custom).",
19
- semanticRole: "behavior",
20
- bindable: true
16
+ name: "returns",
17
+ type: "SgClockThemeResolver | null",
18
+ description: "Resolvedor do SgClockThemeProvider mais proximo. Fora de um provider o hook devolve null — nao ha fallback implicito.",
19
+ semanticRole: "data",
20
+ bindable: false
21
21
  },
22
22
  {
23
- name: "returns.resolveTheme",
24
- type: "(themeId: string) => SgClockTheme | null",
25
- description: "Funcao para resolver um tema pelo ID.",
23
+ name: "returns.resolve",
24
+ type: "(id: string) => SgClockTheme | null",
25
+ description: "Resolve um tema pelo id. No modo fallback do provider, um id desconhecido cai no fallbackThemeId; no modo strict devolve null.",
26
26
  semanticRole: "data",
27
27
  bindable: false
28
28
  },
29
29
  {
30
- name: "returns.currentTheme",
31
- type: "SgClockTheme | null",
32
- description: "Tema atualmente ativo.",
30
+ name: "returns.list",
31
+ type: "() => SgClockTheme[]",
32
+ description: "Temas visiveis para esta arvore: os globais do registry mais os locais do provider, ordenados por `order`.",
33
33
  semanticRole: "data",
34
34
  bindable: false
35
35
  },
36
36
  {
37
- name: "returns.setResolveMode",
38
- type: "(mode: SgClockThemeResolveMode) => void",
39
- description: "Alterar modo de resolucao do tema.",
37
+ name: "returns.registerLocal",
38
+ type: "(theme: SgClockTheme) => void",
39
+ description: "Registra um tema apenas nesta arvore, sem tocar no registry global.",
40
+ semanticRole: "behavior",
41
+ bindable: false
42
+ },
43
+ {
44
+ name: "returns.registerManyLocal",
45
+ type: "(themes: SgClockTheme[]) => void",
46
+ description: "Mesma coisa que registerLocal, para uma lista.",
40
47
  semanticRole: "behavior",
41
48
  bindable: false
42
49
  }
43
50
  ],
44
- states: ["auto", "light", "dark", "custom"],
51
+ states: ["fallback", "strict", "sem-provider"],
45
52
  examples: [
46
53
  {
47
54
  id: "basic",
48
55
  title: "Resolver e alternar temas",
49
- file: "apps/showcase/src/app/components/hooks/use-sg-clock-theme-resolver/samples/basic.tsx.sample",
56
+ file: "apps/showcase/src/app/components/providers/sg-clock-theme-provider/samples/resolver-hook.tsx.sample",
50
57
  kind: "sample"
51
58
  }
52
59
  ],
53
60
  showcase: {
54
- route: "/components/hooks/use-sg-clock-theme-resolver",
61
+ route: "/components/providers/sg-clock-theme-provider",
55
62
  hasPlayground: true,
56
63
  hasPropsTable: true
57
64
  }