@keenmate/pure-admin-core 1.1.0 → 1.1.2

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/README.md CHANGED
@@ -189,6 +189,14 @@ This enables dark mode support for web components like `@keenmate/web-grid` that
189
189
  - `.pa-textarea` - Textareas
190
190
  - `.pa-checkbox` - Checkboxes
191
191
  - `.pa-radio` - Radio buttons
192
+ - **Size modifiers:** `--xs`, `--sm`, `--lg`, `--xl`
193
+ - **Validation states:** `--success`, `--warning`, `--error`
194
+ - **Color variants:** `--color-1` through `--color-9` (theme color slots)
195
+ - `.pa-form-group` - Form group wrapper
196
+ - `.pa-form-group--horizontal` - Horizontal label/input layout
197
+ - `.pa-form-help` - Help text below inputs
198
+ - `--success`, `--warning`, `--error` - Validation state colors
199
+ - `--color-1` through `--color-9` - Theme color variants
192
200
 
193
201
  ### Tables
194
202
  - `.pa-table` - Base table
package/dist/css/main.css CHANGED
@@ -8410,6 +8410,34 @@ a.pa-card p {
8410
8410
  font-size: 1.8rem;
8411
8411
  }
8412
8412
 
8413
+ .pa-textarea--xs {
8414
+ height: 4rem;
8415
+ min-height: 4rem;
8416
+ padding: 0.6rem 0.8rem;
8417
+ font-size: 1.2rem;
8418
+ }
8419
+
8420
+ .pa-textarea--sm {
8421
+ height: 6rem;
8422
+ min-height: 6rem;
8423
+ padding: 0.8rem 0.8rem;
8424
+ font-size: 1.4rem;
8425
+ }
8426
+
8427
+ .pa-textarea--lg {
8428
+ height: 12rem;
8429
+ min-height: 12rem;
8430
+ padding: 0.8rem 0.8rem;
8431
+ font-size: 1.6rem;
8432
+ }
8433
+
8434
+ .pa-textarea--xl {
8435
+ height: 16rem;
8436
+ min-height: 16rem;
8437
+ padding: 0.8rem 0.8rem;
8438
+ font-size: 1.8rem;
8439
+ }
8440
+
8413
8441
  .pa-mode-dark input[type=date]::-webkit-calendar-picker-indicator,
8414
8442
  .pa-mode-dark input[type=time]::-webkit-calendar-picker-indicator,
8415
8443
  .pa-mode-dark input[type=datetime-local]::-webkit-calendar-picker-indicator,
