Plugin Directory

Changeset 3389865


Ignore:
Timestamp:
11/04/2025 05:58:54 PM (5 months ago)
Author:
attributeswp
Message:

fix: Regenerate minified assets with proper compression

  • Rebuilt all CSS/JS minified files from original sources
  • Added smart asset path resolution with fallback system
  • Fixed missing admin.min.js causing asset loading issues
  • Optimized file sizes for production deployment

This ensures consistent minification and improved performance.

Location:
attributes-user-access
Files:
196 added
4 edited

Legend:

Unmodified
Added
Removed
  • attributes-user-access/trunk/assets/css/min/admin.min.css

    r3389830 r3389865  
     1body[class*="attributes-user-access"] {
     2    background: #e6e2ef
     3}
     4
     5#wpbody {
     6    padding: 0 20px
     7}
     8
     9#wpbody-content {
     10    display: flex;
     11    flex-wrap: wrap;
     12    flex-direction: column
     13}
     14
     15#wpbody-content>div {
     16    order: 1
     17}
     18
     19#wpcontent {
     20    min-height: calc(100vh - 40px)
     21}
     22
     23.attrua {
     24    font-family: "attr";
     25    font-style: normal;
     26    font-weight: normal;
     27    display: inline-block;
     28    text-decoration: inherit;
     29    width: 1em;
     30    margin-right: .2em;
     31    text-align: center;
     32    font-variant: normal;
     33    text-transform: none;
     34    line-height: 1em;
     35    margin-left: .2em;
     36    -webkit-font-smoothing: antialiased;
     37    -moz-osx-font-smoothing: grayscale
     38}
     39
     40body[class*="attributes-user-access"] {
     41    background: #e6e2ef
     42}
     43
     44body[class*="attributes-user-access"] #wpcontent {
     45    padding: 0
     46}
     47
     48body[class*="attributes-user-access"] ul#adminmenu a.wp-has-current-submenu:after,
     49body[class*="attributes-user-access"] ul#adminmenu>li.current>a.current:after {
     50    border-right-color: #e6e2ef
     51}
     52
     53.attrua-masthead {
     54    background: #fff;
     55    width: calc(100% - -40px);
     56    height: 100px;
     57    border-bottom: 1px solid #e2e4e7;
     58    order: 0 !important;
     59    margin-left: -20px
     60}
     61
     62.attrua-masthead-container {
     63    display: flex;
     64    height: 100px;
     65    justify-content: center;
     66    align-items: center;
     67    width: 100%
     68}
     69
     70.attrua-masthead-logo-container {
     71    width: 1024px;
     72    text-align: center;
     73    font-size: 40px;
     74    display: flex;
     75    justify-content: center;
     76    align-items: center;
     77    gap: 20px;
     78    font-weight: 600
     79}
     80
     81.attrua-version-number {
     82    font-size: large;
     83    color: #999
     84}
     85
     86body[class*="attributes-user-access"] #wpcontent {
     87    padding: 0
     88}
     89
     90.attrua-wrapper {
     91    padding: 20px
     92}
     93
     94.attrua-wrapper .attrua-nav-tabs {
     95    display: none
     96}
     97
     98.attrua-tab-content {
     99    position: relative;
     100    margin: 40px 0 20px;
     101    background: #fff;
     102    padding: 40px;
     103    border-radius: 20px;
     104    box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.1)
     105}
     106
     107.attrua-tab-content .description {
     108    display: flex;
     109    flex-wrap: wrap;
     110    gap: 20px;
     111    margin-bottom: 30px
     112}
     113
     114.attrua-tab-content .description>div {
     115    flex: 1;
     116    min-width: 300px
     117}
     118
     119.attrua-tab-content .description h3 {
     120    margin-top: 0;
     121    color: #1d2327
     122}
     123
     124.attrua-footerline {
     125    text-align: center;
     126    margin: 20px 0;
     127    color: #646970
     128}
     129
     130.attrua-footerline a {
     131    color: #2271b1;
     132    text-decoration: none
     133}
     134
     135.attrua-footerline a:hover {
     136    color: #135e96
     137}
     138
     139.attrua-settings-section {
     140    margin-top: 20px;
     141    background: #fff;
     142    border: 1px solid #c3c4c7;
     143    box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
     144    border-radius: 4px;
     145    overflow: hidden
     146}
     147
     148.attrua-settings-section h2 {
     149    margin: 0 0 15px;
     150    padding: 0;
     151    font-size: 1.4em;
     152    font-weight: 600
     153}
     154
     155.attrua-section-header {
     156    padding: 20px 20px 0
     157}
     158
     159.attrua-settings-section .description {
     160    margin-bottom: 20px;
     161    color: #646970
     162}
     163
     164.attrua-settings-section .form-table {
     165    margin-top: 0
     166}
     167
     168.attrua-settings-section .form-table th {
     169    padding: 20px;
     170    vertical-align: top;
     171    font-weight: 600
     172}
     173
     174.attrua-settings-section .form-table.attrua-pages-table th {
     175    vertical-align: middle
     176}
     177
     178.attrua-settings-section .form-table td {
     179    padding: 20px 10px;
     180    vertical-align: middle
     181}
     182
     183.attrua-settings-section fieldset {
     184    margin: 0;
     185    padding: 0;
     186    border: none
     187}
     188
     189.attrua-settings-section legend {
     190    margin: 0 0 10px;
     191    font-weight: 600
     192}
     193
     194.attrua-pages-table {
     195    border-collapse: collapse;
     196    width: 100%
     197}
     198
     199.attrua-pages-table th,
     200.attrua-pages-table td {
     201    padding: 15px;
     202    border-bottom: 1px solid #e2e4e7
     203}
     204
     205.attrua-page-title {
     206    width: 100%;
     207    padding: 8px;
     208    border: 1px solid #dcdcde;
     209    border-radius: 4px
     210}
     211
     212.attrua-page-title-display,
     213.attrua-page-slug-display {
     214    font-weight: normal
     215}
     216
     217.attrua-page-control {
     218    position: relative
     219}
     220
     221.attrua-page-row code {
     222    font-family: monospace;
     223    color: #666;
     224    padding: 8px;
     225    background: #f0f0f1;
     226    border-radius: 4px;
     227    width: fit-content
     228}
     229
     230.attrua-page-shortcode {
     231    display: flex;
     232    align-items: center;
     233    gap: 8px
     234}
     235
     236.attrua-copy-shortcode {
     237    padding: 2px 8px;
     238    background: #fff;
     239    border-radius: 3px;
     240    cursor: pointer;
     241    font-size: 20px;
     242    border: none;
     243    color: #2196F3
     244}
     245
     246.attrua-copy-shortcode:hover {
     247    background: #f6f7f7
     248}
     249
     250.attrua-page-prefix {
     251    padding: 8px 3px
     252}
     253
     254.attrua-page-actions {
     255    display: flex;
     256    gap: 8px
     257}
     258
     259.attrua-page-actions .button {
     260    display: inline-flex;
     261    align-items: center;
     262    min-width: 80px;
     263    justify-content: center
     264}
     265
     266.attrua-page-actions .attrua-delete {
     267    border-color: #d63638;
     268    color: #d63638
     269}
     270
     271.attrua-page-actions .attrua-delete:hover {
     272    border-color: #a12224;
     273    color: #a12224
     274}
     275
     276.attrua-page-actions .button:disabled {
     277    opacity: 0.7;
     278    cursor: wait
     279}
     280
     281.attrua-redirect-toggle {
     282    display: flex;
     283    align-items: center;
     284    gap: 8px
     285}
     286
     287.attrua-redirect-url {
     288    margin-top: 4px;
     289    display: block;
     290    color: #666;
     291    font-family: monospace;
     292    word-break: break-all;
     293    white-space: nowrap;
     294    overflow: hidden;
     295    text-overflow: ellipsis;
     296    padding: 4px 8px;
     297    border-radius: 4px;
     298    width: 100%
     299}
     300
     301.attrua-redirect-toggle .slider {
     302    position: relative;
     303    display: inline-block;
     304    width: 100px;
     305    max-width: 40px;
     306    height: 24px;
     307    background-color: #ccc;
     308    border-radius: 12px;
     309    transition: .4s;
     310    cursor: pointer
     311}
     312
     313.attrua-redirect-toggle .slider:before {
     314    position: absolute;
     315    content: "";
     316    height: 16px;
     317    width: 16px;
     318    left: 4px;
     319    bottom: 4px;
     320    background-color: white;
     321    transition: .4s;
     322    border-radius: 50%
     323}
     324
     325.attrua-redirect-toggle input:checked+.slider {
     326    background-color: #2196F3
     327}
     328
     329.attrua-redirect-toggle input:checked+.slider:before {
     330    transform: translateX(16px)
     331}
     332
     333.attrua-redirect-toggle input {
     334    opacity: 0
     335}
     336
     337input:disabled+.slider {
     338    background-color: #e0e0e0;
     339    cursor: not-allowed
     340}
     341
     342.attrua-settings-section input[type="text"] {
     343    font-weight: normal;
     344    background: #f8fcff;
     345    border-color: #b9c6d3
     346}
     347
     348@media screen and (max-width:782px) {
     349    .attrua-settings-section .form-table th {
     350        padding-bottom: 10px
     351    }
     352
     353    .attrua-settings-section .form-table td {
     354        padding-left: 0
     355    }
     356
     357    .attrua-page-actions {
     358        flex-direction: column
     359    }
     360
     361    .attrua-page-actions .button {
     362        width: 100%;
     363        margin-bottom: 8px
     364    }
     365}
     366
     367.attrua-field-error {
     368    border-color: #d63638 !important;
     369    box-shadow: 0 0 0 1px #d63638 !important;
     370    outline: 2px solid transparent
     371}
     372
     373.attrua-notification.error,
     374.attrua-error {
     375    border-left: 4px solid #d63638;
     376    animation: shake 0.5s cubic-bezier(.36, .07, .19, .97) both
     377}
     378
     379@keyframes shake {
     380
     381    10%,
     382    90% {
     383        transform: translate3d(-1px, 0, 0)
     384    }
     385
     386    20%,
     387    80% {
     388        transform: translate3d(2px, 0, 0)
     389    }
     390
     391    30%,
     392    50%,
     393    70% {
     394        transform: translate3d(-4px, 0, 0)
     395    }
     396
     397    40%,
     398    60% {
     399        transform: translate3d(4px, 0, 0)
     400    }
     401}
     402
     403.attrua-notifications-container {
     404    position: fixed;
     405    bottom: 20px;
     406    right: 20px;
     407    width: 300px;
     408    z-index: 9999;
     409    display: flex;
     410    flex-direction: column-reverse;
     411    gap: 10px
     412}
     413
     414.attrua-notification {
     415    color: #fff;
     416    border-radius: 8px;
     417    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1), 0 4px 8px rgba(0, 0, 0, 0.1);
     418    overflow: hidden;
     419    display: flex;
     420    align-items: start;
     421    opacity: 0;
     422    transform: translateX(100%);
     423    transition: all 0.3s ease
     424}
     425
     426.attrua-notification.show {
     427    opacity: 1;
     428    transform: translateX(0)
     429}
     430
     431.attrua-notification.success {
     432    background: #00a3297e
     433}
     434
     435.attrua-notification.error {
     436    background: #d636397c
     437}
     438
     439.attrua-notification.warning {
     440    background: #ffb900
     441}
     442
     443.attrua-notification.info {
     444    background: #00a0d2
     445}
     446
     447.attrua-notification-content {
     448    padding: 12px 40px 12px 12px;
     449    position: relative;
     450    flex-grow: 1;
     451    display: flex;
     452    align-items: center;
     453    justify-content: space-between;
     454    line-height: 1.4
     455}
     456
     457.attrua-notification-dismiss {
     458    position: absolute;
     459    top: 11.5px;
     460    right: 8px;
     461    border: none;
     462    background: none;
     463    cursor: pointer;
     464    padding: 4px;
     465    color: #fff;
     466    border-radius: 50%;
     467    line-height: 1
     468}
     469
     470.attrua-notification-dismiss:hover {
     471    color: #1e1e1e;
     472    background: #f0f0f0
     473}
     474
     475.attrua-notification.hide {
     476    opacity: 0;
     477    transform: translateX(100%)
     478}
     479
     480.attrua-notification .dashicons {
     481    font-size: 16px;
     482    width: 16px;
     483    height: 16px
     484}
     485
     486@media screen and (max-width:782px) {
     487    .attrua-notifications-container {
     488        top: 46px;
     489        right: 10px
     490    }
     491}
     492
     493body:not(.admin-bar) .attrua-notifications-container {
     494    top: 10px
     495}
     496
     497.attrua-premium-feature {
     498    position: relative;
     499    padding-right: 100px
     500}
     501
     502.attrua-premium-badge {
     503    position: absolute;
     504    top: 20px;
     505    right: 20px;
     506    padding: 4px 8px;
     507    background: #2271b1;
     508    color: #fff;
     509    font-size: 12px;
     510    font-weight: 600;
     511    border-radius: 3px
     512}
     513
     514.attrua-settings-section a:focus,
     515.attrua-settings-section button:focus,
     516.attrua-settings-section input:focus {
     517    box-shadow: 0 0 0 1px #2271b1, 0 0 2px 1px rgba(34, 113, 177, 0.8);
     518    outline: 1px solid transparent
     519}
     520
     521.screen-reader-text:not(:focus) {
     522    position: absolute !important;
     523    width: 1px !important;
     524    height: 1px !important;
     525    padding: 0 !important;
     526    margin: -1px !important;
     527    overflow: hidden !important;
     528    clip: rect(0, 0, 0, 0) !important;
     529    white-space: nowrap !important;
     530    border: 0 !important
     531}
     532
    1533.attrua {
    2534    font-family: attr;
  • attributes-user-access/trunk/assets/css/min/front.min.css

    r3331069 r3389865  
    1 .attrua-form-wrapper{max-width:480px;margin:2rem auto;padding:2rem;background:var(--attrua-form-bg,#fff);border-radius:.5rem;box-shadow:0 2px 4px rgba(0,0,0,.1)}@media (prefers-color-scheme:dark){.attrua-form-wrapper{--attrua-form-bg:#1a1a1a;--attrua-text-color:#ffffff;--attrua-border-color:#333333}}.attrua-form-description{font-size:13px;background:#f3f4f6;padding:15px;border-radius:5px;margin-bottom:20px}.attrua-form-row{margin-bottom:1.5rem}.attrua-form-row label{display:block;margin-bottom:.5rem;color:var(--attrua-label-color,#333);font-weight:500;font-size:18px}.attrua-form-row label .required{color:#f44336}.attrua-form-row .description{font-size:12px;font-style:italic}.attrua-input{width:100%;width:-moz-available;width:-webkit-fill-available;padding:.75rem;border:1px solid var(--attrua-border-color,#d1d5db);border-radius:.375rem;background-color:var(--attrua-input-bg,#fff);color:var(--attrua-text-color,#1a1a1a);transition:border-color .2s ease}.attrua-input:focus{outline:0;border-color:var(--attrua-primary-color,#2563eb);box-shadow:0 0 0 2px rgba(37,99,235,.2)}.attrua-password-field{position:relative}.attrua-toggle-password{position:absolute;right:.75rem;top:50%;transform:translateY(-50%);padding:.25rem;background:0 0;border:none;color:var(--attrua-icon-color,#6b7280);cursor:pointer;opacity:.8;transition:opacity .2s ease}.attrua-toggle-password:hover{opacity:1}.attrua-instructions{margin:1rem 0;padding:1rem;background-color:var(--attrua-requirements-bg,#f3f4f6);border-radius:.375rem;font-size:12px}.attrua-instructions,.attrua-password-requirements{margin:1rem 0;padding:1rem;background-color:var(--attrua-requirements-bg,#f3f4f6);border-radius:.375rem;font-size:12px}.attrua-instructions h5,.attrua-password-requirements h5{margin-top:0}.attrua-password-requirements ul{margin:0;padding:0;list-style:none}.attrua-password-requirements li{position:relative;padding-left:1.5rem;margin-bottom:.5rem;color:var(--attrua-text-muted,#6b7280);transition:color .2s ease}.attrua-password-requirements li::before{content:'';position:absolute;left:0;top:50%;transform:translateY(-50%);width:1rem;height:1rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%236b7280'%3E%3Cpath fill-rule='evenodd' d='M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z' clip-rule='evenodd'/%3E%3C/svg%3E");background-size:contain;opacity:.5;transition:opacity .2s ease}.attrua-password-requirements li.met{color:var(--attrua-success-color,#059669)}.attrua-password-requirements li.met::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%23059669'%3E%3Cpath fill-rule='evenodd' d='M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z' clip-rule='evenodd'/%3E%3C/svg%3E");opacity:1}.attrua-submit-button{width:100%;padding:.75rem 1.5rem;background-color:var(--attrua-primary-color,#2563eb);color:#fff;border:none;border-radius:.375rem;font-size:20px;font-weight:500;cursor:pointer;transition:background-color .2s ease}.attrua-submit-button:hover{background-color:var(--attrua-primary-dark,#1d4ed8)}.attrua-submit-button:disabled{background-color:var(--attrua-disabled-color,#9ca3af);cursor:not-allowed}.attrua-form-links{margin-top:1.5rem;text-align:center;font-size:.875rem}.attrua-form-links a{color:var(--attrua-link-color,#2563eb);text-decoration:none;transition:color .2s ease}.attrua-form-links a:hover{color:var(--attrua-link-hover,#1d4ed8);text-decoration:underline}.attrua-link-separator{margin:0 .5rem;color:var(--attrua-text-muted,#6b7280)}.attrua-message-container{margin-bottom:1.5rem;padding:1rem;border-radius:.375rem;font-size:.875rem}.attrua-message-container.error{background-color:var(--attrua-error-bg,#fee2e2);color:var(--attrua-error-text,#991b1b);border:1px solid var(--attrua-error-border,#fecaca)}.attrua-message-container.success{background-color:var(--attrua-success-bg,#dcfce7);color:var(--attrua-success-text,#166534);border:1px solid var(--attrua-success-border,#bbf7d0)}.attrua-field-error{margin-top:.5rem;font-size:.875rem;color:var(--attrua-error-text,#991b1b)}@media (max-width:640px){.attrua-form-wrapper{margin:1rem;padding:1.5rem}.attrua-form-row{margin-bottom:1rem}.attrua-password-requirements{padding:.75rem}}[dir=rtl] .attrua-toggle-password{right:auto;left:.75rem}[dir=rtl] .attrua-password-requirements li{padding-left:0;padding-right:1.5rem}[dir=rtl] .attrua-password-requirements li::before{left:auto;right:0}@media (prefers-reduced-motion:reduce){.attrua-input,.attrua-strength-meter::before,.attrua-submit-button{transition:none}}.attrua-input:focus-visible,.attrua-submit-button:focus-visible,.attrua-toggle-password:focus-visible{outline:2px solid var(--attrua-focus-ring,#3b82f6);outline-offset:2px}@media (forced-colors:active){.attrua-submit-button{border:1px solid ButtonText}.attrua-strength-meter::before{background-color:Highlight}}
    2 /*# sourceMappingURL=front.min.css.map */
     1.attrua-form-wrapper {
     2    max-width: 480px;
     3    margin: 2rem auto;
     4    padding: 2rem;
     5    background: var(--attrua-form-bg, #ffffff);
     6    border-radius: 0.5rem;
     7    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1)
     8}
     9
     10@media (prefers-color-scheme:dark) {
     11    .attrua-form-wrapper {
     12        --attrua-form-bg: #1a1a1a;
     13        --attrua-text-color: #ffffff;
     14        --attrua-border-color: #333333
     15    }
     16}
     17
     18.attrua-form-description {
     19    font-size: 13px;
     20    background: #f3f4f6;
     21    padding: 15px;
     22    border-radius: 5px;
     23    margin-bottom: 20px
     24}
     25
     26.attrua-form-row {
     27    margin-bottom: 1.5rem
     28}
     29
     30.attrua-form-row label {
     31    display: block;
     32    margin-bottom: 0.5rem;
     33    color: var(--attrua-label-color, #333333);
     34    font-weight: 500;
     35    font-size: 18px
     36}
     37
     38.attrua-form-row label .required {
     39    color: #F44336
     40}
     41
     42.attrua-form-row .description {
     43    font-size: 16px;
     44    font-style: italic;
     45    line-height: 1
     46}
     47
     48.attrua-input {
     49    width: 100%;
     50    width: -moz-available;
     51    width: -webkit-fill-available;
     52    padding: 0.75rem;
     53    border: 1px solid var(--attrua-border-color, #d1d5db);
     54    border-radius: 0.375rem;
     55    background-color: var(--attrua-input-bg, #ffffff);
     56    color: var(--attrua-text-color, #1a1a1a);
     57    transition: border-color 0.2s ease
     58}
     59
     60.attrua-input:focus {
     61    outline: none;
     62    border-color: var(--attrua-primary-color, #2563eb);
     63    box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.2)
     64}
     65
     66.attrua-password-field {
     67    position: relative
     68}
     69
     70.attrua-toggle-password {
     71    position: absolute;
     72    right: 0.75rem;
     73    top: 50%;
     74    transform: translateY(-50%);
     75    padding: 0.25rem;
     76    background: none;
     77    border: none;
     78    color: var(--attrua-icon-color, #6b7280);
     79    cursor: pointer;
     80    opacity: 0.8;
     81    transition: opacity 0.2s ease
     82}
     83
     84.attrua-toggle-password:hover {
     85    opacity: 1
     86}
     87
     88.attrua-instructions {
     89    margin: 1rem 0;
     90    padding: 1rem;
     91    background-color: var(--attrua-requirements-bg, #f3f4f6);
     92    border-radius: 0.375rem;
     93    font-size: 12px
     94}
     95
     96.attrua-instructions,
     97.attrua-password-requirements {
     98    margin: 1rem 0;
     99    padding: 1rem;
     100    background-color: var(--attrua-requirements-bg, #f3f4f6);
     101    border-radius: 0.375rem;
     102    font-size: 12px
     103}
     104
     105.attrua-instructions h5,
     106.attrua-password-requirements h5 {
     107    margin-top: 0
     108}
     109
     110.attrua-password-requirements ul {
     111    margin: 0;
     112    padding: 0;
     113    list-style: none
     114}
     115
     116.attrua-password-requirements li {
     117    position: relative;
     118    padding-left: 1.5rem;
     119    margin-bottom: 0.5rem;
     120    color: var(--attrua-text-muted, #6b7280);
     121    transition: color 0.2s ease
     122}
     123
     124.attrua-password-requirements li::before {
     125    content: '';
     126    position: absolute;
     127    left: 0;
     128    top: 50%;
     129    transform: translateY(-50%);
     130    width: 1rem;
     131    height: 1rem;
     132    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%236b7280'%3E%3Cpath fill-rule='evenodd' d='M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z' clip-rule='evenodd'/%3E%3C/svg%3E");
     133    background-size: contain;
     134    opacity: 0.5;
     135    transition: opacity 0.2s ease
     136}
     137
     138.attrua-password-requirements li.met {
     139    color: var(--attrua-success-color, #059669)
     140}
     141
     142.attrua-password-requirements li.met::before {
     143    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%23059669'%3E%3Cpath fill-rule='evenodd' d='M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z' clip-rule='evenodd'/%3E%3C/svg%3E");
     144    opacity: 1
     145}
     146
     147.attrua-submit-button {
     148    width: 100%;
     149    padding: 0.75rem 1.5rem;
     150    background-color: var(--attrua-primary-color, #2563eb);
     151    color: #ffffff;
     152    border: none;
     153    border-radius: 0.375rem;
     154    font-size: 20px;
     155    font-weight: 500;
     156    cursor: pointer;
     157    transition: background-color 0.2s ease
     158}
     159
     160.attrua-submit-button:hover {
     161    background-color: var(--attrua-primary-dark, #1d4ed8)
     162}
     163
     164.attrua-submit-button:disabled {
     165    background-color: var(--attrua-disabled-color, #9ca3af);
     166    cursor: not-allowed
     167}
     168
     169.attrua-form-links {
     170    margin-top: 1.5rem;
     171    text-align: center;
     172    font-size: 0.875rem
     173}
     174
     175.attrua-form-links a {
     176    color: var(--attrua-link-color, #2563eb);
     177    text-decoration: none;
     178    transition: color 0.2s ease
     179}
     180
     181.attrua-form-links a:hover {
     182    color: var(--attrua-link-hover, #1d4ed8);
     183    text-decoration: underline
     184}
     185
     186.attrua-link-separator {
     187    margin: 0 0.5rem;
     188    color: var(--attrua-text-muted, #6b7280)
     189}
     190
     191.attrua-message-container {
     192    margin-bottom: 1.5rem;
     193    padding: 1rem;
     194    border-radius: 0.375rem;
     195    font-size: 0.875rem
     196}
     197
     198.attrua-message-container.error {
     199    background-color: var(--attrua-error-bg, #fee2e2);
     200    color: var(--attrua-error-text, #991b1b);
     201    border: 1px solid var(--attrua-error-border, #fecaca)
     202}
     203
     204.attrua-message-container.success {
     205    background-color: var(--attrua-success-bg, #dcfce7);
     206    color: var(--attrua-success-text, #166534);
     207    border: 1px solid var(--attrua-success-border, #bbf7d0)
     208}
     209
     210.attrua-field-error {
     211    margin-top: 0.5rem;
     212    font-size: 0.875rem;
     213    color: var(--attrua-error-text, #991b1b)
     214}
     215
     216@media (max-width:640px) {
     217    .attrua-form-wrapper {
     218        margin: 1rem;
     219        padding: 1.5rem
     220    }
     221
     222    .attrua-form-row {
     223        margin-bottom: 1rem
     224    }
     225
     226    .attrua-password-requirements {
     227        padding: 0.75rem
     228    }
     229}
     230
     231[dir="rtl"] .attrua-toggle-password {
     232    right: auto;
     233    left: 0.75rem
     234}
     235
     236[dir="rtl"] .attrua-password-requirements li {
     237    padding-left: 0;
     238    padding-right: 1.5rem
     239}
     240
     241[dir="rtl"] .attrua-password-requirements li::before {
     242    left: auto;
     243    right: 0
     244}
     245
     246@media (prefers-reduced-motion:reduce) {
     247
     248    .attrua-input,
     249    .attrua-submit-button,
     250    .attrua-strength-meter::before {
     251        transition: none
     252    }
     253}
     254
     255.attrua-input:focus-visible,
     256.attrua-submit-button:focus-visible,
     257.attrua-toggle-password:focus-visible {
     258    outline: 2px solid var(--attrua-focus-ring, #3b82f6);
     259    outline-offset: 2px
     260}
     261
     262@media (forced-colors:active) {
     263    .attrua-submit-button {
     264        border: 1px solid ButtonText
     265    }
     266
     267    .attrua-strength-meter::before {
     268        background-color: Highlight
     269    }
     270}
  • attributes-user-access/trunk/assets/js/min/validation.min.js

    r3331069 r3389865  
    1 (function($){"use strict";class PasswordToggle{constructor(form){this.form=$(form);this.toggleButtons=this.form.find(".attrua-toggle-password");this.initialize()}initialize(){this.toggleButtons.each((_,button)=>{const $button=$(button);$button.on("click",e=>{e.preventDefault();const $field=$button.closest(".attrua-password-field");const $input=$field.find("input");const $icon=$button.find(".ti");if($input.length){const isPassword=$input.attr("type")==="password";$input.attr("type",isPassword?"text":"password");$icon.removeClass(isPassword?"ti-eye":"ti-eye-off").addClass(isPassword?"ti-eye-off":"ti-eye");$button.attr("aria-label",isPassword?"Hide password":"Show password")}});$button.find(".ti").addClass("ti-eye");$button.attr("aria-label","Show password")})}}class LoginForm{constructor(form,options){this.form=$(form);this.options=$.extend({},LoginForm.defaults,options);this.submitButton=this.form.find(this.options.submitButtonSelector);this.usernameField=this.form.find("#attrua_username");this.passwordField=this.form.find("#attrua_password");this.requiredFields=this.form.find("input[required]");this.usernameError=this.usernameField.siblings(".attrua-field-error");this.passwordError=this.passwordField.siblings(".attrua-field-error");this.initialize()}initialize(){this.form.on("submit",e=>this.handleSubmit(e));this.requiredFields.on("input",()=>this.validateForm());new PasswordToggle(this.form);this.validateForm()}validateForm(){let isValid=true;this.usernameError.text("");this.passwordError.text("");if(!this.usernameField.val().trim()){isValid=false}if(!this.passwordField.val()){isValid=false}this.submitButton.prop("disabled",!isValid);return isValid}handleSubmit(event){if(!this.options.ajaxLogin){return}event.preventDefault();if(!this.validateForm()){return}this.submitButton.prop("disabled",true).text(this.options.i18n.loggingIn);this.form.off("submit").submit()}}LoginForm.defaults={submitButtonSelector:".attrua-submit-button",ajaxLogin:false,i18n:{loggingIn:"Logging in...",invalidCredentials:"Invalid username or password."}};$(document).ready(function(){$(".attrua-login-form").each(function(){const form=$(this);if(!$.data(this,"attrua-login")){$.data(this,"attrua-login",new LoginForm(this,window.attruaFront||{}))}})})})(jQuery);
     1!function(e){"use strict";class t{constructor(t){this.form=e(t),this.toggleButtons=this.form.find(".attrua-toggle-password"),this.initialize()}initialize(){this.toggleButtons.each(((t,s)=>{const i=e(s);i.on("click",(e=>{e.preventDefault();const t=i.closest(".attrua-password-field"),s=t.find("input"),o=i.find(".ti");if(s.length){const e="password"===s.attr("type");s.attr("type",e?"text":"password"),o.removeClass(e?"ti-eye":"ti-eye-off").addClass(e?"ti-eye-off":"ti-eye"),i.attr("aria-label",e?"Hide password":"Show password")}})),i.find(".ti").addClass("ti-eye"),i.attr("aria-label","Show password")}))}}class s{constructor(t,i){this.form=e(t),this.options=e.extend({},s.defaults,i),this.submitButton=this.form.find(this.options.submitButtonSelector),this.usernameField=this.form.find("#attrua_username"),this.passwordField=this.form.find("#attrua_password"),this.requiredFields=this.form.find("input[required]"),this.usernameError=this.usernameField.siblings(".attrua-field-error"),this.passwordError=this.passwordField.siblings(".attrua-field-error"),this.initialize()}initialize(){this.form.on("submit",(e=>this.handleSubmit(e))),this.requiredFields.on("input",(()=>this.validateForm())),new t(this.form),this.validateForm()}validateForm(){let e=!0;return this.usernameError.text(""),this.passwordError.text(""),this.usernameField.val().trim()||(e=!1),this.passwordField.val()||(e=!1),this.submitButton.prop("disabled",!e),e}handleSubmit(e){this.options.ajaxLogin&&(e.preventDefault(),this.validateForm()&&(this.submitButton.prop("disabled",!0).text(this.options.i18n.loggingIn),this.form.off("submit").submit()))}}s.defaults={submitButtonSelector:".attrua-submit-button",ajaxLogin:!1,i18n:{loggingIn:"Logging in...",invalidCredentials:"Invalid username or password."}},e(document).ready((function(){e(".attrua-login-form").each((function(){const t=e(this);e.data(this,"attrua-login")||e.data(this,"attrua-login",new s(this,window.attruaFront||{}))}))}))}(jQuery);
  • attributes-user-access/trunk/attributes-user-access.php

    r3389830 r3389865  
    77 * Author: Attributes WP
    88 * Author URI: https://attributeswp.com/
    9  * Version: 1.2.0
     9 * Version: 1.2.1
    1010 * Text Domain: attributes-user-access
    1111 * Domain Path: /languages
     
    3434 * improves maintainability and prevents magic values in the codebase.
    3535 */
    36 define('ATTRUA_VERSION', '1.2.0');
     36define('ATTRUA_VERSION', '1.2.1');
    3737define('ATTRUA_FILE', __FILE__);
    3838define('ATTRUA_PATH', plugin_dir_path(__FILE__));
Note: See TracChangeset for help on using the changeset viewer.