@surflane/ui 0.3.0 → 0.5.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.
Files changed (151) hide show
  1. package/README.md +18 -8
  2. package/dist/accordion.d.ts +26 -0
  3. package/dist/accordion.js +27 -0
  4. package/dist/alert-dialog.d.ts +31 -0
  5. package/dist/alert-dialog.js +22 -0
  6. package/dist/app-shell.js +17 -17
  7. package/dist/{input-extensions.d.ts → autocomplete.d.ts} +4 -42
  8. package/dist/{input-extensions.js → autocomplete.js} +12 -31
  9. package/dist/avatar.d.ts +24 -0
  10. package/dist/avatar.js +24 -0
  11. package/dist/badge.d.ts +20 -0
  12. package/dist/badge.js +16 -0
  13. package/dist/breadcrumbs.d.ts +13 -0
  14. package/dist/breadcrumbs.js +31 -0
  15. package/dist/button.d.ts +11 -0
  16. package/dist/button.js +28 -5
  17. package/dist/{content.d.ts → card.d.ts} +6 -24
  18. package/dist/card.js +26 -0
  19. package/dist/chart.d.ts +19 -0
  20. package/dist/chart.js +29 -8
  21. package/dist/checkbox-group.d.ts +2 -0
  22. package/dist/checkbox-group.js +16 -0
  23. package/dist/checkbox.d.ts +9 -0
  24. package/dist/checkbox.js +29 -0
  25. package/dist/choice-label.d.ts +25 -0
  26. package/dist/choice-label.js +14 -0
  27. package/dist/choice.d.ts +7 -0
  28. package/dist/choice.js +3 -0
  29. package/dist/code.d.ts +21 -0
  30. package/dist/{content.js → code.js} +10 -32
  31. package/dist/collapsible.d.ts +18 -0
  32. package/dist/collapsible.js +21 -0
  33. package/dist/{advanced-forms.d.ts → combobox.d.ts} +5 -25
  34. package/dist/combobox.js +57 -0
  35. package/dist/{context-overlays.d.ts → context-menu.d.ts} +6 -28
  36. package/dist/context-menu.js +30 -0
  37. package/dist/date-picker.js +3 -2
  38. package/dist/dialog.d.ts +6 -24
  39. package/dist/dialog.js +9 -21
  40. package/dist/{panels.d.ts → drawer.d.ts} +3 -34
  41. package/dist/drawer.js +47 -0
  42. package/dist/empty-state.d.ts +29 -0
  43. package/dist/empty-state.js +19 -0
  44. package/dist/field.d.ts +42 -0
  45. package/dist/field.js +21 -0
  46. package/dist/fieldset.d.ts +14 -0
  47. package/dist/fieldset.js +10 -0
  48. package/dist/file-upload.d.ts +3 -1
  49. package/dist/file-upload.js +8 -6
  50. package/dist/filter-bar.js +6 -6
  51. package/dist/form.d.ts +2 -0
  52. package/dist/form.js +7 -0
  53. package/dist/icon.d.ts +10 -0
  54. package/dist/icon.js +19 -2
  55. package/dist/index.d.ts +57 -31
  56. package/dist/index.js +71 -31
  57. package/dist/{messages.d.ts → inline-message.d.ts} +0 -28
  58. package/dist/inline-message.js +23 -0
  59. package/dist/input.js +3 -3
  60. package/dist/{foundations.d.ts → layout.d.ts} +5 -23
  61. package/dist/layout.js +40 -0
  62. package/dist/link.d.ts +6 -0
  63. package/dist/link.js +17 -0
  64. package/dist/list.d.ts +33 -0
  65. package/dist/list.js +21 -0
  66. package/dist/markdown.js +7 -7
  67. package/dist/menu.d.ts +7 -5
  68. package/dist/menu.js +24 -20
  69. package/dist/menubar.d.ts +4 -0
  70. package/dist/menubar.js +4 -0
  71. package/dist/meter.d.ts +29 -0
  72. package/dist/meter.js +13 -0
  73. package/dist/native-select.d.ts +8 -0
  74. package/dist/native-select.js +54 -0
  75. package/dist/navigation-menu.js +14 -11
  76. package/dist/number-field.d.ts +23 -0
  77. package/dist/number-field.js +33 -0
  78. package/dist/otp-field.js +4 -4
  79. package/dist/page-header.d.ts +12 -0
  80. package/dist/page-header.js +9 -0
  81. package/dist/pagination.js +4 -5
  82. package/dist/panel.d.ts +13 -0
  83. package/dist/panel.js +13 -0
  84. package/dist/parts.d.ts +22 -1
  85. package/dist/parts.js +40 -7
  86. package/dist/popover.d.ts +23 -6
  87. package/dist/popover.js +17 -7
  88. package/dist/preview-card.d.ts +29 -0
  89. package/dist/preview-card.js +27 -0
  90. package/dist/progress.d.ts +29 -0
  91. package/dist/progress.js +13 -0
  92. package/dist/radio-group.d.ts +16 -0
  93. package/dist/radio-group.js +31 -0
  94. package/dist/scroll-area.js +4 -5
  95. package/dist/select.d.ts +8 -8
  96. package/dist/select.js +19 -53
  97. package/dist/separator.d.ts +4 -0
  98. package/dist/separator.js +8 -0
  99. package/dist/sheet.d.ts +29 -0
  100. package/dist/sheet.js +39 -0
  101. package/dist/sizing.js +1 -1
  102. package/dist/skeleton.d.ts +8 -0
  103. package/dist/skeleton.js +8 -0
  104. package/dist/slider.d.ts +40 -0
  105. package/dist/slider.js +27 -0
  106. package/dist/spinner.d.ts +13 -0
  107. package/dist/spinner.js +10 -0
  108. package/dist/status.d.ts +1 -19
  109. package/dist/status.js +10 -14
  110. package/dist/switch.d.ts +13 -0
  111. package/dist/switch.js +25 -0
  112. package/dist/syntax-context.d.ts +7 -0
  113. package/dist/syntax-context.js +4 -0
  114. package/dist/syntax-highlighter.d.ts +4 -1
  115. package/dist/syntax-highlighter.js +13 -6
  116. package/dist/syntax-highlighting.d.ts +8 -0
  117. package/dist/syntax-highlighting.js +12 -0
  118. package/dist/{data.d.ts → table.d.ts} +8 -32
  119. package/dist/table.js +67 -0
  120. package/dist/tabs.d.ts +29 -0
  121. package/dist/tabs.js +13 -0
  122. package/dist/textarea.d.ts +7 -0
  123. package/dist/textarea.js +12 -0
  124. package/dist/toast.js +18 -17
  125. package/dist/toggle-group.d.ts +5 -0
  126. package/dist/toggle-group.js +7 -0
  127. package/dist/toggle.d.ts +7 -0
  128. package/dist/toggle.js +9 -0
  129. package/dist/{commands.d.ts → toolbar.d.ts} +0 -13
  130. package/dist/toolbar.js +14 -0
  131. package/dist/tooltip.d.ts +3 -2
  132. package/dist/tooltip.js +2 -2
  133. package/dist/tree.js +4 -2
  134. package/dist/typography.d.ts +12 -0
  135. package/dist/typography.js +14 -0
  136. package/package.json +286 -21
  137. package/src/all.css +8 -0
  138. package/src/styles.css +3745 -3629
  139. package/dist/advanced-forms.js +0 -93
  140. package/dist/commands.js +0 -27
  141. package/dist/context-overlays.js +0 -50
  142. package/dist/data.js +0 -82
  143. package/dist/feedback.d.ts +0 -76
  144. package/dist/feedback.js +0 -35
  145. package/dist/forms.d.ts +0 -91
  146. package/dist/forms.js +0 -109
  147. package/dist/foundations.js +0 -55
  148. package/dist/messages.js +0 -38
  149. package/dist/navigation.d.ts +0 -107
  150. package/dist/navigation.js +0 -108
  151. package/dist/panels.js +0 -99