@@ -8494,6 +8522,153 @@ a.pa-card p {
8494
8522
  .pa-form-help--success {
8495
8523
  color: var(--pa-success-bg);
8496
8524
  }
8525
+ .pa-form-help--warning {
8526
+ color: var(--pa-warning-bg);
8527
+ }
8528
+
8529
+ .pa-form-help--color-1 {
8530
+ color: var(--pa-color-1);
8531
+ }
8532
+
8533
+ .pa-form-help--color-2 {
8534
+ color: var(--pa-color-2);
8535
+ }
8536
+
8537
+ .pa-form-help--color-3 {
8538
+ color: var(--pa-color-3);
8539
+ }
8540
+
8541
+ .pa-form-help--color-4 {
8542
+ color: var(--pa-color-4);
8543
+ }
8544
+
8545
+ .pa-form-help--color-5 {
8546
+ color: var(--pa-color-5);
8547
+ }
8548
+
8549
+ .pa-form-help--color-6 {
8550
+ color: var(--pa-color-6);
8551
+ }
8552
+
8553
+ .pa-form-help--color-7 {
8554
+ color: var(--pa-color-7);
8555
+ }
8556
+
8557
+ .pa-form-help--color-8 {
8558
+ color: var(--pa-color-8);
8559
+ }
8560
+
8561
+ .pa-form-help--color-9 {
8562
+ color: var(--pa-color-9);
8563
+ }
8564
+
8565
+ .pa-input--color-1,
8566
+ .pa-select--color-1,
8567
+ .pa-textarea--color-1 {
8568
+ border-color: var(--pa-color-1);
8569
+ }
8570
+ .pa-input--color-1:focus,
8571
+ .pa-select--color-1:focus,
8572
+ .pa-textarea--color-1:focus {
8573
+ border-color: var(--pa-color-1);
8574
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--pa-color-1) 25%, transparent);
8575
+ }
8576
+
8577
+ .pa-input--color-2,
8578
+ .pa-select--color-2,
8579
+ .pa-textarea--color-2 {
8580
+ border-color: var(--pa-color-2);
8581
+ }
8582
+ .pa-input--color-2:focus,
8583
+ .pa-select--color-2:focus,
8584
+ .pa-textarea--color-2:focus {
8585
+ border-color: var(--pa-color-2);
8586
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--pa-color-2) 25%, transparent);
8587
+ }
8588
+
8589
+ .pa-input--color-3,
8590
+ .pa-select--color-3,
8591
+ .pa-textarea--color-3 {
8592
+ border-color: var(--pa-color-3);
8593
+ }
8594
+ .pa-input--color-3:focus,
8595
+ .pa-select--color-3:focus,
8596
+ .pa-textarea--color-3:focus {
8597
+ border-color: var(--pa-color-3);
8598
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--pa-color-3) 25%, transparent);
8599
+ }
8600
+
8601
+ .pa-input--color-4,
8602
+ .pa-select--color-4,
8603
+ .pa-textarea--color-4 {
8604
+ border-color: var(--pa-color-4);
8605
+ }
8606
+ .pa-input--color-4:focus,
8607
+ .pa-select--color-4:focus,
8608
+ .pa-textarea--color-4:focus {
8609
+ border-color: var(--pa-color-4);
8610
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--pa-color-4) 25%, transparent);
8611
+ }
8612
+
8613
+ .pa-input--color-5,
8614
+ .pa-select--color-5,
8615
+ .pa-textarea--color-5 {
8616
+ border-color: var(--pa-color-5);
8617
+ }
8618
+ .pa-input--color-5:focus,
8619
+ .pa-select--color-5:focus,
8620
+ .pa-textarea--color-5:focus {
8621
+ border-color: var(--pa-color-5);
8622
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--pa-color-5) 25%, transparent);
8623
+ }
8624
+
8625
+ .pa-input--color-6,
8626
+ .pa-select--color-6,
8627
+ .pa-textarea--color-6 {
8628
+ border-color: var(--pa-color-6);
8629
+ }
8630
+ .pa-input--color-6:focus,
8631
+ .pa-select--color-6:focus,
8632
+ .pa-textarea--color-6:focus {
8633
+ border-color: var(--pa-color-6);
8634
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--pa-color-6) 25%, transparent);
8635
+ }
8636
+
8637
+ .pa-input--color-7,
8638
+ .pa-select--color-7,
8639
+ .pa-textarea--color-7 {
8640
+ border-color: var(--pa-color-7);
8641
+ }
8642
+ .pa-input--color-7:focus,
8643
+ .pa-select--color-7:focus,
8644
+ .pa-textarea--color-7:focus {
8645
+ border-color: var(--pa-color-7);
8646
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--pa-color-7) 25%, transparent);
8647
+ }
8648
+
8649
+ .pa-input--color-8,
8650
+ .pa-select--color-8,
8651
+ .pa-textarea--color-8 {
8652
+ border-color: var(--pa-color-8);
8653
+ }
8654
+ .pa-input--color-8:focus,
8655
+ .pa-select--color-8:focus,
8656
+ .pa-textarea--color-8:focus {
8657
+ border-color: var(--pa-color-8);
8658
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--pa-color-8) 25%, transparent);
8659
+ }
8660
+
8661
+ .pa-input--color-9,
8662
+ .pa-select--color-9,
8663
+ .pa-textarea--color-9 {
8664
+ border-color: var(--pa-color-9);
8665
+ }
8666
+ .pa-input--color-9:focus,
8667
+ .pa-select--color-9:focus,
8668
+ .pa-textarea--color-9:focus {
8669
+ border-color: var(--pa-color-9);
8670
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--pa-color-9) 25%, transparent);
8671
+ }
8497
8672
 
