@pearpages/pulp-react 0.2.2 → 0.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/README.md +14 -0
- package/dist/accordion.js +1 -1
- package/dist/alert.css +18 -0
- package/dist/alert.css.map +1 -1
- package/dist/alert.js +4 -4
- package/dist/avatar.css +46 -0
- package/dist/avatar.css.map +1 -0
- package/dist/avatar.d.ts +41 -0
- package/dist/avatar.js +5 -0
- package/dist/avatar.js.map +1 -0
- package/dist/badge.css +37 -0
- package/dist/badge.css.map +1 -1
- package/dist/badge.d.ts +22 -5
- package/dist/badge.js +2 -1
- package/dist/button.css +18 -0
- package/dist/button.css.map +1 -1
- package/dist/button.d.ts +11 -2
- package/dist/button.js +2 -2
- package/dist/calendar.js +1 -1
- package/dist/card.js +2 -2
- package/dist/checkbox.js +4 -4
- package/dist/chip.css +95 -0
- package/dist/chip.css.map +1 -0
- package/dist/chip.d.ts +43 -0
- package/dist/chip.js +4 -0
- package/dist/chip.js.map +1 -0
- package/dist/{chunk-N6E2E2OY.js → chunk-2NVC3C7K.js} +3 -3
- package/dist/{chunk-N6E2E2OY.js.map → chunk-2NVC3C7K.js.map} +1 -1
- package/dist/{chunk-MF66ICX6.js → chunk-56RSH7GQ.js} +3 -3
- package/dist/{chunk-MF66ICX6.js.map → chunk-56RSH7GQ.js.map} +1 -1
- package/dist/chunk-5TYCIBLW.js +27 -0
- package/dist/chunk-5TYCIBLW.js.map +1 -0
- package/dist/chunk-7O6FTCZL.js +101 -0
- package/dist/chunk-7O6FTCZL.js.map +1 -0
- package/dist/{chunk-N4C3NQIN.js → chunk-A7TMFEQ2.js} +3 -3
- package/dist/{chunk-N4C3NQIN.js.map → chunk-A7TMFEQ2.js.map} +1 -1
- package/dist/{chunk-2NSQPN7S.js → chunk-AZAI4OVR.js} +3 -3
- package/dist/{chunk-2NSQPN7S.js.map → chunk-AZAI4OVR.js.map} +1 -1
- package/dist/{chunk-DVZ46GQN.js → chunk-CLE2QGCU.js} +3 -3
- package/dist/{chunk-DVZ46GQN.js.map → chunk-CLE2QGCU.js.map} +1 -1
- package/dist/{chunk-5TTYVQ6Q.js → chunk-DE67ECD7.js} +5 -3
- package/dist/chunk-DE67ECD7.js.map +1 -0
- package/dist/{chunk-BAPNIZDV.js → chunk-F2YI5N4L.js} +3 -3
- package/dist/chunk-F2YI5N4L.js.map +1 -0
- package/dist/{chunk-U3N3G2UA.js → chunk-FFCEY76B.js} +10 -5
- package/dist/chunk-FFCEY76B.js.map +1 -0
- package/dist/{chunk-XWPXW46D.js → chunk-GWTHITZO.js} +3 -3
- package/dist/{chunk-XWPXW46D.js.map → chunk-GWTHITZO.js.map} +1 -1
- package/dist/chunk-HDC2IQV2.js +34 -0
- package/dist/chunk-HDC2IQV2.js.map +1 -0
- package/dist/{chunk-VQN5DQP6.js → chunk-HKNIEQ2V.js} +4 -4
- package/dist/{chunk-VQN5DQP6.js.map → chunk-HKNIEQ2V.js.map} +1 -1
- package/dist/{chunk-LA3YBXCR.js → chunk-HPQ462R5.js} +3 -3
- package/dist/{chunk-LA3YBXCR.js.map → chunk-HPQ462R5.js.map} +1 -1
- package/dist/chunk-KSLKNWWM.js +28 -0
- package/dist/chunk-KSLKNWWM.js.map +1 -0
- package/dist/chunk-OKA2PLDV.js +85 -0
- package/dist/chunk-OKA2PLDV.js.map +1 -0
- package/dist/{chunk-6BIEW4WJ.js → chunk-Q6SYKNZ5.js} +3 -3
- package/dist/{chunk-6BIEW4WJ.js.map → chunk-Q6SYKNZ5.js.map} +1 -1
- package/dist/chunk-QID6YYFF.js +33 -0
- package/dist/chunk-QID6YYFF.js.map +1 -0
- package/dist/{chunk-ZVDN3GRI.js → chunk-QJG5ILK5.js} +3 -3
- package/dist/{chunk-ZVDN3GRI.js.map → chunk-QJG5ILK5.js.map} +1 -1
- package/dist/chunk-QXHSA4QD.js +43 -0
- package/dist/chunk-QXHSA4QD.js.map +1 -0
- package/dist/chunk-S632WN4W.js +106 -0
- package/dist/chunk-S632WN4W.js.map +1 -0
- package/dist/{chunk-OFFFRIJG.js → chunk-SDIK6VSC.js} +3 -3
- package/dist/{chunk-OFFFRIJG.js.map → chunk-SDIK6VSC.js.map} +1 -1
- package/dist/{chunk-M5VL22MY.js → chunk-SXMORGSG.js} +3 -3
- package/dist/{chunk-M5VL22MY.js.map → chunk-SXMORGSG.js.map} +1 -1
- package/dist/{chunk-Z6SS4G4V.js → chunk-UMK4D234.js} +3 -3
- package/dist/{chunk-Z6SS4G4V.js.map → chunk-UMK4D234.js.map} +1 -1
- package/dist/{chunk-5PYLJQJX.js → chunk-VS2HPJIX.js} +3 -3
- package/dist/{chunk-5PYLJQJX.js.map → chunk-VS2HPJIX.js.map} +1 -1
- package/dist/{chunk-NOUUOH4R.js → chunk-WDIFWMKE.js} +3 -3
- package/dist/chunk-WDIFWMKE.js.map +1 -0
- package/dist/chunk-Y7KC2FDU.js +88 -0
- package/dist/chunk-Y7KC2FDU.js.map +1 -0
- package/dist/{chunk-OFKSU77Y.js → chunk-ZEVQQQOA.js} +3 -3
- package/dist/{chunk-OFKSU77Y.js.map → chunk-ZEVQQQOA.js.map} +1 -1
- package/dist/combobox.css +3 -0
- package/dist/combobox.css.map +1 -1
- package/dist/combobox.js +2 -2
- package/dist/component-manifest.json +679 -8
- package/dist/date-picker.js +1 -1
- package/dist/dialog.js +1 -1
- package/dist/divider.css +37 -0
- package/dist/divider.css.map +1 -0
- package/dist/divider.d.ts +35 -0
- package/dist/divider.js +4 -0
- package/dist/divider.js.map +1 -0
- package/dist/empty-state.css +175 -0
- package/dist/empty-state.css.map +1 -0
- package/dist/empty-state.d.ts +40 -0
- package/dist/empty-state.js +7 -0
- package/dist/empty-state.js.map +1 -0
- package/dist/field.js +2 -2
- package/dist/icon-button.css +18 -0
- package/dist/icon-button.css.map +1 -1
- package/dist/icon-button.js +3 -3
- package/dist/index.css +489 -0
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +8 -2
- package/dist/index.js +38 -32
- package/dist/link.css +35 -0
- package/dist/link.css.map +1 -0
- package/dist/link.d.ts +37 -0
- package/dist/link.js +5 -0
- package/dist/link.js.map +1 -0
- package/dist/listbox.js +1 -1
- package/dist/menu.js +2 -2
- package/dist/pagination.css +18 -0
- package/dist/pagination.css.map +1 -1
- package/dist/pagination.js +4 -4
- package/dist/picker.css +3 -0
- package/dist/picker.css.map +1 -1
- package/dist/picker.js +2 -2
- package/dist/popover.js +2 -2
- package/dist/radio.js +3 -3
- package/dist/segmented-control.css +111 -0
- package/dist/segmented-control.css.map +1 -0
- package/dist/segmented-control.d.ts +90 -0
- package/dist/segmented-control.js +5 -0
- package/dist/segmented-control.js.map +1 -0
- package/dist/select.js +3 -3
- package/dist/sheet.css +28 -0
- package/dist/sheet.css.map +1 -1
- package/dist/sheet.d.ts +9 -2
- package/dist/sheet.js +1 -1
- package/dist/slider.js +1 -1
- package/dist/switch.js +4 -4
- package/dist/table.js +1 -1
- package/dist/tabs.js +1 -1
- package/dist/text-field.css +63 -0
- package/dist/text-field.css.map +1 -1
- package/dist/text-field.d.ts +15 -2
- package/dist/text-field.js +3 -3
- package/dist/textarea.js +3 -3
- package/dist/toast.css +18 -0
- package/dist/toast.css.map +1 -1
- package/dist/toast.d.ts +21 -3
- package/dist/toast.js +5 -5
- package/dist/tooltip.js +2 -2
- package/package.json +36 -6
- package/dist/chunk-5TTYVQ6Q.js.map +0 -1
- package/dist/chunk-737GQSOB.js +0 -19
- package/dist/chunk-737GQSOB.js.map +0 -1
- package/dist/chunk-BAPNIZDV.js.map +0 -1
- package/dist/chunk-IFIQLIA3.js +0 -48
- package/dist/chunk-IFIQLIA3.js.map +0 -1
- package/dist/chunk-NOUUOH4R.js.map +0 -1
- package/dist/chunk-TJJBCS3N.js +0 -28
- package/dist/chunk-TJJBCS3N.js.map +0 -1
- package/dist/chunk-U3N3G2UA.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { Button, ButtonProps, ButtonSize, ButtonVariant } from './button.js';
|
|
1
|
+
export { Button, ButtonProps, ButtonSize, ButtonTone, ButtonVariant } from './button.js';
|
|
2
2
|
export { TextField, TextFieldProps, TextFieldSize } from './text-field.js';
|
|
3
3
|
export { Card, CardPadding, CardProps, CardVariant } from './card.js';
|
|
4
4
|
export { Tabs, TabsActivation, TabsOrientation, TabsProps } from './tabs.js';
|
|
@@ -19,7 +19,7 @@ export { Select, SelectProps, SelectSize } from './select.js';
|
|
|
19
19
|
export { Spinner, SpinnerProps, SpinnerSize, SpinnerTone } from './spinner.js';
|
|
20
20
|
export { Badge, BadgeProps, BadgeSize, BadgeTone, BadgeVariant } from './badge.js';
|
|
21
21
|
export { Alert, AlertLive, AlertProps, AlertTone } from './alert.js';
|
|
22
|
-
export { ToastContextValue, ToastItem, ToastOptions, ToastPlacement, ToastProvider, ToastProviderProps, useToast } from './toast.js';
|
|
22
|
+
export { ToastContextValue, ToastFunction, ToastItem, ToastOptions, ToastPlacement, ToastProvider, ToastProviderProps, ToastUndoOptions, useToast } from './toast.js';
|
|
23
23
|
export { Progress, ProgressProps, ProgressSize, ProgressTone } from './progress.js';
|
|
24
24
|
export { Skeleton, SkeletonProps, SkeletonShape, SkeletonSize } from './skeleton.js';
|
|
25
25
|
export { Tooltip, TooltipPlacement, TooltipProps } from './tooltip.js';
|
|
@@ -36,6 +36,12 @@ export { Slider, SliderOrientation, SliderProps, SliderValue } from './slider.js
|
|
|
36
36
|
export { Table, TableAlign, TableDensity, TableProps, TableSelectionMode, TableSort, TableSortDirection } from './table.js';
|
|
37
37
|
export { Pagination, PaginationItem, PaginationProps, PaginationSize, paginationRange } from './pagination.js';
|
|
38
38
|
export { Sheet, SheetContentProps, SheetPlacement, SheetProps } from './sheet.js';
|
|
39
|
+
export { Divider, DividerOrientation, DividerProps, DividerSpacing } from './divider.js';
|
|
40
|
+
export { Link, LinkProps, LinkTone, LinkUnderline } from './link.js';
|
|
41
|
+
export { Avatar, AvatarProps } from './avatar.js';
|
|
42
|
+
export { Chip, ChipProps } from './chip.js';
|
|
43
|
+
export { SegmentedControl, SegmentedControlProps } from './segmented-control.js';
|
|
44
|
+
export { EmptyState, EmptyStateProps } from './empty-state.js';
|
|
39
45
|
import 'react';
|
|
40
46
|
import '@pearpages/modals';
|
|
41
47
|
import './ToggleField-C-qKSgHh.js';
|
package/dist/index.js
CHANGED
|
@@ -1,50 +1,56 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export { TextField } from './chunk-IFIQLIA3.js';
|
|
5
|
-
export { Checkbox } from './chunk-Z6SS4G4V.js';
|
|
1
|
+
"use client";export { Tabs } from './chunk-2IYYES7V.js';
|
|
2
|
+
export { Card } from './chunk-HPQ462R5.js';
|
|
3
|
+
export { TextField } from './chunk-S632WN4W.js';
|
|
6
4
|
export { Inline } from './chunk-VIGD7KHC.js';
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
12
|
-
export {
|
|
13
|
-
|
|
14
|
-
export {
|
|
15
|
-
export {
|
|
16
|
-
import './chunk-6BIEW4WJ.js';
|
|
17
|
-
export { Field, useField } from './chunk-M5VL22MY.js';
|
|
18
|
-
export { Listbox } from './chunk-WJDDKNE7.js';
|
|
19
|
-
export { Combobox } from './chunk-NOUUOH4R.js';
|
|
20
|
-
export { Menu } from './chunk-2NSQPN7S.js';
|
|
5
|
+
export { Badge } from './chunk-KSLKNWWM.js';
|
|
6
|
+
export { Select } from './chunk-ZEVQQQOA.js';
|
|
7
|
+
export { Textarea } from './chunk-VS2HPJIX.js';
|
|
8
|
+
export { Radio, RadioGroup } from './chunk-2NVC3C7K.js';
|
|
9
|
+
export { Switch } from './chunk-CLE2QGCU.js';
|
|
10
|
+
export { Checkbox } from './chunk-UMK4D234.js';
|
|
11
|
+
import './chunk-Q6SYKNZ5.js';
|
|
12
|
+
export { Field, useField } from './chunk-SXMORGSG.js';
|
|
13
|
+
export { Menu } from './chunk-AZAI4OVR.js';
|
|
21
14
|
export { Accordion } from './chunk-W2UUZ2DC.js';
|
|
22
15
|
import './chunk-I5OZ63W7.js';
|
|
23
|
-
export { Popover } from './chunk-
|
|
16
|
+
export { Popover } from './chunk-SDIK6VSC.js';
|
|
24
17
|
import './chunk-NAYFLTK6.js';
|
|
25
|
-
export { Tooltip } from './chunk-
|
|
18
|
+
export { Tooltip } from './chunk-GWTHITZO.js';
|
|
26
19
|
import './chunk-U6QRAD73.js';
|
|
27
20
|
export { Skeleton } from './chunk-BR2EH4TK.js';
|
|
28
21
|
export { Progress } from './chunk-YK2OOM56.js';
|
|
29
|
-
export {
|
|
30
|
-
export {
|
|
31
|
-
export { Pagination, paginationRange } from './chunk-
|
|
32
|
-
export { IconButton } from './chunk-
|
|
33
|
-
export { Button } from './chunk-
|
|
34
|
-
export { Spinner } from './chunk-ZL5MMRLG.js';
|
|
35
|
-
import './chunk-ZVDN3GRI.js';
|
|
22
|
+
export { ToastProvider, useToast } from './chunk-FFCEY76B.js';
|
|
23
|
+
export { Alert } from './chunk-A7TMFEQ2.js';
|
|
24
|
+
export { Pagination, paginationRange } from './chunk-HKNIEQ2V.js';
|
|
25
|
+
export { IconButton } from './chunk-56RSH7GQ.js';
|
|
26
|
+
export { Button } from './chunk-DE67ECD7.js';
|
|
36
27
|
export { Table } from './chunk-XGWFTFGR.js';
|
|
37
|
-
import './chunk-CZBCGLEM.js';
|
|
38
|
-
export { VisuallyHidden } from './chunk-IB5UUE3S.js';
|
|
39
28
|
export { Slider } from './chunk-YBECKOVP.js';
|
|
40
29
|
export { DatePicker } from './chunk-Y4YVAHD2.js';
|
|
41
30
|
export { Calendar } from './chunk-W6HEBHA7.js';
|
|
42
31
|
import './chunk-JOGIN4SS.js';
|
|
43
|
-
export { Picker } from './chunk-
|
|
44
|
-
|
|
32
|
+
export { Picker } from './chunk-F2YI5N4L.js';
|
|
33
|
+
export { Listbox } from './chunk-WJDDKNE7.js';
|
|
34
|
+
import './chunk-CZBCGLEM.js';
|
|
35
|
+
export { Combobox } from './chunk-WDIFWMKE.js';
|
|
36
|
+
export { Spinner } from './chunk-ZL5MMRLG.js';
|
|
37
|
+
export { VisuallyHidden } from './chunk-IB5UUE3S.js';
|
|
45
38
|
import './chunk-IRNTXAA7.js';
|
|
46
39
|
import './chunk-DGIXNUNI.js';
|
|
40
|
+
import './chunk-EDTA65L5.js';
|
|
47
41
|
export { Icon } from './chunk-O5LII5XP.js';
|
|
42
|
+
export { EmptyState } from './chunk-5TYCIBLW.js';
|
|
43
|
+
export { Stack } from './chunk-2E2ESMS2.js';
|
|
44
|
+
export { Heading } from './chunk-F3S5BHX2.js';
|
|
45
|
+
export { Text } from './chunk-LKWZZIRZ.js';
|
|
46
|
+
export { SegmentedControl } from './chunk-Y7KC2FDU.js';
|
|
47
|
+
export { Chip } from './chunk-OKA2PLDV.js';
|
|
48
|
+
export { Avatar } from './chunk-QXHSA4QD.js';
|
|
49
|
+
export { Link } from './chunk-HDC2IQV2.js';
|
|
50
|
+
import './chunk-QJG5ILK5.js';
|
|
51
|
+
export { Divider } from './chunk-QID6YYFF.js';
|
|
52
|
+
export { Sheet } from './chunk-7O6FTCZL.js';
|
|
53
|
+
export { Dialog, DialogSystem } from './chunk-55QUKGK2.js';
|
|
48
54
|
import './chunk-MI4QUKQS.js';
|
|
49
55
|
//# sourceMappingURL=index.js.map
|
|
50
56
|
//# sourceMappingURL=index.js.map
|
package/dist/link.css
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/* src/link/Link.module.css */
|
|
2
|
+
@layer reset, tokens, vendor, base, components, utilities;
|
|
3
|
+
@layer components {
|
|
4
|
+
.Link_link {
|
|
5
|
+
border-radius: var(--link-radius);
|
|
6
|
+
color: var(--link-tone-action);
|
|
7
|
+
font-weight: var(--link-weight);
|
|
8
|
+
text-decoration-line: underline;
|
|
9
|
+
text-decoration-thickness: from-font;
|
|
10
|
+
text-underline-offset: 0.2em;
|
|
11
|
+
cursor: pointer;
|
|
12
|
+
transition: color var(--link-duration) var(--motion-easing-standard);
|
|
13
|
+
&[data-tone=default] {
|
|
14
|
+
color: var(--link-tone-default);
|
|
15
|
+
}
|
|
16
|
+
&[data-tone=muted] {
|
|
17
|
+
color: var(--link-tone-muted);
|
|
18
|
+
}
|
|
19
|
+
&[data-underline=hover] {
|
|
20
|
+
text-decoration-line: none;
|
|
21
|
+
}
|
|
22
|
+
&:hover {
|
|
23
|
+
color: var(--link-hover);
|
|
24
|
+
text-decoration-line: underline;
|
|
25
|
+
}
|
|
26
|
+
&:focus-visible {
|
|
27
|
+
outline: var(--link-focus-ring-width) solid var(--link-focus-ring-color);
|
|
28
|
+
outline-offset: var(--link-focus-ring-offset);
|
|
29
|
+
}
|
|
30
|
+
@media (prefers-reduced-motion: reduce) {
|
|
31
|
+
transition: none;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/*# sourceMappingURL=link.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/link/Link.module.css"],"sourcesContent":["/* Every value is a token: --link-* in packages/tokens/tokens/component/link.json */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .link {\n border-radius: var(--link-radius);\n color: var(--link-tone-action);\n font-weight: var(--link-weight);\n text-decoration-line: underline;\n text-decoration-thickness: from-font;\n text-underline-offset: 0.2em;\n cursor: pointer;\n transition: color var(--link-duration) var(--motion-easing-standard);\n\n &[data-tone=\"default\"] { color: var(--link-tone-default); }\n &[data-tone=\"muted\"] { color: var(--link-tone-muted); }\n\n &[data-underline=\"hover\"] { text-decoration-line: none; }\n\n &:hover {\n color: var(--link-hover);\n text-decoration-line: underline;\n }\n\n &:focus-visible {\n outline: var(--link-focus-ring-width) solid var(--link-focus-ring-color);\n outline-offset: var(--link-focus-ring-offset);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n}\n"],"mappings":";AAEA;AAEA;AACE,GAACA;AACC,mBAAe,IAAI;AACnB,WAAO,IAAI;AACX,iBAAa,IAAI;AACjB,0BAAsB;AACtB,+BAA2B;AAC3B,2BAAuB;AACvB,YAAQ;AACR,gBAAY,MAAM,IAAI,iBAAiB,IAAI;AAE3C,KAAC,CAAC;AAAuB,aAAO,IAAI;AAAsB;AAC1D,KAAC,CAAC;AAAqB,aAAO,IAAI;AAAoB;AAEtD,KAAC,CAAC;AAA0B,4BAAsB;AAAM;AAExD,KAAC;AACC,aAAO,IAAI;AACX,4BAAsB;AACxB;AAEA,KAAC;AACC,eAAS,IAAI,yBAAyB,MAAM,IAAI;AAChD,sBAAgB,IAAI;AACtB;AAEA,YAAO,wBAAyB;AAC9B,kBAAY;AACd;AACF;AACF;","names":["link"]}
|
package/dist/link.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { AnchorHTMLAttributes, Ref, ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
type LinkTone = 'action' | 'default' | 'muted';
|
|
5
|
+
type LinkUnderline = 'always' | 'hover';
|
|
6
|
+
interface LinkProps<E extends HTMLElement = HTMLAnchorElement> extends AnchorHTMLAttributes<HTMLAnchorElement> {
|
|
7
|
+
/** `action` is the brand's link colour; `default` and `muted` take the text colours. @default 'action' */
|
|
8
|
+
tone?: LinkTone;
|
|
9
|
+
/**
|
|
10
|
+
* `hover` drops the underline until the pointer is over it. Only for links that
|
|
11
|
+
* are obviously links from where they sit (a nav, a footer list). @default 'always'
|
|
12
|
+
*/
|
|
13
|
+
underline?: LinkUnderline;
|
|
14
|
+
/** Render the single child instead of an `a`: a router's link component. @default false */
|
|
15
|
+
asChild?: boolean;
|
|
16
|
+
ref?: Ref<E>;
|
|
17
|
+
children: ReactNode;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* A text link. Underlined by default, because colour alone must not be what
|
|
21
|
+
* tells a link from the words around it. With `asChild` the styles and props
|
|
22
|
+
* land on a router's own link, so client-side navigation keeps working.
|
|
23
|
+
*
|
|
24
|
+
* @status experimental
|
|
25
|
+
* @category Typography
|
|
26
|
+
* @accessibility A native `a`: focusable and activated with Enter only when it has an `href` (or the `asChild` element provides one). The focus ring comes from the semantic focus tokens. `underline="hover"` removes the only non-colour cue, so it is for lists of links, never for a link inside a sentence (WCAG 1.4.1).
|
|
27
|
+
* @do Use `asChild` with the router's link: `<Link asChild><NextLink href="/feed">Feed</NextLink></Link>`.
|
|
28
|
+
* @do Write link text that makes sense out of context; screen readers list links on their own.
|
|
29
|
+
* @dont Use it for an action that does not navigate; that is a Button (`variant="ghost"`).
|
|
30
|
+
* @dont Use `underline="hover"` for a link inside running text.
|
|
31
|
+
*/
|
|
32
|
+
declare function Link<E extends HTMLElement = HTMLAnchorElement>({ tone, underline, asChild, className, ref, children, ...rest }: LinkProps<E>): react.JSX.Element;
|
|
33
|
+
declare namespace Link {
|
|
34
|
+
var displayName: string;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export { Link, type LinkProps, type LinkTone, type LinkUnderline };
|
package/dist/link.js
ADDED
package/dist/link.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"link.js"}
|
package/dist/listbox.js
CHANGED
package/dist/menu.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { Menu } from './chunk-
|
|
1
|
+
"use client";export { Menu } from './chunk-AZAI4OVR.js';
|
|
2
2
|
import './chunk-I5OZ63W7.js';
|
|
3
3
|
import './chunk-NAYFLTK6.js';
|
|
4
4
|
import './chunk-U6QRAD73.js';
|
|
5
|
-
import './chunk-ZVDN3GRI.js';
|
|
6
5
|
import './chunk-O5LII5XP.js';
|
|
6
|
+
import './chunk-QJG5ILK5.js';
|
|
7
7
|
import './chunk-MI4QUKQS.js';
|
|
8
8
|
//# sourceMappingURL=menu.js.map
|
|
9
9
|
//# sourceMappingURL=menu.js.map
|
package/dist/pagination.css
CHANGED
|
@@ -160,6 +160,24 @@
|
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
|
+
.Button_button[data-tone=danger] {
|
|
164
|
+
&[data-variant=primary] {
|
|
165
|
+
background-color: var(--button-danger-bg);
|
|
166
|
+
color: var(--button-danger-fg);
|
|
167
|
+
&:hover:not(:disabled, [aria-disabled=true]) {
|
|
168
|
+
background-color: var(--button-danger-bg-hover);
|
|
169
|
+
}
|
|
170
|
+
&:active:not(:disabled, [aria-disabled=true]) {
|
|
171
|
+
background-color: var(--button-danger-bg-active);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
&:is([data-variant=secondary], [data-variant=ghost]) {
|
|
175
|
+
color: var(--button-danger-text);
|
|
176
|
+
&:hover:not(:disabled, [aria-disabled=true]) {
|
|
177
|
+
background-color: var(--button-danger-quiet-bg-hover);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
163
181
|
.Button_label {
|
|
164
182
|
display: inline-block;
|
|
165
183
|
}
|
package/dist/pagination.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/icon/Icon.module.css","../src/visually-hidden/VisuallyHidden.module.css","../src/spinner/Spinner.module.css","../src/button/Button.module.css","../src/icon-button/IconButton.module.css","../src/pagination/Pagination.module.css"],"sourcesContent":["/* Every value is a token (--icon-*). The child SVG fills the box; colour is currentColor. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .icon {\n display: inline-flex;\n flex: none;\n inline-size: 1em;\n block-size: 1em;\n font-size: var(--icon-size-md);\n vertical-align: middle;\n\n &[data-size=\"sm\"] { font-size: var(--icon-size-sm); }\n &[data-size=\"lg\"] { font-size: var(--icon-size-lg); }\n &[data-size=\"inherit\"] { font-size: inherit; }\n\n & > * {\n inline-size: 100%;\n block-size: 100%;\n }\n }\n}\n","/* The clip-path technique: present in the accessibility tree, absent from the layout. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .root {\n position: absolute;\n inline-size: var(--visually-hidden-size);\n block-size: var(--visually-hidden-size);\n padding: 0;\n margin: 0;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n }\n}\n","/* Every value is a token (--spinner-*). The ring is a border with one coloured side. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .spinner {\n --_size: var(--spinner-size-md);\n --_track: var(--spinner-track);\n --_indicator: var(--spinner-indicator);\n\n display: inline-flex;\n flex: none;\n inline-size: var(--_size);\n block-size: var(--_size);\n vertical-align: middle;\n\n &[data-size=\"sm\"] { --_size: var(--spinner-size-sm); }\n &[data-size=\"lg\"] { --_size: var(--spinner-size-lg); }\n &[data-size=\"inherit\"] { --_size: 1em; }\n\n &[data-tone=\"inherit\"] {\n --_track: transparent;\n --_indicator: currentcolor;\n }\n }\n\n .ring {\n inline-size: 100%;\n block-size: 100%;\n border: var(--spinner-width) solid var(--_track);\n border-block-start-color: var(--_indicator);\n border-radius: var(--radius-full);\n animation: spin var(--spinner-duration) linear infinite;\n }\n\n @keyframes spin {\n to {\n rotate: 1turn;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .ring {\n animation: none;\n }\n }\n}\n","/*\n * Every value is a token. State is expressed through data attributes so the\n * styling hooks survive a change of styling tool, and so tests and agents can\n * read state off the DOM.\n */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--button-gap);\n min-block-size: var(--button-height-md);\n padding-block: 0;\n padding-inline: var(--button-padding-inline-md);\n border: 1px solid transparent;\n border-radius: var(--button-radius);\n font-family: var(--button-font-family);\n font-size: var(--button-font-size-md);\n font-weight: var(--button-font-weight);\n line-height: 1;\n text-decoration: none;\n white-space: nowrap;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n transition:\n background-color var(--button-motion-duration) var(--motion-easing-standard),\n border-color var(--button-motion-duration) var(--motion-easing-standard),\n color var(--button-motion-duration) var(--motion-easing-standard);\n\n &:focus-visible {\n outline: var(--button-focus-ring-width) solid var(--button-focus-ring);\n outline-offset: var(--button-focus-ring-offset);\n }\n\n &:disabled,\n &[aria-disabled=\"true\"] {\n cursor: not-allowed;\n opacity: 0.55;\n }\n\n &[data-loading] {\n cursor: progress;\n }\n\n &[data-size=\"sm\"] {\n min-block-size: var(--button-height-sm);\n padding-inline: var(--button-padding-inline-sm);\n font-size: var(--button-font-size-sm);\n }\n\n &[data-size=\"lg\"] {\n min-block-size: var(--button-height-lg);\n padding-inline: var(--button-padding-inline-lg);\n font-size: var(--button-font-size-lg);\n }\n\n &[data-variant=\"primary\"] {\n background-color: var(--button-primary-bg);\n color: var(--button-primary-fg);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-primary-bg-hover);\n }\n\n &:active:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-primary-bg-active);\n }\n }\n\n &[data-variant=\"secondary\"] {\n background-color: var(--button-secondary-bg);\n border-color: var(--button-secondary-border);\n color: var(--button-secondary-fg);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-secondary-bg-hover);\n }\n }\n\n &[data-variant=\"ghost\"] {\n background-color: transparent;\n color: var(--button-ghost-fg);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-ghost-bg-hover);\n }\n }\n }\n\n .label {\n display: inline-block;\n }\n}\n","/* Squares a Button. Selectors carry the data attribute so they outrank Button's own size rules. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .iconButton[data-icon-only] {\n gap: 0;\n inline-size: var(--icon-button-size-md);\n padding-inline: 0;\n\n &[data-size=\"sm\"] { inline-size: var(--icon-button-size-sm); }\n &[data-size=\"lg\"] { inline-size: var(--icon-button-size-lg); }\n }\n}\n","/* Every value is a token (--pagination-*). The controls are Buttons; this file lays them out. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .root {\n --_size: var(--pagination-ellipsis-size-md);\n --_font-size: var(--pagination-font-size-md);\n\n font-family: var(--pagination-font-family);\n\n &[data-size=\"sm\"] {\n --_size: var(--pagination-ellipsis-size-sm);\n --_font-size: var(--pagination-font-size-sm);\n }\n }\n\n .list {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--pagination-gap);\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n .page {\n min-inline-size: var(--_size);\n padding-inline: 0;\n font-variant-numeric: tabular-nums;\n }\n\n .ellipsis {\n display: grid;\n place-items: center;\n min-inline-size: var(--_size);\n block-size: var(--_size);\n color: var(--pagination-ellipsis-fg);\n font-size: var(--_font-size);\n }\n}\n"],"mappings":"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","names":["icon","root","spinner","ring","spin","button","label","iconButton","root","list","page","ellipsis"]}
|
|
1
|
+
{"version":3,"sources":["../src/icon/Icon.module.css","../src/visually-hidden/VisuallyHidden.module.css","../src/spinner/Spinner.module.css","../src/button/Button.module.css","../src/icon-button/IconButton.module.css","../src/pagination/Pagination.module.css"],"sourcesContent":["/* Every value is a token (--icon-*). The child SVG fills the box; colour is currentColor. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .icon {\n display: inline-flex;\n flex: none;\n inline-size: 1em;\n block-size: 1em;\n font-size: var(--icon-size-md);\n vertical-align: middle;\n\n &[data-size=\"sm\"] { font-size: var(--icon-size-sm); }\n &[data-size=\"lg\"] { font-size: var(--icon-size-lg); }\n &[data-size=\"inherit\"] { font-size: inherit; }\n\n & > * {\n inline-size: 100%;\n block-size: 100%;\n }\n }\n}\n","/* The clip-path technique: present in the accessibility tree, absent from the layout. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .root {\n position: absolute;\n inline-size: var(--visually-hidden-size);\n block-size: var(--visually-hidden-size);\n padding: 0;\n margin: 0;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n }\n}\n","/* Every value is a token (--spinner-*). The ring is a border with one coloured side. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .spinner {\n --_size: var(--spinner-size-md);\n --_track: var(--spinner-track);\n --_indicator: var(--spinner-indicator);\n\n display: inline-flex;\n flex: none;\n inline-size: var(--_size);\n block-size: var(--_size);\n vertical-align: middle;\n\n &[data-size=\"sm\"] { --_size: var(--spinner-size-sm); }\n &[data-size=\"lg\"] { --_size: var(--spinner-size-lg); }\n &[data-size=\"inherit\"] { --_size: 1em; }\n\n &[data-tone=\"inherit\"] {\n --_track: transparent;\n --_indicator: currentcolor;\n }\n }\n\n .ring {\n inline-size: 100%;\n block-size: 100%;\n border: var(--spinner-width) solid var(--_track);\n border-block-start-color: var(--_indicator);\n border-radius: var(--radius-full);\n animation: spin var(--spinner-duration) linear infinite;\n }\n\n @keyframes spin {\n to {\n rotate: 1turn;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .ring {\n animation: none;\n }\n }\n}\n","/*\n * Every value is a token. State is expressed through data attributes so the\n * styling hooks survive a change of styling tool, and so tests and agents can\n * read state off the DOM.\n */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--button-gap);\n min-block-size: var(--button-height-md);\n padding-block: 0;\n padding-inline: var(--button-padding-inline-md);\n border: 1px solid transparent;\n border-radius: var(--button-radius);\n font-family: var(--button-font-family);\n font-size: var(--button-font-size-md);\n font-weight: var(--button-font-weight);\n line-height: 1;\n text-decoration: none;\n white-space: nowrap;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n transition:\n background-color var(--button-motion-duration) var(--motion-easing-standard),\n border-color var(--button-motion-duration) var(--motion-easing-standard),\n color var(--button-motion-duration) var(--motion-easing-standard);\n\n &:focus-visible {\n outline: var(--button-focus-ring-width) solid var(--button-focus-ring);\n outline-offset: var(--button-focus-ring-offset);\n }\n\n &:disabled,\n &[aria-disabled=\"true\"] {\n cursor: not-allowed;\n opacity: 0.55;\n }\n\n &[data-loading] {\n cursor: progress;\n }\n\n &[data-size=\"sm\"] {\n min-block-size: var(--button-height-sm);\n padding-inline: var(--button-padding-inline-sm);\n font-size: var(--button-font-size-sm);\n }\n\n &[data-size=\"lg\"] {\n min-block-size: var(--button-height-lg);\n padding-inline: var(--button-padding-inline-lg);\n font-size: var(--button-font-size-lg);\n }\n\n &[data-variant=\"primary\"] {\n background-color: var(--button-primary-bg);\n color: var(--button-primary-fg);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-primary-bg-hover);\n }\n\n &:active:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-primary-bg-active);\n }\n }\n\n &[data-variant=\"secondary\"] {\n background-color: var(--button-secondary-bg);\n border-color: var(--button-secondary-border);\n color: var(--button-secondary-fg);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-secondary-bg-hover);\n }\n }\n\n &[data-variant=\"ghost\"] {\n background-color: transparent;\n color: var(--button-ghost-fg);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-ghost-bg-hover);\n }\n }\n }\n\n /* tone=\"danger\", after the variants so it wins at equal specificity plus one attribute. */\n .button[data-tone=\"danger\"] {\n &[data-variant=\"primary\"] {\n background-color: var(--button-danger-bg);\n color: var(--button-danger-fg);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-danger-bg-hover);\n }\n\n &:active:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-danger-bg-active);\n }\n }\n\n &:is([data-variant=\"secondary\"], [data-variant=\"ghost\"]) {\n color: var(--button-danger-text);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-danger-quiet-bg-hover);\n }\n }\n }\n\n .label {\n display: inline-block;\n }\n}\n","/* Squares a Button. Selectors carry the data attribute so they outrank Button's own size rules. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .iconButton[data-icon-only] {\n gap: 0;\n inline-size: var(--icon-button-size-md);\n padding-inline: 0;\n\n &[data-size=\"sm\"] { inline-size: var(--icon-button-size-sm); }\n &[data-size=\"lg\"] { inline-size: var(--icon-button-size-lg); }\n }\n}\n","/* Every value is a token (--pagination-*). The controls are Buttons; this file lays them out. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .root {\n --_size: var(--pagination-ellipsis-size-md);\n --_font-size: var(--pagination-font-size-md);\n\n font-family: var(--pagination-font-family);\n\n &[data-size=\"sm\"] {\n --_size: var(--pagination-ellipsis-size-sm);\n --_font-size: var(--pagination-font-size-sm);\n }\n }\n\n .list {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--pagination-gap);\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n .page {\n min-inline-size: var(--_size);\n padding-inline: 0;\n font-variant-numeric: tabular-nums;\n }\n\n .ellipsis {\n display: grid;\n place-items: center;\n min-inline-size: var(--_size);\n block-size: var(--_size);\n color: var(--pagination-ellipsis-fg);\n font-size: var(--_font-size);\n }\n}\n"],"mappings":";AAEA;AAEA;AACE,GAACA;AACC,aAAS;AACT,UAAM;AACN,iBAAa;AACb,gBAAY;AACZ,eAAW,IAAI;AACf,oBAAgB;AAEhB,KAAC,CAAC;AAAkB,iBAAW,IAAI;AAAiB;AACpD,KAAC,CAAC;AAAkB,iBAAW,IAAI;AAAiB;AACpD,KAAC,CAAC;AAAuB,iBAAW;AAAS;AAE7C,MAAE,EAAE;AACF,mBAAa;AACb,kBAAY;AACd;AACF;AACF;;;ACpBA;AAEA;AACE,GAACC;AACC,cAAU;AACV,iBAAa,IAAI;AACjB,gBAAY,IAAI;AAChB,aAAS;AACT,YAAQ;AACR,cAAU;AACV,eAAW,MAAM;AACjB,iBAAa;AACb,YAAQ;AACV;AACF;;;ACdA;AAEA;AACE,GAACC;AACC,aAAS,IAAI;AACb,cAAU,IAAI;AACd,kBAAc,IAAI;AAElB,aAAS;AACT,UAAM;AACN,iBAAa,IAAI;AACjB,gBAAY,IAAI;AAChB,oBAAgB;AAEhB,KAAC,CAAC;AAAkB,eAAS,IAAI;AAAoB;AACrD,KAAC,CAAC;AAAkB,eAAS,IAAI;AAAoB;AACrD,KAAC,CAAC;AAAuB,eAAS;AAAK;AAEvC,KAAC,CAAC;AACA,gBAAU;AACV,oBAAc;AAChB;AACF;AAEA,GAACC;AACC,iBAAa;AACb,gBAAY;AACZ,YAAQ,IAAI,iBAAiB,MAAM,IAAI;AACvC,8BAA0B,IAAI;AAC9B,mBAAe,IAAI;AACnB,eAAW,aAAK,IAAI,oBAAoB,OAAO;AACjD;AAEA,aAHaC;AAIX;AACE,cAAQ;AACV;AACF;AAEA,UAAO,wBAAyB;AAC9B,KAhBDD;AAiBG,iBAAW;AACb;AACF;AACF;;;ACxCA;AAEA;AACE,GAACE;AACC,aAAS;AACT,iBAAa;AACb,qBAAiB;AACjB,SAAK,IAAI;AACT,oBAAgB,IAAI;AACpB,mBAAe;AACf,oBAAgB,IAAI;AACpB,YAAQ,IAAI,MAAM;AAClB,mBAAe,IAAI;AACnB,iBAAa,IAAI;AACjB,eAAW,IAAI;AACf,iBAAa,IAAI;AACjB,iBAAa;AACb,qBAAiB;AACjB,iBAAa;AACb,YAAQ;AACR,yBAAqB;AACrB,iBAAa;AACb;AAAA,MACE,iBAAiB,IAAI,0BAA0B,IAAI,yBAAyB;AAAA,MAC5E,aAAa,IAAI,0BAA0B,IAAI,yBAAyB;AAAA,MACxE,MAAM,IAAI,0BAA0B,IAAI;AAE1C,KAAC;AACC,eAAS,IAAI,2BAA2B,MAAM,IAAI;AAClD,sBAAgB,IAAI;AACtB;AAEA,KAAC;AAAA,IACD,CAAC,CAAC;AACA,cAAQ;AACR,eAAS;AACX;AAEA,KAAC,CAAC;AACA,cAAQ;AACV;AAEA,KAAC,CAAC;AACA,sBAAgB,IAAI;AACpB,sBAAgB,IAAI;AACpB,iBAAW,IAAI;AACjB;AAEA,KAAC,CAAC;AACA,sBAAgB,IAAI;AACpB,sBAAgB,IAAI;AACpB,iBAAW,IAAI;AACjB;AAEA,KAAC,CAAC;AACA,wBAAkB,IAAI;AACtB,aAAO,IAAI;AAEX,OAAC,MAAM,KAAK,WAAW,CAAC;AACtB,0BAAkB,IAAI;AACxB;AAEA,OAAC,OAAO,KAAK,WAAW,CAAC;AACvB,0BAAkB,IAAI;AACxB;AACF;AAEA,KAAC,CAAC;AACA,wBAAkB,IAAI;AACtB,oBAAc,IAAI;AAClB,aAAO,IAAI;AAEX,OAAC,MAAM,KAAK,WAAW,CAAC;AACtB,0BAAkB,IAAI;AACxB;AACF;AAEA,KAAC,CAAC;AACA,wBAAkB;AAClB,aAAO,IAAI;AAEX,OAAC,MAAM,KAAK,WAAW,CAAC;AACtB,0BAAkB,IAAI;AACxB;AACF;AACF;AAGA,GArFCA,aAqFM,CAAC;AACN,KAAC,CAAC;AACA,wBAAkB,IAAI;AACtB,aAAO,IAAI;AAEX,OAAC,MAAM,KAAK,WAAW,CAAC;AACtB,0BAAkB,IAAI;AACxB;AAEA,OAAC,OAAO,KAAK,WAAW,CAAC;AACvB,0BAAkB,IAAI;AACxB;AACF;AAEA,KAAC,IAAI,CAAC,yBAA2B,CAAC;AAChC,aAAO,IAAI;AAEX,OAAC,MAAM,KAAK,WAAW,CAAC;AACtB,0BAAkB,IAAI;AACxB;AACF;AACF;AAEA,GAACC;AACC,aAAS;AACX;AACF;;;ACtHA;AAEA;AACE,GAACC,qBAAU,CAAC;AACV,SAAK;AACL,iBAAa,IAAI;AACjB,oBAAgB;AAEhB,KAAC,CAAC;AAAkB,mBAAa,IAAI;AAAwB;AAC7D,KAAC,CAAC;AAAkB,mBAAa,IAAI;AAAwB;AAC/D;AACF;;;ACXA;AAEA;AACE,GAACC;AACC,aAAS,IAAI;AACb,kBAAc,IAAI;AAElB,iBAAa,IAAI;AAEjB,KAAC,CAAC;AACA,eAAS,IAAI;AACb,oBAAc,IAAI;AACpB;AACF;AAEA,GAACC;AACC,aAAS;AACT,eAAW;AACX,iBAAa;AACb,SAAK,IAAI;AACT,aAAS;AACT,YAAQ;AACR,gBAAY;AACd;AAEA,GAACC;AACC,qBAAiB,IAAI;AACrB,oBAAgB;AAChB,0BAAsB;AACxB;AAEA,GAACC;AACC,aAAS;AACT,iBAAa;AACb,qBAAiB,IAAI;AACrB,gBAAY,IAAI;AAChB,WAAO,IAAI;AACX,eAAW,IAAI;AACjB;AACF;","names":["icon","root","spinner","ring","spin","button","label","iconButton","root","list","page","ellipsis"]}
|
package/dist/pagination.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { Pagination, paginationRange } from './chunk-
|
|
2
|
-
import './chunk-
|
|
3
|
-
import './chunk-
|
|
1
|
+
export { Pagination, paginationRange } from './chunk-HKNIEQ2V.js';
|
|
2
|
+
import './chunk-56RSH7GQ.js';
|
|
3
|
+
import './chunk-DE67ECD7.js';
|
|
4
4
|
import './chunk-ZL5MMRLG.js';
|
|
5
|
-
import './chunk-ZVDN3GRI.js';
|
|
6
5
|
import './chunk-IB5UUE3S.js';
|
|
7
6
|
import './chunk-O5LII5XP.js';
|
|
7
|
+
import './chunk-QJG5ILK5.js';
|
|
8
8
|
import './chunk-MI4QUKQS.js';
|
|
9
9
|
//# sourceMappingURL=pagination.js.map
|
|
10
10
|
//# sourceMappingURL=pagination.js.map
|
package/dist/picker.css
CHANGED
package/dist/picker.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/icon/Icon.module.css","../src/internal/AriaField.module.css","../src/listbox/Listbox.module.css","../src/picker/Picker.module.css"],"sourcesContent":["/* Every value is a token (--icon-*). The child SVG fills the box; colour is currentColor. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .icon {\n display: inline-flex;\n flex: none;\n inline-size: 1em;\n block-size: 1em;\n font-size: var(--icon-size-md);\n vertical-align: middle;\n\n &[data-size=\"sm\"] { font-size: var(--icon-size-sm); }\n &[data-size=\"lg\"] { font-size: var(--icon-size-lg); }\n &[data-size=\"inherit\"] { font-size: inherit; }\n\n & > * {\n inline-size: 100%;\n block-size: 100%;\n }\n }\n}\n","/* The same --field-* tokens Field reads, on React Aria's label, description and error parts. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .field {\n display: flex;\n flex-direction: column;\n gap: var(--field-gap);\n font-family: var(--font-family-body);\n }\n\n .label {\n font-size: var(--field-label-font-size);\n font-weight: var(--field-label-font-weight);\n color: var(--field-label-fg);\n }\n\n .required {\n margin-inline-start: var(--field-required-gap);\n color: var(--field-required-fg);\n }\n\n .description {\n margin: 0;\n font-size: var(--field-description-font-size);\n color: var(--field-description-fg);\n }\n\n .error {\n margin: 0;\n font-size: var(--field-error-font-size);\n color: var(--field-error-fg);\n }\n}\n","/*\n * Every value is a token (--listbox-*). React Aria writes the state:\n * data-focused (real or virtual focus), data-selected, data-disabled,\n * data-hovered, data-focus-visible, data-empty. The tick is in the DOM for\n * every option and revealed by data-selected.\n */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .list {\n display: flex;\n flex-direction: column;\n max-block-size: var(--listbox-max-height);\n padding: var(--listbox-padding);\n overflow: auto;\n border: var(--size-hairline) solid var(--listbox-border);\n border-radius: var(--listbox-radius);\n background-color: var(--listbox-bg);\n color: var(--listbox-fg);\n font-family: var(--listbox-font-family);\n font-size: var(--listbox-font-size);\n outline: none;\n\n &[data-focus-visible] {\n outline: var(--listbox-focus-ring-width) solid var(--listbox-focus-ring);\n outline-offset: var(--listbox-focus-ring-offset);\n }\n }\n\n .check {\n flex: none;\n visibility: hidden;\n color: var(--listbox-item-check);\n }\n\n .item {\n display: flex;\n align-items: center;\n gap: var(--listbox-item-gap);\n padding-block: var(--listbox-item-padding-block);\n padding-inline: var(--listbox-item-padding-inline);\n border-radius: var(--listbox-item-radius);\n color: var(--listbox-item-fg);\n cursor: default;\n outline: none;\n\n &[data-hovered],\n &[data-focused] {\n background-color: var(--listbox-item-bg-focus);\n }\n\n &[data-selected] {\n background-color: var(--listbox-item-bg-selected);\n\n .check {\n visibility: visible;\n }\n }\n\n &[data-disabled] {\n color: var(--listbox-item-fg-disabled);\n cursor: not-allowed;\n }\n }\n\n .itemBody {\n display: flex;\n flex-direction: column;\n min-inline-size: 0;\n }\n\n .itemLabel {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .itemDescription {\n color: var(--listbox-item-fg-muted);\n font-size: var(--listbox-item-description-font-size);\n }\n\n .empty {\n padding: var(--listbox-empty-padding);\n color: var(--listbox-empty-fg);\n }\n}\n","/*\n * Every value is a token (--picker-*); the options read --listbox-*. The\n * trigger is a button drawn like a text field. The popover is positioned by\n * React Aria; the gap is its own padding and --trigger-width (vendor) sizes it.\n */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .root {\n --_height: var(--picker-height-md);\n --_font-size: var(--picker-font-size-md);\n --_border: var(--picker-border-default);\n\n font-family: var(--picker-font-family);\n\n &[data-size=\"sm\"] {\n --_height: var(--picker-height-sm);\n --_font-size: var(--picker-font-size-sm);\n }\n\n &[data-size=\"lg\"] {\n --_height: var(--picker-height-lg);\n --_font-size: var(--picker-font-size-lg);\n }\n\n &[data-invalid] { --_border: var(--picker-border-invalid); }\n }\n\n .trigger {\n display: flex;\n align-items: center;\n gap: var(--picker-gap);\n inline-size: 100%;\n min-block-size: var(--_height);\n padding-block: 0;\n padding-inline: var(--picker-padding-inline);\n border: var(--size-hairline) solid var(--_border);\n border-radius: var(--picker-radius);\n background-color: var(--picker-bg);\n color: var(--picker-fg);\n font-family: inherit;\n font-size: var(--_font-size);\n text-align: start;\n cursor: pointer;\n transition: border-color var(--picker-motion-duration) var(--motion-easing-standard);\n\n &[data-focus-visible] {\n border-color: var(--picker-border-focus);\n outline: var(--picker-focus-ring-width) solid var(--picker-focus-ring);\n outline-offset: var(--picker-focus-ring-offset);\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n opacity: 0.55;\n }\n\n &[data-hovered]:not([data-focus-visible], [data-disabled]) {\n border-color: var(--picker-border-hover);\n }\n }\n\n .value {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &[data-placeholder] {\n color: var(--picker-placeholder);\n }\n }\n\n .chevron {\n flex: none;\n color: var(--picker-icon);\n }\n\n .popover {\n inline-size: var(--trigger-width);\n padding-block-start: var(--picker-gap);\n animation: fade var(--picker-popover-duration) var(--motion-easing-standard);\n\n &[data-placement=\"top\"] {\n padding-block: 0 var(--picker-gap);\n }\n }\n\n .list {\n box-shadow: var(--picker-popover-shadow);\n }\n\n @keyframes fade {\n from {\n opacity: 0;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .popover {\n animation: none;\n }\n }\n}\n"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../src/icon/Icon.module.css","../src/internal/AriaField.module.css","../src/listbox/Listbox.module.css","../src/picker/Picker.module.css"],"sourcesContent":["/* Every value is a token (--icon-*). The child SVG fills the box; colour is currentColor. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .icon {\n display: inline-flex;\n flex: none;\n inline-size: 1em;\n block-size: 1em;\n font-size: var(--icon-size-md);\n vertical-align: middle;\n\n &[data-size=\"sm\"] { font-size: var(--icon-size-sm); }\n &[data-size=\"lg\"] { font-size: var(--icon-size-lg); }\n &[data-size=\"inherit\"] { font-size: inherit; }\n\n & > * {\n inline-size: 100%;\n block-size: 100%;\n }\n }\n}\n","/* The same --field-* tokens Field reads, on React Aria's label, description and error parts. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .field {\n display: flex;\n flex-direction: column;\n gap: var(--field-gap);\n font-family: var(--font-family-body);\n }\n\n .label {\n font-size: var(--field-label-font-size);\n font-weight: var(--field-label-font-weight);\n color: var(--field-label-fg);\n }\n\n .required {\n margin-inline-start: var(--field-required-gap);\n color: var(--field-required-fg);\n }\n\n .description {\n margin: 0;\n font-size: var(--field-description-font-size);\n color: var(--field-description-fg);\n }\n\n .error {\n margin: 0;\n font-size: var(--field-error-font-size);\n color: var(--field-error-fg);\n }\n}\n","/*\n * Every value is a token (--listbox-*). React Aria writes the state:\n * data-focused (real or virtual focus), data-selected, data-disabled,\n * data-hovered, data-focus-visible, data-empty. The tick is in the DOM for\n * every option and revealed by data-selected.\n */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .list {\n display: flex;\n flex-direction: column;\n max-block-size: var(--listbox-max-height);\n padding: var(--listbox-padding);\n overflow: auto;\n border: var(--size-hairline) solid var(--listbox-border);\n border-radius: var(--listbox-radius);\n background-color: var(--listbox-bg);\n color: var(--listbox-fg);\n font-family: var(--listbox-font-family);\n font-size: var(--listbox-font-size);\n outline: none;\n\n &[data-focus-visible] {\n outline: var(--listbox-focus-ring-width) solid var(--listbox-focus-ring);\n outline-offset: var(--listbox-focus-ring-offset);\n }\n }\n\n .check {\n flex: none;\n visibility: hidden;\n color: var(--listbox-item-check);\n }\n\n .item {\n display: flex;\n align-items: center;\n gap: var(--listbox-item-gap);\n padding-block: var(--listbox-item-padding-block);\n padding-inline: var(--listbox-item-padding-inline);\n border-radius: var(--listbox-item-radius);\n color: var(--listbox-item-fg);\n cursor: default;\n outline: none;\n\n &[data-hovered],\n &[data-focused] {\n background-color: var(--listbox-item-bg-focus);\n }\n\n &[data-selected] {\n background-color: var(--listbox-item-bg-selected);\n\n .check {\n visibility: visible;\n }\n }\n\n &[data-disabled] {\n color: var(--listbox-item-fg-disabled);\n cursor: not-allowed;\n }\n }\n\n .itemBody {\n display: flex;\n flex-direction: column;\n min-inline-size: 0;\n }\n\n .itemLabel {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .itemDescription {\n color: var(--listbox-item-fg-muted);\n font-size: var(--listbox-item-description-font-size);\n }\n\n .empty {\n padding: var(--listbox-empty-padding);\n color: var(--listbox-empty-fg);\n }\n}\n","/*\n * Every value is a token (--picker-*); the options read --listbox-*. The\n * trigger is a button drawn like a text field. The popover is positioned by\n * React Aria; the gap is its own padding and --trigger-width (vendor) sizes it.\n */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .root {\n --_height: var(--picker-height-md);\n --_font-size: var(--picker-font-size-md);\n --_border: var(--picker-border-default);\n\n font-family: var(--picker-font-family);\n\n &[data-size=\"sm\"] {\n --_height: var(--picker-height-sm);\n --_font-size: var(--picker-font-size-sm);\n }\n\n &[data-size=\"lg\"] {\n --_height: var(--picker-height-lg);\n --_font-size: var(--picker-font-size-lg);\n }\n\n &[data-invalid] { --_border: var(--picker-border-invalid); }\n }\n\n .trigger {\n display: flex;\n align-items: center;\n gap: var(--picker-gap);\n inline-size: 100%;\n min-block-size: var(--_height);\n padding-block: 0;\n padding-inline: var(--picker-padding-inline);\n border: var(--size-hairline) solid var(--_border);\n border-radius: var(--picker-radius);\n background-color: var(--picker-bg);\n color: var(--picker-fg);\n font-family: inherit;\n font-size: var(--_font-size);\n text-align: start;\n cursor: pointer;\n transition: border-color var(--picker-motion-duration) var(--motion-easing-standard);\n\n &[data-focus-visible] {\n border-color: var(--picker-border-focus);\n outline: var(--picker-focus-ring-width) solid var(--picker-focus-ring);\n outline-offset: var(--picker-focus-ring-offset);\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n opacity: 0.55;\n }\n\n &[data-hovered]:not([data-focus-visible], [data-disabled]) {\n border-color: var(--picker-border-hover);\n }\n }\n\n .value {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &[data-placeholder] {\n color: var(--picker-placeholder);\n }\n }\n\n .chevron {\n flex: none;\n color: var(--picker-icon);\n }\n\n .popover {\n inline-size: var(--trigger-width);\n padding-block-start: var(--picker-gap);\n animation: fade var(--picker-popover-duration) var(--motion-easing-standard);\n\n &[data-placement=\"top\"] {\n padding-block: 0 var(--picker-gap);\n }\n }\n\n .list {\n box-shadow: var(--picker-popover-shadow);\n }\n\n /* The shared list styles paint an inline Listbox's surface; here the list floats. Two classes, so it wins whatever the stylesheet order. */\n .popover .list {\n background-color: var(--picker-popover-bg);\n }\n\n @keyframes fade {\n from {\n opacity: 0;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .popover {\n animation: none;\n }\n }\n}\n"],"mappings":"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","names":["icon","field","label","required","description","error","list","check","item","itemBody","itemLabel","itemDescription","empty","root","trigger","value","chevron","popover","list","fade"]}
|
package/dist/picker.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { Picker } from './chunk-
|
|
2
|
-
import './chunk-EDTA65L5.js';
|
|
1
|
+
"use client";export { Picker } from './chunk-F2YI5N4L.js';
|
|
3
2
|
import './chunk-IRNTXAA7.js';
|
|
4
3
|
import './chunk-DGIXNUNI.js';
|
|
4
|
+
import './chunk-EDTA65L5.js';
|
|
5
5
|
import './chunk-O5LII5XP.js';
|
|
6
6
|
import './chunk-MI4QUKQS.js';
|
|
7
7
|
//# sourceMappingURL=picker.js.map
|
package/dist/popover.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { Popover } from './chunk-
|
|
1
|
+
"use client";export { Popover } from './chunk-SDIK6VSC.js';
|
|
2
2
|
import './chunk-NAYFLTK6.js';
|
|
3
3
|
import './chunk-U6QRAD73.js';
|
|
4
|
-
import './chunk-
|
|
4
|
+
import './chunk-QJG5ILK5.js';
|
|
5
5
|
import './chunk-MI4QUKQS.js';
|
|
6
6
|
//# sourceMappingURL=popover.js.map
|
|
7
7
|
//# sourceMappingURL=popover.js.map
|
package/dist/radio.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { Radio, RadioGroup } from './chunk-
|
|
2
|
-
import './chunk-
|
|
3
|
-
import './chunk-
|
|
1
|
+
"use client";export { Radio, RadioGroup } from './chunk-2NVC3C7K.js';
|
|
2
|
+
import './chunk-SXMORGSG.js';
|
|
3
|
+
import './chunk-QJG5ILK5.js';
|
|
4
4
|
import './chunk-MI4QUKQS.js';
|
|
5
5
|
//# sourceMappingURL=radio.js.map
|
|
6
6
|
//# sourceMappingURL=radio.js.map
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/* src/segmented-control/SegmentedControl.module.css */
|
|
2
|
+
@layer reset, tokens, vendor, base, components, utilities;
|
|
3
|
+
@layer components {
|
|
4
|
+
.SegmentedControl_root {
|
|
5
|
+
--_height: var(--segmented-control-height-md);
|
|
6
|
+
--_padding: var(--segmented-control-padding-x-md);
|
|
7
|
+
display: inline-flex;
|
|
8
|
+
box-sizing: border-box;
|
|
9
|
+
max-inline-size: 100%;
|
|
10
|
+
color: var(--segmented-control-fg);
|
|
11
|
+
font-family: var(--font-family-body);
|
|
12
|
+
font-size: var(--segmented-control-font-size-md);
|
|
13
|
+
font-weight: var(--segmented-control-weight);
|
|
14
|
+
line-height: 1;
|
|
15
|
+
&[data-size=sm] {
|
|
16
|
+
--_height: var(--segmented-control-height-sm);
|
|
17
|
+
--_padding: var(--segmented-control-padding-x-sm);
|
|
18
|
+
font-size: var(--segmented-control-font-size-sm);
|
|
19
|
+
}
|
|
20
|
+
&[data-look=segmented] {
|
|
21
|
+
padding: var(--segmented-control-inset);
|
|
22
|
+
border: var(--segmented-control-border-width) solid var(--segmented-control-track-border);
|
|
23
|
+
border-radius: var(--segmented-control-track-radius);
|
|
24
|
+
background: var(--segmented-control-track-bg);
|
|
25
|
+
}
|
|
26
|
+
&[data-look=chips] {
|
|
27
|
+
flex-wrap: wrap;
|
|
28
|
+
gap: var(--segmented-control-gap);
|
|
29
|
+
}
|
|
30
|
+
&[data-full-width][data-look=segmented] {
|
|
31
|
+
display: flex;
|
|
32
|
+
}
|
|
33
|
+
&[aria-disabled=true] {
|
|
34
|
+
opacity: 0.55;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
.SegmentedControl_list {
|
|
38
|
+
display: contents;
|
|
39
|
+
}
|
|
40
|
+
.SegmentedControl_option {
|
|
41
|
+
display: inline-flex;
|
|
42
|
+
position: relative;
|
|
43
|
+
min-inline-size: 0;
|
|
44
|
+
.SegmentedControl_root[data-full-width] & {
|
|
45
|
+
flex: 1;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
.SegmentedControl_input {
|
|
49
|
+
position: absolute;
|
|
50
|
+
inset: 0;
|
|
51
|
+
inline-size: 100%;
|
|
52
|
+
block-size: 100%;
|
|
53
|
+
margin: 0;
|
|
54
|
+
opacity: 0;
|
|
55
|
+
cursor: pointer;
|
|
56
|
+
&:disabled {
|
|
57
|
+
cursor: not-allowed;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
.SegmentedControl_segment {
|
|
61
|
+
display: inline-flex;
|
|
62
|
+
flex: 1;
|
|
63
|
+
align-items: center;
|
|
64
|
+
justify-content: center;
|
|
65
|
+
gap: var(--segmented-control-gap);
|
|
66
|
+
box-sizing: border-box;
|
|
67
|
+
min-block-size: calc(var(--_height) - 2 * var(--segmented-control-inset) - 2 * var(--segmented-control-border-width));
|
|
68
|
+
padding-block: 0;
|
|
69
|
+
padding-inline: var(--_padding);
|
|
70
|
+
border: var(--segmented-control-border-width) solid transparent;
|
|
71
|
+
border-radius: var(--segmented-control-segment-radius);
|
|
72
|
+
color: inherit;
|
|
73
|
+
text-decoration: none;
|
|
74
|
+
white-space: nowrap;
|
|
75
|
+
transition: background-color var(--motion-duration-fast) var(--motion-easing-standard), color var(--motion-duration-fast) var(--motion-easing-standard);
|
|
76
|
+
.SegmentedControl_root[data-look=chips] & {
|
|
77
|
+
min-block-size: var(--_height);
|
|
78
|
+
border-color: var(--segmented-control-chip-border);
|
|
79
|
+
border-radius: var(--segmented-control-chip-radius);
|
|
80
|
+
background: var(--segmented-control-chip-bg);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
.SegmentedControl_option:hover .SegmentedControl_segment,
|
|
84
|
+
a.SegmentedControl_segment:hover {
|
|
85
|
+
color: var(--segmented-control-fg-hover);
|
|
86
|
+
}
|
|
87
|
+
.SegmentedControl_option[data-selected] .SegmentedControl_segment {
|
|
88
|
+
border-color: var(--segmented-control-segment-selected-border);
|
|
89
|
+
background: var(--segmented-control-segment-selected-bg);
|
|
90
|
+
box-shadow: var(--segmented-control-segment-selected-shadow);
|
|
91
|
+
color: var(--segmented-control-segment-selected-fg);
|
|
92
|
+
.SegmentedControl_root[data-look=chips] & {
|
|
93
|
+
border-color: var(--segmented-control-chip-selected-border);
|
|
94
|
+
background: var(--segmented-control-chip-selected-bg);
|
|
95
|
+
box-shadow: none;
|
|
96
|
+
color: var(--segmented-control-chip-selected-fg);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
.SegmentedControl_input:focus-visible + .SegmentedControl_segment,
|
|
100
|
+
a.SegmentedControl_segment:focus-visible {
|
|
101
|
+
outline: var(--segmented-control-focus-ring-width) solid var(--segmented-control-focus-ring);
|
|
102
|
+
outline-offset: var(--segmented-control-focus-ring-offset);
|
|
103
|
+
}
|
|
104
|
+
.SegmentedControl_input:disabled + .SegmentedControl_segment {
|
|
105
|
+
opacity: 0.55;
|
|
106
|
+
}
|
|
107
|
+
.SegmentedControl_icon {
|
|
108
|
+
display: inline-flex;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/*# sourceMappingURL=segmented-control.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/segmented-control/SegmentedControl.module.css"],"sourcesContent":["/* Every value is a token: --segmented-control-* in packages/tokens/tokens/component/segmented-control.json */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .root {\n --_height: var(--segmented-control-height-md);\n --_padding: var(--segmented-control-padding-x-md);\n\n display: inline-flex;\n box-sizing: border-box;\n max-inline-size: 100%;\n color: var(--segmented-control-fg);\n font-family: var(--font-family-body);\n font-size: var(--segmented-control-font-size-md);\n font-weight: var(--segmented-control-weight);\n line-height: 1;\n\n &[data-size='sm'] {\n --_height: var(--segmented-control-height-sm);\n --_padding: var(--segmented-control-padding-x-sm);\n\n font-size: var(--segmented-control-font-size-sm);\n }\n\n &[data-look='segmented'] {\n padding: var(--segmented-control-inset);\n border: var(--segmented-control-border-width) solid var(--segmented-control-track-border);\n border-radius: var(--segmented-control-track-radius);\n background: var(--segmented-control-track-bg);\n }\n\n &[data-look='chips'] {\n flex-wrap: wrap;\n gap: var(--segmented-control-gap);\n }\n\n &[data-full-width][data-look='segmented'] {\n display: flex;\n }\n\n &[aria-disabled='true'] {\n opacity: 0.55;\n }\n }\n\n /* The Nav flavour: the list is the flex row the root is for the radios. */\n .list {\n display: contents;\n }\n\n .option {\n display: inline-flex;\n position: relative;\n min-inline-size: 0;\n\n .root[data-full-width] & {\n flex: 1;\n }\n }\n\n /* Visually hidden, still focusable and still in the form: the segment draws its state. */\n .input {\n position: absolute;\n inset: 0;\n inline-size: 100%;\n block-size: 100%;\n margin: 0;\n opacity: 0;\n cursor: pointer;\n\n &:disabled {\n cursor: not-allowed;\n }\n }\n\n .segment {\n display: inline-flex;\n flex: 1;\n align-items: center;\n justify-content: center;\n gap: var(--segmented-control-gap);\n box-sizing: border-box;\n min-block-size: calc(var(--_height) - 2 * var(--segmented-control-inset) - 2 * var(--segmented-control-border-width));\n padding-block: 0;\n padding-inline: var(--_padding);\n border: var(--segmented-control-border-width) solid transparent;\n border-radius: var(--segmented-control-segment-radius);\n color: inherit;\n text-decoration: none;\n white-space: nowrap;\n transition:\n background-color var(--motion-duration-fast) var(--motion-easing-standard),\n color var(--motion-duration-fast) var(--motion-easing-standard);\n\n .root[data-look='chips'] & {\n min-block-size: var(--_height);\n border-color: var(--segmented-control-chip-border);\n border-radius: var(--segmented-control-chip-radius);\n background: var(--segmented-control-chip-bg);\n }\n }\n\n .option:hover .segment,\n a.segment:hover {\n color: var(--segmented-control-fg-hover);\n }\n\n .option[data-selected] .segment {\n border-color: var(--segmented-control-segment-selected-border);\n background: var(--segmented-control-segment-selected-bg);\n box-shadow: var(--segmented-control-segment-selected-shadow);\n color: var(--segmented-control-segment-selected-fg);\n\n .root[data-look='chips'] & {\n border-color: var(--segmented-control-chip-selected-border);\n background: var(--segmented-control-chip-selected-bg);\n box-shadow: none;\n color: var(--segmented-control-chip-selected-fg);\n }\n }\n\n .input:focus-visible + .segment,\n a.segment:focus-visible {\n outline: var(--segmented-control-focus-ring-width) solid var(--segmented-control-focus-ring);\n outline-offset: var(--segmented-control-focus-ring-offset);\n }\n\n .input:disabled + .segment {\n opacity: 0.55;\n }\n\n .icon {\n display: inline-flex;\n }\n}\n"],"mappings":";AAEA;AAEA;AACE,GAACA;AACC,eAAW,IAAI;AACf,gBAAY,IAAI;AAEhB,aAAS;AACT,gBAAY;AACZ,qBAAiB;AACjB,WAAO,IAAI;AACX,iBAAa,IAAI;AACjB,eAAW,IAAI;AACf,iBAAa,IAAI;AACjB,iBAAa;AAEb,KAAC,CAAC;AACA,iBAAW,IAAI;AACf,kBAAY,IAAI;AAEhB,iBAAW,IAAI;AACjB;AAEA,KAAC,CAAC;AACA,eAAS,IAAI;AACb,cAAQ,IAAI,kCAAkC,MAAM,IAAI;AACxD,qBAAe,IAAI;AACnB,kBAAY,IAAI;AAClB;AAEA,KAAC,CAAC;AACA,iBAAW;AACX,WAAK,IAAI;AACX;AAEA,KAAC,CAAC,gBAAgB,CAAC;AACjB,eAAS;AACX;AAEA,KAAC,CAAC;AACA,eAAS;AACX;AACF;AAGA,GAACC;AACC,aAAS;AACX;AAEA,GAACC;AACC,aAAS;AACT,cAAU;AACV,qBAAiB;AAEjB,KAnDDF,qBAmDM,CAAC,iBAAiB;AACrB,YAAM;AACR;AACF;AAGA,GAACG;AACC,cAAU;AACV,WAAO;AACP,iBAAa;AACb,gBAAY;AACZ,YAAQ;AACR,aAAS;AACT,YAAQ;AAER,KAAC;AACC,cAAQ;AACV;AACF;AAEA,GAACC;AACC,aAAS;AACT,UAAM;AACN,iBAAa;AACb,qBAAiB;AACjB,SAAK,IAAI;AACT,gBAAY;AACZ,oBAAgB,KAAK,IAAI,WAAW,EAAE,EAAE,EAAE,IAAI,2BAA2B,EAAE,EAAE,EAAE,IAAI;AACnF,mBAAe;AACf,oBAAgB,IAAI;AACpB,YAAQ,IAAI,kCAAkC,MAAM;AACpD,mBAAe,IAAI;AACnB,WAAO;AACP,qBAAiB;AACjB,iBAAa;AACb,gBACE,iBAAiB,IAAI,wBAAwB,IAAI,yBAAyB,EAC1E,MAAM,IAAI,wBAAwB,IAAI;AAExC,KA1FDJ,qBA0FM,CAAC,iBAAmB;AACvB,sBAAgB,IAAI;AACpB,oBAAc,IAAI;AAClB,qBAAe,IAAI;AACnB,kBAAY,IAAI;AAClB;AACF;AAEA,GApDCE,uBAoDM,OAAO,CA3BbE;AAAA,EA4BD,CAAC,CA5BAA,wBA4BQ;AACP,WAAO,IAAI;AACb;AAEA,GAzDCF,uBAyDM,CAAC,eAAe,CAhCtBE;AAiCC,kBAAc,IAAI;AAClB,gBAAY,IAAI;AAChB,gBAAY,IAAI;AAChB,WAAO,IAAI;AAEX,KA7GDJ,qBA6GM,CAAC,iBAAmB;AACvB,oBAAc,IAAI;AAClB,kBAAY,IAAI;AAChB,kBAAY;AACZ,aAAO,IAAI;AACb;AACF;AAEA,GA5DCG,sBA4DK,eAAe,EAAE,CA9CtBC;AAAA,EA+CD,CAAC,CA/CAA,wBA+CQ;AACP,aAAS,IAAI,sCAAsC,MAAM,IAAI;AAC7D,oBAAgB,IAAI;AACtB;AAEA,GAlECD,sBAkEK,UAAU,EAAE,CApDjBC;AAqDC,aAAS;AACX;AAEA,GAACC;AACC,aAAS;AACX;AACF;","names":["root","list","option","input","segment","icon"]}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { HTMLAttributes, ReactNode, Ref, AnchorHTMLAttributes } from 'react';
|
|
3
|
+
|
|
4
|
+
type SegmentedControlSize = 'sm' | 'md';
|
|
5
|
+
type SegmentedControlLook = 'segmented' | 'chips';
|
|
6
|
+
interface SegmentedControlOption<T extends string = string> {
|
|
7
|
+
value: T;
|
|
8
|
+
label: ReactNode;
|
|
9
|
+
/** Decorative: hidden from assistive technology, so the label must stand on its own. */
|
|
10
|
+
icon?: ReactNode;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
}
|
|
13
|
+
interface SegmentedControlProps<T extends string = string> extends Omit<HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange' | 'children'> {
|
|
14
|
+
/** Names the group for assistive technology. Not rendered; label it visibly with `aria-labelledby` instead when there is a heading. */
|
|
15
|
+
label?: string;
|
|
16
|
+
options: ReadonlyArray<SegmentedControlOption<T>>;
|
|
17
|
+
/** Controlled selected value. */
|
|
18
|
+
value?: T;
|
|
19
|
+
/** Initially selected value when uncontrolled. */
|
|
20
|
+
defaultValue?: T;
|
|
21
|
+
onValueChange?: (value: T) => void;
|
|
22
|
+
/** Form field name shared by the radios. Generated when omitted. */
|
|
23
|
+
name?: string;
|
|
24
|
+
/** `segmented` is one track with a raised thumb; `chips` is separate pills that wrap. @default 'segmented' */
|
|
25
|
+
look?: SegmentedControlLook;
|
|
26
|
+
/** @default 'md' */
|
|
27
|
+
size?: SegmentedControlSize;
|
|
28
|
+
/** Segments share the container's width equally. `segmented` look only. @default false */
|
|
29
|
+
fullWidth?: boolean;
|
|
30
|
+
disabled?: boolean;
|
|
31
|
+
ref?: Ref<HTMLDivElement>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* One choice out of a few, all visible, switching what is shown in place: a
|
|
35
|
+
* view mode, a unit, a sort order. Generic over a string union, so `value`
|
|
36
|
+
* and `onValueChange` are typed by the options. For links that navigate to
|
|
37
|
+
* another page use `SegmentedControl.Nav`, which looks the same and is a `nav`.
|
|
38
|
+
*
|
|
39
|
+
* @status experimental
|
|
40
|
+
* @category Forms
|
|
41
|
+
* @accessibility A `radiogroup` of native radio inputs, exactly as RadioGroup: the keyboard is the browser's own (arrows move and select, Tab enters on the checked radio and leaves the group), nothing is re-implemented. Name the group with `label` or `aria-labelledby`. The inputs are visually hidden, not removed, so the focus ring is drawn on the visible segment and the control takes part in a form (`name`). Icons are decorative.
|
|
42
|
+
* @do Use it for two to five short options that change the view in place.
|
|
43
|
+
* @do Use `SegmentedControl.Nav` when each option is a URL.
|
|
44
|
+
* @dont Use it for on/off; that is a Switch. For several at once, toggle Chips.
|
|
45
|
+
* @dont Use it for a form question with longer labels or a description; that is a RadioGroup.
|
|
46
|
+
*/
|
|
47
|
+
declare function SegmentedControl<T extends string = string>({ label, options, value, defaultValue, onValueChange, name, look, size, fullWidth, disabled, className, ref, ...rest }: SegmentedControlProps<T>): react.JSX.Element;
|
|
48
|
+
declare namespace SegmentedControl {
|
|
49
|
+
var displayName: string;
|
|
50
|
+
var Nav: typeof SegmentedControlNav;
|
|
51
|
+
var NavItem: typeof SegmentedControlNavItem;
|
|
52
|
+
}
|
|
53
|
+
interface SegmentedControlNavProps extends HTMLAttributes<HTMLElement> {
|
|
54
|
+
/** Names the landmark ("Feed view"). Required: a page with several `nav`s needs them told apart. */
|
|
55
|
+
label: string;
|
|
56
|
+
/** @default 'segmented' */
|
|
57
|
+
look?: SegmentedControlLook;
|
|
58
|
+
/** @default 'md' */
|
|
59
|
+
size?: SegmentedControlSize;
|
|
60
|
+
/** @default false */
|
|
61
|
+
fullWidth?: boolean;
|
|
62
|
+
ref?: Ref<HTMLElement>;
|
|
63
|
+
/** `SegmentedControl.NavItem`s. */
|
|
64
|
+
children: ReactNode;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* The same look for links that navigate: a labelled `nav` with a list of
|
|
68
|
+
* links, the current one marked `aria-current="page"`. Not a radiogroup and
|
|
69
|
+
* not tabs: following a link loads another page, and a screen reader user
|
|
70
|
+
* should be told so.
|
|
71
|
+
*/
|
|
72
|
+
declare function SegmentedControlNav({ label, look, size, fullWidth, className, ref, children, ...rest }: SegmentedControlNavProps): react.JSX.Element;
|
|
73
|
+
declare namespace SegmentedControlNav {
|
|
74
|
+
var displayName: string;
|
|
75
|
+
}
|
|
76
|
+
interface SegmentedControlNavItemProps<E extends HTMLElement = HTMLAnchorElement> extends AnchorHTMLAttributes<HTMLAnchorElement> {
|
|
77
|
+
/** This link is the page being shown: `aria-current="page"` and the selected look. @default false */
|
|
78
|
+
current?: boolean;
|
|
79
|
+
/** Render the single child instead of an `a`: a router's link component. @default false */
|
|
80
|
+
asChild?: boolean;
|
|
81
|
+
ref?: Ref<E>;
|
|
82
|
+
children: ReactNode;
|
|
83
|
+
}
|
|
84
|
+
/** One link of a `SegmentedControl.Nav`. With `asChild`, the router's own link takes the styles. */
|
|
85
|
+
declare function SegmentedControlNavItem<E extends HTMLElement = HTMLAnchorElement>({ current, asChild, className, ref, children, ...rest }: SegmentedControlNavItemProps<E>): react.JSX.Element;
|
|
86
|
+
declare namespace SegmentedControlNavItem {
|
|
87
|
+
var displayName: string;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export { SegmentedControl, type SegmentedControlProps };
|