domma-js 0.14.5 → 0.16.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 (30) hide show
  1. package/package.json +1 -1
  2. package/public/dist/bundles/domma-complete.css +173 -57
  3. package/public/dist/bundles/domma-data-focused.css +173 -57
  4. package/public/dist/bundles/domma-essentials.css +173 -57
  5. package/public/dist/bundles/domma-full.css +173 -57
  6. package/public/dist/bundles/domma-grayve.css +173 -57
  7. package/public/dist/bundles/domma-minimal.css +129 -14
  8. package/public/dist/domma-syntax.min.js +3 -3
  9. package/public/dist/domma.css +124 -9
  10. package/public/dist/domma.esm.js +4 -4
  11. package/public/dist/domma.min.js +4 -4
  12. package/public/dist/elements.css +41 -40
  13. package/public/dist/grid.css +3 -3
  14. package/public/dist/syntax.css +3 -3
  15. package/public/dist/themes/domma-themes.css +3 -3
  16. package/templates/kickstart-spa/.claude/memory/MEMORY.md +43 -0
  17. package/templates/kickstart-spa/.claude/settings.json +5 -1
  18. package/templates/kickstart-spa/.claude/snippets.md +99 -0
  19. package/templates/kickstart-spa/CLAUDE.md +175 -0
  20. package/templates/kickstart-spa/README.md +60 -15
  21. package/templates/kickstart-spa/frontend/js/views/404.js +1 -22
  22. package/templates/kickstart-spa/frontend/js/views/about.js +1 -59
  23. package/templates/kickstart-spa/frontend/js/views/contact.js +1 -46
  24. package/templates/kickstart-spa/frontend/js/views/home.js +1 -52
  25. package/templates/kickstart-spa/frontend/js/views/templates/404.html +20 -0
  26. package/templates/kickstart-spa/frontend/js/views/templates/about.html +57 -0
  27. package/templates/kickstart-spa/frontend/js/views/templates/contact.html +44 -0
  28. package/templates/kickstart-spa/frontend/js/views/templates/home.html +50 -0
  29. package/templates/view-template/view.html +27 -0
  30. package/templates/view-template/view.js +1 -29
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "domma-js",
3
- "version": "0.14.5",
3
+ "version": "0.16.0",
4
4
  "description": "Dynamic Object Manipulation & Modeling API - A complete front-end toolkit.",
5
5
  "main": "public/dist/domma.min.js",
6
6
  "module": "public/dist/domma.esm.js",
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Complete CSS Bundle v0.14.5
2
+ * Domma Complete CSS Bundle v0.16.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-02-13T16:14:14.530Z
5
+ * Built: 2026-02-15T19:34:06.411Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.14.5
14
+ * Domma Core CSS v0.16.0
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-02-13T16:14:14.182Z
18
- * Commit: 53db6e0
17
+ * Built: 2026-02-15T19:34:06.099Z
18
+ * Commit: 04c480c
19
19
  */
20
20
 
21
21
  /**
@@ -2337,7 +2337,7 @@ code, pre {
2337
2337
  .form-input.success:focus,
2338
2338
  .form-select.success:focus,
2339
2339
  .form-textarea.success:focus {
2340
- box-shadow: 0 0 0 3px rgba(22, 163, 74, 0.2);
2340
+ box-shadow: 0 0 0 3px var(--dm-focus-ring-success, rgba(22, 163, 74, 0.2));
2341
2341
  }
2342
2342
 
2343
2343
  .form-input.warning,
@@ -2349,7 +2349,7 @@ code, pre {
2349
2349
  .form-input.warning:focus,
2350
2350
  .form-select.warning:focus,
2351
2351
  .form-textarea.warning:focus {
2352
- box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.2);
2352
+ box-shadow: 0 0 0 3px var(--dm-focus-ring-warning, rgba(245, 158, 11, 0.2));
2353
2353
  }
2354
2354
 
2355
2355
  .form-success {
@@ -2374,7 +2374,7 @@ code, pre {
2374
2374
  .has-success .form-input:focus,
2375
2375
  .has-success .form-select:focus,
2376
2376
  .has-success .form-textarea:focus {
2377
- box-shadow: 0 0 0 3px rgba(22, 163, 74, 0.2);
2377
+ box-shadow: 0 0 0 3px var(--dm-focus-ring-success, rgba(22, 163, 74, 0.2));
2378
2378
  }
2379
2379
 
2380
2380
  .has-error .form-input,
@@ -2386,7 +2386,7 @@ code, pre {
2386
2386
  .has-error .form-input:focus,
2387
2387
  .has-error .form-select:focus,
2388
2388
  .has-error .form-textarea:focus {
2389
- box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.2);
2389
+ box-shadow: 0 0 0 3px var(--dm-focus-ring-danger, rgba(239, 68, 68, 0.2));
2390
2390
  }
2391
2391
 
2392
2392
  .has-warning .form-input,
@@ -2398,7 +2398,7 @@ code, pre {
2398
2398
  .has-warning .form-input:focus,
2399
2399
  .has-warning .form-select:focus,
2400
2400
  .has-warning .form-textarea:focus {
2401
- box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.2);
2401
+ box-shadow: 0 0 0 3px var(--dm-focus-ring-warning, rgba(245, 158, 11, 0.2));
2402
2402
  }
2403
2403
 
2404
2404
  /* Input Sizes */