8498
8673
  /* ========================================
8499
8674
  Input Groups
@@ -9120,235 +9295,21 @@ input:indeterminate + .pa-checkbox__box::after {
9120
9295
  * Maps Pure Admin SCSS variables to web component CSS custom properties
9121
9296
  *
9122
9297
  * @keenmate/web-multiselect: Uses --base-* variables from _base-css-variables.scss
9123
- * @keenmate/web-daterangepicker: Uses --drp-* variables defined below
9124
- */
9125
- /*
9298
+ * @keenmate/web-daterangepicker: Uses --base-* variables from _base-css-variables.scss
9299
+ *
9300
+ * NOTE: Both components use the --base-* CSS variable system with built-in fallback chains:
9301
+ * 1. External override: --ms-accent-color: #custom
9302
+ * 2. Theme base value: var(--base-accent-color)
9303
+ * 3. Hardcoded default: #3b82f6
9304
+ *
9305
+ * This means Pure Admin only needs to set --base-* variables (via the
9306
+ * output-base-css-variables mixin) and the components will automatically
9307
+ * pick up the theme colors.
9126
9308
  */
9127
- /* ========================================
9128
- Date Range Picker Variables (--drp-*)
9129
- v1.3.0+ Semantic Variable Architecture
9130
-
9131
- NOTE: Variables set directly on web-daterangepicker
9132
- element to pierce shadow DOM (custom properties
9133
- cascade into shadow DOM when set on host element)
9134
- ======================================== */
9135
- web-daterangepicker {
9136
- /* ===== BASE PRIMITIVES ===== */
9137
- /* Colors */
9138
- --drp-accent-color: #007bff;
9139
- --drp-primary-bg: #007bff;
9140
- --drp-primary-bg-hover: rgb(51, 149.4, 255);
9141
- --drp-text-primary: var(--pa-text-color-1);
9142
- --drp-text-secondary: var(--pa-text-color-2);
9143
- --drp-border-color: #e1e5e9;
9144
- --drp-card-bg: var(--pa-card-bg);
9145
- --drp-hover-bg: #f8f9fa;
9146
- /* Spacing */
9147
- --drp-spacing-xs: 0.4rem;
9148
- --drp-spacing-sm: 0.8rem;
9149
- --drp-spacing-md: 1.2rem;
9150
- --drp-spacing-base: 1.6rem;
9151
- --drp-spacing-lg: 2.4rem;
9152
- --drp-spacing-xl: 3.2rem;
9153
- /* Typography */
9154
- --drp-font-size-xs: 1.2rem;
9155
- --drp-font-size-sm: 1.4rem;
9156
- --drp-font-size-base: 1.6rem;
9157
- --drp-font-size-lg: 1.8rem;
9158
- --drp-font-weight-normal: 400;
9159
- --drp-font-weight-medium: 500;
9160
- --drp-font-weight-semibold: 600;
9161
- /* Animations */
9162
- --drp-transition-fast: 0.1s;
9163
- --drp-transition-normal: 0.15s;
9164
- --drp-easing-snappy: ease-out;
9165
- --drp-easing-smooth: ease;
9166
- /* Shadows */
9167
- --drp-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.1);
9168
- --drp-shadow-md: 0 2px 8px rgba(0, 0, 0, 0.1);
9169
- --drp-shadow-lg: 0 4px 12px rgba(0, 0, 0, 0.15);
9170
- --drp-shadow-xl: 0 0 60px rgba(0, 0, 0, 0.12);
9171
- /* Border radius */
9172
- --drp-border-radius: 4px;
9173
- --drp-border-radius-sm: 2px;
9174
- --drp-border-radius-lg: 8px;
9175
- /* Border width */
9176
- --drp-border-width-base: 1px;
9177
- --drp-border-width-medium: 2px;
9178
- /* ===== INPUT FIELD SEMANTIC VARIABLES ===== */
9179
- /* Input colors */
9180
- --drp-input-background: var(--pa-input-bg);
9181
- --drp-input-color: var(--pa-text-color-1);
9182
- --drp-input-border-color: #ced4da;
9183
- --drp-input-border-color-hover: #007bff;
9184
- --drp-input-border-color-focus: #007bff;
9185
- --drp-input-placeholder-color: var(--pa-text-color-2);
9186
- --drp-input-disabled-background: var(--pa-input-bg);
9187
- --drp-input-disabled-color: var(--pa-text-color-2);
9188
- /* Input focus effects */
9189
- --drp-input-focus-shadow-color: rgba(0, 123, 255, 0.05);
9190
- --drp-input-focus-shadow-size: 3px;
9191
- /* Input icon */
9192
- --drp-input-icon-color: var(--pa-text-color-2);
9193
- --drp-input-icon-opacity: 1;
9194
- /* Input size variants - matched to Pure Admin .pa-input sizes (10px base)
9195
- Heights: xs=31px, sm=33px, md=35px, lg=38px, xl=41px */
9196
- /* Extra Small (31px) */
9197
- --drp-input-size-xs-font: 1.2rem;
9198
- --drp-input-size-xs-padding-v: 0.8rem;
9199
- --drp-input-size-xs-padding-h: 0.8rem;
9200
- --drp-input-size-xs-height: 3.1rem; /* 31px (10px base) */
9201
- --drp-input-size-xs-icon-size: 1.2rem; /* 12px (10px base) */
9202
- /* Small (33px - same height as xs, slightly larger icon) */
9203
- --drp-input-size-sm-font: 1.2rem;
9204
- --drp-input-size-sm-padding-v: 0.8rem;
9205
- --drp-input-size-sm-padding-h: 0.8rem;
9206
- --drp-input-size-sm-height: 3.3rem; /* 33px (10px base) */
9207
- --drp-input-size-sm-icon-size: 1.4rem; /* 14px (10px base) */
9208
- /* Medium/Default (maps to pa-input: 35px) */
9209
- --drp-input-size-md-font: 1.4rem;
9210
- --drp-input-size-md-padding-v: 0.8rem;
9211
- --drp-input-size-md-padding-h: 0.8rem;
9212
- --drp-input-size-md-height: 3.5rem; /* 35px (10px base) */
9213
- --drp-input-size-md-icon-size: 1.6rem; /* 16px (10px base) */
9214
- /* Large (maps to pa-input--lg: 38px) */
9215
- --drp-input-size-lg-font: 1.6rem;
9216
- --drp-input-size-lg-padding-v: 0.8rem;
9217
- --drp-input-size-lg-padding-h: 0.8rem;
9218
- --drp-input-size-lg-height: 3.8rem; /* 38px (10px base) */
9219
- --drp-input-size-lg-icon-size: 1.8rem; /* 18px (10px base) */
9220
- /* Extra Large (maps to pa-input--xl: 41px) */
9221
- --drp-input-size-xl-font: 1.8rem;
9222
- --drp-input-size-xl-padding-v: 0.8rem;
9223
- --drp-input-size-xl-padding-h: 0.8rem;
9224
- --drp-input-size-xl-height: 4.1rem; /* 41px (10px base) */
9225
- --drp-input-size-xl-icon-size: 2rem; /* 20px (10px base) */
9226
- /* ===== CALENDAR CONTAINER ===== */
9227
- --drp-calendar-bg: var(--pa-card-bg);
9228
- --drp-calendar-border: #e1e5e9;
9229
- --drp-calendar-shadow: 0 0 60px rgba(0, 0, 0, 0.12);
9230
- --drp-calendar-border-radius: 4px;
9231
- --drp-calendar-padding: 1.6rem;
9232
- --drp-calendar-z-index: 1000;
9233
- /* ===== HEADER ===== */
9234
- --drp-header-padding: 0.8rem 1.2rem;
9235
- --drp-header-font-size: 1.6rem;
9236
- --drp-header-font-weight: 600;
9237
- --drp-header-text-color: var(--pa-text-color-1);
9238
- --drp-header-bg-hover: rgba(0, 123, 255, 0.12);
9239
- --drp-header-bg-active: rgba(0, 123, 255, 0.05);
9240
- /* ===== NAVIGATION ===== */
9241
- --drp-nav-btn-size: 3.2rem; /* 32px (10px base) */
9242
- --drp-nav-text-color: var(--pa-text-color-1);
9243
- --drp-nav-border-color: #e1e5e9;
9244
- --drp-nav-bg-hover: rgba(0, 123, 255, 0.12);
9245
- --drp-nav-bg-active: rgba(0, 123, 255, 0.05);
9246
- --drp-nav-border-hover: #007bff;
9247
- /* ===== WEEKDAY HEADER ===== */
9248
- --drp-weekday-font-size: 1.2rem;
9249
- --drp-weekday-font-weight: 600;
9250
- --drp-weekday-color: var(--pa-text-color-2);
9251
- --drp-weekday-padding: 0.4rem;
9252
- /* ===== CALENDAR GRID ===== */
9253
- --drp-day-size: 3.6rem; /* 36px (10px base) */
9254
- --drp-day-font-size: 1.4rem;
9255
- --drp-day-border-radius: 2px;
9256
- /* Day states */
9257
- --drp-day-text-color: var(--pa-text-color-1);
9258
- --drp-day-bg-hover: rgba(0, 123, 255, 0.12);
9259
- --drp-day-border-hover: transparent;
9260
- /* Today indicator */
9261
- --drp-day-today-border: #007bff;
9262
- /* Selected state */
9263
- --drp-day-selected-bg: #007bff;
9264
- --drp-day-selected-color: #ffffff;
9265
- /* Range state */
9266
- --drp-day-range-bg: rgba(0, 123, 255, 0.05);
9267
- --drp-day-range-text: var(--pa-text-color-1);
9268
- /* Focused state */
9269
- --drp-day-focused-outline: #007bff;
9270
- /* Disabled state */
9271
- --drp-day-disabled-color: var(--pa-text-color-2);
9272
- --drp-day-disabled-opacity: 0.65;
9273
- /* Other month */
9274
- --drp-day-other-month-color: var(--pa-text-color-2);
9275
- --drp-day-other-month-opacity: 0.5;
9276
- /* ===== BADGES ===== */
9277
- /* Dot badges (original style) */
9278
- --drp-badge-size: 0.6rem; /* 6px (10px base) */
9279
- --drp-badge-primary: #007bff;
9280
- --drp-badge-success: #28a745;
9281
- --drp-badge-warning: #ffc107;
9282
- --drp-badge-danger: #dc3545;
9283
- --drp-badge-info: #17a2b8;
9284
- /* Number badges */
9285
- --drp-badge-number-bg: #dc3545;
9286
- --drp-badge-number-color: #ffffff;
9287
- /* Count badges */
9288
- --drp-badge-count-bg: #007bff;
9289
- --drp-badge-count-color: #ffffff;
9290
- /* Text badges */
9291
- --drp-badge-text-bg: rgba(0, 123, 255, 0.05);
9292
- --drp-badge-text-color: var(--pa-text-color-1);
9293
- /* ===== SUMMARY BAR ===== */
9294
- --drp-summary-bg: #f8f9fa;
9295
- --drp-summary-border-color: #e1e5e9;
9296
- --drp-summary-text-color: var(--pa-text-color-1);
9297
- --drp-summary-count-color: #007bff;
9298
- --drp-summary-padding: 0.8rem 1.2rem;
9299
- --drp-summary-font-size: 1.4rem;
9300
- --drp-summary-font-weight: 500;
9301
- /* ===== BUTTONS ===== */
9302
- /* Today button */
9303
- --drp-button-today-bg: #6c757d;
9304
- --drp-button-today-bg-hover: #545b62;
9305
- --drp-button-today-color: #ffffff;
9306
- --drp-button-today-border: #e1e5e9;
9307
- /* Clear button */
9308
- --drp-button-clear-bg: #6c757d;
9309
- --drp-button-clear-bg-hover: #545b62;
9310
- --drp-button-clear-color: #ffffff;
9311
- --drp-button-clear-border: #e1e5e9;
9312
- /* Cancel button */
9313
- --drp-button-cancel-bg: #6c757d;
9314
- --drp-button-cancel-bg-hover: #545b62;
9315
- --drp-button-cancel-color: #ffffff;
9316
- --drp-button-cancel-border: #e1e5e9;
9317
- /* Apply button */
9318
- --drp-button-apply-bg: #007bff;
9319
- --drp-button-apply-bg-hover: rgb(51, 149.4, 255);
9320
- --drp-button-apply-color: #ffffff;
9321
- --drp-button-apply-border: #007bff;
9322
- /* Button sizing */
9323
- --drp-button-padding: 0.8rem 1rem;
9324
- --drp-button-font-size: 1.4rem;
9325
- --drp-button-border-radius: 4px;
9326
- --drp-button-gap: 0.8rem;
9327
- /* ===== UNIFIED NAVIGATION ===== */
9328
- /* Range selectors in unified nav */
9329
- --drp-unified-range-text-color: var(--pa-text-color-1);
9330
- --drp-unified-range-bg-hover: rgba(0, 123, 255, 0.12);
9331
- --drp-unified-range-bg-active: rgba(0, 123, 255, 0.05);
9332
- /* Month/Year display */
9333
- --drp-unified-month-color: var(--pa-text-color-1);
9334
- /* Rolling selector disabled state */
9335
- --drp-unified-rolling-disabled-color: var(--pa-text-color-2);
9336
- /* ===== ROLLING SELECTOR ===== */
9337
- --drp-rolling-bg: var(--pa-card-bg);
9338
- --drp-rolling-border: #e1e5e9;
9339
- --drp-rolling-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
9340
- --drp-rolling-item-hover-bg: rgba(0, 123, 255, 0.12);
9341
- --drp-rolling-item-selected-bg: #007bff;
9342
- --drp-rolling-item-selected-text: #ffffff;
9343
- --drp-rolling-font-size: 1.4rem;
9344
- --drp-rolling-item-text-color: var(--pa-text-color-1);
9345
- --drp-rolling-item-disabled-color: var(--pa-text-color-2);
9346
- /* ===== LOADING OVERLAY ===== */
9347
- --drp-loading-bg: rgba(255, 255, 255, 0.8);
9348
- --drp-loading-spinner-color: #007bff;
9349
- --drp-loading-spinner-size: 1.6rem;
9350
- /* ===== MULTIPLE MONTHS ===== */
9351
- --drp-months-gap: 2.4rem;
9309
+ /* Web Multiselect - Group label styling */
9310
+ web-multiselect {
9311
+ --ms-group-label-color: var(--base-text-color-1);
9312
+ --ms-group-label-font-weight: 600;
9352
9313
  }
