@asor-studio/asor-cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/LICENSE +24 -0
  2. package/README.md +293 -0
  3. package/cli-command/generate-atom.js +2 -0
  4. package/cli-command/generate-molecule.js +2 -0
  5. package/cli-command/generate-organism.js +2 -0
  6. package/cli-command/generate-page.js +2 -0
  7. package/cli-command/setup-asor-core.js +2 -0
  8. package/cli.js +2 -0
  9. package/gen-template/generate-atom/atom.html.template +26 -0
  10. package/gen-template/generate-atom/atom.ts.template +69 -0
  11. package/gen-template/generate-molecule/molecule.html.template +41 -0
  12. package/gen-template/generate-molecule/molecule.ts.template +69 -0
  13. package/gen-template/generate-organism/organism.html.template +41 -0
  14. package/gen-template/generate-organism/organism.ts.template +69 -0
  15. package/gen-template/generate-page/page.component.html.template +63 -0
  16. package/gen-template/generate-page/page.component.ts.template +56 -0
  17. package/gen-template/setup-asor-core/src/app/app.config.ts.template +46 -0
  18. package/gen-template/setup-asor-core/src/app/app.routes.ts.template +40 -0
  19. package/gen-template/setup-asor-core/src/app/config/app-asor.config.ts.template +64 -0
  20. package/gen-template/setup-asor-core/src/app/config/app-cache.config.ts.template +26 -0
  21. package/gen-template/setup-asor-core/src/app/config/app-state.config.ts.template +26 -0
  22. package/gen-template/setup-asor-core/src/app/config/app.config.ts.template +62 -0
  23. package/gen-template/setup-asor-core/src/app/config/interfaces/app-state.interfaces.ts.template +5 -0
  24. package/gen-template/setup-asor-core/src/app/molecules/molecule-sample-widget/sample-widget.molecule.html.template +84 -0
  25. package/gen-template/setup-asor-core/src/app/molecules/molecule-sample-widget/sample-widget.molecule.ts.template +56 -0
  26. package/gen-template/setup-asor-core/src/app/pages/page-home/asor-logo.ts.template +1 -0
  27. package/gen-template/setup-asor-core/src/app/pages/page-home/home.component.html.template +521 -0
  28. package/gen-template/setup-asor-core/src/app/pages/page-home/home.component.ts.template +99 -0
  29. package/gen-template/setup-asor-core/src/assets/i18n/app/molecule-sample-widget/en.json.template +7 -0
  30. package/gen-template/setup-asor-core/src/assets/i18n/app/molecule-sample-widget/it.json.template +7 -0
  31. package/gen-template/setup-asor-core/src/assets/i18n/app/page-home/en.json.template +19 -0
  32. package/gen-template/setup-asor-core/src/assets/i18n/app/page-home/it.json.template +19 -0
  33. package/package.json +31 -0
