@flood-md/react 0.2.3 → 0.2.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 +308 -3
- package/dist/avatar.d.ts +5 -0
- package/dist/avatar.js +8 -0
- package/dist/checkbox.d.ts +4 -0
- package/dist/checkbox.js +15 -0
- package/dist/data-display.d.ts +3 -0
- package/dist/data-display.js +11 -0
- package/dist/disclosure.js +2 -1
- package/dist/feedback.d.ts +8 -0
- package/dist/feedback.js +29 -0
- package/dist/focusable-hidden.d.ts +3 -0
- package/dist/focusable-hidden.js +99 -0
- package/dist/fonts/InterVariable-Italic.woff2 +0 -0
- package/dist/fonts/README.md +9 -5
- package/dist/foundations.css +196 -12
- package/dist/index.d.ts +191 -2
- package/dist/index.js +145 -36
- package/dist/menu.d.ts +2 -0
- package/dist/menu.js +130 -0
- package/dist/navigation.js +8 -8
- package/dist/overlay-runtime.js +10 -4
- package/dist/overlays.js +12 -3
- package/dist/scroll-area.js +17 -2
- package/dist/select.js +96 -47
- package/dist/styles.css +9 -0
- package/dist/toolbar.d.ts +2 -0
- package/dist/toolbar.js +80 -0
- package/package.json +2 -2
package/dist/foundations.css
CHANGED
|
@@ -1,7 +1,169 @@
|
|
|
1
1
|
@import "@flood-md/tokens/foundations.css";
|
|
2
2
|
|
|
3
|
+
.flood-root .flood-container { box-sizing: border-box; inline-size: 100%; max-inline-size: var(--flood-container-max); min-inline-size: 0; margin-inline: auto; padding-inline: var(--flood-container-gutter); }
|
|
4
|
+
.flood-root .flood-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--flood-grid-min, var(--flood-sys-size-grid-min-item))), 1fr)); gap: var(--flood-layout-gap); min-inline-size: 0; }
|
|
5
|
+
.flood-root .flood-grid > * { min-inline-size: 0; }
|
|
6
|
+
.flood-root .flood-aspect-ratio { position: relative; inline-size: 100%; min-inline-size: 0; }
|
|
7
|
+
.flood-root .flood-aspect-ratio__content { position: absolute; inset: 0; min-inline-size: 0; }
|
|
8
|
+
.flood-root .flood-aspect-ratio__content > :is(img, video, iframe) { display: block; inline-size: 100%; block-size: 100%; }
|
|
9
|
+
.flood-root .flood-image { display: block; max-inline-size: 100%; block-size: auto; object-fit: cover; }
|
|
10
|
+
.flood-root .flood-image[data-fit="contain"] { object-fit: contain; }
|
|
11
|
+
.flood-root .flood-list { display: grid; gap: var(--flood-layout-gap); margin: 0; padding-inline-start: var(--flood-sys-space-6); font-size: var(--flood-sys-type-compact-size); line-height: var(--flood-sys-type-compact-line-height); overflow-wrap: anywhere; }
|
|
12
|
+
.flood-root .flood-list[data-marker="false"] { list-style: none; padding: 0; }
|
|
13
|
+
.flood-root .flood-empty-state { box-sizing: border-box; align-items: center; text-align: center; padding-block: var(--flood-sys-space-8); padding-inline: min(var(--flood-sys-space-8), 8%); }
|
|
14
|
+
.flood-root .flood-empty-state[data-density="compact"] { padding-block: var(--flood-sys-space-6); padding-inline: min(var(--flood-sys-space-6), 8%); }
|
|
15
|
+
.flood-root .flood-empty-state__icon { padding: var(--flood-sys-space-3); border-radius: var(--flood-sys-radius-action); background: var(--flood-sys-color-surface-default); }
|
|
16
|
+
.flood-root .flood-empty-state__actions { justify-content: center; }
|
|
17
|
+
.flood-root :is(.flood-container, .flood-grid, .flood-aspect-ratio, .flood-list, .flood-image, .flood-empty-state)[hidden] { display: none; }
|
|
18
|
+
|
|
19
|
+
.flood-root .flood-card { display: flex; flex-direction: column; gap: var(--flood-sys-space-4); overflow-wrap: anywhere; }
|
|
20
|
+
.flood-root .flood-card[data-density="compact"] { gap: var(--flood-sys-space-3); }
|
|
21
|
+
.flood-root .flood-card__header { display: flex; flex-wrap: wrap; align-items: flex-start; gap: var(--flood-sys-space-3); min-inline-size: 0; }
|
|
22
|
+
.flood-root .flood-card__intro { display: grid; gap: var(--flood-sys-space-1); flex: 1 1 12rem; min-inline-size: 0; }
|
|
23
|
+
.flood-root .flood-card__actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--flood-sys-space-2); min-inline-size: 0; max-inline-size: 100%; }
|
|
24
|
+
.flood-root :is(.flood-card__body, .flood-card__footer) { min-inline-size: 0; }
|
|
25
|
+
.flood-root .flood-card__footer { margin-block-start: auto; border-block-start: var(--flood-sys-stroke-width) solid var(--flood-sys-color-divider-decorative); padding-block-start: var(--flood-sys-space-4); }
|
|
26
|
+
.flood-root .flood-card[data-density="compact"] > .flood-card__footer { padding-block-start: var(--flood-sys-space-3); }
|
|
27
|
+
.flood-root .flood-card > .flood-card__footer:only-child { border: 0; padding: 0; }
|
|
28
|
+
.flood-root .flood-card[hidden] { display: none; }
|
|
29
|
+
@media (forced-colors: active) { .flood-root .flood-card { border: var(--flood-sys-stroke-width) solid CanvasText; background: Canvas !important; color: CanvasText; } }
|
|
30
|
+
|
|
31
|
+
.flood-root .flood-kbd { display: inline-flex; flex: none; align-items: center; justify-content: center; vertical-align: middle; box-sizing: border-box; min-inline-size: var(--flood-sys-size-keycap-sm); min-block-size: var(--flood-sys-size-keycap-sm); padding-inline: var(--flood-sys-space-1); border: var(--flood-sys-stroke-width) solid var(--flood-sys-color-border-decorative); border-radius: var(--flood-sys-radius-indicator); background: var(--flood-sys-color-surface-default); color: var(--flood-sys-color-content-subtle); font-family: var(--flood-sys-font-mono); font-size: var(--flood-sys-type-helper-size); font-weight: var(--flood-sys-type-helper-weight); line-height: var(--flood-sys-type-helper-line-height); white-space: nowrap; }
|
|
32
|
+
.flood-root .flood-kbd[data-size="md"] { min-inline-size: var(--flood-sys-size-keycap-md); min-block-size: var(--flood-sys-size-keycap-md); font-size: var(--flood-sys-type-compact-size); }
|
|
33
|
+
.flood-root .flood-kbd[data-size="lg"] { min-inline-size: var(--flood-sys-size-keycap-lg); min-block-size: var(--flood-sys-size-keycap-lg); font-size: var(--flood-sys-type-body-size); }
|
|
34
|
+
.flood-root .flood-toolbar { display: inline-flex; flex-wrap: wrap; align-items: center; gap: var(--flood-sys-space-1); box-sizing: border-box; inline-size: fit-content; max-inline-size: 100%; min-inline-size: 0; padding: var(--flood-sys-space-1); border: var(--flood-sys-stroke-width) solid var(--flood-sys-color-border-decorative); border-radius: var(--flood-sys-radius-field); background: var(--flood-sys-color-surface-default); }
|
|
35
|
+
.flood-root .flood-toolbar[data-orientation="vertical"] { flex-direction: column; align-items: stretch; }
|
|
36
|
+
.flood-root .flood-toolbar:focus-visible { outline: var(--flood-sys-focus-width) solid var(--flood-sys-color-focus-ring); outline-offset: calc(-1 * var(--flood-sys-focus-width)); }
|
|
37
|
+
.flood-root .flood-toolbar[data-orientation="horizontal"] > .flood-divider { align-self: stretch; inline-size: var(--flood-sys-stroke-width); block-size: auto; border: 0; border-inline-start: var(--flood-sys-stroke-width) solid var(--flood-sys-color-divider-decorative); margin-inline: var(--flood-sys-space-1); margin-block: var(--flood-sys-space-1); }
|
|
38
|
+
.flood-root .flood-toolbar[data-orientation="vertical"] > .flood-divider { align-self: stretch; inline-size: 100%; block-size: var(--flood-sys-stroke-width); border: 0; border-block-start: var(--flood-sys-stroke-width) solid var(--flood-sys-color-divider-decorative); margin-block: var(--flood-sys-space-1); }
|
|
39
|
+
.flood-root :is(.flood-kbd, .flood-toolbar)[hidden] { display: none; }
|
|
40
|
+
@media (forced-colors: active) { .flood-root :is(.flood-kbd, .flood-toolbar) { color: CanvasText; background: Canvas; border-color: CanvasText; } }
|
|
41
|
+
|
|
42
|
+
.flood-root .flood-overlay-panel.flood-menu { inline-size: 15rem; padding: var(--flood-sys-space-1); column-gap: var(--flood-sys-space-2); overflow: visible; }
|
|
43
|
+
.flood-root .flood-menu__viewport { max-block-size: min(22rem, max(0px, calc(var(--flood-overlay-available-height, 100dvh - 1rem) - 2 * var(--flood-sys-space-1) - 2 * var(--flood-sys-stroke-width)))); }
|
|
44
|
+
.flood-root .flood-menu .flood-menu__item { inline-size: 100%; justify-content: flex-start; text-align: start; gap: var(--flood-sys-space-2); border-radius: max(0px, calc(var(--flood-sys-radius-field) - var(--flood-sys-space-1) - var(--flood-sys-stroke-width))); white-space: normal; }
|
|
45
|
+
.flood-root .flood-menu .flood-menu__item:focus { background: var(--flood-sys-color-action-on-surface-hover); }
|
|
46
|
+
.flood-root .flood-menu .flood-menu__item:focus-visible { outline-offset: calc(-1 * var(--flood-sys-focus-width)); }
|
|
47
|
+
.flood-root .flood-menu .flood-menu__item[data-tone="danger"] { color: var(--flood-sys-color-action-danger-content); }
|
|
48
|
+
.flood-root .flood-menu .flood-menu__item[aria-disabled="true"] { color: var(--flood-sys-color-field-disabled-content); cursor: default; }
|
|
49
|
+
.flood-root .flood-menu__icon { display: inline-flex; align-items: center; justify-content: center; flex: none; inline-size: var(--flood-control-icon); block-size: var(--flood-control-icon); }
|
|
50
|
+
.flood-root .flood-menu__icon > svg { inline-size: 100%; block-size: 100%; }
|
|
51
|
+
.flood-root .flood-menu__label { min-inline-size: 0; overflow-wrap: anywhere; }
|
|
52
|
+
.flood-root .flood-menu__shortcut { margin-inline-start: auto; flex: none; color: var(--flood-sys-color-content-subtle); font-size: var(--flood-sys-type-helper-size); white-space: nowrap; }
|
|
53
|
+
.flood-root .flood-menu__separator { block-size: var(--flood-sys-stroke-width); margin: var(--flood-sys-space-1) var(--flood-sys-space-2); background: var(--flood-sys-color-divider-decorative); }
|
|
54
|
+
@media (forced-colors: active) {
|
|
55
|
+
.flood-root .flood-overlay-panel.flood-menu { background: Canvas; border-color: CanvasText; }
|
|
56
|
+
.flood-root .flood-menu .flood-menu__item[data-tone="danger"] { color: CanvasText; }
|
|
57
|
+
.flood-root .flood-menu .flood-menu__item:focus { forced-color-adjust: none; background: Highlight; color: HighlightText; }
|
|
58
|
+
.flood-root .flood-menu .flood-menu__item[aria-disabled="true"] { color: GrayText; }
|
|
59
|
+
.flood-root .flood-menu__shortcut { color: inherit; }
|
|
60
|
+
.flood-root .flood-menu__separator { background: CanvasText; }
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.flood-root .flood-description-list { --flood-data-padding: var(--flood-sys-space-2); container: flood-description / inline-size; box-sizing: border-box; min-inline-size: 0; inline-size: 100%; margin: 0; color: var(--flood-sys-color-content-default); font-size: var(--flood-sys-type-compact-size); line-height: var(--flood-sys-type-compact-line-height); }
|
|
64
|
+
.flood-root .flood-description-list[data-density="comfortable"] { --flood-data-padding: var(--flood-sys-space-3); }
|
|
65
|
+
.flood-root .flood-description-list__item { display: grid; grid-template-columns: minmax(0, min(10rem, 35%)) minmax(0, 1fr); column-gap: var(--flood-sys-space-3); row-gap: var(--flood-sys-space-1); padding-block: var(--flood-data-padding); }
|
|
66
|
+
.flood-root .flood-description-list__item:first-child { padding-block-start: 0; }
|
|
67
|
+
.flood-root .flood-description-list__item:last-child { padding-block-end: 0; }
|
|
68
|
+
.flood-root .flood-description-list[data-dividers="true"] > .flood-description-list__item + .flood-description-list__item { border-block-start: var(--flood-sys-stroke-width) solid var(--flood-sys-color-divider-decorative); }
|
|
69
|
+
.flood-root .flood-description-list :is(dt, dd) { margin: 0; min-inline-size: 0; overflow-wrap: anywhere; }
|
|
70
|
+
.flood-root .flood-description-list dt { color: var(--flood-sys-color-content-subtle); }
|
|
71
|
+
.flood-root .flood-description-list[data-layout="stacked"] > .flood-description-list__item { grid-template-columns: minmax(0, 1fr); }
|
|
72
|
+
@container flood-description (max-width: 22rem) { .flood-root .flood-description-list__item { grid-template-columns: minmax(0, 1fr); } }
|
|
73
|
+
.flood-root .flood-table-container { min-inline-size: 0; max-inline-size: 100%; inline-size: 100%; }
|
|
74
|
+
.flood-root .flood-table { --flood-data-padding: var(--flood-sys-space-3); inline-size: 100%; border-collapse: collapse; border-spacing: 0; text-align: start; color: var(--flood-sys-color-content-default); font-size: var(--flood-sys-type-compact-size); line-height: var(--flood-sys-type-compact-line-height); }
|
|
75
|
+
.flood-root .flood-table[data-density="compact"] { --flood-data-padding: var(--flood-sys-space-2); }
|
|
76
|
+
.flood-root .flood-table caption { text-align: start; padding-block-end: var(--flood-sys-space-3); font-weight: var(--flood-sys-type-label-weight); color: var(--flood-sys-color-content-default); }
|
|
77
|
+
.flood-root .flood-table :is(th, td) { text-align: start; vertical-align: top; padding: var(--flood-data-padding) var(--flood-sys-space-3); overflow-wrap: anywhere; }
|
|
78
|
+
.flood-root .flood-table th { font-weight: var(--flood-sys-type-label-weight); }
|
|
79
|
+
.flood-root .flood-table thead th { color: var(--flood-sys-color-content-subtle); border-block-end: var(--flood-sys-stroke-width) solid var(--flood-sys-color-divider-decorative); }
|
|
80
|
+
.flood-root .flood-table tbody > tr:not(:last-child) > :is(th, td) { border-block-end: var(--flood-sys-stroke-width) solid var(--flood-sys-color-divider-decorative); }
|
|
81
|
+
.flood-root .flood-table tfoot > tr:first-child > :is(th, td) { border-block-start: var(--flood-sys-stroke-width) solid var(--flood-sys-color-divider-decorative); }
|
|
82
|
+
.flood-root .flood-table tfoot { background: color-mix(in srgb, var(--flood-sys-color-content-default) 8%, transparent); }
|
|
83
|
+
.flood-root .flood-table tfoot :is(th, td) { font-weight: var(--flood-sys-type-label-weight); }
|
|
84
|
+
.flood-root .flood-table[data-striped="true"] tbody > tr:nth-child(even) { background: color-mix(in srgb, var(--flood-sys-color-content-default) 4%, transparent); }
|
|
85
|
+
.flood-root .flood-table [data-numeric] { text-align: end; font-variant-numeric: tabular-nums; white-space: nowrap; }
|
|
86
|
+
.flood-root .flood-table [data-align="center"] { text-align: center; }
|
|
87
|
+
.flood-root .flood-table [data-align="end"] { text-align: end; }
|
|
88
|
+
.flood-root .flood-table [data-align="start"] { text-align: start; }
|
|
89
|
+
.flood-root :is(.flood-description-list, .flood-table-container, .flood-table)[hidden] { display: none; }
|
|
90
|
+
@media (forced-colors: active) {
|
|
91
|
+
.flood-root .flood-table[data-striped="true"] tbody > tr:nth-child(even) { background: Canvas; }
|
|
92
|
+
.flood-root .flood-table tfoot { background: Canvas; }
|
|
93
|
+
.flood-root .flood-table :is(th, td), .flood-root .flood-description-list[data-dividers="true"] > .flood-description-list__item { border-color: CanvasText; }
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.flood-root .flood-indicator { --flood-indicator-color: var(--flood-sys-color-indicator-fill); --flood-indicator-size: var(--flood-sys-size-indicator-md); position: relative; min-inline-size: 0; inline-size: 100%; box-sizing: border-box; }
|
|
97
|
+
.flood-root .flood-indicator[data-size="sm"] { --flood-indicator-size: var(--flood-sys-size-indicator-sm); }
|
|
98
|
+
.flood-root .flood-indicator[data-size="lg"] { --flood-indicator-size: var(--flood-sys-size-indicator-lg); }
|
|
99
|
+
.flood-root .flood-indicator[data-tone="accent"] { --flood-indicator-color: var(--flood-sys-color-indicator-accent); }
|
|
100
|
+
.flood-root .flood-indicator[data-tone="error"] { --flood-indicator-color: var(--flood-sys-color-feedback-error); }
|
|
101
|
+
.flood-root .flood-indicator[data-tone="warning"] { --flood-indicator-color: var(--flood-sys-color-feedback-warning); }
|
|
102
|
+
.flood-root .flood-indicator[data-tone="success"] { --flood-indicator-color: var(--flood-sys-color-feedback-success); }
|
|
103
|
+
.flood-root .flood-indicator[data-tone="info"] { --flood-indicator-color: var(--flood-sys-color-feedback-info); }
|
|
104
|
+
.flood-root .flood-indicator__caption { display: flex; justify-content: space-between; align-items: baseline; gap: var(--flood-sys-space-3); margin-block-end: var(--flood-sys-space-2); font-size: var(--flood-sys-type-compact-size); line-height: var(--flood-sys-type-compact-line-height); overflow-wrap: anywhere; }
|
|
105
|
+
.flood-root .flood-indicator__value { color: var(--flood-sys-color-content-subtle); text-align: end; font-variant-numeric: tabular-nums; }
|
|
106
|
+
.flood-root .flood-indicator__track { display: flex; block-size: var(--flood-indicator-size); overflow: hidden; border-radius: var(--flood-sys-radius-action); background: var(--flood-sys-color-indicator-track); }
|
|
107
|
+
.flood-root .flood-indicator__fill { display: block; flex: none; block-size: 100%; border-radius: inherit; background: var(--flood-indicator-color); transition: inline-size var(--flood-sys-motion-duration-normal) var(--flood-sys-motion-easing); }
|
|
108
|
+
.flood-root .flood-indicator[data-indeterminate="true"] .flood-indicator__fill { inline-size: 100%; background: linear-gradient(90deg, transparent, var(--flood-indicator-color), transparent); background-size: 200% 100%; animation: flood-indeterminate 1.4s linear infinite; }
|
|
109
|
+
@keyframes flood-indeterminate { from { background-position: 200% 0; } to { background-position: -200% 0; } }
|
|
110
|
+
.flood-root .flood-alert { --flood-alert-color: var(--flood-sys-color-content-subtle); position: relative; display: flex; align-items: flex-start; gap: var(--flood-sys-space-3); box-sizing: border-box; min-inline-size: 0; padding: var(--flood-sys-space-4); border: var(--flood-sys-stroke-width) solid var(--flood-sys-color-border-decorative); border-radius: var(--flood-sys-radius-field); background: color-mix(in srgb, var(--flood-alert-color) 4%, var(--flood-sys-color-surface-canvas)); color: var(--flood-sys-color-content-default); }
|
|
111
|
+
.flood-root .flood-alert[data-tone="info"] { --flood-alert-color: var(--flood-sys-color-feedback-info); }
|
|
112
|
+
.flood-root .flood-alert[data-tone="success"] { --flood-alert-color: var(--flood-sys-color-feedback-success); }
|
|
113
|
+
.flood-root .flood-alert[data-tone="warning"] { --flood-alert-color: var(--flood-sys-color-feedback-warning); }
|
|
114
|
+
.flood-root .flood-alert[data-tone="error"] { --flood-alert-color: var(--flood-sys-color-feedback-error); }
|
|
115
|
+
.flood-root .flood-alert__icon { display: inline-flex; flex: none; inline-size: var(--flood-sys-control-md-icon-size); block-size: var(--flood-sys-control-md-icon-size); color: var(--flood-alert-color); }
|
|
116
|
+
.flood-root .flood-alert__icon > svg { inline-size: 100%; block-size: 100%; }
|
|
117
|
+
.flood-root .flood-alert__content { flex: 1 1 auto; min-inline-size: 0; overflow-wrap: anywhere; font-size: var(--flood-sys-type-compact-size); line-height: var(--flood-sys-type-compact-line-height); }
|
|
118
|
+
.flood-root .flood-alert__title { margin: 0; font: inherit; font-weight: var(--flood-sys-type-label-weight); }
|
|
119
|
+
.flood-root .flood-alert__title + .flood-alert__body { margin-block-start: var(--flood-sys-space-1); }
|
|
120
|
+
.flood-root .flood-alert__body { color: var(--flood-sys-color-content-subtle); }
|
|
121
|
+
.flood-root .flood-alert__body > :first-child { margin-block-start: 0; }
|
|
122
|
+
.flood-root .flood-alert__body > :last-child { margin-block-end: 0; }
|
|
123
|
+
.flood-root :is(.flood-alert, .flood-indicator)[hidden] { display: none; }
|
|
124
|
+
@media (prefers-reduced-motion: reduce) {
|
|
125
|
+
.flood-root .flood-indicator__fill { transition: none; }
|
|
126
|
+
.flood-root .flood-indicator[data-indeterminate="true"] .flood-indicator__fill { animation: none; background: var(--flood-indicator-color); inline-size: 35%; }
|
|
127
|
+
}
|
|
128
|
+
@media (forced-colors: active) {
|
|
129
|
+
.flood-root .flood-indicator__track { forced-color-adjust: none; background: Canvas; outline: 1px solid CanvasText; }
|
|
130
|
+
.flood-root .flood-indicator__fill { forced-color-adjust: none; background: Highlight; }
|
|
131
|
+
.flood-root .flood-indicator[data-indeterminate="true"] .flood-indicator__fill { animation: none; background: Highlight; inline-size: 35%; }
|
|
132
|
+
.flood-root .flood-alert { background: Canvas; color: CanvasText; border-color: CanvasText; }
|
|
133
|
+
.flood-root :is(.flood-alert__icon, .flood-alert__body) { color: CanvasText; }
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.flood-root .flood-badge { --flood-badge-color: var(--flood-sys-color-content-default); display: inline-flex; align-items: center; vertical-align: middle; gap: var(--flood-sys-space-1); box-sizing: border-box; max-inline-size: 100%; min-inline-size: 0; padding: var(--flood-sys-space-1) var(--flood-sys-space-2); border: var(--flood-sys-stroke-width) solid transparent; border-radius: var(--flood-sys-radius-action); background: color-mix(in srgb, var(--flood-badge-color) 9%, var(--flood-sys-color-surface-canvas)); color: var(--flood-badge-color); font-size: var(--flood-sys-type-helper-size); line-height: var(--flood-sys-type-helper-line-height); font-weight: var(--flood-sys-type-label-weight); letter-spacing: var(--flood-sys-type-helper-tracking); overflow-wrap: anywhere; }
|
|
137
|
+
.flood-root .flood-badge[data-size="sm"] { padding-block: 0; }
|
|
138
|
+
.flood-root .flood-badge[data-size="lg"] { padding-inline: var(--flood-sys-space-3); font-size: var(--flood-sys-type-compact-size); line-height: var(--flood-sys-type-compact-line-height); }
|
|
139
|
+
.flood-root .flood-badge[data-tone="accent"] { --flood-badge-color: var(--flood-sys-color-accent-content); }
|
|
140
|
+
.flood-root .flood-badge[data-tone="error"] { --flood-badge-color: var(--flood-sys-color-feedback-error); }
|
|
141
|
+
.flood-root .flood-badge[data-tone="warning"] { --flood-badge-color: var(--flood-sys-color-feedback-warning); }
|
|
142
|
+
.flood-root .flood-badge[data-tone="success"] { --flood-badge-color: var(--flood-sys-color-feedback-success); }
|
|
143
|
+
.flood-root .flood-badge[data-tone="info"] { --flood-badge-color: var(--flood-sys-color-feedback-info); }
|
|
144
|
+
.flood-root .flood-badge[data-variant="outline"] { background: transparent; border-color: color-mix(in srgb, var(--flood-badge-color) 25%, var(--flood-sys-color-border-decorative)); }
|
|
145
|
+
.flood-root .flood-badge > svg { flex: none; inline-size: 1em; block-size: 1em; }
|
|
146
|
+
.flood-root .flood-skeleton { display: block; flex: none; box-sizing: border-box; inline-size: 100%; block-size: 1rem; max-inline-size: 100%; border-radius: var(--flood-sys-radius-indicator); background: var(--flood-sys-color-loading-placeholder); }
|
|
147
|
+
.flood-root .flood-skeleton[data-shape="rounded"] { block-size: 6rem; border-radius: var(--flood-sys-radius-field); }
|
|
148
|
+
.flood-root .flood-skeleton[data-shape="circle"] { inline-size: 2.5rem; block-size: 2.5rem; border-radius: var(--flood-sys-radius-action); }
|
|
149
|
+
.flood-root .flood-skeleton[data-animate="true"] { animation: flood-skeleton-pulse 1.8s ease-in-out infinite; }
|
|
150
|
+
@keyframes flood-skeleton-pulse { 50% { opacity: .5; } }
|
|
151
|
+
.flood-root .flood-avatar { --flood-avatar-size: var(--flood-sys-control-md-height); position: relative; display: inline-grid; place-items: center; vertical-align: middle; flex: none; inline-size: var(--flood-avatar-size); block-size: var(--flood-avatar-size); box-sizing: border-box; overflow: hidden; border-radius: var(--flood-sys-radius-action); background: var(--flood-sys-color-surface-overlay); color: var(--flood-sys-color-content-subtle); font-size: var(--flood-sys-type-compact-size); font-weight: var(--flood-sys-type-label-weight); line-height: 1; user-select: none; }
|
|
152
|
+
.flood-root .flood-avatar[data-size="sm"] { --flood-avatar-size: var(--flood-sys-control-sm-height); font-size: var(--flood-sys-type-helper-size); }
|
|
153
|
+
.flood-root .flood-avatar[data-size="lg"] { --flood-avatar-size: var(--flood-sys-control-xl-height); }
|
|
154
|
+
.flood-root .flood-avatar[data-shape="rounded"] { border-radius: var(--flood-sys-radius-field); }
|
|
155
|
+
.flood-avatar__fallback { max-inline-size: 100%; overflow: hidden; white-space: nowrap; }
|
|
156
|
+
.flood-root .flood-avatar .flood-avatar__image { position: absolute; inset: 0; inline-size: 100%; block-size: 100%; object-fit: cover; opacity: 0; }
|
|
157
|
+
.flood-root .flood-avatar .flood-avatar__image[data-ready="true"] { opacity: 1; }
|
|
158
|
+
.flood-root :is(.flood-badge, .flood-skeleton, .flood-avatar)[hidden] { display: none; }
|
|
159
|
+
@media (prefers-reduced-motion: reduce) { .flood-root .flood-skeleton[data-animate="true"] { animation: none; } }
|
|
160
|
+
@media (forced-colors: active) {
|
|
161
|
+
.flood-root :is(.flood-badge, .flood-avatar) { color: CanvasText; background: Canvas; border: 1px solid CanvasText; }
|
|
162
|
+
.flood-root .flood-skeleton { background: GrayText; animation: none; }
|
|
163
|
+
}
|
|
164
|
+
|
|
3
165
|
/* Keep real labels in the accessibility tree while removing their layout box. */
|
|
4
|
-
.flood-visually-hidden { position: absolute; inline-size: 1px; block-size: 1px; padding: 0; margin: 0; border: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
|
|
166
|
+
.flood-visually-hidden, .flood-visually-hidden--focusable:not(:focus-within):not([data-flood-focus-held]) { position: absolute; inline-size: 1px; block-size: 1px; padding: 0; margin: 0; border: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
|
|
5
167
|
.flood-field[data-hide-label="true"], .flood-fieldset[data-hide-label="true"] { position: relative; }
|
|
6
168
|
|
|
7
169
|
.flood-root .flood-tabs { display: grid; grid-template-rows: auto 1fr; min-inline-size: 0; box-sizing: border-box; overflow: clip; border: var(--flood-sys-stroke-width) solid var(--flood-sys-color-border-decorative); border-radius: var(--flood-sys-radius-field); background: var(--flood-sys-color-surface-default); }
|
|
@@ -19,7 +181,9 @@
|
|
|
19
181
|
.flood-root .flood-tabs__panel:focus-visible { outline: var(--flood-sys-focus-width) solid var(--flood-sys-color-focus-ring); outline-offset: calc(-1 * var(--flood-sys-focus-width)); }
|
|
20
182
|
.flood-root :is(.flood-breadcrumb, .flood-pagination) { min-inline-size: 0; max-inline-size: 100%; font-size: var(--flood-sys-type-compact-size); line-height: var(--flood-sys-type-compact-line-height); }
|
|
21
183
|
.flood-root :is(.flood-breadcrumb ol, .flood-pagination ul) { display: flex; flex-wrap: wrap; align-items: center; padding: 0; margin: 0; list-style: none; gap: var(--flood-sys-space-2); }
|
|
22
|
-
.flood-root .flood-breadcrumb
|
|
184
|
+
.flood-root .flood-breadcrumb { inline-size: max-content; }
|
|
185
|
+
.flood-root .flood-breadcrumb li { display: inline-flex; align-items: center; flex: 0 0 auto; inline-size: max-content; gap: var(--flood-sys-space-2); min-inline-size: 0; max-inline-size: 100%; overflow-wrap: anywhere; }
|
|
186
|
+
.flood-root .flood-breadcrumb li > :not(.flood-breadcrumb__separator) { min-inline-size: 0; }
|
|
23
187
|
.flood-root .flood-breadcrumb a { display: inline-flex; align-items: center; min-block-size: var(--flood-sys-control-sm-height); color: var(--flood-sys-color-content-subtle); text-decoration: none; }
|
|
24
188
|
.flood-root .flood-breadcrumb a:hover { text-decoration: underline; }
|
|
25
189
|
.flood-root .flood-breadcrumb [aria-current="page"] { color: var(--flood-sys-color-content-default); }
|
|
@@ -31,7 +195,7 @@
|
|
|
31
195
|
.flood-root .flood-pagination .flood-page[aria-current="page"] { background: var(--flood-sys-color-selection-background); color: var(--flood-sys-color-selection-content); }
|
|
32
196
|
.flood-root .flood-pagination .flood-page:is(:disabled, [aria-disabled="true"]) { color: var(--flood-sys-color-field-disabled-content); cursor: default; }
|
|
33
197
|
.flood-root .flood-page-gap { padding-inline: var(--flood-sys-space-1); color: var(--flood-sys-color-content-subtle); }
|
|
34
|
-
@media (pointer: coarse) { .flood-root .flood-pagination .flood-page { min-inline-size: var(--flood-sys-size-touch); } .flood-root .flood-breadcrumb a { min-block-size: var(--flood-sys-size-touch); min-inline-size: var(--flood-sys-size-touch); } }
|
|
198
|
+
@media (pointer: coarse) { .flood-root .flood-pagination .flood-page { min-inline-size: var(--flood-sys-size-touch); } .flood-root .flood-breadcrumb li > a.flood-link { min-block-size: var(--flood-sys-size-touch); min-inline-size: var(--flood-sys-size-touch); } }
|
|
35
199
|
@media (forced-colors: active) {
|
|
36
200
|
.flood-root .flood-tabs .flood-tab[aria-selected="true"]:not(:disabled), .flood-root .flood-pagination .flood-page[aria-current="page"]:not(:disabled):not([aria-disabled="true"]) { forced-color-adjust: none; background: Highlight; color: HighlightText; box-shadow: none; }
|
|
37
201
|
}
|
|
@@ -67,6 +231,7 @@
|
|
|
67
231
|
.flood-root .flood-accordion > .flood-disclosure:last-child[data-open="false"] > .flood-disclosure__heading > .flood-disclosure__trigger { border-end-start-radius: calc(var(--flood-sys-radius-field) - var(--flood-sys-stroke-width)); border-end-end-radius: calc(var(--flood-sys-radius-field) - var(--flood-sys-stroke-width)); }
|
|
68
232
|
@media (prefers-reduced-motion: reduce) { .flood-root .flood-disclosure__indicator { transition: none; } }
|
|
69
233
|
|
|
234
|
+
@font-face { font-family: "Inter"; src: url("./fonts/InterVariable-Italic.woff2") format("woff2"); font-style: italic; font-weight: 100 900; font-display: swap; }
|
|
70
235
|
@font-face {
|
|
71
236
|
font-family: "Inter";
|
|
72
237
|
font-style: normal;
|
|
@@ -135,7 +300,7 @@
|
|
|
135
300
|
color: var(--flood-sys-color-content-default);
|
|
136
301
|
}
|
|
137
302
|
.flood-root .flood-code-snippet__code {
|
|
138
|
-
flex: 1;
|
|
303
|
+
flex: 1 1 20ch;
|
|
139
304
|
min-inline-size: 0;
|
|
140
305
|
font-family: var(--flood-sys-font-mono);
|
|
141
306
|
font-size: var(--flood-sys-type-compact-size);
|
|
@@ -289,14 +454,18 @@
|
|
|
289
454
|
.flood-root .flood-textarea { min-block-size: calc(var(--flood-control-height) * 3); resize: none; overflow: auto; }
|
|
290
455
|
.flood-root .flood-field { display: grid; gap: var(--flood-sys-space-2); }
|
|
291
456
|
.flood-root .flood-fieldset { margin: 0; padding: 0; border: 0; min-inline-size: 0; inline-size: 100%; }
|
|
292
|
-
.flood-root .flood-legend { padding: 0; margin-block-end: var(--flood-sys-space-3); font-size: var(--flood-sys-type-label-size); line-height: var(--flood-sys-type-label-line-height); font-weight: var(--flood-sys-type-label-weight); letter-spacing: var(--flood-sys-type-label-tracking); }
|
|
293
|
-
.flood-root .flood-fieldset__body { display: grid; gap: var(--flood-sys-space-3); min-inline-size: 0; }
|
|
457
|
+
.flood-root .flood-legend { float: inline-start; inline-size: 100%; padding: 0; margin-block-end: var(--flood-sys-space-3); font-size: var(--flood-sys-type-label-size); line-height: var(--flood-sys-type-label-line-height); font-weight: var(--flood-sys-type-label-weight); letter-spacing: var(--flood-sys-type-label-tracking); }
|
|
458
|
+
.flood-root .flood-fieldset__body { clear: both; display: grid; gap: var(--flood-sys-space-3); min-inline-size: 0; }
|
|
294
459
|
.flood-root .flood-choice-group { display: flex; flex-direction: column; align-items: flex-start; gap: 0; min-inline-size: 0; }
|
|
295
460
|
.flood-root .flood-choice-group > .flood-choice { min-block-size: var(--flood-sys-control-sm-height); }
|
|
296
461
|
.flood-root .flood-choice-group[data-orientation="horizontal"] { flex-direction: row; flex-wrap: wrap; column-gap: var(--flood-sys-space-4); }
|
|
297
462
|
.flood-root .flood-fieldset__body:has(> .flood-choice-group) { gap: var(--flood-sys-space-1); }
|
|
298
463
|
.flood-root .flood-fieldset:has(> .flood-fieldset__body > .flood-choice-group) > .flood-legend { margin-block-end: var(--flood-sys-space-1); }
|
|
299
464
|
.flood-root .flood-fieldset:has(> .flood-fieldset__body > .flood-hint) > .flood-legend { margin-block-end: var(--flood-sys-space-1); }
|
|
465
|
+
/* Keep legends in ordinary float/clear layout from their first render.
|
|
466
|
+
WebKit otherwise retains the native legend row when it becomes absolute.
|
|
467
|
+
The real legend and its React children remain mounted for group semantics. */
|
|
468
|
+
.flood-root .flood-fieldset[data-hide-label="true"] > .flood-legend.flood-visually-hidden--focusable:not(:focus-within):not([data-flood-focus-held]) { float: none; inline-size: 1px; block-size: 1px; margin: 0; min-inline-size: 0; min-block-size: 0; max-inline-size: 1px; max-block-size: 1px; line-height: 1px; }
|
|
300
469
|
.flood-root .flood-fieldset:disabled :is(.flood-legend, .flood-label) { color: var(--flood-sys-color-field-disabled-content); }
|
|
301
470
|
.flood-root .flood-label { color: var(--flood-sys-color-content-helper); font-size: var(--flood-sys-type-label-size); line-height: var(--flood-sys-type-label-line-height); font-weight: var(--flood-sys-type-label-weight); letter-spacing: var(--flood-sys-type-label-tracking); }
|
|
302
471
|
.flood-root :where(.flood-hint, .flood-error) { font-size: var(--flood-sys-type-helper-size); line-height: var(--flood-sys-type-helper-line-height); font-weight: var(--flood-sys-type-helper-weight); letter-spacing: var(--flood-sys-type-helper-tracking); }
|
|
@@ -332,11 +501,10 @@
|
|
|
332
501
|
.flood-root .flood-check[type="radio"] { border-radius: var(--flood-sys-radius-action); }
|
|
333
502
|
.flood-root .flood-check[type="radio"]::before { inline-size: calc(var(--flood-sys-size-choice) * .45); block-size: calc(var(--flood-sys-size-choice) * .45); border-radius: var(--flood-sys-radius-action); background: currentColor; }
|
|
334
503
|
.flood-root .flood-check:disabled { background: var(--flood-sys-color-field-disabled); border-color: var(--flood-sys-color-field-border); color: var(--flood-sys-color-field-disabled-content); opacity: 1; }
|
|
335
|
-
.flood-root .flood-switch-input { inline-size: var(--flood-sys-size-switch-width); block-size: var(--flood-sys-size-switch-height); padding: calc((var(--flood-sys-size-switch-height) - var(--flood-sys-size-switch-thumb)) / 2 - var(--flood-sys-stroke-width)); border: var(--flood-sys-stroke-width) solid var(--flood-sys-color-field-border); border-radius: var(--flood-sys-radius-action); background: var(--flood-sys-color-action-subtle-hover); }
|
|
336
|
-
.flood-root .flood-switch-input::before { inline-size: var(--flood-sys-size-switch-thumb); block-size: var(--flood-sys-size-switch-thumb); border-radius: var(--flood-sys-radius-action); background: var(--flood-sys-color-content-default); transition:
|
|
504
|
+
.flood-root .flood-switch-input { position: relative; box-sizing: border-box; inline-size: var(--flood-sys-size-switch-width); block-size: var(--flood-sys-size-switch-height); padding: calc((var(--flood-sys-size-switch-height) - var(--flood-sys-size-switch-thumb)) / 2 - var(--flood-sys-stroke-width)); border: var(--flood-sys-stroke-width) solid var(--flood-sys-color-field-border); border-radius: var(--flood-sys-radius-action); background: var(--flood-sys-color-action-subtle-hover); }
|
|
505
|
+
.flood-root .flood-switch-input::before { position: absolute; inset-block-start: calc((var(--flood-sys-size-switch-height) - var(--flood-sys-size-switch-thumb)) / 2 - var(--flood-sys-stroke-width)); inset-inline-start: calc((var(--flood-sys-size-switch-height) - var(--flood-sys-size-switch-thumb)) / 2 - var(--flood-sys-stroke-width)); transform: none; inline-size: var(--flood-sys-size-switch-thumb); block-size: var(--flood-sys-size-switch-thumb); border-radius: var(--flood-sys-radius-action); background: var(--flood-sys-color-content-default); transition: inset-inline-start var(--flood-sys-motion-duration-fast) var(--flood-sys-motion-easing); }
|
|
337
506
|
.flood-root .flood-switch-input:checked { background: var(--flood-sys-color-action-primary-rest); border-color: var(--flood-sys-color-action-primary-rest); }
|
|
338
|
-
.flood-root .flood-switch-input:checked::before { transform:
|
|
339
|
-
.flood-root .flood-switch-input:dir(rtl):checked::before { transform: translateX(calc(var(--flood-sys-size-switch-height) - var(--flood-sys-size-switch-width))); }
|
|
507
|
+
.flood-root .flood-switch-input:checked::before { transform: none; inset-inline-start: calc(var(--flood-sys-size-switch-width) - var(--flood-sys-size-switch-height) + (var(--flood-sys-size-switch-height) - var(--flood-sys-size-switch-thumb)) / 2 - var(--flood-sys-stroke-width)); background: var(--flood-sys-color-action-primary-content); }
|
|
340
508
|
.flood-root .flood-switch-input:disabled { opacity: 1; border-color: var(--flood-sys-color-field-border); background: var(--flood-sys-color-field-disabled); }
|
|
341
509
|
.flood-root .flood-switch-input:disabled::before { background: var(--flood-sys-color-field-disabled-content); }
|
|
342
510
|
.flood-root .flood-link { font-size: inherit; color: var(--flood-sys-color-content-default); text-underline-offset: var(--flood-sys-space-1); }
|
|
@@ -552,12 +720,12 @@
|
|
|
552
720
|
.flood-root .flood-button-group[data-orientation="vertical"] > .flood-button:not([hidden]) ~ .flood-button:not([hidden]) { border-block-start-color: var(--flood-sys-color-field-border); }
|
|
553
721
|
.flood-root .flood-button-group[data-orientation="vertical"] > .flood-button:nth-child(1 of .flood-button:not([hidden])) { border-start-start-radius: var(--flood-sys-radius-field); border-start-end-radius: var(--flood-sys-radius-field); }
|
|
554
722
|
.flood-root .flood-button-group[data-orientation="vertical"] > .flood-button:nth-last-child(1 of .flood-button:not([hidden])) { border-end-start-radius: var(--flood-sys-radius-field); border-end-end-radius: var(--flood-sys-radius-field); }
|
|
555
|
-
.flood-root .flood-input-group { --flood-group-stroke: var(--flood-sys-stroke-width); --flood-group-height: var(--flood-control-height); --flood-group-inset: max(var(--flood-sys-space-1), var(--flood-sys-focus-width)); box-sizing: border-box; display: flex; align-items: center; gap: var(--flood-control-gap); min-inline-size: 0; inline-size: 100%; min-block-size: var(--flood-group-height); padding-inline: calc(var(--flood-control-padding) - var(--flood-group-stroke)); padding-block: calc(var(--flood-group-inset) - var(--flood-group-stroke)); border: var(--flood-group-stroke) solid var(--flood-sys-color-field-border); border-radius: var(--flood-sys-radius-field); background: var(--flood-sys-color-field-background); color: var(--flood-sys-color-field-content); }
|
|
723
|
+
.flood-root .flood-input-group { flex-wrap: wrap; --flood-group-stroke: var(--flood-sys-stroke-width); --flood-group-height: var(--flood-control-height); --flood-group-inset: max(var(--flood-sys-space-1), var(--flood-sys-focus-width)); box-sizing: border-box; display: flex; align-items: center; gap: var(--flood-control-gap); min-inline-size: 0; inline-size: 100%; min-block-size: var(--flood-group-height); padding-inline: calc(var(--flood-control-padding) - var(--flood-group-stroke)); padding-block: calc(var(--flood-group-inset) - var(--flood-group-stroke)); border: var(--flood-group-stroke) solid var(--flood-sys-color-field-border); border-radius: var(--flood-sys-radius-field); background: var(--flood-sys-color-field-background); color: var(--flood-sys-color-field-content); }
|
|
556
724
|
.flood-root .flood-input-group[data-status] { border-color: var(--flood-field-feedback); }
|
|
557
725
|
.flood-root .flood-input-group[data-readonly="true"] { background: var(--flood-sys-color-surface-canvas); border-style: dashed; }
|
|
558
726
|
.flood-root .flood-input-group[data-disabled="true"] { background: var(--flood-sys-color-field-disabled); border-color: var(--flood-sys-color-field-border); color: var(--flood-sys-color-field-disabled-content); }
|
|
559
727
|
.flood-root .flood-input-group:has(> .flood-input:focus-visible) { --flood-group-stroke: var(--flood-sys-focus-width); border-color: var(--flood-sys-color-focus-ring); border-style: solid; }
|
|
560
|
-
.flood-root .flood-input-group > .flood-input { flex: 1 1
|
|
728
|
+
.flood-root .flood-input-group > .flood-input { flex: 1 1 4rem; align-self: stretch; inline-size: 0; min-inline-size: min(100%, 4rem); min-block-size: calc(var(--flood-group-height) - 2 * var(--flood-group-inset)); border: 0; border-radius: 0; background: transparent; padding-inline: 0; padding-block: max(0px, calc((var(--flood-control-height) - var(--flood-control-text) * var(--flood-control-line)) / 2 - var(--flood-group-inset))); }
|
|
561
729
|
.flood-root .flood-input-group > .flood-input:focus-visible { outline: none; border: 0; padding-inline: 0; }
|
|
562
730
|
.flood-root .flood-input-group__addon { color: var(--flood-sys-color-content-subtle); display: flex; align-items: center; flex: 0 1 auto; min-inline-size: 0; max-inline-size: 40%; overflow-wrap: anywhere; font-size: var(--flood-control-text); line-height: var(--flood-control-line); }
|
|
563
731
|
/* Text edges retain reading padding; nested actions use the same optical inset on every edge. */
|
|
@@ -597,3 +765,19 @@
|
|
|
597
765
|
.flood-root .flood-segmented .flood-choice:has(input:checked) { forced-color-adjust: none; background: Highlight; color: HighlightText; }
|
|
598
766
|
.flood-root .flood-segmented .flood-choice:has(input:focus-visible) { outline-color: Highlight; }
|
|
599
767
|
}
|
|
768
|
+
|
|
769
|
+
.flood-root .flood-choice[hidden] { display: none; }
|
|
770
|
+
|
|
771
|
+
.flood-root .flood-input-group__addon:has(> .flood-button) { flex: 0 0 auto; max-inline-size: 100%; }
|
|
772
|
+
.flood-root .flood-input-group__addon > .flood-button { white-space: normal; overflow-wrap: normal; flex-shrink: 0; min-inline-size: min-content; }
|
|
773
|
+
.flood-root .flood-connected-scroll .flood-button-group { inline-size: max-content; max-inline-size: none; }
|
|
774
|
+
.flood-root .flood-connected-scroll .flood-button-group > .flood-button { flex-shrink: 0; min-inline-size: min-content; overflow-wrap: normal; white-space: nowrap; }
|
|
775
|
+
.flood-root .flood-connected-scroll .flood-button-group[data-orientation="vertical"] { inline-size: 100%; }
|
|
776
|
+
.flood-root .flood-connected-scroll .flood-button-group[data-orientation="vertical"] > .flood-button { white-space: normal; }
|
|
777
|
+
.flood-scroll-area[hidden], .flood-root .flood-select[hidden] { display: none; }
|
|
778
|
+
|
|
779
|
+
.flood-root .flood-connected-scroll .flood-button:focus-visible { outline-offset: calc(-1 * var(--flood-sys-focus-width)); }
|
|
780
|
+
|
|
781
|
+
.flood-root .flood-connected-scroll .flood-button-group > .flood-icon-button { min-inline-size: var(--flood-control-height); }
|
|
782
|
+
@media (pointer: coarse) { .flood-root .flood-connected-scroll .flood-button-group > .flood-icon-button { min-inline-size: max(var(--flood-control-height), var(--flood-sys-size-touch)); } }
|
|
783
|
+
.flood-root .flood-input-group__addon--end:has(> .flood-button) { margin-inline-start: auto; }
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ButtonHTMLAttributes, type InputHTMLAttributes, type TextareaHTMLAttributes, type SelectHTMLAttributes, type AnchorHTMLAttributes, type ReactNode, type HTMLAttributes, type LabelHTMLAttributes, type FieldsetHTMLAttributes, type RefCallback, type RefObject } from "react";
|
|
1
|
+
import { type ButtonHTMLAttributes, type InputHTMLAttributes, type TextareaHTMLAttributes, type SelectHTMLAttributes, type AnchorHTMLAttributes, type ReactNode, type HTMLAttributes, type CSSProperties, type LabelHTMLAttributes, type FieldsetHTMLAttributes, type RefCallback, type RefObject, type TableHTMLAttributes, type ImgHTMLAttributes } from "react";
|
|
2
2
|
export type ControlSize = "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
|
|
3
3
|
export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
4
4
|
variant?: "solid" | "subtle" | "outline" | "ghost";
|
|
@@ -7,6 +7,102 @@ export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
|
7
7
|
}
|
|
8
8
|
export declare const Button: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
9
9
|
export type FieldStatus = "error" | "warning" | "success" | "info";
|
|
10
|
+
export type ContentSize = "sm" | "md" | "lg";
|
|
11
|
+
export interface KbdProps extends HTMLAttributes<HTMLElement> {
|
|
12
|
+
size?: ContentSize;
|
|
13
|
+
}
|
|
14
|
+
/** @since 0.2.4 */
|
|
15
|
+
export declare const Kbd: import("react").ForwardRefExoticComponent<KbdProps & import("react").RefAttributes<HTMLElement>>;
|
|
16
|
+
export interface ToolbarProps extends Omit<HTMLAttributes<HTMLDivElement>, "role"> {
|
|
17
|
+
label: string;
|
|
18
|
+
orientation?: "horizontal" | "vertical";
|
|
19
|
+
loop?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/** @since 0.2.4 */
|
|
22
|
+
export declare const Toolbar: import("react").ForwardRefExoticComponent<ToolbarProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
23
|
+
export type DataDensity = "compact" | "comfortable";
|
|
24
|
+
export interface DescriptionItem {
|
|
25
|
+
id: string;
|
|
26
|
+
term: string;
|
|
27
|
+
description: ReactNode;
|
|
28
|
+
}
|
|
29
|
+
export interface DescriptionListProps extends Omit<HTMLAttributes<HTMLDListElement>, "children"> {
|
|
30
|
+
items: readonly DescriptionItem[];
|
|
31
|
+
layout?: "inline" | "stacked";
|
|
32
|
+
density?: DataDensity;
|
|
33
|
+
dividers?: boolean;
|
|
34
|
+
}
|
|
35
|
+
/** @since 0.2.4 */
|
|
36
|
+
export declare const DescriptionList: import("react").ForwardRefExoticComponent<DescriptionListProps & import("react").RefAttributes<HTMLDListElement>>;
|
|
37
|
+
export interface TableProps extends Omit<TableHTMLAttributes<HTMLTableElement>, "children"> {
|
|
38
|
+
caption: string;
|
|
39
|
+
children: ReactNode;
|
|
40
|
+
hideCaption?: boolean;
|
|
41
|
+
density?: DataDensity;
|
|
42
|
+
striped?: boolean;
|
|
43
|
+
scrollLabel?: string;
|
|
44
|
+
}
|
|
45
|
+
/** @since 0.2.4 */
|
|
46
|
+
export declare const Table: import("react").ForwardRefExoticComponent<TableProps & import("react").RefAttributes<HTMLTableElement>>;
|
|
47
|
+
export type SemanticTone = "neutral" | "accent" | "error" | "warning" | "success" | "info";
|
|
48
|
+
export type BadgeTone = SemanticTone;
|
|
49
|
+
export interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
|
|
50
|
+
size?: ContentSize;
|
|
51
|
+
tone?: BadgeTone;
|
|
52
|
+
variant?: "subtle" | "outline";
|
|
53
|
+
}
|
|
54
|
+
/** @since 0.2.4 */
|
|
55
|
+
export declare const Badge: import("react").ForwardRefExoticComponent<BadgeProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
56
|
+
export interface SpinnerProps extends Omit<HTMLAttributes<HTMLSpanElement>, "children" | "role" | "aria-label" | "aria-hidden"> {
|
|
57
|
+
size?: ContentSize;
|
|
58
|
+
label?: string;
|
|
59
|
+
decorative?: boolean;
|
|
60
|
+
}
|
|
61
|
+
/** @since 0.2.4 */
|
|
62
|
+
export declare const Spinner: import("react").ForwardRefExoticComponent<SpinnerProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
63
|
+
export interface SkeletonProps extends Omit<HTMLAttributes<HTMLSpanElement>, "children" | "role" | "tabIndex" | "aria-label" | "aria-hidden"> {
|
|
64
|
+
shape?: "text" | "rounded" | "circle";
|
|
65
|
+
width?: CSSProperties["width"];
|
|
66
|
+
height?: CSSProperties["height"];
|
|
67
|
+
animate?: boolean;
|
|
68
|
+
}
|
|
69
|
+
/** @since 0.2.4 */
|
|
70
|
+
export declare const Skeleton: import("react").ForwardRefExoticComponent<SkeletonProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
71
|
+
export interface AvatarProps extends Omit<HTMLAttributes<HTMLSpanElement>, "children" | "role" | "aria-label" | "aria-hidden"> {
|
|
72
|
+
name: string;
|
|
73
|
+
src?: string;
|
|
74
|
+
fallback?: string;
|
|
75
|
+
size?: ContentSize;
|
|
76
|
+
shape?: "circle" | "rounded";
|
|
77
|
+
decorative?: boolean;
|
|
78
|
+
}
|
|
79
|
+
/** @since 0.2.4 */
|
|
80
|
+
export declare const Avatar: import("react").ForwardRefExoticComponent<AvatarProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
81
|
+
export interface ProgressProps extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "role"> {
|
|
82
|
+
label: string;
|
|
83
|
+
value?: number;
|
|
84
|
+
max?: number;
|
|
85
|
+
valueText?: string;
|
|
86
|
+
size?: ContentSize;
|
|
87
|
+
tone?: SemanticTone;
|
|
88
|
+
hideLabel?: boolean;
|
|
89
|
+
}
|
|
90
|
+
/** @since 0.2.4 */
|
|
91
|
+
export declare const Progress: import("react").ForwardRefExoticComponent<ProgressProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
92
|
+
export interface MeterProps extends Omit<ProgressProps, "value"> {
|
|
93
|
+
value: number;
|
|
94
|
+
min?: number;
|
|
95
|
+
}
|
|
96
|
+
/** @since 0.2.4 */
|
|
97
|
+
export declare const Meter: import("react").ForwardRefExoticComponent<MeterProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
98
|
+
export interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>, "title" | "role" | "aria-live"> {
|
|
99
|
+
title?: string;
|
|
100
|
+
tone?: "neutral" | FieldStatus;
|
|
101
|
+
icon?: ReactNode;
|
|
102
|
+
announcement?: "off" | "polite" | "assertive";
|
|
103
|
+
}
|
|
104
|
+
/** @since 0.2.4 */
|
|
105
|
+
export declare const Alert: import("react").ForwardRefExoticComponent<AlertProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
10
106
|
export interface TabItem {
|
|
11
107
|
value: string;
|
|
12
108
|
label: string;
|
|
@@ -54,6 +150,35 @@ export declare const Pagination: import("react").ForwardRefExoticComponent<Pagin
|
|
|
54
150
|
export interface OverlayTriggerProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
55
151
|
ref: RefCallback<HTMLButtonElement>;
|
|
56
152
|
}
|
|
153
|
+
export interface MenuActionItem {
|
|
154
|
+
id: string;
|
|
155
|
+
type?: "item";
|
|
156
|
+
label: string;
|
|
157
|
+
icon?: ReactNode;
|
|
158
|
+
shortcut?: string;
|
|
159
|
+
disabled?: boolean;
|
|
160
|
+
tone?: "default" | "danger";
|
|
161
|
+
}
|
|
162
|
+
export interface MenuSeparator {
|
|
163
|
+
id: string;
|
|
164
|
+
type: "separator";
|
|
165
|
+
}
|
|
166
|
+
export type MenuItem = MenuActionItem | MenuSeparator;
|
|
167
|
+
export interface MenuProps extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "role"> {
|
|
168
|
+
label: string;
|
|
169
|
+
trigger: (props: OverlayTriggerProps) => ReactNode;
|
|
170
|
+
items: readonly MenuItem[];
|
|
171
|
+
onAction?: (id: string) => void;
|
|
172
|
+
open?: boolean;
|
|
173
|
+
defaultOpen?: boolean;
|
|
174
|
+
onOpenChange?: (open: boolean) => void;
|
|
175
|
+
disabled?: boolean;
|
|
176
|
+
side?: "top" | "bottom" | "left" | "right";
|
|
177
|
+
align?: "start" | "center" | "end";
|
|
178
|
+
controlSize?: "sm" | "md" | "lg" | "xl";
|
|
179
|
+
}
|
|
180
|
+
/** @since 0.2.4 */
|
|
181
|
+
export declare const Menu: import("react").ForwardRefExoticComponent<MenuProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
57
182
|
export interface TooltipProps extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "content" | "title" | "role"> {
|
|
58
183
|
content: string;
|
|
59
184
|
trigger: (props: OverlayTriggerProps) => ReactNode;
|
|
@@ -183,7 +308,10 @@ export declare const Select: import("react").ForwardRefExoticComponent<SelectPro
|
|
|
183
308
|
export interface ChoiceProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "size"> {
|
|
184
309
|
label: ReactNode;
|
|
185
310
|
}
|
|
186
|
-
export
|
|
311
|
+
export interface CheckboxProps extends ChoiceProps {
|
|
312
|
+
indeterminate?: boolean;
|
|
313
|
+
}
|
|
314
|
+
export declare const Checkbox: import("react").ForwardRefExoticComponent<CheckboxProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
187
315
|
export declare const Radio: import("react").ForwardRefExoticComponent<ChoiceProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
188
316
|
export declare const Switch: import("react").ForwardRefExoticComponent<ChoiceProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
189
317
|
export interface LabelProps extends LabelHTMLAttributes<HTMLLabelElement> {
|
|
@@ -288,6 +416,66 @@ export interface SurfaceProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
288
416
|
padding?: Space;
|
|
289
417
|
}
|
|
290
418
|
export declare const Surface: import("react").ForwardRefExoticComponent<SurfaceProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
419
|
+
export interface ContainerProps extends HTMLAttributes<HTMLDivElement> {
|
|
420
|
+
size?: "sm" | "md" | "lg" | "full";
|
|
421
|
+
gutter?: Space;
|
|
422
|
+
}
|
|
423
|
+
/** Centered content with logical gutters; max width includes padding. @since 0.2.4 */
|
|
424
|
+
export declare const Container: import("react").ForwardRefExoticComponent<ContainerProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
425
|
+
export interface GridProps extends HTMLAttributes<HTMLDivElement> {
|
|
426
|
+
columns?: 1 | 2 | 3 | 4 | 6 | 12;
|
|
427
|
+
minItemWidth?: string;
|
|
428
|
+
gap?: Space;
|
|
429
|
+
}
|
|
430
|
+
/** Auto-fit by default; explicit columns retain their count at every width. @since 0.2.4 */
|
|
431
|
+
export declare const Grid: import("react").ForwardRefExoticComponent<GridProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
432
|
+
export interface VisuallyHiddenProps extends HTMLAttributes<HTMLElement> {
|
|
433
|
+
as?: "span" | "div";
|
|
434
|
+
focusable?: boolean;
|
|
435
|
+
}
|
|
436
|
+
/** Nonvisual content, with optional reveal when a descendant receives focus. @since 0.2.4 */
|
|
437
|
+
export declare const VisuallyHidden: import("react").ForwardRefExoticComponent<VisuallyHiddenProps & import("react").RefAttributes<HTMLElement>>;
|
|
438
|
+
export interface AspectRatioProps extends HTMLAttributes<HTMLDivElement> {
|
|
439
|
+
ratio?: number;
|
|
440
|
+
}
|
|
441
|
+
/** Reserve media geometry. Child content may overflow rather than being clipped. @since 0.2.4 */
|
|
442
|
+
export declare const AspectRatio: import("react").ForwardRefExoticComponent<AspectRatioProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
443
|
+
export interface ImageProps extends Omit<ImgHTMLAttributes<HTMLImageElement>, "alt"> {
|
|
444
|
+
alt: string;
|
|
445
|
+
fit?: "cover" | "contain";
|
|
446
|
+
}
|
|
447
|
+
/** Native image semantics, explicit alternative text and bounded media fitting. @since 0.2.4 */
|
|
448
|
+
export declare const Image: import("react").ForwardRefExoticComponent<ImageProps & import("react").RefAttributes<HTMLImageElement>>;
|
|
449
|
+
export interface ListProps extends Omit<HTMLAttributes<HTMLUListElement | HTMLOListElement>, "role"> {
|
|
450
|
+
ordered?: boolean;
|
|
451
|
+
start?: number;
|
|
452
|
+
reversed?: boolean;
|
|
453
|
+
marker?: boolean;
|
|
454
|
+
gap?: Space;
|
|
455
|
+
}
|
|
456
|
+
/** Native list items supplied by the host; hidden markers retain list semantics. @since 0.2.4 */
|
|
457
|
+
export declare const List: import("react").ForwardRefExoticComponent<ListProps & import("react").RefAttributes<HTMLOListElement | HTMLUListElement>>;
|
|
458
|
+
export interface EmptyStateProps extends Omit<HTMLAttributes<HTMLDivElement>, "title" | "children"> {
|
|
459
|
+
title: string;
|
|
460
|
+
description?: ReactNode;
|
|
461
|
+
icon?: ReactNode;
|
|
462
|
+
actions?: ReactNode;
|
|
463
|
+
headingLevel?: 2 | 3 | 4 | 5 | 6;
|
|
464
|
+
density?: "compact" | "comfortable";
|
|
465
|
+
}
|
|
466
|
+
/** Static empty content, not loading, an error boundary or a live announcement. @since 0.2.4 */
|
|
467
|
+
export declare const EmptyState: import("react").ForwardRefExoticComponent<EmptyStateProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
468
|
+
export interface CardProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
469
|
+
title?: ReactNode;
|
|
470
|
+
description?: ReactNode;
|
|
471
|
+
actions?: ReactNode;
|
|
472
|
+
footer?: ReactNode;
|
|
473
|
+
headingLevel?: 2 | 3 | 4 | 5 | 6;
|
|
474
|
+
density?: "compact" | "comfortable";
|
|
475
|
+
elevation?: "default" | "raised";
|
|
476
|
+
}
|
|
477
|
+
/** A structured content surface, not an interactive wrapper. @since 0.2.4 */
|
|
478
|
+
export declare const Card: import("react").ForwardRefExoticComponent<CardProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
291
479
|
export interface IconSlotProps extends HTMLAttributes<HTMLSpanElement> {
|
|
292
480
|
size?: ControlSize;
|
|
293
481
|
label?: string;
|
|
@@ -301,6 +489,7 @@ export declare const IconButton: import("react").ForwardRefExoticComponent<IconB
|
|
|
301
489
|
export declare const Divider: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLHRElement> & import("react").RefAttributes<HTMLHRElement>>;
|
|
302
490
|
export interface CodeSnippetProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
|
|
303
491
|
code: string;
|
|
492
|
+
codeDirection?: "ltr" | "rtl" | "auto";
|
|
304
493
|
action?: ReactNode;
|
|
305
494
|
}
|
|
306
495
|
/** Selectable code with an optional host-owned action; no clipboard side effects. */
|