@duskmoon-dev/core 1.19.3 → 1.19.4
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 +1 -1
- package/dist/base.css +484 -0
- package/dist/components/accordion.css +33 -9
- package/dist/components/autocomplete.css +67 -13
- package/dist/components/avatar.css +39 -15
- package/dist/components/badge.css +15 -3
- package/dist/components/card.css +12 -0
- package/dist/components/carousel.css +28 -0
- package/dist/components/chat.css +15 -11
- package/dist/components/checkbox.css +83 -13
- package/dist/components/collapse.css +67 -16
- package/dist/components/countdown.css +22 -0
- package/dist/components/datepicker.css +76 -0
- package/dist/components/diff.css +33 -0
- package/dist/components/file-input.css +107 -0
- package/dist/components/filter-group.css +452 -0
- package/dist/components/form-group.css +95 -204
- package/dist/components/form.css +1551 -421
- package/dist/components/index.css +5991 -6060
- package/dist/components/input.css +114 -31
- package/dist/components/kbd.css +28 -0
- package/dist/components/list.css +22 -3
- package/dist/components/otp-input.css +124 -6
- package/dist/components/radio.css +70 -0
- package/dist/components/range.css +41 -0
- package/dist/components/rating.css +39 -12
- package/dist/components/select.css +74 -0
- package/dist/components/stat.css +40 -0
- package/dist/components/switch.css +70 -0
- package/dist/components/table.css +8 -0
- package/dist/components/textarea.css +74 -0
- package/dist/components/timeline.css +40 -25
- package/dist/components/toggle-switch.css +165 -0
- package/dist/components/toggle.css +198 -32
- package/dist/components/validator.css +66 -0
- package/dist/effects/aura.css +22 -0
- package/dist/effects/hover-3d.css +8 -0
- package/dist/effects/hover-gallery.css +14 -0
- package/dist/effects/index.css +65 -0
- package/dist/effects/text-rotate.css +16 -0
- package/dist/esm/components/accordion.js +33 -9
- package/dist/esm/components/autocomplete.js +67 -13
- package/dist/esm/components/avatar.js +39 -15
- package/dist/esm/components/badge.js +15 -3
- package/dist/esm/components/card.js +12 -0
- package/dist/esm/components/carousel.d.ts +5 -0
- package/dist/esm/components/carousel.js +37 -0
- package/dist/esm/components/chat.js +15 -11
- package/dist/esm/components/checkbox.js +84 -14
- package/dist/esm/components/collapse.js +67 -16
- package/dist/esm/components/countdown.d.ts +5 -0
- package/dist/esm/components/countdown.js +31 -0
- package/dist/esm/components/datepicker.js +77 -1
- package/dist/esm/components/diff.d.ts +5 -0
- package/dist/esm/components/diff.js +42 -0
- package/dist/esm/components/file-input.d.ts +5 -0
- package/dist/esm/components/file-input.js +116 -0
- package/dist/esm/components/filter-group.d.ts +5 -0
- package/dist/esm/components/filter-group.js +461 -0
- package/dist/esm/components/form-group.js +96 -205
- package/dist/esm/components/form.js +1539 -409
- package/dist/esm/components/input.js +115 -32
- package/dist/esm/components/kbd.d.ts +5 -0
- package/dist/esm/components/kbd.js +37 -0
- package/dist/esm/components/list.js +22 -3
- package/dist/esm/components/otp-input.js +125 -7
- package/dist/esm/components/radio.js +71 -1
- package/dist/esm/components/range.d.ts +5 -0
- package/dist/esm/components/range.js +50 -0
- package/dist/esm/components/rating.js +39 -12
- package/dist/esm/components/select.js +75 -1
- package/dist/esm/components/stat.d.ts +5 -0
- package/dist/esm/components/stat.js +49 -0
- package/dist/esm/components/switch.js +71 -1
- package/dist/esm/components/table.js +8 -0
- package/dist/esm/components/textarea.js +75 -1
- package/dist/esm/components/timeline.js +40 -25
- package/dist/esm/components/toggle-switch.d.ts +5 -0
- package/dist/esm/components/toggle-switch.js +174 -0
- package/dist/esm/components/toggle.js +198 -32
- package/dist/esm/components/validator.d.ts +5 -0
- package/dist/esm/components/validator.js +75 -0
- package/dist/esm/effects/aura.d.ts +5 -0
- package/dist/esm/effects/aura.js +31 -0
- package/dist/esm/effects/hover-3d.d.ts +5 -0
- package/dist/esm/effects/hover-3d.js +17 -0
- package/dist/esm/effects/hover-gallery.d.ts +5 -0
- package/dist/esm/effects/hover-gallery.js +23 -0
- package/dist/esm/effects/index.d.ts +5 -0
- package/dist/esm/effects/index.js +74 -0
- package/dist/esm/effects/text-rotate.d.ts +5 -0
- package/dist/esm/effects/text-rotate.js +25 -0
- package/dist/index.css +5977 -6047
- package/dist/index.min.css +1 -1
- package/dist/standalone/duskmoonui-themes.css +1 -1
- package/dist/standalone/duskmoonui.css +6967 -7028
- package/dist/standalone/duskmoonui.js +11 -12
- package/dist/standalone/duskmoonui.mjs +11 -12
- package/dist/types/types/plugin.d.ts +1 -1
- package/dist/types/types/plugin.d.ts.map +1 -1
- package/package.json +98 -1
|
@@ -1,10 +1,80 @@
|
|
|
1
1
|
// Auto-generated from select.css
|
|
2
|
-
export const css = `/**
|
|
2
|
+
export const css = `/** Opt-in native presentation. Applications own errors, messages and announcements. */
|
|
3
|
+
@layer components {
|
|
4
|
+
/* Compatibility wrapper states are intentionally immediate. */
|
|
5
|
+
:is(.form-group-info, .form-control.info) { --dm-validation-color: var(--color-info); }
|
|
6
|
+
:is(.form-group-warning, .form-control.warning) { --dm-validation-color: var(--color-warning); }
|
|
7
|
+
:is(.form-group-success, .form-control.success) { --dm-validation-color: var(--color-success); }
|
|
8
|
+
|
|
9
|
+
:is(.input, .select, .textarea, .checkbox, .radio, .switch, .toggle, .file-input, .otp-input-field, .otp-code, .datepicker-input):is(.validate :valid, .validate:valid, .validator.validator-success:user-valid):not([aria-invalid="true"]):not(:where(.form-group-error *, .form-control.error *)):not(:disabled) {
|
|
10
|
+
--dm-validation-color: var(--color-success);
|
|
11
|
+
--dm-validation-content: var(--color-success-content);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
:is(.input, .select, .textarea, .checkbox, .radio, .switch, .toggle, .file-input, .otp-input-field, .otp-code, .datepicker-input):is(.validate :invalid, .validate:invalid, .validator:user-invalid):not(:disabled) {
|
|
15
|
+
--dm-validation-color: var(--color-error);
|
|
16
|
+
--dm-validation-content: var(--color-error-content);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
:is(.form-group-error, .form-control.error) {
|
|
20
|
+
--dm-validation-color: var(--color-error);
|
|
21
|
+
--dm-validation-content: var(--color-error-content);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* Higher specificity than native states, including server-invalid + user-valid. */
|
|
25
|
+
:is(.input, .select, .textarea, .checkbox, .radio, .switch, .toggle, .file-input, .otp-input-field, .otp-code, .datepicker-input):is([aria-invalid="true"], .form-group-error *, .form-control.error *):not(:disabled):is(:focus, :not(:focus)) {
|
|
26
|
+
--dm-validation-color: var(--color-error);
|
|
27
|
+
--dm-validation-content: var(--color-error-content);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* This shared selector wins over filled/ghost focus and semantic modifiers. */
|
|
31
|
+
:is(.input, .select, .textarea, .checkbox, .radio, .switch, .toggle, .file-input, .otp-input-field, .otp-code, .datepicker-input):is([aria-invalid="true"], .validator:user-invalid, .validator.validator-success:user-valid, .validate :invalid, .validate :valid, .validate:invalid, .validate:valid, .form-group-error *, .form-group-success *, .form-group-warning *, .form-group-info *, .form-control.error *, .form-control.success *, .form-control.warning *, .form-control.info *):not(:disabled) {
|
|
32
|
+
color: var(--dm-validation-color);
|
|
33
|
+
border-color: var(--dm-validation-color);
|
|
34
|
+
--checkbox-color: var(--dm-validation-color);
|
|
35
|
+
--radio-color: var(--dm-validation-color);
|
|
36
|
+
--switch-color: var(--dm-validation-color);
|
|
37
|
+
--switch-content-color: var(--dm-validation-content, var(--color-primary-content));
|
|
38
|
+
--toggle-color: var(--dm-validation-color);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
:is(.input, .select, .textarea, .checkbox, .radio, .switch, .toggle, .file-input, .otp-input-field, .otp-code, .datepicker-input):is([aria-invalid="true"], .validator:user-invalid, .validator.validator-success:user-valid, .validate :invalid, .validate :valid, .validate:invalid, .validate:valid, .form-group-error *, .form-group-success *, .form-group-warning *, .form-group-info *, .form-control.error *, .form-control.success *, .form-control.warning *, .form-control.info *):not(:disabled):focus {
|
|
42
|
+
border-color: var(--dm-validation-color);
|
|
43
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--dm-validation-color) 20%, transparent);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
:is(.form-group-error, .form-control.error) :is(.form-label, .label-text) { color: var(--color-error); }
|
|
47
|
+
:is(.form-group-success, .form-control.success) :is(.form-label, .label-text) { color: var(--color-success); }
|
|
48
|
+
:is(.form-group-warning, .form-control.warning) :is(.form-label, .label-text) { color: var(--color-warning); }
|
|
49
|
+
:is(.form-group-info, .form-control.info) :is(.form-label, .label-text) { color: var(--color-info); }
|
|
50
|
+
|
|
51
|
+
.validator-hint { font-size: 0.75rem; color: var(--color-on-surface-variant); }
|
|
52
|
+
.validator-error { display: none; font-size: 0.75rem; color: var(--color-error); }
|
|
53
|
+
/* Keep OTP actions stationary when blur reveals an error during a click. */
|
|
54
|
+
.otp-code ~ .validator-error { display: block; visibility: hidden; }
|
|
55
|
+
:is(.form-group, .form-control):has(:is([aria-invalid="true"], .validator:user-invalid, .validate :invalid, .validate:invalid):not(:disabled)) > .validator-error,
|
|
56
|
+
:is(.form-group-error, .form-control.error) > .validator-error { display: block; visibility: visible; }
|
|
57
|
+
|
|
58
|
+
@media (forced-colors: active) {
|
|
59
|
+
:is(input, select, textarea):is(.input, .select, .textarea, .checkbox, .radio, .switch, .toggle, .file-input, .otp-input-field, .otp-code, .datepicker-input):focus-visible {
|
|
60
|
+
outline: 2px solid Highlight;
|
|
61
|
+
outline-offset: 2px;
|
|
62
|
+
}
|
|
63
|
+
input:is(.checkbox, .radio, .switch, .toggle) { appearance: auto; }
|
|
64
|
+
input:is(.checkbox, .radio, .switch, .toggle)::before,
|
|
65
|
+
input:is(.checkbox, .radio, .switch, .toggle)::after { content: none; }
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
/**
|
|
3
71
|
* Select Component Styles
|
|
4
72
|
* DuskMoonUI - Material Design 3 inspired select/dropdown system
|
|
5
73
|
*/
|
|
6
74
|
|
|
7
75
|
@layer components {
|
|
76
|
+
:where(.select) { box-sizing: border-box; }
|
|
77
|
+
|
|
8
78
|
/* Base Select */
|
|
9
79
|
.select {
|
|
10
80
|
display: block;
|
|
@@ -95,6 +165,10 @@ export const css = `/**
|
|
|
95
165
|
.select-neutral { color: var(--color-neutral); }
|
|
96
166
|
.select-base { color: var(--color-base-content); }
|
|
97
167
|
|
|
168
|
+
.select-bordered { border-color: var(--color-outline); }
|
|
169
|
+
.select-md { font-size: 1rem; }
|
|
170
|
+
.select:dir(rtl) { padding-inline: 1rem 2.5rem; background-position: left 0.75rem center; }
|
|
171
|
+
|
|
98
172
|
/* Size Variants */
|
|
99
173
|
.select-xs {
|
|
100
174
|
padding: 0.375rem 2rem 0.375rem 0.625rem;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// Auto-generated from stat.css
|
|
2
|
+
export const css = `@layer components {
|
|
3
|
+
.stats {
|
|
4
|
+
display: grid;
|
|
5
|
+
grid-auto-flow: column;
|
|
6
|
+
grid-auto-columns: minmax(0, 1fr);
|
|
7
|
+
max-inline-size: 100%;
|
|
8
|
+
color: var(--color-on-surface);
|
|
9
|
+
background: var(--color-surface-container-low);
|
|
10
|
+
border-radius: var(--radius-md);
|
|
11
|
+
}
|
|
12
|
+
.stat {
|
|
13
|
+
display: grid;
|
|
14
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
15
|
+
gap: 0.25rem 1rem;
|
|
16
|
+
min-inline-size: 0;
|
|
17
|
+
padding: 1rem;
|
|
18
|
+
color: var(--color-on-surface);
|
|
19
|
+
overflow-wrap: anywhere;
|
|
20
|
+
}
|
|
21
|
+
.stats > .stat + .stat { border-inline-start: 1px solid var(--color-outline-variant); }
|
|
22
|
+
.stat-title, .stat-desc { grid-column: 1; color: var(--color-on-surface-variant); font-size: 0.875rem; }
|
|
23
|
+
.stat-value { grid-column: 1; font-size: 2rem; font-weight: 700; line-height: 1.2; font-variant-numeric: tabular-nums; }
|
|
24
|
+
.stat-figure { grid-column: 2; grid-row: 1 / 4; align-self: center; }
|
|
25
|
+
.stat-actions { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 0.5rem; margin-block-start: 0.5rem; }
|
|
26
|
+
.stats-vertical { grid-auto-flow: row; }
|
|
27
|
+
.stats-horizontal { grid-auto-flow: column; }
|
|
28
|
+
.stats-vertical > .stat + .stat { border-inline-start: 0; border-block-start: 1px solid var(--color-outline-variant); }
|
|
29
|
+
.stats-responsive { container-type: inline-size; container-name: stats; }
|
|
30
|
+
@container stats (max-width: 32rem) {
|
|
31
|
+
.stats-responsive > .stat { grid-column: 1; }
|
|
32
|
+
.stats-responsive > .stat + .stat { border-inline-start: 0; border-block-start: 1px solid var(--color-outline-variant); }
|
|
33
|
+
}
|
|
34
|
+
.stat-primary .stat-value { color: var(--color-primary); }
|
|
35
|
+
.stat-secondary .stat-value { color: var(--color-secondary); }
|
|
36
|
+
.stat-tertiary .stat-value { color: var(--color-tertiary); }
|
|
37
|
+
.stat-info .stat-value { color: var(--color-info); }
|
|
38
|
+
.stat-success .stat-value { color: var(--color-success); }
|
|
39
|
+
.stat-warning .stat-value { color: var(--color-warning); }
|
|
40
|
+
.stat-error .stat-value { color: var(--color-error); }
|
|
41
|
+
}
|
|
42
|
+
`;
|
|
43
|
+
|
|
44
|
+
const sheet = typeof CSSStyleSheet !== 'undefined' ? new CSSStyleSheet() : null;
|
|
45
|
+
if (sheet) {
|
|
46
|
+
sheet.replaceSync(css);
|
|
47
|
+
}
|
|
48
|
+
export const styles = sheet;
|
|
49
|
+
export default sheet;
|
|
@@ -1,5 +1,73 @@
|
|
|
1
1
|
// Auto-generated from switch.css
|
|
2
|
-
export const css = `/**
|
|
2
|
+
export const css = `/** Opt-in native presentation. Applications own errors, messages and announcements. */
|
|
3
|
+
@layer components {
|
|
4
|
+
/* Compatibility wrapper states are intentionally immediate. */
|
|
5
|
+
:is(.form-group-info, .form-control.info) { --dm-validation-color: var(--color-info); }
|
|
6
|
+
:is(.form-group-warning, .form-control.warning) { --dm-validation-color: var(--color-warning); }
|
|
7
|
+
:is(.form-group-success, .form-control.success) { --dm-validation-color: var(--color-success); }
|
|
8
|
+
|
|
9
|
+
:is(.input, .select, .textarea, .checkbox, .radio, .switch, .toggle, .file-input, .otp-input-field, .otp-code, .datepicker-input):is(.validate :valid, .validate:valid, .validator.validator-success:user-valid):not([aria-invalid="true"]):not(:where(.form-group-error *, .form-control.error *)):not(:disabled) {
|
|
10
|
+
--dm-validation-color: var(--color-success);
|
|
11
|
+
--dm-validation-content: var(--color-success-content);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
:is(.input, .select, .textarea, .checkbox, .radio, .switch, .toggle, .file-input, .otp-input-field, .otp-code, .datepicker-input):is(.validate :invalid, .validate:invalid, .validator:user-invalid):not(:disabled) {
|
|
15
|
+
--dm-validation-color: var(--color-error);
|
|
16
|
+
--dm-validation-content: var(--color-error-content);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
:is(.form-group-error, .form-control.error) {
|
|
20
|
+
--dm-validation-color: var(--color-error);
|
|
21
|
+
--dm-validation-content: var(--color-error-content);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* Higher specificity than native states, including server-invalid + user-valid. */
|
|
25
|
+
:is(.input, .select, .textarea, .checkbox, .radio, .switch, .toggle, .file-input, .otp-input-field, .otp-code, .datepicker-input):is([aria-invalid="true"], .form-group-error *, .form-control.error *):not(:disabled):is(:focus, :not(:focus)) {
|
|
26
|
+
--dm-validation-color: var(--color-error);
|
|
27
|
+
--dm-validation-content: var(--color-error-content);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* This shared selector wins over filled/ghost focus and semantic modifiers. */
|
|
31
|
+
:is(.input, .select, .textarea, .checkbox, .radio, .switch, .toggle, .file-input, .otp-input-field, .otp-code, .datepicker-input):is([aria-invalid="true"], .validator:user-invalid, .validator.validator-success:user-valid, .validate :invalid, .validate :valid, .validate:invalid, .validate:valid, .form-group-error *, .form-group-success *, .form-group-warning *, .form-group-info *, .form-control.error *, .form-control.success *, .form-control.warning *, .form-control.info *):not(:disabled) {
|
|
32
|
+
color: var(--dm-validation-color);
|
|
33
|
+
border-color: var(--dm-validation-color);
|
|
34
|
+
--checkbox-color: var(--dm-validation-color);
|
|
35
|
+
--radio-color: var(--dm-validation-color);
|
|
36
|
+
--switch-color: var(--dm-validation-color);
|
|
37
|
+
--switch-content-color: var(--dm-validation-content, var(--color-primary-content));
|
|
38
|
+
--toggle-color: var(--dm-validation-color);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
:is(.input, .select, .textarea, .checkbox, .radio, .switch, .toggle, .file-input, .otp-input-field, .otp-code, .datepicker-input):is([aria-invalid="true"], .validator:user-invalid, .validator.validator-success:user-valid, .validate :invalid, .validate :valid, .validate:invalid, .validate:valid, .form-group-error *, .form-group-success *, .form-group-warning *, .form-group-info *, .form-control.error *, .form-control.success *, .form-control.warning *, .form-control.info *):not(:disabled):focus {
|
|
42
|
+
border-color: var(--dm-validation-color);
|
|
43
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--dm-validation-color) 20%, transparent);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
:is(.form-group-error, .form-control.error) :is(.form-label, .label-text) { color: var(--color-error); }
|
|
47
|
+
:is(.form-group-success, .form-control.success) :is(.form-label, .label-text) { color: var(--color-success); }
|
|
48
|
+
:is(.form-group-warning, .form-control.warning) :is(.form-label, .label-text) { color: var(--color-warning); }
|
|
49
|
+
:is(.form-group-info, .form-control.info) :is(.form-label, .label-text) { color: var(--color-info); }
|
|
50
|
+
|
|
51
|
+
.validator-hint { font-size: 0.75rem; color: var(--color-on-surface-variant); }
|
|
52
|
+
.validator-error { display: none; font-size: 0.75rem; color: var(--color-error); }
|
|
53
|
+
/* Keep OTP actions stationary when blur reveals an error during a click. */
|
|
54
|
+
.otp-code ~ .validator-error { display: block; visibility: hidden; }
|
|
55
|
+
:is(.form-group, .form-control):has(:is([aria-invalid="true"], .validator:user-invalid, .validate :invalid, .validate:invalid):not(:disabled)) > .validator-error,
|
|
56
|
+
:is(.form-group-error, .form-control.error) > .validator-error { display: block; visibility: visible; }
|
|
57
|
+
|
|
58
|
+
@media (forced-colors: active) {
|
|
59
|
+
:is(input, select, textarea):is(.input, .select, .textarea, .checkbox, .radio, .switch, .toggle, .file-input, .otp-input-field, .otp-code, .datepicker-input):focus-visible {
|
|
60
|
+
outline: 2px solid Highlight;
|
|
61
|
+
outline-offset: 2px;
|
|
62
|
+
}
|
|
63
|
+
input:is(.checkbox, .radio, .switch, .toggle) { appearance: auto; }
|
|
64
|
+
input:is(.checkbox, .radio, .switch, .toggle)::before,
|
|
65
|
+
input:is(.checkbox, .radio, .switch, .toggle)::after { content: none; }
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
/**
|
|
3
71
|
* Switch Component Styles
|
|
4
72
|
* DuskMoonUI - Material Design 3 inspired switch/toggle
|
|
5
73
|
*
|
|
@@ -8,6 +76,8 @@ export const css = `/**
|
|
|
8
76
|
*/
|
|
9
77
|
|
|
10
78
|
@layer components {
|
|
79
|
+
:where(.switch) { box-sizing: border-box; }
|
|
80
|
+
|
|
11
81
|
/* Base Switch - applied directly to input[type="checkbox"] */
|
|
12
82
|
.switch {
|
|
13
83
|
--switch-width: 3.25rem;
|
|
@@ -172,6 +172,8 @@ export const css = `/**
|
|
|
172
172
|
/* Selected Row */
|
|
173
173
|
.table-row-selected,
|
|
174
174
|
.table tr.selected,
|
|
175
|
+
.table-hover tbody tr:is(.selected, .table-row-selected),
|
|
176
|
+
.table-hover .table-row:is(.selected, .table-row-selected),
|
|
175
177
|
.table-selectable tbody tr.table-row-selected,
|
|
176
178
|
.table-selectable .table-row.table-row-selected,
|
|
177
179
|
.table-selectable tbody tr.selected,
|
|
@@ -180,6 +182,12 @@ export const css = `/**
|
|
|
180
182
|
color: var(--color-on-primary-container);
|
|
181
183
|
}
|
|
182
184
|
|
|
185
|
+
.table-numeric { text-align: end; font-variant-numeric: tabular-nums; }
|
|
186
|
+
.table-center { text-align: center; }
|
|
187
|
+
.table-actions { white-space: nowrap; text-align: end; }
|
|
188
|
+
.table-checkbox { inline-size: 1%; }
|
|
189
|
+
.table-sort-icon { display: inline-block; margin-inline-start: 0.25rem; }
|
|
190
|
+
|
|
183
191
|
/* Clickable Row */
|
|
184
192
|
.table-row-clickable,
|
|
185
193
|
.table tbody tr[data-href] {
|
|
@@ -1,10 +1,80 @@
|
|
|
1
1
|
// Auto-generated from textarea.css
|
|
2
|
-
export const css = `/**
|
|
2
|
+
export const css = `/** Opt-in native presentation. Applications own errors, messages and announcements. */
|
|
3
|
+
@layer components {
|
|
4
|
+
/* Compatibility wrapper states are intentionally immediate. */
|
|
5
|
+
:is(.form-group-info, .form-control.info) { --dm-validation-color: var(--color-info); }
|
|
6
|
+
:is(.form-group-warning, .form-control.warning) { --dm-validation-color: var(--color-warning); }
|
|
7
|
+
:is(.form-group-success, .form-control.success) { --dm-validation-color: var(--color-success); }
|
|
8
|
+
|
|
9
|
+
:is(.input, .select, .textarea, .checkbox, .radio, .switch, .toggle, .file-input, .otp-input-field, .otp-code, .datepicker-input):is(.validate :valid, .validate:valid, .validator.validator-success:user-valid):not([aria-invalid="true"]):not(:where(.form-group-error *, .form-control.error *)):not(:disabled) {
|
|
10
|
+
--dm-validation-color: var(--color-success);
|
|
11
|
+
--dm-validation-content: var(--color-success-content);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
:is(.input, .select, .textarea, .checkbox, .radio, .switch, .toggle, .file-input, .otp-input-field, .otp-code, .datepicker-input):is(.validate :invalid, .validate:invalid, .validator:user-invalid):not(:disabled) {
|
|
15
|
+
--dm-validation-color: var(--color-error);
|
|
16
|
+
--dm-validation-content: var(--color-error-content);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
:is(.form-group-error, .form-control.error) {
|
|
20
|
+
--dm-validation-color: var(--color-error);
|
|
21
|
+
--dm-validation-content: var(--color-error-content);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* Higher specificity than native states, including server-invalid + user-valid. */
|
|
25
|
+
:is(.input, .select, .textarea, .checkbox, .radio, .switch, .toggle, .file-input, .otp-input-field, .otp-code, .datepicker-input):is([aria-invalid="true"], .form-group-error *, .form-control.error *):not(:disabled):is(:focus, :not(:focus)) {
|
|
26
|
+
--dm-validation-color: var(--color-error);
|
|
27
|
+
--dm-validation-content: var(--color-error-content);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* This shared selector wins over filled/ghost focus and semantic modifiers. */
|
|
31
|
+
:is(.input, .select, .textarea, .checkbox, .radio, .switch, .toggle, .file-input, .otp-input-field, .otp-code, .datepicker-input):is([aria-invalid="true"], .validator:user-invalid, .validator.validator-success:user-valid, .validate :invalid, .validate :valid, .validate:invalid, .validate:valid, .form-group-error *, .form-group-success *, .form-group-warning *, .form-group-info *, .form-control.error *, .form-control.success *, .form-control.warning *, .form-control.info *):not(:disabled) {
|
|
32
|
+
color: var(--dm-validation-color);
|
|
33
|
+
border-color: var(--dm-validation-color);
|
|
34
|
+
--checkbox-color: var(--dm-validation-color);
|
|
35
|
+
--radio-color: var(--dm-validation-color);
|
|
36
|
+
--switch-color: var(--dm-validation-color);
|
|
37
|
+
--switch-content-color: var(--dm-validation-content, var(--color-primary-content));
|
|
38
|
+
--toggle-color: var(--dm-validation-color);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
:is(.input, .select, .textarea, .checkbox, .radio, .switch, .toggle, .file-input, .otp-input-field, .otp-code, .datepicker-input):is([aria-invalid="true"], .validator:user-invalid, .validator.validator-success:user-valid, .validate :invalid, .validate :valid, .validate:invalid, .validate:valid, .form-group-error *, .form-group-success *, .form-group-warning *, .form-group-info *, .form-control.error *, .form-control.success *, .form-control.warning *, .form-control.info *):not(:disabled):focus {
|
|
42
|
+
border-color: var(--dm-validation-color);
|
|
43
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--dm-validation-color) 20%, transparent);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
:is(.form-group-error, .form-control.error) :is(.form-label, .label-text) { color: var(--color-error); }
|
|
47
|
+
:is(.form-group-success, .form-control.success) :is(.form-label, .label-text) { color: var(--color-success); }
|
|
48
|
+
:is(.form-group-warning, .form-control.warning) :is(.form-label, .label-text) { color: var(--color-warning); }
|
|
49
|
+
:is(.form-group-info, .form-control.info) :is(.form-label, .label-text) { color: var(--color-info); }
|
|
50
|
+
|
|
51
|
+
.validator-hint { font-size: 0.75rem; color: var(--color-on-surface-variant); }
|
|
52
|
+
.validator-error { display: none; font-size: 0.75rem; color: var(--color-error); }
|
|
53
|
+
/* Keep OTP actions stationary when blur reveals an error during a click. */
|
|
54
|
+
.otp-code ~ .validator-error { display: block; visibility: hidden; }
|
|
55
|
+
:is(.form-group, .form-control):has(:is([aria-invalid="true"], .validator:user-invalid, .validate :invalid, .validate:invalid):not(:disabled)) > .validator-error,
|
|
56
|
+
:is(.form-group-error, .form-control.error) > .validator-error { display: block; visibility: visible; }
|
|
57
|
+
|
|
58
|
+
@media (forced-colors: active) {
|
|
59
|
+
:is(input, select, textarea):is(.input, .select, .textarea, .checkbox, .radio, .switch, .toggle, .file-input, .otp-input-field, .otp-code, .datepicker-input):focus-visible {
|
|
60
|
+
outline: 2px solid Highlight;
|
|
61
|
+
outline-offset: 2px;
|
|
62
|
+
}
|
|
63
|
+
input:is(.checkbox, .radio, .switch, .toggle) { appearance: auto; }
|
|
64
|
+
input:is(.checkbox, .radio, .switch, .toggle)::before,
|
|
65
|
+
input:is(.checkbox, .radio, .switch, .toggle)::after { content: none; }
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
/**
|
|
3
71
|
* Textarea Component Styles
|
|
4
72
|
* DuskMoonUI - Material Design 3 inspired multi-line text input
|
|
5
73
|
*/
|
|
6
74
|
|
|
7
75
|
@layer components {
|
|
76
|
+
:where(.textarea) { box-sizing: border-box; }
|
|
77
|
+
|
|
8
78
|
/* ============================================
|
|
9
79
|
* TEXTAREA CONTAINER
|
|
10
80
|
* ============================================ */
|
|
@@ -218,6 +288,10 @@ export const css = `/**
|
|
|
218
288
|
* SIZE VARIANTS
|
|
219
289
|
* ============================================ */
|
|
220
290
|
|
|
291
|
+
.textarea-xs { min-height: 3rem; padding: 0.375rem 0.625rem; font-size: 0.75rem; line-height: 1rem; }
|
|
292
|
+
.textarea-md { min-height: 6rem; }
|
|
293
|
+
.textarea-bordered { border-color: var(--color-outline); }
|
|
294
|
+
|
|
221
295
|
.textarea-sm {
|
|
222
296
|
min-height: 4rem;
|
|
223
297
|
padding: 0.5rem 0.75rem;
|
|
@@ -18,7 +18,7 @@ export const css = `/**
|
|
|
18
18
|
content: '';
|
|
19
19
|
position: absolute;
|
|
20
20
|
top: 0;
|
|
21
|
-
|
|
21
|
+
inset-inline-start: 1.25rem;
|
|
22
22
|
width: 2px;
|
|
23
23
|
height: 100%;
|
|
24
24
|
background-color: var(--color-outline-variant);
|
|
@@ -65,6 +65,7 @@ export const css = `/**
|
|
|
65
65
|
|
|
66
66
|
/* Timeline Content */
|
|
67
67
|
.timeline-content {
|
|
68
|
+
overflow-wrap: anywhere;
|
|
68
69
|
flex: 1;
|
|
69
70
|
padding-top: 0.375rem;
|
|
70
71
|
min-width: 0;
|
|
@@ -164,9 +165,18 @@ export const css = `/**
|
|
|
164
165
|
background-color: var(--color-primary-content);
|
|
165
166
|
}
|
|
166
167
|
|
|
168
|
+
.timeline-marker-secondary { border-color: var(--color-secondary); background: var(--color-secondary-container); }
|
|
169
|
+
.timeline-marker-tertiary { border-color: var(--color-tertiary); background: var(--color-tertiary-container); }
|
|
170
|
+
.timeline-marker-success { border-color: var(--color-success); background: var(--color-success-container); }
|
|
171
|
+
.timeline-marker-error { border-color: var(--color-error); background: var(--color-error-container); }
|
|
172
|
+
.timeline-item-active > .timeline-marker { border-color: var(--color-primary); background: var(--color-primary-container); }
|
|
173
|
+
.timeline-item-pending > .timeline-marker { border-style: dashed; }
|
|
174
|
+
.timeline-compact > .timeline-item { padding-block-end: 0.75rem; gap: 0.5rem; }
|
|
175
|
+
.timeline-content-card { padding: 1rem; border: 1px solid var(--color-outline-variant); border-radius: var(--radius-md); background: var(--color-surface-container); box-shadow: var(--shadow-sm); }
|
|
176
|
+
|
|
167
177
|
/* Size Variants */
|
|
168
178
|
.timeline-sm::before {
|
|
169
|
-
|
|
179
|
+
inset-inline-start: 0.75rem;
|
|
170
180
|
}
|
|
171
181
|
|
|
172
182
|
.timeline-sm .timeline-marker {
|
|
@@ -184,7 +194,7 @@ export const css = `/**
|
|
|
184
194
|
}
|
|
185
195
|
|
|
186
196
|
.timeline-lg::before {
|
|
187
|
-
|
|
197
|
+
inset-inline-start: 1.5rem;
|
|
188
198
|
}
|
|
189
199
|
|
|
190
200
|
.timeline-lg .timeline-marker {
|
|
@@ -198,38 +208,38 @@ export const css = `/**
|
|
|
198
208
|
|
|
199
209
|
/* Alternate Layout (zigzag) */
|
|
200
210
|
.timeline-alternate {
|
|
201
|
-
padding-
|
|
211
|
+
padding-inline-start: 0;
|
|
202
212
|
}
|
|
203
213
|
|
|
204
214
|
.timeline-alternate::before {
|
|
205
|
-
|
|
215
|
+
inset-inline-start: 50%;
|
|
206
216
|
transform: translateX(-50%);
|
|
207
217
|
}
|
|
208
218
|
|
|
209
219
|
.timeline-alternate .timeline-item {
|
|
210
220
|
width: 50%;
|
|
211
|
-
padding-
|
|
221
|
+
padding-inline-end: 2rem;
|
|
212
222
|
}
|
|
213
223
|
|
|
214
224
|
.timeline-alternate .timeline-item:nth-child(even) {
|
|
215
|
-
margin-
|
|
216
|
-
padding-
|
|
217
|
-
padding-
|
|
225
|
+
margin-inline-start: 50%;
|
|
226
|
+
padding-inline-end: 0;
|
|
227
|
+
padding-inline-start: 2rem;
|
|
218
228
|
flex-direction: row-reverse;
|
|
219
229
|
}
|
|
220
230
|
|
|
221
231
|
.timeline-alternate .timeline-item:nth-child(even) .timeline-content {
|
|
222
|
-
text-align:
|
|
232
|
+
text-align: end;
|
|
223
233
|
}
|
|
224
234
|
|
|
225
235
|
.timeline-alternate .timeline-marker {
|
|
226
236
|
position: absolute;
|
|
227
|
-
|
|
237
|
+
inset-inline-start: 100%;
|
|
228
238
|
transform: translateX(-50%);
|
|
229
239
|
}
|
|
230
240
|
|
|
231
241
|
.timeline-alternate .timeline-item:nth-child(even) .timeline-marker {
|
|
232
|
-
|
|
242
|
+
inset-inline-start: 0;
|
|
233
243
|
transform: translateX(-50%);
|
|
234
244
|
}
|
|
235
245
|
|
|
@@ -239,8 +249,8 @@ export const css = `/**
|
|
|
239
249
|
}
|
|
240
250
|
|
|
241
251
|
.timeline-right::before {
|
|
242
|
-
|
|
243
|
-
|
|
252
|
+
inset-inline-start: auto;
|
|
253
|
+
inset-inline-end: 1.25rem;
|
|
244
254
|
}
|
|
245
255
|
|
|
246
256
|
.timeline-right .timeline-item {
|
|
@@ -248,7 +258,7 @@ export const css = `/**
|
|
|
248
258
|
}
|
|
249
259
|
|
|
250
260
|
.timeline-right .timeline-content {
|
|
251
|
-
text-align:
|
|
261
|
+
text-align: end;
|
|
252
262
|
}
|
|
253
263
|
|
|
254
264
|
/* Horizontal Timeline */
|
|
@@ -260,7 +270,7 @@ export const css = `/**
|
|
|
260
270
|
|
|
261
271
|
.timeline-horizontal::before {
|
|
262
272
|
top: 1.25rem;
|
|
263
|
-
|
|
273
|
+
inset-inline-start: 0;
|
|
264
274
|
width: 100%;
|
|
265
275
|
height: 2px;
|
|
266
276
|
}
|
|
@@ -268,12 +278,12 @@ export const css = `/**
|
|
|
268
278
|
.timeline-horizontal .timeline-item {
|
|
269
279
|
flex-direction: column;
|
|
270
280
|
padding-bottom: 0;
|
|
271
|
-
padding-
|
|
281
|
+
padding-inline-end: 2rem;
|
|
272
282
|
min-width: 10rem;
|
|
273
283
|
}
|
|
274
284
|
|
|
275
285
|
.timeline-horizontal .timeline-item:last-child {
|
|
276
|
-
padding-
|
|
286
|
+
padding-inline-end: 0;
|
|
277
287
|
}
|
|
278
288
|
|
|
279
289
|
.timeline-horizontal .timeline-content {
|
|
@@ -281,6 +291,9 @@ export const css = `/**
|
|
|
281
291
|
text-align: center;
|
|
282
292
|
}
|
|
283
293
|
|
|
294
|
+
.timeline-alternate:dir(rtl)::before,
|
|
295
|
+
.timeline-alternate:dir(rtl) .timeline-marker { transform: translateX(50%); }
|
|
296
|
+
|
|
284
297
|
/* Collapsible Timeline */
|
|
285
298
|
.timeline-collapsible .timeline-item {
|
|
286
299
|
cursor: pointer;
|
|
@@ -319,28 +332,30 @@ export const css = `/**
|
|
|
319
332
|
|
|
320
333
|
/* Responsive */
|
|
321
334
|
@media (max-width: 640px) {
|
|
322
|
-
.timeline-alternate::before
|
|
323
|
-
|
|
335
|
+
.timeline-alternate::before,
|
|
336
|
+
.timeline-alternate:dir(rtl)::before {
|
|
337
|
+
inset-inline-start: 1.25rem;
|
|
324
338
|
transform: none;
|
|
325
339
|
}
|
|
326
340
|
|
|
327
341
|
.timeline-alternate .timeline-item,
|
|
328
342
|
.timeline-alternate .timeline-item:nth-child(even) {
|
|
329
343
|
width: 100%;
|
|
330
|
-
margin-
|
|
331
|
-
padding-
|
|
332
|
-
padding-
|
|
344
|
+
margin-inline-start: 0;
|
|
345
|
+
padding-inline-start: 0;
|
|
346
|
+
padding-inline-end: 0;
|
|
333
347
|
flex-direction: row;
|
|
334
348
|
}
|
|
335
349
|
|
|
336
350
|
.timeline-alternate .timeline-item:nth-child(even) .timeline-content {
|
|
337
|
-
text-align:
|
|
351
|
+
text-align: start;
|
|
338
352
|
}
|
|
339
353
|
|
|
340
354
|
.timeline-alternate .timeline-marker,
|
|
355
|
+
.timeline-alternate:dir(rtl) .timeline-marker,
|
|
341
356
|
.timeline-alternate .timeline-item:nth-child(even) .timeline-marker {
|
|
342
357
|
position: relative;
|
|
343
|
-
|
|
358
|
+
inset-inline-start: 0;
|
|
344
359
|
transform: none;
|
|
345
360
|
}
|
|
346
361
|
}
|