@geomak/ui 5.1.0 → 5.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +694 -407
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +285 -28
- package/dist/index.d.ts +285 -28
- package/dist/index.js +691 -408
- package/dist/index.js.map +1 -1
- package/dist/styles.css +102 -48
- package/package.json +2 -1
package/dist/index.d.ts
CHANGED
|
@@ -1384,6 +1384,16 @@ interface TableProps<T extends Record<string, any> = Record<string, any>> {
|
|
|
1384
1384
|
hasSearch?: boolean;
|
|
1385
1385
|
footer?: React$1.ReactNode;
|
|
1386
1386
|
header?: React$1.ReactNode;
|
|
1387
|
+
/**
|
|
1388
|
+
* When `true`, the body renders skeleton rows (one per column with the
|
|
1389
|
+
* shared shimmer animation) instead of data. Use during initial data
|
|
1390
|
+
* fetch, server-side pagination transitions, or any time the dataset is
|
|
1391
|
+
* not yet ready. Combine with `pagination.serverSide` for the canonical
|
|
1392
|
+
* "loading next page" pattern.
|
|
1393
|
+
*/
|
|
1394
|
+
loading?: boolean;
|
|
1395
|
+
/** Number of skeleton rows to render when `loading` is true. Default `8`. */
|
|
1396
|
+
loadingRowCount?: number;
|
|
1387
1397
|
}
|
|
1388
1398
|
/** ─────────────────── main component ─────────────────── */
|
|
1389
1399
|
/**
|
|
@@ -1426,7 +1436,7 @@ interface TableProps<T extends Record<string, any> = Record<string, any>> {
|
|
|
1426
1436
|
* />
|
|
1427
1437
|
* ```
|
|
1428
1438
|
*/
|
|
1429
|
-
declare function Table<T extends Record<string, any> = Record<string, any>>({ columns, rows, getRowKey, pagination, expandRow, hasSearch, footer, header, }: TableProps<T>): react_jsx_runtime.JSX.Element;
|
|
1439
|
+
declare function Table<T extends Record<string, any> = Record<string, any>>({ columns, rows, getRowKey, pagination, expandRow, hasSearch, footer, header, loading, loadingRowCount, }: TableProps<T>): react_jsx_runtime.JSX.Element;
|
|
1430
1440
|
|
|
1431
1441
|
interface ThemeSwitchProps {
|
|
1432
1442
|
checked: boolean;
|
|
@@ -1828,6 +1838,76 @@ interface ButtonProps {
|
|
|
1828
1838
|
*/
|
|
1829
1839
|
declare function Button({ content, variant, size, buttonType, loading, disabled, style, icon, onClick, }: ButtonProps): react_jsx_runtime.JSX.Element;
|
|
1830
1840
|
|
|
1841
|
+
/**
|
|
1842
|
+
* Shared field foundation for all oxygen-ui inputs.
|
|
1843
|
+
*
|
|
1844
|
+
* Centralises the things every input must agree on:
|
|
1845
|
+
* - the **size scale** (sm / md / lg) → control height + text size + padding
|
|
1846
|
+
* - the **refined focus treatment** — a crisp 1px accent border plus a soft
|
|
1847
|
+
* 3px low-opacity halo (NOT a heavy solid ring band)
|
|
1848
|
+
* - the **resting / hover / error / disabled** border + background states
|
|
1849
|
+
* - a **`<Field>` wrapper** handling label, error region, layout
|
|
1850
|
+
* (horizontal / vertical) and `aria` linkage consistently
|
|
1851
|
+
*
|
|
1852
|
+
* All values map to design-system tokens (control heights, semantic colours,
|
|
1853
|
+
* radii) so a consumer's ThemeProvider override flows straight through.
|
|
1854
|
+
*/
|
|
1855
|
+
type FieldSize = 'sm' | 'md' | 'lg';
|
|
1856
|
+
interface FieldShellOptions {
|
|
1857
|
+
size?: FieldSize;
|
|
1858
|
+
hasError?: boolean;
|
|
1859
|
+
disabled?: boolean;
|
|
1860
|
+
/**
|
|
1861
|
+
* `true` for wrapper elements that hold a real `<input>` inside
|
|
1862
|
+
* (focus-within), `false` for elements that are themselves focusable
|
|
1863
|
+
* like `<button>` triggers (focus-visible). Default `false`.
|
|
1864
|
+
*/
|
|
1865
|
+
focusWithin?: boolean;
|
|
1866
|
+
/** Append height/padding utilities (for single-line inputs). Default `true`. */
|
|
1867
|
+
sized?: boolean;
|
|
1868
|
+
}
|
|
1869
|
+
/**
|
|
1870
|
+
* Compose the className for an input's outer "shell" — the bordered, rounded
|
|
1871
|
+
* box that carries the focus ring. Apply to the `<input>` directly, or to a
|
|
1872
|
+
* wrapper `<div>` that contains an input plus adornments (pass
|
|
1873
|
+
* `focusWithin: true` in that case).
|
|
1874
|
+
*/
|
|
1875
|
+
declare function fieldShell({ size, hasError, disabled, focusWithin, sized, }?: FieldShellOptions): string;
|
|
1876
|
+
interface FieldProps {
|
|
1877
|
+
label?: React$1.ReactNode;
|
|
1878
|
+
/** `id` of the control — links the `<label htmlFor>`. */
|
|
1879
|
+
htmlFor?: string;
|
|
1880
|
+
/** `id` for the error region — pair with `aria-describedby` on the control. */
|
|
1881
|
+
errorId?: string;
|
|
1882
|
+
errorMessage?: React$1.ReactNode;
|
|
1883
|
+
/** Orientation of label vs control. Default `'vertical'`. */
|
|
1884
|
+
layout?: 'horizontal' | 'vertical';
|
|
1885
|
+
/** Show a required asterisk after the label. */
|
|
1886
|
+
required?: boolean;
|
|
1887
|
+
labelStyle?: React$1.CSSProperties;
|
|
1888
|
+
/** Width of the label column in horizontal layout (CSS length). */
|
|
1889
|
+
labelWidth?: string | number;
|
|
1890
|
+
className?: string;
|
|
1891
|
+
/** The control itself (input / trigger / dropzone). */
|
|
1892
|
+
children: React$1.ReactNode;
|
|
1893
|
+
}
|
|
1894
|
+
/**
|
|
1895
|
+
* Layout wrapper shared by every input. Renders:
|
|
1896
|
+
*
|
|
1897
|
+
* ```
|
|
1898
|
+
* vertical: horizontal:
|
|
1899
|
+
* [label] [label] [ control ]
|
|
1900
|
+
* [ control ] [ error message ]
|
|
1901
|
+
* [ error ]
|
|
1902
|
+
* ```
|
|
1903
|
+
*
|
|
1904
|
+
* The error message always sits under the **control only** (never spanning
|
|
1905
|
+
* the label in horizontal layout). Label uses full-contrast foreground +
|
|
1906
|
+
* medium weight so it reads as the anchor, while the input's placeholder is
|
|
1907
|
+
* muted — establishing hierarchy without making the label tiny.
|
|
1908
|
+
*/
|
|
1909
|
+
declare function Field({ label, htmlFor, errorId, errorMessage, layout, required, labelStyle, labelWidth, className, children, }: FieldProps): react_jsx_runtime.JSX.Element;
|
|
1910
|
+
|
|
1831
1911
|
interface TextInputProps {
|
|
1832
1912
|
value?: string;
|
|
1833
1913
|
onChange?: React$1.ChangeEventHandler<HTMLInputElement>;
|
|
@@ -1836,19 +1916,46 @@ interface TextInputProps {
|
|
|
1836
1916
|
htmlFor?: string;
|
|
1837
1917
|
placeholder?: string;
|
|
1838
1918
|
name?: string;
|
|
1919
|
+
/** Native input type. Defaults to `'text'`. */
|
|
1920
|
+
type?: 'text' | 'email' | 'url' | 'tel';
|
|
1839
1921
|
inputStyle?: React$1.CSSProperties;
|
|
1840
1922
|
style?: React$1.CSSProperties;
|
|
1841
|
-
/** Label/input orientation. Defaults to `'
|
|
1923
|
+
/** Label/input orientation. Defaults to `'vertical'`. */
|
|
1842
1924
|
layout?: 'horizontal' | 'vertical';
|
|
1925
|
+
/** Size preset — controls height, padding, and font. Default `'md'`. */
|
|
1926
|
+
size?: FieldSize;
|
|
1843
1927
|
onBlur?: React$1.FocusEventHandler<HTMLInputElement>;
|
|
1844
1928
|
errorMessage?: React$1.ReactNode;
|
|
1845
|
-
|
|
1929
|
+
/** Mark the field required (renders an asterisk after the label). */
|
|
1930
|
+
required?: boolean;
|
|
1931
|
+
/** Optional leading adornment (icon / prefix). */
|
|
1932
|
+
prefix?: React$1.ReactNode;
|
|
1933
|
+
/** Optional trailing adornment (icon / suffix / unit). */
|
|
1934
|
+
suffix?: React$1.ReactNode;
|
|
1846
1935
|
id?: string;
|
|
1847
1936
|
}
|
|
1848
1937
|
/**
|
|
1849
|
-
*
|
|
1938
|
+
* Single-line text input. Full-width by default (responsive) — constrain it
|
|
1939
|
+
* with the parent layout or `style={{ maxWidth }}`. Supports an optional
|
|
1940
|
+
* leading `prefix` and trailing `suffix` adornment (icon, unit, etc.).
|
|
1941
|
+
*
|
|
1942
|
+
* @example
|
|
1943
|
+
* ```tsx
|
|
1944
|
+
* <TextInput label="Vessel name" value={name} onChange={(e) => setName(e.target.value)} />
|
|
1945
|
+
* ```
|
|
1946
|
+
*
|
|
1947
|
+
* @example With adornment + error
|
|
1948
|
+
* ```tsx
|
|
1949
|
+
* <TextInput
|
|
1950
|
+
* label="IMO"
|
|
1951
|
+
* prefix={<HashIcon />}
|
|
1952
|
+
* value={imo}
|
|
1953
|
+
* onChange={onChange}
|
|
1954
|
+
* errorMessage={touched && !valid ? 'Invalid IMO number' : undefined}
|
|
1955
|
+
* />
|
|
1956
|
+
* ```
|
|
1850
1957
|
*/
|
|
1851
|
-
declare function TextInput({ value, onChange, disabled, label, htmlFor, placeholder, name, inputStyle, style, layout, onBlur, errorMessage,
|
|
1958
|
+
declare function TextInput({ value, onChange, disabled, label, htmlFor, placeholder, name, type, inputStyle, style, layout, size, onBlur, errorMessage, required, prefix, suffix, }: TextInputProps): react_jsx_runtime.JSX.Element;
|
|
1852
1959
|
|
|
1853
1960
|
interface NumberInputProps {
|
|
1854
1961
|
/** Step size for the up/down buttons and native arrow-key handling. Default `1`. */
|
|
@@ -1867,9 +1974,12 @@ interface NumberInputProps {
|
|
|
1867
1974
|
htmlFor?: string;
|
|
1868
1975
|
name?: string;
|
|
1869
1976
|
disabled?: boolean;
|
|
1870
|
-
/** Label/input orientation. Defaults to `'
|
|
1977
|
+
/** Label/input orientation. Defaults to `'vertical'`. */
|
|
1871
1978
|
layout?: 'horizontal' | 'vertical';
|
|
1979
|
+
/** Size preset. Default `'md'`. */
|
|
1980
|
+
size?: FieldSize;
|
|
1872
1981
|
errorMessage?: React$1.ReactNode;
|
|
1982
|
+
required?: boolean;
|
|
1873
1983
|
inputStyle?: React$1.CSSProperties;
|
|
1874
1984
|
labelStyle?: React$1.CSSProperties;
|
|
1875
1985
|
placeholder?: string;
|
|
@@ -1912,7 +2022,7 @@ interface NumberInputProps {
|
|
|
1912
2022
|
* <NumberInput label="Tonnage" step={0.25} precision={2} />
|
|
1913
2023
|
* ```
|
|
1914
2024
|
*/
|
|
1915
|
-
declare function NumberInput({ step, value, onChange, label, htmlFor, name, disabled, layout, errorMessage, inputStyle, labelStyle, placeholder, style, min, max, readOnly, precision, }: NumberInputProps): react_jsx_runtime.JSX.Element;
|
|
2025
|
+
declare function NumberInput({ step, value, onChange, label, htmlFor, name, disabled, layout, size, errorMessage, required, inputStyle, labelStyle, placeholder, style, min, max, readOnly, precision, }: NumberInputProps): react_jsx_runtime.JSX.Element;
|
|
1916
2026
|
|
|
1917
2027
|
interface PasswordProps {
|
|
1918
2028
|
value?: string;
|
|
@@ -1924,17 +2034,28 @@ interface PasswordProps {
|
|
|
1924
2034
|
name?: string;
|
|
1925
2035
|
inputStyle?: React$1.CSSProperties;
|
|
1926
2036
|
style?: React$1.CSSProperties;
|
|
1927
|
-
/** Label/input orientation. Defaults to `'
|
|
2037
|
+
/** Label/input orientation. Defaults to `'vertical'`. */
|
|
1928
2038
|
layout?: 'horizontal' | 'vertical';
|
|
2039
|
+
/** Size preset — controls height, padding, and font. Default `'md'`. */
|
|
2040
|
+
size?: FieldSize;
|
|
1929
2041
|
onBlur?: React$1.FocusEventHandler<HTMLInputElement>;
|
|
1930
2042
|
errorMessage?: React$1.ReactNode;
|
|
1931
|
-
|
|
1932
|
-
|
|
2043
|
+
required?: boolean;
|
|
2044
|
+
/** Override the "reveal" (password hidden) icon. */
|
|
2045
|
+
showIcon?: React$1.ReactNode;
|
|
2046
|
+
/** Override the "hide" (password visible) icon. */
|
|
2047
|
+
hideIcon?: React$1.ReactNode;
|
|
1933
2048
|
}
|
|
1934
2049
|
/**
|
|
1935
|
-
* Password input with show/hide toggle.
|
|
2050
|
+
* Password input with a show/hide reveal toggle. Full-width by default.
|
|
2051
|
+
* The reveal/hide icons can be overridden via `showIcon` / `hideIcon`.
|
|
2052
|
+
*
|
|
2053
|
+
* @example
|
|
2054
|
+
* ```tsx
|
|
2055
|
+
* <Password label="Password" value={pw} onChange={(e) => setPw(e.target.value)} />
|
|
2056
|
+
* ```
|
|
1936
2057
|
*/
|
|
1937
|
-
declare function Password({ value, onChange, disabled, label, htmlFor, placeholder, name, inputStyle, style, layout, onBlur, errorMessage,
|
|
2058
|
+
declare function Password({ value, onChange, disabled, label, htmlFor, placeholder, name, inputStyle, style, layout, size, onBlur, errorMessage, required, showIcon, hideIcon, }: PasswordProps): react_jsx_runtime.JSX.Element;
|
|
1938
2059
|
|
|
1939
2060
|
interface SearchInputProps {
|
|
1940
2061
|
value?: string;
|
|
@@ -1948,9 +2069,20 @@ interface SearchInputProps {
|
|
|
1948
2069
|
style?: React$1.CSSProperties;
|
|
1949
2070
|
/** Label/input orientation. Defaults to `'vertical'`. */
|
|
1950
2071
|
layout?: 'horizontal' | 'vertical';
|
|
2072
|
+
/** Size preset. Default `'md'`. */
|
|
2073
|
+
size?: FieldSize;
|
|
2074
|
+
/** Override the leading search icon. */
|
|
2075
|
+
icon?: React$1.ReactNode;
|
|
1951
2076
|
}
|
|
1952
2077
|
/**
|
|
1953
|
-
* Search
|
|
2078
|
+
* Search field with a leading magnifier icon. Uses `type="search"` for the
|
|
2079
|
+
* native clear affordance and a search-friendly mobile keyboard. Full-width
|
|
2080
|
+
* by default. Override the icon via `icon`.
|
|
2081
|
+
*
|
|
2082
|
+
* @example
|
|
2083
|
+
* ```tsx
|
|
2084
|
+
* <SearchInput value={q} onChange={(e) => setQ(e.target.value)} placeholder="Search vessels…" />
|
|
2085
|
+
* ```
|
|
1954
2086
|
*/
|
|
1955
2087
|
declare const SearchInput: React$1.ForwardRefExoticComponent<SearchInputProps & React$1.RefAttributes<HTMLInputElement>>;
|
|
1956
2088
|
|
|
@@ -1990,6 +2122,58 @@ interface CheckboxProps {
|
|
|
1990
2122
|
declare function Checkbox({ checked, value, // legacy alias
|
|
1991
2123
|
onChange, label, name, htmlFor, errorMessage, disabled, }: CheckboxProps): react_jsx_runtime.JSX.Element;
|
|
1992
2124
|
|
|
2125
|
+
interface RadioOption {
|
|
2126
|
+
/** Stable value submitted / reported on change. */
|
|
2127
|
+
value: string;
|
|
2128
|
+
/** Main label text. */
|
|
2129
|
+
label: React$1.ReactNode;
|
|
2130
|
+
/** Optional secondary description rendered under the label. */
|
|
2131
|
+
description?: React$1.ReactNode;
|
|
2132
|
+
/** Disable this option only. */
|
|
2133
|
+
disabled?: boolean;
|
|
2134
|
+
}
|
|
2135
|
+
interface RadioGroupProps {
|
|
2136
|
+
options: RadioOption[];
|
|
2137
|
+
/** Controlled selected value. */
|
|
2138
|
+
value?: string;
|
|
2139
|
+
/** Uncontrolled initial value. */
|
|
2140
|
+
defaultValue?: string;
|
|
2141
|
+
onChange?: (value: string) => void;
|
|
2142
|
+
name?: string;
|
|
2143
|
+
label?: React$1.ReactNode;
|
|
2144
|
+
/** Group orientation. Default `'vertical'`. */
|
|
2145
|
+
orientation?: 'vertical' | 'horizontal';
|
|
2146
|
+
/** Size preset — controls the dot + text size. Default `'md'`. */
|
|
2147
|
+
size?: FieldSize;
|
|
2148
|
+
disabled?: boolean;
|
|
2149
|
+
required?: boolean;
|
|
2150
|
+
errorMessage?: React$1.ReactNode;
|
|
2151
|
+
}
|
|
2152
|
+
/**
|
|
2153
|
+
* Radio group built on `@radix-ui/react-radio-group`. Each option can carry
|
|
2154
|
+
* a `description`, and options can be disabled individually. Radix handles
|
|
2155
|
+
* arrow-key roving focus, `role="radiogroup"`, and selection semantics.
|
|
2156
|
+
*
|
|
2157
|
+
* Form-friendly: pass `name` for native form serialisation, `errorMessage`
|
|
2158
|
+
* for validation, `required` for the asterisk + `aria-required`.
|
|
2159
|
+
*
|
|
2160
|
+
* @example
|
|
2161
|
+
* ```tsx
|
|
2162
|
+
* <RadioGroup
|
|
2163
|
+
* label="Notification frequency"
|
|
2164
|
+
* name="freq"
|
|
2165
|
+
* value={freq}
|
|
2166
|
+
* onChange={setFreq}
|
|
2167
|
+
* options={[
|
|
2168
|
+
* { value: 'realtime', label: 'Real-time', description: 'Notify me immediately' },
|
|
2169
|
+
* { value: 'daily', label: 'Daily digest' },
|
|
2170
|
+
* { value: 'off', label: 'Off', disabled: true },
|
|
2171
|
+
* ]}
|
|
2172
|
+
* />
|
|
2173
|
+
* ```
|
|
2174
|
+
*/
|
|
2175
|
+
declare function RadioGroup({ options, value, defaultValue, onChange, name, label, orientation, size, disabled, required, errorMessage, }: RadioGroupProps): react_jsx_runtime.JSX.Element;
|
|
2176
|
+
|
|
1993
2177
|
interface SwitchInputProps {
|
|
1994
2178
|
checked?: boolean;
|
|
1995
2179
|
onChange?: (e: {
|
|
@@ -2061,6 +2245,8 @@ interface DropdownProps {
|
|
|
2061
2245
|
items?: DropdownItem[];
|
|
2062
2246
|
labelStyle?: React$1.CSSProperties;
|
|
2063
2247
|
placeholder?: string;
|
|
2248
|
+
/** Size preset. Default `'md'`. */
|
|
2249
|
+
size?: FieldSize;
|
|
2064
2250
|
}
|
|
2065
2251
|
/**
|
|
2066
2252
|
* Select / multi-select dropdown powered by Radix Popover.
|
|
@@ -2077,7 +2263,7 @@ interface DropdownProps {
|
|
|
2077
2263
|
* // Multi-select
|
|
2078
2264
|
* <Dropdown isMultiselect label="Fuels" items={fuels} value={form.fuels} onChange={handleChange} />
|
|
2079
2265
|
*/
|
|
2080
|
-
declare function Dropdown({ isMultiselect, hasSearch, label, name, value, onChange, disabled, layout, errorMessage, style, htmlFor, items, labelStyle, placeholder, showSelectedCount, }: DropdownProps): react_jsx_runtime.JSX.Element;
|
|
2266
|
+
declare function Dropdown({ isMultiselect, hasSearch, label, name, value, onChange, disabled, layout, errorMessage, style, htmlFor, items, labelStyle, placeholder, showSelectedCount, size, }: DropdownProps): react_jsx_runtime.JSX.Element;
|
|
2081
2267
|
|
|
2082
2268
|
interface AutoCompleteItem {
|
|
2083
2269
|
key: string;
|
|
@@ -2094,25 +2280,71 @@ interface AutoCompleteProps {
|
|
|
2094
2280
|
style?: React$1.CSSProperties;
|
|
2095
2281
|
/** Label/input orientation. Defaults to `'vertical'`. */
|
|
2096
2282
|
layout?: 'horizontal' | 'vertical';
|
|
2283
|
+
/**
|
|
2284
|
+
* Static list — when provided, the component does its own substring
|
|
2285
|
+
* filtering on `label` and `key`. Mutually exclusive with `onSearch`.
|
|
2286
|
+
*/
|
|
2097
2287
|
items?: AutoCompleteItem[];
|
|
2288
|
+
/**
|
|
2289
|
+
* Async resolver — when provided, `items` is ignored and `onSearch(term)`
|
|
2290
|
+
* is called (debounced) every time the user pauses typing. Its returned
|
|
2291
|
+
* promise drives the option list. The component manages an internal
|
|
2292
|
+
* `loading` state and shows an `xs` LoadingSpinner where the search icon
|
|
2293
|
+
* normally lives while a query is in flight.
|
|
2294
|
+
*/
|
|
2295
|
+
onSearch?: (term: string) => Promise<AutoCompleteItem[]>;
|
|
2296
|
+
/**
|
|
2297
|
+
* Debounce delay (ms) before `onSearch` fires after the user stops
|
|
2298
|
+
* typing. Default `250`. Ignored when `items` is used.
|
|
2299
|
+
*/
|
|
2300
|
+
debounce?: number;
|
|
2098
2301
|
onItemClick?: (value: string) => void;
|
|
2099
2302
|
/** Custom "empty" message */
|
|
2100
2303
|
emptyText?: string;
|
|
2304
|
+
/** Custom "loading" message — shown in async mode while a query is in flight. */
|
|
2305
|
+
loadingText?: string;
|
|
2306
|
+
/** Size preset. Default `'md'`. */
|
|
2307
|
+
size?: FieldSize;
|
|
2308
|
+
/** Override the leading search icon (hidden while loading). */
|
|
2309
|
+
icon?: React$1.ReactNode;
|
|
2101
2310
|
}
|
|
2102
2311
|
/**
|
|
2103
|
-
* Search-as-you-type autocomplete powered by Radix Popover.
|
|
2312
|
+
* Search-as-you-type autocomplete powered by Radix Popover. Supports two
|
|
2313
|
+
* modes:
|
|
2314
|
+
*
|
|
2315
|
+
* - **Static**: pass `items` — the component substring-filters locally.
|
|
2316
|
+
* Best for small fixed lists (≤ 200 entries).
|
|
2317
|
+
* - **Async**: pass `onSearch(term) => Promise<Item[]>` — the component
|
|
2318
|
+
* debounces input and drives the option list from the resolver. Shows
|
|
2319
|
+
* an `xs` LoadingSpinner while the query is in flight.
|
|
2104
2320
|
*
|
|
2105
2321
|
* The popover opens when the input is focused and closes when an item is
|
|
2106
|
-
* selected or the user clicks away.
|
|
2322
|
+
* selected or the user clicks away.
|
|
2107
2323
|
*
|
|
2108
|
-
* @example
|
|
2324
|
+
* @example Static (small fixed list)
|
|
2325
|
+
* ```tsx
|
|
2109
2326
|
* <AutoComplete
|
|
2110
2327
|
* label="Vessel"
|
|
2111
|
-
* items={vessels.map(v => ({ key: v.imo, value: v.imo, label: v.name }))}
|
|
2328
|
+
* items={vessels.map((v) => ({ key: v.imo, value: v.imo, label: v.name }))}
|
|
2112
2329
|
* onItemClick={(imo) => setVessel(imo)}
|
|
2113
2330
|
* />
|
|
2331
|
+
* ```
|
|
2332
|
+
*
|
|
2333
|
+
* @example Async (server-backed)
|
|
2334
|
+
* ```tsx
|
|
2335
|
+
* <AutoComplete
|
|
2336
|
+
* label="Port"
|
|
2337
|
+
* debounce={300}
|
|
2338
|
+
* onSearch={async (term) => {
|
|
2339
|
+
* const res = await fetch(`/api/ports?q=${encodeURIComponent(term)}`)
|
|
2340
|
+
* const data = await res.json()
|
|
2341
|
+
* return data.map((p) => ({ key: p.unlocode, value: p.unlocode, label: p.name }))
|
|
2342
|
+
* }}
|
|
2343
|
+
* onItemClick={(unlocode) => setPort(unlocode)}
|
|
2344
|
+
* />
|
|
2345
|
+
* ```
|
|
2114
2346
|
*/
|
|
2115
|
-
declare function AutoComplete({ disabled, label, placeholder, name, inputStyle, style, layout, items, onItemClick, emptyText, }: AutoCompleteProps): react_jsx_runtime.JSX.Element;
|
|
2347
|
+
declare function AutoComplete({ disabled, label, placeholder, name, inputStyle, style, layout, items, onSearch, debounce, onItemClick, emptyText, loadingText, size, icon, }: AutoCompleteProps): react_jsx_runtime.JSX.Element;
|
|
2116
2348
|
|
|
2117
2349
|
interface TreeSelectNode {
|
|
2118
2350
|
key: string | number;
|
|
@@ -2153,6 +2385,8 @@ interface TreeSelectProps {
|
|
|
2153
2385
|
parentsSelectable?: boolean;
|
|
2154
2386
|
/** Keys of nodes that should start expanded. */
|
|
2155
2387
|
defaultExpandedKeys?: (string | number)[];
|
|
2388
|
+
/** Size preset. Default `'md'`. */
|
|
2389
|
+
size?: FieldSize;
|
|
2156
2390
|
}
|
|
2157
2391
|
/**
|
|
2158
2392
|
* Hierarchical single-select with expandable branches.
|
|
@@ -2191,7 +2425,7 @@ interface TreeSelectProps {
|
|
|
2191
2425
|
* />
|
|
2192
2426
|
* ```
|
|
2193
2427
|
*/
|
|
2194
|
-
declare function TreeSelect({ label, name, value, onChange, disabled, layout, errorMessage, style, htmlFor, items, placeholder, parentsSelectable, defaultExpandedKeys, }: TreeSelectProps): react_jsx_runtime.JSX.Element;
|
|
2428
|
+
declare function TreeSelect({ label, name, value, onChange, disabled, layout, errorMessage, style, htmlFor, items, placeholder, parentsSelectable, defaultExpandedKeys, size, }: TreeSelectProps): react_jsx_runtime.JSX.Element;
|
|
2195
2429
|
|
|
2196
2430
|
interface FileInputProps {
|
|
2197
2431
|
allowMultiple?: boolean;
|
|
@@ -2204,22 +2438,43 @@ interface FileInputProps {
|
|
|
2204
2438
|
};
|
|
2205
2439
|
}) => void;
|
|
2206
2440
|
name?: string;
|
|
2207
|
-
|
|
2441
|
+
htmlFor?: string;
|
|
2442
|
+
label?: React$1.ReactNode;
|
|
2443
|
+
/** Accepted MIME types / extensions, e.g. `'.xlsx,application/pdf'`. */
|
|
2208
2444
|
accept?: string;
|
|
2445
|
+
/** Primary call-to-action copy. Default `'Click to upload or drag and drop'`. */
|
|
2446
|
+
prompt?: React$1.ReactNode;
|
|
2447
|
+
/** Secondary hint under the prompt — typically the accepted types / max size. */
|
|
2448
|
+
hint?: React$1.ReactNode;
|
|
2449
|
+
/** Maximum file size in bytes. Files above this are rejected with an error. */
|
|
2450
|
+
maxSize?: number;
|
|
2451
|
+
errorMessage?: React$1.ReactNode;
|
|
2452
|
+
disabled?: boolean;
|
|
2453
|
+
required?: boolean;
|
|
2454
|
+
/** Override the upload glyph in the empty state. */
|
|
2455
|
+
icon?: React$1.ReactNode;
|
|
2209
2456
|
}
|
|
2210
2457
|
/**
|
|
2211
|
-
* Drag-and-drop
|
|
2458
|
+
* Drag-and-drop file input with an enterprise dropzone aesthetic: a calm
|
|
2459
|
+
* dashed surface with a contained icon badge, primary + secondary copy, an
|
|
2460
|
+
* accent-tinted drag-over state, and selected files shown as horizontal chips
|
|
2461
|
+
* with name + size and a remove button.
|
|
2212
2462
|
*
|
|
2213
|
-
*
|
|
2463
|
+
* Keyboard-accessible (the dropzone is a `role="button"` activatable via
|
|
2464
|
+
* Enter / Space) and form-friendly (`errorMessage`, `required`, `name`).
|
|
2214
2465
|
*
|
|
2215
2466
|
* @example
|
|
2467
|
+
* ```tsx
|
|
2216
2468
|
* <FileInput
|
|
2217
|
-
*
|
|
2218
|
-
* accept=".xlsx"
|
|
2469
|
+
* label="Crew manifest"
|
|
2470
|
+
* accept=".xlsx,.csv"
|
|
2471
|
+
* hint="XLSX or CSV, up to 5 MB"
|
|
2472
|
+
* maxSize={5 * 1024 * 1024}
|
|
2219
2473
|
* onChange={(e) => setFile(e.target.files[0])}
|
|
2220
2474
|
* />
|
|
2475
|
+
* ```
|
|
2221
2476
|
*/
|
|
2222
|
-
declare function FileInput({ allowMultiple, onChange, name, accept, }: FileInputProps): react_jsx_runtime.JSX.Element;
|
|
2477
|
+
declare function FileInput({ allowMultiple, onChange, name, htmlFor, label, accept, prompt, hint, maxSize, errorMessage, disabled, required, icon, }: FileInputProps): react_jsx_runtime.JSX.Element;
|
|
2223
2478
|
|
|
2224
2479
|
interface DatePickerProps {
|
|
2225
2480
|
/** Current date. `null` / `undefined` means "no date selected". */
|
|
@@ -2249,6 +2504,8 @@ interface DatePickerProps {
|
|
|
2249
2504
|
weekStartsOn?: 0 | 1;
|
|
2250
2505
|
/** Allow the user to clear the date with a button in the popover. Default `true`. */
|
|
2251
2506
|
clearable?: boolean;
|
|
2507
|
+
/** Size preset. Default `'md'`. */
|
|
2508
|
+
size?: FieldSize;
|
|
2252
2509
|
}
|
|
2253
2510
|
type TemporalPickerProps = DatePickerProps;
|
|
2254
2511
|
/**
|
|
@@ -2286,6 +2543,6 @@ type TemporalPickerProps = DatePickerProps;
|
|
|
2286
2543
|
* />
|
|
2287
2544
|
* ```
|
|
2288
2545
|
*/
|
|
2289
|
-
declare function DatePicker({ value, onChange, label, placeholder, htmlFor, name: _name, layout, disabled, errorMessage, min, max, style, format, weekStartsOn, clearable, }: DatePickerProps): react_jsx_runtime.JSX.Element;
|
|
2546
|
+
declare function DatePicker({ value, onChange, label, placeholder, htmlFor, name: _name, layout, disabled, errorMessage, min, max, style, format, weekStartsOn, clearable, size, }: DatePickerProps): react_jsx_runtime.JSX.Element;
|
|
2290
2547
|
|
|
2291
|
-
export { AppShell, type AppShellProps, AutoComplete, type AutoCompleteProps, Avatar, type AvatarProps, type AvatarShape, type AvatarSize, type AvatarStatus, Box, type BoxBackground, type BoxBorder, type BoxProps, type BoxRadius, type BoxShadow, Button, type ButtonProps, Catalog, CatalogCarousel, type CatalogCarouselProps, CatalogGrid, type CatalogGridProps, type CatalogProps, Checkbox, type CheckboxProps, ContextMenu, type ContextMenuActionItem, type ContextMenuPosition, type ContextMenuProps, type DatePickerProps, Drawer, type DrawerProps, Dropdown, type DropdownItem, type DropdownProps, type ExpandRowOptions, FadingBase, type FadingBaseProps, FileInput, type FileInputProps, Flex, type FlexAlign, type FlexDirection, type FlexJustify, type FlexProps, type FlexWrap, Grid, GridCard, type GridCardItem, type GridCardProps, type GridProps, Icon, IconButton, type IconButtonProps, List, type ListItem, type ListProps, LoadingSpinner, type LoadingSpinnerProps, Modal, type ModalProps, type NotificationPayload, NotificationProvider, NumberInput, type NumberInputProps, OpaqueGridCard, type OpaqueGridCardProps, type PaginationOptions, Password, type PasswordProps, Portal, type PortalProps, ScalableContainer, type ScalableContainerProps, SearchInput, type SearchInputProps, Sidebar, type SidebarItem, type SidebarProps, type SidebarSection, SkeletonBox, type SkeletonBoxProps, SkeletonCard, type SkeletonCardProps, SkeletonCircle, type SkeletonCircleProps, SkeletonText, type SkeletonTextProps, type Spacing, Switch, type SwitchInputProps, type TabItem, Table, type TableColumn, type TableProps, Tabs, type TabsProps, DatePicker as Temporal, type TemporalPickerProps, TextInput, type TextInputProps, type ThemeColors, type ThemeConfig, type ThemeDensity, type ThemeMotion, ThemeProvider, type ThemeProviderProps, type ThemeRadius, type ThemeShadows, ThemeSwitch, type ThemeSwitchProps, type ThemeTypography, ToggleButton, type ToggleButtonProps, type ToggleItem, Tooltip, type TooltipProps, TooltipProvider, TopBar, type TopBarProps, Tree, type TreeItemClickPayload, type TreeNode, type TreeProps, TreeSelect, type TreeSelectProps, Typography, type TypographyAlign, type TypographyColor, type TypographyProps, type TypographyVariant, type TypographyWeight, Wizard, type WizardProps, type WizardStep, useNotification };
|
|
2548
|
+
export { AppShell, type AppShellProps, AutoComplete, type AutoCompleteProps, Avatar, type AvatarProps, type AvatarShape, type AvatarSize, type AvatarStatus, Box, type BoxBackground, type BoxBorder, type BoxProps, type BoxRadius, type BoxShadow, Button, type ButtonProps, Catalog, CatalogCarousel, type CatalogCarouselProps, CatalogGrid, type CatalogGridProps, type CatalogProps, Checkbox, type CheckboxProps, ContextMenu, type ContextMenuActionItem, type ContextMenuPosition, type ContextMenuProps, type DatePickerProps, Drawer, type DrawerProps, Dropdown, type DropdownItem, type DropdownProps, type ExpandRowOptions, FadingBase, type FadingBaseProps, Field, type FieldProps, type FieldShellOptions, type FieldSize, FileInput, type FileInputProps, Flex, type FlexAlign, type FlexDirection, type FlexJustify, type FlexProps, type FlexWrap, Grid, GridCard, type GridCardItem, type GridCardProps, type GridProps, Icon, IconButton, type IconButtonProps, List, type ListItem, type ListProps, LoadingSpinner, type LoadingSpinnerProps, Modal, type ModalProps, type NotificationPayload, NotificationProvider, NumberInput, type NumberInputProps, OpaqueGridCard, type OpaqueGridCardProps, type PaginationOptions, Password, type PasswordProps, Portal, type PortalProps, RadioGroup, type RadioGroupProps, type RadioOption, ScalableContainer, type ScalableContainerProps, SearchInput, type SearchInputProps, Sidebar, type SidebarItem, type SidebarProps, type SidebarSection, SkeletonBox, type SkeletonBoxProps, SkeletonCard, type SkeletonCardProps, SkeletonCircle, type SkeletonCircleProps, SkeletonText, type SkeletonTextProps, type Spacing, Switch, type SwitchInputProps, type TabItem, Table, type TableColumn, type TableProps, Tabs, type TabsProps, DatePicker as Temporal, type TemporalPickerProps, TextInput, type TextInputProps, type ThemeColors, type ThemeConfig, type ThemeDensity, type ThemeMotion, ThemeProvider, type ThemeProviderProps, type ThemeRadius, type ThemeShadows, ThemeSwitch, type ThemeSwitchProps, type ThemeTypography, ToggleButton, type ToggleButtonProps, type ToggleItem, Tooltip, type TooltipProps, TooltipProvider, TopBar, type TopBarProps, Tree, type TreeItemClickPayload, type TreeNode, type TreeProps, TreeSelect, type TreeSelectProps, Typography, type TypographyAlign, type TypographyColor, type TypographyProps, type TypographyVariant, type TypographyWeight, Wizard, type WizardProps, type WizardStep, fieldShell, useNotification };
|