@@ -1,93 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import * as React from 'react';
4
- import { Combobox as BaseCombobox } from '@base-ui/react/combobox';
5
- import { NumberField as BaseNumberField } from '@base-ui/react/number-field';
6
- import { skin, part } from './parts.js';
7
- import { useRootRef, useResetValue } from './form-state.js';
8
- function Mark({ kind, }) {
9
- const path = kind === 'check'
10
- ? 'm5 12 4 4L19 6'
11
- : kind === 'clear'
12
- ? 'm6 6 12 12M6 18 18 6'
13
- : kind === 'expand'
14
- ? 'm6 9 6 6 6-6'
15
- : kind === 'plus'
16
- ? 'M5 12h14M12 5v14'
17
- : 'M5 12h14';
18
- return (_jsx("svg", { width: '16', height: '16', viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: '1.6', "aria-hidden": 'true', children: _jsx("path", { d: path }) }));
19
- }
20
- function ComboboxRoot({ children, form, ...props }) {
21
- const anchor = React.useRef(null);
22
- // Base UI does not reset its internal selection/query model on native form reset.
23
- // Recreate that model together; controlled value/query props remain caller-owned.
24
- const [, , revision] = useResetValue(true, true, anchor, form);
25
- return (_jsxs(BaseCombobox.Root, { ...props, form: form, children: [_jsx("span", { hidden: true, ref: anchor }), children] }, revision));
26
- }
27
- const ComboPopup = part(BaseCombobox.Popup, 'pui-combobox-popup');
28
- const ComboPositioner = part(BaseCombobox.Positioner, 'pui-positioner');
29
- const ComboContent = React.forwardRef(function ComboContent({ positionerProps, ...props }, ref) {
30
- return (_jsx(BaseCombobox.Portal, { children: _jsx(ComboPositioner, { sideOffset: 6, ...positionerProps, children: _jsx(ComboPopup, { ...props, ref: ref }) }) }));
31
- });
32
- const ComboTrigger = React.forwardRef(function ComboTrigger({ children, className, ...props }, ref) {
33
- return (_jsx(BaseCombobox.Trigger, { "aria-label": 'Show options', ...props, ref: ref, className: skin('pui-combobox-action', className), children: children ?? _jsx(Mark, { kind: 'expand' }) }));
34
- });
35
- const ComboClear = React.forwardRef(function ComboClear({ children, className, ...props }, ref) {
36
- return (_jsx(BaseCombobox.Clear, { "aria-label": 'Clear selection', ...props, ref: ref, className: skin('pui-combobox-action', className), children: children ?? _jsx(Mark, { kind: 'clear' }) }));
37
- });
38
- const ComboIndicator = React.forwardRef(function ComboIndicator({ children, className, ...props }, ref) {
39
- return (_jsx(BaseCombobox.ItemIndicator, { keepMounted: true, ...props, ref: ref, className: skin('pui-combobox-indicator', className), children: children ?? _jsx(Mark, { kind: 'check' }) }));
40
- });
41
- const ComboRemove = React.forwardRef(function ComboRemove({ children, className, ...props }, ref) {
42
- return (_jsx(BaseCombobox.ChipRemove, { ...props, ref: ref, className: skin('pui-combobox-chip-remove', className), children: children ?? _jsx(Mark, { kind: 'clear' }) }));
43
- });
44
- export const Combobox = {
45
- ...BaseCombobox,
46
- Root: ComboboxRoot,
47
- Content: ComboContent,
48
- Popup: ComboPopup,
49
- Positioner: ComboPositioner,
50
- Trigger: ComboTrigger,
51
- Clear: ComboClear,
52
- ItemIndicator: ComboIndicator,
53
- ChipRemove: ComboRemove,
54
- Input: part(BaseCombobox.Input, 'pui-input pui-combobox-input'),
55
- InputGroup: part(BaseCombobox.InputGroup, 'pui-combobox-group'),
56
- List: part(BaseCombobox.List, 'pui-combobox-list scroll-area'),
57
- Item: part(BaseCombobox.Item, 'pui-combobox-item'),
58
- Empty: part(BaseCombobox.Empty, 'pui-combobox-empty'),
59
- Status: part(BaseCombobox.Status, 'pui-combobox-status'),
60
- Group: part(BaseCombobox.Group, 'pui-combobox-section'),
61
- GroupLabel: part(BaseCombobox.GroupLabel, 'pui-combobox-section-label'),
62
- Separator: part(BaseCombobox.Separator, 'pui-combobox-separator'),
63
- Chips: part(BaseCombobox.Chips, 'pui-combobox-chips'),
64
- Chip: part(BaseCombobox.Chip, 'pui-combobox-chip'),
65
- };
66
- const NumberRoot = React.forwardRef(function NumberRoot({ value, defaultValue, onValueChange, className, form, ...props }, ref) {
67
- const [element, attach] = useRootRef(ref);
68
- const [numeric, setNumeric] = useResetValue(value, defaultValue ?? null, element, form);
69
- return (_jsx(BaseNumberField.Root, { ...props, form: form, ref: attach, value: numeric, className: skin('pui-number-field', className), onValueChange: (next, event) => {
70
- onValueChange?.(next, event);
71
- if (value === undefined && !event.isCanceled)
72
- setNumeric(next);
73
- } }));
74
- });
75
- const NumberIncrement = React.forwardRef(function NumberIncrement({ className, children, ...props }, ref) {
76
- return (_jsx(BaseNumberField.Increment, { "aria-label": 'Increase value', ...props, ref: ref, className: skin('pui-number-step', className), children: children ?? _jsx(Mark, { kind: 'plus' }) }));
77
- });
78
- const NumberDecrement = React.forwardRef(function NumberDecrement({ className, children, ...props }, ref) {
79
- return (_jsx(BaseNumberField.Decrement, { "aria-label": 'Decrease value', ...props, ref: ref, className: skin('pui-number-step', className), children: children ?? _jsx(Mark, { kind: 'minus' }) }));
80
- });
81
- export const NumberField = {
82
- ...BaseNumberField,
83
- Root: NumberRoot,
84
- Increment: NumberIncrement,
85
- Decrement: NumberDecrement,
86
- Group: part(BaseNumberField.Group, 'pui-number-group'),
87
- Input: part(BaseNumberField.Input, 'pui-number-input'),
88
- ScrubArea: part(BaseNumberField.ScrubArea, 'pui-number-scrub'),
89
- };
90
- // Flat names for React Server Components, which cannot dot into client exports.
91
- export { ComboboxRoot };
92
- export const { Arrow: ComboboxArrow, Backdrop: ComboboxBackdrop, Chip: ComboboxChip, ChipRemove: ComboboxChipRemove, Chips: ComboboxChips, Clear: ComboboxClear, Collection: ComboboxCollection, Empty: ComboboxEmpty, Group: ComboboxGroup, GroupLabel: ComboboxGroupLabel, Icon: ComboboxIcon, Input: ComboboxInput, InputGroup: ComboboxInputGroup, Item: ComboboxItem, ItemIndicator: ComboboxItemIndicator, Label: ComboboxLabel, List: ComboboxList, Popup: ComboboxPopup, Portal: ComboboxPortal, Positioner: ComboboxPositioner, Row: ComboboxRow, Separator: ComboboxSeparator, Status: ComboboxStatus, Trigger: ComboboxTrigger, Value: ComboboxValue, Content: ComboboxContent, } = Combobox;
93
- export const { Decrement: NumberFieldDecrement, Group: NumberFieldGroup, Increment: NumberFieldIncrement, Input: NumberFieldInput, Root: NumberFieldRoot, ScrubArea: NumberFieldScrubArea, ScrubAreaCursor: NumberFieldScrubAreaCursor, } = NumberField;
package/dist/commands.js DELETED
@@ -1,27 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- import { useComponentSize } from './sizing.js';
4
- import { Toggle as BaseToggle } from '@base-ui/react/toggle';
5
- import { ToggleGroup as BaseToggleGroup } from '@base-ui/react/toggle-group';
6
- import { Toolbar as BaseToolbar } from '@base-ui/react/toolbar';
7
- import { Menubar as BaseMenubar } from '@base-ui/react/menubar';
8
- import { skin, part } from './parts.js';
9
- export function Toggle({ className, size, ref, ...props }) {
10
- const scheme = useComponentSize(size === 'icon' ? undefined : size);
11
- return (_jsx(BaseToggle, { ...props, ref: ref, className: skin('pui-button pui-toggle', className), "data-size": size, "data-ui-size": scheme }));
12
- }
13
- export function ToggleGroup({ className, ref, ...props }) {
14
- return (_jsx(BaseToggleGroup, { ...props, ref: ref, className: skin('pui-toggle-group', className) }));
15
- }
16
- export const Toolbar = {
17
- ...BaseToolbar,
18
- Root: part(BaseToolbar.Root, 'pui-toolbar'),
19
- Group: part(BaseToolbar.Group, 'pui-toolbar-group'),
20
- Button: part(BaseToolbar.Button, 'pui-button pui-toolbar-button'),
21
- Link: part(BaseToolbar.Link, 'pui-button pui-toolbar-link'),
22
- Input: part(BaseToolbar.Input, 'pui-input pui-toolbar-input'),
23
- Separator: part(BaseToolbar.Separator, 'pui-toolbar-separator'),
24
- };
25
- export const Menubar = part(BaseMenubar, 'pui-menubar');
26
- // Flat names for React Server Components, which cannot dot into client exports.
27
- export const { Button: ToolbarButton, Group: ToolbarGroup, Input: ToolbarInput, Link: ToolbarLink, Root: ToolbarRoot, Separator: ToolbarSeparator, } = Toolbar;
@@ -1,50 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- import * as React from 'react';
4
- import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu';
5
- import { PreviewCard as BasePreviewCard } from '@base-ui/react/preview-card';
6
- import { Menu } from './menu.js';
7
- import { part, skin } from './parts.js';
8
- const ContextPositioner = part(BaseContextMenu.Positioner, 'pui-positioner');
9
- const ContextContent = React.forwardRef(function ContextContent({ positionerProps, ...props }, ref) {
10
- return (_jsx(ContextPositioner, { ...positionerProps, children: _jsx(Menu.Popup, { ...props, ref: ref }) }));
11
- });
12
- /** Same menu anatomy and styling, with the context-specific cursor positioner. */
13
- export const ContextMenu = {
14
- ...BaseContextMenu,
15
- Trigger: part(BaseContextMenu.Trigger, 'pui-context-trigger'),
16
- Positioner: ContextPositioner,
17
- Content: ContextContent,
18
- Popup: Menu.Popup,
19
- Item: Menu.Item,
20
- LinkItem: Menu.LinkItem,
21
- CheckboxItem: Menu.CheckboxItem,
22
- CheckboxItemIndicator: Menu.CheckboxItemIndicator,
23
- RadioItem: Menu.RadioItem,
24
- RadioItemIndicator: Menu.RadioItemIndicator,
25
- GroupLabel: Menu.GroupLabel,
26
- Separator: Menu.Separator,
27
- SubmenuTrigger: Menu.SubmenuTrigger,
28
- };
29
- const PreviewPositioner = part(BasePreviewCard.Positioner, 'pui-positioner');
30
- // The preview is visual enhancement; its destination is the accessible interface.
31
- const PreviewPopup = React.forwardRef(function PreviewPopup({ className, ...props }, ref) {
32
- return (_jsx(BasePreviewCard.Popup, { ...props, ref: ref, "aria-hidden": 'true', className: skin('pui-preview-card', className) }));
33
- });
34
- function PreviewTrigger(props) {
35
- const { className, ...rest } = props;
36
- return (_jsx(BasePreviewCard.Trigger, { ...rest, className: skin('pui-link pui-preview-trigger', className) }));
37
- }
38
- const PreviewContent = React.forwardRef(function PreviewContent({ positionerProps, ...props }, ref) {
39
- return (_jsx(PreviewPositioner, { sideOffset: 8, collisionPadding: 12, ...positionerProps, children: _jsx(PreviewPopup, { ...props, ref: ref }) }));
40
- });
41
- export const PreviewCard = {
42
- ...BasePreviewCard,
43
- Trigger: PreviewTrigger,
44
- Positioner: PreviewPositioner,
45
- Popup: PreviewPopup,
46
- Content: PreviewContent,
47
- };
48
- // Flat names for React Server Components, which cannot dot into client exports.
49
- export const { Arrow: ContextMenuArrow, Backdrop: ContextMenuBackdrop, CheckboxItem: ContextMenuCheckboxItem, CheckboxItemIndicator: ContextMenuCheckboxItemIndicator, Group: ContextMenuGroup, GroupLabel: ContextMenuGroupLabel, Item: ContextMenuItem, LinkItem: ContextMenuLinkItem, Popup: ContextMenuPopup, Portal: ContextMenuPortal, Positioner: ContextMenuPositioner, RadioGroup: ContextMenuRadioGroup, RadioItem: ContextMenuRadioItem, RadioItemIndicator: ContextMenuRadioItemIndicator, Root: ContextMenuRoot, Separator: ContextMenuSeparator, SubmenuRoot: ContextMenuSubmenuRoot, SubmenuTrigger: ContextMenuSubmenuTrigger, Trigger: ContextMenuTrigger, Content: ContextMenuContent, } = ContextMenu;
50
- export const { Arrow: PreviewCardArrow, Backdrop: PreviewCardBackdrop, Handle: PreviewCardHandle, Popup: PreviewCardPopup, Portal: PreviewCardPortal, Positioner: PreviewCardPositioner, Root: PreviewCardRoot, Trigger: PreviewCardTrigger, Viewport: PreviewCardViewport, Content: PreviewCardContent, } = PreviewCard;
package/dist/data.js DELETED
@@ -1,82 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import * as React from 'react';
4
- import { Button } from './button.js';
5
- import { part } from './parts.js';
6
- import { ScrollArea } from './scroll-area.js';
7
- const TableContainer = React.forwardRef(function TableContainer(props, ref) {
8
- return _jsx(ScrollArea, { ...props, ref: ref });
9
- });
10
- const RootPart = part('table', 'pui-table');
11
- const TableRoot = React.forwardRef(function TableRoot({ density, stickyHeader, ...props }, ref) {
12
- return (_jsx(RootPart, { ...props, ref: ref, "data-density": density === 'compact' ? 'compact' : undefined, "data-sticky-header": stickyHeader || undefined }));
13
- });
14
- const layout = ({ align, numeric }) => ({
15
- 'data-align': numeric ? 'end' : align,
16
- 'data-numeric': numeric || undefined,
17
- });
18
- const HeaderCellPart = part('th', 'pui-table-cell pui-table-header');
19
- const CellPart = part('td', 'pui-table-cell');
20
- // align replaces the obsolete HTML align attribute of th and td.
21
- const TableHeaderCell = React.forwardRef(function TableHeaderCell({ align, numeric, ...props }, ref) {
22
- return _jsx(HeaderCellPart, { ...props, ...layout({ align, numeric }), ref: ref });
23
- });
24
- const TableCell = React.forwardRef(function TableCell({ align, numeric, ...props }, ref) {
25
- return _jsx(CellPart, { ...props, ...layout({ align, numeric }), ref: ref });
26
- });
27
- function SortIcon({ sort }) {
28
- return (_jsx("svg", { className: 'pui-table-sort-icon', width: '16', height: '16', viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: '1.6', strokeLinecap: 'round', strokeLinejoin: 'round', "aria-hidden": 'true', children: _jsx("path", { d: sort === 'ascending'
29
- ? 'M12 19V5m-6 6 6-6 6 6'
30
- : sort === 'descending'
31
- ? 'M12 5v14m-6-6 6 6 6-6'
32
- : 'm8 9 4-4 4 4m-8 6 4 4 4-4' }) }));
33
- }
34
- /** A column header whose button sorts the column. aria-sort names the order on the sorted column only. */
35
- const TableSortHeader = React.forwardRef(function TableSortHeader({ sort, onSort, disabled, children, className, ...props }, ref) {
36
- return (_jsx(TableHeaderCell, { ...props, ref: ref, scope: 'col', "aria-sort": sort, className: ['pui-table-sort-header', className].filter(Boolean).join(' '), children: _jsxs(Button, { variant: 'ghost', className: 'pui-table-sort', "data-sort": sort, disabled: disabled, onClick: onSort, children: [_jsx("span", { children: children }), _jsx(SortIcon, { sort: sort })] }) }));
37
- });
38
- /** One-line text that ends in an ellipsis. String content also becomes the title. */
39
- const TableTruncate = React.forwardRef(function TableTruncate({ className, title, children, ...props }, ref) {
40
- return (_jsx("span", { ...props, ref: ref, title: title ?? (typeof children === 'string' ? children : undefined), className: ['pui-table-truncate', className].filter(Boolean).join(' '), children: children }));
41
- });
42
- /** A full-width body row for loading, empty, error and permission messages. It has no hover. */
43
- const TableMessage = React.forwardRef(function TableMessage({ className, ...props }, ref) {
44
- return (_jsx("tr", { className: 'pui-table-row pui-table-message-row', children: _jsx("td", { ...props, ref: ref, className: ['pui-table-cell pui-table-message', className]
45
- .filter(Boolean)
46
- .join(' ') }) }));
47
- });
48
- const TableRow = React.forwardRef(function TableRow({ selected, className, ...props }, ref) {
49
- return (_jsx("tr", { ...props, ref: ref, "data-selected": selected || undefined, className: ['pui-table-row', className].filter(Boolean).join(' ') }));
50
- });
51
- export const Table = {
52
- Container: TableContainer,
53
- Root: TableRoot,
54
- Caption: part('caption', 'pui-table-caption'),
55
- Head: part('thead', 'pui-table-head'),
56
- Body: part('tbody', 'pui-table-body'),
57
- Foot: part('tfoot', 'pui-table-foot'),
58
- Row: TableRow,
59
- HeaderCell: TableHeaderCell,
60
- SortHeader: TableSortHeader,
61
- Cell: TableCell,
62
- Truncate: TableTruncate,
63
- Message: TableMessage,
64
- };
65
- const ListRoot = React.forwardRef(function ListRoot({ className, ...props }, ref) {
66
- return (_jsx("ul", { role: 'list', ...props, ref: ref, className: ['pui-list', className].filter(Boolean).join(' ') }));
67
- });
68
- const ListItem = React.forwardRef(function ListItem({ selected, className, ...props }, ref) {
69
- return (_jsx("li", { ...props, ref: ref, "data-selected": selected || undefined, className: ['pui-list-item', className].filter(Boolean).join(' ') }));
70
- });
71
- export const List = {
72
- Root: ListRoot,
73
- Item: ListItem,
74
- Content: part('div', 'pui-list-content'),
75
- Title: part('div', 'pui-list-title'),
76
- Description: part('p', 'pui-list-description'),
77
- Actions: part('div', 'pui-list-actions'),
78
- };
79
- // Flat names for React Server Components, which cannot dot into client exports.
80
- export { ListRoot, ListItem, TableContainer, TableRoot, TableRow, TableHeaderCell, TableSortHeader, TableCell, TableTruncate, TableMessage, };
81
- export const { Content: ListContent, Title: ListTitle, Description: ListDescription, Actions: ListActions, } = List;
82
- export const { Caption: TableCaption, Head: TableHead, Body: TableBody, Foot: TableFoot, } = Table;
@@ -1,76 +0,0 @@
1
- import * as React from 'react';
2
- import { type ComponentSizeAlias } from './sizing.js';
3
- export declare const Progress: {
4
- Root: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/progress").ProgressRootProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
5
- size?: import("./sizing.js").ComponentSize;
6
- } & React.RefAttributes<HTMLDivElement>>;
7
- Label: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/progress").ProgressLabelProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
8
- size?: import("./sizing.js").ComponentSize;
9
- } & React.RefAttributes<HTMLSpanElement>>;
10
- Value: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/progress").ProgressValueProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
11
- size?: import("./sizing.js").ComponentSize;
12
- } & React.RefAttributes<HTMLSpanElement>>;
13
- Track: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/progress").ProgressTrackProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
14
- size?: import("./sizing.js").ComponentSize;
15
- } & React.RefAttributes<HTMLDivElement>>;
16
- Indicator: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/progress").ProgressIndicatorProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
17
- size?: import("./sizing.js").ComponentSize;
18
- } & React.RefAttributes<HTMLDivElement>>;
19
- };
20
- export declare const Meter: {
21
- Root: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/meter").MeterRootProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
22
- size?: import("./sizing.js").ComponentSize;
23
- } & React.RefAttributes<HTMLDivElement>>;
24
- Label: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/meter").MeterLabelProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
25
- size?: import("./sizing.js").ComponentSize;
26
- } & React.RefAttributes<HTMLSpanElement>>;
27
- Value: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/meter").MeterValueProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
28
- size?: import("./sizing.js").ComponentSize;
29
- } & React.RefAttributes<HTMLSpanElement>>;
30
- Track: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/meter").MeterTrackProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
31
- size?: import("./sizing.js").ComponentSize;
32
- } & React.RefAttributes<HTMLDivElement>>;
33
- Indicator: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/meter").MeterIndicatorProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
34
- size?: import("./sizing.js").ComponentSize;
35
- } & React.RefAttributes<HTMLDivElement>>;
36
- };
37
- export type SpinnerProps = Omit<React.ComponentPropsWithoutRef<'span'>, 'children'> & {
38
- label?: string;
39
- decorative?: boolean;
40
- size?: ComponentSizeAlias;
41
- };
42
- /** Use decorative within a loading region that already owns the announcement. */
43
- export declare const Spinner: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref">, "children"> & {
44
- label?: string;
45
- decorative?: boolean;
46
- size?: ComponentSizeAlias;
47
- } & React.RefAttributes<HTMLSpanElement>>;
48
- export type SkeletonProps = Omit<React.ComponentPropsWithoutRef<'span'>, 'children'> & {
49
- shape?: 'text' | 'block' | 'circle';
50
- };
51
- /** Decorative placeholder; the owning region provides aria-busy and loading text. */
52
- export declare const Skeleton: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref">, "children"> & {
53
- shape?: "text" | "block" | "circle";
54
- } & React.RefAttributes<HTMLSpanElement>>;
55
- export declare const MeterIndicator: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/meter").MeterIndicatorProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
56
- size?: import("./sizing.js").ComponentSize;
57
- } & React.RefAttributes<HTMLDivElement>>, MeterLabel: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/meter").MeterLabelProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
58
- size?: import("./sizing.js").ComponentSize;
59
- } & React.RefAttributes<HTMLSpanElement>>, MeterRoot: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/meter").MeterRootProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
60
- size?: import("./sizing.js").ComponentSize;
61
- } & React.RefAttributes<HTMLDivElement>>, MeterTrack: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/meter").MeterTrackProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
62
- size?: import("./sizing.js").ComponentSize;
63
- } & React.RefAttributes<HTMLDivElement>>, MeterValue: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/meter").MeterValueProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
64
- size?: import("./sizing.js").ComponentSize;
65
- } & React.RefAttributes<HTMLSpanElement>>;
66
- export declare const ProgressIndicator: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/progress").ProgressIndicatorProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
67
- size?: import("./sizing.js").ComponentSize;
68
- } & React.RefAttributes<HTMLDivElement>>, ProgressLabel: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/progress").ProgressLabelProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
69
- size?: import("./sizing.js").ComponentSize;
70
- } & React.RefAttributes<HTMLSpanElement>>, ProgressRoot: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/progress").ProgressRootProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
71
- size?: import("./sizing.js").ComponentSize;
72
- } & React.RefAttributes<HTMLDivElement>>, ProgressTrack: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/progress").ProgressTrackProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
73
- size?: import("./sizing.js").ComponentSize;
74
- } & React.RefAttributes<HTMLDivElement>>, ProgressValue: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/progress").ProgressValueProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
75
- size?: import("./sizing.js").ComponentSize;
76
- } & React.RefAttributes<HTMLSpanElement>>;
package/dist/feedback.js DELETED
@@ -1,35 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import * as React from 'react';
4
- import { useComponentSize } from './sizing.js';
5
- import { Progress as BaseProgress } from '@base-ui/react/progress';
6
- import { Meter as BaseMeter } from '@base-ui/react/meter';
7
- import { part } from './parts.js';
8
- export const Progress = {
9
- ...BaseProgress,
10
- Root: part(BaseProgress.Root, 'pui-gauge pui-progress'),
11
- Label: part(BaseProgress.Label, 'pui-gauge-label'),
12
- Value: part(BaseProgress.Value, 'pui-gauge-value'),
13
- Track: part(BaseProgress.Track, 'pui-gauge-track'),
14
- Indicator: part(BaseProgress.Indicator, 'pui-gauge-indicator'),
15
- };
16
- export const Meter = {
17
- ...BaseMeter,
18
- Root: part(BaseMeter.Root, 'pui-gauge pui-meter'),
19
- Label: part(BaseMeter.Label, 'pui-gauge-label'),
20
- Value: part(BaseMeter.Value, 'pui-gauge-value'),
21
- Track: part(BaseMeter.Track, 'pui-gauge-track'),
22
- Indicator: part(BaseMeter.Indicator, 'pui-gauge-indicator'),
23
- };
24
- /** Use decorative within a loading region that already owns the announcement. */
25
- export const Spinner = React.forwardRef(function Spinner({ label = 'Loading', decorative = false, size, className, ...props }, ref) {
26
- const scheme = useComponentSize(size);
27
- return (_jsxs("span", { ...props, ref: ref, className: ['pui-spinner', className].filter(Boolean).join(' '), "data-size": size, "data-ui-size": scheme, role: decorative ? undefined : 'status', "aria-hidden": decorative || undefined, children: [_jsxs("svg", { viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: '2', "aria-hidden": 'true', children: [_jsx("circle", { cx: '12', cy: '12', r: '9', opacity: '.2' }), _jsx("path", { d: 'M12 3a9 9 0 0 1 9 9', strokeLinecap: 'round' })] }), !decorative && _jsx("span", { className: 'pui-feedback-sr', children: label })] }));
28
- });
29
- /** Decorative placeholder; the owning region provides aria-busy and loading text. */
30
- export const Skeleton = React.forwardRef(function Skeleton({ shape = 'text', className, ...props }, ref) {
31
- return (_jsx("span", { ...props, ref: ref, className: ['pui-skeleton', className].filter(Boolean).join(' '), "data-shape": shape, "aria-hidden": 'true' }));
32
- });
33
- // Flat names for React Server Components, which cannot dot into client exports.
34
- export const { Indicator: MeterIndicator, Label: MeterLabel, Root: MeterRoot, Track: MeterTrack, Value: MeterValue, } = Meter;
35
- export const { Indicator: ProgressIndicator, Label: ProgressLabel, Root: ProgressRoot, Track: ProgressTrack, Value: ProgressValue, } = Progress;
package/dist/forms.d.ts DELETED
@@ -1,91 +0,0 @@
1
- import * as React from 'react';
2
- import { type ComponentSize } from './sizing.js';
3
- import { Form as BaseForm } from '@base-ui/react/form';
4
- import { Radio as BaseRadio } from '@base-ui/react/radio';
5
- import { RadioGroup as BaseRadioGroup } from '@base-ui/react/radio-group';
6
- declare const FieldRoot: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/field").FieldRootProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
7
- size?: ComponentSize;
8
- } & React.RefAttributes<HTMLDivElement>>;
9
- declare const FieldLabel: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/field").FieldLabelProps, "ref"> & React.RefAttributes<HTMLElement>, "ref">, "size"> & {
10
- size?: ComponentSize;
11
- } & React.RefAttributes<HTMLElement>>;
12
- declare const FieldControl: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/field").FieldControlProps, "ref"> & React.RefAttributes<HTMLElement>, "ref">, "size"> & {
13
- size?: ComponentSize;
14
- } & React.RefAttributes<HTMLElement>>;
15
- declare const FieldDescription: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/field").FieldDescriptionProps, "ref"> & React.RefAttributes<HTMLParagraphElement>, "ref">, "size"> & {
16
- size?: ComponentSize;
17
- } & React.RefAttributes<HTMLParagraphElement>>;
18
- declare const FieldError: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/field").FieldErrorProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
19
- size?: ComponentSize;
20
- } & React.RefAttributes<HTMLDivElement>>;
21
- declare const FieldItem: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/field").FieldItemProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
22
- size?: ComponentSize;
23
- } & React.RefAttributes<HTMLDivElement>>;
24
- export declare const Field: {
25
- Root: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/field").FieldRootProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
26
- size?: ComponentSize;
27
- } & React.RefAttributes<HTMLDivElement>>;
28
- Label: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/field").FieldLabelProps, "ref"> & React.RefAttributes<HTMLElement>, "ref">, "size"> & {
29
- size?: ComponentSize;
30
- } & React.RefAttributes<HTMLElement>>;
31
- Control: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/field").FieldControlProps, "ref"> & React.RefAttributes<HTMLElement>, "ref">, "size"> & {
32
- size?: ComponentSize;
33
- } & React.RefAttributes<HTMLElement>>;
34
- Description: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/field").FieldDescriptionProps, "ref"> & React.RefAttributes<HTMLParagraphElement>, "ref">, "size"> & {
35
- size?: ComponentSize;
36
- } & React.RefAttributes<HTMLParagraphElement>>;
37
- Error: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/field").FieldErrorProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
38
- size?: ComponentSize;
39
- } & React.RefAttributes<HTMLDivElement>>;
40
- Item: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/field").FieldItemProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
41
- size?: ComponentSize;
42
- } & React.RefAttributes<HTMLDivElement>>;
43
- Validity: React.FC<import("@base-ui/react/field").FieldValidityProps>;
44
- };
45
- export declare const Fieldset: {
46
- Root: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/fieldset").FieldsetRootProps, "ref"> & React.RefAttributes<HTMLElement>, "ref">, "size"> & {
47
- size?: ComponentSize;
48
- } & React.RefAttributes<HTMLElement>>;
49
- Legend: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/fieldset").FieldsetLegendProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
50
- size?: ComponentSize;
51
- } & React.RefAttributes<HTMLDivElement>>;
52
- };
53
- export declare function Form<Values extends Record<string, unknown> = Record<string, unknown>>({ className, ...props }: BaseForm.Props<Values>): React.JSX.Element;
54
- export declare const Textarea: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement>, "ref"> & {
55
- size?: ComponentSize;
56
- } & React.RefAttributes<HTMLTextAreaElement>>;
57
- declare const CheckboxRoot: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/checkbox").CheckboxRootProps, "ref"> & React.RefAttributes<HTMLElement>, "ref"> & React.RefAttributes<HTMLElement>>;
58
- declare const CheckboxIndicator: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/checkbox").CheckboxIndicatorProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
59
- export declare const Checkbox: {
60
- Root: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/checkbox").CheckboxRootProps, "ref"> & React.RefAttributes<HTMLElement>, "ref"> & React.RefAttributes<HTMLElement>>;
61
- Indicator: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/checkbox").CheckboxIndicatorProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
62
- };
63
- export declare const CheckboxGroup: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/checkbox-group").CheckboxGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
64
- export declare function RadioGroup<Value = string>({ value, defaultValue, onValueChange, className, form, ref, ...props }: BaseRadioGroup.Props<Value>): React.JSX.Element;
65
- declare const RadioRoot: React.ForwardRefExoticComponent<Omit<BaseRadio.Root.Props<unknown>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
66
- export declare const Radio: {
67
- Root: React.ForwardRefExoticComponent<Omit<BaseRadio.Root.Props<unknown>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
68
- Indicator: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/radio").RadioIndicatorProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
69
- size?: ComponentSize;
70
- } & React.RefAttributes<HTMLSpanElement>>;
71
- };
72
- declare const SwitchRoot: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/switch").SwitchRootProps, "ref"> & React.RefAttributes<HTMLElement>, "ref"> & React.RefAttributes<HTMLElement>>;
73
- export declare const Switch: {
74
- Root: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/switch").SwitchRootProps, "ref"> & React.RefAttributes<HTMLElement>, "ref"> & React.RefAttributes<HTMLElement>>;
75
- Thumb: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/switch").SwitchThumbProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
76
- size?: ComponentSize;
77
- } & React.RefAttributes<HTMLSpanElement>>;
78
- };
79
- export { CheckboxIndicator, CheckboxRoot, FieldControl, FieldDescription, FieldError, FieldItem, FieldLabel, FieldRoot, RadioRoot, SwitchRoot, };
80
- export declare const FieldValidity: React.FC<import("@base-ui/react/field").FieldValidityProps>;
81
- export declare const FieldsetLegend: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/fieldset").FieldsetLegendProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
82
- size?: ComponentSize;
83
- } & React.RefAttributes<HTMLDivElement>>, FieldsetRoot: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/fieldset").FieldsetRootProps, "ref"> & React.RefAttributes<HTMLElement>, "ref">, "size"> & {
84
- size?: ComponentSize;
85
- } & React.RefAttributes<HTMLElement>>;
86
- export declare const RadioIndicator: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/radio").RadioIndicatorProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
87
- size?: ComponentSize;
88
- } & React.RefAttributes<HTMLSpanElement>>;
89
- export declare const SwitchThumb: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/switch").SwitchThumbProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
90
- size?: ComponentSize;
91
- } & React.RefAttributes<HTMLSpanElement>>;
package/dist/forms.js DELETED
@@ -1,109 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import * as React from 'react';
4
- import { useComponentSize } from './sizing.js';
5
- import { Field as BaseField } from '@base-ui/react/field';
6
- import { Fieldset as BaseFieldset } from '@base-ui/react/fieldset';
7
- import { Form as BaseForm } from '@base-ui/react/form';
8
- import { Checkbox as BaseCheckbox } from '@base-ui/react/checkbox';
9
- import { CheckboxGroup as BaseCheckboxGroup } from '@base-ui/react/checkbox-group';
10
- import { Radio as BaseRadio } from '@base-ui/react/radio';
11
- import { RadioGroup as BaseRadioGroup } from '@base-ui/react/radio-group';
12
- import { Switch as BaseSwitch } from '@base-ui/react/switch';
13
- const ChoiceResetPaint = React.createContext(0);
14
- import { skin, part } from './parts.js';
15
- const FieldRoot = part(BaseField.Root, 'pui-field');
16
- const FieldLabel = part(BaseField.Label, 'pui-field-label');
17
- const FieldControl = part(BaseField.Control, 'pui-input');
18
- const FieldDescription = part(BaseField.Description, 'pui-field-description');
19
- const FieldError = part(BaseField.Error, 'pui-field-error');
20
- const FieldItem = part(BaseField.Item, 'pui-field-item');
21
- export const Field = {
22
- ...BaseField,
23
- Root: FieldRoot,
24
- Label: FieldLabel,
25
- Control: FieldControl,
26
- Description: FieldDescription,
27
- Error: FieldError,
28
- Item: FieldItem,
29
- };
30
- export const Fieldset = {
31
- ...BaseFieldset,
32
- Root: part(BaseFieldset.Root, 'pui-fieldset'),
33
- Legend: part(BaseFieldset.Legend, 'pui-fieldset-legend'),
34
- };
35
- export function Form({ className, ...props }) {
36
- return _jsx(BaseForm, { ...props, className: skin('pui-form', className) });
37
- }
38
- export const Textarea = React.forwardRef(function Textarea({ className, size, ...props }, ref) {
39
- const scheme = useComponentSize(size);
40
- return (_jsx("textarea", { "data-ui-size": scheme, ...props, ref: ref, className: ['pui-input pui-textarea', className]
41
- .filter(Boolean)
42
- .join(' ') }));
43
- });
44
- import { useRootRef, useResetValue } from './form-state.js';
45
- const CheckboxRoot = React.forwardRef(function CheckboxRoot({ checked, defaultChecked = false, onCheckedChange, className, form, ...props }, ref) {
46
- React.useContext(ChoiceResetPaint);
47
- const [element, attach] = useRootRef(ref);
48
- const [selected, setSelected] = useResetValue(checked, defaultChecked, element, form);
49
- return (_jsx(BaseCheckbox.Root, { ...props, form: form, ref: attach, checked: selected, className: skin('pui-checkbox', className), onCheckedChange: (next, event) => {
50
- onCheckedChange?.(next, event);
51
- if (checked === undefined && !event.isCanceled)
52
- setSelected(next);
53
- } }));
54
- });
55
- const CheckboxIndicator = React.forwardRef(function CheckboxIndicator({ className, children, ...props }, ref) {
56
- return (_jsx(BaseCheckbox.Indicator, { ...props, ref: ref, className: skin('pui-checkbox-indicator', className), children: children ?? (_jsxs("svg", { width: '14', height: '14', viewBox: '0 0 20 20', fill: 'none', stroke: 'currentColor', strokeWidth: '2', "aria-hidden": 'true', children: [_jsx("path", { className: 'pui-checkbox-check', d: 'm4 10 4 4 8-8' }), _jsx("path", { className: 'pui-checkbox-mixed', d: 'M4 10h12' })] })) }));
57
- });
58
- export const Checkbox = {
59
- ...BaseCheckbox,
60
- Root: CheckboxRoot,
61
- Indicator: CheckboxIndicator,
62
- };
63
- export const CheckboxGroup = React.forwardRef(function CheckboxGroup({ value, defaultValue = [], onValueChange, className, ...props }, ref) {
64
- const [element, attach] = useRootRef(ref);
65
- const [selected, setSelected, revision] = useResetValue(value, defaultValue, element);
66
- return (_jsx(ChoiceResetPaint.Provider, { value: revision, children: _jsx(BaseCheckboxGroup, { ...props, ref: attach, value: selected, className: skin('pui-choice-group', className), onValueChange: (next, event) => {
67
- onValueChange?.(next, event);
68
- if (value === undefined && !event.isCanceled)
69
- setSelected(next);
70
- } }) }));
71
- });
72
- export function RadioGroup({ value, defaultValue, onValueChange, className, form, ref, ...props }) {
73
- const [element, attach] = useRootRef(ref);
74
- const [selected, setSelected, revision] = useResetValue(value, defaultValue ?? null, element, form);
75
- return (_jsx(ChoiceResetPaint.Provider, { value: revision, children: _jsx(BaseRadioGroup, { ...props, form: form, ref: attach, value: selected, className: skin('pui-choice-group', className), onValueChange: (next, event) => {
76
- onValueChange?.(next, event);
77
- if (value === undefined && !event.isCanceled)
78
- setSelected(next);
79
- } }) }));
80
- }
81
- const RadioRoot = React.forwardRef(function RadioRoot({ className, ...props }, ref) {
82
- React.useContext(ChoiceResetPaint);
83
- return (_jsx(BaseRadio.Root, { ...props, ref: ref, className: skin('pui-radio', className) }));
84
- });
85
- export const Radio = {
86
- ...BaseRadio,
87
- Root: RadioRoot,
88
- Indicator: part(BaseRadio.Indicator, 'pui-radio-indicator'),
89
- };
90
- const SwitchRoot = React.forwardRef(function SwitchRoot({ checked, defaultChecked = false, onCheckedChange, className, form, ...props }, ref) {
91
- const [element, attach] = useRootRef(ref);
92
- const [selected, setSelected] = useResetValue(checked, defaultChecked, element, form);
93
- return (_jsx(BaseSwitch.Root, { ...props, form: form, ref: attach, checked: selected, className: skin('pui-switch', className), onCheckedChange: (next, event) => {
94
- onCheckedChange?.(next, event);
95
- if (checked === undefined && !event.isCanceled)
96
- setSelected(next);
97
- } }));
98
- });
99
- export const Switch = {
100
- ...BaseSwitch,
101
- Root: SwitchRoot,
102
- Thumb: part(BaseSwitch.Thumb, 'pui-switch-thumb'),
103
- };
104
- // Flat names for React Server Components, which cannot dot into client exports.
105
- export { CheckboxIndicator, CheckboxRoot, FieldControl, FieldDescription, FieldError, FieldItem, FieldLabel, FieldRoot, RadioRoot, SwitchRoot, };
106
- export const { Validity: FieldValidity } = Field;
107
- export const { Legend: FieldsetLegend, Root: FieldsetRoot } = Fieldset;
108
- export const { Indicator: RadioIndicator } = Radio;
109
- export const { Thumb: SwitchThumb } = Switch;