@wpmoo/ui 2.1.1 → 2.2.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 (40) hide show
  1. package/README.md +23 -2
  2. package/THIRD_PARTY_NOTICES.md +1 -1
  3. package/certification.json +2 -1
  4. package/dist/assets/css/moo-ui.css +429 -1
  5. package/dist/assets/css/moo-ui.min.css +2 -2
  6. package/dist/assets/css/moo.css +349 -1
  7. package/dist/assets/css/moo.min.css +2 -2
  8. package/dist/js/chart.js +1 -1
  9. package/dist/js/chart.min.js +1 -1
  10. package/dist/js/combobox.js +1 -1
  11. package/dist/js/context-menu.js +1 -1
  12. package/dist/js/datatable.js +1 -1
  13. package/dist/js/datepicker.js +1 -1
  14. package/dist/js/datepicker.min.js +1 -1
  15. package/dist/js/floating-panel.js +1 -1
  16. package/dist/js/image-gallery.js +247 -0
  17. package/dist/js/moo-ui.js +238 -1
  18. package/dist/js/moo-ui.min.js +2 -2
  19. package/dist/js/overlay-scrollbar.js +1 -1
  20. package/dist/js/password-requirements.js +1 -1
  21. package/dist/js/sheet.js +1 -1
  22. package/dist/js/sidebar.js +1 -1
  23. package/dist/js/slider.js +1 -1
  24. package/dist/js/state.js +1 -1
  25. package/dist/js/table-of-contents.js +1 -1
  26. package/dist/js/toc.js +1 -1
  27. package/dist/release-manifest.json +4 -4
  28. package/package.json +3 -1
  29. package/scss/_components.scss +2 -0
  30. package/scss/components/_gallery.scss +73 -0
  31. package/scss/components/_item.scss +96 -0
  32. package/scss/foundations/_globals.scss +1 -0
  33. package/scss/foundations/_scope.scss +2 -0
  34. package/scss/mixins/_banner.scss +1 -1
  35. package/scss/moo-core.scss +1 -0
  36. package/scss/moo-ui.scss +2 -0
  37. package/scss/settings/_component_variables.scss +8 -0
  38. package/scss/utilities/_gallery.scss +25 -0
  39. package/scss/utilities/_motion.scss +5 -0
  40. package/scss/utilities/_motion_primitives.scss +10 -0
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Moo UI v2.1.1 (https://wpmoo.org/)
2
+ * Moo UI v2.2.0 (https://wpmoo.org/)
3
3
  * Copyright 2026 WPMoo Authors
4
4
  * Licensed under MIT (https://github.com/wpmoo-org/ui/blob/main/LICENSE)
5
5
  *
@@ -69,6 +69,16 @@
69
69
  }
70
70
  }
71
71
 
72
+ @keyframes moo-breathe {
73
+ 0%,
74
+ 100% {
75
+ transform: scale(0.9);
76
+ }
77
+ 50% {
78
+ transform: scale(1);
79
+ }
80
+ }
81
+
72
82
  html.scrollbar-overlay-native {
73
83
  scrollbar-width: none;
74
84
  }
@@ -4496,6 +4506,86 @@ label.btn {
4496
4506
  gap: 0.5rem;
4497
4507
  }
4498
4508
 
4509
+ /* Item */
4510
+ .item {
4511
+ display: flex;
4512
+ flex-wrap: wrap;
4513
+ align-items: center;
4514
+ gap: 1rem;
4515
+ min-width: 0;
4516
+ padding: 0.75rem 1rem;
4517
+ color: var(--bs-body-color);
4518
+ text-decoration: none;
4519
+ border: var(--bs-border-width) solid transparent;
4520
+ border-radius: var(--bs-border-radius-lg);
4521
+ }
4522
+ .item-outline {
4523
+ border-color: var(--bs-border-color);
4524
+ }
4525
+ .item-muted {
4526
+ background-color: var(--bs-tertiary-bg);
4527
+ }
4528
+ .item-sm {
4529
+ gap: 0.75rem;
4530
+ padding: 0.5rem 0.75rem;
4531
+ }
4532
+ a.item:hover {
4533
+ color: var(--bs-body-color);
4534
+ background-color: var(--bs-tertiary-bg);
4535
+ }
4536
+ .item-media {
4537
+ display: flex;
4538
+ flex-shrink: 0;
4539
+ align-items: center;
4540
+ justify-content: center;
4541
+ align-self: flex-start;
4542
+ }
4543
+ .item-media-icon {
4544
+ width: 2.35547rem;
4545
+ height: 2.35547rem;
4546
+ color: var(--bs-body-color);
4547
+ background-color: var(--bs-tertiary-bg);
4548
+ border: var(--bs-border-width) solid var(--bs-border-color);
4549
+ border-radius: var(--bs-border-radius);
4550
+ }
4551
+ .item-media-icon > [data-icon] {
4552
+ width: 1rem;
4553
+ height: 1rem;
4554
+ }
4555
+ .item-content {
4556
+ display: flex;
4557
+ flex: 1 1 0;
4558
+ flex-direction: column;
4559
+ gap: 0.25rem;
4560
+ min-width: 0;
4561
+ }
4562
+ .item-title {
4563
+ margin: 0;
4564
+ font-size: 0.76562rem;
4565
+ font-weight: 500;
4566
+ line-height: 1.25;
4567
+ }
4568
+ .item-description {
4569
+ margin: 0;
4570
+ font-size: 0.76562rem;
4571
+ line-height: 1.5;
4572
+ color: var(--bs-secondary-color);
4573
+ }
4574
+ .item-actions {
4575
+ display: flex;
4576
+ flex-wrap: wrap;
4577
+ align-items: center;
4578
+ gap: 0.5rem;
4579
+ }
4580
+ .item-group {
4581
+ display: flex;
4582
+ flex-direction: column;
4583
+ gap: 0.5rem;
4584
+ padding: 0;
4585
+ margin: 0;
4586
+ list-style: none;
4587
+ }
4588
+
4499
4589
  /* Table */
4500
4590
  .card .table {
4501
4591
  --bs-table-bg: transparent;
@@ -7929,6 +8019,174 @@ label.btn {
7929
8019
  .datatable--release-review {
7930
8020
  --moo-datatable-min-width: 64rem;
7931
8021
  }
8022
+ .gallery-justified {
8023
+ --moo-gallery-row-height: 6rem;
8024
+ display: flex;
8025
+ flex-wrap: wrap;
8026
+ }
8027
+ @media (min-width: 768px) {
8028
+ .gallery-justified {
8029
+ --moo-gallery-row-height: 8rem;
8030
+ }
8031
+ }
8032
+ .gallery-justified > * {
8033
+ flex: var(--moo-gallery-ratio, 1) 1 calc(var(--moo-gallery-ratio, 1) * var(--moo-gallery-row-height));
8034
+ aspect-ratio: var(--moo-gallery-ratio, 1);
8035
+ }
8036
+ .gallery-justified::after {
8037
+ flex-grow: 1e9;
8038
+ content: "";
8039
+ }
8040
+ .gallery-stage {
8041
+ height: min(62svh, 38rem);
8042
+ }
8043
+ .gallery-strip {
8044
+ display: flex;
8045
+ --moo-gallery-strip-height: 13rem;
8046
+ flex-wrap: nowrap;
8047
+ overflow-x: auto;
8048
+ scroll-snap-type: x proximity;
8049
+ contain: inline-size;
8050
+ }
8051
+ .gallery-strip > * {
8052
+ flex: none;
8053
+ width: calc(var(--moo-gallery-ratio, 1) * var(--moo-gallery-strip-height));
8054
+ max-width: 85%;
8055
+ height: var(--moo-gallery-strip-height);
8056
+ scroll-snap-align: start;
8057
+ }
8058
+ .gallery-strip::after {
8059
+ content: none;
8060
+ }
8061
+ .gallery-strip.gallery-strip-bleed {
8062
+ margin-inline: calc(-1 * var(--moo-gallery-strip-bleed, 0.75rem));
8063
+ padding-inline: var(--moo-gallery-strip-bleed, 0.75rem);
8064
+ scroll-padding-inline: var(--moo-gallery-strip-bleed, 0.75rem);
8065
+ }
8066
+ @media (max-width: 575.98px) {
8067
+ .gallery-strip-sm-down {
8068
+ --moo-gallery-strip-height: 13rem;
8069
+ flex-wrap: nowrap;
8070
+ overflow-x: auto;
8071
+ scroll-snap-type: x proximity;
8072
+ contain: inline-size;
8073
+ }
8074
+ .gallery-strip-sm-down > * {
8075
+ flex: none;
8076
+ width: calc(var(--moo-gallery-ratio, 1) * var(--moo-gallery-strip-height));
8077
+ max-width: 85%;
8078
+ height: var(--moo-gallery-strip-height);
8079
+ scroll-snap-align: start;
8080
+ }
8081
+ .gallery-strip-sm-down::after {
8082
+ content: none;
8083
+ }
8084
+ .gallery-strip-sm-down.gallery-strip-bleed {
8085
+ margin-inline: calc(-1 * var(--moo-gallery-strip-bleed, 0.75rem));
8086
+ padding-inline: var(--moo-gallery-strip-bleed, 0.75rem);
8087
+ scroll-padding-inline: var(--moo-gallery-strip-bleed, 0.75rem);
8088
+ }
8089
+ }
8090
+ @media (max-width: 767.98px) {
8091
+ .gallery-strip-md-down {
8092
+ --moo-gallery-strip-height: 13rem;
8093
+ flex-wrap: nowrap;
8094
+ overflow-x: auto;
8095
+ scroll-snap-type: x proximity;
8096
+ contain: inline-size;
8097
+ }
8098
+ .gallery-strip-md-down > * {
8099
+ flex: none;
8100
+ width: calc(var(--moo-gallery-ratio, 1) * var(--moo-gallery-strip-height));
8101
+ max-width: 85%;
8102
+ height: var(--moo-gallery-strip-height);
8103
+ scroll-snap-align: start;
8104
+ }
8105
+ .gallery-strip-md-down::after {
8106
+ content: none;
8107
+ }
8108
+ .gallery-strip-md-down.gallery-strip-bleed {
8109
+ margin-inline: calc(-1 * var(--moo-gallery-strip-bleed, 0.75rem));
8110
+ padding-inline: var(--moo-gallery-strip-bleed, 0.75rem);
8111
+ scroll-padding-inline: var(--moo-gallery-strip-bleed, 0.75rem);
8112
+ }
8113
+ }
8114
+ @media (max-width: 991.98px) {
8115
+ .gallery-strip-lg-down {
8116
+ --moo-gallery-strip-height: 13rem;
8117
+ flex-wrap: nowrap;
8118
+ overflow-x: auto;
8119
+ scroll-snap-type: x proximity;
8120
+ contain: inline-size;
8121
+ }
8122
+ .gallery-strip-lg-down > * {
8123
+ flex: none;
8124
+ width: calc(var(--moo-gallery-ratio, 1) * var(--moo-gallery-strip-height));
8125
+ max-width: 85%;
8126
+ height: var(--moo-gallery-strip-height);
8127
+ scroll-snap-align: start;
8128
+ }
8129
+ .gallery-strip-lg-down::after {
8130
+ content: none;
8131
+ }
8132
+ .gallery-strip-lg-down.gallery-strip-bleed {
8133
+ margin-inline: calc(-1 * var(--moo-gallery-strip-bleed, 0.75rem));
8134
+ padding-inline: var(--moo-gallery-strip-bleed, 0.75rem);
8135
+ scroll-padding-inline: var(--moo-gallery-strip-bleed, 0.75rem);
8136
+ }
8137
+ }
8138
+ @media (max-width: 1199.98px) {
8139
+ .gallery-strip-xl-down {
8140
+ --moo-gallery-strip-height: 13rem;
8141
+ flex-wrap: nowrap;
8142
+ overflow-x: auto;
8143
+ scroll-snap-type: x proximity;
8144
+ contain: inline-size;
8145
+ }
8146
+ .gallery-strip-xl-down > * {
8147
+ flex: none;
8148
+ width: calc(var(--moo-gallery-ratio, 1) * var(--moo-gallery-strip-height));
8149
+ max-width: 85%;
8150
+ height: var(--moo-gallery-strip-height);
8151
+ scroll-snap-align: start;
8152
+ }
8153
+ .gallery-strip-xl-down::after {
8154
+ content: none;
8155
+ }
8156
+ .gallery-strip-xl-down.gallery-strip-bleed {
8157
+ margin-inline: calc(-1 * var(--moo-gallery-strip-bleed, 0.75rem));
8158
+ padding-inline: var(--moo-gallery-strip-bleed, 0.75rem);
8159
+ scroll-padding-inline: var(--moo-gallery-strip-bleed, 0.75rem);
8160
+ }
8161
+ }
8162
+ @media (max-width: 1399.98px) {
8163
+ .gallery-strip-xxl-down {
8164
+ --moo-gallery-strip-height: 13rem;
8165
+ flex-wrap: nowrap;
8166
+ overflow-x: auto;
8167
+ scroll-snap-type: x proximity;
8168
+ contain: inline-size;
8169
+ }
8170
+ .gallery-strip-xxl-down > * {
8171
+ flex: none;
8172
+ width: calc(var(--moo-gallery-ratio, 1) * var(--moo-gallery-strip-height));
8173
+ max-width: 85%;
8174
+ height: var(--moo-gallery-strip-height);
8175
+ scroll-snap-align: start;
8176
+ }
8177
+ .gallery-strip-xxl-down::after {
8178
+ content: none;
8179
+ }
8180
+ .gallery-strip-xxl-down.gallery-strip-bleed {
8181
+ margin-inline: calc(-1 * var(--moo-gallery-strip-bleed, 0.75rem));
8182
+ padding-inline: var(--moo-gallery-strip-bleed, 0.75rem);
8183
+ scroll-padding-inline: var(--moo-gallery-strip-bleed, 0.75rem);
8184
+ }
8185
+ }
8186
+ .gallery-progress {
8187
+ --bs-progress-height: var(--moo-gallery-progress-height, 0.25rem);
8188
+ opacity: var(--moo-gallery-progress-opacity, 0.08);
8189
+ }
7932
8190
 
7933
8191
  /* Focus and keyboard navigation */
7934
8192
  .form-label,
@@ -8072,6 +8330,91 @@ label.btn {
8072
8330
  text-align: center !important;
8073
8331
  }
8074
8332
  }
8333
+ .ratio-3x2 {
8334
+ --bs-aspect-ratio: calc(2 / 3 * 100%);
8335
+ }
8336
+ .columns-1 {
8337
+ column-count: 1 !important;
8338
+ }
8339
+ .columns-2 {
8340
+ column-count: 2 !important;
8341
+ }
8342
+ .columns-3 {
8343
+ column-count: 3 !important;
8344
+ }
8345
+ .columns-4 {
8346
+ column-count: 4 !important;
8347
+ }
8348
+ @media (min-width: 576px) {
8349
+ .columns-sm-1 {
8350
+ column-count: 1 !important;
8351
+ }
8352
+ .columns-sm-2 {
8353
+ column-count: 2 !important;
8354
+ }
8355
+ .columns-sm-3 {
8356
+ column-count: 3 !important;
8357
+ }
8358
+ .columns-sm-4 {
8359
+ column-count: 4 !important;
8360
+ }
8361
+ }
8362
+ @media (min-width: 768px) {
8363
+ .columns-md-1 {
8364
+ column-count: 1 !important;
8365
+ }
8366
+ .columns-md-2 {
8367
+ column-count: 2 !important;
8368
+ }
8369
+ .columns-md-3 {
8370
+ column-count: 3 !important;
8371
+ }
8372
+ .columns-md-4 {
8373
+ column-count: 4 !important;
8374
+ }
8375
+ }
8376
+ @media (min-width: 992px) {
8377
+ .columns-lg-1 {
8378
+ column-count: 1 !important;
8379
+ }
8380
+ .columns-lg-2 {
8381
+ column-count: 2 !important;
8382
+ }
8383
+ .columns-lg-3 {
8384
+ column-count: 3 !important;
8385
+ }
8386
+ .columns-lg-4 {
8387
+ column-count: 4 !important;
8388
+ }
8389
+ }
8390
+ @media (min-width: 1200px) {
8391
+ .columns-xl-1 {
8392
+ column-count: 1 !important;
8393
+ }
8394
+ .columns-xl-2 {
8395
+ column-count: 2 !important;
8396
+ }
8397
+ .columns-xl-3 {
8398
+ column-count: 3 !important;
8399
+ }
8400
+ .columns-xl-4 {
8401
+ column-count: 4 !important;
8402
+ }
8403
+ }
8404
+ @media (min-width: 1400px) {
8405
+ .columns-xxl-1 {
8406
+ column-count: 1 !important;
8407
+ }
8408
+ .columns-xxl-2 {
8409
+ column-count: 2 !important;
8410
+ }
8411
+ .columns-xxl-3 {
8412
+ column-count: 3 !important;
8413
+ }
8414
+ .columns-xxl-4 {
8415
+ column-count: 4 !important;
8416
+ }
8417
+ }
8075
8418
  :where( .scroll-fade, .scroll-fade-y, .scroll-fade-x, .scroll-fade-t, .scroll-fade-b, .scroll-fade-l, .scroll-fade-r, .scroll-fade-s, .scroll-fade-e ) {
8076
8419
  --scroll-fade-size: min(12%, 2.5rem);
8077
8420
  --scroll-fade-reveal: 6rem;
@@ -8303,6 +8646,11 @@ label.btn {
8303
8646
  scroll-behavior: auto;
8304
8647
  }
8305
8648
  }
8649
+ @media (prefers-reduced-motion: no-preference) {
8650
+ .animate-breathe {
8651
+ animation: moo-breathe 2s ease-in-out infinite;
8652
+ }
8653
+ }
8306
8654
 
8307
8655
  /* Application layout */
8308
8656
  .sidebar {