bernova 0.0.2

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 (125) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +1778 -0
  3. package/dist/bin/bernova.js +2 -0
  4. package/dist/bin/buildstyle.js +2 -0
  5. package/dist/bin/createConfigFile.js +2 -0
  6. package/dist/bin/declareCssType.js +1 -0
  7. package/dist/index.js +1 -0
  8. package/dist/src/app.js +1 -0
  9. package/dist/src/constants/compilerType.js +1 -0
  10. package/dist/src/constants/cssAdvancedSelectors.js +1 -0
  11. package/dist/src/constants/cssProps.js +1 -0
  12. package/dist/src/constants/cssPseudoClasses.js +1 -0
  13. package/dist/src/constants/cssPseudoElements.js +1 -0
  14. package/dist/src/constants/index.js +1 -0
  15. package/dist/src/constants/resetCss.js +1 -0
  16. package/dist/src/index.d.ts +31 -0
  17. package/dist/src/index.js +1 -0
  18. package/dist/src/lib/compileConfig.js +1 -0
  19. package/dist/src/lib/compileThemes.js +1 -0
  20. package/dist/src/lib/copyLocalFonts/copyLocalFonts.utils.js +1 -0
  21. package/dist/src/lib/copyLocalFonts/generateCssFonts.utils.js +1 -0
  22. package/dist/src/lib/extractDocFragment/extractDocFragment.utils.js +1 -0
  23. package/dist/src/lib/fileExists/fileExists.utils.js +1 -0
  24. package/dist/src/lib/generateBaseCss/generateBaseCss.utils.js +1 -0
  25. package/dist/src/lib/generateCss/generateCSS.utils.js +1 -0
  26. package/dist/src/lib/generateCss/helpers/advanceselector/advancedSelectorHandler.utils.js +1 -0
  27. package/dist/src/lib/generateCss/helpers/attribute/attributeHandler.utils.js +1 -0
  28. package/dist/src/lib/generateCss/helpers/classnames/formatClassName.utils.js +1 -0
  29. package/dist/src/lib/generateCss/helpers/classnames/handlerRegister.utils.js +1 -0
  30. package/dist/src/lib/generateCss/helpers/cssVars/generateVars.utils.js +1 -0
  31. package/dist/src/lib/generateCss/helpers/dynamicValues/dynamicValues.utils.js +1 -0
  32. package/dist/src/lib/generateCss/helpers/dynamicValues/processDynamic.utils.js +1 -0
  33. package/dist/src/lib/generateCss/helpers/filterGenerateCss.utils.js +1 -0
  34. package/dist/src/lib/generateCss/helpers/foreign/foreignHandler.utils.js +1 -0
  35. package/dist/src/lib/generateCss/helpers/generateCssStyles.utils.js +1 -0
  36. package/dist/src/lib/generateCss/helpers/index.js +1 -0
  37. package/dist/src/lib/generateCss/helpers/mediaqueries/generateMediaQueries.utils.js +1 -0
  38. package/dist/src/lib/generateCss/helpers/mediaqueries/mediaQueriesHandler.utils.js +1 -0
  39. package/dist/src/lib/generateCss/helpers/other/declareCssType.utils.js +1 -0
  40. package/dist/src/lib/generateCss/helpers/other/generateGlobalStyles.utils.js +1 -0
  41. package/dist/src/lib/generateCss/helpers/pseudo/pseudoHandler.utils.js +1 -0
  42. package/dist/src/lib/generateCss/helpers/rulename/formatRuleName.utils.js +1 -0
  43. package/dist/src/lib/generateCss/helpers/utils/extractValues.utils.js +1 -0
  44. package/dist/src/lib/generateCss/helpers/utils/formattedStatKey.utils.js +1 -0
  45. package/dist/src/lib/generateCss/helpers/utils/index.js +1 -0
  46. package/dist/src/lib/generateCss/helpers/utils/processCss.utils.js +1 -0
  47. package/dist/src/lib/generateCss/helpers/utils/separateStyles.utils.js +1 -0
  48. package/dist/src/lib/generateCss/helpers/utils/validatePreviouslyExists.utils.js +1 -0
  49. package/dist/src/lib/generateCssDoc/generateCssDoc.util.js +1 -0
  50. package/dist/src/lib/generateProvider/generateProvider.utils.js +1 -0
  51. package/dist/src/lib/generateProvider/template/providerTemplate.d.ts +60 -0
  52. package/dist/src/lib/generateProvider/template/providerTemplate.js +1 -0
  53. package/dist/src/lib/generateThemeRegister/generateThemeRegister.utils.js +1 -0
  54. package/dist/src/lib/generateTools/generateTools.utils.js +1 -0
  55. package/dist/src/lib/generateTypesTools/generateTypesTools.utils.js +1 -0
  56. package/dist/src/lib/handlerForeignThemes/handlerForeignThemes.utils.js +1 -0
  57. package/dist/src/lib/index.js +1 -0
  58. package/dist/src/lib/processMediaConfig/processMediaConfig.util.js +1 -0
  59. package/dist/src/lib/readFile/readFile.utils.js +1 -0
  60. package/dist/src/lib/simplifyName/simplifyName.utils.js +1 -0
  61. package/dist/src/lib/typingStyles/index.js +1 -0
  62. package/dist/src/lib/typingStyles/typingStyles.utils.js +1 -0
  63. package/dist/src/lib/writeDoc/writeDoc.utils.js +1 -0
  64. package/package.json +80 -0
  65. package/src/app.js +176 -0
  66. package/src/constants/__tests__/compilerType.test.js +20 -0
  67. package/src/constants/__tests__/cssAdvancedSelectors.test.js +38 -0
  68. package/src/constants/__tests__/cssProps.test.js +331 -0
  69. package/src/constants/__tests__/cssPseudoClasses.test.js +48 -0
  70. package/src/constants/compilerType.js +14 -0
  71. package/src/constants/cssAdvancedSelectors.js +32 -0
  72. package/src/constants/cssProps.js +325 -0
  73. package/src/constants/cssPseudoClasses.js +138 -0
  74. package/src/constants/cssPseudoElements.js +83 -0
  75. package/src/constants/index.js +15 -0
  76. package/src/constants/resetCss.js +171 -0
  77. package/src/index.d.ts +31 -0
  78. package/src/index.js +20 -0
  79. package/src/lib/compileConfig.js +59 -0
  80. package/src/lib/compileThemes.js +118 -0
  81. package/src/lib/copyLocalFonts/copyLocalFonts.utils.js +42 -0
  82. package/src/lib/copyLocalFonts/generateCssFonts.utils.js +56 -0
  83. package/src/lib/extractDocFragment/extractDocFragment.utils.js +25 -0
  84. package/src/lib/fileExists/fileExists.utils.js +31 -0
  85. package/src/lib/generateBaseCss/generateBaseCss.utils.js +51 -0
  86. package/src/lib/generateCss/generateCSS.utils.js +42 -0
  87. package/src/lib/generateCss/helpers/advanceselector/advancedSelectorHandler.utils.js +22 -0
  88. package/src/lib/generateCss/helpers/attribute/attributeHandler.utils.js +47 -0
  89. package/src/lib/generateCss/helpers/classnames/formatClassName.utils.js +28 -0
  90. package/src/lib/generateCss/helpers/classnames/handlerRegister.utils.js +124 -0
  91. package/src/lib/generateCss/helpers/cssVars/generateVars.utils.js +73 -0
  92. package/src/lib/generateCss/helpers/dynamicValues/dynamicValues.utils.js +72 -0
  93. package/src/lib/generateCss/helpers/dynamicValues/processDynamic.utils.js +10 -0
  94. package/src/lib/generateCss/helpers/filterGenerateCss.utils.js +73 -0
  95. package/src/lib/generateCss/helpers/foreign/foreignHandler.utils.js +85 -0
  96. package/src/lib/generateCss/helpers/generateCssStyles.utils.js +249 -0
  97. package/src/lib/generateCss/helpers/index.js +53 -0
  98. package/src/lib/generateCss/helpers/mediaqueries/generateMediaQueries.utils.js +9 -0
  99. package/src/lib/generateCss/helpers/mediaqueries/mediaQueriesHandler.utils.js +181 -0
  100. package/src/lib/generateCss/helpers/other/declareCssType.utils.js +120 -0
  101. package/src/lib/generateCss/helpers/other/generateGlobalStyles.utils.js +30 -0
  102. package/src/lib/generateCss/helpers/pseudo/pseudoHandler.utils.js +56 -0
  103. package/src/lib/generateCss/helpers/rulename/formatRuleName.utils.js +163 -0
  104. package/src/lib/generateCss/helpers/utils/extractValues.utils.js +44 -0
  105. package/src/lib/generateCss/helpers/utils/formattedStatKey.utils.js +43 -0
  106. package/src/lib/generateCss/helpers/utils/index.js +15 -0
  107. package/src/lib/generateCss/helpers/utils/processCss.utils.js +93 -0
  108. package/src/lib/generateCss/helpers/utils/separateStyles.utils.js +43 -0
  109. package/src/lib/generateCss/helpers/utils/validatePreviouslyExists.utils.js +61 -0
  110. package/src/lib/generateCssDoc/generateCssDoc.util.js +47 -0
  111. package/src/lib/generateProvider/generateProvider.utils.js +283 -0
  112. package/src/lib/generateProvider/template/providerTemplate.d.ts +60 -0
  113. package/src/lib/generateProvider/template/providerTemplate.js +160 -0
  114. package/src/lib/generateThemeRegister/generateThemeRegister.utils.js +136 -0
  115. package/src/lib/generateTools/generateTools.utils.js +181 -0
  116. package/src/lib/generateTypesTools/generateTypesTools.utils.js +59 -0
  117. package/src/lib/handlerForeignThemes/handlerForeignThemes.utils.js +96 -0
  118. package/src/lib/index.js +61 -0
  119. package/src/lib/processMediaConfig/processMediaConfig.util.js +32 -0
  120. package/src/lib/readFile/readFile.utils.js +110 -0
  121. package/src/lib/simplifyName/__tests__/simplifyName.utils.test.js +87 -0
  122. package/src/lib/simplifyName/simplifyName.utils.js +28 -0
  123. package/src/lib/typingStyles/index.js +3 -0
  124. package/src/lib/typingStyles/typingStyles.utils.js +144 -0
  125. package/src/lib/writeDoc/writeDoc.utils.js +30 -0
