@awesomeness-js/server 1.1.7 → 1.1.9

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 (62) hide show
  1. package/package.json +1 -1
  2. package/src/componentDependencies.js +24 -0
  3. package/src/koa/routeRequest.js +87 -26
  4. package/example-site/example.awesomenessjs.com/components/example/index.js +0 -3
  5. package/example-site/example.awesomenessjs.com/components/notCommonExample/_.css +0 -1
  6. package/example-site/example.awesomenessjs.com/components/notCommonExample/index.js +0 -3
  7. package/ui/README.md +0 -438
  8. package/ui/awesomeness-ui.instructions.md +0 -156
  9. package/ui/build.js +0 -119
  10. package/ui/commonComponent.test.js +0 -27
  11. package/ui/components/blogPost/all.css +0 -371
  12. package/ui/components/blogPost/headerImage.js +0 -153
  13. package/ui/components/blogPost/index.js +0 -45
  14. package/ui/components/blogPost/marked.js +0 -74
  15. package/ui/components/blogPost/md.js +0 -73
  16. package/ui/components/blogPost/parseAwesomeness.jQuery.js +0 -47
  17. package/ui/components/blogPost/readme.md +0 -8
  18. package/ui/components/colors/README.md +0 -65
  19. package/ui/components/colors/dynamic.css +0 -1884
  20. package/ui/components/colors/dynamic.css.js +0 -135
  21. package/ui/components/colors/dynamic.css.php +0 -79
  22. package/ui/components/colors/example.js +0 -133
  23. package/ui/components/colors/index.js +0 -65
  24. package/ui/components/colors/map.js +0 -13
  25. package/ui/components/colors/random.js +0 -17
  26. package/ui/components/colors/tailwind-colors.css +0 -247
  27. package/ui/components/insertIntoList/insertIntoList.jquery.js +0 -150
  28. package/ui/components/statusPage/index.css +0 -120
  29. package/ui/components/statusPage/index.js +0 -39
  30. package/ui/components/tag/category.js +0 -8
  31. package/ui/components/tag/index.js +0 -33
  32. package/ui/components/tag/list.js +0 -42
  33. package/ui/components/tag/map.js +0 -64
  34. package/ui/components/tag/tagMap.css +0 -60
  35. package/ui/components/tag/tags.css +0 -20
  36. package/ui/core/css/_normalize.css +0 -57
  37. package/ui/core/css/dynamic/flex.js +0 -36
  38. package/ui/core/css/dynamic/grid.js +0 -185
  39. package/ui/core/css/dynamic/shortcuts.js +0 -48
  40. package/ui/core/css/dynamic/spacing.js +0 -61
  41. package/ui/core/css/dynamic/text.js +0 -80
  42. package/ui/core/css/dynamic/width.js +0 -75
  43. package/ui/core/css/dynamic.js +0 -40
  44. package/ui/core/js/app/api.js +0 -143
  45. package/ui/core/js/app/init.js +0 -88
  46. package/ui/core/js/app/initDarkMode.js +0 -26
  47. package/ui/core/js/app/initialScroll.js +0 -28
  48. package/ui/core/js/app/meta/update/components.js +0 -65
  49. package/ui/core/js/app/meta/update/pages.js +0 -86
  50. package/ui/core/js/app/metaUpdates.js +0 -10
  51. package/ui/core/js/app/page.js +0 -319
  52. package/ui/core/js/app/resize.js +0 -52
  53. package/ui/core/js/app/state/back.js +0 -16
  54. package/ui/core/js/app/state/create.js +0 -50
  55. package/ui/core/js/app/state/get.js +0 -5
  56. package/ui/core/js/app/state/init.js +0 -25
  57. package/ui/core/js/app.js +0 -41
  58. package/ui/core/js/jquery-3.7.1.min.js +0 -2
  59. package/ui/core/public/app.css +0 -1
  60. package/ui/core/public/app.js +0 -975
  61. package/ui/core/public/favicon.ico +0 -0
  62. package/ui/core/public/index.html +0 -40
