@woodylab/payload 0.0.37 → 0.0.38

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 (101) hide show
  1. package/dist/acl/index.cjs.js +1 -7
  2. package/dist/acl/index.cjs.js.map +1 -1
  3. package/dist/acl/index.esm.js +1 -1
  4. package/dist/config/index.cjs.js +1 -22
  5. package/dist/config/index.cjs.js.map +1 -1
  6. package/dist/config/index.esm.js +1 -5
  7. package/dist/config/index.esm.js.map +1 -1
  8. package/dist/enums/index.cjs.js +1 -7
  9. package/dist/enums/index.cjs.js.map +1 -1
  10. package/dist/enums/index.esm.js +1 -1
  11. package/dist/fieldSectionTabs-B_rEttMP.js +2 -0
  12. package/dist/fieldSectionTabs-B_rEttMP.js.map +1 -0
  13. package/dist/fieldSectionTabs-DX18jPzj.js +2 -0
  14. package/dist/fieldSectionTabs-DX18jPzj.js.map +1 -0
  15. package/dist/fields/index.cjs.js +1 -41
  16. package/dist/fields/index.cjs.js.map +1 -1
  17. package/dist/fields/index.esm.js +1 -5
  18. package/dist/fields/index.esm.js.map +1 -1
  19. package/dist/getNumberValueFromClassNameString-Dm5eOjBJ.js +2 -0
  20. package/dist/getNumberValueFromClassNameString-Dm5eOjBJ.js.map +1 -0
  21. package/dist/getNumberValueFromClassNameString-pKKt97eg.js +2 -0
  22. package/dist/getNumberValueFromClassNameString-pKKt97eg.js.map +1 -0
  23. package/dist/hooks/index.cjs.js +1 -7
  24. package/dist/hooks/index.cjs.js.map +1 -1
  25. package/dist/hooks/index.esm.js +1 -1
  26. package/dist/index-0eQdIBGL.js +2 -0
  27. package/dist/index-0eQdIBGL.js.map +1 -0
  28. package/dist/index-BnQT4jju.js +2 -0
  29. package/dist/index-BnQT4jju.js.map +1 -0
  30. package/dist/index-C4uc5BOd.js +2 -0
  31. package/dist/index-C4uc5BOd.js.map +1 -0
  32. package/dist/index-CR0SwRmA.js +2 -0
  33. package/dist/index-CR0SwRmA.js.map +1 -0
  34. package/dist/index-CaTg4skG.js +2 -0
  35. package/dist/index-CaTg4skG.js.map +1 -0
  36. package/dist/index-D7075_q9.js +2 -0
  37. package/dist/index-D7075_q9.js.map +1 -0
  38. package/dist/index-Davj5NSB.js +2 -0
  39. package/dist/index-Davj5NSB.js.map +1 -0
  40. package/dist/index-KPE7ZNep.js +2 -0
  41. package/dist/index-KPE7ZNep.js.map +1 -0
  42. package/dist/index-XuRN7Bay.js +2 -0
  43. package/dist/index-XuRN7Bay.js.map +1 -0
  44. package/dist/index-gxytNJWT.js +2 -0
  45. package/dist/index-gxytNJWT.js.map +1 -0
  46. package/dist/index-kvH0sGti.js +2 -0
  47. package/dist/index-kvH0sGti.js.map +1 -0
  48. package/dist/index-qlyRswzw.js +2 -0
  49. package/dist/index-qlyRswzw.js.map +1 -0
  50. package/dist/index.cjs.js +1 -299
  51. package/dist/index.cjs.js.map +1 -1
  52. package/dist/index.esm.js +1 -283
  53. package/dist/index.esm.js.map +1 -1
  54. package/dist/tailwind/index.cjs.js +1 -34
  55. package/dist/tailwind/index.cjs.js.map +1 -1
  56. package/dist/tailwind/index.esm.js +1 -1
  57. package/dist/types/index.cjs.js +1 -7
  58. package/dist/types/index.cjs.js.map +1 -1
  59. package/dist/types/index.esm.js +1 -5
  60. package/dist/types/index.esm.js.map +1 -1
  61. package/dist/userRoles-BIrmWoCJ.js +2 -0
  62. package/dist/userRoles-BIrmWoCJ.js.map +1 -0
  63. package/dist/userRoles-Dd_gfx51.js +2 -0
  64. package/dist/userRoles-Dd_gfx51.js.map +1 -0
  65. package/package.json +2 -1
  66. package/dist/fieldSectionTabs-B2XLxdEW.js +0 -919
  67. package/dist/fieldSectionTabs-B2XLxdEW.js.map +0 -1
  68. package/dist/fieldSectionTabs-ns8gLfPr.js +0 -942
  69. package/dist/fieldSectionTabs-ns8gLfPr.js.map +0 -1
  70. package/dist/getNumberValueFromClassNameString-D4OqkHPA.js +0 -20
  71. package/dist/getNumberValueFromClassNameString-D4OqkHPA.js.map +0 -1
  72. package/dist/getNumberValueFromClassNameString-DyZ9P1fd.js +0 -18
  73. package/dist/getNumberValueFromClassNameString-DyZ9P1fd.js.map +0 -1
  74. package/dist/index-1Y54jG4C.js +0 -2244
  75. package/dist/index-1Y54jG4C.js.map +0 -1
  76. package/dist/index-5EL7OntE.js +0 -645
  77. package/dist/index-5EL7OntE.js.map +0 -1
  78. package/dist/index-B5jmz5OR.js +0 -163
  79. package/dist/index-B5jmz5OR.js.map +0 -1
  80. package/dist/index-BD7Mx4u9.js +0 -11
  81. package/dist/index-BD7Mx4u9.js.map +0 -1
  82. package/dist/index-Bj0auLnA.js +0 -24
  83. package/dist/index-Bj0auLnA.js.map +0 -1
  84. package/dist/index-CKwysnVm.js +0 -9
  85. package/dist/index-CKwysnVm.js.map +0 -1
  86. package/dist/index-CWYRhz2T.js +0 -2260
  87. package/dist/index-CWYRhz2T.js.map +0 -1
  88. package/dist/index-Ces144rr.js +0 -21
  89. package/dist/index-Ces144rr.js.map +0 -1
  90. package/dist/index-DZuNTfoQ.js +0 -175
  91. package/dist/index-DZuNTfoQ.js.map +0 -1
  92. package/dist/index-DgYntBlB.js +0 -675
  93. package/dist/index-DgYntBlB.js.map +0 -1
  94. package/dist/index-I4vA8AmC.js +0 -9
  95. package/dist/index-I4vA8AmC.js.map +0 -1
  96. package/dist/index-JvE9Rtmr.js +0 -11
  97. package/dist/index-JvE9Rtmr.js.map +0 -1
  98. package/dist/userRoles-Da1JaIoF.js +0 -13
  99. package/dist/userRoles-Da1JaIoF.js.map +0 -1
  100. package/dist/userRoles-Dq3yqKLM.js +0 -11
  101. package/dist/userRoles-Dq3yqKLM.js.map +0 -1
