domma-js 0.14.4 → 0.15.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "domma-js",
3
- "version": "0.14.4",
3
+ "version": "0.15.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.3
2
+ * Domma Complete CSS Bundle v0.15.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-02-11T13:21:38.721Z
5
+ * Built: 2026-02-14T11:19:15.077Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.14.3
14
+ * Domma Core CSS v0.15.0
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-02-11T13:21:38.377Z
18
- * Commit: 92f839a
17
+ * Built: 2026-02-14T11:19:14.761Z
18
+ * Commit: 8bcd748
19
19
  */
20
20
 
21
21
  /**
@@ -3255,6 +3255,242 @@ code, pre {
3255
3255
  }
3256
3256
  }
3257
3257
 
3258
+ /* Typewriter Effect Keyframes */
3259
+
3260
+ @keyframes dm-cursor-blink {
3261
+ 0%, 100% {
3262
+ opacity: 1;
3263
+ }
3264
+ 50% {
3265
+ opacity: 0;
3266
+ }
3267
+ }
3268
+
3269
+ @keyframes dm-tw-fade {
3270
+ from {
3271
+ opacity: 0;
3272
+ transform: translateZ(0);
3273
+ }
3274
+ to {
3275
+ opacity: 1;
3276
+ transform: translateZ(0);
3277
+ }
3278
+ }
3279
+
3280
+ @keyframes dm-tw-bounce {
3281
+ 0% {
3282
+ opacity: 0;
3283
+ transform: translateY(-8px) translateZ(0);
3284
+ }
3285
+ 60% {
3286
+ opacity: 1;
3287
+ transform: translateY(2px) translateZ(0);
3288
+ }
3289
+ 80% {
3290
+ transform: translateY(-1px) translateZ(0);
3291
+ }
3292
+ 100% {
3293
+ opacity: 1;
3294
+ transform: translateY(0) translateZ(0);
3295
+ }
3296
+ }
3297
+
3298
+ @keyframes dm-tw-glow {
3299
+ 0% {
3300
+ opacity: 0;
3301
+ transform: scale(0.8) translateZ(0);
3302
+ filter: brightness(1);
3303
+ }
3304
+ 50% {
3305
+ opacity: 1;
3306
+ transform: scale(1.1) translateZ(0);
3307
+ filter: brightness(1.5);
3308
+ }
3309
+ 100% {
3310
+ opacity: 1;
3311
+ transform: scale(1) translateZ(0);
3312
+ filter: brightness(1);
3313
+ }
3314
+ }
3315
+
3316
+ /* Typewriter Classes */
3317
+
3318
+ .dm-tw-cursor {
3319
+ display: inline;
3320
+ white-space: pre;
3321
+ font-weight: 600;
3322
+ margin-left: 2px;
3323
+ vertical-align: 0.08em;
3324
+ animation: dm-cursor-blink 1s ease-in-out infinite;
3325
+ }
3326
+
3327
+ .dm-tw-cursor.dm-tw-cursor-no-blink {
3328
+ animation: none;
3329
+ opacity: 1;
3330
+ }
3331
+
3332
+ /* Cursor Types */
3333
+ .dm-tw-cursor-caret {
3334
+ /* Default - thin vertical line */
3335
+ }
3336
+
3337
+ .dm-tw-cursor-block {
3338
+ padding: 0;
3339
+ background: currentColor;
3340
+ color: var(--dm-body-bg, #fff);
3341
+ opacity: 0.8;
3342
+ font-size: 0.7em;
3343
+ line-height: 0.9;
3344
+ }
3345
+
3346
+ .dm-tw-cursor-block.dm-tw-cursor-no-blink {
3347
+ opacity: 0.6;
3348
+ }
3349
+
3350
+ .dm-tw-cursor-underline {
3351
+ border-bottom: 2px solid currentColor;
3352
+ padding: 0;
3353
+ min-width: 0.5em;
3354
+ }
3355
+
3356
+ .dm-tw-char {
3357
+ display: inline;
3358
+ white-space: pre;
3359
+ font-weight: 600;
3360
+ will-change: transform, opacity;
3361
+ backface-visibility: hidden;
3362
+ -webkit-font-smoothing: antialiased;
3363
+ -moz-osx-font-smoothing: grayscale;
3364
+ transform: translateZ(0);
3365
+ }
3366
+
3367
+ .dm-tw-char-fade {
3368
+ animation: dm-tw-fade 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
3369
+ }
3370
+
3371
+ .dm-tw-char-bounce {
3372
+ animation: dm-tw-bounce 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
3373
+ }
3374
+
3375
+ .dm-tw-char-glow {
3376
+ animation: dm-tw-glow 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
3377
+ }
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
+
3258
3494
  /* Animation Classes */
3259
3495
 
3260
3496
  .animate-fade-in {
@@ -4467,11 +4703,11 @@ body.dm-cloaked.dm-ready {
4467
4703
  ============================================ */
4468
4704
 
4469
4705
  /*!
4470
- * Domma Grid CSS v0.14.3
4706
+ * Domma Grid CSS v0.15.0
4471
4707
  * Dynamic Object Manipulation & Modeling API
4472
4708
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4473
- * Built: 2026-02-11T13:21:38.386Z
4474
- * Commit: 92f839a
4709
+ * Built: 2026-02-14T11:19:14.771Z
4710
+ * Commit: 8bcd748
4475
4711
  */
4476
4712
 
4477
4713
  /**
@@ -5068,11 +5304,11 @@ body.dm-cloaked.dm-ready {
5068
5304
  ============================================ */
5069
5305
 
5070
5306
  /*!
5071
- * Domma Elements CSS v0.14.3
5307
+ * Domma Elements CSS v0.15.0
5072
5308
  * Dynamic Object Manipulation & Modeling API
5073
5309
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5074
- * Built: 2026-02-11T13:21:38.395Z
5075
- * Commit: 92f839a
5310
+ * Built: 2026-02-14T11:19:14.779Z
5311
+ * Commit: 8bcd748
5076
5312
  */
5077
5313
 
5078
5314
  /**
@@ -11617,11 +11853,11 @@ code {
11617
11853
  ============================================ */
11618
11854
 
11619
11855
  /*!
11620
- * Domma Themes v0.14.3
11856
+ * Domma Themes v0.15.0
11621
11857
  * Dynamic Object Manipulation & Modeling API
11622
11858
  * (c) 2026 Darryl Waterhouse & DCBW-IT
11623
- * Built: 2026-02-11T13:21:38.353Z
11624
- * Commit: 92f839a
11859
+ * Built: 2026-02-14T11:19:14.738Z
11860
+ * Commit: 8bcd748
11625
11861
  */
11626
11862
 
11627
11863
  /**
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Data-Focused CSS Bundle v0.14.3
2
+ * Domma Data-Focused CSS Bundle v0.15.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-02-11T13:21:38.711Z
5
+ * Built: 2026-02-14T11:19:15.068Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -230,11 +230,11 @@
230
230
  ============================================ */
231
231
 
232
232
  /*!
233
- * Domma Core CSS v0.14.3
233
+ * Domma Core CSS v0.15.0
234
234
  * Dynamic Object Manipulation & Modeling API
235
235
  * (c) 2026 Darryl Waterhouse & DCBW-IT
236
- * Built: 2026-02-11T13:21:38.377Z
237
- * Commit: 92f839a
236
+ * Built: 2026-02-14T11:19:14.761Z
237
+ * Commit: 8bcd748
238
238
  */
239
239
 
240
240
  /**
@@ -3474,6 +3474,242 @@ code, pre {
3474
3474
  }
3475
3475
  }
3476
3476
 
3477
+ /* Typewriter Effect Keyframes */
3478
+
3479
+ @keyframes dm-cursor-blink {
3480
+ 0%, 100% {
3481
+ opacity: 1;
3482
+ }
3483
+ 50% {
3484
+ opacity: 0;
3485
+ }
3486
+ }
3487
+
3488
+ @keyframes dm-tw-fade {
3489
+ from {
3490
+ opacity: 0;
3491
+ transform: translateZ(0);
3492
+ }
3493
+ to {
3494
+ opacity: 1;
3495
+ transform: translateZ(0);
3496
+ }
3497
+ }
3498
+
3499
+ @keyframes dm-tw-bounce {
3500
+ 0% {
3501
+ opacity: 0;
3502
+ transform: translateY(-8px) translateZ(0);
3503
+ }
3504
+ 60% {
3505
+ opacity: 1;
3506
+ transform: translateY(2px) translateZ(0);
3507
+ }
3508
+ 80% {
3509
+ transform: translateY(-1px) translateZ(0);
3510
+ }
3511
+ 100% {
3512
+ opacity: 1;
3513
+ transform: translateY(0) translateZ(0);
3514
+ }
3515
+ }
3516
+
3517
+ @keyframes dm-tw-glow {
3518
+ 0% {
3519
+ opacity: 0;
3520
+ transform: scale(0.8) translateZ(0);
3521
+ filter: brightness(1);
3522
+ }
3523
+ 50% {
3524
+ opacity: 1;
3525
+ transform: scale(1.1) translateZ(0);
3526
+ filter: brightness(1.5);
3527
+ }
3528
+ 100% {
3529
+ opacity: 1;
3530
+ transform: scale(1) translateZ(0);
3531
+ filter: brightness(1);
3532
+ }
3533
+ }
3534
+
3535
+ /* Typewriter Classes */
3536
+
3537
+ .dm-tw-cursor {
3538
+ display: inline;
3539
+ white-space: pre;
3540
+ font-weight: 600;
3541
+ margin-left: 2px;
3542
+ vertical-align: 0.08em;
3543
+ animation: dm-cursor-blink 1s ease-in-out infinite;
3544
+ }
3545
+
3546
+ .dm-tw-cursor.dm-tw-cursor-no-blink {
3547
+ animation: none;
3548
+ opacity: 1;
3549
+ }
3550
+
3551
+ /* Cursor Types */
3552
+ .dm-tw-cursor-caret {
3553
+ /* Default - thin vertical line */
3554
+ }
3555
+
3556
+ .dm-tw-cursor-block {
3557
+ padding: 0;
3558
+ background: currentColor;
3559
+ color: var(--dm-body-bg, #fff);
3560
+ opacity: 0.8;
3561
+ font-size: 0.7em;
3562
+ line-height: 0.9;
3563
+ }
3564
+
3565
+ .dm-tw-cursor-block.dm-tw-cursor-no-blink {
3566
+ opacity: 0.6;
3567
+ }
3568
+
3569
+ .dm-tw-cursor-underline {
3570
+ border-bottom: 2px solid currentColor;
3571
+ padding: 0;
3572
+ min-width: 0.5em;
3573
+ }
3574
+
3575
+ .dm-tw-char {
3576
+ display: inline;
3577
+ white-space: pre;
3578
+ font-weight: 600;
3579
+ will-change: transform, opacity;
3580
+ backface-visibility: hidden;
3581
+ -webkit-font-smoothing: antialiased;
3582
+ -moz-osx-font-smoothing: grayscale;
3583
+ transform: translateZ(0);
3584
+ }
3585
+
3586
+ .dm-tw-char-fade {
3587
+ animation: dm-tw-fade 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
3588
+ }
3589
+
3590
+ .dm-tw-char-bounce {
3591
+ animation: dm-tw-bounce 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
3592
+ }
3593
+
3594
+ .dm-tw-char-glow {
3595
+ animation: dm-tw-glow 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
3596
+ }
3597
+
3598
+ /* =================================================================
3599
+ Reveal Effect - Scroll-triggered entrance animations
3600
+ ================================================================= */
3601
+
3602
+ .dm-reveal {
3603
+ opacity: 0;
3604
+ transition-property: opacity, transform;
3605
+ will-change: opacity, transform;
3606
+ }
3607
+
3608
+ .dm-reveal.dm-reveal-visible {
3609
+ opacity: 1;
3610
+ transform: none !important;
3611
+ }
3612
+
3613
+ .dm-reveal-fade {
3614
+ /* opacity-only, no transform needed */
3615
+ }
3616
+
3617
+ .dm-reveal-slide-up {
3618
+ transform: translateY(30px);
3619
+ }
3620
+
3621
+ .dm-reveal-slide-down {
3622
+ transform: translateY(-30px);
3623
+ }
3624
+
3625
+ .dm-reveal-slide-left {
3626
+ transform: translateX(30px);
3627
+ }
3628
+
3629
+ .dm-reveal-slide-right {
3630
+ transform: translateX(-30px);
3631
+ }
3632
+
3633
+ .dm-reveal-zoom {
3634
+ transform: scale(0.85);
3635
+ }
3636
+
3637
+ .dm-reveal-flip {
3638
+ transform: perspective(600px) rotateX(15deg);
3639
+ }
3640
+
3641
+ /* =================================================================
3642
+ Scramble Effect - Text cipher/decode
3643
+ ================================================================= */
3644
+
3645
+ .dm-scramble-char {
3646
+ display: inline;
3647
+ white-space: pre;
3648
+ }
3649
+
3650
+ .dm-scramble-resolved {
3651
+ /* Resolved characters can be styled differently if desired */
3652
+ }
3653
+
3654
+ /* =================================================================
3655
+ Ripple Effect - Material Design click ripple
3656
+ ================================================================= */
3657
+
3658
+ .dm-ripple-container {
3659
+ position: relative;
3660
+ overflow: hidden;
3661
+ }
3662
+
3663
+ .dm-ripple {
3664
+ position: absolute;
3665
+ border-radius: 50%;
3666
+ pointer-events: none;
3667
+ will-change: transform, opacity;
3668
+ }
3669
+
3670
+ /* =================================================================
3671
+ Shake Effect - Attention/error animation (keyframes injected by JS)
3672
+ ================================================================= */
3673
+
3674
+ /* Static shake keyframes for CSS-only usage */
3675
+ @keyframes dm-shake-h {
3676
+ 0%, 100% { transform: translateX(0); }
3677
+ 10%, 30%, 50%, 70%, 90% { transform: translateX(-6px); }
3678
+ 20%, 40%, 60%, 80% { transform: translateX(6px); }
3679
+ }
3680
+
3681
+ @keyframes dm-shake-v {
3682
+ 0%, 100% { transform: translateY(0); }
3683
+ 10%, 30%, 50%, 70%, 90% { transform: translateY(-6px); }
3684
+ 20%, 40%, 60%, 80% { transform: translateY(6px); }
3685
+ }
3686
+
3687
+ .dm-shake-h {
3688
+ animation: dm-shake-h 0.5s ease-in-out;
3689
+ }
3690
+
3691
+ .dm-shake-v {
3692
+ animation: dm-shake-v 0.5s ease-in-out;
3693
+ }
3694
+
3695
+ /* Reduced motion: disable all effects (unless forced via data-force-animation) */
3696
+ @media (prefers-reduced-motion: reduce) {
3697
+ .dm-reveal:not([data-force-animation]) {
3698
+ opacity: 1;
3699
+ transform: none;
3700
+ transition: none;
3701
+ }
3702
+
3703
+ .dm-ripple:not([data-force-animation]) {
3704
+ animation: none !important;
3705
+ }
3706
+
3707
+ .dm-shake-h:not([data-force-animation]),
3708
+ .dm-shake-v:not([data-force-animation]) {
3709
+ animation: none !important;
3710
+ }
3711
+ }
3712
+
3477
3713
  /* Animation Classes */
3478
3714
 
3479
3715
  .animate-fade-in {
@@ -4686,11 +4922,11 @@ body.dm-cloaked.dm-ready {
4686
4922
  ============================================ */
4687
4923
 
4688
4924
  /*!
4689
- * Domma Grid CSS v0.14.3
4925
+ * Domma Grid CSS v0.15.0
4690
4926
  * Dynamic Object Manipulation & Modeling API
4691
4927
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4692
- * Built: 2026-02-11T13:21:38.386Z
4693
- * Commit: 92f839a
4928
+ * Built: 2026-02-14T11:19:14.771Z
4929
+ * Commit: 8bcd748
4694
4930
  */
4695
4931
 
4696
4932
  /**
@@ -5287,11 +5523,11 @@ body.dm-cloaked.dm-ready {
5287
5523
  ============================================ */
5288
5524
 
5289
5525
  /*!
5290
- * Domma Elements CSS v0.14.3
5526
+ * Domma Elements CSS v0.15.0
5291
5527
  * Dynamic Object Manipulation & Modeling API
5292
5528
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5293
- * Built: 2026-02-11T13:21:38.395Z
5294
- * Commit: 92f839a
5529
+ * Built: 2026-02-14T11:19:14.779Z
5530
+ * Commit: 8bcd748
5295
5531
  */
5296
5532
 
5297
5533
  /**
@@ -11836,11 +12072,11 @@ code {
11836
12072
  ============================================ */
11837
12073
 
11838
12074
  /*!
11839
- * Domma Themes v0.14.3
12075
+ * Domma Themes v0.15.0
11840
12076
  * Dynamic Object Manipulation & Modeling API
11841
12077
  * (c) 2026 Darryl Waterhouse & DCBW-IT
11842
- * Built: 2026-02-11T13:21:38.353Z
11843
- * Commit: 92f839a
12078
+ * Built: 2026-02-14T11:19:14.738Z
12079
+ * Commit: 8bcd748
11844
12080
  */
11845
12081
 
11846
12082
  /**