@@ -0,0 +1,144 @@
1
+ /**
2
+ * TypeScript Definition Generator for Bernova CSS Framework
3
+ *
4
+ * Creates comprehensive TypeScript interfaces for CSS-in-JS objects.
5
+ * Generates type definitions for CSS properties, pseudo-classes, selectors, and media queries.
6
+ */
7
+
8
+ const {
9
+ cssProps,
10
+ cssPseudoClasses,
11
+ cssPseudoElements,
12
+ cssAdvancedSelectors,
13
+ } = require('../../constants');
14
+
15
+ /**
16
+ * Generates TypeScript interface properties from an object's keys
17
+ * Creates optional properties with specified type for each key
18
+ *
19
+ * @param {Object} object - Object to extract keys from
20
+ * @param {string} type - TypeScript type to assign to each property
21
+ * @returns {string} TypeScript interface properties
22
+ */
23
+ const generateKeysType = ({ object, type }) => {
24
+ return Object.keys(object).reduce((acc, prop) => {
25
+ acc += ` ${prop}?: ${type};\n`;
26
+ return acc;
27
+ }, '');
28
+ };
29
+
30
+ /**
31
+ * Generates TypeScript union types for advanced CSS selectors
32
+ * Creates optional selector properties with target specification
33
+ *
34
+ * @param {Object} advancedSelectors - Advanced selectors object
35
+ * @param {string} type - TypeScript type for selector values
36
+ * @returns {string} TypeScript union type definition
37
+ */
38
+ const generateAdvancedSelectorsType = ({ advancedSelectors, type }) => {
39
+ return Object.keys(advancedSelectors).reduce((acc, selector, idx) => {
40
+ const or = idx > 0 ? ' |' : '';
41
+ acc += `${or} { ${selector}?: ${type}; }\n`;
42
+ return acc;
43
+ }, '');
44
+ };
45
+
46
+ /**
47
+ * Generates TypeScript definitions for media query configuration
48
+ * Creates responsive breakpoint properties from media config
49
+ *
50
+ * @param {Array} mediaConfig - Media queries configuration array
51
+ * @param {string} type - TypeScript type for media query values
52
+ * @returns {string} Media query TypeScript definitions
53
+ */
54
+ const generateMediaTypes = ({ mediaConfig, type }) => {
55
+ if (!mediaConfig || !Array.isArray(mediaConfig)) {
56
+ return '';
57
+ }
58
+ return mediaConfig.reduce((acc, media) => {
59
+ acc += ` '${media.name}'?: ${type};\n`;
60
+ return acc;
61
+ }, '');
62
+ };
63
+
64
+ const typingStyles = ({ mediaConfig }) => {
65
+ const cssLibPropsName = 'CssLibPropsType'; //? <-- main type name
66
+ const hasMediaConfig = Array.isArray(mediaConfig) && mediaConfig.length > 0;
67
+ //? bases
68
+ //* bases names
69
+ const cssPropsName = 'CssPropsType';
70
+ const cssPseudoClassesName = 'CssPseudoClassesType';
71
+ const cssPseudoElementsName = 'CssPseudoElementsType';
72
+ const cssAdvancedSelectorsName = 'CssAdvancedSelectorsType';
73
+ const cssMediaQueriesName = 'CssMediaQueriesType';
74
+ const cssForeignName = 'CssForeignType';
75
+ //* bases types
76
+ const cssPropsWithTarget = `${cssLibPropsName} & { $target?: string; }`;
77
+ const cssPropsType = `export type ${cssPropsName} = {\n${generateKeysType({
78
+ object: cssProps,
79
+ type: 'string',
80
+ })}}\n`;
81
+ const cssPseudoClassesType = `export type ${cssPseudoClassesName} = {\n${generateKeysType(
82
+ {
83
+ object: cssPseudoClasses,
84
+ type: `${cssPseudoClassesName} | ${cssPseudoElementsName} | ${cssPropsWithTarget}`,
85
+ }
86
+ )}}\n`;
87
+ const cssPseudoElementsType = `export type ${cssPseudoElementsName} = {\n${generateKeysType(
88
+ {
89
+ object: cssPseudoElements,
90
+ type: `${cssPseudoElementsName} | ${cssPseudoClassesName} | ${cssLibPropsName}`,
91
+ }
92
+ )}}\n`;
93
+ const cssAdvancedSelectorsType = `export type ${cssAdvancedSelectorsName} = \n${generateAdvancedSelectorsType(
94
+ {
95
+ advancedSelectors: cssAdvancedSelectors,
96
+ type: cssPropsWithTarget,
97
+ }
98
+ )}\n`;
99
+ const mediaQueriesType = `export type ${cssMediaQueriesName} = ${cssPropsName} & { $type?: string; $values?: { [key: string]: string }; }\n`;
100
+ const foreignType = `export type ${cssForeignName} = { [key:string]: { component: object; variant?: string | unknown; name: string; } }\n`;
101
+ ///? lib
102
+ //* lib names
103
+ const cssLibPseudoClassesName = 'CssLibPseudoClassesType';
104
+ const cssLibPseudoElementsName = 'CssLibPseudoElementsType';
105
+ const cssLibAdvancedSelectorsName = 'CssLibAdvancedSelectorsType';
106
+ const cssLibAttributesName = 'CssLibAttributesType';
107
+ const cssLibMediaQueriesName = 'CssLibMediaQueriesType';
108
+ const cssForeignLibName = 'CssForeignLibType';
109
+ const cssDynamicValuesName = 'CssDynamicValuesType';
110
+ //* lib types
111
+ const libProps = `export type ${cssLibPropsName} = ${cssPropsName} & ${cssLibPseudoClassesName} & ${cssLibPseudoElementsName} & ${cssLibAdvancedSelectorsName} & ${cssDynamicValuesName} & ${cssLibAttributesName}${
112
+ hasMediaConfig ? ` & ${cssLibMediaQueriesName}` : ''
113
+ } & ${cssForeignLibName};\n`;
114
+ const pseudoClasses = `export type ${cssLibPseudoClassesName} = {\n $pseudoClasses?: ${cssPseudoClassesName} \n}\n`;
115
+ const pseudoElements = `export type ${cssLibPseudoElementsName} = {\n $pseudoElements?: ${cssPseudoElementsName} \n}\n`;
116
+ const advancedSelectors = `export type ${cssLibAdvancedSelectorsName} = {\n $advancedSelectors?: ${cssAdvancedSelectorsName}[] \n}\n`;
117
+ const attributes = `export type ${cssLibAttributesName} = { $attributes?: { [key: string]: ${cssLibPropsName} } | { [key: string]: { [key: string]: ${cssLibPropsName} } } }\n`;
118
+ const mediaQueries = hasMediaConfig
119
+ ? `export type ${cssLibMediaQueriesName} = {\n $mediaQueries?: {\n [key: string]: ${cssMediaQueriesName}\n } | {\n${generateMediaTypes(
120
+ { mediaConfig, type: cssLibPropsName }
121
+ )} }\n}\n`
122
+ : '';
123
+ const foreign = `export type ${cssForeignLibName} = {\n $foreign?: ${cssForeignName} \n}\n`;
124
+ const dynamicValues = `export type ${cssDynamicValuesName} = {\n $dynamicValues?: string[]; \n}\n`;
125
+
126
+ return `
127
+ ${cssPropsType}
128
+ ${cssPseudoClassesType}
129
+ ${cssPseudoElementsType}
130
+ ${cssAdvancedSelectorsType}
131
+ ${mediaQueriesType}
132
+ ${foreignType}
133
+ ${pseudoClasses}
134
+ ${pseudoElements}
135
+ ${dynamicValues}
136
+ ${advancedSelectors}
137
+ ${attributes}
138
+ ${mediaQueries}
139
+ ${foreign}
140
+ ${libProps}
141
+ `;
142
+ };
143
+
144
+ module.exports = { typingStyles };
@@ -0,0 +1,30 @@
1
+ const path = require('path');
2
+ const fs = require('fs/promises');
3
+
4
+ /**
5
+ * Writes CSS content to a specified directory.
6
+ * Ensures that the directory exists before writing the file.
7
+ *
8
+ * @param {string} dir - The directory where the CSS file will be written.
9
+ * @param {string | Promise<string>} source - The CSS content to write.
10
+ */
11
+ const writeDoc = async (dir, source, docName) => {
12
+ const { default: ora } = await import('ora');
13
+ const spinner = ora(`Writing ${docName} to ${dir}...`).start();
14
+ try {
15
+ // Ensure the directory exists
16
+ await fs.mkdir(path.dirname(dir), { recursive: true });
17
+
18
+ // Resolve the source if it's a Promise
19
+ const cssContent = await Promise.resolve(source);
20
+
21
+ // Write the CSS content to the file
22
+ await fs.writeFile(dir, cssContent);
23
+ spinner.succeed(`${docName} successfully written to ${dir}`);
24
+ } catch (err) {
25
+ spinner.fail(`Error writing ${docName} to ${dir}`);
26
+ console.error(err);
27
+ }
28
+ };
29
+
30
+ module.exports = { writeDoc };