@promptui-lib/core 0.1.9 → 0.1.11

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.
@@ -1 +1 @@
1
- {"version":3,"file":"spacing.d.ts","sourceRoot":"","sources":["../../src/tokens/spacing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,sBAAsB,EAAE,aAAa,EASjD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,aAAa,EAK7C,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,MAAM,EACV,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,MAAM,CAcR;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,EAAE,EAAE,MAAM,EACV,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,MAAM,CAcR;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,MAAM,CAoBR"}
1
+ {"version":3,"file":"spacing.d.ts","sourceRoot":"","sources":["../../src/tokens/spacing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAYD,eAAO,MAAM,sBAAsB,EAAE,aAAa,EASjD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,aAAa,EAK7C,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,MAAM,EACV,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,MAAM,CAuBR;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,EAAE,EAAE,MAAM,EACV,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,MAAM,CAuBR;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,MAAM,CAoBR"}
@@ -2,6 +2,15 @@
2
2
  * Spacing Tokens
3
3
  * Mapeamento de valores de espaçamento para tokens SCSS
4
4
  */
5
+ /**
6
+ * Arredonda valores de pixel para evitar decimais desnecessários
7
+ */
8
+ function roundPixelValue(value) {
9
+ if (Math.abs(value - Math.round(value)) < 0.01) {
10
+ return Math.round(value);
11
+ }
12
+ return Math.round(value * 10) / 10;
13
+ }
5
14
  export const DEFAULT_SPACING_TOKENS = [
6
15
  { px: 0, token: '0' },
7
16
  { px: 4, token: '$spacing-xs' },
@@ -22,33 +31,47 @@ export const DEFAULT_GAP_TOKENS = [
22
31
  * Encontra o token de spacing mais próximo
23
32
  */
24
33
  export function findSpacingToken(px, customTokens) {
34
+ // Arredonda para evitar decimais desnecessários
35
+ const rounded = roundPixelValue(px);
25
36
  // Token customizado exato
26
- if (customTokens?.[px]) {
27
- return customTokens[px];
37
+ if (customTokens?.[rounded]) {
38
+ return customTokens[rounded];
28
39
  }
29
- // Token padrão exato
30
- const exactMatch = DEFAULT_SPACING_TOKENS.find((t) => t.px === px);
40
+ // Token padrão exato (verifica arredondado e próximo)
41
+ const exactMatch = DEFAULT_SPACING_TOKENS.find((t) => t.px === rounded);
31
42
  if (exactMatch) {
32
43
  return exactMatch.token;
33
44
  }
34
- // Se não encontrou exato, retorna o valor em px
35
- return `${px}px`;
45
+ // Verifica se está muito próximo de um token (tolerância de 0.5px)
46
+ const closeMatch = DEFAULT_SPACING_TOKENS.find((t) => Math.abs(t.px - rounded) < 0.5);
47
+ if (closeMatch) {
48
+ return closeMatch.token;
49
+ }
50
+ // Se não encontrou exato, retorna o valor arredondado em px
51
+ return Number.isInteger(rounded) ? `${rounded}px` : `${rounded}px`;
36
52
  }
37
53
  /**
38
54
  * Encontra o token de gap mais próximo
39
55
  */
40
56
  export function findGapToken(px, customTokens) {
57
+ // Arredonda para evitar decimais desnecessários
58
+ const rounded = roundPixelValue(px);
41
59
  // Token customizado exato
42
- if (customTokens?.[px]) {
43
- return customTokens[px];
60
+ if (customTokens?.[rounded]) {
61
+ return customTokens[rounded];
44
62
  }
45
63
  // Token padrão exato
46
- const exactMatch = DEFAULT_GAP_TOKENS.find((t) => t.px === px);
64
+ const exactMatch = DEFAULT_GAP_TOKENS.find((t) => t.px === rounded);
47
65
  if (exactMatch) {
48
66
  return exactMatch.token;
49
67
  }
68
+ // Verifica se está muito próximo de um token (tolerância de 0.5px)
69
+ const closeMatch = DEFAULT_GAP_TOKENS.find((t) => Math.abs(t.px - rounded) < 0.5);
70
+ if (closeMatch) {
71
+ return closeMatch.token;
72
+ }
50
73
  // Fallback para spacing token
51
- return findSpacingToken(px, customTokens);
74
+ return findSpacingToken(rounded, customTokens);
52
75
  }
53
76
  /**
54
77
  * Gera string de padding a partir dos 4 valores
@@ -1 +1 @@
1
- {"version":3,"file":"typography.d.ts","sourceRoot":"","sources":["../../src/tokens/typography.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,wBAAwB,EAAE,cAAc,EASpD,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,gBAAgB,EAMxD,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,gBAAgB,EAIxD,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK7D,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,MAAM,EACV,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,MAAM,CAOR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,MAAM,CAOR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAYzD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAM9D;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAexB"}
1
+ {"version":3,"file":"typography.d.ts","sourceRoot":"","sources":["../../src/tokens/typography.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,wBAAwB,EAAE,cAAc,EASpD,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,gBAAgB,EAMxD,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,gBAAgB,EAIxD,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK7D,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,MAAM,EACV,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,MAAM,CAOR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,MAAM,CAOR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAmBzD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAM9D;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAexB"}
@@ -57,12 +57,18 @@ export function findLineHeightToken(value) {
57
57
  // Se é valor em pixels, converte para ratio aproximado
58
58
  if (value > 3) {
59
59
  // Provavelmente é lineHeightPx, precisa do fontSize para calcular
60
- return `${value}px`;
60
+ const rounded = Math.round(value);
61
+ return `${rounded}px`;
61
62
  }
62
63
  const match = DEFAULT_LINE_HEIGHT_TOKENS.find((t) => {
63
64
  return Math.abs(t.value - value) < 0.1;
64
65
  });
65
- return match?.token ?? `${value}`;
66
+ // Arredonda para 2 casas decimais se não encontrar token
67
+ if (!match) {
68
+ const rounded = Math.round(value * 100) / 100;
69
+ return `${rounded}`;
70
+ }
71
+ return match.token;
66
72
  }
67
73
  /**
68
74
  * Encontra token de font-family
@@ -41,10 +41,25 @@ export interface IJSXNode {
41
41
  /** Props do elemento */
42
42
  props: Record<string, string | boolean | IJSXExpression>;
43
43
  /** Filhos: outros nodes ou texto */
44
- children: Array<IJSXNode | IJSXText | IJSXExpression>;
44
+ children: Array<IJSXNode | IJSXText | IJSXExpression | IJSXComponent>;
45
45
  /** Se é self-closing */
46
46
  selfClosing?: boolean;
47
47
  }
48
+ /**
49
+ * Representa um componente filho (marcado com #) que será importado
50
+ * Em vez de gerar HTML inline, gera <ComponentName />
51
+ */
52
+ export interface IJSXComponent {
53
+ type: 'component';
54
+ /** Nome do componente em PascalCase */
55
+ componentName: string;
56
+ /** Camada do Atomic Design do componente filho */
57
+ layer: ComponentLayer;
58
+ /** Nome do arquivo do componente */
59
+ fileName: string;
60
+ /** Props a serem passadas (opcional) */
61
+ props?: Record<string, string | boolean | IJSXExpression>;
62
+ }
48
63
  export interface IJSXText {
49
64
  type: 'text';
50
65
  value: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ast.types.d.ts","sourceRoot":"","sources":["../../src/types/ast.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ast.types.d.ts","sourceRoot":"","sources":["../../src/types/ast.types.ts"],"names":[],"mappings":"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"}
@@ -69,4 +69,16 @@ export declare function isValidComponentName(name: string): boolean;
69
69
  * Sanitiza um nome para ser válido
70
70
  */
71
71
  export declare function sanitizeName(name: string): string;
72
+ /**
73
+ * Verifica se um nome de node é um componente (marcado com #)
74
+ * @example "#Header" → true
75
+ * @example "Header" → false
76
+ * @example "#LoginCard" → true
77
+ */
78
+ export declare function isComponentNode(name: string): boolean;
79
+ /**
80
+ * Remove o prefixo # de um nome de componente
81
+ * @example "#Header" → "Header"
82
+ */
83
+ export declare function stripComponentPrefix(name: string): string;
72
84
  //# sourceMappingURL=naming.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../../src/utils/naming.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQ/C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOhD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAOzD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ3D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAU/D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG1D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIjD"}
1
+ {"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../../src/utils/naming.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQ/C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOhD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAOzD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ3D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAU/D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG1D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD"}
@@ -124,3 +124,19 @@ export function sanitizeName(name) {
124
124
  .replace(/[^a-zA-Z0-9\s\-_\/]/g, '')
125
125
  .trim();
126
126
  }
127
+ /**
128
+ * Verifica se um nome de node é um componente (marcado com #)
129
+ * @example "#Header" → true
130
+ * @example "Header" → false
131
+ * @example "#LoginCard" → true
132
+ */
133
+ export function isComponentNode(name) {
134
+ return name.startsWith('#');
135
+ }
136
+ /**
137
+ * Remove o prefixo # de um nome de componente
138
+ * @example "#Header" → "Header"
139
+ */
140
+ export function stripComponentPrefix(name) {
141
+ return name.replace(/^#/, '');
142
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@promptui-lib/core",
3
- "version": "0.1.9",
3
+ "version": "0.1.11",
4
4
  "private": false,
5
5
  "description": "Core types, tokens and utilities for PromptUI",
6
6
  "license": "UNLICENSED",