@@ -1,156 +0,0 @@
1
- ---
2
- name: "Awesomeness UI HTML Instructions"
3
- description: "Instructions for generating HTML using the Awesomeness UI utility-first CSS system."
4
- applyTo: "awesomeness-ui/components/**/*.js"
5
- ---
6
- # HTML Generation with Custom Utility Classes
7
-
8
- You are generating HTML using a custom utility-first CSS system (similar to Tailwind CSS). The system provides classes for layout, spacing, positioning, text, alignment, and responsive design.
9
-
10
- ---
11
-
12
- ## 📦 General Guidelines
13
-
14
- - **Class Structure:** Use utility classes directly in `class` attributes. Do **not** write raw CSS or `<style>` tags.
15
- - **Responsiveness:** Wrap responsive styles in containers with `.app-size-{size}`:
16
- - `xl` = extra-large
17
- - `d` = desktop
18
- - `t` = tablet
19
- - `p` = phone
20
-
21
- ---
22
-
23
- ## 🧱 Utility Class Reference (Quick)
24
-
25
- ### ✅ Grid & Layout
26
- - `.grid`, `.grid-{n}`, `.grid-rows-{n}`
27
- - `.span-{n}`, `.row-span-{n}`, `.start-{n}`, `.end-{n}`
28
- - `.gap-{px}`, `.gap-x-{px}`, `.gap-y-{px}`
29
-
30
- ### ✅ Alignment
31
- - Justify: `.justify-center`, `.justify-between`, etc.
32
- - Align: `.align-start`, `.align-stretch`, etc.
33
- - Self: `.justify-self-center`, `.grid.center`, etc.
34
-
35
- ### ✅ Spacing
36
- - Margin: `.m{px}`, `.mt{px}`, `.mlr{px}`, etc.
37
- - Padding: `.p{px}`, `.ptb{px}`, `.pr{px}`, etc.
38
-
39
- ### ✅ Sizing
40
- - `.width{percent}`, `.height{percent}`
41
- - `.width-{px}`, `.max-height-{px}`, `.span{1-12}`
42
-
43
- ### ✅ Text
44
- - Align: `.text-center`, `.text-right`
45
- - Weight: `.text-300`, `.text-900`
46
- - Size: `.text-xs`, `.text-xl`, `.text-xxxl`
47
-
48
- ### ✅ Position
49
- - `.absolute`, `.relative`, `.sticky`, `.fl`, `.fr`
50
-
51
- ### ✅ Responsive Variants
52
- All classes may have a `-{size}` variant scoped under `.app-size-{size}` container:
53
- ```html
54
- <div class="app-size-p">
55
- <div class="text-center-p p20-p">Mobile Friendly</div>
56
- </div>
57
- ```
58
-
59
-
60
- ---
61
- ## 🎨 Dynamic Color Utilities
62
-
63
- This system auto-generates utility classes for applying color styles using predefined CSS variables (`--colorName-shade`), supporting background, border, and text colors.
64
-
65
- ### ✅ Class Patterns
66
-
67
- Each utility follows this pattern:
68
-
69
- ```
70
- .{prefix}-{color}-{shade}
71
- .{prefix}-{color}-{shade}--hover:hover
72
- ```
73
-
74
- Where:
75
- - `{prefix}` = `bg`, `border`, or `text`
76
- - `{color}` = one of the supported color names (see below)
77
- - `{shade}` = one of the supported shades (e.g., `100`, `500`, `950`)
78
-
79
- ### ✨ Examples
80
-
81
- ```html
82
- <div class="bg-blue-500 text-white border-blue-700">Primary</div>
83
- <div class="bg-gray-100--hover hoverable-box">Hover Me</div>
84
- ```
85
-
86
- ### 🎨 Available Color Names
87
-
88
- ```
89
- red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky,
90
- blue, indigo, violet, purple, fuchsia, pink, rose,
91
- slate, gray, zinc, neutral, stone
92
- ```
93
-
94
- ### 🌗 Shades
95
-
96
- ```
97
- 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950
98
- ```
99
-
100
- ### 🖤 Black and White
101
-
102
- ```html
103
- <div class="bg-black text-white border-white">Dark Card</div>
104
- ```
105
-
106
- ### 🧠 Notes
107
-
108
- - All colors use CSS variables, such as `--blue-500`, so you can theme or dark-mode easily.
109
- - `--hover` suffix variants enable hover state styling directly via class names.
110
-
111
-
112
- ### Example Prompt
113
-
114
- Generate HTML for a responsive product grid. It should:
115
-
116
- Display as 4 cards per row on desktop, 2 per row on tablet, and 1 per row on phone
117
-
118
- Each card includes:
119
-
120
- Product image
121
-
122
- Title (bold, large text)
123
-
124
- Description (smaller gray text)
125
-
126
- Price (medium weight, prominent color)
127
-
128
- “Add to Cart” button with hover effect
129
-
130
- Apply appropriate spacing, alignment, and sizing
131
-
132
- ### Example Response
133
-
134
- ```html
135
- <div class="grid grid-1-p grid-2-t grid-4-d gap-20 p40">
136
- <!-- Card -->
137
- <div class="bg-white border-gray-200 p20">
138
- <img src="https://via.placeholder.com/300x200" class="width-100 mb10" alt="Product">
139
- <div class="text-xl text-900 mb5">Product Title</div>
140
- <div class="text-sm text-gray-600 mb10">Short product description goes here.</div>
141
- <div class="text-md text-blue-700 text-500 mb15">$29.99</div>
142
- <button class="bg-blue-500 text-white p10 bg-blue-600--hover">Add to Cart</button>
143
- </div>
144
-
145
- <!-- Repeat as needed -->
146
- <div class="bg-white border-gray-200 p20">
147
- <img src="https://via.placeholder.com/300x200" class="width-100 mb10" alt="Product">
148
- <div class="text-xl text-900 mb5">Another Product</div>
149
- <div class="text-sm text-gray-600 mb10">Another short description.</div>
150
- <div class="text-md text-blue-700 text-500 mb15">$39.99</div>
151
- <button class="bg-blue-500 text-white p10 bg-blue-600--hover">Add to Cart</button>
152
- </div>
153
-
154
- <!-- Add more cards as needed -->
155
- </div>
156
- ```
package/ui/build.js DELETED
@@ -1,119 +0,0 @@
1
- import { writeFileSync, readFileSync } from 'fs';
2
- import { join } from 'path';
3
- import { build, getAllFiles, combineFiles } from '@awesomeness-js/utils';
4
- import { dynamicCSS } from './core/css/dynamic.js';
5
- import { fileURLToPath } from 'url';
6
- import { dirname } from 'path';
7
- import cssnano from 'cssnano';
8
- import postcss from 'postcss';
9
-
10
- async function minifyCSS(cssString) {
11
-
12
- try {
13
-
14
- // Process the CSS using PostCSS and cssnano plugin
15
- const result = await postcss([ cssnano ]).process(cssString, { from: undefined });
16
-
17
- return result.css; // The minified CSS
18
-
19
- } catch (error) {
20
-
21
- console.error('Error minifying CSS:', error);
22
-
23
- return null;
24
-
25
- }
26
-
27
- }
28
-
29
-
30
- async function buildUI(){
31
-
32
- const __filename = fileURLToPath(import.meta.url);
33
- const __dirname = dirname(__filename);
34
- const coreDir = join(__dirname, 'core');
35
-
36
-
37
- await build({
38
- src: './awesomeness-ui/components',
39
- dest: './ui-intellisense.js',
40
- dts: false,
41
- fileTypes: [ 'js' ],
42
- ignore: [
43
- '*.iif.js',
44
- '*.jquery.js',
45
- '*.jQuery.js',
46
- '*.test.js',
47
- '*.css',
48
- '*.css.js'
49
- ]
50
- });
51
-
52
-
53
- const cssBuilds = getAllFiles('.', {
54
- dir: './awesomeness-ui/components',
55
- fileTypes: [
56
- 'css.js'
57
- ]
58
- });
59
-
60
-
61
- if(cssBuilds.length > 0){
62
-
63
- await Promise.all(cssBuilds.map(async (file) => {
64
-
65
- try {
66
-
67
- const { cssBuild } = await import(`../${file}`);
68
-
69
- await cssBuild();
70
-
71
- } catch (e) {
72
-
73
- console.error(`Error importing CSS build file: ${file}`, e);
74
-
75
- return;
76
-
77
- }
78
-
79
-
80
- }));
81
-
82
- }
83
-
84
-
85
- // must be done in order
86
- let js = `
87
- /**
88
- * This file is auto-generated by Awesomeness UI build script.
89
- * It consolidates UI functions for use in the application.
90
- * Do not edit manually.
91
- */
92
- window.ui = {};
93
-
94
- `;
95
-
96
- js += readFileSync(join(coreDir, 'js', 'jquery-3.7.1.min.js'), 'utf8');
97
- js += "\n " + readFileSync(join(coreDir, 'js', 'app.js'), 'utf8');
98
- js += "\n " + combineFiles(join(coreDir, 'js', 'app'), 'js');
99
-
100
- writeFileSync(join(coreDir, 'public', 'app.js'), js);
101
-
102
- let css = "";
103
-
104
- css += combineFiles(join(coreDir, 'css'), 'css');
105
-
106
- css += "\n";
107
-
108
- // dynamic css
109
- css += dynamicCSS();
110
-
111
- const cssMini = await minifyCSS(css);
112
-
113
- writeFileSync(join(coreDir, 'public', 'app.css'), cssMini);
114
-
115
- return true;
116
-
117
- }
118
-
119
- export default buildUI;
@@ -1,27 +0,0 @@
1
- import componentDependencies from '../src/componentDependencies.js';
2
- import { expect, test } from 'vitest';
3
-
4
- test('component test', () => {
5
-
6
- const test = componentDependencies([ '_example' ],{
7
- showDetails: true
8
- });
9
-
10
- expect(test._example.js).toBeDefined();
11
- expect(test._example.js).toContain('ui._example');
12
- expect(test._example.css).toBeDefined();
13
- expect(test._example.js_details).toBeDefined();
14
- expect(test._example.css_details).toBeDefined();
15
-
16
- const test2 = componentDependencies([ 'notCommonExample' ],{
17
- showDetails: false,
18
- customLocation: `./sites/demo.awesomenessjs.com/components`,
19
- });
20
-
21
- expect(test2.notCommonExample.js).toBeDefined();
22
- expect(test2.notCommonExample.js).toContain('ui.notCommonExample');
23
- expect(test2.notCommonExample.css).toBeDefined();
24
- expect(test2.notCommonExample.js_details).toBeUndefined();
25
- expect(test2.notCommonExample.css_details).toBeUndefined();
26
-
27
- });
@@ -1,371 +0,0 @@
1
- .blogPost {
2
- display: grid;
3
- grid-template-columns: 1fr; /* single column */
4
- justify-items: stretch; /* <— critical */
5
- align-items: stretch; /* optional */
6
- width: 100%;
7
- margin-inline: auto; /* center the 800px box */
8
- min-width: 0; /* avoid overflow issues */
9
- }
10
-
11
- .blogPost h2 {
12
- text-transform: inherit;
13
- font-size: 1.5em;
14
- margin-top: 50px;
15
- }
16
-
17
- .blogPost .break {
18
- width: 100%;
19
- display: block;
20
- }
21
-
22
-
23
- .blogPost h3 {
24
- font-weight: 300;
25
- text-transform: inherit;
26
- letter-spacing: 1.3px;
27
- text-align: left;
28
- color: #777;
29
- margin-top: 0px;
30
- font-size: 1.1em;
31
- margin-bottom: 20px;
32
- }
33
-
34
- .blogPost p {
35
- font-size: 1.2em;
36
- line-height: 2em;
37
- color: #404040;
38
- }
39
-
40
- .blogPost blockquote {
41
- background-color: #e6e6e6;
42
- margin: 0;
43
- padding: 15px 25px;
44
- color: #343434;
45
- border-radius: 10px;
46
- }
47
-
48
-
49
- .blogPost blockquote p {
50
- font-size: 1.1em;
51
- line-height: 1.8 em;
52
- margin: 5px;
53
- }
54
-
55
- .blogPost a {
56
- color: #0a99ff;
57
- text-decoration: none;
58
- font-weight: 500;
59
- cursor: pointer;
60
- }
61
-
62
- .blogPost a:hover {
63
- text-decoration: underline;
64
- }
65
-
66
- .blogPost table {
67
- width: 100%;
68
- border-collapse: collapse;
69
- margin: 25px 0;
70
- font-size: 1em;
71
- box-shadow: 0 0 20px rgba(0, 0, 0, 0.1);
72
- }
73
-
74
- .blogPost tr {
75
- margin-bottom: 15px;
76
- }
77
-
78
- .blogPost th {
79
- text-align: left;
80
- padding: 13px 15px;
81
- background-color: #dedede;
82
- color: #333;
83
- font-weight: 600;
84
- }
85
-
86
- .blogPost th:first-child {
87
- border-top-left-radius: 6px;
88
- }
89
-
90
- .blogPost th:last-child {
91
- border-top-right-radius: 6px;
92
- }
93
-
94
- .blogPost td {
95
- padding: 13px 15px;
96
- border-bottom: 1px solid #e6e6e6;
97
- color: #555;
98
- font-weight: 400;
99
- }
100
-
101
- .blogPost ol,
102
- .blogPost ul {
103
- margin: 20px 0;
104
- padding-left: 1.5em;
105
- font-size: 1em;
106
- color: #555;
107
- line-height: 1.6;
108
- }
109
-
110
- /* Ordered list numbers */
111
- .blogPost ol {
112
- list-style-type: decimal;
113
- }
114
-
115
- /* Unordered list bullets */
116
- .blogPost ul {
117
- list-style-type: disc;
118
- }
119
-
120
- /* List items */
121
- .blogPost li {
122
- margin-bottom: 8px;
123
- }
124
-
125
- /* List items */
126
- .blogPost ul li ul {
127
- margin-top: 5px;
128
- }
129
-
130
- /* List items */
131
- .blogPost ul li ul li {
132
- margin-bottom: 8px;
133
- list-style: circle;
134
- font-size: 0.9em;
135
- margin-top: 0px;
136
- }
137
-
138
- /* Nested lists get lighter style */
139
- .blogPost ol ol,
140
- .blogPost ul ul {
141
- margin: 20px 0;
142
- font-size: 1em;
143
- color: #555;
144
- line-height: 1.6;
145
- font-size: 1.1em;
146
- padding-left: 30px;
147
- }
148
-
149
- .blogPost ol li::marker {
150
- font-weight: 600;
151
- /* optional: make numbers bolder */
152
- padding-right: 10px;
153
- /* adds space after number */
154
- }
155
-
156
- .blogPost-header-image {
157
- position: relative;
158
- min-height: 500px;
159
- display: flex;
160
- justify-content: center;
161
- align-items: center;
162
- flex-direction: column;
163
- text-align: center;
164
- color: var(--white);
165
- background-size: cover;
166
- background-position: center;
167
- overflow: hidden; /* ensures overlay stays contained */
168
- padding-bottom: 5%;
169
- margin-bottom: 25px;
170
- min-height: 700px;
171
- }
172
-
173
- .app-size-p .blogPost-header-image { min-height: 400px; }
174
-
175
- .app-size-d .blogPost-header-image { min-height: 800px; }
176
- .app-size-xl .blogPost-header-image { min-height: 800px; }
177
-
178
- .blogPost-header-image::before {
179
- content: "";
180
- position: absolute;
181
- top: 0;
182
- left: 0;
183
- width: 100%;
184
- height: 100%;
185
- background: linear-gradient(
186
- rgba(0, 0, 0, 0.0) 0%,
187
- rgba(0, 0, 0, 0.4) 35%,
188
- rgba(0, 0, 0, 0.4) 65%,
189
- rgba(0, 0, 0, 0.0) 100%
190
- );
191
- z-index: 0;
192
- }
193
-
194
-
195
- .blogPost-header-image > * {
196
- position: relative;
197
- z-index: 1; /* keeps text above the dark overlay */
198
- }
199
-
200
- .blogPost-title{
201
- font-weight: 700;
202
- font-size: 3em;
203
- margin-bottom: 10px;
204
- padding: 0px 50px;
205
- }
206
-
207
- .blogPost-subTitle{
208
- font-weight: 300;
209
- font-size: 1.6em;
210
- margin-bottom: 15px;
211
- text-transform: none;
212
- color: var(--white);
213
- padding: 0px 50px;
214
- }
215
-
216
- .app-size-p .blogPost-subTitle{
217
- font-size: 1.2em;
218
- }
219
-
220
-
221
- .blogPost-catDateTime {
222
- display: flex;
223
- align-items: center;
224
- justify-content: flex-start;
225
- gap: 10px;
226
- font-size: 1.05em;
227
- color: var(--stone-100);
228
- margin-bottom: 20px;
229
- letter-spacing: 1px;
230
- }
231
-
232
- .blogPost-catDateTime > * {
233
- display: inline;
234
- }
235
-
236
- .blogPost-category {
237
- cursor: pointer;
238
- text-transform: capitalize;
239
- }
240
-
241
- .app-size-p .blogPost-catDateTime {
242
- flex-direction: column;
243
- margin-top: 45px;
244
- }
245
-
246
-
247
- .app-size-p .blogPost-catDateTime > * {
248
- display: flex;
249
- }
250
-
251
- .blogPost-category:hover {
252
- font-weight: 500;
253
- }
254
-
255
- .blogPost-catDateTime-separator {
256
- width: 7px;
257
- height: 7px;
258
- border-radius: 50%;
259
- background-color: var(--stone-100);
260
- flex-shrink: 0;
261
- margin: 0px 5px;
262
- }
263
-
264
- .app-size-p .blogPost-catDateTime-separator {
265
- display: none;
266
- }
267
-
268
- .blogPost-author {
269
- display: flex;
270
- align-items: center; /* vertically centers image and text */
271
- gap: 10px; /* replaces margin-right for cleaner spacing */
272
- font-size: 1em;
273
- color: var(--white);
274
- font-weight: 300;
275
- margin-top: 25px;
276
- padding-bottom: 40px;
277
- }
278
-
279
- .app-size-p .blogPost-author {
280
- flex-direction: column;
281
- padding-bottom: 100px;
282
- }
283
-
284
- .app-size-p .blogPost-author-name {
285
- display: block;
286
- margin-bottom: 10px;
287
- }
288
-
289
- .blogPost-author-name {
290
- font-weight: 500;
291
- margin-right: 10px;
292
- font-size: 1.1em;
293
- letter-spacing: 0.03em;
294
- }
295
- .blogPost-author-image {
296
- margin-right: 10px;
297
- width: 40px;
298
- height: 40px;
299
- border-radius: 50%;
300
- background-color: var(--white);
301
- background-size: cover;
302
- background-position: center;
303
- flex-shrink: 0; /* keeps it from squishing */
304
- }
305
-
306
- .blogPost-next-reads h2,
307
- .blogPost-next-reads h3 {
308
- margin-bottom: 10px;
309
- }
310
-
311
- .blogPost-next-reads li {
312
- border: solid 1px var(--stone-200);
313
- border-radius: 5px;
314
- cursor: pointer;
315
- }
316
-
317
- .blogPost-next-reads li:hover {
318
- background-color: var(--blue-100);
319
- border-color: var(--blue-300);
320
- font-weight: 500;
321
- }
322
-
323
- .blogPost-next-reads li a {
324
- font-weight: 400;
325
- display: block;
326
- padding: 10px;
327
- }
328
-
329
- .blogPost-next-reads li a:hover,
330
- .blogPost-tags-list .blogPost-tag:hover a {
331
- text-decoration: none;
332
- }
333
-
334
- .blogPost-next-reads ul {
335
- list-style: none;
336
- margin: 0px;
337
- padding: 0px;
338
- }
339
-
340
-
341
- .blogPost-tags-list {
342
- position: absolute;
343
- bottom: 25px;
344
- font-size: 0.8em;
345
- display: flex;
346
- align-items: center;
347
- gap: 8px;
348
- flex-wrap: wrap;
349
- justify-content: center;
350
- padding: 0px 20px;
351
- }
352
-
353
- .blogPost-tag {
354
- border: solid 1px var(--stone-200);
355
- cursor: pointer;
356
- padding: 5px 10px;
357
- white-space: nowrap;
358
- transition: all 200ms;
359
- }
360
-
361
- .blogPost-tag:hover {
362
- color: var(--black);
363
- background-color: var(--white);
364
- }
365
-
366
- .blogPost img {
367
- max-width: 100%;
368
- min-width: 100%;
369
- border-radius: 8px;
370
- margin: 20px 0px;
371
- }