package/dist/index.cjs.js CHANGED
@@ -1,300 +1,2 @@
1
- 'use strict';
2
-
3
- var fields_index = require('./index-DZuNTfoQ.js');
4
- var config_index = require('./index-CWYRhz2T.js');
5
- var tailwind_index = require('./index-DgYntBlB.js');
6
- var acl_index = require('./index-Bj0auLnA.js');
7
- var enums_index = require('./index-JvE9Rtmr.js');
8
- var types_index = require('./types/index.cjs.js');
9
- var hooks_index = require('./index-BD7Mx4u9.js');
10
- var fieldSectionTabs = require('./fieldSectionTabs-ns8gLfPr.js');
11
- require('./userRoles-Da1JaIoF.js');
12
- require('./getNumberValueFromClassNameString-D4OqkHPA.js');
13
-
14
- const hexToRgb = (hex) => {
15
- // Rimuove il simbolo `#` se presente
16
- const cleanedHex = hex.replace(/^#/, '');
17
- // Controlla che il colore sia valido (3 o 6 caratteri)
18
- if (!/^([A-Fa-f0-9]{3}|[A-Fa-f0-9]{6})$/.test(cleanedHex)) {
19
- throw new Error(`Colore HEX non valido: ${hex}`);
20
- }
21
- // In caso di formato corto (es. "FFF"), lo converte in formato lungo (es. "FFFFFF")
22
- const expandedHex = cleanedHex.length === 3
23
- ? cleanedHex
24
- .split('')
25
- .map(char => char + char)
26
- .join('')
27
- : cleanedHex;
28
- // Converte il valore HEX in decimali per R, G e B
29
- const r = parseInt(expandedHex.slice(0, 2), 16);
30
- const g = parseInt(expandedHex.slice(2, 4), 16);
31
- const b = parseInt(expandedHex.slice(4, 6), 16);
32
- return { r, g, b };
33
- };
34
-
35
- function generateCssVars(settings) {
36
- // Gestione robusta dei font
37
- const fontWeights = [300, 400, 500, 600, 700, 800];
38
- const fontsToImport = [settings.headingFont, settings.textFont]
39
- .filter(Boolean)
40
- .map(f => {
41
- if (!f)
42
- return '';
43
- // Aggiungiamo il parametro wght per specificare i pesi da caricare
44
- return `@import url('https://fonts.googleapis.com/css2?family=${f.replace(/ /g, "+")}:wght@${fontWeights.join(';')}&display=swap');`;
45
- })
46
- .join("\n");
47
- const generateOpacityVariants = (color, name) => {
48
- if (!color) {
49
- return '';
50
- }
51
- try {
52
- const rgbValue = hexToRgb(color);
53
- if (!rgbValue || typeof rgbValue.r !== 'number' ||
54
- typeof rgbValue.g !== 'number' ||
55
- typeof rgbValue.b !== 'number') {
56
- console.warn(`Impossibile convertire il colore ${name}: ${color}`);
57
- return '';
58
- }
59
- const { r, g, b } = rgbValue;
60
- const opacityVars = Array.from({ length: 9 }, (_, i) => {
61
- const opacity = (i + 1) * 10;
62
- return `--color-${name}-${opacity}: rgba(${r}, ${g}, ${b}, ${opacity / 100});`;
63
- }).join("\n");
64
- return `
65
- --color-${name}: rgb(${r}, ${g}, ${b}); /* Default (opacità 1) */
66
- ${opacityVars}
67
- `;
68
- }
69
- catch (error) {
70
- console.warn(`Errore nella generazione delle varianti di opacità per ${name}: ${error}`);
71
- return '';
72
- }
73
- };
74
- // Genera variabili solo per i colori forniti
75
- const primaryVars = generateOpacityVariants(settings.primaryColor, "primary");
76
- const secondaryVars = generateOpacityVariants(settings.secondaryColor, "secondary");
77
- const accentVars = generateOpacityVariants(settings.accentColor, "accent");
78
- const darkVars = generateOpacityVariants(settings.darkColor, "dark");
79
- const lightVars = generateOpacityVariants(settings.lightColor, "light");
80
- // Genera i valori dei font in modo sicuro
81
- const headingFontValue = settings.headingFont
82
- ? `'${settings.headingFont}', sans-serif`
83
- : 'system-layout, sans-serif';
84
- const textFontValue = settings.textFont
85
- ? `'${settings.textFont}', sans-serif`
86
- : 'system-layout, sans-serif';
87
- return `
88
- ${fontsToImport}
89
-
90
- :root {
91
- --font-heading: ${headingFontValue};
92
- --font-text: ${textFontValue};
93
- --color-white: #ffffff;
94
- --color-black: #000000;
95
- --color-foreground: ${settings.foregroundColor || '#FFFFFF'};
96
- ${primaryVars}
97
- ${secondaryVars}
98
- ${accentVars}
99
- ${darkVars}
100
- ${lightVars}
101
- }
102
- `;
103
- }
104
-
105
- function getButtonClasses(config) {
106
- const { buttonStyle = 'solid', buttonColor = 'primary', buttonSize = 'default', buttonRounded = 'default', iconPosition = 'left', textColor, // Aggiungiamo il colore del testo
107
- additionalEffects = [], } = config;
108
- const classes = [
109
- 'inline-flex',
110
- 'items-center',
111
- 'justify-center',
112
- 'font-medium',
113
- 'focus:outline-none',
114
- 'focus-visible:ring-2',
115
- 'focus-visible:ring-offset-2',
116
- ];
117
- // Stile base
118
- switch (buttonStyle) {
119
- case 'solid':
120
- classes.push(`bg-${buttonColor}`);
121
- // Usa textColor se specificato, altrimenti usa il colore predefinito basato sul buttonColor
122
- if (textColor) {
123
- classes.push(`text-${textColor}`);
124
- }
125
- else {
126
- classes.push(buttonColor === 'light' ? 'text-dark' : 'text-white');
127
- }
128
- classes.push(`hover:bg-${buttonColor}/90`);
129
- break;
130
- case 'outline':
131
- classes.push(`border`);
132
- classes.push(`border-${buttonColor}`);
133
- // Usa textColor se specificato, altrimenti usa il colore del bottone
134
- if (textColor) {
135
- classes.push(`text-${textColor}`);
136
- // Mantieni lo stesso colore di testo per l'hover, a meno che non sia specificato diversamente
137
- classes.push(`hover:text-${textColor}`);
138
- }
139
- else {
140
- classes.push(`text-${buttonColor}`);
141
- classes.push(`hover:text-${buttonColor === 'light' ? 'dark' : 'white'}`);
142
- }
143
- classes.push(`hover:bg-${buttonColor}`);
144
- break;
145
- case 'ghost':
146
- // Usa textColor se specificato, altrimenti usa il colore del bottone
147
- if (textColor) {
148
- classes.push(`text-${textColor}`);
149
- }
150
- else {
151
- classes.push(`text-${buttonColor}`);
152
- }
153
- classes.push(`hover:bg-${buttonColor}/10`);
154
- break;
155
- case 'link':
156
- // Usa textColor se specificato, altrimenti usa il colore del bottone
157
- if (textColor) {
158
- classes.push(`text-${textColor}`);
159
- }
160
- else {
161
- classes.push(`text-${buttonColor}`);
162
- }
163
- classes.push('hover:underline');
164
- break;
165
- }
166
- // Dimensione
167
- switch (buttonSize) {
168
- case 'small':
169
- classes.push('text-xs px-2.5 py-1.5');
170
- break;
171
- case 'default':
172
- classes.push('text-sm px-4 py-2');
173
- break;
174
- case 'medium':
175
- classes.push('text-base px-5 py-2.5');
176
- break;
177
- case 'large':
178
- classes.push('text-lg px-6 py-3');
179
- break;
180
- case 'xl':
181
- classes.push('text-xl px-8 py-4');
182
- break;
183
- }
184
- // Se è solo icona, aggiusta il padding per renderlo quadrato/rotondo
185
- if (config.useIcon && iconPosition === 'only') {
186
- classes.push('p-0');
187
- switch (buttonSize) {
188
- case 'small':
189
- classes.push('w-7 h-7');
190
- break;
191
- case 'default':
192
- classes.push('w-9 h-9');
193
- break;
194
- case 'medium':
195
- classes.push('w-10 h-10');
196
- break;
197
- case 'large':
198
- classes.push('w-12 h-12');
199
- break;
200
- case 'xl':
201
- classes.push('w-14 h-14');
202
- break;
203
- }
204
- }
205
- // Arrotondamento
206
- switch (buttonRounded) {
207
- case 'none':
208
- classes.push('rounded-none');
209
- break;
210
- case 'sm':
211
- classes.push('rounded-sm');
212
- break;
213
- case 'default':
214
- classes.push('rounded');
215
- break;
216
- case 'lg':
217
- classes.push('rounded-lg');
218
- break;
219
- case 'full':
220
- classes.push('rounded-full');
221
- break;
222
- }
223
- // Effetti aggiuntivi
224
- if (additionalEffects) {
225
- if (additionalEffects.includes('shadow')) {
226
- classes.push('shadow-md hover:shadow-lg');
227
- }
228
- if (additionalEffects.includes('transition')) {
229
- classes.push('transition-all duration-200');
230
- }
231
- if (additionalEffects.includes('scale')) {
232
- classes.push('transform hover:scale-105');
233
- }
234
- }
235
- // Aggiungi la classe focus-ring per il colore appropriato
236
- classes.push(`focus-visible:ring-${buttonColor}/50`);
237
- return classes.join(' ');
238
- }
239
-
240
- function getClassName(config) {
241
- // Mantieni tutte le altre classi Tailwind, ma ometti quelle di colore di sfondo
242
- const classList = [];
243
- // Gestione campi compositi
244
- ['p', 'm'].forEach((field) => {
245
- if (config[field]?.className) {
246
- classList.push(config[field].className);
247
- }
248
- });
249
- // Gestione campi diretti
250
- ['fs', 'h', 'container'].forEach((field) => {
251
- if (config[field]) {
252
- classList.push(config[field]);
253
- }
254
- });
255
- // Altre classi che non sono colori dinamici
256
- if (config.bgi && config.bgi.url) {
257
- classList.push('bg-no-repeat bg-cover');
258
- }
259
- if (config.boxShadow) {
260
- classList.push(config.boxShadow);
261
- }
262
- if (config.borderRadius) {
263
- classList.push(config.borderRadius);
264
- }
265
- return classList.join(' ');
266
- }
267
-
268
- function getInlineStyles(config) {
269
- const styles = {};
270
- // Gestisci il background color con stile inline
271
- if (config.bgc) {
272
- styles.backgroundColor = config.bgc;
273
- }
274
- // Gestione background image
275
- if (config.bgi && config.bgi.url) {
276
- styles.backgroundImage = `url("${config.bgi.url}")`;
277
- // Gestione focal point
278
- if (typeof config.bgi.focalX === 'number' && typeof config.bgi.focalY === 'number') {
279
- styles.backgroundPosition = `${config.bgi.focalX}% ${config.bgi.focalY}%`;
280
- }
281
- }
282
- return styles;
283
- }
284
-
285
- exports.Fields = fields_index.index;
286
- exports.Config = config_index.index;
287
- exports.generatePreviewPath = config_index.generatePreviewPath;
288
- exports.googleFonts = config_index.GoogleFonts;
289
- exports.Tailwind = tailwind_index.index;
290
- exports.Acl = acl_index.index;
291
- exports.Enum = enums_index.index;
292
- exports.Types = types_index.index;
293
- exports.Hooks = hooks_index.index;
294
- exports.iconsList = fieldSectionTabs.iconsList;
295
- exports.generateCssVars = generateCssVars;
296
- exports.getButtonClasses = getButtonClasses;
297
- exports.getClassName = getClassName;
298
- exports.getInlineStyles = getInlineStyles;
299
- exports.hexToRgb = hexToRgb;
1
+ "use strict";var e=require("./index-0eQdIBGL.js"),s=require("./index-Davj5NSB.js"),r=require("./index-gxytNJWT.js"),o=require("./index-kvH0sGti.js"),t=require("./index-C4uc5BOd.js"),n=require("./types/index.cjs.js"),i=require("./index-BnQT4jju.js"),a=require("./fieldSectionTabs-B_rEttMP.js");require("./userRoles-Dd_gfx51.js"),require("./getNumberValueFromClassNameString-Dm5eOjBJ.js");const u=e=>{const s=e.replace(/^#/,"");if(!/^([A-Fa-f0-9]{3}|[A-Fa-f0-9]{6})$/.test(s))throw new Error(`Colore HEX non valido: ${e}`);const r=3===s.length?s.split("").map(e=>e+e).join(""):s;return{r:parseInt(r.slice(0,2),16),g:parseInt(r.slice(2,4),16),b:parseInt(r.slice(4,6),16)}};exports.Fields=e.index,exports.Config=s.index,exports.generatePreviewPath=s.generatePreviewPath,exports.googleFonts=s.GoogleFonts,exports.Tailwind=r.index,exports.Acl=o.index,exports.Enum=t.index,exports.Types=n.index,exports.Hooks=i.index,exports.iconsList=a.iconsList,exports.generateCssVars=function(e){const s=[300,400,500,600,700,800],r=[e.headingFont,e.textFont].filter(Boolean).map(e=>e?`@import url('https://fonts.googleapis.com/css2?family=${e.replace(/ /g,"+")}:wght@${s.join(";")}&display=swap');`:"").join("\n"),o=(e,s)=>{if(!e)return"";try{const r=u(e);if(!r||"number"!=typeof r.r||"number"!=typeof r.g||"number"!=typeof r.b)return console.warn(`Impossibile convertire il colore ${s}: ${e}`),"";const{r:o,g:t,b:n}=r,i=Array.from({length:9},(e,r)=>{const i=10*(r+1);return`--color-${s}-${i}: rgba(${o}, ${t}, ${n}, ${i/100});`}).join("\n");return`\n --color-${s}: rgb(${o}, ${t}, ${n}); /* Default (opacità 1) */\n ${i}\n `}catch(e){return console.warn(`Errore nella generazione delle varianti di opacità per ${s}: ${e}`),""}},t=o(e.primaryColor,"primary"),n=o(e.secondaryColor,"secondary"),i=o(e.accentColor,"accent"),a=o(e.darkColor,"dark"),l=o(e.lightColor,"light");return`\n ${r}\n\n :root {\n --font-heading: ${e.headingFont?`'${e.headingFont}', sans-serif`:"system-layout, sans-serif"};\n --font-text: ${e.textFont?`'${e.textFont}', sans-serif`:"system-layout, sans-serif"};\n --color-white: #ffffff;\n --color-black: #000000;\n --color-foreground: ${e.foregroundColor||"#FFFFFF"};\n ${t}\n ${n}\n ${i}\n ${a}\n ${l}\n }\n `},exports.getButtonClasses=function(e){const{buttonStyle:s="solid",buttonColor:r="primary",buttonSize:o="default",buttonRounded:t="default",iconPosition:n="left",textColor:i,additionalEffects:a=[]}=e,u=["inline-flex","items-center","justify-center","font-medium","focus:outline-none","focus-visible:ring-2","focus-visible:ring-offset-2"];switch(s){case"solid":u.push(`bg-${r}`),i?u.push(`text-${i}`):u.push("light"===r?"text-dark":"text-white"),u.push(`hover:bg-${r}/90`);break;case"outline":u.push("border"),u.push(`border-${r}`),i?(u.push(`text-${i}`),u.push(`hover:text-${i}`)):(u.push(`text-${r}`),u.push("hover:text-"+("light"===r?"dark":"white"))),u.push(`hover:bg-${r}`);break;case"ghost":i?u.push(`text-${i}`):u.push(`text-${r}`),u.push(`hover:bg-${r}/10`);break;case"link":i?u.push(`text-${i}`):u.push(`text-${r}`),u.push("hover:underline")}switch(o){case"small":u.push("text-xs px-2.5 py-1.5");break;case"default":u.push("text-sm px-4 py-2");break;case"medium":u.push("text-base px-5 py-2.5");break;case"large":u.push("text-lg px-6 py-3");break;case"xl":u.push("text-xl px-8 py-4")}if(e.useIcon&&"only"===n)switch(u.push("p-0"),o){case"small":u.push("w-7 h-7");break;case"default":u.push("w-9 h-9");break;case"medium":u.push("w-10 h-10");break;case"large":u.push("w-12 h-12");break;case"xl":u.push("w-14 h-14")}switch(t){case"none":u.push("rounded-none");break;case"sm":u.push("rounded-sm");break;case"default":u.push("rounded");break;case"lg":u.push("rounded-lg");break;case"full":u.push("rounded-full")}return a&&(a.includes("shadow")&&u.push("shadow-md hover:shadow-lg"),a.includes("transition")&&u.push("transition-all duration-200"),a.includes("scale")&&u.push("transform hover:scale-105")),u.push(`focus-visible:ring-${r}/50`),u.join(" ")},exports.getClassName=function(e){const s=[];return["p","m"].forEach(r=>{e[r]?.className&&s.push(e[r].className)}),["fs","h","container"].forEach(r=>{e[r]&&s.push(e[r])}),e.bgi&&e.bgi.url&&s.push("bg-no-repeat bg-cover"),e.boxShadow&&s.push(e.boxShadow),e.borderRadius&&s.push(e.borderRadius),s.join(" ")},exports.getInlineStyles=function(e){const s={};return e.bgc&&(s.backgroundColor=e.bgc),e.bgi&&e.bgi.url&&(s.backgroundImage=`url("${e.bgi.url}")`,"number"==typeof e.bgi.focalX&&"number"==typeof e.bgi.focalY&&(s.backgroundPosition=`${e.bgi.focalX}% ${e.bgi.focalY}%`)),s},exports.hexToRgb=u;
300
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/hexToRgb.ts","../src/generateCssVars.ts","../src/getButtonClasses.ts","../src/getClassName.ts","../src/getInlineStyles.ts"],"sourcesContent":["const hexToRgb = (hex: string): { r: number; g: number; b: number } => {\n // Rimuove il simbolo `#` se presente\n const cleanedHex = hex.replace(/^#/, '');\n\n // Controlla che il colore sia valido (3 o 6 caratteri)\n if (!/^([A-Fa-f0-9]{3}|[A-Fa-f0-9]{6})$/.test(cleanedHex)) {\n throw new Error(`Colore HEX non valido: ${hex}`);\n }\n\n // In caso di formato corto (es. \"FFF\"), lo converte in formato lungo (es. \"FFFFFF\")\n const expandedHex =\n cleanedHex.length === 3\n ? cleanedHex\n .split('')\n .map(char => char + char)\n .join('')\n : cleanedHex;\n\n // Converte il valore HEX in decimali per R, G e B\n const r = parseInt(expandedHex.slice(0, 2), 16);\n const g = parseInt(expandedHex.slice(2, 4), 16);\n const b = parseInt(expandedHex.slice(4, 6), 16);\n\n return { r, g, b };\n};\n\nexport default hexToRgb;","import hexToRgb from \"./hexToRgb\";\n\nfunction generateCssVars(settings: {\n headingFont?: string;\n textFont?: string;\n foregroundColor?: string;\n primaryColor?: string;\n secondaryColor?: string;\n accentColor?: string;\n darkColor?: string;\n lightColor?: string;\n}): string {\n // Gestione robusta dei font\n const fontWeights = [300, 400, 500, 600, 700, 800];\n\n const fontsToImport = [settings.headingFont, settings.textFont]\n .filter(Boolean)\n .map(f => {\n if (!f) return '';\n // Aggiungiamo il parametro wght per specificare i pesi da caricare\n return `@import url('https://fonts.googleapis.com/css2?family=${f.replace(\n / /g,\n \"+\"\n )}:wght@${fontWeights.join(';')}&display=swap');`\n })\n .join(\"\\n\");\n\n\n const generateOpacityVariants = (color: string | undefined, name: string): string => {\n if (!color) {\n return '';\n }\n\n try {\n const rgbValue = hexToRgb(color);\n\n if (!rgbValue || typeof rgbValue.r !== 'number' ||\n typeof rgbValue.g !== 'number' ||\n typeof rgbValue.b !== 'number') {\n console.warn(`Impossibile convertire il colore ${name}: ${color}`);\n return '';\n }\n\n const { r, g, b } = rgbValue;\n\n const opacityVars = Array.from({ length: 9 }, (_, i) => {\n const opacity = (i + 1) * 10;\n return `--color-${name}-${opacity}: rgba(${r}, ${g}, ${b}, ${opacity / 100});`;\n }).join(\"\\n\");\n\n return `\n --color-${name}: rgb(${r}, ${g}, ${b}); /* Default (opacità 1) */\n ${opacityVars}\n `;\n } catch (error) {\n console.warn(`Errore nella generazione delle varianti di opacità per ${name}: ${error}`);\n return '';\n }\n };\n\n // Genera variabili solo per i colori forniti\n const primaryVars = generateOpacityVariants(settings.primaryColor, \"primary\");\n const secondaryVars = generateOpacityVariants(settings.secondaryColor, \"secondary\");\n const accentVars = generateOpacityVariants(settings.accentColor, \"accent\");\n const darkVars = generateOpacityVariants(settings.darkColor, \"dark\");\n const lightVars = generateOpacityVariants(settings.lightColor, \"light\");\n\n // Genera i valori dei font in modo sicuro\n const headingFontValue = settings.headingFont\n ? `'${settings.headingFont}', sans-serif`\n : 'system-layout, sans-serif';\n\n const textFontValue = settings.textFont\n ? `'${settings.textFont}', sans-serif`\n : 'system-layout, sans-serif';\n\n return `\n ${fontsToImport}\n\n :root {\n --font-heading: ${headingFontValue};\n --font-text: ${textFontValue};\n --color-white: #ffffff;\n --color-black: #000000;\n --color-foreground: ${settings.foregroundColor || '#FFFFFF'};\n ${primaryVars}\n ${secondaryVars}\n ${accentVars}\n ${darkVars}\n ${lightVars}\n }\n `;\n}\n\nexport default generateCssVars;\n","export type ButtonConfig = {\n show: boolean\n buttonStyle?: 'solid' | 'outline' | 'ghost' | 'link'\n buttonColor?: 'primary' | 'secondary' | 'accent' | 'dark' | 'light'\n buttonSize?: 'small' | 'default' | 'medium' | 'large' | 'xl'\n buttonRounded?: 'none' | 'sm' | 'default' | 'lg' | 'full'\n useIcon?: boolean\n iconPosition?: 'left' | 'right' | 'only'\n iconName?: string\n iconVariant?: 'outline' | 'solid'\n alignment?: 'left' | 'center' | 'right'\n textColor?: 'primary' | 'secondary' | 'accent' | 'dark' | 'light' | 'white' | 'black'\n additionalEffects?: ('shadow' | 'transition' | 'scale')[]\n}\n\nexport type ActionConfig = ButtonConfig & {\n show?: boolean\n actionType?: 'internalLink' | 'externalLink' | 'customAction'\n internalLink?: {\n relationTo: string\n value: {\n slug: string\n id: string\n }\n }\n externalLink?: string\n customActionId?: string\n label?: string\n onClick?: () => void\n}\n\nfunction getButtonClasses(config: ActionConfig): string {\n const {\n buttonStyle = 'solid',\n buttonColor = 'primary',\n buttonSize = 'default',\n buttonRounded = 'default',\n iconPosition = 'left',\n textColor, // Aggiungiamo il colore del testo\n additionalEffects = [],\n } = config\n\n const classes: string[] = [\n 'inline-flex',\n 'items-center',\n 'justify-center',\n 'font-medium',\n 'focus:outline-none',\n 'focus-visible:ring-2',\n 'focus-visible:ring-offset-2',\n ]\n\n // Stile base\n switch (buttonStyle) {\n case 'solid':\n classes.push(`bg-${buttonColor}`)\n // Usa textColor se specificato, altrimenti usa il colore predefinito basato sul buttonColor\n if (textColor) {\n classes.push(`text-${textColor}`)\n } else {\n classes.push(buttonColor === 'light' ? 'text-dark' : 'text-white')\n }\n classes.push(`hover:bg-${buttonColor}/90`)\n break\n case 'outline':\n classes.push(`border`)\n classes.push(`border-${buttonColor}`)\n // Usa textColor se specificato, altrimenti usa il colore del bottone\n if (textColor) {\n classes.push(`text-${textColor}`)\n // Mantieni lo stesso colore di testo per l'hover, a meno che non sia specificato diversamente\n classes.push(`hover:text-${textColor}`)\n } else {\n classes.push(`text-${buttonColor}`)\n classes.push(`hover:text-${buttonColor === 'light' ? 'dark' : 'white'}`)\n }\n classes.push(`hover:bg-${buttonColor}`)\n break\n case 'ghost':\n // Usa textColor se specificato, altrimenti usa il colore del bottone\n if (textColor) {\n classes.push(`text-${textColor}`)\n } else {\n classes.push(`text-${buttonColor}`)\n }\n classes.push(`hover:bg-${buttonColor}/10`)\n break\n case 'link':\n // Usa textColor se specificato, altrimenti usa il colore del bottone\n if (textColor) {\n classes.push(`text-${textColor}`)\n } else {\n classes.push(`text-${buttonColor}`)\n }\n classes.push('hover:underline')\n break\n }\n\n // Dimensione\n switch (buttonSize) {\n case 'small':\n classes.push('text-xs px-2.5 py-1.5')\n break\n case 'default':\n classes.push('text-sm px-4 py-2')\n break\n case 'medium':\n classes.push('text-base px-5 py-2.5')\n break\n case 'large':\n classes.push('text-lg px-6 py-3')\n break\n case 'xl':\n classes.push('text-xl px-8 py-4')\n break\n }\n\n // Se è solo icona, aggiusta il padding per renderlo quadrato/rotondo\n if (config.useIcon && iconPosition === 'only') {\n classes.push('p-0')\n switch (buttonSize) {\n case 'small':\n classes.push('w-7 h-7')\n break\n case 'default':\n classes.push('w-9 h-9')\n break\n case 'medium':\n classes.push('w-10 h-10')\n break\n case 'large':\n classes.push('w-12 h-12')\n break\n case 'xl':\n classes.push('w-14 h-14')\n break\n }\n }\n\n // Arrotondamento\n switch (buttonRounded) {\n case 'none':\n classes.push('rounded-none')\n break\n case 'sm':\n classes.push('rounded-sm')\n break\n case 'default':\n classes.push('rounded')\n break\n case 'lg':\n classes.push('rounded-lg')\n break\n case 'full':\n classes.push('rounded-full')\n break\n }\n\n // Effetti aggiuntivi\n if (additionalEffects) {\n if (additionalEffects.includes('shadow')) {\n classes.push('shadow-md hover:shadow-lg')\n }\n if (additionalEffects.includes('transition')) {\n classes.push('transition-all duration-200')\n }\n if (additionalEffects.includes('scale')) {\n classes.push('transform hover:scale-105')\n }\n }\n\n // Aggiungi la classe focus-ring per il colore appropriato\n classes.push(`focus-visible:ring-${buttonColor}/50`)\n\n return classes.join(' ')\n}\n\nexport default getButtonClasses\n","function getClassName(config: any): string {\n // Mantieni tutte le altre classi Tailwind, ma ometti quelle di colore di sfondo\n const classList: string[] = [];\n\n // Gestione campi compositi\n ['p', 'm'].forEach((field) => {\n if (config[field]?.className) {\n classList.push(config[field].className);\n }\n });\n\n // Gestione campi diretti\n ['fs', 'h', 'container'].forEach((field) => {\n if (config[field]) {\n classList.push(config[field]);\n }\n });\n\n // Altre classi che non sono colori dinamici\n if (config.bgi && config.bgi.url) {\n classList.push('bg-no-repeat bg-cover');\n }\n if (config.boxShadow) {\n classList.push(config.boxShadow);\n }\n if (config.borderRadius) {\n classList.push(config.borderRadius);\n }\n\n return classList.join(' ');\n}\nexport default getClassName;\n","import React from 'react'\n\nfunction getInlineStyles(config: any): React.CSSProperties {\n const styles: React.CSSProperties = {}\n\n // Gestisci il background color con stile inline\n if (config.bgc) {\n styles.backgroundColor = config.bgc\n }\n\n // Gestione background image\n if (config.bgi && config.bgi.url) {\n styles.backgroundImage = `url(\"${config.bgi.url}\")`\n\n // Gestione focal point\n if (typeof config.bgi.focalX === 'number' && typeof config.bgi.focalY === 'number') {\n styles.backgroundPosition = `${config.bgi.focalX}% ${config.bgi.focalY}%`\n }\n }\n\n return styles\n}\n\nexport default getInlineStyles\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/hexToRgb.ts","../src/generateCssVars.ts","../src/getButtonClasses.ts","../src/getClassName.ts","../src/getInlineStyles.ts"],"sourcesContent":[null,null,null,null,null],"names":["hexToRgb","hex","cleanedHex","replace","test","Error","expandedHex","length","split","map","char","join","r","parseInt","slice","g","b","settings","fontWeights","fontsToImport","headingFont","textFont","filter","Boolean","f","generateOpacityVariants","color","name","rgbValue","console","warn","opacityVars","Array","from","_","i","opacity","error","primaryVars","primaryColor","secondaryVars","secondaryColor","accentVars","accentColor","darkVars","darkColor","lightVars","lightColor","foregroundColor","config","buttonStyle","buttonColor","buttonSize","buttonRounded","iconPosition","textColor","additionalEffects","classes","push","useIcon","includes","classList","forEach","field","className","bgi","url","boxShadow","borderRadius","styles","bgc","backgroundColor","backgroundImage","focalX","focalY","backgroundPosition"],"mappings":"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"}
package/dist/index.esm.js CHANGED
@@ -1,284 +1,2 @@
1
- export { i as Fields } from './index-B5jmz5OR.js';
2
- export { i as Config, g as generatePreviewPath, G as googleFonts } from './index-1Y54jG4C.js';
3
- export { i as Tailwind } from './index-5EL7OntE.js';
4
- export { i as Acl } from './index-Ces144rr.js';
5
- export { i as Enum } from './index-CKwysnVm.js';
6
- export { i as Types } from './types/index.esm.js';
7
- export { i as Hooks } from './index-I4vA8AmC.js';
8
- export { i as iconsList } from './fieldSectionTabs-B2XLxdEW.js';
9
- import './userRoles-Dq3yqKLM.js';
10
- import './getNumberValueFromClassNameString-DyZ9P1fd.js';
11
-
12
- const hexToRgb = (hex) => {
13
- // Rimuove il simbolo `#` se presente
14
- const cleanedHex = hex.replace(/^#/, '');
15
- // Controlla che il colore sia valido (3 o 6 caratteri)
16
- if (!/^([A-Fa-f0-9]{3}|[A-Fa-f0-9]{6})$/.test(cleanedHex)) {
17
- throw new Error(`Colore HEX non valido: ${hex}`);
18
- }
19
- // In caso di formato corto (es. "FFF"), lo converte in formato lungo (es. "FFFFFF")
20
- const expandedHex = cleanedHex.length === 3
21
- ? cleanedHex
22
- .split('')
23
- .map(char => char + char)
24
- .join('')
25
- : cleanedHex;
26
- // Converte il valore HEX in decimali per R, G e B
27
- const r = parseInt(expandedHex.slice(0, 2), 16);
28
- const g = parseInt(expandedHex.slice(2, 4), 16);
29
- const b = parseInt(expandedHex.slice(4, 6), 16);
30
- return { r, g, b };
31
- };
32
-
33
- function generateCssVars(settings) {
34
- // Gestione robusta dei font
35
- const fontWeights = [300, 400, 500, 600, 700, 800];
36
- const fontsToImport = [settings.headingFont, settings.textFont]
37
- .filter(Boolean)
38
- .map(f => {
39
- if (!f)
40
- return '';
41
- // Aggiungiamo il parametro wght per specificare i pesi da caricare
42
- return `@import url('https://fonts.googleapis.com/css2?family=${f.replace(/ /g, "+")}:wght@${fontWeights.join(';')}&display=swap');`;
43
- })
44
- .join("\n");
45
- const generateOpacityVariants = (color, name) => {
46
- if (!color) {
47
- return '';
48
- }
49
- try {
50
- const rgbValue = hexToRgb(color);
51
- if (!rgbValue || typeof rgbValue.r !== 'number' ||
52
- typeof rgbValue.g !== 'number' ||
53
- typeof rgbValue.b !== 'number') {
54
- console.warn(`Impossibile convertire il colore ${name}: ${color}`);
55
- return '';
56
- }
57
- const { r, g, b } = rgbValue;
58
- const opacityVars = Array.from({ length: 9 }, (_, i) => {
59
- const opacity = (i + 1) * 10;
60
- return `--color-${name}-${opacity}: rgba(${r}, ${g}, ${b}, ${opacity / 100});`;
61
- }).join("\n");
62
- return `
63
- --color-${name}: rgb(${r}, ${g}, ${b}); /* Default (opacità 1) */
64
- ${opacityVars}
65
- `;
66
- }
67
- catch (error) {
68
- console.warn(`Errore nella generazione delle varianti di opacità per ${name}: ${error}`);
69
- return '';
70
- }
71
- };
72
- // Genera variabili solo per i colori forniti
73
- const primaryVars = generateOpacityVariants(settings.primaryColor, "primary");
74
- const secondaryVars = generateOpacityVariants(settings.secondaryColor, "secondary");
75
- const accentVars = generateOpacityVariants(settings.accentColor, "accent");
76
- const darkVars = generateOpacityVariants(settings.darkColor, "dark");
77
- const lightVars = generateOpacityVariants(settings.lightColor, "light");
78
- // Genera i valori dei font in modo sicuro
79
- const headingFontValue = settings.headingFont
80
- ? `'${settings.headingFont}', sans-serif`
81
- : 'system-layout, sans-serif';
82
- const textFontValue = settings.textFont
83
- ? `'${settings.textFont}', sans-serif`
84
- : 'system-layout, sans-serif';
85
- return `
86
- ${fontsToImport}
87
-
88
- :root {
89
- --font-heading: ${headingFontValue};
90
- --font-text: ${textFontValue};
91
- --color-white: #ffffff;
92
- --color-black: #000000;
93
- --color-foreground: ${settings.foregroundColor || '#FFFFFF'};
94
- ${primaryVars}
95
- ${secondaryVars}
96
- ${accentVars}
97
- ${darkVars}
98
- ${lightVars}
99
- }
100
- `;
101
- }
102
-
103
- function getButtonClasses(config) {
104
- const { buttonStyle = 'solid', buttonColor = 'primary', buttonSize = 'default', buttonRounded = 'default', iconPosition = 'left', textColor, // Aggiungiamo il colore del testo
105
- additionalEffects = [], } = config;
106
- const classes = [
107
- 'inline-flex',
108
- 'items-center',
109
- 'justify-center',
110
- 'font-medium',
111
- 'focus:outline-none',
112
- 'focus-visible:ring-2',
113
- 'focus-visible:ring-offset-2',
114
- ];
115
- // Stile base
116
- switch (buttonStyle) {
117
- case 'solid':
118
- classes.push(`bg-${buttonColor}`);
119
- // Usa textColor se specificato, altrimenti usa il colore predefinito basato sul buttonColor
120
- if (textColor) {
121
- classes.push(`text-${textColor}`);
122
- }
123
- else {
124
- classes.push(buttonColor === 'light' ? 'text-dark' : 'text-white');
125
- }
126
- classes.push(`hover:bg-${buttonColor}/90`);
127
- break;
128
- case 'outline':
129
- classes.push(`border`);
130
- classes.push(`border-${buttonColor}`);
131
- // Usa textColor se specificato, altrimenti usa il colore del bottone
132
- if (textColor) {
133
- classes.push(`text-${textColor}`);
134
- // Mantieni lo stesso colore di testo per l'hover, a meno che non sia specificato diversamente
135
- classes.push(`hover:text-${textColor}`);
136
- }
137
- else {
138
- classes.push(`text-${buttonColor}`);
139
- classes.push(`hover:text-${buttonColor === 'light' ? 'dark' : 'white'}`);
140
- }
141
- classes.push(`hover:bg-${buttonColor}`);
142
- break;
143
- case 'ghost':
144
- // Usa textColor se specificato, altrimenti usa il colore del bottone
145
- if (textColor) {
146
- classes.push(`text-${textColor}`);
147
- }
148
- else {
149
- classes.push(`text-${buttonColor}`);
150
- }
151
- classes.push(`hover:bg-${buttonColor}/10`);
152
- break;
153
- case 'link':
154
- // Usa textColor se specificato, altrimenti usa il colore del bottone
155
- if (textColor) {
156
- classes.push(`text-${textColor}`);
157
- }
158
- else {
159
- classes.push(`text-${buttonColor}`);
160
- }
161
- classes.push('hover:underline');
162
- break;
163
- }
164
- // Dimensione
165
- switch (buttonSize) {
166
- case 'small':
167
- classes.push('text-xs px-2.5 py-1.5');
168
- break;
169
- case 'default':
170
- classes.push('text-sm px-4 py-2');
171
- break;
172
- case 'medium':
173
- classes.push('text-base px-5 py-2.5');
174
- break;
175
- case 'large':
176
- classes.push('text-lg px-6 py-3');
177
- break;
178
- case 'xl':
179
- classes.push('text-xl px-8 py-4');
180
- break;
181
- }
182
- // Se è solo icona, aggiusta il padding per renderlo quadrato/rotondo
183
- if (config.useIcon && iconPosition === 'only') {
184
- classes.push('p-0');
185
- switch (buttonSize) {
186
- case 'small':
187
- classes.push('w-7 h-7');
188
- break;
189
- case 'default':
190
- classes.push('w-9 h-9');
191
- break;
192
- case 'medium':
193
- classes.push('w-10 h-10');
194
- break;
195
- case 'large':
196
- classes.push('w-12 h-12');
197
- break;
198
- case 'xl':
199
- classes.push('w-14 h-14');
200
- break;
201
- }
202
- }
203
- // Arrotondamento
204
- switch (buttonRounded) {
205
- case 'none':
206
- classes.push('rounded-none');
207
- break;
208
- case 'sm':
209
- classes.push('rounded-sm');
210
- break;
211
- case 'default':
212
- classes.push('rounded');
213
- break;
214
- case 'lg':
215
- classes.push('rounded-lg');
216
- break;
217
- case 'full':
218
- classes.push('rounded-full');
219
- break;
220
- }
221
- // Effetti aggiuntivi
222
- if (additionalEffects) {
223
- if (additionalEffects.includes('shadow')) {
224
- classes.push('shadow-md hover:shadow-lg');
225
- }
226
- if (additionalEffects.includes('transition')) {
227
- classes.push('transition-all duration-200');
228
- }
229
- if (additionalEffects.includes('scale')) {
230
- classes.push('transform hover:scale-105');
231
- }
232
- }
233
- // Aggiungi la classe focus-ring per il colore appropriato
234
- classes.push(`focus-visible:ring-${buttonColor}/50`);
235
- return classes.join(' ');
236
- }
237
-
238
- function getClassName(config) {
239
- // Mantieni tutte le altre classi Tailwind, ma ometti quelle di colore di sfondo
240
- const classList = [];
241
- // Gestione campi compositi
242
- ['p', 'm'].forEach((field) => {
243
- if (config[field]?.className) {
244
- classList.push(config[field].className);
245
- }
246
- });
247
- // Gestione campi diretti
248
- ['fs', 'h', 'container'].forEach((field) => {
249
- if (config[field]) {
250
- classList.push(config[field]);
251
- }
252
- });
253
- // Altre classi che non sono colori dinamici
254
- if (config.bgi && config.bgi.url) {
255
- classList.push('bg-no-repeat bg-cover');
256
- }
257
- if (config.boxShadow) {
258
- classList.push(config.boxShadow);
259
- }
260
- if (config.borderRadius) {
261
- classList.push(config.borderRadius);
262
- }
263
- return classList.join(' ');
264
- }
265
-
266
- function getInlineStyles(config) {
267
- const styles = {};
268
- // Gestisci il background color con stile inline
269
- if (config.bgc) {
270
- styles.backgroundColor = config.bgc;
271
- }
272
- // Gestione background image
273
- if (config.bgi && config.bgi.url) {
274
- styles.backgroundImage = `url("${config.bgi.url}")`;
275
- // Gestione focal point
276
- if (typeof config.bgi.focalX === 'number' && typeof config.bgi.focalY === 'number') {
277
- styles.backgroundPosition = `${config.bgi.focalX}% ${config.bgi.focalY}%`;
278
- }
279
- }
280
- return styles;
281
- }
282
-
283
- export { generateCssVars, getButtonClasses, getClassName, getInlineStyles, hexToRgb };
1
+ export{i as Fields}from"./index-qlyRswzw.js";export{i as Config,g as generatePreviewPath,G as googleFonts}from"./index-KPE7ZNep.js";export{i as Tailwind}from"./index-XuRN7Bay.js";export{i as Acl}from"./index-CaTg4skG.js";export{i as Enum}from"./index-D7075_q9.js";export{i as Types}from"./types/index.esm.js";export{i as Hooks}from"./index-CR0SwRmA.js";export{i as iconsList}from"./fieldSectionTabs-DX18jPzj.js";import"./userRoles-BIrmWoCJ.js";import"./getNumberValueFromClassNameString-pKKt97eg.js";const e=e=>{const o=e.replace(/^#/,"");if(!/^([A-Fa-f0-9]{3}|[A-Fa-f0-9]{6})$/.test(o))throw new Error(`Colore HEX non valido: ${e}`);const s=3===o.length?o.split("").map(e=>e+e).join(""):o;return{r:parseInt(s.slice(0,2),16),g:parseInt(s.slice(2,4),16),b:parseInt(s.slice(4,6),16)}};function o(o){const s=[300,400,500,600,700,800],r=[o.headingFont,o.textFont].filter(Boolean).map(e=>e?`@import url('https://fonts.googleapis.com/css2?family=${e.replace(/ /g,"+")}:wght@${s.join(";")}&display=swap');`:"").join("\n"),t=(o,s)=>{if(!o)return"";try{const r=e(o);if(!r||"number"!=typeof r.r||"number"!=typeof r.g||"number"!=typeof r.b)return console.warn(`Impossibile convertire il colore ${s}: ${o}`),"";const{r:t,g:n,b:a}=r,i=Array.from({length:9},(e,o)=>{const r=10*(o+1);return`--color-${s}-${r}: rgba(${t}, ${n}, ${a}, ${r/100});`}).join("\n");return`\n --color-${s}: rgb(${t}, ${n}, ${a}); /* Default (opacità 1) */\n ${i}\n `}catch(e){return console.warn(`Errore nella generazione delle varianti di opacità per ${s}: ${e}`),""}},n=t(o.primaryColor,"primary"),a=t(o.secondaryColor,"secondary"),i=t(o.accentColor,"accent"),u=t(o.darkColor,"dark"),l=t(o.lightColor,"light");return`\n ${r}\n\n :root {\n --font-heading: ${o.headingFont?`'${o.headingFont}', sans-serif`:"system-layout, sans-serif"};\n --font-text: ${o.textFont?`'${o.textFont}', sans-serif`:"system-layout, sans-serif"};\n --color-white: #ffffff;\n --color-black: #000000;\n --color-foreground: ${o.foregroundColor||"#FFFFFF"};\n ${n}\n ${a}\n ${i}\n ${u}\n ${l}\n }\n `}function s(e){const{buttonStyle:o="solid",buttonColor:s="primary",buttonSize:r="default",buttonRounded:t="default",iconPosition:n="left",textColor:a,additionalEffects:i=[]}=e,u=["inline-flex","items-center","justify-center","font-medium","focus:outline-none","focus-visible:ring-2","focus-visible:ring-offset-2"];switch(o){case"solid":u.push(`bg-${s}`),a?u.push(`text-${a}`):u.push("light"===s?"text-dark":"text-white"),u.push(`hover:bg-${s}/90`);break;case"outline":u.push("border"),u.push(`border-${s}`),a?(u.push(`text-${a}`),u.push(`hover:text-${a}`)):(u.push(`text-${s}`),u.push("hover:text-"+("light"===s?"dark":"white"))),u.push(`hover:bg-${s}`);break;case"ghost":a?u.push(`text-${a}`):u.push(`text-${s}`),u.push(`hover:bg-${s}/10`);break;case"link":a?u.push(`text-${a}`):u.push(`text-${s}`),u.push("hover:underline")}switch(r){case"small":u.push("text-xs px-2.5 py-1.5");break;case"default":u.push("text-sm px-4 py-2");break;case"medium":u.push("text-base px-5 py-2.5");break;case"large":u.push("text-lg px-6 py-3");break;case"xl":u.push("text-xl px-8 py-4")}if(e.useIcon&&"only"===n)switch(u.push("p-0"),r){case"small":u.push("w-7 h-7");break;case"default":u.push("w-9 h-9");break;case"medium":u.push("w-10 h-10");break;case"large":u.push("w-12 h-12");break;case"xl":u.push("w-14 h-14")}switch(t){case"none":u.push("rounded-none");break;case"sm":u.push("rounded-sm");break;case"default":u.push("rounded");break;case"lg":u.push("rounded-lg");break;case"full":u.push("rounded-full")}return i&&(i.includes("shadow")&&u.push("shadow-md hover:shadow-lg"),i.includes("transition")&&u.push("transition-all duration-200"),i.includes("scale")&&u.push("transform hover:scale-105")),u.push(`focus-visible:ring-${s}/50`),u.join(" ")}function r(e){const o=[];return["p","m"].forEach(s=>{e[s]?.className&&o.push(e[s].className)}),["fs","h","container"].forEach(s=>{e[s]&&o.push(e[s])}),e.bgi&&e.bgi.url&&o.push("bg-no-repeat bg-cover"),e.boxShadow&&o.push(e.boxShadow),e.borderRadius&&o.push(e.borderRadius),o.join(" ")}function t(e){const o={};return e.bgc&&(o.backgroundColor=e.bgc),e.bgi&&e.bgi.url&&(o.backgroundImage=`url("${e.bgi.url}")`,"number"==typeof e.bgi.focalX&&"number"==typeof e.bgi.focalY&&(o.backgroundPosition=`${e.bgi.focalX}% ${e.bgi.focalY}%`)),o}export{o as generateCssVars,s as getButtonClasses,r as getClassName,t as getInlineStyles,e as hexToRgb};
284
2
  //# sourceMappingURL=index.esm.js.map