@qwickapps/react-framework 1.5.13 → 1.7.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/dist/components/Scaffold.d.ts +2 -2
- package/dist/components/Scaffold.d.ts.map +1 -1
- package/dist/components/forms/Captcha.d.ts +33 -28
- package/dist/components/forms/Captcha.d.ts.map +1 -1
- package/dist/components/forms/FormCheckbox.d.ts +15 -12
- package/dist/components/forms/FormCheckbox.d.ts.map +1 -1
- package/dist/components/forms/FormField.d.ts +20 -23
- package/dist/components/forms/FormField.d.ts.map +1 -1
- package/dist/components/forms/FormSelect.d.ts +16 -15
- package/dist/components/forms/FormSelect.d.ts.map +1 -1
- package/dist/contexts/QwickAppContext.d.ts +1 -1
- package/dist/contexts/QwickAppContext.d.ts.map +1 -1
- package/dist/hooks/useBaseProps.d.ts +27 -1172
- package/dist/hooks/useBaseProps.d.ts.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.esm.css +1 -1
- package/dist/index.esm.js +393 -160
- package/dist/index.js +393 -159
- package/dist/palettes/PaletteBoutique.d.ts +10 -0
- package/dist/palettes/PaletteBoutique.d.ts.map +1 -0
- package/dist/palettes/index.d.ts +1 -0
- package/dist/palettes/index.d.ts.map +1 -1
- package/dist/palettes/manifest.json +33 -19
- package/dist/palettes/{palette-autumn.1.5.13.css → palette-autumn.1.7.0.css} +3 -1
- package/dist/palettes/palette-autumn.1.7.0.min.css +1 -0
- package/dist/palettes/palette-autumn.latest.css +3 -1
- package/dist/palettes/palette-autumn.latest.min.css +1 -1
- package/dist/palettes/palette-boutique.1.7.0.css +176 -0
- package/dist/palettes/palette-boutique.1.7.0.min.css +1 -0
- package/dist/palettes/palette-boutique.latest.css +176 -0
- package/dist/palettes/palette-boutique.latest.min.css +1 -0
- package/dist/palettes/{palette-cosmic.1.5.13.css → palette-cosmic.1.7.0.css} +3 -1
- package/dist/palettes/palette-cosmic.1.7.0.min.css +1 -0
- package/dist/palettes/palette-cosmic.latest.css +3 -1
- package/dist/palettes/palette-cosmic.latest.min.css +1 -1
- package/dist/palettes/{palette-ocean.1.5.13.css → palette-ocean.1.7.0.css} +3 -1
- package/dist/palettes/palette-ocean.1.7.0.min.css +1 -0
- package/dist/palettes/palette-ocean.latest.css +3 -1
- package/dist/palettes/palette-ocean.latest.min.css +1 -1
- package/dist/palettes/{palette-spring.1.5.13.css → palette-spring.1.7.0.css} +3 -1
- package/dist/palettes/palette-spring.1.7.0.min.css +1 -0
- package/dist/palettes/palette-spring.latest.css +3 -1
- package/dist/palettes/palette-spring.latest.min.css +1 -1
- package/dist/palettes/{palette-winter.1.5.13.css → palette-winter.1.7.0.css} +3 -1
- package/dist/palettes/palette-winter.1.7.0.min.css +1 -0
- package/dist/palettes/palette-winter.latest.css +3 -1
- package/dist/palettes/palette-winter.latest.min.css +1 -1
- package/dist/schemas/CaptchaSchema.d.ts +16 -0
- package/dist/schemas/CaptchaSchema.d.ts.map +1 -0
- package/dist/schemas/FormCheckboxSchema.d.ts +16 -0
- package/dist/schemas/FormCheckboxSchema.d.ts.map +1 -0
- package/dist/schemas/FormFieldSchema.d.ts +23 -0
- package/dist/schemas/FormFieldSchema.d.ts.map +1 -0
- package/dist/schemas/FormSelectSchema.d.ts +20 -0
- package/dist/schemas/FormSelectSchema.d.ts.map +1 -0
- package/dist/schemas/index.d.ts +4 -0
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/transformers/ComponentTransformer.d.ts +1 -0
- package/dist/schemas/transformers/ComponentTransformer.d.ts.map +1 -1
- package/package.json +2 -1
- package/src/components/QwickApp.css +22 -0
- package/src/components/Scaffold.css +5 -0
- package/src/components/Scaffold.tsx +5 -3
- package/src/components/forms/Captcha.tsx +57 -63
- package/src/components/forms/FormCheckbox.tsx +35 -43
- package/src/components/forms/FormField.tsx +50 -66
- package/src/components/forms/FormSelect.tsx +41 -49
- package/src/contexts/QwickAppContext.tsx +1 -1
- package/src/hooks/useBaseProps.ts +34 -1
- package/src/palettes/PaletteAutumn.css +3 -1
- package/src/palettes/PaletteBoutique.css +176 -0
- package/src/palettes/PaletteBoutique.ts +16 -0
- package/src/palettes/PaletteCosmic.css +3 -1
- package/src/palettes/PaletteOcean.css +3 -1
- package/src/palettes/PaletteSpring.css +3 -1
- package/src/palettes/PaletteWinter.css +3 -1
- package/src/palettes/index.ts +3 -0
- package/src/palettes/manifest.json +12 -1
- package/src/schemas/CaptchaSchema.ts +65 -0
- package/src/schemas/FormCheckboxSchema.ts +65 -0
- package/src/schemas/FormFieldSchema.ts +140 -0
- package/src/schemas/FormSelectSchema.ts +108 -0
- package/src/schemas/index.ts +4 -0
- package/src/schemas/transformers/ComponentTransformer.ts +32 -2
- package/dist/palettes/palette-autumn.1.5.13.min.css +0 -1
- package/dist/palettes/palette-cosmic.1.5.13.min.css +0 -1
- package/dist/palettes/palette-ocean.1.5.13.min.css +0 -1
- package/dist/palettes/palette-spring.1.5.13.min.css +0 -1
- package/dist/palettes/palette-winter.1.5.13.min.css +0 -1
- /package/dist/palettes/{palette-default.1.5.13.css → palette-default.1.7.0.css} +0 -0
- /package/dist/palettes/{palette-default.1.5.13.min.css → palette-default.1.7.0.min.css} +0 -0
|
@@ -61,12 +61,14 @@ html[data-palette="ocean"][data-theme="light"] {
|
|
|
61
61
|
--palette-error-main: #ef4444;
|
|
62
62
|
--palette-error-light: #fee2e2;
|
|
63
63
|
--palette-error-dark: #7f1d1d;
|
|
64
|
+
--palette-on-error: #ffffff;
|
|
64
65
|
--palette-error-border: #fecaca;
|
|
65
|
-
|
|
66
|
+
|
|
66
67
|
/* Warning palette - Sandy yellow */
|
|
67
68
|
--palette-warning-main: #f59e0b;
|
|
68
69
|
--palette-warning-light: #fef3c7;
|
|
69
70
|
--palette-warning-dark: #78350f;
|
|
71
|
+
--palette-on-warning: #000000;
|
|
70
72
|
--palette-warning-border: #fde68a;
|
|
71
73
|
|
|
72
74
|
/* Info palette - Crystal blue */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
html[data-palette="ocean"]:not([data-theme="dark"]),html[data-palette="ocean"][data-theme="light"]{--palette-primary-main:#0891b2;--palette-primary-light:#22d3ee;--palette-primary-dark:#164e63;--palette-on-primary:#ffffff;--palette-secondary-main:#0f766e;--palette-secondary-light:#14b8a6;--palette-secondary-dark:#134e4a;--palette-on-secondary:#ffffff;--palette-surface-main:#f0fdfa;--palette-surface-variant:#ccfbf1;--palette-surface-elevated:#ffffff;--palette-on-surface:#164e63;--palette-background-main:#ecfeff;--palette-background-dark:#cffafe;--palette-background-overlay:rgba(236,254,255,0.95);--palette-on-background:#0f766e;--palette-header-bg-start:rgba(236,254,255,0.98);--palette-header-bg-end:rgba(236,254,255,0.95);--palette-header-collapsed-bg-start:rgba(236,254,255,0.99);--palette-header-collapsed-bg-end:rgba(236,254,255,0.96);--palette-text-primary:#164e63;--palette-text-secondary:#0891b2;--palette-text-disabled:rgba(22,78,99,0.38);--palette-text-inverted:#ffffff;--palette-border-main:#a7f3d0;--palette-border-light:rgba(22,78,99,0.12);--palette-border-lighter:rgba(22,78,99,0.05);--palette-border-medium:#67e8f9;--palette-success-main:#059669;--palette-success-light:#d1fae5;--palette-success-dark:#065f46;--palette-success-border:#a7f3d0;--palette-error-main:#ef4444;--palette-error-light:#fee2e2;--palette-error-dark:#7f1d1d;--palette-on-error:#ffffff;--palette-error-border:#fecaca;--palette-warning-main:#f59e0b;--palette-warning-light:#fef3c7;--palette-warning-dark:#78350f;--palette-on-warning:#000000;--palette-warning-border:#fde68a;--palette-info-main:#0ea5e9;--palette-info-light:#e0f2fe;--palette-info-dark:#0c4a6e;--palette-on-info:#ffffff;--palette-info-border:#7dd3fc;--palette-accent-main:#f97316;--palette-accent-light:#fb923c;--palette-accent-dark:#ea580c;--palette-on-accent:#ffffff;--palette-control-main:#0c4a6e;--palette-control-light:#075985;--palette-control-text:#cffafe;--palette-control-border:#0891b2}html[data-palette="ocean"][data-theme="dark"]{--palette-primary-main:#22d3ee;--palette-primary-light:#67e8f9;--palette-primary-dark:#0891b2;--palette-on-primary:#0a1a1f;--palette-secondary-main:#5eead4;--palette-secondary-light:#99f6e4;--palette-secondary-dark:#14b8a6;--palette-on-secondary:#0a1a1f;--palette-surface-main:#122830;--palette-surface-variant:#1a3a45;--palette-surface-elevated:#0e7490;--palette-on-surface:#cffafe;--palette-background-main:#040a0d;--palette-background-dark:#0a1418;--palette-background-overlay:rgba(10,26,31,0.95);--palette-on-background:#5eead4;--palette-header-bg-start:rgba(4,10,13,0.98);--palette-header-bg-end:rgba(4,10,13,0.95);--palette-header-collapsed-bg-start:rgba(4,10,13,0.99);--palette-header-collapsed-bg-end:rgba(4,10,13,0.96);--palette-text-primary:#cffafe;--palette-text-secondary:#a5f3fc;--palette-text-disabled:rgba(207,250,254,0.38);--palette-text-inverted:#020617;--palette-border-main:#155e75;--palette-border-light:rgba(207,250,254,0.12);--palette-border-lighter:rgba(207,250,254,0.05);--palette-border-medium:#0c4a6e;--palette-success-main:#34d399;--palette-success-light:#065f46;--palette-success-dark:#10b981;--palette-success-border:#047857;--palette-error-main:#f87171;--palette-error-light:#7f1d1d;--palette-error-dark:#ef4444;--palette-error-border:#991b1b;--palette-warning-main:#fb7185;--palette-warning-light:#881337;--palette-warning-dark:#e11d48;--palette-warning-border:#be123c;--palette-info-main:#0ea5e9;--palette-info-light:#0c4a6e;--palette-info-dark:#38bdf8;--palette-on-info:#020617;--palette-info-border:#0284c7;--palette-accent-main:#ea580c;--palette-accent-light:#fb923c;--palette-accent-dark:#c2410c;--palette-on-accent:#cffafe;--palette-control-main:#164e63;--palette-control-light:#0e7490;--palette-control-text:#ecfeff;--palette-control-border:#155e75}
|
|
@@ -61,12 +61,14 @@ html[data-palette="ocean"][data-theme="light"] {
|
|
|
61
61
|
--palette-error-main: #ef4444;
|
|
62
62
|
--palette-error-light: #fee2e2;
|
|
63
63
|
--palette-error-dark: #7f1d1d;
|
|
64
|
+
--palette-on-error: #ffffff;
|
|
64
65
|
--palette-error-border: #fecaca;
|
|
65
|
-
|
|
66
|
+
|
|
66
67
|
/* Warning palette - Sandy yellow */
|
|
67
68
|
--palette-warning-main: #f59e0b;
|
|
68
69
|
--palette-warning-light: #fef3c7;
|
|
69
70
|
--palette-warning-dark: #78350f;
|
|
71
|
+
--palette-on-warning: #000000;
|
|
70
72
|
--palette-warning-border: #fde68a;
|
|
71
73
|
|
|
72
74
|
/* Info palette - Crystal blue */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
html[data-palette="ocean"]:not([data-theme="dark"]),html[data-palette="ocean"][data-theme="light"]{--palette-primary-main:#0891b2;--palette-primary-light:#22d3ee;--palette-primary-dark:#164e63;--palette-on-primary:#ffffff;--palette-secondary-main:#0f766e;--palette-secondary-light:#14b8a6;--palette-secondary-dark:#134e4a;--palette-on-secondary:#ffffff;--palette-surface-main:#f0fdfa;--palette-surface-variant:#ccfbf1;--palette-surface-elevated:#ffffff;--palette-on-surface:#164e63;--palette-background-main:#ecfeff;--palette-background-dark:#cffafe;--palette-background-overlay:rgba(236,254,255,0.95);--palette-on-background:#0f766e;--palette-header-bg-start:rgba(236,254,255,0.98);--palette-header-bg-end:rgba(236,254,255,0.95);--palette-header-collapsed-bg-start:rgba(236,254,255,0.99);--palette-header-collapsed-bg-end:rgba(236,254,255,0.96);--palette-text-primary:#164e63;--palette-text-secondary:#0891b2;--palette-text-disabled:rgba(22,78,99,0.38);--palette-text-inverted:#ffffff;--palette-border-main:#a7f3d0;--palette-border-light:rgba(22,78,99,0.12);--palette-border-lighter:rgba(22,78,99,0.05);--palette-border-medium:#67e8f9;--palette-success-main:#059669;--palette-success-light:#d1fae5;--palette-success-dark:#065f46;--palette-success-border:#a7f3d0;--palette-error-main:#ef4444;--palette-error-light:#fee2e2;--palette-error-dark:#7f1d1d;--palette-error-border:#fecaca;--palette-warning-main:#f59e0b;--palette-warning-light:#fef3c7;--palette-warning-dark:#78350f;--palette-warning-border:#fde68a;--palette-info-main:#0ea5e9;--palette-info-light:#e0f2fe;--palette-info-dark:#0c4a6e;--palette-on-info:#ffffff;--palette-info-border:#7dd3fc;--palette-accent-main:#f97316;--palette-accent-light:#fb923c;--palette-accent-dark:#ea580c;--palette-on-accent:#ffffff;--palette-control-main:#0c4a6e;--palette-control-light:#075985;--palette-control-text:#cffafe;--palette-control-border:#0891b2}html[data-palette="ocean"][data-theme="dark"]{--palette-primary-main:#22d3ee;--palette-primary-light:#67e8f9;--palette-primary-dark:#0891b2;--palette-on-primary:#0a1a1f;--palette-secondary-main:#5eead4;--palette-secondary-light:#99f6e4;--palette-secondary-dark:#14b8a6;--palette-on-secondary:#0a1a1f;--palette-surface-main:#122830;--palette-surface-variant:#1a3a45;--palette-surface-elevated:#0e7490;--palette-on-surface:#cffafe;--palette-background-main:#040a0d;--palette-background-dark:#0a1418;--palette-background-overlay:rgba(10,26,31,0.95);--palette-on-background:#5eead4;--palette-header-bg-start:rgba(4,10,13,0.98);--palette-header-bg-end:rgba(4,10,13,0.95);--palette-header-collapsed-bg-start:rgba(4,10,13,0.99);--palette-header-collapsed-bg-end:rgba(4,10,13,0.96);--palette-text-primary:#cffafe;--palette-text-secondary:#a5f3fc;--palette-text-disabled:rgba(207,250,254,0.38);--palette-text-inverted:#020617;--palette-border-main:#155e75;--palette-border-light:rgba(207,250,254,0.12);--palette-border-lighter:rgba(207,250,254,0.05);--palette-border-medium:#0c4a6e;--palette-success-main:#34d399;--palette-success-light:#065f46;--palette-success-dark:#10b981;--palette-success-border:#047857;--palette-error-main:#f87171;--palette-error-light:#7f1d1d;--palette-error-dark:#ef4444;--palette-error-border:#991b1b;--palette-warning-main:#fb7185;--palette-warning-light:#881337;--palette-warning-dark:#e11d48;--palette-warning-border:#be123c;--palette-info-main:#0ea5e9;--palette-info-light:#0c4a6e;--palette-info-dark:#38bdf8;--palette-on-info:#020617;--palette-info-border:#0284c7;--palette-accent-main:#ea580c;--palette-accent-light:#fb923c;--palette-accent-dark:#c2410c;--palette-on-accent:#cffafe;--palette-control-main:#164e63;--palette-control-light:#0e7490;--palette-control-text:#ecfeff;--palette-control-border:#155e75}
|
|
1
|
+
html[data-palette="ocean"]:not([data-theme="dark"]),html[data-palette="ocean"][data-theme="light"]{--palette-primary-main:#0891b2;--palette-primary-light:#22d3ee;--palette-primary-dark:#164e63;--palette-on-primary:#ffffff;--palette-secondary-main:#0f766e;--palette-secondary-light:#14b8a6;--palette-secondary-dark:#134e4a;--palette-on-secondary:#ffffff;--palette-surface-main:#f0fdfa;--palette-surface-variant:#ccfbf1;--palette-surface-elevated:#ffffff;--palette-on-surface:#164e63;--palette-background-main:#ecfeff;--palette-background-dark:#cffafe;--palette-background-overlay:rgba(236,254,255,0.95);--palette-on-background:#0f766e;--palette-header-bg-start:rgba(236,254,255,0.98);--palette-header-bg-end:rgba(236,254,255,0.95);--palette-header-collapsed-bg-start:rgba(236,254,255,0.99);--palette-header-collapsed-bg-end:rgba(236,254,255,0.96);--palette-text-primary:#164e63;--palette-text-secondary:#0891b2;--palette-text-disabled:rgba(22,78,99,0.38);--palette-text-inverted:#ffffff;--palette-border-main:#a7f3d0;--palette-border-light:rgba(22,78,99,0.12);--palette-border-lighter:rgba(22,78,99,0.05);--palette-border-medium:#67e8f9;--palette-success-main:#059669;--palette-success-light:#d1fae5;--palette-success-dark:#065f46;--palette-success-border:#a7f3d0;--palette-error-main:#ef4444;--palette-error-light:#fee2e2;--palette-error-dark:#7f1d1d;--palette-on-error:#ffffff;--palette-error-border:#fecaca;--palette-warning-main:#f59e0b;--palette-warning-light:#fef3c7;--palette-warning-dark:#78350f;--palette-on-warning:#000000;--palette-warning-border:#fde68a;--palette-info-main:#0ea5e9;--palette-info-light:#e0f2fe;--palette-info-dark:#0c4a6e;--palette-on-info:#ffffff;--palette-info-border:#7dd3fc;--palette-accent-main:#f97316;--palette-accent-light:#fb923c;--palette-accent-dark:#ea580c;--palette-on-accent:#ffffff;--palette-control-main:#0c4a6e;--palette-control-light:#075985;--palette-control-text:#cffafe;--palette-control-border:#0891b2}html[data-palette="ocean"][data-theme="dark"]{--palette-primary-main:#22d3ee;--palette-primary-light:#67e8f9;--palette-primary-dark:#0891b2;--palette-on-primary:#0a1a1f;--palette-secondary-main:#5eead4;--palette-secondary-light:#99f6e4;--palette-secondary-dark:#14b8a6;--palette-on-secondary:#0a1a1f;--palette-surface-main:#122830;--palette-surface-variant:#1a3a45;--palette-surface-elevated:#0e7490;--palette-on-surface:#cffafe;--palette-background-main:#040a0d;--palette-background-dark:#0a1418;--palette-background-overlay:rgba(10,26,31,0.95);--palette-on-background:#5eead4;--palette-header-bg-start:rgba(4,10,13,0.98);--palette-header-bg-end:rgba(4,10,13,0.95);--palette-header-collapsed-bg-start:rgba(4,10,13,0.99);--palette-header-collapsed-bg-end:rgba(4,10,13,0.96);--palette-text-primary:#cffafe;--palette-text-secondary:#a5f3fc;--palette-text-disabled:rgba(207,250,254,0.38);--palette-text-inverted:#020617;--palette-border-main:#155e75;--palette-border-light:rgba(207,250,254,0.12);--palette-border-lighter:rgba(207,250,254,0.05);--palette-border-medium:#0c4a6e;--palette-success-main:#34d399;--palette-success-light:#065f46;--palette-success-dark:#10b981;--palette-success-border:#047857;--palette-error-main:#f87171;--palette-error-light:#7f1d1d;--palette-error-dark:#ef4444;--palette-error-border:#991b1b;--palette-warning-main:#fb7185;--palette-warning-light:#881337;--palette-warning-dark:#e11d48;--palette-warning-border:#be123c;--palette-info-main:#0ea5e9;--palette-info-light:#0c4a6e;--palette-info-dark:#38bdf8;--palette-on-info:#020617;--palette-info-border:#0284c7;--palette-accent-main:#ea580c;--palette-accent-light:#fb923c;--palette-accent-dark:#c2410c;--palette-on-accent:#cffafe;--palette-control-main:#164e63;--palette-control-light:#0e7490;--palette-control-text:#ecfeff;--palette-control-border:#155e75}
|
|
@@ -55,12 +55,14 @@ html[data-palette="spring"][data-theme="light"] {
|
|
|
55
55
|
--palette-error-main: #f43f5e;
|
|
56
56
|
--palette-error-light: #ffe4e6;
|
|
57
57
|
--palette-error-dark: #881337;
|
|
58
|
+
--palette-on-error: #ffffff;
|
|
58
59
|
--palette-error-border: #fecdd3;
|
|
59
|
-
|
|
60
|
+
|
|
60
61
|
/* Warning palette - Daffodil */
|
|
61
62
|
--palette-warning-main: #eab308;
|
|
62
63
|
--palette-warning-light: #fefce8;
|
|
63
64
|
--palette-warning-dark: #713f12;
|
|
65
|
+
--palette-on-warning: #000000;
|
|
64
66
|
--palette-warning-border: #fef08a;
|
|
65
67
|
|
|
66
68
|
/* Info palette - Sky blue */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
html[data-palette="spring"]:not([data-theme="dark"]),html[data-palette="spring"][data-theme="light"]{--palette-primary-main:#16a34a;--palette-primary-light:#4ade80;--palette-primary-dark:#15803d;--palette-on-primary:#ffffff;--palette-secondary-main:#ec4899;--palette-secondary-light:#f472b6;--palette-secondary-dark:#be185d;--palette-on-secondary:#ffffff;--palette-surface-main:#f7fee7;--palette-surface-variant:#d9f7be;--palette-surface-elevated:#ffffff;--palette-on-surface:#14532d;--palette-background-main:#f0fdf4;--palette-background-dark:#dcfce7;--palette-background-overlay:rgba(240,253,244,0.95);--palette-on-background:#166534;--palette-text-primary:#14532d;--palette-text-secondary:#166534;--palette-text-disabled:rgba(20,83,45,0.38);--palette-text-inverted:#ffffff;--palette-border-main:#bbf7d0;--palette-border-light:rgba(20,83,45,0.12);--palette-border-lighter:rgba(20,83,45,0.05);--palette-border-medium:#86efac;--palette-success-main:#22c55e;--palette-success-light:#dcfce7;--palette-success-dark:#15803d;--palette-success-border:#bbf7d0;--palette-error-main:#f43f5e;--palette-error-light:#ffe4e6;--palette-error-dark:#881337;--palette-on-error:#ffffff;--palette-error-border:#fecdd3;--palette-warning-main:#eab308;--palette-warning-light:#fefce8;--palette-warning-dark:#713f12;--palette-on-warning:#000000;--palette-warning-border:#fef08a;--palette-info-main:#0ea5e9;--palette-info-light:#e0f2fe;--palette-info-dark:#0c4a6e;--palette-on-info:#14532d;--palette-info-border:#7dd3fc;--palette-accent-main:#ec4899;--palette-accent-light:#fce7f3;--palette-accent-dark:#be185d;--palette-on-accent:#ffffff;--palette-control-main:#365314;--palette-control-light:#4d7c0f;--palette-control-text:#ecfdf5;--palette-control-border:#65a30d}html[data-palette="spring"][data-theme="dark"]{--palette-primary-main:#4ade80;--palette-primary-light:#86efac;--palette-primary-dark:#16a34a;--palette-on-primary:#0f1f0f;--palette-secondary-main:#f472b6;--palette-secondary-light:#f9a8d4;--palette-secondary-dark:#ec4899;--palette-on-secondary:#0f1f0f;--palette-surface-main:#162816;--palette-surface-variant:#1f351f;--palette-surface-elevated:#2d4a2d;--palette-on-surface:#dcfce7;--palette-background-main:#060b06;--palette-background-dark:#0c140c;--palette-background-overlay:rgba(6,11,6,0.95);--palette-on-background:#bbf7d0;--palette-header-bg-start:rgba(6,11,6,0.98);--palette-header-bg-end:rgba(6,11,6,0.95);--palette-header-collapsed-bg-start:rgba(6,11,6,0.99);--palette-header-collapsed-bg-end:rgba(6,11,6,0.96);--palette-text-primary:#dcfce7;--palette-text-secondary:#bbf7d0;--palette-text-disabled:rgba(220,252,231,0.38);--palette-text-inverted:#0a120a;--palette-border-main:#166534;--palette-border-light:rgba(220,252,231,0.12);--palette-border-lighter:rgba(220,252,231,0.05);--palette-border-medium:#14532d;--palette-success-main:#22c55e;--palette-success-light:#14532d;--palette-success-dark:#4ade80;--palette-success-border:#166534;--palette-error-main:#f472b6;--palette-error-light:#881337;--palette-error-dark:#ec4899;--palette-error-border:#be185d;--palette-warning-main:#facc15;--palette-warning-light:#713f12;--palette-warning-dark:#eab308;--palette-warning-border:#a16207;--palette-info-main:#06b6d4;--palette-info-light:#164e63;--palette-info-dark:#22d3ee;--palette-on-info:#0a120a;--palette-info-border:#0891b2;--palette-accent-main:#f472b6;--palette-accent-light:#fce7f3;--palette-accent-dark:#db2777;--palette-on-accent:#dcfce7;--palette-control-main:#1a2e1a;--palette-control-light:#2d4a2d;--palette-control-text:#dcfce7;--palette-control-border:#166534}
|
|
@@ -55,12 +55,14 @@ html[data-palette="spring"][data-theme="light"] {
|
|
|
55
55
|
--palette-error-main: #f43f5e;
|
|
56
56
|
--palette-error-light: #ffe4e6;
|
|
57
57
|
--palette-error-dark: #881337;
|
|
58
|
+
--palette-on-error: #ffffff;
|
|
58
59
|
--palette-error-border: #fecdd3;
|
|
59
|
-
|
|
60
|
+
|
|
60
61
|
/* Warning palette - Daffodil */
|
|
61
62
|
--palette-warning-main: #eab308;
|
|
62
63
|
--palette-warning-light: #fefce8;
|
|
63
64
|
--palette-warning-dark: #713f12;
|
|
65
|
+
--palette-on-warning: #000000;
|
|
64
66
|
--palette-warning-border: #fef08a;
|
|
65
67
|
|
|
66
68
|
/* Info palette - Sky blue */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
html[data-palette="spring"]:not([data-theme="dark"]),html[data-palette="spring"][data-theme="light"]{--palette-primary-main:#16a34a;--palette-primary-light:#4ade80;--palette-primary-dark:#15803d;--palette-on-primary:#ffffff;--palette-secondary-main:#ec4899;--palette-secondary-light:#f472b6;--palette-secondary-dark:#be185d;--palette-on-secondary:#ffffff;--palette-surface-main:#f7fee7;--palette-surface-variant:#d9f7be;--palette-surface-elevated:#ffffff;--palette-on-surface:#14532d;--palette-background-main:#f0fdf4;--palette-background-dark:#dcfce7;--palette-background-overlay:rgba(240,253,244,0.95);--palette-on-background:#166534;--palette-text-primary:#14532d;--palette-text-secondary:#166534;--palette-text-disabled:rgba(20,83,45,0.38);--palette-text-inverted:#ffffff;--palette-border-main:#bbf7d0;--palette-border-light:rgba(20,83,45,0.12);--palette-border-lighter:rgba(20,83,45,0.05);--palette-border-medium:#86efac;--palette-success-main:#22c55e;--palette-success-light:#dcfce7;--palette-success-dark:#15803d;--palette-success-border:#bbf7d0;--palette-error-main:#f43f5e;--palette-error-light:#ffe4e6;--palette-error-dark:#881337;--palette-error-border:#fecdd3;--palette-warning-main:#eab308;--palette-warning-light:#fefce8;--palette-warning-dark:#713f12;--palette-warning-border:#fef08a;--palette-info-main:#0ea5e9;--palette-info-light:#e0f2fe;--palette-info-dark:#0c4a6e;--palette-on-info:#14532d;--palette-info-border:#7dd3fc;--palette-accent-main:#ec4899;--palette-accent-light:#fce7f3;--palette-accent-dark:#be185d;--palette-on-accent:#ffffff;--palette-control-main:#365314;--palette-control-light:#4d7c0f;--palette-control-text:#ecfdf5;--palette-control-border:#65a30d}html[data-palette="spring"][data-theme="dark"]{--palette-primary-main:#4ade80;--palette-primary-light:#86efac;--palette-primary-dark:#16a34a;--palette-on-primary:#0f1f0f;--palette-secondary-main:#f472b6;--palette-secondary-light:#f9a8d4;--palette-secondary-dark:#ec4899;--palette-on-secondary:#0f1f0f;--palette-surface-main:#162816;--palette-surface-variant:#1f351f;--palette-surface-elevated:#2d4a2d;--palette-on-surface:#dcfce7;--palette-background-main:#060b06;--palette-background-dark:#0c140c;--palette-background-overlay:rgba(6,11,6,0.95);--palette-on-background:#bbf7d0;--palette-header-bg-start:rgba(6,11,6,0.98);--palette-header-bg-end:rgba(6,11,6,0.95);--palette-header-collapsed-bg-start:rgba(6,11,6,0.99);--palette-header-collapsed-bg-end:rgba(6,11,6,0.96);--palette-text-primary:#dcfce7;--palette-text-secondary:#bbf7d0;--palette-text-disabled:rgba(220,252,231,0.38);--palette-text-inverted:#0a120a;--palette-border-main:#166534;--palette-border-light:rgba(220,252,231,0.12);--palette-border-lighter:rgba(220,252,231,0.05);--palette-border-medium:#14532d;--palette-success-main:#22c55e;--palette-success-light:#14532d;--palette-success-dark:#4ade80;--palette-success-border:#166534;--palette-error-main:#f472b6;--palette-error-light:#881337;--palette-error-dark:#ec4899;--palette-error-border:#be185d;--palette-warning-main:#facc15;--palette-warning-light:#713f12;--palette-warning-dark:#eab308;--palette-warning-border:#a16207;--palette-info-main:#06b6d4;--palette-info-light:#164e63;--palette-info-dark:#22d3ee;--palette-on-info:#0a120a;--palette-info-border:#0891b2;--palette-accent-main:#f472b6;--palette-accent-light:#fce7f3;--palette-accent-dark:#db2777;--palette-on-accent:#dcfce7;--palette-control-main:#1a2e1a;--palette-control-light:#2d4a2d;--palette-control-text:#dcfce7;--palette-control-border:#166534}
|
|
1
|
+
html[data-palette="spring"]:not([data-theme="dark"]),html[data-palette="spring"][data-theme="light"]{--palette-primary-main:#16a34a;--palette-primary-light:#4ade80;--palette-primary-dark:#15803d;--palette-on-primary:#ffffff;--palette-secondary-main:#ec4899;--palette-secondary-light:#f472b6;--palette-secondary-dark:#be185d;--palette-on-secondary:#ffffff;--palette-surface-main:#f7fee7;--palette-surface-variant:#d9f7be;--palette-surface-elevated:#ffffff;--palette-on-surface:#14532d;--palette-background-main:#f0fdf4;--palette-background-dark:#dcfce7;--palette-background-overlay:rgba(240,253,244,0.95);--palette-on-background:#166534;--palette-text-primary:#14532d;--palette-text-secondary:#166534;--palette-text-disabled:rgba(20,83,45,0.38);--palette-text-inverted:#ffffff;--palette-border-main:#bbf7d0;--palette-border-light:rgba(20,83,45,0.12);--palette-border-lighter:rgba(20,83,45,0.05);--palette-border-medium:#86efac;--palette-success-main:#22c55e;--palette-success-light:#dcfce7;--palette-success-dark:#15803d;--palette-success-border:#bbf7d0;--palette-error-main:#f43f5e;--palette-error-light:#ffe4e6;--palette-error-dark:#881337;--palette-on-error:#ffffff;--palette-error-border:#fecdd3;--palette-warning-main:#eab308;--palette-warning-light:#fefce8;--palette-warning-dark:#713f12;--palette-on-warning:#000000;--palette-warning-border:#fef08a;--palette-info-main:#0ea5e9;--palette-info-light:#e0f2fe;--palette-info-dark:#0c4a6e;--palette-on-info:#14532d;--palette-info-border:#7dd3fc;--palette-accent-main:#ec4899;--palette-accent-light:#fce7f3;--palette-accent-dark:#be185d;--palette-on-accent:#ffffff;--palette-control-main:#365314;--palette-control-light:#4d7c0f;--palette-control-text:#ecfdf5;--palette-control-border:#65a30d}html[data-palette="spring"][data-theme="dark"]{--palette-primary-main:#4ade80;--palette-primary-light:#86efac;--palette-primary-dark:#16a34a;--palette-on-primary:#0f1f0f;--palette-secondary-main:#f472b6;--palette-secondary-light:#f9a8d4;--palette-secondary-dark:#ec4899;--palette-on-secondary:#0f1f0f;--palette-surface-main:#162816;--palette-surface-variant:#1f351f;--palette-surface-elevated:#2d4a2d;--palette-on-surface:#dcfce7;--palette-background-main:#060b06;--palette-background-dark:#0c140c;--palette-background-overlay:rgba(6,11,6,0.95);--palette-on-background:#bbf7d0;--palette-header-bg-start:rgba(6,11,6,0.98);--palette-header-bg-end:rgba(6,11,6,0.95);--palette-header-collapsed-bg-start:rgba(6,11,6,0.99);--palette-header-collapsed-bg-end:rgba(6,11,6,0.96);--palette-text-primary:#dcfce7;--palette-text-secondary:#bbf7d0;--palette-text-disabled:rgba(220,252,231,0.38);--palette-text-inverted:#0a120a;--palette-border-main:#166534;--palette-border-light:rgba(220,252,231,0.12);--palette-border-lighter:rgba(220,252,231,0.05);--palette-border-medium:#14532d;--palette-success-main:#22c55e;--palette-success-light:#14532d;--palette-success-dark:#4ade80;--palette-success-border:#166534;--palette-error-main:#f472b6;--palette-error-light:#881337;--palette-error-dark:#ec4899;--palette-error-border:#be185d;--palette-warning-main:#facc15;--palette-warning-light:#713f12;--palette-warning-dark:#eab308;--palette-warning-border:#a16207;--palette-info-main:#06b6d4;--palette-info-light:#164e63;--palette-info-dark:#22d3ee;--palette-on-info:#0a120a;--palette-info-border:#0891b2;--palette-accent-main:#f472b6;--palette-accent-light:#fce7f3;--palette-accent-dark:#db2777;--palette-on-accent:#dcfce7;--palette-control-main:#1a2e1a;--palette-control-light:#2d4a2d;--palette-control-text:#dcfce7;--palette-control-border:#166534}
|
|
@@ -61,12 +61,14 @@ html[data-palette="winter"][data-theme="light"] {
|
|
|
61
61
|
--palette-error-main: #dc2626;
|
|
62
62
|
--palette-error-light: #fee2e2;
|
|
63
63
|
--palette-error-dark: #7f1d1d;
|
|
64
|
+
--palette-on-error: #ffffff;
|
|
64
65
|
--palette-error-border: #fecaca;
|
|
65
|
-
|
|
66
|
+
|
|
66
67
|
/* Warning palette - Amber frost */
|
|
67
68
|
--palette-warning-main: #d97706;
|
|
68
69
|
--palette-warning-light: #fef3c7;
|
|
69
70
|
--palette-warning-dark: #92400e;
|
|
71
|
+
--palette-on-warning: #000000;
|
|
70
72
|
--palette-warning-border: #fde68a;
|
|
71
73
|
|
|
72
74
|
/* Info palette - Arctic blue */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
html[data-palette="winter"]:not([data-theme="dark"]),html[data-palette="winter"][data-theme="light"]{--palette-primary-main:#0077be;--palette-primary-light:#5ba3d0;--palette-primary-dark:#005082;--palette-on-primary:#ffffff;--palette-secondary-main:#4682b4;--palette-secondary-light:#7ba7cc;--palette-secondary-dark:#2e5984;--palette-on-secondary:#ffffff;--palette-surface-main:#fafbfc;--palette-surface-variant:#e2e8f0;--palette-surface-elevated:#ffffff;--palette-on-surface:#0f172a;--palette-background-main:#f8fafc;--palette-background-dark:#f1f5f9;--palette-background-overlay:rgba(248,250,252,0.95);--palette-on-background:#475569;--palette-header-bg-start:rgba(248,250,252,0.98);--palette-header-bg-end:rgba(248,250,252,0.95);--palette-header-collapsed-bg-start:rgba(248,250,252,0.99);--palette-header-collapsed-bg-end:rgba(248,250,252,0.96);--palette-text-primary:#0f172a;--palette-text-secondary:#475569;--palette-text-disabled:rgba(15,23,42,0.38);--palette-text-inverted:#ffffff;--palette-border-main:#cbd5e1;--palette-border-light:rgba(15,23,42,0.12);--palette-border-lighter:rgba(15,23,42,0.05);--palette-border-medium:#94a3b8;--palette-success-main:#059669;--palette-success-light:#d1fae5;--palette-success-dark:#064e3b;--palette-success-border:#a7f3d0;--palette-error-main:#dc2626;--palette-error-light:#fee2e2;--palette-error-dark:#7f1d1d;--palette-on-error:#ffffff;--palette-error-border:#fecaca;--palette-warning-main:#d97706;--palette-warning-light:#fef3c7;--palette-warning-dark:#92400e;--palette-on-warning:#000000;--palette-warning-border:#fde68a;--palette-info-main:#0284c7;--palette-info-light:#e0f2fe;--palette-info-dark:#0c4a6e;--palette-on-info:#ffffff;--palette-info-border:#7dd3fc;--palette-accent-main:#ec4899;--palette-accent-light:#fce7f3;--palette-accent-dark:#be185d;--palette-on-accent:#ffffff;--palette-control-main:#1e293b;--palette-control-light:#334155;--palette-control-text:#e2e8f0;--palette-control-border:#475569}html[data-palette="winter"][data-theme="dark"]{--palette-primary-main:#7dd3fc;--palette-primary-light:#bae6fd;--palette-primary-dark:#0369a1;--palette-on-primary:#020617;--palette-secondary-main:#94a3b8;--palette-secondary-light:#cbd5e1;--palette-secondary-dark:#64748b;--palette-on-secondary:#020617;--palette-surface-main:#172033;--palette-surface-variant:#1e293b;--palette-surface-elevated:#334155;--palette-on-surface:#f8fafc;--palette-background-main:#04080f;--palette-background-dark:#0a1018;--palette-background-overlay:rgba(15,23,42,0.95);--palette-on-background:#cbd5e1;--palette-header-bg-start:rgba(4,8,15,0.98);--palette-header-bg-end:rgba(4,8,15,0.95);--palette-header-collapsed-bg-start:rgba(4,8,15,0.99);--palette-header-collapsed-bg-end:rgba(4,8,15,0.96);--palette-text-primary:#f8fafc;--palette-text-secondary:#cbd5e1;--palette-text-disabled:rgba(248,250,252,0.38);--palette-text-inverted:#020617;--palette-border-main:#475569;--palette-border-light:rgba(248,250,252,0.12);--palette-border-lighter:rgba(248,250,252,0.05);--palette-border-medium:#334155;--palette-success-main:#34d399;--palette-success-light:#064e3b;--palette-success-dark:#10b981;--palette-success-border:#065f46;--palette-error-main:#f87171;--palette-error-light:#7f1d1d;--palette-error-dark:#ef4444;--palette-error-border:#991b1b;--palette-warning-main:#fb923c;--palette-warning-light:#9a3412;--palette-warning-dark:#f97316;--palette-warning-border:#c2410c;--palette-info-main:#38bdf8;--palette-info-light:#0c4a6e;--palette-info-dark:#0ea5e9;--palette-on-info:#020617;--palette-info-border:#0284c7;--palette-accent-main:#f472b6;--palette-accent-light:#fce7f3;--palette-accent-dark:#db2777;--palette-on-accent:#f8fafc;--palette-control-main:#1e293b;--palette-control-light:#334155;--palette-control-text:#e2e8f0;--palette-control-border:#475569}
|
|
@@ -61,12 +61,14 @@ html[data-palette="winter"][data-theme="light"] {
|
|
|
61
61
|
--palette-error-main: #dc2626;
|
|
62
62
|
--palette-error-light: #fee2e2;
|
|
63
63
|
--palette-error-dark: #7f1d1d;
|
|
64
|
+
--palette-on-error: #ffffff;
|
|
64
65
|
--palette-error-border: #fecaca;
|
|
65
|
-
|
|
66
|
+
|
|
66
67
|
/* Warning palette - Amber frost */
|
|
67
68
|
--palette-warning-main: #d97706;
|
|
68
69
|
--palette-warning-light: #fef3c7;
|
|
69
70
|
--palette-warning-dark: #92400e;
|
|
71
|
+
--palette-on-warning: #000000;
|
|
70
72
|
--palette-warning-border: #fde68a;
|
|
71
73
|
|
|
72
74
|
/* Info palette - Arctic blue */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
html[data-palette="winter"]:not([data-theme="dark"]),html[data-palette="winter"][data-theme="light"]{--palette-primary-main:#0077be;--palette-primary-light:#5ba3d0;--palette-primary-dark:#005082;--palette-on-primary:#ffffff;--palette-secondary-main:#4682b4;--palette-secondary-light:#7ba7cc;--palette-secondary-dark:#2e5984;--palette-on-secondary:#ffffff;--palette-surface-main:#fafbfc;--palette-surface-variant:#e2e8f0;--palette-surface-elevated:#ffffff;--palette-on-surface:#0f172a;--palette-background-main:#f8fafc;--palette-background-dark:#f1f5f9;--palette-background-overlay:rgba(248,250,252,0.95);--palette-on-background:#475569;--palette-header-bg-start:rgba(248,250,252,0.98);--palette-header-bg-end:rgba(248,250,252,0.95);--palette-header-collapsed-bg-start:rgba(248,250,252,0.99);--palette-header-collapsed-bg-end:rgba(248,250,252,0.96);--palette-text-primary:#0f172a;--palette-text-secondary:#475569;--palette-text-disabled:rgba(15,23,42,0.38);--palette-text-inverted:#ffffff;--palette-border-main:#cbd5e1;--palette-border-light:rgba(15,23,42,0.12);--palette-border-lighter:rgba(15,23,42,0.05);--palette-border-medium:#94a3b8;--palette-success-main:#059669;--palette-success-light:#d1fae5;--palette-success-dark:#064e3b;--palette-success-border:#a7f3d0;--palette-error-main:#dc2626;--palette-error-light:#fee2e2;--palette-error-dark:#7f1d1d;--palette-error-border:#fecaca;--palette-warning-main:#d97706;--palette-warning-light:#fef3c7;--palette-warning-dark:#92400e;--palette-warning-border:#fde68a;--palette-info-main:#0284c7;--palette-info-light:#e0f2fe;--palette-info-dark:#0c4a6e;--palette-on-info:#ffffff;--palette-info-border:#7dd3fc;--palette-accent-main:#ec4899;--palette-accent-light:#fce7f3;--palette-accent-dark:#be185d;--palette-on-accent:#ffffff;--palette-control-main:#1e293b;--palette-control-light:#334155;--palette-control-text:#e2e8f0;--palette-control-border:#475569}html[data-palette="winter"][data-theme="dark"]{--palette-primary-main:#7dd3fc;--palette-primary-light:#bae6fd;--palette-primary-dark:#0369a1;--palette-on-primary:#020617;--palette-secondary-main:#94a3b8;--palette-secondary-light:#cbd5e1;--palette-secondary-dark:#64748b;--palette-on-secondary:#020617;--palette-surface-main:#172033;--palette-surface-variant:#1e293b;--palette-surface-elevated:#334155;--palette-on-surface:#f8fafc;--palette-background-main:#04080f;--palette-background-dark:#0a1018;--palette-background-overlay:rgba(15,23,42,0.95);--palette-on-background:#cbd5e1;--palette-header-bg-start:rgba(4,8,15,0.98);--palette-header-bg-end:rgba(4,8,15,0.95);--palette-header-collapsed-bg-start:rgba(4,8,15,0.99);--palette-header-collapsed-bg-end:rgba(4,8,15,0.96);--palette-text-primary:#f8fafc;--palette-text-secondary:#cbd5e1;--palette-text-disabled:rgba(248,250,252,0.38);--palette-text-inverted:#020617;--palette-border-main:#475569;--palette-border-light:rgba(248,250,252,0.12);--palette-border-lighter:rgba(248,250,252,0.05);--palette-border-medium:#334155;--palette-success-main:#34d399;--palette-success-light:#064e3b;--palette-success-dark:#10b981;--palette-success-border:#065f46;--palette-error-main:#f87171;--palette-error-light:#7f1d1d;--palette-error-dark:#ef4444;--palette-error-border:#991b1b;--palette-warning-main:#fb923c;--palette-warning-light:#9a3412;--palette-warning-dark:#f97316;--palette-warning-border:#c2410c;--palette-info-main:#38bdf8;--palette-info-light:#0c4a6e;--palette-info-dark:#0ea5e9;--palette-on-info:#020617;--palette-info-border:#0284c7;--palette-accent-main:#f472b6;--palette-accent-light:#fce7f3;--palette-accent-dark:#db2777;--palette-on-accent:#f8fafc;--palette-control-main:#1e293b;--palette-control-light:#334155;--palette-control-text:#e2e8f0;--palette-control-border:#475569}
|
|
1
|
+
html[data-palette="winter"]:not([data-theme="dark"]),html[data-palette="winter"][data-theme="light"]{--palette-primary-main:#0077be;--palette-primary-light:#5ba3d0;--palette-primary-dark:#005082;--palette-on-primary:#ffffff;--palette-secondary-main:#4682b4;--palette-secondary-light:#7ba7cc;--palette-secondary-dark:#2e5984;--palette-on-secondary:#ffffff;--palette-surface-main:#fafbfc;--palette-surface-variant:#e2e8f0;--palette-surface-elevated:#ffffff;--palette-on-surface:#0f172a;--palette-background-main:#f8fafc;--palette-background-dark:#f1f5f9;--palette-background-overlay:rgba(248,250,252,0.95);--palette-on-background:#475569;--palette-header-bg-start:rgba(248,250,252,0.98);--palette-header-bg-end:rgba(248,250,252,0.95);--palette-header-collapsed-bg-start:rgba(248,250,252,0.99);--palette-header-collapsed-bg-end:rgba(248,250,252,0.96);--palette-text-primary:#0f172a;--palette-text-secondary:#475569;--palette-text-disabled:rgba(15,23,42,0.38);--palette-text-inverted:#ffffff;--palette-border-main:#cbd5e1;--palette-border-light:rgba(15,23,42,0.12);--palette-border-lighter:rgba(15,23,42,0.05);--palette-border-medium:#94a3b8;--palette-success-main:#059669;--palette-success-light:#d1fae5;--palette-success-dark:#064e3b;--palette-success-border:#a7f3d0;--palette-error-main:#dc2626;--palette-error-light:#fee2e2;--palette-error-dark:#7f1d1d;--palette-on-error:#ffffff;--palette-error-border:#fecaca;--palette-warning-main:#d97706;--palette-warning-light:#fef3c7;--palette-warning-dark:#92400e;--palette-on-warning:#000000;--palette-warning-border:#fde68a;--palette-info-main:#0284c7;--palette-info-light:#e0f2fe;--palette-info-dark:#0c4a6e;--palette-on-info:#ffffff;--palette-info-border:#7dd3fc;--palette-accent-main:#ec4899;--palette-accent-light:#fce7f3;--palette-accent-dark:#be185d;--palette-on-accent:#ffffff;--palette-control-main:#1e293b;--palette-control-light:#334155;--palette-control-text:#e2e8f0;--palette-control-border:#475569}html[data-palette="winter"][data-theme="dark"]{--palette-primary-main:#7dd3fc;--palette-primary-light:#bae6fd;--palette-primary-dark:#0369a1;--palette-on-primary:#020617;--palette-secondary-main:#94a3b8;--palette-secondary-light:#cbd5e1;--palette-secondary-dark:#64748b;--palette-on-secondary:#020617;--palette-surface-main:#172033;--palette-surface-variant:#1e293b;--palette-surface-elevated:#334155;--palette-on-surface:#f8fafc;--palette-background-main:#04080f;--palette-background-dark:#0a1018;--palette-background-overlay:rgba(15,23,42,0.95);--palette-on-background:#cbd5e1;--palette-header-bg-start:rgba(4,8,15,0.98);--palette-header-bg-end:rgba(4,8,15,0.95);--palette-header-collapsed-bg-start:rgba(4,8,15,0.99);--palette-header-collapsed-bg-end:rgba(4,8,15,0.96);--palette-text-primary:#f8fafc;--palette-text-secondary:#cbd5e1;--palette-text-disabled:rgba(248,250,252,0.38);--palette-text-inverted:#020617;--palette-border-main:#475569;--palette-border-light:rgba(248,250,252,0.12);--palette-border-lighter:rgba(248,250,252,0.05);--palette-border-medium:#334155;--palette-success-main:#34d399;--palette-success-light:#064e3b;--palette-success-dark:#10b981;--palette-success-border:#065f46;--palette-error-main:#f87171;--palette-error-light:#7f1d1d;--palette-error-dark:#ef4444;--palette-error-border:#991b1b;--palette-warning-main:#fb923c;--palette-warning-light:#9a3412;--palette-warning-dark:#f97316;--palette-warning-border:#c2410c;--palette-info-main:#38bdf8;--palette-info-light:#0c4a6e;--palette-info-dark:#0ea5e9;--palette-on-info:#020617;--palette-info-border:#0284c7;--palette-accent-main:#f472b6;--palette-accent-light:#fce7f3;--palette-accent-dark:#db2777;--palette-on-accent:#f8fafc;--palette-control-main:#1e293b;--palette-control-light:#334155;--palette-control-text:#e2e8f0;--palette-control-border:#475569}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema for Captcha component - Universal CAPTCHA widget
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
5
|
+
*/
|
|
6
|
+
import 'reflect-metadata';
|
|
7
|
+
import ViewSchema from './ViewSchema';
|
|
8
|
+
export declare class CaptchaModel extends ViewSchema {
|
|
9
|
+
provider: 'recaptcha-v2' | 'recaptcha-v3' | 'hcaptcha' | 'turnstile';
|
|
10
|
+
siteKey: string;
|
|
11
|
+
theme?: 'light' | 'dark';
|
|
12
|
+
size?: 'normal' | 'compact' | 'invisible';
|
|
13
|
+
action?: string;
|
|
14
|
+
}
|
|
15
|
+
export default CaptchaModel;
|
|
16
|
+
//# sourceMappingURL=CaptchaSchema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CaptchaSchema.d.ts","sourceRoot":"","sources":["../../src/schemas/CaptchaSchema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,kBAAkB,CAAC;AAE1B,OAAO,UAAU,MAAM,cAAc,CAAC;AAEtC,qBACa,YAAa,SAAQ,UAAU;IAQ1C,QAAQ,EAAG,cAAc,GAAG,cAAc,GAAG,UAAU,GAAG,WAAW,CAAC;IAUtE,OAAO,EAAG,MAAM,CAAC;IAUjB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAUzB,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;IAW1C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema for FormCheckbox component - Themed checkbox input
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
5
|
+
*/
|
|
6
|
+
import 'reflect-metadata';
|
|
7
|
+
import ViewSchema from './ViewSchema';
|
|
8
|
+
export declare class FormCheckboxModel extends ViewSchema {
|
|
9
|
+
label: string;
|
|
10
|
+
checked: boolean;
|
|
11
|
+
helperText?: string;
|
|
12
|
+
required?: boolean;
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export default FormCheckboxModel;
|
|
16
|
+
//# sourceMappingURL=FormCheckboxSchema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormCheckboxSchema.d.ts","sourceRoot":"","sources":["../../src/schemas/FormCheckboxSchema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,kBAAkB,CAAC;AAE1B,OAAO,UAAU,MAAM,cAAc,CAAC;AAEtC,qBACa,iBAAkB,SAAQ,UAAU;IAS/C,KAAK,EAAG,MAAM,CAAC;IASf,OAAO,EAAG,OAAO,CAAC;IAWlB,UAAU,CAAC,EAAE,MAAM,CAAC;IAUpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAUnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema for FormField component - Themed text/number input field
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
5
|
+
*/
|
|
6
|
+
import 'reflect-metadata';
|
|
7
|
+
import ViewSchema from './ViewSchema';
|
|
8
|
+
export declare class FormFieldModel extends ViewSchema {
|
|
9
|
+
label: string;
|
|
10
|
+
value: string | number;
|
|
11
|
+
type?: 'text' | 'number' | 'password' | 'email' | 'tel';
|
|
12
|
+
helperText?: string;
|
|
13
|
+
required?: boolean;
|
|
14
|
+
readOnly?: boolean;
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
disabledColor?: string;
|
|
17
|
+
fullWidth?: boolean;
|
|
18
|
+
multiline?: boolean;
|
|
19
|
+
rows?: number;
|
|
20
|
+
placeholder?: string;
|
|
21
|
+
}
|
|
22
|
+
export default FormFieldModel;
|
|
23
|
+
//# sourceMappingURL=FormFieldSchema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormFieldSchema.d.ts","sourceRoot":"","sources":["../../src/schemas/FormFieldSchema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,kBAAkB,CAAC;AAE1B,OAAO,UAAU,MAAM,cAAc,CAAC;AAEtC,qBACa,cAAe,SAAQ,UAAU;IAS5C,KAAK,EAAG,MAAM,CAAC;IAUf,KAAK,EAAG,MAAM,GAAG,MAAM,CAAC;IAUxB,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,KAAK,CAAC;IAWxD,UAAU,CAAC,EAAE,MAAM,CAAC;IAUpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAUnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAUnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAWnB,aAAa,CAAC,EAAE,MAAM,CAAC;IAUvB,SAAS,CAAC,EAAE,OAAO,CAAC;IAUpB,SAAS,CAAC,EAAE,OAAO,CAAC;IAYpB,IAAI,CAAC,EAAE,MAAM,CAAC;IAWd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema for FormSelect component - Themed dropdown select input
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
5
|
+
*/
|
|
6
|
+
import 'reflect-metadata';
|
|
7
|
+
import ViewSchema from './ViewSchema';
|
|
8
|
+
export declare class FormSelectModel extends ViewSchema {
|
|
9
|
+
label?: string;
|
|
10
|
+
value: string | number;
|
|
11
|
+
options: string;
|
|
12
|
+
helperText?: string;
|
|
13
|
+
required?: boolean;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
fullWidth?: boolean;
|
|
16
|
+
size?: 'small' | 'medium';
|
|
17
|
+
placeholder?: string;
|
|
18
|
+
}
|
|
19
|
+
export default FormSelectModel;
|
|
20
|
+
//# sourceMappingURL=FormSelectSchema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormSelectSchema.d.ts","sourceRoot":"","sources":["../../src/schemas/FormSelectSchema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,kBAAkB,CAAC;AAE1B,OAAO,UAAU,MAAM,cAAc,CAAC;AAEtC,qBACa,eAAgB,SAAQ,UAAU;IAU7C,KAAK,CAAC,EAAE,MAAM,CAAC;IAUf,KAAK,EAAG,MAAM,GAAG,MAAM,CAAC;IAUxB,OAAO,EAAG,MAAM,CAAC;IAWjB,UAAU,CAAC,EAAE,MAAM,CAAC;IAUpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAUnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAUnB,SAAS,CAAC,EAAE,OAAO,CAAC;IAUpB,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAW1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAe,eAAe,CAAC"}
|
package/dist/schemas/index.d.ts
CHANGED
|
@@ -23,6 +23,10 @@ export * from './FeatureGridSchema';
|
|
|
23
23
|
export * from './FeatureItemSchema';
|
|
24
24
|
export * from './FooterItemSchema';
|
|
25
25
|
export * from './FormBlockSchema';
|
|
26
|
+
export * from './FormSelectSchema';
|
|
27
|
+
export * from './FormFieldSchema';
|
|
28
|
+
export * from './FormCheckboxSchema';
|
|
29
|
+
export * from './CaptchaSchema';
|
|
26
30
|
export * from './FooterSchema';
|
|
27
31
|
export * from './FooterSectionSchema';
|
|
28
32
|
export * from './GridCellSchema';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,YAAY,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,OAAO,yBAAyB,CAAC;AAGjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AAGtC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,YAAY,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,OAAO,yBAAyB,CAAC;AAGjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AAGtC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC"}
|
|
@@ -108,6 +108,7 @@ export declare class ComponentTransformer {
|
|
|
108
108
|
static transformHTMLElement(element: Element): ReactNode | null;
|
|
109
109
|
/**
|
|
110
110
|
* Transform HTML string to React nodes using registered patterns
|
|
111
|
+
* Supports both server-side (linkedom) and client-side (DOMParser) rendering
|
|
111
112
|
* @param html - HTML string to transform
|
|
112
113
|
* @returns Array of React nodes
|
|
113
114
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentTransformer.d.ts","sourceRoot":"","sources":["../../../src/schemas/transformers/ComponentTransformer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAc,EAAE,SAAS,EAAgB,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"ComponentTransformer.d.ts","sourceRoot":"","sources":["../../../src/schemas/transformers/ComponentTransformer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAc,EAAE,SAAS,EAAgB,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AA2BhE;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;AAc3D;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAI5C;;;OAGG;IACH,MAAM,CAAC,YAAY,IAAI,OAAO;IAI9B;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CAAC,cAAc,EAAE,uBAAuB,GAAG,IAAI;IA4BvE;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,MAAM;IAKvD;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,SAAS,EAAE;IAe9E;;;;KAIC;IACD,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAQpC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAmD9B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAkE5B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,gCAAgC;IAI/C;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IA4BtC;;;OAGG;IACH,MAAM,CAAC,uBAAuB,IAAI,MAAM,EAAE;IAI1C;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;IAO5B;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAOtE;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI3C;;;;OAIG;IACH,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI;IAe/D;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE;IAyB/C;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IA+C/B;;;OAGG;IACH,MAAM,CAAC,qBAAqB,IAAI,MAAM,EAAE;CAGzC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qwickapps/react-framework",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "Complete React framework with responsive navigation, flexible layouts, theming system, and reusable components for building modern applications.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.esm.js",
|
|
@@ -73,6 +73,7 @@
|
|
|
73
73
|
"license": "PolyForm-Shield-1.0.0",
|
|
74
74
|
"dependencies": {
|
|
75
75
|
"@qwickapps/schema": "^1.3.2",
|
|
76
|
+
"linkedom": "^0.18.12",
|
|
76
77
|
"marked": "^4.3.0",
|
|
77
78
|
"md5": "^2.3.0",
|
|
78
79
|
"sanitize-html": "^2.17.0"
|
|
@@ -339,6 +339,11 @@ html[data-palette="default"][data-theme="dark"] {
|
|
|
339
339
|
--theme-elevation-2: 0 4px 8px rgba(0, 0, 0, 0.15);
|
|
340
340
|
--theme-elevation-3: 0 6px 12px rgba(0, 0, 0, 0.2);
|
|
341
341
|
--theme-elevation-4: 0 8px 16px rgba(0, 0, 0, 0.25);
|
|
342
|
+
|
|
343
|
+
/* Overlay colors for semi-transparent surfaces */
|
|
344
|
+
--theme-overlay-80: color-mix(in srgb, var(--palette-surface-main) 80%, transparent);
|
|
345
|
+
--theme-overlay-90: color-mix(in srgb, var(--palette-surface-main) 90%, transparent);
|
|
346
|
+
--theme-overlay-95: color-mix(in srgb, var(--palette-surface-main) 95%, transparent);
|
|
342
347
|
}
|
|
343
348
|
|
|
344
349
|
/* ===== THEME-SPECIFIC ADAPTATIONS ===== */
|
|
@@ -459,3 +464,20 @@ pre code {
|
|
|
459
464
|
padding: 0;
|
|
460
465
|
border-radius: 0;
|
|
461
466
|
}
|
|
467
|
+
|
|
468
|
+
/* Global link styles using theme variables */
|
|
469
|
+
a {
|
|
470
|
+
color: var(--theme-link-color);
|
|
471
|
+
text-decoration: none;
|
|
472
|
+
transition: color 0.2s ease;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
a:hover {
|
|
476
|
+
color: var(--theme-link-hover);
|
|
477
|
+
text-decoration: underline;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
a:visited {
|
|
481
|
+
color: var(--theme-link-color);
|
|
482
|
+
opacity: 0.8;
|
|
483
|
+
}
|
|
@@ -48,6 +48,11 @@
|
|
|
48
48
|
border-bottom: 1px solid var(--scaffold-outline);
|
|
49
49
|
box-shadow: var(--scaffold-shadow);
|
|
50
50
|
z-index: 1100;
|
|
51
|
+
|
|
52
|
+
/* Fix for iOS PWA fullscreen mode bleed-through (GH-1) */
|
|
53
|
+
isolation: isolate;
|
|
54
|
+
-webkit-backdrop-filter: blur(0px);
|
|
55
|
+
backdrop-filter: blur(0px);
|
|
51
56
|
}
|
|
52
57
|
|
|
53
58
|
.appbar-content {
|
|
@@ -33,8 +33,8 @@ const logger = loggers.scaffold;
|
|
|
33
33
|
export interface AppBarProps {
|
|
34
34
|
/** Title to display in the app bar */
|
|
35
35
|
title?: string;
|
|
36
|
-
/** Actions to display on the right side */
|
|
37
|
-
actions?: React.ReactNode;
|
|
36
|
+
/** Actions to display on the right side - use render function for server/client boundary safety */
|
|
37
|
+
actions?: React.ReactNode | (() => React.ReactNode);
|
|
38
38
|
/** Whether to show the menu button (for drawer toggle) */
|
|
39
39
|
showMenuButton?: boolean;
|
|
40
40
|
/** Custom logo override */
|
|
@@ -400,7 +400,9 @@ const Scaffold: React.FC<ScaffoldProps> = ({
|
|
|
400
400
|
<div className="appbar-right">
|
|
401
401
|
{enhancedAppBar?.actions && (
|
|
402
402
|
<div key="appbar-actions" className="appbar-actions">
|
|
403
|
-
{enhancedAppBar.actions
|
|
403
|
+
{typeof enhancedAppBar.actions === 'function'
|
|
404
|
+
? enhancedAppBar.actions()
|
|
405
|
+
: enhancedAppBar.actions}
|
|
404
406
|
</div>
|
|
405
407
|
)}
|
|
406
408
|
{/* Theme and Palette Switchers */}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* - Provider-agnostic API
|
|
12
12
|
* - Automatic script loading
|
|
13
13
|
* - TypeScript support
|
|
14
|
-
* - Themed styling with
|
|
14
|
+
* - Themed styling with schema-driven architecture
|
|
15
15
|
* - Grid behavior support
|
|
16
16
|
* - Error handling
|
|
17
17
|
*
|
|
@@ -20,57 +20,57 @@
|
|
|
20
20
|
|
|
21
21
|
import React, { useEffect, useRef, useState } from 'react';
|
|
22
22
|
import { Box, Alert } from '@mui/material';
|
|
23
|
-
import {
|
|
23
|
+
import type { SchemaProps } from '@qwickapps/schema';
|
|
24
|
+
import CaptchaModel from '../../schemas/CaptchaSchema';
|
|
25
|
+
import { ViewProps } from '../shared/viewProps';
|
|
26
|
+
import { createSerializableView, SerializableComponent } from '../shared/createSerializableView';
|
|
24
27
|
|
|
25
|
-
|
|
28
|
+
// Declare global interfaces for CAPTCHA providers
|
|
29
|
+
declare global {
|
|
30
|
+
interface Window {
|
|
31
|
+
grecaptcha?: {
|
|
32
|
+
render?: (container: HTMLElement | null, params: Record<string, unknown>) => string | number;
|
|
33
|
+
execute?: (siteKey: string, options: { action: string }) => Promise<string>;
|
|
34
|
+
reset?: (widgetId: string | number) => void;
|
|
35
|
+
};
|
|
36
|
+
hcaptcha?: {
|
|
37
|
+
render?: (container: HTMLElement | null, params: Record<string, unknown>) => string | number;
|
|
38
|
+
remove?: (widgetId: string | number) => void;
|
|
39
|
+
};
|
|
40
|
+
turnstile?: {
|
|
41
|
+
render?: (container: HTMLElement | null, params: Record<string, unknown>) => string | number;
|
|
42
|
+
remove?: (widgetId: string | number) => void;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
26
46
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
47
|
+
/**
|
|
48
|
+
* Props interface for Captcha component
|
|
49
|
+
* Combines schema props with callback handlers
|
|
50
|
+
*/
|
|
51
|
+
export interface CaptchaProps extends ViewProps, SchemaProps<typeof CaptchaModel> {
|
|
32
52
|
/** Callback when CAPTCHA is successfully completed */
|
|
33
53
|
onVerify: (token: string) => void;
|
|
34
54
|
/** Callback when CAPTCHA expires or fails */
|
|
35
55
|
onExpire?: () => void;
|
|
36
56
|
/** Callback when CAPTCHA encounters an error */
|
|
37
57
|
onError?: (error: Error) => void;
|
|
38
|
-
/** Theme for the widget (light or dark) */
|
|
39
|
-
theme?: 'light' | 'dark';
|
|
40
|
-
/** Size of the widget */
|
|
41
|
-
size?: 'normal' | 'compact' | 'invisible';
|
|
42
|
-
/** reCAPTCHA v3 action name */
|
|
43
|
-
action?: string;
|
|
44
58
|
}
|
|
45
59
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
export const Captcha = React.forwardRef<HTMLDivElement, CaptchaProps>((props, ref) => {
|
|
61
|
-
const { gridProps, styleProps, htmlProps, restProps } = useBaseProps(props);
|
|
62
|
-
|
|
63
|
-
const {
|
|
64
|
-
provider,
|
|
65
|
-
siteKey,
|
|
66
|
-
onVerify,
|
|
67
|
-
onExpire,
|
|
68
|
-
onError,
|
|
69
|
-
theme = 'light',
|
|
70
|
-
size = 'normal',
|
|
71
|
-
action = 'submit',
|
|
72
|
-
} = restProps as CaptchaBaseProps;
|
|
73
|
-
|
|
60
|
+
/**
|
|
61
|
+
* CaptchaView - Pure view component that renders the CAPTCHA widget
|
|
62
|
+
*/
|
|
63
|
+
function CaptchaView({
|
|
64
|
+
provider,
|
|
65
|
+
siteKey,
|
|
66
|
+
onVerify,
|
|
67
|
+
onExpire,
|
|
68
|
+
onError,
|
|
69
|
+
theme = 'light',
|
|
70
|
+
size = 'normal',
|
|
71
|
+
action = 'submit',
|
|
72
|
+
...restProps
|
|
73
|
+
}: CaptchaProps) {
|
|
74
74
|
const containerRef = useRef<HTMLDivElement>(null);
|
|
75
75
|
const widgetIdRef = useRef<string | number | null>(null);
|
|
76
76
|
const [isLoaded, setIsLoaded] = useState(false);
|
|
@@ -155,7 +155,7 @@ export const Captcha = React.forwardRef<HTMLDivElement, CaptchaProps>((props, re
|
|
|
155
155
|
try {
|
|
156
156
|
switch (provider) {
|
|
157
157
|
case 'recaptcha-v2':
|
|
158
|
-
if (window.grecaptcha
|
|
158
|
+
if (window.grecaptcha?.render) {
|
|
159
159
|
widgetIdRef.current = window.grecaptcha.render(containerRef.current, {
|
|
160
160
|
sitekey: siteKey,
|
|
161
161
|
callback: onVerify,
|
|
@@ -173,7 +173,7 @@ export const Captcha = React.forwardRef<HTMLDivElement, CaptchaProps>((props, re
|
|
|
173
173
|
|
|
174
174
|
case 'recaptcha-v3':
|
|
175
175
|
// reCAPTCHA v3 is invisible and executes programmatically
|
|
176
|
-
if (window.grecaptcha
|
|
176
|
+
if (window.grecaptcha?.execute) {
|
|
177
177
|
window.grecaptcha.execute(siteKey, { action }).then((token: string) => {
|
|
178
178
|
onVerify(token);
|
|
179
179
|
}).catch((err: Error) => {
|
|
@@ -184,7 +184,7 @@ export const Captcha = React.forwardRef<HTMLDivElement, CaptchaProps>((props, re
|
|
|
184
184
|
break;
|
|
185
185
|
|
|
186
186
|
case 'hcaptcha':
|
|
187
|
-
if (window.hcaptcha
|
|
187
|
+
if (window.hcaptcha?.render) {
|
|
188
188
|
widgetIdRef.current = window.hcaptcha.render(containerRef.current, {
|
|
189
189
|
sitekey: siteKey,
|
|
190
190
|
callback: onVerify,
|
|
@@ -201,7 +201,7 @@ export const Captcha = React.forwardRef<HTMLDivElement, CaptchaProps>((props, re
|
|
|
201
201
|
break;
|
|
202
202
|
|
|
203
203
|
case 'turnstile':
|
|
204
|
-
if (window.turnstile
|
|
204
|
+
if (window.turnstile?.render) {
|
|
205
205
|
widgetIdRef.current = window.turnstile.render(containerRef.current, {
|
|
206
206
|
sitekey: siteKey,
|
|
207
207
|
callback: onVerify,
|
|
@@ -257,21 +257,10 @@ export const Captcha = React.forwardRef<HTMLDivElement, CaptchaProps>((props, re
|
|
|
257
257
|
|
|
258
258
|
return (
|
|
259
259
|
<Box
|
|
260
|
-
|
|
261
|
-
{...htmlProps}
|
|
260
|
+
{...restProps}
|
|
262
261
|
sx={{
|
|
263
262
|
my: 2,
|
|
264
|
-
...styleProps.sx,
|
|
265
263
|
}}
|
|
266
|
-
// Store grid props as data attributes for ColumnLayout to pick up
|
|
267
|
-
{...(gridProps && {
|
|
268
|
-
'data-grid-span': gridProps.span,
|
|
269
|
-
'data-grid-xs': gridProps.xs,
|
|
270
|
-
'data-grid-sm': gridProps.sm,
|
|
271
|
-
'data-grid-md': gridProps.md,
|
|
272
|
-
'data-grid-lg': gridProps.lg,
|
|
273
|
-
'data-grid-xl': gridProps.xl,
|
|
274
|
-
})}
|
|
275
264
|
>
|
|
276
265
|
{error && (
|
|
277
266
|
<Alert severity="error" sx={{ mb: 2 }}>
|
|
@@ -281,11 +270,16 @@ export const Captcha = React.forwardRef<HTMLDivElement, CaptchaProps>((props, re
|
|
|
281
270
|
<div ref={containerRef} />
|
|
282
271
|
</Box>
|
|
283
272
|
);
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
Captcha.displayName = 'Captcha';
|
|
273
|
+
}
|
|
287
274
|
|
|
288
|
-
|
|
289
|
-
|
|
275
|
+
/**
|
|
276
|
+
* Create Captcha component using the factory pattern
|
|
277
|
+
*/
|
|
278
|
+
export const Captcha: SerializableComponent<CaptchaProps> = createSerializableView<CaptchaProps>({
|
|
279
|
+
tagName: 'Captcha',
|
|
280
|
+
version: '1.0.0',
|
|
281
|
+
role: 'input',
|
|
282
|
+
View: CaptchaView,
|
|
283
|
+
});
|
|
290
284
|
|
|
291
285
|
export default Captcha;
|