@exsto/ds 0.0.1-rc.5 → 0.0.1-rc.6
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/index.js +179 -114
- package/dist/index.js.map +1 -1
- package/dist/styles.css +69 -58
- package/dist/ui/src/components/edyn/date-range-picker/date-range-picker.d.ts +7 -1
- package/dist/ui/src/components/edyn/multi-select/multi-select.d.ts +10 -2
- package/dist/ui/src/components/ui/progress/progress.d.ts +38 -4
- package/package.json +1 -1
package/dist/styles.css
CHANGED
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
@supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
|
|
4
4
|
:root, :host {
|
|
5
5
|
--shimmer-angle: 20deg;
|
|
6
|
+
--scroll-bar-size: 8px;
|
|
7
|
+
--scroll-bar-gap: 0px;
|
|
8
|
+
--scroll-bar-start: 0px;
|
|
6
9
|
}
|
|
7
10
|
|
|
8
11
|
*, :before, :after, ::backdrop {
|
|
@@ -758,14 +761,26 @@
|
|
|
758
761
|
margin-block: auto;
|
|
759
762
|
}
|
|
760
763
|
|
|
764
|
+
.ms-\(--scroll-bar-gap\) {
|
|
765
|
+
margin-inline-start: var(--scroll-bar-gap);
|
|
766
|
+
}
|
|
767
|
+
|
|
761
768
|
.ms-auto {
|
|
762
769
|
margin-inline-start: auto;
|
|
763
770
|
}
|
|
764
771
|
|
|
772
|
+
.me-\(--scroll-bar-gap\) {
|
|
773
|
+
margin-inline-end: var(--scroll-bar-gap);
|
|
774
|
+
}
|
|
775
|
+
|
|
765
776
|
.-mt-4 {
|
|
766
777
|
margin-top: calc(var(--spacing) * -4);
|
|
767
778
|
}
|
|
768
779
|
|
|
780
|
+
.mt-\(--scroll-bar-offset-top\) {
|
|
781
|
+
margin-top: var(--scroll-bar-offset-top);
|
|
782
|
+
}
|
|
783
|
+
|
|
769
784
|
.mt-0\.5 {
|
|
770
785
|
margin-top: calc(var(--spacing) * .5);
|
|
771
786
|
}
|
|
@@ -786,6 +801,10 @@
|
|
|
786
801
|
margin-bottom: calc(var(--spacing) * -4);
|
|
787
802
|
}
|
|
788
803
|
|
|
804
|
+
.mb-\(--scroll-bar-gap\) {
|
|
805
|
+
margin-bottom: var(--scroll-bar-gap);
|
|
806
|
+
}
|
|
807
|
+
|
|
789
808
|
.mb-2 {
|
|
790
809
|
margin-bottom: calc(var(--spacing) * 2);
|
|
791
810
|
}
|
|
@@ -975,10 +994,22 @@
|
|
|
975
994
|
height: var(--positioner-height);
|
|
976
995
|
}
|
|
977
996
|
|
|
997
|
+
.h-\(--scroll-bar-length\) {
|
|
998
|
+
height: var(--scroll-bar-length);
|
|
999
|
+
}
|
|
1000
|
+
|
|
1001
|
+
.h-\(--scroll-bar-size\) {
|
|
1002
|
+
height: var(--scroll-bar-size);
|
|
1003
|
+
}
|
|
1004
|
+
|
|
978
1005
|
.h-0\.5 {
|
|
979
1006
|
height: calc(var(--spacing) * .5);
|
|
980
1007
|
}
|
|
981
1008
|
|
|
1009
|
+
.h-1 {
|
|
1010
|
+
height: var(--spacing);
|
|
1011
|
+
}
|
|
1012
|
+
|
|
982
1013
|
.h-1\.5 {
|
|
983
1014
|
height: calc(var(--spacing) * 1.5);
|
|
984
1015
|
}
|
|
@@ -1123,6 +1154,10 @@
|
|
|
1123
1154
|
width: var(--positioner-width);
|
|
1124
1155
|
}
|
|
1125
1156
|
|
|
1157
|
+
.w-\(--scroll-bar-size\) {
|
|
1158
|
+
width: var(--scroll-bar-size);
|
|
1159
|
+
}
|
|
1160
|
+
|
|
1126
1161
|
.w-\(--sidebar-width\) {
|
|
1127
1162
|
width: var(--sidebar-width);
|
|
1128
1163
|
}
|
|
@@ -1498,6 +1533,10 @@
|
|
|
1498
1533
|
touch-action: none;
|
|
1499
1534
|
}
|
|
1500
1535
|
|
|
1536
|
+
.resize {
|
|
1537
|
+
resize: both;
|
|
1538
|
+
}
|
|
1539
|
+
|
|
1501
1540
|
.resize-none {
|
|
1502
1541
|
resize: none;
|
|
1503
1542
|
}
|
|
@@ -1942,16 +1981,6 @@
|
|
|
1942
1981
|
}
|
|
1943
1982
|
}
|
|
1944
1983
|
|
|
1945
|
-
.bg-destructive\/20 {
|
|
1946
|
-
background-color: var(--destructive);
|
|
1947
|
-
}
|
|
1948
|
-
|
|
1949
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1950
|
-
.bg-destructive\/20 {
|
|
1951
|
-
background-color: color-mix(in oklab, var(--destructive) 20%, transparent);
|
|
1952
|
-
}
|
|
1953
|
-
}
|
|
1954
|
-
|
|
1955
1984
|
.bg-foreground {
|
|
1956
1985
|
background-color: var(--foreground);
|
|
1957
1986
|
}
|
|
@@ -1970,16 +1999,6 @@
|
|
|
1970
1999
|
}
|
|
1971
2000
|
}
|
|
1972
2001
|
|
|
1973
|
-
.bg-info\/20 {
|
|
1974
|
-
background-color: var(--info);
|
|
1975
|
-
}
|
|
1976
|
-
|
|
1977
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1978
|
-
.bg-info\/20 {
|
|
1979
|
-
background-color: color-mix(in oklab, var(--info) 20%, transparent);
|
|
1980
|
-
}
|
|
1981
|
-
}
|
|
1982
|
-
|
|
1983
2002
|
.bg-input\/30 {
|
|
1984
2003
|
background-color: var(--input);
|
|
1985
2004
|
}
|
|
@@ -2030,16 +2049,6 @@
|
|
|
2030
2049
|
background-color: var(--primary-foreground);
|
|
2031
2050
|
}
|
|
2032
2051
|
|
|
2033
|
-
.bg-primary\/20 {
|
|
2034
|
-
background-color: var(--primary);
|
|
2035
|
-
}
|
|
2036
|
-
|
|
2037
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
2038
|
-
.bg-primary\/20 {
|
|
2039
|
-
background-color: color-mix(in oklab, var(--primary) 20%, transparent);
|
|
2040
|
-
}
|
|
2041
|
-
}
|
|
2042
|
-
|
|
2043
2052
|
.bg-secondary {
|
|
2044
2053
|
background-color: var(--secondary);
|
|
2045
2054
|
}
|
|
@@ -2052,10 +2061,6 @@
|
|
|
2052
2061
|
background-color: var(--sidebar-border);
|
|
2053
2062
|
}
|
|
2054
2063
|
|
|
2055
|
-
.bg-success {
|
|
2056
|
-
background-color: var(--success);
|
|
2057
|
-
}
|
|
2058
|
-
|
|
2059
2064
|
.bg-success-ring\/40 {
|
|
2060
2065
|
background-color: var(--success-ring);
|
|
2061
2066
|
}
|
|
@@ -2066,24 +2071,10 @@
|
|
|
2066
2071
|
}
|
|
2067
2072
|
}
|
|
2068
2073
|
|
|
2069
|
-
.bg-success\/20 {
|
|
2070
|
-
background-color: var(--success);
|
|
2071
|
-
}
|
|
2072
|
-
|
|
2073
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
2074
|
-
.bg-success\/20 {
|
|
2075
|
-
background-color: color-mix(in oklab, var(--success) 20%, transparent);
|
|
2076
|
-
}
|
|
2077
|
-
}
|
|
2078
|
-
|
|
2079
2074
|
.bg-transparent {
|
|
2080
2075
|
background-color: #0000;
|
|
2081
2076
|
}
|
|
2082
2077
|
|
|
2083
|
-
.bg-warning {
|
|
2084
|
-
background-color: var(--warning);
|
|
2085
|
-
}
|
|
2086
|
-
|
|
2087
2078
|
.bg-warning-ring\/40 {
|
|
2088
2079
|
background-color: var(--warning-ring);
|
|
2089
2080
|
}
|
|
@@ -2094,16 +2085,6 @@
|
|
|
2094
2085
|
}
|
|
2095
2086
|
}
|
|
2096
2087
|
|
|
2097
|
-
.bg-warning\/20 {
|
|
2098
|
-
background-color: var(--warning);
|
|
2099
|
-
}
|
|
2100
|
-
|
|
2101
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
2102
|
-
.bg-warning\/20 {
|
|
2103
|
-
background-color: color-mix(in oklab, var(--warning) 20%, transparent);
|
|
2104
|
-
}
|
|
2105
|
-
}
|
|
2106
|
-
|
|
2107
2088
|
.bg-gradient-to-t {
|
|
2108
2089
|
--tw-gradient-position: to top in oklab;
|
|
2109
2090
|
background-image: linear-gradient(var(--tw-gradient-stops));
|
|
@@ -7294,6 +7275,29 @@
|
|
|
7294
7275
|
}
|
|
7295
7276
|
}
|
|
7296
7277
|
|
|
7278
|
+
@property --scroll-bar-size {
|
|
7279
|
+
syntax: "<length>";
|
|
7280
|
+
inherits: true;
|
|
7281
|
+
initial-value: 8px;
|
|
7282
|
+
}
|
|
7283
|
+
|
|
7284
|
+
@property --scroll-bar-gap {
|
|
7285
|
+
syntax: "<length>";
|
|
7286
|
+
inherits: true;
|
|
7287
|
+
initial-value: 0;
|
|
7288
|
+
}
|
|
7289
|
+
|
|
7290
|
+
@property --scroll-bar-start {
|
|
7291
|
+
syntax: "<length>";
|
|
7292
|
+
inherits: true;
|
|
7293
|
+
initial-value: 0;
|
|
7294
|
+
}
|
|
7295
|
+
|
|
7296
|
+
[data-slot="scroll-area-scrollbar"] {
|
|
7297
|
+
--scroll-bar-offset-top: calc(var(--scroll-bar-gap) + var(--scroll-bar-start));
|
|
7298
|
+
--scroll-bar-length: calc(100% - var(--scroll-bar-gap) * 2 - var(--scroll-bar-start));
|
|
7299
|
+
}
|
|
7300
|
+
|
|
7297
7301
|
:where(:root) {
|
|
7298
7302
|
--focus-ring: var(--ring);
|
|
7299
7303
|
}
|
|
@@ -7330,6 +7334,9 @@
|
|
|
7330
7334
|
--motion-fade-in: .16s;
|
|
7331
7335
|
--motion-fade-delay: 40ms;
|
|
7332
7336
|
--motion-fade-out: .12s;
|
|
7337
|
+
}
|
|
7338
|
+
|
|
7339
|
+
:where(:root) {
|
|
7333
7340
|
--ease-expand: var(--ease-out, cubic-bezier(0, 0, .2, 1));
|
|
7334
7341
|
}
|
|
7335
7342
|
|
|
@@ -7379,6 +7386,10 @@
|
|
|
7379
7386
|
transition-duration: var(--motion-expand);
|
|
7380
7387
|
}
|
|
7381
7388
|
|
|
7389
|
+
[data-slot="progress"][aria-hidden="true"] > span[role="presentation"] {
|
|
7390
|
+
display: none;
|
|
7391
|
+
}
|
|
7392
|
+
|
|
7382
7393
|
@property --tw-translate-x {
|
|
7383
7394
|
syntax: "*";
|
|
7384
7395
|
inherits: false;
|
|
@@ -10,6 +10,12 @@ export interface IDateRangePickerProps {
|
|
|
10
10
|
value: TDateRange;
|
|
11
11
|
onValueChange: (value: TDateRange) => void;
|
|
12
12
|
placeholder?: string;
|
|
13
|
+
/**
|
|
14
|
+
* What the trigger says once a range is set. `range` (default) writes the ends; `label` keeps the label, so a
|
|
15
|
+
* range the page shows elsewhere (as a removable chip, say) is not repeated here. In both, the trigger carries
|
|
16
|
+
* `data-set` while either end is set, for a look of its own.
|
|
17
|
+
*/
|
|
18
|
+
summary?: 'range' | 'label';
|
|
13
19
|
/** How the ends are written on the trigger (BCP 47); en-GB reads 05 Mar 2026. */
|
|
14
20
|
locale?: string;
|
|
15
21
|
/** An accessible name for the trigger, when there is no visible label to point at. */
|
|
@@ -17,4 +23,4 @@ export interface IDateRangePickerProps {
|
|
|
17
23
|
className?: string;
|
|
18
24
|
}
|
|
19
25
|
/** A range of calendar days, either end optional; two months side by side, one on a phone. */
|
|
20
|
-
export declare const DateRangePicker: ({ id, value, onValueChange, placeholder, locale, "aria-label": ariaLabel, className, }: IDateRangePickerProps) => import('react').JSX.Element;
|
|
26
|
+
export declare const DateRangePicker: ({ id, value, onValueChange, placeholder, locale, summary, "aria-label": ariaLabel, className, }: IDateRangePickerProps) => import('react').JSX.Element;
|
|
@@ -30,6 +30,12 @@ export interface IMultiSelectProps {
|
|
|
30
30
|
options: readonly TMultiSelectOption[];
|
|
31
31
|
value: readonly string[];
|
|
32
32
|
onValueChange: (value: string[]) => void;
|
|
33
|
+
/**
|
|
34
|
+
* What the trigger says once something is chosen. `selection` (default) names the one chosen or counts several;
|
|
35
|
+
* `label` keeps the label and only counts, so a value the page shows elsewhere (as a removable chip, say) is
|
|
36
|
+
* not repeated here: nothing chosen reads `placeholder`, anything chosen reads `labels.selectedCount(n)`.
|
|
37
|
+
*/
|
|
38
|
+
summary?: 'selection' | 'label';
|
|
33
39
|
/** For a Label's htmlFor. */
|
|
34
40
|
id?: string;
|
|
35
41
|
'aria-label'?: string;
|
|
@@ -73,7 +79,9 @@ export interface IMultiSelectProps {
|
|
|
73
79
|
*/
|
|
74
80
|
export declare const resolveChosen: (value: readonly string[], options: readonly TMultiSelectOption[], selectedOptions?: readonly TMultiSelectOption[]) => TMultiSelectOption[];
|
|
75
81
|
/** What the trigger says: the placeholder, the one picked, or a count. */
|
|
76
|
-
export declare const summarize: (chosen: readonly TMultiSelectOption[], placeholder: string, labels: IMultiSelectLabels) => string;
|
|
82
|
+
export declare const summarize: (chosen: readonly TMultiSelectOption[], placeholder: string, labels: IMultiSelectLabels, summary?: "selection" | "label") => string;
|
|
83
|
+
/** Every chosen name, for a tooltip on a trigger whose text is cut. With `label` the names are not shown, so it is the text itself. */
|
|
84
|
+
export declare const fullSelection: (chosen: readonly TMultiSelectOption[], placeholder: string, labels: IMultiSelectLabels, summary?: "selection" | "label") => string;
|
|
77
85
|
/**
|
|
78
86
|
* A choice of several from a list: a trigger shaped like a Select that says what is picked
|
|
79
87
|
* (the placeholder, the one picked, or a count), and a popup with a search field and checkbox
|
|
@@ -85,4 +93,4 @@ export declare const summarize: (chosen: readonly TMultiSelectOption[], placehol
|
|
|
85
93
|
* server: the caller fetches the options for the typed text, and says when they are loading,
|
|
86
94
|
* failed, or have another page.
|
|
87
95
|
*/
|
|
88
|
-
export declare const MultiSelect: ({ placeholder, searchPlaceholder, options, value, onValueChange, id, disabled, className, onSearchChange, searchDelay, selectedOptions, loading, error, onRetry, hasMore, onLoadMore, loadingMore, labels: labelOverrides, ...rest }: IMultiSelectProps) => import('react').JSX.Element;
|
|
96
|
+
export declare const MultiSelect: ({ placeholder, searchPlaceholder, options, value, onValueChange, id, disabled, className, onSearchChange, searchDelay, selectedOptions, loading, error, onRetry, hasMore, onLoadMore, loadingMore, labels: labelOverrides, summary, ...rest }: IMultiSelectProps) => import('react').JSX.Element;
|
|
@@ -1,13 +1,47 @@
|
|
|
1
1
|
import { Progress as ProgressPrimitive } from '@base-ui/react/progress';
|
|
2
2
|
import { VariantProps } from 'class-variance-authority';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
/**
|
|
4
|
+
* The tones: a closed set of semantic colours rather than a class string, so a bar cannot carry a
|
|
5
|
+
* colour the theme does not define and dark mode and a re-theme keep working. Each is the theme token
|
|
6
|
+
* the fill uses; the track is a 20% tint of the same token.
|
|
7
|
+
*/
|
|
8
|
+
declare const TONE_TOKEN: {
|
|
9
|
+
readonly default: "var(--primary)";
|
|
10
|
+
readonly info: "var(--info)";
|
|
11
|
+
readonly success: "var(--success)";
|
|
12
|
+
readonly warning: "var(--warning)";
|
|
13
|
+
readonly destructive: "var(--destructive)";
|
|
14
|
+
};
|
|
15
|
+
export type TProgressTone = keyof typeof TONE_TOKEN;
|
|
16
|
+
/**
|
|
17
|
+
* Colours an app can set without a class string. --progress-color replaces the fill (any colour, such as an
|
|
18
|
+
* app's own status tokens); --progress-track replaces the track, which does not follow the fill: an app
|
|
19
|
+
* that wants a neutral track sets it to var(--muted). Both are read where the bar is, so they follow the
|
|
20
|
+
* theme and can be set on :root or on any ancestor.
|
|
21
|
+
*/
|
|
22
|
+
export declare const progressFill: (tone: TProgressTone) => string;
|
|
23
|
+
export declare const progressTrack: (tone: TProgressTone) => string;
|
|
24
|
+
/**
|
|
25
|
+
* How the fill eases its width. The defaults are the 300ms ease-in-out it always had; an app retunes them
|
|
26
|
+
* with --progress-duration and --progress-ease, or turns the easing off with `animated={false}` when the
|
|
27
|
+
* number it shows is itself animated and the bar is driven from the same clock.
|
|
28
|
+
*/
|
|
29
|
+
export declare const PROGRESS_DURATION = "var(--progress-duration, 300ms)";
|
|
30
|
+
export declare const PROGRESS_EASE = "var(--progress-ease, cubic-bezier(0.4, 0, 0.2, 1))";
|
|
31
|
+
declare const progressTrackVariants: (props?: ({
|
|
32
|
+
size?: "default" | "sm" | null | undefined;
|
|
5
33
|
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
6
|
-
export type TProgressTone = NonNullable<VariantProps<typeof progressIndicatorVariants>['tone']>;
|
|
7
34
|
export interface IProgressProps extends Omit<ProgressPrimitive.Root.Props, 'value'> {
|
|
8
35
|
value?: number | null;
|
|
9
36
|
/** The bar's colour: a share of a total reads as `warning` when nearly used up, `success` when done. */
|
|
10
37
|
tone?: TProgressTone;
|
|
38
|
+
/** 4px (`sm`) or 8px (default) tall. */
|
|
39
|
+
size?: VariantProps<typeof progressTrackVariants>['size'];
|
|
40
|
+
/**
|
|
41
|
+
* Whether the fill eases when `value` changes. Turn it off when the value already moves smoothly
|
|
42
|
+
* (driven from an animated number's clock), or the bar eases a second time behind it.
|
|
43
|
+
*/
|
|
44
|
+
animated?: boolean;
|
|
11
45
|
}
|
|
12
|
-
export declare const Progress: ({ value, tone, className, ...props }: IProgressProps) => import('react').JSX.Element;
|
|
46
|
+
export declare const Progress: ({ value, tone, size, animated, className, ...props }: IProgressProps) => import('react').JSX.Element;
|
|
13
47
|
export {};
|