@@ -3337,7 +3337,7 @@ code, pre {
3337
3337
  .dm-tw-cursor-block {
3338
3338
  padding: 0;
3339
3339
  background: currentColor;
3340
- color: var(--dm-body-bg, #fff);
3340
+ color: var(--dm-background, #fff);
3341
3341
  opacity: 0.8;
3342
3342
  font-size: 0.7em;
3343
3343
  line-height: 0.9;
@@ -3376,6 +3376,121 @@ code, pre {
3376
3376
  animation: dm-tw-glow 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
3377
3377
  }
3378
3378
 
3379
+ /* =================================================================
3380
+ Reveal Effect - Scroll-triggered entrance animations
3381
+ ================================================================= */
3382
+
3383
+ .dm-reveal {
3384
+ opacity: 0;
3385
+ transition-property: opacity, transform;
3386
+ will-change: opacity, transform;
3387
+ }
3388
+
3389
+ .dm-reveal.dm-reveal-visible {
3390
+ opacity: 1;
3391
+ transform: none !important;
3392
+ }
3393
+
3394
+ .dm-reveal-fade {
3395
+ /* opacity-only, no transform needed */
3396
+ }
3397
+
3398
+ .dm-reveal-slide-up {
3399
+ transform: translateY(30px);
3400
+ }
3401
+
3402
+ .dm-reveal-slide-down {
3403
+ transform: translateY(-30px);
3404
+ }
3405
+
3406
+ .dm-reveal-slide-left {
3407
+ transform: translateX(30px);
3408
+ }
3409
+
3410
+ .dm-reveal-slide-right {
3411
+ transform: translateX(-30px);
3412
+ }
3413
+
3414
+ .dm-reveal-zoom {
3415
+ transform: scale(0.85);
3416
+ }
3417
+
3418
+ .dm-reveal-flip {
3419
+ transform: perspective(600px) rotateX(15deg);
3420
+ }
3421
+
3422
+ /* =================================================================
3423
+ Scramble Effect - Text cipher/decode
3424
+ ================================================================= */
3425
+
3426
+ .dm-scramble-char {
3427
+ display: inline;
3428
+ white-space: pre;
3429
+ }
3430
+
3431
+ .dm-scramble-resolved {
3432
+ /* Resolved characters can be styled differently if desired */
3433
+ }
3434
+
3435
+ /* =================================================================
3436
+ Ripple Effect - Material Design click ripple
3437
+ ================================================================= */
3438
+
3439
+ .dm-ripple-container {
3440
+ position: relative;
3441
+ overflow: hidden;
3442
+ }
3443
+
3444
+ .dm-ripple {
3445
+ position: absolute;
3446
+ border-radius: 50%;
3447
+ pointer-events: none;
3448
+ will-change: transform, opacity;
3449
+ }
3450
+
3451
+ /* =================================================================
3452
+ Shake Effect - Attention/error animation (keyframes injected by JS)
3453
+ ================================================================= */
3454
+
3455
+ /* Static shake keyframes for CSS-only usage */
3456
+ @keyframes dm-shake-h {
3457
+ 0%, 100% { transform: translateX(0); }
3458
+ 10%, 30%, 50%, 70%, 90% { transform: translateX(-6px); }
3459
+ 20%, 40%, 60%, 80% { transform: translateX(6px); }
3460
+ }
3461
+
3462
+ @keyframes dm-shake-v {
3463
+ 0%, 100% { transform: translateY(0); }
3464
+ 10%, 30%, 50%, 70%, 90% { transform: translateY(-6px); }
3465
+ 20%, 40%, 60%, 80% { transform: translateY(6px); }
3466
+ }
3467
+
3468
+ .dm-shake-h {
3469
+ animation: dm-shake-h 0.5s ease-in-out;
3470
+ }
3471
+
3472
+ .dm-shake-v {
3473
+ animation: dm-shake-v 0.5s ease-in-out;
3474
+ }
3475
+
3476
+ /* Reduced motion: disable all effects (unless forced via data-force-animation) */
3477
+ @media (prefers-reduced-motion: reduce) {
3478
+ .dm-reveal:not([data-force-animation]) {
3479
+ opacity: 1;
3480
+ transform: none;
3481
+ transition: none;
3482
+ }
3483
+
3484
+ .dm-ripple:not([data-force-animation]) {
3485
+ animation: none !important;
3486
+ }
3487
+
3488
+ .dm-shake-h:not([data-force-animation]),
3489
+ .dm-shake-v:not([data-force-animation]) {
3490
+ animation: none !important;
3491
+ }
3492
+ }
3493
+
3379
3494
  /* Animation Classes */
3380
3495
 
3381
3496
  .animate-fade-in {
@@ -4588,11 +4703,11 @@ body.dm-cloaked.dm-ready {
4588
4703
  ============================================ */
4589
4704
 
4590
4705
  /*!
4591
- * Domma Grid CSS v0.14.5
4706
+ * Domma Grid CSS v0.16.0
4592
4707
  * Dynamic Object Manipulation & Modeling API
4593
4708
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4594
- * Built: 2026-02-13T16:14:14.190Z
4595
- * Commit: 53db6e0
4709
+ * Built: 2026-02-15T19:34:06.108Z
4710
+ * Commit: 04c480c
4596
4711
  */
4597
4712
 
4598
4713
  /**
@@ -5189,11 +5304,11 @@ body.dm-cloaked.dm-ready {
5189
5304
  ============================================ */
5190
5305
 
5191
5306
  /*!
5192
- * Domma Elements CSS v0.14.5
5307
+ * Domma Elements CSS v0.16.0
5193
5308
  * Dynamic Object Manipulation & Modeling API
5194
5309
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5195
- * Built: 2026-02-13T16:14:14.198Z
5196
- * Commit: 53db6e0
5310
+ * Built: 2026-02-15T19:34:06.115Z
5311
+ * Commit: 04c480c
5197
5312
  */
5198
5313
 
5199
5314
  /**
@@ -5491,7 +5606,7 @@ body.dm-cloaked.dm-ready {
5491
5606
  top: 50%;
5492
5607
  left: 50%;
5493
5608
  transform: translate(-50%, -50%) scale(0.95);
5494
- background-color: var(--dm-white);
5609
+ background-color: var(--dm-surface, var(--dm-white));
5495
5610
  border-radius: var(--dm-radius-lg);
5496
5611
  box-shadow: var(--dm-shadow-xl);
5497
5612
  z-index: 50;
@@ -5681,7 +5796,7 @@ body.dm-cloaked.dm-ready {
5681
5796
  justify-content: space-between;
5682
5797
  padding: var(--dm-space-4) var(--dm-space-6);
5683
5798
  cursor: pointer;
5684
- background-color: var(--dm-white);
5799
+ background-color: var(--dm-surface, var(--dm-white));
5685
5800
  font-weight: 500;
5686
5801
  transition: background-color var(--dm-transition-fast);
5687
5802
  }
@@ -6853,7 +6968,7 @@ code {
6853
6968
 
6854
6969
  .navbar-link:hover {
6855
6970
  color: var(--dm-text);
6856
- background-color: var(--dm-gray-800);
6971
+ background-color: var(--dm-hover-bg, var(--dm-gray-800));
6857
6972
  border-radius: 0;
6858
6973
  }
6859
6974
 
@@ -6865,7 +6980,7 @@ code {
6865
6980
 
6866
6981
  .nav-version {
6867
6982
  display: none;
6868
- color: #eee;
6983
+ color: var(--dm-text-secondary, #eee);
6869
6984
  }
6870
6985
 
6871
6986
  /* Light navbar variant */
@@ -7169,7 +7284,7 @@ code {
7169
7284
  .navbar-dropdown-divider {
7170
7285
  height: 1px;
7171
7286
  margin: 0.5rem 0;
7172
- background: var(--dm-border-color, rgba(0, 0, 0, 0.1));
7287
+ background: var(--dm-border, rgba(0, 0, 0, 0.1));
7173
7288
  list-style: none;
7174
7289
  }
7175
7290
 
@@ -7494,11 +7609,12 @@ code {
7494
7609
  .hero {
7495
7610
  position: relative;
7496
7611
  padding: var(--dm-space-12) var(--dm-space-6);
7497
- background-color: var(--dm-gray-100);
7612
+ background-color: var(--dm-background-alt, var(--dm-gray-100));
7613
+ color: var(--dm-text, inherit);
7498
7614
  border: none;
7499
7615
  border-radius: 0;
7500
7616
  margin-bottom: var(--dm-space-6);
7501
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
7617
+ box-shadow: var(--dm-shadow-sm, 0 2px 4px rgba(0, 0, 0, 0.05));
7502
7618
  text-align: center;
7503
7619
  }
7504
7620
 
@@ -7509,7 +7625,7 @@ code {
7509
7625
  }
7510
7626
 
7511
7627
  .hero-dark {
7512
- background-color: var(--dm-gray-900);
7628
+ background-color: var(--dm-surface-overlay, var(--dm-gray-900));
7513
7629
  color: var(--dm-white);
7514
7630
  }
7515
7631
 
@@ -7791,7 +7907,7 @@ code {
7791
7907
  gap: var(--dm-space-2);
7792
7908
  padding: var(--dm-space-1) var(--dm-space-3);
7793
7909
  background: var(--dm-primary);
7794
- color: white;
7910
+ color: var(--dm-white);
7795
7911
  font-size: var(--dm-font-size-sm);
7796
7912
  font-weight: 500;
7797
7913
  border-radius: var(--dm-radius-full);
@@ -7800,8 +7916,8 @@ code {
7800
7916
  }
7801
7917
 
7802
7918
  .hero-badge-secondary {
7803
- background: var(--dm-gray-200);
7804
- color: var(--dm-gray-900);
7919
+ background: var(--dm-secondary-light, var(--dm-gray-200));
7920
+ color: var(--dm-text, var(--dm-gray-900));
7805
7921
  }
7806
7922
 
7807
7923
  .hero-badge-outline {
@@ -7812,22 +7928,22 @@ code {
7812
7928
 
7813
7929
  .hero-badge-success {
7814
7930
  background: var(--dm-success);
7815
- color: white;
7931
+ color: var(--dm-white);
7816
7932
  }
7817
7933
 
7818
7934
  .hero-badge-warning {
7819
7935
  background: var(--dm-warning);
7820
- color: var(--dm-gray-900);
7936
+ color: var(--dm-text, var(--dm-gray-900));
7821
7937
  }
7822
7938
 
7823
7939
  .hero-badge-danger {
7824
7940
  background: var(--dm-danger);
7825
- color: white;
7941
+ color: var(--dm-white);
7826
7942
  }
7827
7943
 
7828
7944
  .hero-badge-info {
7829
7945
  background: var(--dm-info);
7830
- color: white;
7946
+ color: var(--dm-white);
7831
7947
  }
7832
7948
 
7833
7949
  /* Badge icon/emoji support */
@@ -7901,43 +8017,43 @@ code {
7901
8017
  /* 5. Additional Gradient Variants - Modern gradient backgrounds */
7902
8018
 
7903
8019
  .hero-gradient-purple {
7904
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
7905
- color: white;
8020
+ background: linear-gradient(135deg, var(--dm-purple, #667eea) 0%, var(--dm-purple-dark, #764ba2) 100%);
8021
+ color: var(--dm-white);
7906
8022
  }
7907
8023
 
7908
8024
  .hero-gradient-blue {
7909
- background: linear-gradient(135deg, #3b82f6 0%, #1e40af 100%);
7910
- color: white;
8025
+ background: linear-gradient(135deg, var(--dm-info, #3b82f6) 0%, var(--dm-info-dark, #1e40af) 100%);
8026
+ color: var(--dm-white);
7911
8027
  }
7912
8028
 
7913
8029
  .hero-gradient-green {
7914
- background: linear-gradient(135deg, #10b981 0%, #059669 100%);
7915
- color: white;
8030
+ background: linear-gradient(135deg, var(--dm-success, #10b981) 0%, var(--dm-success-dark, #059669) 100%);
8031
+ color: var(--dm-white);
7916
8032
  }
7917
8033
 
7918
8034
  .hero-gradient-sunset {
7919
- background: linear-gradient(135deg, #f59e0b 0%, #ef4444 100%);
7920
- color: white;
8035
+ background: linear-gradient(135deg, var(--dm-warning, #f59e0b) 0%, var(--dm-danger, #ef4444) 100%);
8036
+ color: var(--dm-white);
7921
8037
  }
7922
8038
 
7923
8039
  .hero-gradient-ocean {
7924
- background: linear-gradient(135deg, #0ea5e9 0%, #06b6d4 100%);
7925
- color: white;
8040
+ background: linear-gradient(135deg, var(--dm-sky, #0ea5e9) 0%, var(--dm-cyan, #06b6d4) 100%);
8041
+ color: var(--dm-white);
7926
8042
  }
7927
8043
 
7928
8044
  .hero-gradient-rose {
7929
- background: linear-gradient(135deg, #ec4899 0%, #f43f5e 100%);
7930
- color: white;
8045
+ background: linear-gradient(135deg, var(--dm-pink, #ec4899) 0%, var(--dm-rose, #f43f5e) 100%);
8046
+ color: var(--dm-white);
7931
8047
  }
7932
8048
 
7933
8049
  .hero-gradient-forest {
7934
- background: linear-gradient(135deg, #16a34a 0%, #15803d 100%);
7935
- color: white;
8050
+ background: linear-gradient(135deg, var(--dm-green, #16a34a) 0%, var(--dm-green-dark, #15803d) 100%);
8051
+ color: var(--dm-white);
7936
8052
  }
7937
8053
 
7938
8054
  .hero-gradient-night {
7939
- background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);
7940
- color: white;
8055
+ background: linear-gradient(135deg, var(--dm-slate-800, #1e293b) 0%, var(--dm-slate-900, #0f172a) 100%);
8056
+ color: var(--dm-white);
7941
8057
  }
7942
8058
 
7943
8059
  CAROUSEL
@@ -8632,8 +8748,8 @@ code {
8632
8748
  }
8633
8749
 
8634
8750
  .sidebar-dark .sidebar-link.active {
8635
- color: #eaeaea;
8636
- background: rgba(102, 178, 255, 0.15);
8751
+ color: var(--dm-text-light, #eaeaea);
8752
+ background: var(--dm-primary-light, rgba(102, 178, 255, 0.15));
8637
8753
  border-left-color: var(--dm-primary-light, #66b2ff);
8638
8754
  }
8639
8755
 
@@ -10118,11 +10234,11 @@ code {
10118
10234
  right: 0;
10119
10235
  bottom: 0;
10120
10236
  z-index: 1000;
10121
- background-color: rgba(255, 255, 255, 0.9);
10237
+ background-color: var(--dm-loader-overlay-bg, rgba(255, 255, 255, 0.9));
10122
10238
  }
10123
10239
 
10124
10240
  [data-theme="dark"] .dm-loader.dm-loader-overlay {
10125
- background-color: rgba(0, 0, 0, 0.8);
10241
+ background-color: var(--dm-loader-overlay-bg, rgba(0, 0, 0, 0.8));
10126
10242
  }
10127
10243
 
10128
10244
  /* Spinner type */
@@ -10481,7 +10597,7 @@ code {
10481
10597
  width: 16px;
10482
10598
  left: 2px;
10483
10599
  top: 2px;
10484
- background: white;
10600
+ background: var(--dm-white, #fff);
10485
10601
  border-radius: 50%;
10486
10602
  transition: left 0.2s;
10487
10603
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
@@ -10640,7 +10756,7 @@ code {
10640
10756
  width: 16px;
10641
10757
  left: 3px;
10642
10758
  bottom: 3px;
10643
- background: white;
10759
+ background: var(--dm-white, #fff);
10644
10760
  border-radius: 50%;
10645
10761
  transition: transform 0.3s;
10646
10762
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
@@ -11738,11 +11854,11 @@ code {
11738
11854
  ============================================ */
11739
11855
 
11740
11856
  /*!
11741
- * Domma Themes v0.14.5
11857
+ * Domma Themes v0.16.0
11742
11858
  * Dynamic Object Manipulation & Modeling API
11743
11859
  * (c) 2026 Darryl Waterhouse & DCBW-IT
11744
- * Built: 2026-02-13T16:14:14.155Z
11745
- * Commit: 53db6e0
11860
+ * Built: 2026-02-15T19:34:06.077Z
11861
+ * Commit: 04c480c
11746
11862
  */
11747
11863
 
11748
11864
  /**