@leabankab/component-library 7.2.0 → 8.0.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/CHANGELOG.md +685 -0
- package/README.md +2 -5
- package/dist/component-library.es.js +2778 -5628
- package/dist/component-library.es.js.map +1 -1
- package/dist/component-library.umd.js +2 -35
- package/dist/component-library.umd.js.map +1 -1
- package/dist/components/animations/icons/status-icon.d.ts +4 -0
- package/dist/components/animations/illustrations/check-animation.d.ts +8 -0
- package/dist/components/animations/illustrations/pulse-animation.d.ts +5 -1
- package/dist/components/animations/illustrations/status-animation.d.ts +8 -1
- package/dist/components/animations/shared.d.ts +6 -32
- package/dist/components/animations/spinner.d.ts +18 -0
- package/dist/components/animations/use-animation-labels.d.ts +0 -5
- package/dist/components/buttons/action-button.d.ts +8 -10
- package/dist/components/buttons/button-base.d.ts +31 -17
- package/dist/components/buttons/button.d.ts +4 -4
- package/dist/components/buttons/close-button.d.ts +1 -1
- package/dist/components/buttons/icon-button.d.ts +2 -14
- package/dist/components/buttons/skip-link.d.ts +21 -4
- package/dist/components/color-roles.d.ts +8 -0
- package/dist/components/data-display/card.d.ts +31 -4
- package/dist/components/data-display/chip.d.ts +50 -8
- package/dist/components/data-display/data-field.d.ts +15 -4
- package/dist/components/data-display/tooltip.d.ts +74 -22
- package/dist/components/feedback/alert-parts.d.ts +329 -0
- package/dist/components/feedback/alert.d.ts +14 -19
- package/dist/components/feedback/global-alert.d.ts +24 -0
- package/dist/components/feedback/index.d.ts +1 -0
- package/dist/components/feedback/simple-dialog.d.ts +1 -1
- package/dist/components/form/amount-slider.d.ts +68 -0
- package/dist/components/form/autocomplete.d.ts +56 -59
- package/dist/components/form/checkbox-box.d.ts +11 -0
- package/dist/components/form/checkbox.d.ts +67 -7
- package/dist/components/form/combo-field.d.ts +60 -0
- package/dist/components/form/email-input.d.ts +20 -26
- package/dist/components/form/field-parts.d.ts +36 -0
- package/dist/components/form/index.d.ts +3 -9
- package/dist/components/form/input.d.ts +51 -13
- package/dist/components/form/multi-select.d.ts +12 -14
- package/dist/components/form/number-input.d.ts +20 -14
- package/dist/components/form/phone-number-input/phone-number-input.d.ts +25 -14
- package/dist/components/form/radio-card.d.ts +94 -43
- package/dist/components/form/radio-circle.d.ts +14 -13
- package/dist/components/form/radio-group-root.d.ts +88 -0
- package/dist/components/form/radio.d.ts +68 -24
- package/dist/components/form/select-field.d.ts +78 -0
- package/dist/components/form/select.d.ts +30 -42
- package/dist/components/form/slider-parts.d.ts +34 -0
- package/dist/components/form/slider.d.ts +40 -16
- package/dist/components/form/use-autocomplete-labels.d.ts +3 -16
- package/dist/components/form/use-blur-outside.d.ts +7 -0
- package/dist/components/form/use-focus-target-ref.d.ts +11 -0
- package/dist/components/form/use-tooltip-trigger-labels.d.ts +5 -0
- package/dist/components/index.d.ts +0 -1
- package/dist/components/layout/stack.d.ts +1 -1
- package/dist/components/navigation/form-stepper.d.ts +1 -1
- package/dist/components/navigation/index.d.ts +3 -1
- package/dist/components/navigation/linear-form-stepper.d.ts +58 -0
- package/dist/components/navigation/progress-circle.d.ts +14 -8
- package/dist/components/navigation/step-progress.d.ts +60 -0
- package/dist/components/navigation/tabs.d.ts +37 -34
- package/dist/components/navigation/use-stepper-labels.d.ts +1 -1
- package/dist/components/typography/link.d.ts +25 -16
- package/dist/components/typography/lists.d.ts +20 -23
- package/dist/components/typography/text.d.ts +46 -10
- package/dist/components/ui/app-header.d.ts +29 -0
- package/dist/components/ui/brand-divider.d.ts +7 -1
- package/dist/components/ui/index.d.ts +1 -0
- package/dist/cookie-consent/react.d.ts +0 -1
- package/dist/cookie-consent-react.cjs +1 -1
- package/dist/cookie-consent-react.cjs.map +1 -1
- package/dist/cookie-consent-react.mjs +107 -97
- package/dist/cookie-consent-react.mjs.map +1 -1
- package/dist/cookie-consent.css +1 -1
- package/dist/date-picker/datepicker.d.ts +140 -0
- package/dist/date-picker/index.d.ts +18 -0
- package/dist/date-picker/theme/field-base.d.ts +23 -0
- package/dist/date-picker/theme/form-control.theme.d.ts +7 -0
- package/dist/date-picker/theme/index.d.ts +12 -0
- package/dist/date-picker/theme/input.theme.d.ts +6 -0
- package/dist/{components/form/datepicker → date-picker}/use-view-toggle-labels.d.ts +1 -1
- package/dist/date-picker.cjs +2 -0
- package/dist/date-picker.cjs.map +1 -0
- package/dist/date-picker.mjs +1012 -0
- package/dist/date-picker.mjs.map +1 -0
- package/dist/{components/dev-panel → dev-panel}/dev-panel-payload.d.ts +1 -1
- package/dist/{components/dev-panel → dev-panel}/dev-panel-status.d.ts +2 -2
- package/dist/{components/dev-panel → dev-panel}/dev-panel-steps.d.ts +2 -1
- package/dist/{components/dev-panel → dev-panel}/dev-panel.d.ts +25 -19
- package/dist/dev-panel/index.d.ts +10 -0
- package/dist/{components/dev-panel → dev-panel}/json-highlight.d.ts +2 -2
- package/dist/dev-panel/parts.d.ts +9 -0
- package/dist/{components/dev-panel → dev-panel}/segmented-control.d.ts +5 -4
- package/dist/{components/dev-panel → dev-panel}/use-dev-panel-labels.d.ts +1 -1
- package/dist/{components/dev-panel → dev-panel}/use-roving-radio.d.ts +2 -2
- package/dist/dev-panel.cjs +3 -0
- package/dist/dev-panel.cjs.map +1 -0
- package/dist/dev-panel.css +1 -0
- package/dist/dev-panel.mjs +818 -0
- package/dist/dev-panel.mjs.map +1 -0
- package/dist/fonts/ClashGrotesk-Variable.woff2 +0 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +1 -3
- package/dist/provider/lea-provider.d.ts +4 -7
- package/dist/react-hook-form/form-field.d.ts +76 -0
- package/dist/react-hook-form/index.d.ts +1 -0
- package/dist/react-hook-form.cjs +2 -0
- package/dist/react-hook-form.cjs.map +1 -0
- package/dist/react-hook-form.mjs +33 -0
- package/dist/react-hook-form.mjs.map +1 -0
- package/dist/tailwind.css +103 -17
- package/dist/theme/index.d.ts +0 -4
- package/dist/theme/token-types.d.ts +15 -3
- package/dist/theme/tokens/colors.d.ts +13 -0
- package/dist/theme/tokens/font-family.d.ts +9 -0
- package/dist/theme/tokens/font-sizes.d.ts +8 -0
- package/dist/theme/tokens/index.d.ts +5 -1
- package/dist/theme/tokens/line-heights.d.ts +11 -0
- package/dist/theme/tokens/opacity.d.ts +5 -0
- package/dist/theme/tokens/spacing.d.ts +6 -0
- package/dist/theme/tokens/text-styles.d.ts +61 -0
- package/dist/theme/tokens/type-scale.d.ts +21 -0
- package/dist/theme/types.d.ts +19 -30
- package/package.json +42 -6
- package/dist/components/dev-panel/index.d.ts +0 -9
- package/dist/components/form/datepicker/datepicker.d.ts +0 -99
- package/dist/components/form/datepicker/index.d.ts +0 -1
- package/dist/components/form/fields/autocomplete-field.d.ts +0 -17
- package/dist/components/form/fields/boolean-radio-field.d.ts +0 -3
- package/dist/components/form/fields/checkbox-field.d.ts +0 -12
- package/dist/components/form/fields/datepicker-field.d.ts +0 -9
- package/dist/components/form/fields/email-field.d.ts +0 -10
- package/dist/components/form/fields/field-types.d.ts +0 -18
- package/dist/components/form/fields/index.d.ts +0 -14
- package/dist/components/form/fields/input-field.d.ts +0 -9
- package/dist/components/form/fields/multi-select-field.d.ts +0 -9
- package/dist/components/form/fields/number-field.d.ts +0 -10
- package/dist/components/form/fields/phone-number-field.d.ts +0 -11
- package/dist/components/form/fields/radio-card-field.d.ts +0 -22
- package/dist/components/form/fields/radio-field.d.ts +0 -16
- package/dist/components/form/fields/select-field.d.ts +0 -9
- package/dist/components/form/fields/use-field-control.d.ts +0 -6
- package/dist/components/form/fields/use-tooltip-trigger-labels.d.ts +0 -5
- package/dist/components/form/form-control/form-control-context.d.ts +0 -35
- package/dist/components/form/form-control/form-control-label.d.ts +0 -1
- package/dist/components/form/form-control/form-control.d.ts +0 -13
- package/dist/components/form/form-control/form-helper-text.d.ts +0 -9
- package/dist/components/form/form-control/form-label.d.ts +0 -9
- package/dist/components/form/form-control/index.d.ts +0 -5
- package/dist/components/form/input-label.d.ts +0 -9
- package/dist/theme/components/accordion.theme.d.ts +0 -7
- package/dist/theme/components/action-button.theme.d.ts +0 -45
- package/dist/theme/components/alert.theme.d.ts +0 -2
- package/dist/theme/components/autocomplete.theme.d.ts +0 -2
- package/dist/theme/components/baseline-css.d.ts +0 -2
- package/dist/theme/components/button.theme.d.ts +0 -2
- package/dist/theme/components/card.theme.d.ts +0 -2
- package/dist/theme/components/checkbox.theme.d.ts +0 -2
- package/dist/theme/components/chip.theme.d.ts +0 -2
- package/dist/theme/components/dev-panel.theme.d.ts +0 -95
- package/dist/theme/components/dialog.theme.d.ts +0 -2
- package/dist/theme/components/drawer.theme.d.ts +0 -4
- package/dist/theme/components/field-base.d.ts +0 -31
- package/dist/theme/components/form-control-label.theme.d.ts +0 -2
- package/dist/theme/components/form-control.theme.d.ts +0 -2
- package/dist/theme/components/index.d.ts +0 -2
- package/dist/theme/components/input.theme.d.ts +0 -3
- package/dist/theme/components/link.theme.d.ts +0 -2
- package/dist/theme/components/menu-item.theme.d.ts +0 -2
- package/dist/theme/components/number-input.theme.d.ts +0 -23
- package/dist/theme/components/phone-number-input.theme.d.ts +0 -43
- package/dist/theme/components/radio.theme.d.ts +0 -2
- package/dist/theme/components/select.theme.d.ts +0 -2
- package/dist/theme/components/slider.theme.d.ts +0 -2
- package/dist/theme/components/tabs.theme.d.ts +0 -34
- package/dist/theme/components/tooltip.theme.d.ts +0 -110
- package/dist/theme/components/typography.theme.d.ts +0 -2
- package/dist/theme/mui-augmentation.d.ts +0 -147
- package/dist/theme/sx-config.d.ts +0 -10
- /package/dist/{components/form/datepicker → date-picker}/calendar-header.d.ts +0 -0
- /package/dist/{components/form/datepicker → date-picker}/drawer-toolbar.d.ts +0 -0
- /package/dist/{theme/components → date-picker/theme}/date-picker.theme.d.ts +0 -0
- /package/dist/{theme/components → date-picker/theme}/icon-button.theme.d.ts +0 -0
- /package/dist/{theme/tokens → date-picker/theme}/typography.d.ts +0 -0
- /package/dist/{components/form/datepicker → date-picker}/use-calendar-header-labels.d.ts +0 -0
- /package/dist/{components/form/datepicker → date-picker}/use-datepicker-title-labels.d.ts +0 -0
- /package/dist/{components/form/datepicker → date-picker}/view-renderers.d.ts +0 -0
- /package/dist/{components/form/datepicker → date-picker}/view-toggle.d.ts +0 -0
- /package/dist/{components/dev-panel → dev-panel}/dev-panel-country.d.ts +0 -0
- /package/dist/{components/dev-panel → dev-panel}/dev-panel-flow.d.ts +0 -0
- /package/dist/{components/dev-panel → dev-panel}/dev-panel-footer.d.ts +0 -0
- /package/dist/{components/dev-panel → dev-panel}/dev-panel-step-state.d.ts +0 -0
- /package/dist/{components/dev-panel → dev-panel}/dev-panel-variant.d.ts +0 -0
- /package/dist/{components/dev-panel → dev-panel}/use-copy.d.ts +0 -0
|
@@ -1,53 +1,61 @@
|
|
|
1
|
-
import { SxProps, Theme } from '@mui/material';
|
|
2
1
|
import { LucideIcon } from 'lucide-react';
|
|
3
|
-
import { ReactNode } from 'react';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
import { CSSProperties, ReactNode, Ref } from 'react';
|
|
3
|
+
import { Option } from './radio';
|
|
4
|
+
import { RadioSize } from './radio-circle';
|
|
5
|
+
import { RadioCardSize, RadioGroupBaseProps, RadioValue } from './radio-group-root';
|
|
6
|
+
export type RootProps<T extends RadioValue = RadioValue> = {
|
|
7
|
+
/** What `onValueChange` on the group is called with when this card is picked. */
|
|
8
|
+
value: T;
|
|
7
9
|
/** `"horizontal"` (indicator + text in a row) or `"vertical"` (icon stacked above text). */
|
|
8
10
|
orientation?: "horizontal" | "vertical";
|
|
11
|
+
/** Disables this card only. */
|
|
9
12
|
disabled?: boolean;
|
|
10
|
-
/**
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
/** Padding of the card. Defaults to the group's `size`. */
|
|
14
|
+
size?: RadioCardSize;
|
|
15
|
+
/** Class on the card. */
|
|
16
|
+
className?: string;
|
|
17
|
+
/** Inline style on the card. */
|
|
18
|
+
style?: CSSProperties;
|
|
19
|
+
/** The card, which is a `<label>` around the radio. */
|
|
20
|
+
ref?: Ref<HTMLLabelElement>;
|
|
15
21
|
children?: ReactNode;
|
|
16
|
-
size?: "sm" | "lg";
|
|
17
22
|
};
|
|
18
23
|
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* `RadioCardDescription`.
|
|
24
|
+
* One choice in a `RadioCard.Group`, for when the `options` list is not
|
|
25
|
+
* enough. The whole card is clickable, and it is built from composable
|
|
26
|
+
* pieces: `RadioCard.Content` (wraps the text), `RadioCard.Indicator`
|
|
27
|
+
* (optional), `RadioCard.Icon`, `RadioCard.Label`, `RadioCard.Description`.
|
|
24
28
|
*
|
|
25
29
|
* Children are laid out as plain flex items, so the indicator is just another
|
|
26
|
-
* child — place it before or after `
|
|
30
|
+
* child — place it before or after `RadioCard.Content` and it sits at that edge
|
|
27
31
|
* (the content grows to fill the row, pushing the indicator to the side).
|
|
28
32
|
*
|
|
29
|
-
*
|
|
30
|
-
* card derives its checked styling from the group automatically.
|
|
33
|
+
* The group holds the value, so a `RadioCard.Root` only works inside one.
|
|
31
34
|
*
|
|
32
35
|
* ```tsx
|
|
33
|
-
* <
|
|
34
|
-
* <RadioCard value=
|
|
35
|
-
* <
|
|
36
|
-
* <
|
|
37
|
-
* <
|
|
38
|
-
* </
|
|
39
|
-
* <
|
|
40
|
-
* </RadioCard>
|
|
41
|
-
* </
|
|
36
|
+
* <RadioCard.Group label="Nedbetalingstid" value={value} onValueChange={setValue}>
|
|
37
|
+
* <RadioCard.Root value={10}>
|
|
38
|
+
* <RadioCard.Content>
|
|
39
|
+
* <RadioCard.Label>1316 kr/mnd</RadioCard.Label>
|
|
40
|
+
* <RadioCard.Description>Over 10 år</RadioCard.Description>
|
|
41
|
+
* </RadioCard.Content>
|
|
42
|
+
* <RadioCard.Indicator />
|
|
43
|
+
* </RadioCard.Root>
|
|
44
|
+
* </RadioCard.Group>
|
|
42
45
|
* ```
|
|
43
46
|
*/
|
|
44
|
-
export declare
|
|
47
|
+
export declare function Root<T extends RadioValue = RadioValue>({ value, orientation, disabled, size, className, style, ref, children, }: RootProps<T>): import("react").JSX.Element;
|
|
48
|
+
export type IndicatorProps = {
|
|
49
|
+
/** Size of the circle. @default "md" */
|
|
50
|
+
size?: RadioSize;
|
|
51
|
+
};
|
|
45
52
|
/**
|
|
46
|
-
* Optional radio dot for a `RadioCard`.
|
|
47
|
-
*
|
|
53
|
+
* Optional radio dot for a `RadioCard.Root`. It is a picture of the card's
|
|
54
|
+
* state, drawn like a `RadioGroup.Item`; the card's own radio is what gets
|
|
55
|
+
* picked. Omit it for icon-only cards.
|
|
48
56
|
*/
|
|
49
|
-
export declare const
|
|
50
|
-
export type
|
|
57
|
+
export declare const Indicator: ({ size }: IndicatorProps) => import("react").JSX.Element;
|
|
58
|
+
export type IconProps = {
|
|
51
59
|
/** Icon box size (predefined, overridable). */
|
|
52
60
|
size?: number | string;
|
|
53
61
|
icon: LucideIcon;
|
|
@@ -56,22 +64,65 @@ export type RadioCardIconProps = {
|
|
|
56
64
|
* Fixed-size icon slot so every card's icon renders at the same size regardless
|
|
57
65
|
* of the icon passed in.
|
|
58
66
|
*/
|
|
59
|
-
export declare const
|
|
67
|
+
export declare const Icon: ({ size, icon }: IconProps) => import("react").JSX.Element;
|
|
60
68
|
/**
|
|
61
|
-
* Wraps the text lines (`
|
|
62
|
-
* Grows to fill the row in `horizontal` orientation — so a sibling
|
|
63
|
-
* `
|
|
69
|
+
* Wraps the text lines (`RadioCard.Label` / `RadioCard.Description`) into a
|
|
70
|
+
* column. Grows to fill the row in `horizontal` orientation — so a sibling
|
|
71
|
+
* `RadioCard.Indicator` is pushed to the opposite edge — and centers in
|
|
64
72
|
* `vertical`.
|
|
65
73
|
*/
|
|
66
|
-
export declare const
|
|
74
|
+
export declare const Content: ({ children, className, style, }: {
|
|
67
75
|
children: ReactNode;
|
|
68
|
-
|
|
76
|
+
className?: string;
|
|
77
|
+
style?: CSSProperties;
|
|
69
78
|
}) => import("react").JSX.Element;
|
|
70
|
-
/** Primary line of a `RadioCard`. */
|
|
71
|
-
export declare const
|
|
79
|
+
/** Primary line of a `RadioCard.Root`. */
|
|
80
|
+
export declare const Label: ({ children }: {
|
|
72
81
|
children: ReactNode;
|
|
73
82
|
}) => import("react").JSX.Element;
|
|
74
|
-
/** Secondary, muted line of a `RadioCard`. */
|
|
75
|
-
export declare const
|
|
83
|
+
/** Secondary, muted line of a `RadioCard.Root`. */
|
|
84
|
+
export declare const Description: ({ children }: {
|
|
76
85
|
children: ReactNode;
|
|
77
86
|
}) => import("react").JSX.Element;
|
|
87
|
+
export type GroupProps<T extends RadioValue = string> = RadioGroupBaseProps<T> & {
|
|
88
|
+
/**
|
|
89
|
+
* The choices, each rendered as a card with a radio dot and its label.
|
|
90
|
+
* For icons, descriptions or cards without the dot, pass `RadioCard.Root`
|
|
91
|
+
* children instead.
|
|
92
|
+
*/
|
|
93
|
+
options?: Option<T>[];
|
|
94
|
+
/** How many cards sit side by side. @default 1 */
|
|
95
|
+
columns?: number;
|
|
96
|
+
/**
|
|
97
|
+
* Padding of the cards. A `size` on a `RadioCard.Root` wins.
|
|
98
|
+
* @default "lg"
|
|
99
|
+
*/
|
|
100
|
+
size?: RadioCardSize;
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* A question with one answer, as a set of selectable cards, on Base UI's
|
|
104
|
+
* accessible `RadioGroup` primitive. The label, the tooltip, the helper text
|
|
105
|
+
* and the error state are handled for you. Arrow keys move between the cards.
|
|
106
|
+
*
|
|
107
|
+
* Pass the choices as `options`. Values are compared with `===` and can be
|
|
108
|
+
* strings, numbers or booleans, so a yes / no question can hold a real
|
|
109
|
+
* `boolean`:
|
|
110
|
+
*
|
|
111
|
+
* ```tsx
|
|
112
|
+
* <RadioCard.Group
|
|
113
|
+
* label="Vil du legge til en medsøker?"
|
|
114
|
+
* columns={2}
|
|
115
|
+
* size="sm"
|
|
116
|
+
* options={[
|
|
117
|
+
* { value: true, label: "Ja" },
|
|
118
|
+
* { value: false, label: "Nei" },
|
|
119
|
+
* ]}
|
|
120
|
+
* value={hasCoApplicant}
|
|
121
|
+
* onValueChange={setHasCoApplicant}
|
|
122
|
+
* />
|
|
123
|
+
* ```
|
|
124
|
+
*
|
|
125
|
+
* For richer cards, pass `RadioCard.Root` children.
|
|
126
|
+
*/
|
|
127
|
+
export declare function Group<T extends RadioValue = string>({ options, columns, size, children, ...rest }: GroupProps<T>): import("react").JSX.Element;
|
|
128
|
+
export type { Option, RadioCardSize as Size, RadioValue as Value };
|
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
export type RadioSize = "sm" | "md";
|
|
2
|
+
/** The classes of the radio visual, for the real control to wear. */
|
|
3
|
+
export declare const radioCircleClassName: string;
|
|
4
|
+
export declare const radioDotClassName: string;
|
|
3
5
|
export type RadioCircleProps = {
|
|
4
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Fills the circle and springs the dot in. Leave it out when a parent
|
|
8
|
+
* selector decides instead, as `RadioCard.Root` does for its indicator.
|
|
9
|
+
*/
|
|
5
10
|
checked?: boolean;
|
|
6
11
|
size?: RadioSize;
|
|
7
|
-
|
|
12
|
+
className?: string;
|
|
8
13
|
};
|
|
9
14
|
/**
|
|
10
|
-
* The
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* Self-styled (not a MUI theme override) because it renders outside `MuiRadio`
|
|
16
|
-
* too. When used as `Radio`'s icons, swapping `<RadioCircle />` ⇄
|
|
17
|
-
* `<RadioCircle checked />` reconciles in place, so the dot animates.
|
|
15
|
+
* Internal. The radio visual as a picture only, for places where something else
|
|
16
|
+
* is the control: `RadioCard.Indicator` shows it inside a card, and the card's
|
|
17
|
+
* own hidden radio is what gets picked. It looks exactly like
|
|
18
|
+
* `RadioGroup.Item`, which puts the same classes on the real control.
|
|
18
19
|
*/
|
|
19
|
-
export declare const RadioCircle: ({ checked, size,
|
|
20
|
+
export declare const RadioCircle: ({ checked, size, className, }: RadioCircleProps) => import("react").JSX.Element;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { CSSProperties, FocusEvent, ReactNode, Ref } from 'react';
|
|
2
|
+
import { RadioSize } from './radio-circle';
|
|
3
|
+
/** What a radio can stand for. Compared with `===`, so `true` is not `"true"`. */
|
|
4
|
+
export type RadioValue = string | number | boolean;
|
|
5
|
+
export type RadioCardSize = "sm" | "lg";
|
|
6
|
+
type RadioGroupContextValue = {
|
|
7
|
+
/** Size of the radio circle, set by `RadioGroup.Root`. */
|
|
8
|
+
size?: RadioSize;
|
|
9
|
+
/** Size of the cards, set by `RadioCard.Group`. */
|
|
10
|
+
cardSize?: RadioCardSize;
|
|
11
|
+
};
|
|
12
|
+
/** Reads the surrounding group. A radio cannot work without one. */
|
|
13
|
+
export declare const useRadioGroupContext: (component: string) => RadioGroupContextValue;
|
|
14
|
+
/**
|
|
15
|
+
* Requires an accessible name so the group is never nameless. Provide a
|
|
16
|
+
* visible `label`, or an `aria-label` / `aria-labelledby` when the question
|
|
17
|
+
* is written somewhere else on the page.
|
|
18
|
+
*/
|
|
19
|
+
type RadioGroupAccessibleName = {
|
|
20
|
+
label: ReactNode;
|
|
21
|
+
"aria-label"?: never;
|
|
22
|
+
"aria-labelledby"?: never;
|
|
23
|
+
} | {
|
|
24
|
+
label?: never;
|
|
25
|
+
"aria-label": string;
|
|
26
|
+
"aria-labelledby"?: never;
|
|
27
|
+
} | {
|
|
28
|
+
label?: never;
|
|
29
|
+
"aria-label"?: never;
|
|
30
|
+
"aria-labelledby": string;
|
|
31
|
+
};
|
|
32
|
+
/** The props `RadioGroup.Root` and `RadioCard.Group` have in common. */
|
|
33
|
+
export type RadioGroupBaseProps<T extends RadioValue> = RadioGroupAccessibleName & {
|
|
34
|
+
/** Help text behind an info button next to the label. Needs a `label`. */
|
|
35
|
+
tooltip?: ReactNode;
|
|
36
|
+
/** Helper / error text shown below the options and linked via `aria-describedby`. */
|
|
37
|
+
helperText?: ReactNode;
|
|
38
|
+
/** Puts the group and its helper text into the error state. */
|
|
39
|
+
error?: boolean;
|
|
40
|
+
/** The chosen value (controlled). `null` means nothing is chosen. */
|
|
41
|
+
value?: T | null;
|
|
42
|
+
/** The chosen value when first rendered, for uncontrolled use. */
|
|
43
|
+
defaultValue?: T;
|
|
44
|
+
/** Called with the value of the option the user picks. */
|
|
45
|
+
onValueChange?: (value: T) => void;
|
|
46
|
+
/** Submits the choice under this name when inside a form. */
|
|
47
|
+
name?: string;
|
|
48
|
+
/** Disables every option. */
|
|
49
|
+
disabled?: boolean;
|
|
50
|
+
/** Marks the group as required and adds the asterisk to the label. */
|
|
51
|
+
required?: boolean;
|
|
52
|
+
/** Called when focus leaves the group, not when it moves between options. */
|
|
53
|
+
onBlur?: (event: FocusEvent<HTMLDivElement>) => void;
|
|
54
|
+
/** Id of the element with the `radiogroup` role. */
|
|
55
|
+
id?: string;
|
|
56
|
+
/** Extra ids describing the group, alongside the helper text. */
|
|
57
|
+
"aria-describedby"?: string;
|
|
58
|
+
/** Class on the outermost element, for layout. */
|
|
59
|
+
className?: string;
|
|
60
|
+
/** Inline style on the outermost element, for layout. */
|
|
61
|
+
style?: CSSProperties;
|
|
62
|
+
/**
|
|
63
|
+
* The `<input>` of the radio that takes focus: the chosen one, or the
|
|
64
|
+
* first that is not disabled. It is hidden, but `ref.current.focus()`
|
|
65
|
+
* moves focus to the visible radio.
|
|
66
|
+
*/
|
|
67
|
+
ref?: Ref<HTMLInputElement>;
|
|
68
|
+
/**
|
|
69
|
+
* `RadioGroup.Item` / `RadioCard.Root` elements, instead of or after `options`.
|
|
70
|
+
*/
|
|
71
|
+
children?: ReactNode;
|
|
72
|
+
};
|
|
73
|
+
type RadioGroupRootProps<T extends RadioValue> = RadioGroupBaseProps<T> & {
|
|
74
|
+
size?: RadioSize;
|
|
75
|
+
cardSize?: RadioCardSize;
|
|
76
|
+
/** Layout of the options. */
|
|
77
|
+
optionsClassName: string;
|
|
78
|
+
optionsStyle?: CSSProperties;
|
|
79
|
+
/** `"many"` when the options sit in more than one column. */
|
|
80
|
+
optionsDataColumns?: string;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Internal. Everything `RadioGroup.Root` and `RadioCard.Group` share: Base UI's
|
|
84
|
+
* `RadioGroup`, which holds the value and moves focus with the arrow keys,
|
|
85
|
+
* and the label, tooltip, helper text and error state around the options.
|
|
86
|
+
*/
|
|
87
|
+
export declare function RadioGroupRoot<T extends RadioValue>({ label, tooltip, helperText, error, value, defaultValue, onValueChange, name, disabled, required, onBlur, id, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, className, style, ref, size, cardSize, optionsClassName, optionsStyle, optionsDataColumns, children, }: RadioGroupRootProps<T>): import("react").JSX.Element;
|
|
88
|
+
export {};
|
|
@@ -1,36 +1,80 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CSSProperties, ReactNode, Ref } from 'react';
|
|
2
2
|
import { RadioSize } from './radio-circle';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
import { RadioGroupBaseProps, RadioValue } from './radio-group-root';
|
|
4
|
+
export type { RadioSize as Size, RadioValue as Value };
|
|
5
|
+
/**
|
|
6
|
+
* One choice in the `options` list of a `RadioGroup.Root` or `RadioCard.Group`.
|
|
7
|
+
*/
|
|
8
|
+
export type Option<T extends RadioValue = string> = {
|
|
9
|
+
value: T;
|
|
10
|
+
label: ReactNode;
|
|
11
|
+
disabled?: boolean;
|
|
8
12
|
};
|
|
9
|
-
export type
|
|
10
|
-
/**
|
|
13
|
+
export type ItemProps<T extends RadioValue = RadioValue> = {
|
|
14
|
+
/** What `onValueChange` on the group is called with when this radio is picked. */
|
|
15
|
+
value: T;
|
|
16
|
+
/** The text next to the radio. Without it, pass `aria-label`. */
|
|
17
|
+
label?: ReactNode;
|
|
18
|
+
/** Disables this radio only. */
|
|
19
|
+
disabled?: boolean;
|
|
20
|
+
/** Size of the circle. Defaults to the group's `size`. */
|
|
11
21
|
size?: RadioSize;
|
|
22
|
+
/** Id of the radio itself, the element with the `radio` role. */
|
|
23
|
+
id?: string;
|
|
24
|
+
/** Names the radio when it has no `label`. */
|
|
25
|
+
"aria-label"?: string;
|
|
26
|
+
/** Class on the outermost element. */
|
|
27
|
+
className?: string;
|
|
28
|
+
/** Inline style on the outermost element. */
|
|
29
|
+
style?: CSSProperties;
|
|
30
|
+
/**
|
|
31
|
+
* The `<input type="radio">` that holds the value. It is hidden, but
|
|
32
|
+
* `ref.current.focus()` moves focus to the visible radio.
|
|
33
|
+
*/
|
|
34
|
+
ref?: Ref<HTMLInputElement>;
|
|
12
35
|
};
|
|
13
36
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* selection stays mutually exclusive:
|
|
37
|
+
* One choice in a `RadioGroup.Root`, for when the `options` list is not enough:
|
|
38
|
+
* a label with markup in it, or content between the choices. The group holds
|
|
39
|
+
* the value, so a `RadioGroup.Item` only works inside one.
|
|
18
40
|
*
|
|
19
41
|
* ```tsx
|
|
20
|
-
* <RadioGroup value={value}
|
|
21
|
-
* <
|
|
22
|
-
* <
|
|
23
|
-
* </RadioGroup>
|
|
42
|
+
* <RadioGroup.Root label="Betaling" value={value} onValueChange={setValue}>
|
|
43
|
+
* <RadioGroup.Item value="monthly" label="Månedlig" />
|
|
44
|
+
* <RadioGroup.Item value="yearly" label={<>Årlig <Chip label="Spar 10 %" /></>} />
|
|
45
|
+
* </RadioGroup.Root>
|
|
24
46
|
* ```
|
|
25
47
|
*/
|
|
26
|
-
export declare
|
|
48
|
+
export declare function Item<T extends RadioValue = RadioValue>({ value, label, disabled, size, id, "aria-label": ariaLabel, className, style, ref, }: ItemProps<T>): import("react").JSX.Element;
|
|
49
|
+
export type RootProps<T extends RadioValue = string> = RadioGroupBaseProps<T> & {
|
|
50
|
+
/** The choices, each rendered as a radio with its label. */
|
|
51
|
+
options?: Option<T>[];
|
|
52
|
+
/**
|
|
53
|
+
* Size of the radio circles. A `size` on a `RadioGroup.Item` wins.
|
|
54
|
+
* @default "md"
|
|
55
|
+
*/
|
|
56
|
+
size?: RadioSize;
|
|
57
|
+
};
|
|
27
58
|
/**
|
|
28
|
-
*
|
|
29
|
-
*
|
|
59
|
+
* A question with one answer, as a list of radios, on Base UI's accessible
|
|
60
|
+
* `RadioGroup` primitive. The label, the helper text and the error state are
|
|
61
|
+
* handled for you. Arrow keys move between the choices.
|
|
62
|
+
*
|
|
63
|
+
* Pass the choices as `options`. Values are compared with `===` and can be
|
|
64
|
+
* strings, numbers or booleans, so a yes / no question can hold a real
|
|
65
|
+
* `boolean`. For choices that need more than a label, pass `RadioGroup.Item`
|
|
66
|
+
* children.
|
|
30
67
|
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
68
|
+
* ```tsx
|
|
69
|
+
* <RadioGroup.Root
|
|
70
|
+
* label="Hvor ofte vil du betale?"
|
|
71
|
+
* options={[
|
|
72
|
+
* { value: "monthly", label: "Månedlig" },
|
|
73
|
+
* { value: "yearly", label: "Årlig" },
|
|
74
|
+
* ]}
|
|
75
|
+
* value={value}
|
|
76
|
+
* onValueChange={setValue}
|
|
77
|
+
* />
|
|
78
|
+
* ```
|
|
35
79
|
*/
|
|
36
|
-
export declare
|
|
80
|
+
export declare function Root<T extends RadioValue = string>({ options, children, ...rest }: RootProps<T>): import("react").JSX.Element;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { CSSProperties, FocusEvent, ReactNode, Ref } from 'react';
|
|
2
|
+
/** One choice in a `Select` or `MultiSelect`. */
|
|
3
|
+
export type SelectOption<Value extends string = string> = {
|
|
4
|
+
value: Value;
|
|
5
|
+
label: string;
|
|
6
|
+
/** Shown, but not selectable. */
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
};
|
|
9
|
+
/** The props `Select` and `MultiSelect` have in common. */
|
|
10
|
+
export type SelectFieldBaseProps = {
|
|
11
|
+
/** Floating label, linked to the select for you. */
|
|
12
|
+
label?: ReactNode;
|
|
13
|
+
/** Helper / error text shown below the control and linked via `aria-describedby`. */
|
|
14
|
+
helperText?: ReactNode;
|
|
15
|
+
/** Puts the select, its label and its helper text into the error state. */
|
|
16
|
+
error?: boolean;
|
|
17
|
+
/** Marks the select as required, with an asterisk after the label. */
|
|
18
|
+
required?: boolean;
|
|
19
|
+
disabled?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Text shown while nothing is chosen. With a `label` it appears once the
|
|
22
|
+
* label has floated up: on focus and while the list is open.
|
|
23
|
+
*/
|
|
24
|
+
placeholder?: string;
|
|
25
|
+
/** Content before the value, inside the field, e.g. an icon. */
|
|
26
|
+
startAdornment?: ReactNode;
|
|
27
|
+
/** Content after the value, inside the field, left of the dropdown arrow. */
|
|
28
|
+
endAdornment?: ReactNode;
|
|
29
|
+
/** Whether the list is open (controlled). Pair with `onOpenChange`. */
|
|
30
|
+
open?: boolean;
|
|
31
|
+
/** Called when the list opens or closes. */
|
|
32
|
+
onOpenChange?: (open: boolean) => void;
|
|
33
|
+
/** Called when focus leaves the select, the open list included. */
|
|
34
|
+
onBlur?: (event: FocusEvent<HTMLElement>) => void;
|
|
35
|
+
/** Submits the value under this name in a native form. */
|
|
36
|
+
name?: string;
|
|
37
|
+
/** Id of the element with the `combobox` role. */
|
|
38
|
+
id?: string;
|
|
39
|
+
/** Names the select when there is no visible `label`. */
|
|
40
|
+
"aria-label"?: string;
|
|
41
|
+
"aria-labelledby"?: string;
|
|
42
|
+
"aria-describedby"?: string;
|
|
43
|
+
/** Class on the outermost element, for layout. */
|
|
44
|
+
className?: string;
|
|
45
|
+
/** Inline style on the outermost element, for layout. */
|
|
46
|
+
style?: CSSProperties;
|
|
47
|
+
/** The element that takes focus, the one with the `combobox` role. */
|
|
48
|
+
ref?: Ref<HTMLElement>;
|
|
49
|
+
};
|
|
50
|
+
type SelectFieldProps = SelectFieldBaseProps & {
|
|
51
|
+
multiple: boolean;
|
|
52
|
+
/** The value as Base UI holds it: `null` or an array when empty. */
|
|
53
|
+
value: string | string[] | null;
|
|
54
|
+
onValueChange: (value: string | string[] | null) => void;
|
|
55
|
+
/** Whether something is chosen, which is what floats the label. */
|
|
56
|
+
filled: boolean;
|
|
57
|
+
/** What the field shows for the value: text, or the chips. */
|
|
58
|
+
display: ReactNode;
|
|
59
|
+
/**
|
|
60
|
+
* Hides `display` from assistive tech, when it only repeats `valueText`.
|
|
61
|
+
* Not for chips: their remove buttons are controls.
|
|
62
|
+
*/
|
|
63
|
+
displayHidden?: boolean;
|
|
64
|
+
/** The value as plain text, for assistive tech, inside the trigger. */
|
|
65
|
+
valueText: string;
|
|
66
|
+
/** The `SelectFieldItem`s. */
|
|
67
|
+
children: ReactNode;
|
|
68
|
+
};
|
|
69
|
+
export declare function SelectField({ label, helperText, error, required, disabled, placeholder, startAdornment, endAdornment, open: openProp, onOpenChange, onBlur, name, id, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, className, style, ref, multiple, value, onValueChange, filled, display, displayHidden, valueText, children, }: SelectFieldProps): import("react").JSX.Element;
|
|
70
|
+
type SelectFieldItemProps = {
|
|
71
|
+
option: SelectOption;
|
|
72
|
+
disabled?: boolean;
|
|
73
|
+
/** Content before the label, e.g. the checkbox of `MultiSelect`. */
|
|
74
|
+
children?: ReactNode;
|
|
75
|
+
};
|
|
76
|
+
/** One option in the list. */
|
|
77
|
+
export declare function SelectFieldItem({ option, disabled, children, }: SelectFieldItemProps): import("react").JSX.Element;
|
|
78
|
+
export {};
|
|
@@ -1,46 +1,34 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export type
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
|
|
12
|
-
/** Convenience: render `MenuItem`s from a list instead of passing children. */
|
|
13
|
-
options?: SelectOption[];
|
|
1
|
+
import { SelectFieldBaseProps, SelectOption } from './select-field';
|
|
2
|
+
export type { SelectOption };
|
|
3
|
+
export type SelectProps<Value extends string = string> = SelectFieldBaseProps & {
|
|
4
|
+
/** The choices. */
|
|
5
|
+
options: readonly SelectOption<Value>[];
|
|
6
|
+
/** The chosen value (controlled). `""` means nothing is chosen. */
|
|
7
|
+
value?: Value | "";
|
|
8
|
+
/** The chosen value when first rendered, for uncontrolled use. */
|
|
9
|
+
defaultValue?: Value | "";
|
|
10
|
+
/** Called with the value of the option the user picks. */
|
|
11
|
+
onValueChange?: (value: Value) => void;
|
|
14
12
|
};
|
|
15
13
|
/**
|
|
16
|
-
* Select
|
|
14
|
+
* Select on Base UI's `Select`, in the same box as `Input`. The label, the
|
|
15
|
+
* helper text and the ids that link them to the control are all rendered and
|
|
16
|
+
* wired for you.
|
|
17
|
+
*
|
|
18
|
+
* ```tsx
|
|
19
|
+
* <Select
|
|
20
|
+
* label="Land"
|
|
21
|
+
* options={[
|
|
22
|
+
* { value: "no", label: "Norge" },
|
|
23
|
+
* { value: "se", label: "Sverige" },
|
|
24
|
+
* ]}
|
|
25
|
+
* value={country}
|
|
26
|
+
* onValueChange={setCountry}
|
|
27
|
+
* />
|
|
28
|
+
* ```
|
|
17
29
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* text, generating and wiring all ids for you.
|
|
22
|
-
* - **Composed:** drop it inside a `FormControl` next to `InputLabel` /
|
|
23
|
-
* `FormHelperText` and it picks up the shared ids from context.
|
|
30
|
+
* Values are strings, and `""` means nothing is chosen. Written with
|
|
31
|
+
* `as const`, the options give `value` and `onValueChange` their type:
|
|
32
|
+
* `"no" | "se"` here.
|
|
24
33
|
*/
|
|
25
|
-
export declare
|
|
26
|
-
/** Floating label. Rendered as an `InputLabel` and linked automatically. */
|
|
27
|
-
label?: ReactNode;
|
|
28
|
-
/** Helper / error text shown below the control and linked via `aria-describedby`. */
|
|
29
|
-
helperText?: ReactNode;
|
|
30
|
-
/** Convenience: render `MenuItem`s from a list instead of passing children. */
|
|
31
|
-
options?: SelectOption[];
|
|
32
|
-
}, "ref"> | Omit<import('@mui/material').StandardSelectProps & import('@mui/material').BaseSelectProps<unknown> & {
|
|
33
|
-
/** Floating label. Rendered as an `InputLabel` and linked automatically. */
|
|
34
|
-
label?: ReactNode;
|
|
35
|
-
/** Helper / error text shown below the control and linked via `aria-describedby`. */
|
|
36
|
-
helperText?: ReactNode;
|
|
37
|
-
/** Convenience: render `MenuItem`s from a list instead of passing children. */
|
|
38
|
-
options?: SelectOption[];
|
|
39
|
-
}, "ref"> | Omit<import('@mui/material').OutlinedSelectProps & import('@mui/material').BaseSelectProps<unknown> & {
|
|
40
|
-
/** Floating label. Rendered as an `InputLabel` and linked automatically. */
|
|
41
|
-
label?: ReactNode;
|
|
42
|
-
/** Helper / error text shown below the control and linked via `aria-describedby`. */
|
|
43
|
-
helperText?: ReactNode;
|
|
44
|
-
/** Convenience: render `MenuItem`s from a list instead of passing children. */
|
|
45
|
-
options?: SelectOption[];
|
|
46
|
-
}, "ref">) & import('react').RefAttributes<HTMLDivElement>>;
|
|
34
|
+
export declare function Select<Value extends string = string>({ options, value, defaultValue, onValueChange, ...rest }: SelectProps<Value>): import("react").JSX.Element;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Field } from '@base-ui/react/field';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* `render` for a `Field.Root` that is only there to hand a control its
|
|
5
|
+
* validity state, which is how Base UI puts `aria-invalid` on the slider's
|
|
6
|
+
* nested range input. It makes the field render no element of its own.
|
|
7
|
+
*/
|
|
8
|
+
export declare const renderWithoutElement: Field.Root.Props["render"];
|
|
9
|
+
type SliderTrackProps = {
|
|
10
|
+
"aria-label"?: string;
|
|
11
|
+
"aria-describedby"?: string;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* The clickable control with its track, fill and thumb. The thumb is rendered
|
|
15
|
+
* here so it can never be left out. Must sit inside a Base UI `Slider.Root`.
|
|
16
|
+
*/
|
|
17
|
+
export declare function SliderTrack({ "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy, }: SliderTrackProps): import("react").JSX.Element;
|
|
18
|
+
type SliderRangeProps = {
|
|
19
|
+
min: number;
|
|
20
|
+
max: number;
|
|
21
|
+
format?: Intl.NumberFormatOptions;
|
|
22
|
+
locale?: Intl.LocalesArgument;
|
|
23
|
+
};
|
|
24
|
+
/** `min` and `max` under each end of the track, written like the value. */
|
|
25
|
+
export declare function SliderRange({ min, max, format, locale }: SliderRangeProps): import("react").JSX.Element;
|
|
26
|
+
type SliderHelperTextProps = {
|
|
27
|
+
/** Id the controls point at with `aria-describedby`. */
|
|
28
|
+
id: string;
|
|
29
|
+
error: boolean;
|
|
30
|
+
children: ReactNode;
|
|
31
|
+
};
|
|
32
|
+
/** Helper text below the slider. Announced as an alert while in error. */
|
|
33
|
+
export declare function SliderHelperText({ id, error, children, }: SliderHelperTextProps): import("react").JSX.Element;
|
|
34
|
+
export {};
|