domma-js 0.24.0 → 0.25.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.
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Domma Elements CSS v0.24.0
2
+ * Domma Elements CSS v0.25.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-05-02T17:40:23.703Z
6
- * Commit: ef7021b
5
+ * Built: 2026-05-09T09:27:08.374Z
6
+ * Commit: 5de0709
7
7
  */
8
8
 
9
9
  /**
@@ -7409,3 +7409,326 @@ code {
7409
7409
  order: -1;
7410
7410
  }
7411
7411
  }
7412
+
7413
+ /* ============================================================
7414
+ * Chooser — visual option-picker (card/chip × single/multi)
7415
+ * ============================================================ */
7416
+ .domma-chooser {
7417
+ --picker-radius: var(--dm-radius);
7418
+ display: block;
7419
+ }
7420
+
7421
+ .domma-chooser .picker-label {
7422
+ display: block;
7423
+ margin-bottom: var(--dm-space-2);
7424
+ font-weight: 600;
7425
+ color: var(--dm-text);
7426
+ }
7427
+
7428
+ .domma-chooser .picker-required {
7429
+ color: var(--dm-danger);
7430
+ margin-left: 0.25rem;
7431
+ }
7432
+
7433
+ /* Variant: card */
7434
+ .domma-chooser[data-variant="card"] .picker-options {
7435
+ display: grid;
7436
+ grid-template-columns: repeat(var(--picker-cols, 3), 1fr);
7437
+ gap: 0.6rem;
7438
+ }
7439
+
7440
+ .domma-chooser[data-variant="card"] .picker-option {
7441
+ position: relative;
7442
+ display: flex;
7443
+ flex-direction: column;
7444
+ gap: 0.4rem;
7445
+ padding: 0.85rem 0.95rem;
7446
+ border: 2px solid var(--dm-border);
7447
+ border-radius: var(--picker-radius);
7448
+ background: var(--dm-card-bg);
7449
+ color: var(--dm-text);
7450
+ cursor: pointer;
7451
+ transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
7452
+ }
7453
+
7454
+ .domma-chooser[data-variant="card"] .picker-option:hover:not(.is-disabled) {
7455
+ border-color: var(--picker-accent, var(--dm-primary));
7456
+ }
7457
+
7458
+ .domma-chooser[data-variant="card"] .picker-option.is-selected {
7459
+ border-color: var(--picker-accent, var(--dm-primary));
7460
+ background: color-mix(in srgb, var(--picker-accent, var(--dm-primary)) 10%, var(--dm-card-bg));
7461
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--picker-accent, var(--dm-primary)) 22%, transparent);
7462
+ }
7463
+
7464
+ .domma-chooser[data-variant="card"] .picker-option:focus-visible {
7465
+ outline: 2px solid var(--picker-accent, var(--dm-primary));
7466
+ outline-offset: 2px;
7467
+ }
7468
+
7469
+ .domma-chooser .picker-option-icon {
7470
+ width: 32px;
7471
+ height: 32px;
7472
+ display: inline-flex;
7473
+ align-items: center;
7474
+ justify-content: center;
7475
+ border-radius: var(--dm-radius-sm);
7476
+ background: color-mix(in srgb, var(--picker-accent, var(--dm-primary)) 12%, transparent);
7477
+ color: var(--picker-accent, var(--dm-primary));
7478
+ flex-shrink: 0;
7479
+ }
7480
+
7481
+ .domma-chooser .picker-option-label {
7482
+ font-weight: 600;
7483
+ color: var(--dm-text);
7484
+ font-size: 0.95rem;
7485
+ }
7486
+
7487
+ .domma-chooser .picker-option-desc {
7488
+ font-size: 0.8rem;
7489
+ color: var(--dm-text-muted);
7490
+ line-height: 1.4;
7491
+ }
7492
+
7493
+ .domma-chooser[data-variant="card"] .picker-option-tick {
7494
+ position: absolute;
7495
+ top: 8px;
7496
+ right: 8px;
7497
+ width: 18px;
7498
+ height: 18px;
7499
+ border-radius: 50%;
7500
+ background: var(--picker-accent, var(--dm-primary));
7501
+ color: #fff;
7502
+ display: none;
7503
+ align-items: center;
7504
+ justify-content: center;
7505
+ }
7506
+
7507
+ .domma-chooser[data-variant="card"] .picker-option.is-selected .picker-option-tick {
7508
+ display: inline-flex;
7509
+ }
7510
+
7511
+ .domma-chooser .picker-option-badge {
7512
+ position: absolute;
7513
+ top: -10px;
7514
+ right: 10px;
7515
+ }
7516
+
7517
+ /* Density: compact */
7518
+ .domma-chooser[data-variant="card"][data-density="compact"] .picker-option {
7519
+ flex-direction: row;
7520
+ align-items: center;
7521
+ gap: 0.6rem;
7522
+ padding: 0.55rem 0.75rem;
7523
+ }
7524
+
7525
+ .domma-chooser[data-variant="card"][data-density="compact"] .picker-option-icon {
7526
+ width: 24px;
7527
+ height: 24px;
7528
+ background: transparent;
7529
+ }
7530
+
7531
+ .domma-chooser[data-variant="card"][data-density="compact"] .picker-option-desc {
7532
+ display: none;
7533
+ }
7534
+
7535
+ .domma-chooser[data-variant="card"][data-density="compact"] .picker-option-tick {
7536
+ position: static;
7537
+ }
7538
+
7539
+ /* Variant: chip */
7540
+ .domma-chooser[data-variant="chip"] .picker-options {
7541
+ display: flex;
7542
+ flex-wrap: wrap;
7543
+ gap: 0.5rem;
7544
+ }
7545
+
7546
+ .domma-chooser[data-variant="chip"] .picker-option {
7547
+ display: inline-flex;
7548
+ align-items: center;
7549
+ gap: 0.4rem;
7550
+ padding: 0.4rem 0.85rem;
7551
+ border: 1.5px solid var(--dm-border);
7552
+ border-radius: 999px;
7553
+ background: var(--dm-card-bg);
7554
+ color: var(--dm-text);
7555
+ font-size: 0.85rem;
7556
+ cursor: pointer;
7557
+ transition: border-color 0.15s, background 0.15s, color 0.15s;
7558
+ }
7559
+
7560
+ .domma-chooser[data-variant="chip"] .picker-option:hover:not(.is-disabled) {
7561
+ border-color: var(--picker-accent, var(--dm-primary));
7562
+ }
7563
+
7564
+ .domma-chooser[data-variant="chip"] .picker-option.is-selected {
7565
+ border-color: var(--picker-accent, var(--dm-primary));
7566
+ background: var(--picker-accent, var(--dm-primary));
7567
+ color: #fff;
7568
+ }
7569
+
7570
+ .domma-chooser[data-variant="chip"] .picker-option:focus-visible {
7571
+ outline: 2px solid var(--picker-accent, var(--dm-primary));
7572
+ outline-offset: 2px;
7573
+ }
7574
+
7575
+ .domma-chooser[data-variant="chip"] .picker-option-icon {
7576
+ width: auto;
7577
+ height: auto;
7578
+ background: transparent;
7579
+ padding: 0;
7580
+ color: inherit;
7581
+ }
7582
+
7583
+ .domma-chooser[data-variant="chip"] .picker-option-tick {
7584
+ display: none !important;
7585
+ }
7586
+
7587
+ /* Shared states */
7588
+ .domma-chooser .picker-option.is-disabled {
7589
+ opacity: 0.5;
7590
+ cursor: not-allowed;
7591
+ pointer-events: none;
7592
+ }
7593
+
7594
+ .domma-chooser .picker-option.is-recommended {
7595
+ border-color: var(--picker-rec-accent, var(--dm-success));
7596
+ }
7597
+
7598
+ /* Hidden native input for graceful submission */
7599
+ .domma-chooser .picker-native-input {
7600
+ position: absolute;
7601
+ width: 1px;
7602
+ height: 1px;
7603
+ padding: 0;
7604
+ margin: -1px;
7605
+ overflow: hidden;
7606
+ clip: rect(0, 0, 0, 0);
7607
+ white-space: nowrap;
7608
+ border: 0;
7609
+ }
7610
+
7611
+ @media (prefers-reduced-motion: reduce) {
7612
+ .domma-chooser .picker-option {
7613
+ transition: none;
7614
+ }
7615
+ }
7616
+
7617
+ /* ============================================================
7618
+ * Chooser — accent colour, accent style, glow, shadow extensions
7619
+ * ============================================================ */
7620
+
7621
+ /* Default the accent variables on every chooser */
7622
+ .domma-chooser {
7623
+ --picker-accent: var(--dm-primary);
7624
+ --picker-rec-accent: var(--dm-success);
7625
+ --picker-glow-colour: var(--picker-accent);
7626
+ --picker-shadow-colour: rgba(0, 0, 0, 0.1);
7627
+ }
7628
+
7629
+ /* Semantic accent colours */
7630
+ .domma-chooser[data-accent="primary"] { --picker-accent: var(--dm-primary); }
7631
+ .domma-chooser[data-accent="success"] { --picker-accent: var(--dm-success); }
7632
+ .domma-chooser[data-accent="info"] { --picker-accent: var(--dm-info); }
7633
+ .domma-chooser[data-accent="warning"] { --picker-accent: var(--dm-warning); }
7634
+ .domma-chooser[data-accent="danger"] { --picker-accent: var(--dm-danger); }
7635
+
7636
+ /* Semantic glow colours (overrides accent) */
7637
+ .domma-chooser[data-glow-colour="primary"] { --picker-glow-colour: var(--dm-primary); }
7638
+ .domma-chooser[data-glow-colour="success"] { --picker-glow-colour: var(--dm-success); }
7639
+ .domma-chooser[data-glow-colour="info"] { --picker-glow-colour: var(--dm-info); }
7640
+ .domma-chooser[data-glow-colour="warning"] { --picker-glow-colour: var(--dm-warning); }
7641
+ .domma-chooser[data-glow-colour="danger"] { --picker-glow-colour: var(--dm-danger); }
7642
+
7643
+ /* Glow on selected option */
7644
+ .domma-chooser[data-glow="true"] .picker-option.is-selected {
7645
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--picker-accent) 22%, transparent),
7646
+ 0 0 18px color-mix(in srgb, var(--picker-glow-colour) 60%, transparent);
7647
+ }
7648
+
7649
+ /* Shadow weights — applied to all options */
7650
+ .domma-chooser[data-shadow="sm"] .picker-option {
7651
+ box-shadow: 0 1px 2px var(--picker-shadow-colour, rgba(0, 0, 0, 0.08));
7652
+ }
7653
+ .domma-chooser[data-shadow="md"] .picker-option {
7654
+ box-shadow: 0 2px 6px var(--picker-shadow-colour, rgba(0, 0, 0, 0.10));
7655
+ }
7656
+ .domma-chooser[data-shadow="lg"] .picker-option {
7657
+ box-shadow: 0 6px 16px var(--picker-shadow-colour, rgba(0, 0, 0, 0.12));
7658
+ }
7659
+ .domma-chooser[data-shadow="xl"] .picker-option {
7660
+ box-shadow: 0 12px 28px var(--picker-shadow-colour, rgba(0, 0, 0, 0.14));
7661
+ }
7662
+
7663
+ /* When both glow + shadow are set, the selected option keeps glow on top */
7664
+ .domma-chooser[data-glow="true"][data-shadow="sm"] .picker-option.is-selected,
7665
+ .domma-chooser[data-glow="true"][data-shadow="md"] .picker-option.is-selected,
7666
+ .domma-chooser[data-glow="true"][data-shadow="lg"] .picker-option.is-selected,
7667
+ .domma-chooser[data-glow="true"][data-shadow="xl"] .picker-option.is-selected {
7668
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--picker-accent) 22%, transparent),
7669
+ 0 0 18px color-mix(in srgb, var(--picker-glow-colour) 60%, transparent);
7670
+ }
7671
+
7672
+ /* === Accent styles (default 'border' is the existing behaviour) === */
7673
+
7674
+ /* Solid: filled tile in the accent colour, white text */
7675
+ .domma-chooser[data-accent-style="solid"][data-variant="card"] .picker-option.is-selected {
7676
+ background: var(--picker-accent);
7677
+ border-color: var(--picker-accent);
7678
+ color: #fff;
7679
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--picker-accent) 22%, transparent);
7680
+ }
7681
+ .domma-chooser[data-accent-style="solid"][data-variant="card"] .picker-option.is-selected .picker-option-label,
7682
+ .domma-chooser[data-accent-style="solid"][data-variant="card"] .picker-option.is-selected .picker-option-desc,
7683
+ .domma-chooser[data-accent-style="solid"][data-variant="card"] .picker-option.is-selected .picker-option-icon {
7684
+ color: #fff;
7685
+ }
7686
+ .domma-chooser[data-accent-style="solid"][data-variant="card"] .picker-option.is-selected .picker-option-icon {
7687
+ background: rgba(255, 255, 255, 0.2);
7688
+ }
7689
+
7690
+ /* Glow style: clean transparent border, glowing accent ring */
7691
+ .domma-chooser[data-accent-style="glow"][data-variant="card"] .picker-option.is-selected {
7692
+ background: var(--dm-card-bg);
7693
+ border-color: transparent;
7694
+ box-shadow: 0 0 0 2px var(--picker-accent),
7695
+ 0 0 22px color-mix(in srgb, var(--picker-glow-colour) 65%, transparent);
7696
+ }
7697
+
7698
+ /* Overlay style: heavier translucent fill */
7699
+ .domma-chooser[data-accent-style="overlay"][data-variant="card"] .picker-option.is-selected {
7700
+ background: color-mix(in srgb, var(--picker-accent) 28%, var(--dm-card-bg));
7701
+ border-color: var(--picker-accent);
7702
+ box-shadow: none;
7703
+ }
7704
+
7705
+ /* Underline style: only a thick coloured bottom border */
7706
+ .domma-chooser[data-accent-style="underline"][data-variant="card"] .picker-option {
7707
+ border-bottom-width: 4px;
7708
+ border-bottom-color: transparent;
7709
+ }
7710
+ .domma-chooser[data-accent-style="underline"][data-variant="card"] .picker-option.is-selected {
7711
+ background: var(--dm-card-bg);
7712
+ border-color: var(--dm-border);
7713
+ border-bottom-color: var(--picker-accent);
7714
+ box-shadow: none;
7715
+ }
7716
+
7717
+ /* Chip variant: solid + glow + overlay also work for chips */
7718
+ .domma-chooser[data-accent-style="solid"][data-variant="chip"] .picker-option.is-selected {
7719
+ background: var(--picker-accent);
7720
+ border-color: var(--picker-accent);
7721
+ color: #fff;
7722
+ }
7723
+ .domma-chooser[data-accent-style="glow"][data-variant="chip"] .picker-option.is-selected {
7724
+ background: var(--dm-card-bg);
7725
+ color: var(--dm-text);
7726
+ border-color: var(--picker-accent);
7727
+ box-shadow: 0 0 0 1px var(--picker-accent),
7728
+ 0 0 16px color-mix(in srgb, var(--picker-glow-colour) 55%, transparent);
7729
+ }
7730
+ .domma-chooser[data-accent-style="overlay"][data-variant="chip"] .picker-option.is-selected {
7731
+ background: color-mix(in srgb, var(--picker-accent) 30%, var(--dm-card-bg));
7732
+ border-color: var(--picker-accent);
7733
+ color: var(--dm-text);
7734
+ }
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Domma Grid CSS v0.24.0
2
+ * Domma Grid CSS v0.25.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-05-02T17:40:23.697Z
6
- * Commit: ef7021b
5
+ * Built: 2026-05-09T09:27:08.365Z
6
+ * Commit: 5de0709
7
7
  */
8
8
 
9
9
  /**
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Domma Syntax Highlighting CSS v0.24.0
2
+ * Domma Syntax Highlighting CSS v0.25.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-05-02T17:40:23.709Z
6
- * Commit: ef7021b
5
+ * Built: 2026-05-09T09:27:08.380Z
6
+ * Commit: 5de0709
7
7
  */
8
8
 
9
9
  /**
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Domma Themes v0.24.0
2
+ * Domma Themes v0.25.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-05-02T17:40:23.677Z
6
- * Commit: ef7021b
5
+ * Built: 2026-05-09T09:27:08.341Z
6
+ * Commit: 5de0709
7
7
  */
8
8
 
9
9
  /**