9353
9314
 
9354
9315
  .pa-file-input {
@@ -13816,6 +13777,14 @@ html.font-size-4xl {
13816
13777
  white-space: nowrap;
13817
13778
  }
13818
13779
 
13780
+ .pa-link {
13781
+ color: #007bff;
13782
+ text-decoration: none;
13783
+ }
13784
+ .pa-link:hover {
13785
+ text-decoration: underline;
13786
+ }
13787
+
13819
13788
  .component-showcase {
13820
13789
  display: flex;
13821
13790
  flex-wrap: wrap;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keenmate/pure-admin-core",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "description": "Lightweight, data-focused HTML/CSS admin framework built with PureCSS foundation and comprehensive component system",
5
5
  "style": "dist/css/main.css",
6
6
  "exports": {
@@ -248,6 +248,18 @@
248
248
  Continue
249
249
  </button>
250
250
 
251
+ <!-- Fixed Width with Truncation -->
252
+ <!-- Use minwr-* + maxwr-* to constrain width, text-truncate on inner span for ellipsis -->
253
+ <button class="pa-btn pa-btn--primary minwr-10 maxwr-10">
254
+ <span class="pa-btn__icon">✓</span>
255
+ <span class="text-truncate">Save All Changes</span>
256
+ </button>
257
+
258
+ <button class="pa-btn pa-btn--secondary minwr-10 maxwr-10">
259
+ <span class="pa-btn__icon">×</span>
260
+ <span class="text-truncate">Cancel and Go Back</span>
261
+ </button>
262
+
251
263
 
252
264
  <!-- BUTTON ALIGNMENT -->
253
265
 
@@ -78,15 +78,62 @@
78
78
  <!-- Success State -->
79
79
  <div class="pa-form-group pa-form-group--success">
80
80
  <label class="pa-form-label" for="valid-input">Valid Input</label>
81
- <input type="text" class="pa-input pa-input--success" id="valid-input" value="Valid value">
82
- <small class="pa-form-text pa-form-text--success">Looks good!</small>
81
+ <input type="text" class="pa-input" id="valid-input" value="Valid value">
82
+ <small class="pa-form-help pa-form-help--success">Looks good!</small>
83
+ </div>
84
+
85
+ <!-- Warning State -->
86
+ <div class="pa-form-group pa-form-group--warning">
87
+ <label class="pa-form-label" for="warning-input">Warning Input</label>
88
+ <input type="text" class="pa-input" id="warning-input" value="Check this">
89
+ <small class="pa-form-help pa-form-help--warning">Please verify this field.</small>
83
90
  </div>
84
91
 
85
92
  <!-- Error State -->
86
93
  <div class="pa-form-group pa-form-group--error">
87
94
  <label class="pa-form-label" for="invalid-input">Invalid Input</label>
88
- <input type="text" class="pa-input pa-input--error" id="invalid-input" value="Invalid value">
89
- <small class="pa-form-text pa-form-text--error">Please provide a valid value.</small>
95
+ <input type="text" class="pa-input" id="invalid-input" value="Invalid value">
96
+ <small class="pa-form-help pa-form-help--error">Please provide a valid value.</small>
97
+ </div>
98
+
99
+
100
+ <!-- THEME COLOR VARIANTS -->
101
+ <!-- Use --pa-color-1 through --pa-color-9 CSS variables (set by theme) -->
102
+
103
+ <!-- Color 1 with matching help text -->
104
+ <div class="pa-form-group">
105
+ <label class="pa-form-label" for="color1-input">Color 1</label>
106
+ <input type="text" class="pa-input pa-input--color-1" id="color1-input" value="Color 1 input">
107
+ <small class="pa-form-help pa-form-help--color-1">Colored help text</small>
108
+ </div>
109
+
110
+ <!-- Color 2 with matching help text -->
111
+ <div class="pa-form-group">
112
+ <label class="pa-form-label" for="color2-input">Color 2</label>
113
+ <input type="text" class="pa-input pa-input--color-2" id="color2-input" value="Color 2 input">
114
+ <small class="pa-form-help pa-form-help--color-2">Colored help text</small>
115
+ </div>
116
+
117
+ <!-- Color 3 with gray help text (no color class) -->
118
+ <div class="pa-form-group">
119
+ <label class="pa-form-label" for="color3-input">Color 3</label>
120
+ <input type="text" class="pa-input pa-input--color-3" id="color3-input" value="Color 3 input">
121
+ <small class="pa-form-help">Gray help text (no color class)</small>
122
+ </div>
123
+
124
+ <!-- Select with color variant -->
125
+ <div class="pa-form-group">
126
+ <label class="pa-form-label" for="color-select">Color Select</label>
127
+ <select class="pa-select pa-select--color-1" id="color-select">
128
+ <option>Option 1</option>
129
+ <option>Option 2</option>
130
+ </select>
131
+ </div>
132
+
133
+ <!-- Textarea with color variant -->
134
+ <div class="pa-form-group">
135
+ <label class="pa-form-label" for="color-textarea">Color Textarea</label>
136
+ <textarea class="pa-textarea pa-textarea--color-2" id="color-textarea">Color 2 textarea</textarea>
90
137
  </div>
91
138
 
92
139
 
@@ -433,19 +480,27 @@ FORM ELEMENTS:
433
480
  - .pa-form-group--required: Shows required indicator
434
481
  - .pa-form-group--horizontal: Label-left, input-right layout
435
482
  - .pa-form-group--success: Success validation state
483
+ - .pa-form-group--warning: Warning validation state
436
484
  - .pa-form-group--error: Error validation state
437
485
  - .pa-form-label: Form label
438
486
 
439
487
  INPUTS:
440
488
  - .pa-input: Text input base class
441
489
  - .pa-input--xs, --sm, --lg, --xl: Size variants
442
- - .pa-input--success, --error: Validation states
490
+ - .pa-input--success, --warning, --error: Validation states
491
+ - .pa-input--color-1 through --color-9: Theme color variants
443
492
 
444
493
  TEXTAREA:
445
494
  - .pa-textarea: Textarea element
495
+ - .pa-textarea--xs, --sm, --lg, --xl: Size variants
496
+ - .pa-textarea--success, --warning, --error: Validation states
497
+ - .pa-textarea--color-1 through --color-9: Theme color variants
446
498
 
447
499
  SELECT:
448
500
  - .pa-select: Select dropdown
501
+ - .pa-select--xs, --sm, --lg, --xl: Size variants
502
+ - .pa-select--success, --warning, --error: Validation states
503
+ - .pa-select--color-1 through --color-9: Theme color variants
449
504
 
450
505
  CHECKBOXES (custom tri-state):
451
506
  - .pa-checkbox: Checkbox wrapper label
@@ -466,9 +521,11 @@ INPUT GROUPS:
466
521
  - .pa-input-group__button: Button addon
467
522
 
468
523
  HELP TEXT:
469
- - .pa-form-text: Help/hint text below inputs
470
- - .pa-form-text--success: Success message
471
- - .pa-form-text--error: Error message
524
+ - .pa-form-help: Help/hint text below inputs
525
+ - .pa-form-help--success: Success message
526
+ - .pa-form-help--warning: Warning message
527
+ - .pa-form-help--error: Error message
528
+ - .pa-form-help--color-1 through --color-9: Theme color variants
472
529
 
473
530
  GRID LAYOUT (for multi-column forms):
474
531
  - .pa-row: Row container (flexbox)