@@ -0,0 +1 @@
1
+ export const ASOR_CORE_LOGO_BASE64 = 'data:image/png;base64,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';
@@ -0,0 +1,521 @@
1
+ <style>
2
+ /*
3
+ * IMPORTANT:
4
+ * This CSS block is only a minimal base generated by the template.
5
+ * In a real project, styles should be moved to a dedicated file
6
+ * based on the standard chosen by the team: CSS, SCSS, Sass, Less,
7
+ * or handled through global styles, utility classes, a design system, or inline styles.
8
+ */
9
+ .home-page {
10
+ display: grid;
11
+ gap: 1rem;
12
+ min-height: 100%;
13
+ padding: clamp(1.25rem, 2.5vw, 2.5rem);
14
+ justify-items: center;
15
+ color: #111827;
16
+ background:
17
+ radial-gradient(circle at top left, rgba(37, 99, 235, 0.14), transparent 24%),
18
+ radial-gradient(circle at 90% 10%, rgba(14, 165, 233, 0.14), transparent 28%),
19
+ linear-gradient(180deg, #fbfdff, #f7fbff 55%, #eff6ff);
20
+ }
21
+
22
+ .home-page__hero,
23
+ .home-page__panel {
24
+ border: 1px solid rgba(226, 232, 240, 0.9);
25
+ border-radius: 1.75rem;
26
+ background: rgba(255, 255, 255, 0.88);
27
+ box-shadow: 0 1.5rem 3rem rgba(15, 23, 42, 0.06);
28
+ }
29
+
30
+ .home-page__hero {
31
+ display: grid;
32
+ gap: 1.5rem;
33
+ padding: clamp(1.25rem, 2.5vw, 2.25rem);
34
+ overflow: visible;
35
+ position: relative;
36
+ }
37
+
38
+ .home-page__hero::before {
39
+ content: '';
40
+ position: absolute;
41
+ inset: auto auto -2rem -2rem;
42
+ width: 12rem;
43
+ height: 12rem;
44
+ border-radius: 50%;
45
+ background: radial-gradient(circle, rgba(14, 165, 233, 0.14), transparent 68%);
46
+ pointer-events: none;
47
+ }
48
+
49
+ .home-page__grid {
50
+ display: grid;
51
+ gap: clamp(1.25rem, 3vw, 2.75rem);
52
+ align-items: start;
53
+ max-width: 64rem;
54
+ }
55
+
56
+ .home-page__brand,
57
+ .home-page__actions,
58
+ .home-page__state {
59
+ display: grid;
60
+ gap: 0.65rem;
61
+ align-content: start;
62
+ position: relative;
63
+ z-index: 1;
64
+ }
65
+
66
+ .home-page__logo {
67
+ width: min(100%, 8rem);
68
+ height: auto;
69
+ filter: drop-shadow(0 0.75rem 1.25rem rgba(14, 165, 233, 0.14));
70
+ }
71
+
72
+ .home-page__title,
73
+ .home-page__subtitle,
74
+ .home-page__state-title,
75
+ .home-page__note {
76
+ margin: 0;
77
+ }
78
+
79
+ .home-page__subtitle,
80
+ .home-page__note {
81
+ color: #4b5563;
82
+ font-size: 0.95rem;
83
+ }
84
+
85
+ .home-page__kicker {
86
+ margin: 0;
87
+ font-size: 0.72rem;
88
+ font-weight: 700;
89
+ letter-spacing: 0.08em;
90
+ color: #0284c7;
91
+ }
92
+
93
+ .home-page__title {
94
+ font-size: clamp(2.2rem, 5vw, 3.9rem);
95
+ line-height: 1;
96
+ max-width: 8ch;
97
+ letter-spacing: -0.06em;
98
+ }
99
+
100
+ .home-page__headline {
101
+ display: inline-flex;
102
+ align-items: center;
103
+ gap: 0.5rem;
104
+ width: fit-content;
105
+ font-size: clamp(1.15rem, 2.6vw, 1.75rem);
106
+ font-weight: 700;
107
+ letter-spacing: -0.03em;
108
+ background: linear-gradient(90deg, #2563eb, #0ea5e9 55%, #06b6d4);
109
+ -webkit-background-clip: text;
110
+ background-clip: text;
111
+ color: transparent;
112
+ }
113
+
114
+ .home-page__panel {
115
+ display: grid;
116
+ gap: 0.85rem;
117
+ padding: 1.15rem 1.25rem;
118
+ }
119
+
120
+ .home-page__panel--highlighted {
121
+ animation: home-page-panel-pulse 780ms ease;
122
+ }
123
+
124
+ .home-page__list {
125
+ margin: 0;
126
+ padding-left: 1.25rem;
127
+ display: grid;
128
+ gap: 0.45rem;
129
+ color: #334155;
130
+ font-size: 0.94rem;
131
+ }
132
+
133
+ .home-page__status {
134
+ font-weight: 600;
135
+ }
136
+
137
+ .home-page__status.is-open {
138
+ color: #0284c7;
139
+ }
140
+
141
+ .home-page__status.is-closed {
142
+ color: #64748b;
143
+ }
144
+
145
+ .home-page__buttons {
146
+ display: flex;
147
+ flex-wrap: wrap;
148
+ gap: 0.75rem;
149
+ }
150
+
151
+ .home-page__button {
152
+ appearance: none;
153
+ border: 0;
154
+ border-radius: 999px;
155
+ background: #eef2ff;
156
+ color: #1d4ed8;
157
+ padding: 0.78rem 1rem;
158
+ font: inherit;
159
+ font-size: 0.94rem;
160
+ font-weight: 700;
161
+ cursor: pointer;
162
+ transition:
163
+ transform 180ms ease,
164
+ background 180ms ease,
165
+ box-shadow 180ms ease,
166
+ color 180ms ease;
167
+ }
168
+
169
+ .home-page__button:hover {
170
+ background: #e0e7ff;
171
+ box-shadow: 0 0.75rem 1.5rem rgba(99, 102, 241, 0.16);
172
+ transform: translateY(-1px);
173
+ }
174
+
175
+ .home-page__button--secondary {
176
+ background: #e0f2fe;
177
+ color: #0369a1;
178
+ }
179
+
180
+ .home-page__button--secondary:hover {
181
+ background: #bae6fd;
182
+ }
183
+
184
+ .home-page__actions {
185
+ height: 100%;
186
+ position: relative;
187
+ padding-left: clamp(1.25rem, 3vw, 2rem);
188
+ max-width: 24rem;
189
+ }
190
+
191
+ .home-page__actions::before {
192
+ content: '';
193
+ position: absolute;
194
+ left: 0;
195
+ top: 0;
196
+ bottom: 0;
197
+ width: 1px;
198
+ background: linear-gradient(180deg, #2563eb, #0ea5e9);
199
+ }
200
+
201
+ .home-page__dock {
202
+ display: grid;
203
+ gap: 0.9rem;
204
+ position: relative;
205
+ overflow: hidden;
206
+ min-height: 17.5rem;
207
+ max-width: 24rem;
208
+ border-radius: 1.25rem;
209
+ }
210
+
211
+ .home-page__quicklinks {
212
+ display: grid;
213
+ gap: 0.8rem;
214
+ align-content: start;
215
+ padding-right: clamp(0rem, 1vw, 0.5rem);
216
+ max-width: 20rem;
217
+ }
218
+
219
+ .home-page__quicklink {
220
+ display: inline-flex;
221
+ align-items: center;
222
+ justify-content: space-between;
223
+ gap: 1rem;
224
+ width: fit-content;
225
+ min-width: min(100%, 18rem);
226
+ padding: 0.82rem 1rem;
227
+ border-radius: 999px;
228
+ text-decoration: none;
229
+ font-size: 0.94rem;
230
+ font-weight: 700;
231
+ background: #eef2ff;
232
+ color: #1d4ed8;
233
+ }
234
+
235
+ .home-page__quicklink-icon {
236
+ width: 0.95rem;
237
+ height: 0.95rem;
238
+ flex: 0 0 auto;
239
+ }
240
+
241
+ .home-page__quicklink--violet {
242
+ background: #dbeafe;
243
+ color: #1d4ed8;
244
+ }
245
+
246
+ .home-page__quicklink--pink {
247
+ background: #e0f2fe;
248
+ color: #0369a1;
249
+ }
250
+
251
+ .home-page__quicklink--rose {
252
+ background: #ecfeff;
253
+ color: #0f766e;
254
+ }
255
+
256
+ .home-page__areas {
257
+ display: grid;
258
+ grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
259
+ gap: 0.75rem;
260
+ margin-top: 0.5rem;
261
+ }
262
+
263
+ .home-page__area-card {
264
+ padding: 0.85rem 0.95rem;
265
+ border-radius: 1.25rem;
266
+ background: #eff6ff;
267
+ }
268
+
269
+ .home-page__menu {
270
+ position: absolute;
271
+ top: 0;
272
+ right: 0;
273
+ bottom: 0;
274
+ width: min(100%, 17rem);
275
+ padding: 1rem;
276
+ border-left: 1px solid rgba(71, 85, 105, 0.7);
277
+ border-radius: 1.25rem 0 0 1.25rem;
278
+ background: linear-gradient(180deg, #1e3a8a, #0f172a);
279
+ box-shadow: -1.25rem 0 2.5rem rgba(15, 23, 42, 0.18);
280
+ transform: translateX(105%);
281
+ opacity: 0;
282
+ pointer-events: none;
283
+ transition:
284
+ transform 260ms ease,
285
+ opacity 260ms ease;
286
+ }
287
+
288
+ .home-page__menu.is-open {
289
+ transform: translateX(0);
290
+ opacity: 1;
291
+ pointer-events: auto;
292
+ }
293
+
294
+ .home-page__menu-title,
295
+ .home-page__menu-text {
296
+ margin: 0;
297
+ }
298
+
299
+ .home-page__menu-title {
300
+ font-size: 0.95rem;
301
+ color: #f8fafc;
302
+ }
303
+
304
+ .home-page__menu-text {
305
+ color: #cbd5e1;
306
+ font-size: 0.9rem;
307
+ }
308
+
309
+ .home-page__menu-list {
310
+ list-style: none;
311
+ margin: 0;
312
+ padding: 0;
313
+ display: grid;
314
+ gap: 0.75rem;
315
+ }
316
+
317
+ .home-page__menu-item {
318
+ padding: 0.82rem 0.95rem;
319
+ border-radius: 1rem;
320
+ background: rgba(255, 255, 255, 0.08);
321
+ color: #e2e8f0;
322
+ font-size: 0.94rem;
323
+ }
324
+
325
+ .home-page__area-label,
326
+ .home-page__area-value {
327
+ margin: 0;
328
+ }
329
+
330
+ .home-page__area-label {
331
+ font-size: 0.7rem;
332
+ font-weight: 700;
333
+ letter-spacing: 0.16em;
334
+ text-transform: uppercase;
335
+ color: #0284c7;
336
+ }
337
+
338
+ .home-page__area-value {
339
+ margin-top: 0.45rem;
340
+ font-size: 0.94rem;
341
+ font-weight: 700;
342
+ color: #1f2937;
343
+ }
344
+
345
+ @keyframes home-page-panel-pulse {
346
+ 0%,
347
+ 100% {
348
+ box-shadow: 0 1.5rem 3rem rgba(15, 23, 42, 0.06);
349
+ border-color: rgba(226, 232, 240, 0.9);
350
+ }
351
+
352
+ 35% {
353
+ box-shadow: 0 0 0 0.32rem rgba(37, 99, 235, 0.12), 0 1.5rem 2.5rem rgba(37, 99, 235, 0.15);
354
+ border-color: rgba(37, 99, 235, 0.4);
355
+ }
356
+
357
+ 60% {
358
+ box-shadow: 0 0 0 0.32rem rgba(14, 165, 233, 0.11), 0 1.5rem 2.5rem rgba(14, 165, 233, 0.14);
359
+ border-color: rgba(14, 165, 233, 0.36);
360
+ }
361
+ }
362
+
363
+ @media (min-width: 900px) {
364
+ .home-page__grid {
365
+ grid-template-columns: minmax(0, 1fr) minmax(18rem, 22rem);
366
+ }
367
+ }
368
+
369
+ @media (max-width: 899px) {
370
+ .home-page__actions {
371
+ padding-left: 0;
372
+ padding-top: 1rem;
373
+ }
374
+
375
+ .home-page__actions::before {
376
+ top: 0;
377
+ right: 0;
378
+ bottom: auto;
379
+ width: auto;
380
+ height: 1px;
381
+ }
382
+
383
+ .home-page__menu {
384
+ width: 100%;
385
+ border-left: 0;
386
+ border-top: 1px solid rgba(226, 232, 240, 0.9);
387
+ border-radius: 1.25rem 1.25rem 0 0;
388
+ box-shadow: 0 -1rem 2rem rgba(15, 23, 42, 0.08);
389
+ top: auto;
390
+ left: 0;
391
+ right: 0;
392
+ bottom: 0;
393
+ transform: translateX(0) translateY(105%);
394
+ }
395
+
396
+ .home-page__menu.is-open {
397
+ transform: translateX(0) translateY(0);
398
+ }
399
+ }
400
+ </style>
401
+
402
+ <main class="home-page" id="home-asor-studio">
403
+ <section class="home-page__hero">
404
+ <div class="home-page__grid">
405
+ <div class="home-page__brand">
406
+ <div class="home-page__headline">
407
+ <span>ASOR</span>
408
+ <span>Studio</span>
409
+ </div>
410
+ <img class="home-page__logo" [src]="asorLogo" alt="Asor Core Logo" />
411
+ <h1 class="home-page__title">Asor-Core</h1>
412
+ <p class="home-page__subtitle">{{ 'HOME.WELCOME_ROBROSC' | translate }}</p>
413
+ <p class="home-page__subtitle">{{ 'HOME.CONGRATULATIONS' | translate }}</p>
414
+
415
+ <div class="home-page__areas">
416
+ <article class="home-page__area-card">
417
+ <p class="home-page__area-label">Page</p>
418
+ <p class="home-page__area-value">Orchestra the whole view</p>
419
+ </article>
420
+ <article class="home-page__area-card">
421
+ <p class="home-page__area-label">Organisms</p>
422
+ <p class="home-page__area-value">Coordinate complex sections</p>
423
+ </article>
424
+ <article class="home-page__area-card">
425
+ <p class="home-page__area-label">Molecules/Atoms</p>
426
+ <p class="home-page__area-value">Compose reusable interactions</p>
427
+ </article>
428
+ </div>
429
+
430
+ <div class="home-page__buttons">
431
+ <button class="home-page__button" (click)="toggleMenu()">
432
+ {{ (props.isMenuOpen ? 'HOME.CLOSE_MENU' : 'HOME.OPEN_MENU') | translate }}
433
+ </button>
434
+ <button class="home-page__button home-page__button--secondary" (click)="changeUser()">
435
+ {{ 'HOME.SIMULATE_AUTH' | translate }}
436
+ </button>
437
+ </div>
438
+
439
+ <section
440
+ class="home-page__panel home-page__state"
441
+ [class.home-page__panel--highlighted]="isStateSectionHighlighted">
442
+ <h2 class="home-page__state-title">{{ 'HOME.GLOBAL_APP_STATE' | translate }}</h2>
443
+ <p class="home-page__subtitle">{{ 'HOME.OBSERVING_REACTIVE_PROXY' | translate }}</p>
444
+ <ul class="home-page__list">
445
+ <li><strong>{{ 'HOME.VERSION' | translate }}:</strong> {{ props.appVersion }}</li>
446
+ <li>
447
+ <strong>{{ 'HOME.MENU' | translate }}:</strong>
448
+ <span
449
+ class="home-page__status"
450
+ [class.is-open]="props.isMenuOpen"
451
+ [class.is-closed]="!props.isMenuOpen">
452
+ {{ (props.isMenuOpen ? 'HOME.OPEN' : 'HOME.CLOSED') | translate }}
453
+ </span>
454
+ </li>
455
+ <li>
456
+ <strong>{{ 'HOME.USER' | translate }}:</strong>
457
+ {{ props.currentUser || ('HOME.UNDEFINED' | translate) }}
458
+ </li>
459
+ </ul>
460
+ </section>
461
+ </div>
462
+
463
+ <div class="home-page__actions">
464
+ <div class="home-page__dock">
465
+ <div class="home-page__quicklinks">
466
+ <a class="home-page__quicklink" href="https://asor-studio.github.io/asor-angular-wiki/landing" target="_blank" rel="noreferrer">
467
+ <span>ASOR Documentation</span>
468
+ <svg class="home-page__quicklink-icon" viewBox="0 0 24 24" fill="none" aria-hidden="true">
469
+ <path
470
+ d="M14 5h5v5M10 14 19 5M19 13v5H5V5h5"
471
+ stroke="currentColor"
472
+ stroke-width="2"
473
+ stroke-linecap="round"
474
+ stroke-linejoin="round" />
475
+ </svg>
476
+ </a>
477
+ <a class="home-page__quicklink home-page__quicklink--violet" href="https://www.npmjs.com/package/@asor-studio/asor-core" target="_blank" rel="noreferrer">
478
+ <span>ASOR Core on NPM</span>
479
+ <svg class="home-page__quicklink-icon" viewBox="0 0 24 24" fill="none" aria-hidden="true">
480
+ <path
481
+ d="M14 5h5v5M10 14 19 5M19 13v5H5V5h5"
482
+ stroke="currentColor"
483
+ stroke-width="2"
484
+ stroke-linecap="round"
485
+ stroke-linejoin="round" />
486
+ </svg>
487
+ </a>
488
+ <a class="home-page__quicklink home-page__quicklink--pink" href="https://www.npmjs.com/package/@asor-studio/asor-cli" target="_blank" rel="noreferrer">
489
+ <span>ASOR CLI on NPM</span>
490
+ <svg class="home-page__quicklink-icon" viewBox="0 0 24 24" fill="none" aria-hidden="true">
491
+ <path
492
+ d="M14 5h5v5M10 14 19 5M19 13v5H5V5h5"
493
+ stroke="currentColor"
494
+ stroke-width="2"
495
+ stroke-linecap="round"
496
+ stroke-linejoin="round" />
497
+ </svg>
498
+ </a>
499
+ </div>
500
+
501
+ <aside class="home-page__menu" [class.is-open]="props.isMenuOpen">
502
+ <h3 class="home-page__menu-title">{{ 'HOME.DASHBOARD' | translate }}</h3>
503
+ <p class="home-page__menu-text">{{ 'HOME.OBSERVING_REACTIVE_PROXY' | translate }}</p>
504
+ <ul class="home-page__menu-list">
505
+ <li class="home-page__menu-item">{{ 'HOME.DASHBOARD' | translate }}</li>
506
+ <li class="home-page__menu-item">{{ 'HOME.SETTINGS' | translate }}</li>
507
+ <li class="home-page__menu-item">{{ 'HOME.LOGOUT' | translate }}</li>
508
+ </ul>
509
+ </aside>
510
+ </div>
511
+ <app-sample-widget
512
+ [widgetTitle]="'My First Widget'"
513
+ [highlightToken]="widgetHighlightToken"></app-sample-widget>
514
+
515
+ <p class="home-page__note">
516
+ {{ 'HOME.WELCOME_MESSAGE' | translate }}<br />(TranslatePipe placeholder)
517
+ </p>
518
+ </div>
519
+ </div>
520
+ </section>
521
+ </main>