@intelex-ia/sdk 0.6.1 → 0.7.0
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/README.md +406 -310
- package/dist/client.d.ts +25 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +31 -2
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/react.d.ts +244 -21
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +393 -21
- package/dist/react.js.map +1 -1
- package/dist/types.d.ts +45 -21
- package/dist/types.d.ts.map +1 -1
- package/package.json +64 -64
package/dist/client.d.ts
CHANGED
|
@@ -48,7 +48,31 @@ export interface ArticleResponse {
|
|
|
48
48
|
export declare class IntelexiaApiError extends Error {
|
|
49
49
|
readonly status: number;
|
|
50
50
|
readonly path?: string | undefined;
|
|
51
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Por que a API recusou. Hoje importa um valor: `"scheduled"`, que
|
|
53
|
+
* distingue o artigo AGENDADO do que não existe — os dois chegam como 404,
|
|
54
|
+
* e sem isso o site não tem como saber a diferença.
|
|
55
|
+
*/
|
|
56
|
+
readonly reason?: string | undefined;
|
|
57
|
+
/** Quando o artigo agendado estreia (ISO). Só vem com `reason: "scheduled"`. */
|
|
58
|
+
readonly estreiaEm?: string | undefined;
|
|
59
|
+
constructor(status: number, message: string, path?: string | undefined,
|
|
60
|
+
/**
|
|
61
|
+
* Por que a API recusou. Hoje importa um valor: `"scheduled"`, que
|
|
62
|
+
* distingue o artigo AGENDADO do que não existe — os dois chegam como 404,
|
|
63
|
+
* e sem isso o site não tem como saber a diferença.
|
|
64
|
+
*/
|
|
65
|
+
reason?: string | undefined,
|
|
66
|
+
/** Quando o artigo agendado estreia (ISO). Só vem com `reason: "scheduled"`. */
|
|
67
|
+
estreiaEm?: string | undefined);
|
|
68
|
+
/**
|
|
69
|
+
* O artigo EXISTE e ainda não estreou.
|
|
70
|
+
*
|
|
71
|
+
* O site deve redirecionar para /blog (307), nunca responder 404: o endereço
|
|
72
|
+
* já é o definitivo e vai valer quando a data chegar. Responder 404 agora
|
|
73
|
+
* ensina ao buscador que aquele endereço não existe.
|
|
74
|
+
*/
|
|
75
|
+
get agendado(): boolean;
|
|
52
76
|
}
|
|
53
77
|
/**
|
|
54
78
|
* Cria uma instância do cliente. O retorno tem os métodos `getArticles` e
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EACV,OAAO,EACP,eAAe,EACf,SAAS,EACT,IAAI,EACL,MAAM,YAAY,CAAC;AAEpB,+BAA+B;AAC/B,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,oCAAoC;AACpC,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED,0CAA0C;AAC1C,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,sDAAsD;AACtD,qBAAa,iBAAkB,SAAQ,KAAK;aAExB,MAAM,EAAE,MAAM;aAEd,IAAI,CAAC,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EACV,OAAO,EACP,eAAe,EACf,SAAS,EACT,IAAI,EACL,MAAM,YAAY,CAAC;AAEpB,+BAA+B;AAC/B,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,oCAAoC;AACpC,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED,0CAA0C;AAC1C,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,sDAAsD;AACtD,qBAAa,iBAAkB,SAAQ,KAAK;aAExB,MAAM,EAAE,MAAM;aAEd,IAAI,CAAC,EAAE,MAAM;IAC7B;;;;OAIG;aACa,MAAM,CAAC,EAAE,MAAM;IAC/B,gFAAgF;aAChE,SAAS,CAAC,EAAE,MAAM;gBAVlB,MAAM,EAAE,MAAM,EAC9B,OAAO,EAAE,MAAM,EACC,IAAI,CAAC,EAAE,MAAM,YAAA;IAC7B;;;;OAIG;IACa,MAAM,CAAC,EAAE,MAAM,YAAA;IAC/B,gFAAgF;IAChE,SAAS,CAAC,EAAE,MAAM,YAAA;IAMpC;;;;;;OAMG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;CACF;AAID;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY;IA6C7C;;;;;;OAMG;uBACsB;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,mDAAmD;QACnD,IAAI,CAAC,EAAE,WAAW,CAAC;KACpB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAWjC;;;;;;;;;;OAUG;2BAEK,MAAM,SACL;QAAE,IAAI,CAAC,EAAE,WAAW,CAAA;KAAE,GAC5B,OAAO,CAAC,eAAe,CAAC;EAK9B;AAED,mEAAmE;AACnE,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
package/dist/client.js
CHANGED
|
@@ -2,12 +2,34 @@
|
|
|
2
2
|
export class IntelexiaApiError extends Error {
|
|
3
3
|
status;
|
|
4
4
|
path;
|
|
5
|
-
|
|
5
|
+
reason;
|
|
6
|
+
estreiaEm;
|
|
7
|
+
constructor(status, message, path,
|
|
8
|
+
/**
|
|
9
|
+
* Por que a API recusou. Hoje importa um valor: `"scheduled"`, que
|
|
10
|
+
* distingue o artigo AGENDADO do que não existe — os dois chegam como 404,
|
|
11
|
+
* e sem isso o site não tem como saber a diferença.
|
|
12
|
+
*/
|
|
13
|
+
reason,
|
|
14
|
+
/** Quando o artigo agendado estreia (ISO). Só vem com `reason: "scheduled"`. */
|
|
15
|
+
estreiaEm) {
|
|
6
16
|
super(`[IntelexiaApi ${status}${path ? ` ${path}` : ""}] ${message}`);
|
|
7
17
|
this.status = status;
|
|
8
18
|
this.path = path;
|
|
19
|
+
this.reason = reason;
|
|
20
|
+
this.estreiaEm = estreiaEm;
|
|
9
21
|
this.name = "IntelexiaApiError";
|
|
10
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* O artigo EXISTE e ainda não estreou.
|
|
25
|
+
*
|
|
26
|
+
* O site deve redirecionar para /blog (307), nunca responder 404: o endereço
|
|
27
|
+
* já é o definitivo e vai valer quando a data chegar. Responder 404 agora
|
|
28
|
+
* ensina ao buscador que aquele endereço não existe.
|
|
29
|
+
*/
|
|
30
|
+
get agendado() {
|
|
31
|
+
return this.reason === "scheduled";
|
|
32
|
+
}
|
|
11
33
|
}
|
|
12
34
|
const DEFAULT_API_URL = "https://api.innovarticles.intelexia.com.br";
|
|
13
35
|
/**
|
|
@@ -38,15 +60,22 @@ export function createClient(config) {
|
|
|
38
60
|
});
|
|
39
61
|
if (!res.ok) {
|
|
40
62
|
let msg = res.statusText || `HTTP ${res.status}`;
|
|
63
|
+
let reason;
|
|
64
|
+
let estreiaEm;
|
|
41
65
|
try {
|
|
42
66
|
const body = (await res.json());
|
|
43
67
|
if (body?.error)
|
|
44
68
|
msg = body.error;
|
|
69
|
+
// `reason` separa o agendado do inexistente: os dois são 404.
|
|
70
|
+
if (typeof body?.reason === "string")
|
|
71
|
+
reason = body.reason;
|
|
72
|
+
if (typeof body?.estreiaEm === "string")
|
|
73
|
+
estreiaEm = body.estreiaEm;
|
|
45
74
|
}
|
|
46
75
|
catch {
|
|
47
76
|
// ignore parse errors — usa msg padrão
|
|
48
77
|
}
|
|
49
|
-
throw new IntelexiaApiError(res.status, msg, path);
|
|
78
|
+
throw new IntelexiaApiError(res.status, msg, path, reason, estreiaEm);
|
|
50
79
|
}
|
|
51
80
|
return (await res.json());
|
|
52
81
|
}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAuDA,sDAAsD;AACtD,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAExB;IAEA;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
* `@intelex-ia/sdk/react`.
|
|
6
6
|
*/
|
|
7
7
|
export { createClient, IntelexiaApiError, type ClientConfig, type ArticlesListResponse, type ArticleResponse, type IntelexiaClient, } from "./client.js";
|
|
8
|
-
export type { Lifecycle, Mode, Article,
|
|
8
|
+
export type { Lifecycle, Mode, Article, ArticleListItem, CustomMetaTag, ErrorResponse, } from "./types.js";
|
|
9
9
|
export { mergePosts, MergeConflictError, type UnifiedPost, type MergePostsOptions, } from "./merge.js";
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,SAAS,EACT,IAAI,EACJ,OAAO,EACP,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,SAAS,EACT,IAAI,EACJ,OAAO,EACP,eAAe,EACf,aAAa,EACb,aAAa,GACd,MAAM,YAAY,CAAC;AAIpB,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,KAAK,WAAW,EAChB,KAAK,iBAAiB,GACvB,MAAM,YAAY,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,YAAY,EACZ,iBAAiB,GAKlB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,YAAY,EACZ,iBAAiB,GAKlB,MAAM,aAAa,CAAC;AAWrB,uEAAuE;AACvE,wDAAwD;AACxD,OAAO,EACL,UAAU,EACV,kBAAkB,GAGnB,MAAM,YAAY,CAAC"}
|
package/dist/react.d.ts
CHANGED
|
@@ -8,14 +8,52 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import type { ReactElement } from "react";
|
|
10
10
|
import type { CustomMetaTag } from "./types.js";
|
|
11
|
-
/**
|
|
12
|
-
|
|
11
|
+
/**
|
|
12
|
+
* A camada de inteligência (SEO) do artigo, que no modo `full` da Content API
|
|
13
|
+
* vem ANINHADA em `article.intelligence`.
|
|
14
|
+
*
|
|
15
|
+
* 🚨 ESTE FOI O DEFEITO MAIS CARO DO SDK, e ele era silencioso. Até 27/10/2026
|
|
16
|
+
* o `ArticleJsonLd` e o `articleToMetadata` leiam esses campos da RAIZ do
|
|
17
|
+
* artigo, onde eles nunca chegam. Consequência medida:
|
|
18
|
+
*
|
|
19
|
+
* - a página no ar saía com ZERO blocos `application/ld+json` (medido em
|
|
20
|
+
* siteia.pdr.ia.br em 26/10/2026: `grep -c 'application/ld+json'` = 0),
|
|
21
|
+
* porque o componente caía no `return null`;
|
|
22
|
+
* - e saía SEM meta description e SEM nenhuma meta tag custom, porque o
|
|
23
|
+
* `articleToMetadata` lia seis campos que vinham `undefined`.
|
|
24
|
+
*
|
|
25
|
+
* Nada avisava: ausência de schema e de description não quebra build, não dá
|
|
26
|
+
* erro no console e não aparece na tela. O nosso PRÓPRIO cliente da Content
|
|
27
|
+
* API, no `apps/mcp/src/content-api.ts`, sempre leu o caminho aninhado e
|
|
28
|
+
* montou o script certo, então a forma da resposta nunca foi dúvida.
|
|
29
|
+
*
|
|
30
|
+
* A queda para a raiz fica para o payload antigo, de site que ainda não
|
|
31
|
+
* migrou, e não custa nada.
|
|
32
|
+
*/
|
|
33
|
+
export interface InteligenciaDoArtigo {
|
|
34
|
+
metaTitle?: string | null;
|
|
35
|
+
metaDescription?: string | null;
|
|
36
|
+
keyword?: string | null;
|
|
37
|
+
keywordSynonyms?: string[] | null;
|
|
38
|
+
additionalKeywords?: string[] | null;
|
|
39
|
+
/** JSON-LD do artigo: objeto com `@graph`, ou array. */
|
|
13
40
|
schemaJson?: unknown | null;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
schemaJson?: unknown | null;
|
|
17
|
-
} | null;
|
|
41
|
+
customMetaTags?: CustomMetaTag[] | null;
|
|
42
|
+
seoScore?: number | null;
|
|
18
43
|
}
|
|
44
|
+
/** Artigo com a inteligência aninhada, na raiz, ou em nenhum dos dois. */
|
|
45
|
+
export type ComInteligencia<T = unknown> = T & InteligenciaDoArtigo & {
|
|
46
|
+
intelligence?: InteligenciaDoArtigo | null;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* A camada de inteligência, venha aninhada (o que a Content API manda em
|
|
50
|
+
* `full`) ou na raiz (payload antigo). UMA regra, usada pelos três
|
|
51
|
+
* consumidores do SDK, porque três leituras diferentes foi o que deixou o
|
|
52
|
+
* `autoriaDoArtigo` certo e os outros dois quebrados por meses.
|
|
53
|
+
*/
|
|
54
|
+
export declare function inteligenciaDoArtigo(article: ComInteligencia): InteligenciaDoArtigo;
|
|
55
|
+
/** Subset mínimo de Article necessário pro `<ArticleJsonLd>`. */
|
|
56
|
+
type ArticleSchemaInput = ComInteligencia;
|
|
19
57
|
/**
|
|
20
58
|
* Renderiza um `<script type="application/ld+json">` com o schema JSON-LD do
|
|
21
59
|
* artigo. Pode ser colocado em qualquer lugar do `<body>` — o Google lê tanto
|
|
@@ -27,13 +65,13 @@ interface ArticleSchemaInput {
|
|
|
27
65
|
*
|
|
28
66
|
* @example
|
|
29
67
|
* // app/blog/[slug]/page.tsx
|
|
30
|
-
* import { ArticleJsonLd } from "@intelex-ia/sdk/react";
|
|
68
|
+
* import { ArticleJsonLd, ArticleBody } from "@intelex-ia/sdk/react";
|
|
31
69
|
* export default async function Page({ params }) {
|
|
32
70
|
* const { article } = await client.getArticleBySlug(params.slug);
|
|
33
71
|
* return (
|
|
34
72
|
* <>
|
|
35
73
|
* <ArticleJsonLd article={article} />
|
|
36
|
-
* <article
|
|
74
|
+
* <ArticleBody article={article} />
|
|
37
75
|
* </>
|
|
38
76
|
* );
|
|
39
77
|
* }
|
|
@@ -41,21 +79,11 @@ interface ArticleSchemaInput {
|
|
|
41
79
|
export declare function ArticleJsonLd({ article, }: {
|
|
42
80
|
article: ArticleSchemaInput;
|
|
43
81
|
}): ReactElement | null;
|
|
44
|
-
/** A camada de SEO, venha ela aninhada (o normal) ou na raiz (compatibilidade). */
|
|
45
|
-
interface CamadaDeSeo {
|
|
46
|
-
metaTitle?: string | null;
|
|
47
|
-
metaDescription?: string | null;
|
|
48
|
-
keyword?: string | null;
|
|
49
|
-
keywordSynonyms?: string[] | null;
|
|
50
|
-
customMetaTags?: CustomMetaTag[] | null;
|
|
51
|
-
}
|
|
52
82
|
/** Subset mínimo de Article necessário pro `articleToMetadata`. */
|
|
53
|
-
|
|
83
|
+
type ArticleMetadataInput = ComInteligencia<{
|
|
54
84
|
title?: string | null;
|
|
55
85
|
featuredImageUrl?: string | null;
|
|
56
|
-
|
|
57
|
-
intelligence?: CamadaDeSeo | null;
|
|
58
|
-
}
|
|
86
|
+
}>;
|
|
59
87
|
/**
|
|
60
88
|
* Resultado do `articleToMetadata`. Compatível com o tipo `Metadata` do
|
|
61
89
|
* Next.js App Router (mas não importa de "next" — mantém o SDK
|
|
@@ -96,7 +124,7 @@ export interface ArticleMetadata {
|
|
|
96
124
|
* painel) entram em `other` como `name=value` ou `property=value`.
|
|
97
125
|
*/
|
|
98
126
|
export declare function articleToMetadata(article: ArticleMetadataInput): ArticleMetadata;
|
|
99
|
-
export type { Article,
|
|
127
|
+
export type { Article, CustomMetaTag } from "./types.js";
|
|
100
128
|
/**
|
|
101
129
|
* Selo de transparência. Fecha a linha do revisor na ASSINATURA, no fim do
|
|
102
130
|
* artigo — nunca na barra do topo.
|
|
@@ -173,4 +201,199 @@ export declare function AuthorSignature({ article, empresa, className, bioEquipe
|
|
|
173
201
|
export declare function corpoDoArtigo(article: {
|
|
174
202
|
contentHtml?: string | null;
|
|
175
203
|
}): string;
|
|
204
|
+
/** Classe do contêiner que rola, posta por `envolverTabelas`. */
|
|
205
|
+
export declare const CLASSE_TABELA_ROLANTE = "tabela-rolante";
|
|
206
|
+
/**
|
|
207
|
+
* Embrulha cada `<table>` num contêiner que rola de lado.
|
|
208
|
+
*
|
|
209
|
+
* Por que existe, com os números: o navegador IGNORA `overflow-x` em caixa de
|
|
210
|
+
* tabela, então uma tabela com `display:table` e muitas colunas estoura a
|
|
211
|
+
* coluna de leitura e faz a PÁGINA INTEIRA rolar de lado. Medido a 375px, com
|
|
212
|
+
* uma tabela de 8 colunas: `scrollWidth` 494 contra `clientWidth` 375.
|
|
213
|
+
*
|
|
214
|
+
* A saída anterior era `display:block` na própria tabela, que prende a rolagem
|
|
215
|
+
* ali dentro. Funciona para a tabela larga e cobra da estreita: com
|
|
216
|
+
* `display:block` a tabela deixa de gerar caixa de tabela, o navegador cria
|
|
217
|
+
* uma ANÔNIMA dimensionada pelo conteúdo, e a tabela de duas colunas sai
|
|
218
|
+
* encolhida e encostada na esquerda (`<th>` a 55px dentro de um bloco de
|
|
219
|
+
* 800px) em vez de ocupar a coluna.
|
|
220
|
+
*
|
|
221
|
+
* Com o contêiner, as duas ficam certas: a rolagem é dele, e a tabela volta a
|
|
222
|
+
* `display:table` com `width:100%`.
|
|
223
|
+
*
|
|
224
|
+
* Idempotente: tabela já embrulhada passa intacta. Só embrulha quando a folha
|
|
225
|
+
* vai junto (`comFolha`), porque é ela que traz a regra do contêiner. Com
|
|
226
|
+
* `comFolha={false}` o site veste por conta, e um div novo no meio do corpo
|
|
227
|
+
* quebraria seletor de filho direto (`.artigo > table`) que ele já tenha.
|
|
228
|
+
*/
|
|
229
|
+
export declare function envolverTabelas(html: string): string;
|
|
230
|
+
/**
|
|
231
|
+
* A folha que devolve ao corpo do artigo o que o preflight do Tailwind tira.
|
|
232
|
+
*
|
|
233
|
+
* ── POR QUE O SDK PASSA A TRAZER CSS, SENDO QUE ELE NÃO TRAZIA ───────────
|
|
234
|
+
*
|
|
235
|
+
* A regra "o SDK não traz CSS, as classes são ganchos para o site vestir" está
|
|
236
|
+
* certa para a BARRA e para a ASSINATURA: elas são cromo, e cada site tem o
|
|
237
|
+
* seu. Para o CORPO ela não serve, e o preço disso já foi medido.
|
|
238
|
+
*
|
|
239
|
+
* O `contentHtml` chega como HTML semântico PELADO: `<h2>`, `<ul>`, `<table>`,
|
|
240
|
+
* sem classe. No WordPress funciona, porque o tema veste por tag. Num site
|
|
241
|
+
* Tailwind não: o `@tailwind base` já zerou `list-style`, zerou tamanho e peso
|
|
242
|
+
* dos seis títulos e deixou a tabela sem borda. Injetar isso numa div sem
|
|
243
|
+
* folha não dá "sem estilo", dá PIOR que sem estilo: título do tamanho do
|
|
244
|
+
* texto, lista sem marcador, tabela invisível.
|
|
245
|
+
*
|
|
246
|
+
* Foi o que quebrou o blog da Parceria por semanas, com o wrapper
|
|
247
|
+
* `prose prose-slate article-content`: o `prose` sem o `@tailwindcss/typography`
|
|
248
|
+
* instalado e o `article-content` sem uma regra sequer. E a varredura de
|
|
249
|
+
* 21/10/2026 achou o mesmo buraco na vitrine de onde os sites são clonados.
|
|
250
|
+
*
|
|
251
|
+
* Enquanto vestir o corpo depender de alguém lembrar, alguém vai esquecer.
|
|
252
|
+
*
|
|
253
|
+
* ── A ESPECIFICIDADE É O CONTRATO, E ELA NÃO É UNIFORME ─────────────────
|
|
254
|
+
*
|
|
255
|
+
* A folha tem dois tetos, e a diferença entre eles é a diferença entre
|
|
256
|
+
* funcionar e fingir que funciona.
|
|
257
|
+
*
|
|
258
|
+
* O preflight do Tailwind zera as coisas com SELETOR DE TIPO: `h1..h6
|
|
259
|
+
* {font-size:inherit;font-weight:inherit}`, `ol,ul,menu{list-style:none;
|
|
260
|
+
* margin:0;padding:0}`, `blockquote,…,p,pre{margin:0}`, `a{color:inherit;
|
|
261
|
+
* text-decoration:inherit}`, `hr{height:0;border-top-width:1px}`. Tudo isso
|
|
262
|
+
* vale 0,0,1, e está igual no 3.4 e no 4.x (conferido nos dois preflights em
|
|
263
|
+
* disco). Regra 0,0,0 PERDE de 0,0,1 em qualquer ordem: vir depois no
|
|
264
|
+
* documento só desempata quando a especificidade é a MESMA. Uma folha inteira
|
|
265
|
+
* dentro de `:where()` não devolve nenhum desses cinco: devolve só a borda da
|
|
266
|
+
* tabela, que o preflight tira pelo `*`.
|
|
267
|
+
*
|
|
268
|
+
* Então: onde a regra DISPUTA com o preflight, o elemento sai do `:where()` e
|
|
269
|
+
* entra num `:is()`, que carrega a especificidade do argumento mais específico
|
|
270
|
+
* e deixa a regra em 0,0,1. Empata com o reset, ganha pela ordem, e continua
|
|
271
|
+
* perdendo de qualquer regra do site escrita por classe (0,1,1). Onde o
|
|
272
|
+
* preflight não encosta, caso da tabela, do código, da imagem e dos nossos
|
|
273
|
+
* blocos, fica 0,0,0 e qualquer coisa do site ganha.
|
|
274
|
+
*
|
|
275
|
+
* O teto é 0,0,1, e é teste, não comentário: `corpo-do-artigo.test.ts` calcula
|
|
276
|
+
* a especificidade de cada seletor e reprova id, classe solta e atributo.
|
|
277
|
+
*
|
|
278
|
+
* ── O `<style>` FICA NO CORPO DE PROPÓSITO ──────────────────────────────
|
|
279
|
+
*
|
|
280
|
+
* Nada de `precedence` para o React 19 içar ao `<head>`: o empate em 0,0,1 com
|
|
281
|
+
* o preflight é decidido pela ORDEM, e ficar no corpo é o que garante vir
|
|
282
|
+
* depois da folha do site. Içado, a posição passa a depender de onde o React
|
|
283
|
+
* insere, e o conserto viraria sorteio.
|
|
284
|
+
*
|
|
285
|
+
* ── O QUE A FOLHA AINDA ATROPELA, DITO SEM RODEIO ───────────────────────
|
|
286
|
+
*
|
|
287
|
+
* Em Tailwind v4 o site emite tudo dentro de `@layer`, e camada é decidida
|
|
288
|
+
* ANTES de especificidade: estilo de autor fora de camada ganha de estilo em
|
|
289
|
+
* camada, por específico que seja. Esta folha é fora de camada. Logo, em site
|
|
290
|
+
* v4 cujo corpo é vestido pelo `@tailwindcss/typography` (o `prose` de
|
|
291
|
+
* verdade, instalado) ou por utilitário no wrapper, ela ganha de quem fez
|
|
292
|
+
* certo. A saída é `comFolha={false}`, e é o único caso conhecido.
|
|
293
|
+
*
|
|
294
|
+
* Emitir dentro de `@layer base` consertaria o v4 e QUEBRARIA o v3, onde não
|
|
295
|
+
* há camada nenhuma e regra em camada perde de toda regra fora dela, o
|
|
296
|
+
* preflight incluído. Entre as duas, a folha serve o caso que está quebrado.
|
|
297
|
+
*
|
|
298
|
+
* Nenhuma cor nossa e nenhuma fonte nossa, e nenhum tamanho de corpo: nada
|
|
299
|
+
* disso o preflight tira, e tamanho de texto é escolha da marca. O que não
|
|
300
|
+
* herda sai em variável para o site discordar sem tocar aqui.
|
|
301
|
+
*
|
|
302
|
+
* RECONCILIADA com a folha que está no ar nos 20 sites (medida em 23/10/2026
|
|
303
|
+
* no CSS compilado), que era melhor em três coisas e agora estão aqui:
|
|
304
|
+
*
|
|
305
|
+
* - LÊ o token da marca do site: `--primary`, `--accent` e `--border`, cada
|
|
306
|
+
* um com queda para o que a folha fazia antes (`inherit`, `currentColor`).
|
|
307
|
+
* Site que declara o token como trio de HSL (o jeito do shadcn) cai na
|
|
308
|
+
* queda e fica igual a antes, nunca pior: medido nos três casos;
|
|
309
|
+
* - fonte de título pela variável `--ia-fonte-titulo`, que por padrão herda;
|
|
310
|
+
* - FAQ em acordeão: marcador do navegador escondido, triângulo próprio e
|
|
311
|
+
* giro no estado aberto.
|
|
312
|
+
*
|
|
313
|
+
* 🚨 Variável NUNCA dentro de atalho. `border:1px solid var(--ia-cor-borda)`
|
|
314
|
+
* num site de token em trio de HSL derruba o atalho INTEIRO, e a borda da
|
|
315
|
+
* tabela foi a 0px, pior do que sem token. Em longhand só a cor cai, e cai em
|
|
316
|
+
* `currentColor`. Medido em 26/10/2026, e tem teste.
|
|
317
|
+
*
|
|
318
|
+
* Três coisas da folha do ar ficaram FORA, de propósito:
|
|
319
|
+
*
|
|
320
|
+
* - `.ia-pagina`, a casca da página: o `<ArticleBody>` nunca a renderiza,
|
|
321
|
+
* então seria CSS morto embarcado em todo site. Quem quiser leva por
|
|
322
|
+
* `folhaParaSite()`, na folha do próprio site;
|
|
323
|
+
* - `font-size` no wrapper: o preflight não tira tamanho de div, e tamanho
|
|
324
|
+
* de corpo é escolha da marca (tem teste);
|
|
325
|
+
* - zerar margem do primeiro e do último filho: `:first-child` vale 0,1,0
|
|
326
|
+
* por especificação, e não cabe no teto de 0,0,1 desta folha. A do ar
|
|
327
|
+
* pode, porque é CSS do próprio site e vive em 0,1,1.
|
|
328
|
+
*/
|
|
329
|
+
/** O gancho que a folha veste e que o `<ArticleBody>` põe na div. Um literal só. */
|
|
330
|
+
export declare const CLASSE_DO_CORPO = "ia-artigo";
|
|
331
|
+
export declare const CSS_CORPO_DO_ARTIGO: string;
|
|
332
|
+
/**
|
|
333
|
+
* A mesma folha, reescrita para o CSS do PRÓPRIO site, numa classe dele.
|
|
334
|
+
*
|
|
335
|
+
* Para que serve: o site cliente pinado numa versão antiga do SDK não tem o
|
|
336
|
+
* `<ArticleBody>`, e esperar a publicação deixaria o artigo no ar quebrado. Com
|
|
337
|
+
* isto, a folha vai para o CSS do site agora, gerada da MESMA fonte, em vez de
|
|
338
|
+
* alguém reescrever as trinta e cinco regras à mão em cada repositório.
|
|
339
|
+
*
|
|
340
|
+
* O seletor sai por CLASSE, 0,1,1, então ganha do reset de tipo em qualquer
|
|
341
|
+
* versão do Tailwind, com ou sem camada. E quando o site migrar para o
|
|
342
|
+
* `<ArticleBody>`, nada conflita: 0,1,1 continua ganhando do 0,0,1 do SDK.
|
|
343
|
+
*
|
|
344
|
+
* @example
|
|
345
|
+
* folhaParaSite([".article-prose"])
|
|
346
|
+
* folhaParaSite([".blog-content", ".article-content"]) // duas classes
|
|
347
|
+
*/
|
|
348
|
+
export declare function folhaParaSite(classes: readonly string[]): string;
|
|
349
|
+
export interface ArticleBodyProps {
|
|
350
|
+
article: {
|
|
351
|
+
contentHtml?: string | null;
|
|
352
|
+
};
|
|
353
|
+
/**
|
|
354
|
+
* Classes EXTRAS na div. O gancho `ia-artigo` fica sempre, lado a lado com
|
|
355
|
+
* o que você passar: a folha veste o corpo e as classes do site continuam
|
|
356
|
+
* ganhando dela por especificidade. Para dispensar a folha, `comFolha={false}`.
|
|
357
|
+
*/
|
|
358
|
+
className?: string;
|
|
359
|
+
/**
|
|
360
|
+
* `false` quando o site JÁ veste o corpo e prefere a folha dele. Obrigatório
|
|
361
|
+
* em site Tailwind v4 cujo corpo é vestido pelo `@tailwindcss/typography`
|
|
362
|
+
* instalado ou por utilitário no wrapper: ali a folha daqui ganha, porque
|
|
363
|
+
* está fora de camada.
|
|
364
|
+
*/
|
|
365
|
+
comFolha?: boolean;
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* O corpo do artigo, vestido.
|
|
369
|
+
*
|
|
370
|
+
* Existe para que vestir o corpo deixe de depender de alguém lembrar. Antes
|
|
371
|
+
* dele o caminho era: o instalador escrevia a folha e AVISAVA, e quem adaptava
|
|
372
|
+
* o blog tinha de importar e pôr a classe. Quem pulasse não via defeito nenhum
|
|
373
|
+
* até o cliente ver a parede de texto.
|
|
374
|
+
*
|
|
375
|
+
* Faz duas coisas que ninguém precisa repetir:
|
|
376
|
+
*
|
|
377
|
+
* 1. tira a assinatura que já vem dentro do `contentHtml` (`corpoDoArtigo`),
|
|
378
|
+
* para ela não sair duas vezes quando a página usa `<AuthorSignature>`;
|
|
379
|
+
* 2. injeta a folha estrutural, escopada no gancho que ele mesmo põe;
|
|
380
|
+
* 3. embrulha cada tabela num contêiner que rola (`envolverTabelas`), porque
|
|
381
|
+
* navegador ignora `overflow-x` em caixa de tabela e sem isso a tabela
|
|
382
|
+
* larga faz a PÁGINA rolar de lado no celular.
|
|
383
|
+
*
|
|
384
|
+
* O gancho e a folha são um par, e o par é fechado AQUI: a div sempre carrega
|
|
385
|
+
* `ia-artigo`, e o que o site passar em `className` entra ao lado. Era o furo
|
|
386
|
+
* da primeira versão, onde `className` SUBSTITUÍA o gancho: o site que
|
|
387
|
+
* passasse o wrapper dele (`prose prose-slate article-content`, que é o valor
|
|
388
|
+
* literal do blog que quebrou) recebia a folha na página e nenhuma regra
|
|
389
|
+
* casando, ou seja o defeito de origem com 3 KB de CSS por cima para fingir
|
|
390
|
+
* que estava resolvido.
|
|
391
|
+
*
|
|
392
|
+
* @example
|
|
393
|
+
* <h1>{article.title}</h1>
|
|
394
|
+
* <AuthorBar article={article} empresa="Acme" />
|
|
395
|
+
* <ArticleBody article={article} />
|
|
396
|
+
* <AuthorSignature article={article} empresa="Acme" />
|
|
397
|
+
*/
|
|
398
|
+
export declare function ArticleBody({ article, className, comFolha, }: ArticleBodyProps): ReactElement;
|
|
176
399
|
//# sourceMappingURL=react.d.ts.map
|
package/dist/react.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"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"}
|