@cladd-ui/react 0.0.1 → 0.0.3
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/LICENSE +21 -0
- package/README.md +1 -1
- package/components/Backdrop.d.ts +8 -0
- package/components/Backdrop.d.ts.map +1 -0
- package/components/Backdrop.js +7 -0
- package/components/Backdrop.js.map +1 -0
- package/components/BlockTitle.d.ts +10 -0
- package/components/BlockTitle.d.ts.map +1 -0
- package/components/BlockTitle.js +7 -0
- package/components/BlockTitle.js.map +1 -0
- package/components/Button.d.ts +61 -0
- package/components/Button.d.ts.map +1 -0
- package/components/Button.js +83 -0
- package/components/Button.js.map +1 -0
- package/components/Checkbox.d.ts +57 -0
- package/components/Checkbox.d.ts.map +1 -0
- package/components/Checkbox.js +48 -0
- package/components/Checkbox.js.map +1 -0
- package/components/Chip.d.ts +47 -0
- package/components/Chip.d.ts.map +1 -0
- package/components/Chip.js +55 -0
- package/components/Chip.js.map +1 -0
- package/components/Dialog.d.ts +118 -0
- package/components/Dialog.d.ts.map +1 -0
- package/components/Dialog.js +178 -0
- package/components/Dialog.js.map +1 -0
- package/components/DialogsPortal.d.ts +2 -0
- package/components/DialogsPortal.d.ts.map +1 -0
- package/components/DialogsPortal.js +17 -0
- package/components/DialogsPortal.js.map +1 -0
- package/components/DialogsPortalContext.d.ts +49 -0
- package/components/DialogsPortalContext.d.ts.map +1 -0
- package/components/DialogsPortalContext.js +17 -0
- package/components/DialogsPortalContext.js.map +1 -0
- package/components/FocusableLayer.d.ts +25 -0
- package/components/FocusableLayer.d.ts.map +1 -0
- package/components/FocusableLayer.js +18 -0
- package/components/FocusableLayer.js.map +1 -0
- package/components/Input.d.ts +87 -0
- package/components/Input.d.ts.map +1 -0
- package/components/Input.js +93 -0
- package/components/Input.js.map +1 -0
- package/components/Link.d.ts +28 -0
- package/components/Link.d.ts.map +1 -0
- package/components/Link.js +21 -0
- package/components/Link.js.map +1 -0
- package/components/List.d.ts +8 -0
- package/components/List.d.ts.map +1 -0
- package/components/List.js +7 -0
- package/components/List.js.map +1 -0
- package/components/ListButton.d.ts +61 -0
- package/components/ListButton.d.ts.map +1 -0
- package/components/ListButton.js +9 -0
- package/components/ListButton.js.map +1 -0
- package/components/ListItem.d.ts +8 -0
- package/components/ListItem.d.ts.map +1 -0
- package/components/ListItem.js +7 -0
- package/components/ListItem.js.map +1 -0
- package/components/ListSeparator.d.ts +8 -0
- package/components/ListSeparator.d.ts.map +1 -0
- package/components/ListSeparator.js +7 -0
- package/components/ListSeparator.js.map +1 -0
- package/components/ModalController.d.ts +26 -0
- package/components/ModalController.d.ts.map +1 -0
- package/components/ModalController.js +52 -0
- package/components/ModalController.js.map +1 -0
- package/components/NumberField.d.ts +49 -0
- package/components/NumberField.d.ts.map +1 -0
- package/components/NumberField.js +34 -0
- package/components/NumberField.js.map +1 -0
- package/components/Popover.d.ts +137 -0
- package/components/Popover.d.ts.map +1 -0
- package/components/Popover.js +366 -0
- package/components/Popover.js.map +1 -0
- package/components/Popup.d.ts +120 -0
- package/components/Popup.d.ts.map +1 -0
- package/components/Popup.js +235 -0
- package/components/Popup.js.map +1 -0
- package/components/PopupContent.d.ts +19 -0
- package/components/PopupContent.d.ts.map +1 -0
- package/components/PopupContent.js +8 -0
- package/components/PopupContent.js.map +1 -0
- package/components/Preloader.d.ts +12 -0
- package/components/Preloader.d.ts.map +1 -0
- package/components/Preloader.js +30 -0
- package/components/Preloader.js.map +1 -0
- package/components/Radio.d.ts +53 -0
- package/components/Radio.d.ts.map +1 -0
- package/components/Radio.js +46 -0
- package/components/Radio.js.map +1 -0
- package/components/Range.d.ts +35 -0
- package/components/Range.d.ts.map +1 -0
- package/components/Range.js +76 -0
- package/components/Range.js.map +1 -0
- package/components/Searchbar.d.ts +29 -0
- package/components/Searchbar.d.ts.map +1 -0
- package/components/Searchbar.js +10 -0
- package/components/Searchbar.js.map +1 -0
- package/components/Segmented.d.ts +39 -0
- package/components/Segmented.d.ts.map +1 -0
- package/components/Segmented.js +26 -0
- package/components/Segmented.js.map +1 -0
- package/components/SegmentedButton.d.ts +13 -0
- package/components/SegmentedButton.d.ts.map +1 -0
- package/components/SegmentedButton.js +10 -0
- package/components/SegmentedButton.js.map +1 -0
- package/components/SegmentedContext.d.ts +36 -0
- package/components/SegmentedContext.d.ts.map +1 -0
- package/components/SegmentedContext.js +10 -0
- package/components/SegmentedContext.js.map +1 -0
- package/components/Select.d.ts +145 -0
- package/components/Select.d.ts.map +1 -0
- package/components/Select.js +316 -0
- package/components/Select.js.map +1 -0
- package/components/Surface.d.ts +67 -0
- package/components/Surface.d.ts.map +1 -0
- package/components/Surface.js +36 -0
- package/components/Surface.js.map +1 -0
- package/components/SurfaceContent.d.ts +8 -0
- package/components/SurfaceContent.d.ts.map +1 -0
- package/components/SurfaceContent.js +7 -0
- package/components/SurfaceContent.js.map +1 -0
- package/components/SurfaceContext.d.ts +19 -0
- package/components/SurfaceContext.d.ts.map +1 -0
- package/components/SurfaceContext.js +9 -0
- package/components/SurfaceContext.js.map +1 -0
- package/components/SurfaceCut.d.ts +33 -0
- package/components/SurfaceCut.d.ts.map +1 -0
- package/components/SurfaceCut.js +17 -0
- package/components/SurfaceCut.js.map +1 -0
- package/components/SurfaceCutContent.d.ts +16 -0
- package/components/SurfaceCutContent.d.ts.map +1 -0
- package/components/SurfaceCutContent.js +8 -0
- package/components/SurfaceCutContent.js.map +1 -0
- package/components/TextArea.d.ts +61 -0
- package/components/TextArea.d.ts.map +1 -0
- package/components/TextArea.js +102 -0
- package/components/TextArea.js.map +1 -0
- package/components/ThemeContext.d.ts +23 -0
- package/components/ThemeContext.d.ts.map +1 -0
- package/components/ThemeContext.js +18 -0
- package/components/ThemeContext.js.map +1 -0
- package/components/Toast.d.ts +89 -0
- package/components/Toast.d.ts.map +1 -0
- package/components/Toast.js +129 -0
- package/components/Toast.js.map +1 -0
- package/components/ToastsPortal.d.ts +2 -0
- package/components/ToastsPortal.d.ts.map +1 -0
- package/components/ToastsPortal.js +17 -0
- package/components/ToastsPortal.js.map +1 -0
- package/components/ToastsPortalContext.d.ts +45 -0
- package/components/ToastsPortalContext.d.ts.map +1 -0
- package/components/ToastsPortalContext.js +17 -0
- package/components/ToastsPortalContext.js.map +1 -0
- package/components/Toggle.d.ts +69 -0
- package/components/Toggle.d.ts.map +1 -0
- package/components/Toggle.js +48 -0
- package/components/Toggle.js.map +1 -0
- package/components/Tooltip.d.ts +48 -0
- package/components/Tooltip.d.ts.map +1 -0
- package/components/Tooltip.js +90 -0
- package/components/Tooltip.js.map +1 -0
- package/components/UIProvider.d.ts +16 -0
- package/components/UIProvider.d.ts.map +1 -0
- package/components/UIProvider.js +11 -0
- package/components/UIProvider.js.map +1 -0
- package/components/WithTooltip.d.ts +36 -0
- package/components/WithTooltip.d.ts.map +1 -0
- package/components/WithTooltip.js +138 -0
- package/components/WithTooltip.js.map +1 -0
- package/components/icons/CheckIcon.d.ts +2 -0
- package/components/icons/CheckIcon.d.ts.map +1 -0
- package/components/icons/CheckIcon.js +5 -0
- package/components/icons/CheckIcon.js.map +1 -0
- package/components/icons/CloseIcon.d.ts +2 -0
- package/components/icons/CloseIcon.d.ts.map +1 -0
- package/components/icons/CloseIcon.js +3 -0
- package/components/icons/CloseIcon.js.map +1 -0
- package/components/icons/DropdownIcon.d.ts +2 -0
- package/components/icons/DropdownIcon.d.ts.map +1 -0
- package/components/icons/DropdownIcon.js +3 -0
- package/components/icons/DropdownIcon.js.map +1 -0
- package/components/icons/SearchIcon.d.ts +2 -0
- package/components/icons/SearchIcon.d.ts.map +1 -0
- package/components/icons/SearchIcon.js +5 -0
- package/components/icons/SearchIcon.js.map +1 -0
- package/hooks/use-accent-color.d.ts +2 -0
- package/hooks/use-accent-color.d.ts.map +1 -0
- package/hooks/use-accent-color.js +6 -0
- package/hooks/use-accent-color.js.map +1 -0
- package/hooks/use-device.d.ts +14 -0
- package/hooks/use-device.d.ts.map +1 -0
- package/hooks/use-device.js +68 -0
- package/hooks/use-device.js.map +1 -0
- package/hooks/use-dialog.d.ts +8 -0
- package/hooks/use-dialog.d.ts.map +1 -0
- package/hooks/use-dialog.js +38 -0
- package/hooks/use-dialog.js.map +1 -0
- package/hooks/use-focus-trap.d.ts +9 -0
- package/hooks/use-focus-trap.d.ts.map +1 -0
- package/hooks/use-focus-trap.js +106 -0
- package/hooks/use-focus-trap.js.map +1 -0
- package/hooks/use-modal-utils.d.ts +17 -0
- package/hooks/use-modal-utils.d.ts.map +1 -0
- package/hooks/use-modal-utils.js +110 -0
- package/hooks/use-modal-utils.js.map +1 -0
- package/hooks/use-surface.d.ts +2 -0
- package/hooks/use-surface.d.ts.map +1 -0
- package/hooks/use-surface.js +6 -0
- package/hooks/use-surface.js.map +1 -0
- package/hooks/use-theme.d.ts +2 -0
- package/hooks/use-theme.d.ts.map +1 -0
- package/hooks/use-theme.js +6 -0
- package/hooks/use-theme.js.map +1 -0
- package/hooks/use-toast.d.ts +3 -0
- package/hooks/use-toast.d.ts.map +1 -0
- package/hooks/use-toast.js +21 -0
- package/hooks/use-toast.js.map +1 -0
- package/index.d.ts +42 -0
- package/index.d.ts.map +1 -0
- package/index.js +42 -0
- package/index.js.map +1 -0
- package/package.json +27 -9
- package/shared/cn.d.ts +3 -0
- package/shared/cn.d.ts.map +1 -0
- package/shared/cn.js +6 -0
- package/shared/cn.js.map +1 -0
- package/shared/next-tick.d.ts +2 -0
- package/shared/next-tick.d.ts.map +1 -0
- package/shared/next-tick.js +6 -0
- package/shared/next-tick.js.map +1 -0
- package/styles/colors.css +403 -0
- package/styles/popup.css +14 -0
- package/styles/preloader.css +71 -0
- package/styles/range.css +17 -0
- package/styles/safe-areas.css +192 -0
- package/types.d.ts +2 -0
- package/types.d.ts.map +1 -0
- package/types.js +2 -0
- package/types.js.map +1 -0
- package/ui.css +10 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ReactNode, Ref, HTMLAttributes } from 'react';
|
|
2
|
+
export interface ListProps extends HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
children?: ReactNode;
|
|
4
|
+
className?: string;
|
|
5
|
+
ref?: Ref<HTMLDivElement>;
|
|
6
|
+
}
|
|
7
|
+
export declare const List: (props: ListProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=List.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../../src/components/List.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAIvD,MAAM,WAAW,SAAU,SAAQ,cAAc,CAAC,cAAc,CAAC;IAC/D,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC3B;AAED,eAAO,MAAM,IAAI,GAAI,OAAO,SAAS,4CAYpC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '../shared/cn';
|
|
3
|
+
export const List = (props) => {
|
|
4
|
+
const { children, className = '', ref, ...rest } = props;
|
|
5
|
+
return (_jsx("div", { ref: ref, className: cn('list flex flex-col p-2', className), ...rest, children: children }));
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=List.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"List.js","sourceRoot":"","sources":["../../../src/components/List.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAQlC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAgB,EAAE,EAAE;IACvC,MAAM,EAAE,QAAQ,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAEzD,OAAO,CACL,cACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,wBAAwB,EAAE,SAAS,CAAC,KAC9C,IAAI,YAEP,QAAQ,GACL,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { ReactNode, Ref, ElementType } from 'react';
|
|
2
|
+
import { Color } from '../types';
|
|
3
|
+
import { ButtonProps, ButtonSize } from './Button';
|
|
4
|
+
import { SurfaceVariant } from './Surface';
|
|
5
|
+
interface ListButtonOwnProps<C extends ElementType = 'button'> {
|
|
6
|
+
/** Title content of the row (the main text/element on the row). */
|
|
7
|
+
children?: ReactNode;
|
|
8
|
+
/** Extra classes for the row's surface root. */
|
|
9
|
+
className?: string;
|
|
10
|
+
/** Extra classes for the row's inner content area. */
|
|
11
|
+
contentClassName?: string;
|
|
12
|
+
/** Extra classes for the inner column (the wrapper around `header`/title/`footer`). */
|
|
13
|
+
innerContentClassName?: string;
|
|
14
|
+
/** Icon node rendered on the left, before the inner content column. */
|
|
15
|
+
icon?: ReactNode;
|
|
16
|
+
/** Extra classes for the icon wrapper. */
|
|
17
|
+
iconClassName?: string;
|
|
18
|
+
/** Small text rendered above the title. Typically a category, date, or eyebrow label. */
|
|
19
|
+
header?: ReactNode;
|
|
20
|
+
headerClassName?: string;
|
|
21
|
+
/** Small text rendered below the title. Typically secondary metadata. */
|
|
22
|
+
footer?: ReactNode;
|
|
23
|
+
footerClassName?: string;
|
|
24
|
+
/** Extra classes for the title row (the wrapper around `children`). */
|
|
25
|
+
titleClassName?: string;
|
|
26
|
+
/** Visually dim the row and disable pointer events. */
|
|
27
|
+
disabled?: boolean;
|
|
28
|
+
/** Block clicks while keeping the row visually enabled. */
|
|
29
|
+
readOnly?: boolean;
|
|
30
|
+
/** Default `'lg'` (vs Button's `'md'`) - list rows usually want more vertical space. */
|
|
31
|
+
size?: ButtonSize;
|
|
32
|
+
/** Polymorphic root element. Defaults to `'button'`. Pass `'a'` for navigation list rows. */
|
|
33
|
+
component?: C;
|
|
34
|
+
/** Accent color token. Forwarded to `Button.color`. */
|
|
35
|
+
color?: Color;
|
|
36
|
+
/**
|
|
37
|
+
* Marks this list row as selected. When `true`, forces `variant` to `'gradient'` and
|
|
38
|
+
* `outline` to `true` regardless of the props passed - used for the active row in a list.
|
|
39
|
+
*/
|
|
40
|
+
selected?: boolean;
|
|
41
|
+
/** Forwarded to the underlying `Button`'s polymorphic root. */
|
|
42
|
+
ref?: Ref<HTMLElement>;
|
|
43
|
+
/** Slot rendered right-aligned at the end of the row (e.g. badge, chevron). */
|
|
44
|
+
after?: ReactNode;
|
|
45
|
+
/**
|
|
46
|
+
* Surface variant. Default `'transparent'` so rows blend into the list surface.
|
|
47
|
+
* Overridden to `'gradient'` when `selected` is `true`.
|
|
48
|
+
*/
|
|
49
|
+
variant?: SurfaceVariant;
|
|
50
|
+
/**
|
|
51
|
+
* Outline ring on the row. Default `false`. Effective value is `outline || selected`,
|
|
52
|
+
* so a selected row always shows the ring.
|
|
53
|
+
*/
|
|
54
|
+
outline?: boolean;
|
|
55
|
+
/** Default `true`. Forwarded to the underlying `Button`. */
|
|
56
|
+
rounded?: boolean;
|
|
57
|
+
}
|
|
58
|
+
export type ListButtonProps<C extends ElementType = 'button'> = ListButtonOwnProps<C> & Omit<ButtonProps<C>, keyof ListButtonOwnProps<C>>;
|
|
59
|
+
export declare const ListButton: <C extends ElementType = "button">(props: ListButtonProps<C>) => import("react/jsx-runtime").JSX.Element;
|
|
60
|
+
export {};
|
|
61
|
+
//# sourceMappingURL=ListButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListButton.d.ts","sourceRoot":"","sources":["../../../src/components/ListButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAM,MAAM,OAAO,CAAC;AAGxD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAU,WAAW,EAAmB,UAAU,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,UAAU,kBAAkB,CAAC,CAAC,SAAS,WAAW,GAAG,QAAQ;IAC3D,mEAAmE;IACnE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uFAAuF;IACvF,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,uEAAuE;IACvE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yFAAyF;IACzF,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yEAAyE;IACzE,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wFAAwF;IACxF,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,6FAA6F;IAC7F,SAAS,CAAC,EAAE,CAAC,CAAC;IACd,uDAAuD;IACvD,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,+DAA+D;IAC/D,GAAG,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IACvB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,WAAW,GAAG,QAAQ,IAC1D,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5E,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,WAAW,GAAG,QAAQ,EACzD,OAAO,eAAe,CAAC,CAAC,CAAC,4CA2G1B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '../shared/cn';
|
|
3
|
+
import { Button, buttonIconSizes } from './Button';
|
|
4
|
+
export const ListButton = (props) => {
|
|
5
|
+
const { children, className = '', contentClassName = '', innerContentClassName = '', disabled = false, readOnly = false, size = 'lg', component = 'button', color = '', icon, iconClassName = '', header, headerClassName = '', footer, footerClassName = '', selected = false, titleClassName = '', after, ref, variant = 'transparent', outline = false, rounded = true, ...rest } = props;
|
|
6
|
+
const ButtonEl = Button;
|
|
7
|
+
return (_jsxs(ButtonEl, { component: component, rounded: rounded, className: cn('list-button z-10 w-full', className), contentClassName: cn('gap-4 px-2', contentClassName), variant: selected ? 'gradient' : variant, outline: outline || selected, disabled: disabled, readOnly: readOnly, ref: ref, color: color, size: size, multiline: true, ...rest, children: [icon && (_jsx("div", { className: cn('relative shrink-0 [&>svg]:shrink-0', buttonIconSizes[size], iconClassName), children: icon })), (children || footer || header) && (_jsxs("div", { className: cn('relative flex w-full min-w-0 shrink flex-col gap-1', innerContentClassName), children: [header && (_jsx("div", { className: cn('text-xs leading-tight font-normal text-on-surface-dark', headerClassName), children: header })), _jsx("div", { className: cn('flex items-center gap-4 [&>svg]:shrink-0', buttonIconSizes[size], titleClassName), children: children }), footer && (_jsx("div", { className: cn('text-xs leading-tight font-normal text-on-surface-darker', footerClassName), children: footer }))] })), after && (_jsx("div", { className: cn('ml-auto shrink-0 [&>svg]:shrink-0', buttonIconSizes[size]), children: after }))] }));
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=ListButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListButton.js","sourceRoot":"","sources":["../../../src/components/ListButton.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,OAAO,EAAE,MAAM,EAAe,eAAe,EAAc,MAAM,UAAU,CAAC;AA+D5E,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,KAAyB,EACzB,EAAE;IACF,MAAM,EACJ,QAAQ,EACR,SAAS,GAAG,EAAE,EACd,gBAAgB,GAAG,EAAE,EACrB,qBAAqB,GAAG,EAAE,EAC1B,QAAQ,GAAG,KAAK,EAChB,QAAQ,GAAG,KAAK,EAChB,IAAI,GAAG,IAAI,EACX,SAAS,GAAG,QAAQ,EACpB,KAAK,GAAG,EAAE,EACV,IAAI,EACJ,aAAa,GAAG,EAAE,EAClB,MAAM,EACN,eAAe,GAAG,EAAE,EACpB,MAAM,EACN,eAAe,GAAG,EAAE,EACpB,QAAQ,GAAG,KAAK,EAChB,cAAc,GAAG,EAAE,EACnB,KAAK,EACL,GAAG,EACH,OAAO,GAAG,aAAa,EACvB,OAAO,GAAG,KAAK,EACf,OAAO,GAAG,IAAI,EACd,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IAEV,MAAM,QAAQ,GAAG,MAAsC,CAAC;IAExD,OAAO,CACL,MAAC,QAAQ,IACP,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE,SAAS,CAAC,EACnD,gBAAgB,EAAE,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC,EACpD,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,EACxC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAC5B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,SAAS,WACL,IAAI,aAEP,IAAI,IAAI,CACP,cACE,SAAS,EAAE,EAAE,CACX,oCAAoC,EACpC,eAAe,CAAC,IAAI,CAAC,EACrB,aAAa,CACd,YAEA,IAAI,GACD,CACP,EACA,CAAC,QAAQ,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,CACjC,eACE,SAAS,EAAE,EAAE,CACX,oDAAoD,EACpD,qBAAqB,CACtB,aAEA,MAAM,IAAI,CACT,cACE,SAAS,EAAE,EAAE,CACX,wDAAwD,EACxD,eAAe,CAChB,YAEA,MAAM,GACH,CACP,EACD,cACE,SAAS,EAAE,EAAE,CACX,0CAA0C,EAC1C,eAAe,CAAC,IAAI,CAAC,EACrB,cAAc,CACf,YAEA,QAAQ,GACL,EACL,MAAM,IAAI,CACT,cACE,SAAS,EAAE,EAAE,CACX,0DAA0D,EAC1D,eAAe,CAChB,YAEA,MAAM,GACH,CACP,IACG,CACP,EACA,KAAK,IAAI,CACR,cACE,SAAS,EAAE,EAAE,CACX,mCAAmC,EACnC,eAAe,CAAC,IAAI,CAAC,CACtB,YAEA,KAAK,GACF,CACP,IACQ,CACZ,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ReactNode, Ref, HTMLAttributes } from 'react';
|
|
2
|
+
export interface ListItemProps extends HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
children?: ReactNode;
|
|
4
|
+
className?: string;
|
|
5
|
+
ref?: Ref<HTMLDivElement>;
|
|
6
|
+
}
|
|
7
|
+
export declare const ListItem: (props: ListItemProps, ref?: Ref<HTMLDivElement>) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=ListItem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListItem.d.ts","sourceRoot":"","sources":["../../../src/components/ListItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAIvD,MAAM,WAAW,aAAc,SAAQ,cAAc,CAAC,cAAc,CAAC;IACnE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC3B;AAED,eAAO,MAAM,QAAQ,GAAI,OAAO,aAAa,EAAE,MAAM,GAAG,CAAC,cAAc,CAAC,4CAevE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '../shared/cn';
|
|
3
|
+
export const ListItem = (props, ref) => {
|
|
4
|
+
const { children, className = '', ...rest } = props;
|
|
5
|
+
return (_jsx("div", { ref: ref, className: cn('flex min-h-9 items-center gap-4 px-2 py-1 text-xs font-medium', className), ...rest, children: children }));
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=ListItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListItem.js","sourceRoot":"","sources":["../../../src/components/ListItem.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAQlC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAE,GAAyB,EAAE,EAAE;IAC1E,MAAM,EAAE,QAAQ,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAEpD,OAAO,CACL,cACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,+DAA+D,EAC/D,SAAS,CACV,KACG,IAAI,YAEP,QAAQ,GACL,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ReactNode, Ref, HTMLAttributes } from 'react';
|
|
2
|
+
export interface ListSeparatorProps extends HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
children?: ReactNode;
|
|
4
|
+
className?: string;
|
|
5
|
+
ref?: Ref<HTMLDivElement>;
|
|
6
|
+
}
|
|
7
|
+
export declare const ListSeparator: (props: ListSeparatorProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=ListSeparator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListSeparator.d.ts","sourceRoot":"","sources":["../../../src/components/ListSeparator.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAIvD,MAAM,WAAW,kBAAmB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACxE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC3B;AAED,eAAO,MAAM,aAAa,GAAI,OAAO,kBAAkB,4CAetD,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '../shared/cn';
|
|
3
|
+
export const ListSeparator = (props) => {
|
|
4
|
+
const { children, className = '', ref, ...rest } = props;
|
|
5
|
+
return (_jsx("div", { ref: ref, className: cn('list-separator -mx-2 my-2 h-px bg-surface-outline', className), ...rest, children: children }));
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=ListSeparator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListSeparator.js","sourceRoot":"","sources":["../../../src/components/ListSeparator.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAQlC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAyB,EAAE,EAAE;IACzD,MAAM,EAAE,QAAQ,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAEzD,OAAO,CACL,cACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,mDAAmD,EACnD,SAAS,CACV,KACG,IAAI,YAEP,QAAQ,GACL,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lifecycle phases of an animated modal:
|
|
3
|
+
* - `'closed'` - not mounted (or pre-mount).
|
|
4
|
+
* - `'opening'` - mounted, currently animating in.
|
|
5
|
+
* - `'opened'` - open, animation complete.
|
|
6
|
+
* - `'closing'` - animating out, will become `'closed'` on `transitionend`.
|
|
7
|
+
*/
|
|
8
|
+
export type ModalPhase = 'closed' | 'opening' | 'opened' | 'closing';
|
|
9
|
+
/**
|
|
10
|
+
* Wraps a single modal child to drive its animation phase from a boolean `open`.
|
|
11
|
+
* Mounts the child when `open` flips to `true` (phase `'opening'`), keeps it mounted while
|
|
12
|
+
* the close animation runs, then unmounts when phase reaches `'closed'`. Used internally by
|
|
13
|
+
* `Popover`, `Tooltip`, `Dialog`, `Popup`, and `Toast` - you usually won't instantiate this directly.
|
|
14
|
+
*
|
|
15
|
+
* The wrapped child must accept `phase: ModalPhase` and `onPhaseChange: (phase: ModalPhase) => void`
|
|
16
|
+
* props (this is what the `*Inner` components in this library do).
|
|
17
|
+
*/
|
|
18
|
+
export declare const ModalController: (props: {
|
|
19
|
+
/** Desired open state. Drives the phase machine. */
|
|
20
|
+
open: boolean;
|
|
21
|
+
/** Fires when the controller resolves an internal phase change back into a boolean (e.g. animation completes). */
|
|
22
|
+
onOpenChange?: (open: boolean) => void;
|
|
23
|
+
/** Single React element accepting `phase` + `onPhaseChange`. */
|
|
24
|
+
children: React.ReactNode;
|
|
25
|
+
}) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | null;
|
|
26
|
+
//# sourceMappingURL=ModalController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModalController.d.ts","sourceRoot":"","sources":["../../../src/components/ModalController.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAErE;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO;IACrC,oDAAoD;IACpD,IAAI,EAAE,OAAO,CAAC;IACd,kHAAkH;IAClH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,gEAAgE;IAChE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,kGAsCA,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { useEffect, useState, cloneElement } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Wraps a single modal child to drive its animation phase from a boolean `open`.
|
|
4
|
+
* Mounts the child when `open` flips to `true` (phase `'opening'`), keeps it mounted while
|
|
5
|
+
* the close animation runs, then unmounts when phase reaches `'closed'`. Used internally by
|
|
6
|
+
* `Popover`, `Tooltip`, `Dialog`, `Popup`, and `Toast` - you usually won't instantiate this directly.
|
|
7
|
+
*
|
|
8
|
+
* The wrapped child must accept `phase: ModalPhase` and `onPhaseChange: (phase: ModalPhase) => void`
|
|
9
|
+
* props (this is what the `*Inner` components in this library do).
|
|
10
|
+
*/
|
|
11
|
+
export const ModalController = (props) => {
|
|
12
|
+
const { open, onOpenChange = () => { }, children } = props;
|
|
13
|
+
const [phase, setPhase] = useState('closed');
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
if (open) {
|
|
16
|
+
if (phase === 'closed' || phase === 'closing') {
|
|
17
|
+
setPhase('opening');
|
|
18
|
+
if (open !== true)
|
|
19
|
+
onOpenChange(true);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
if (phase === 'opening' || phase === 'opened') {
|
|
24
|
+
setPhase('closing');
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}, [open]);
|
|
28
|
+
const onPhaseChange = (newPhase) => {
|
|
29
|
+
setPhase(newPhase);
|
|
30
|
+
if (newPhase === 'closed') {
|
|
31
|
+
if (open !== false)
|
|
32
|
+
onOpenChange(false);
|
|
33
|
+
}
|
|
34
|
+
else if (newPhase === 'opening') {
|
|
35
|
+
if (open !== true)
|
|
36
|
+
onOpenChange(true);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
if (phase === 'closed')
|
|
40
|
+
return null;
|
|
41
|
+
if (!children || (Array.isArray(children) && !children.length))
|
|
42
|
+
return null;
|
|
43
|
+
const child = (Array.isArray(children) ? children[0] : children);
|
|
44
|
+
const onPhaseChangeOriginal = child.props.onPhaseChange;
|
|
45
|
+
const handlePhaseChange = (newPhase) => {
|
|
46
|
+
onPhaseChange(newPhase);
|
|
47
|
+
if (onPhaseChangeOriginal)
|
|
48
|
+
onPhaseChangeOriginal(newPhase);
|
|
49
|
+
};
|
|
50
|
+
return cloneElement(child, { phase, onPhaseChange: handlePhaseChange });
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=ModalController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModalController.js","sourceRoot":"","sources":["../../../src/components/ModalController.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAW1D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAO/B,EAAE,EAAE;IACH,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,GAAG,EAAE,GAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC1D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAa,QAAQ,CAAC,CAAC;IAEzD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC9C,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACpB,IAAI,IAAI,KAAK,IAAI;oBAAE,YAAY,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9C,QAAQ,CAAC,SAAS,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,aAAa,GAAG,CAAC,QAAoB,EAAE,EAAE;QAC7C,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnB,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,IAAI,IAAI,KAAK,KAAK;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,IAAI,KAAK,IAAI;gBAAE,YAAY,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAE5E,MAAM,KAAK,GAAG,CACZ,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CACtB,CAAC;IAC7B,MAAM,qBAAqB,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC;IACxD,MAAM,iBAAiB,GAAG,CAAC,QAAoB,EAAE,EAAE;QACjD,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxB,IAAI,qBAAqB;YAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC,CAAC;IACF,OAAO,YAAY,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC,CAAC;AAC1E,CAAC,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ReactNode, Ref, ComponentPropsWithoutRef } from 'react';
|
|
2
|
+
import { Color } from '../types';
|
|
3
|
+
import { SurfaceVariant } from './Surface';
|
|
4
|
+
export type NumberFieldSize = 'sm' | 'md' | 'lg' | 'xl' | '2xl';
|
|
5
|
+
interface NumberFieldOwnProps {
|
|
6
|
+
/** Custom content rendered inside the number field container (rare - most usage is value-only). */
|
|
7
|
+
children?: ReactNode;
|
|
8
|
+
/**
|
|
9
|
+
* When `true` (default), the value is rendered in an editable `Input`.
|
|
10
|
+
* When `false`, the value is rendered in a read-only `SurfaceCut` chip - useful
|
|
11
|
+
* when keyboard entry is not desired.
|
|
12
|
+
*/
|
|
13
|
+
input?: boolean;
|
|
14
|
+
/** Extra classes for the value `Input` (or `SurfaceCut`). */
|
|
15
|
+
inputClassName?: string;
|
|
16
|
+
/** Extra classes for the number field container. */
|
|
17
|
+
className?: string;
|
|
18
|
+
/** Visually dim the number field and disable both buttons. */
|
|
19
|
+
disabled?: boolean;
|
|
20
|
+
/** Block changes without the disabled visual treatment. */
|
|
21
|
+
readOnly?: boolean;
|
|
22
|
+
/** Pill-shape the +/− buttons. Default `true`. */
|
|
23
|
+
rounded?: boolean;
|
|
24
|
+
/** Pill-shape the value display. Default `false`. */
|
|
25
|
+
valueRounded?: boolean;
|
|
26
|
+
size?: NumberFieldSize;
|
|
27
|
+
/** Accent color for the +/− buttons. */
|
|
28
|
+
color?: Color;
|
|
29
|
+
/** Outline ring on the +/− buttons. Default `false`. */
|
|
30
|
+
outline?: boolean;
|
|
31
|
+
/** Default `0`. */
|
|
32
|
+
min?: number;
|
|
33
|
+
/** Default `1_000_000`. */
|
|
34
|
+
max?: number;
|
|
35
|
+
/** Default `0`. */
|
|
36
|
+
value?: number;
|
|
37
|
+
/** Increment per +/− press. Default `1`. */
|
|
38
|
+
step?: number;
|
|
39
|
+
/** Surface variant for the +/− buttons. Default `'transparent'`. */
|
|
40
|
+
variant?: SurfaceVariant;
|
|
41
|
+
/** Fires after a +/− button press, with the new value (already clamped to `[min, max]`). */
|
|
42
|
+
onChange?: (value: number) => void;
|
|
43
|
+
/** Forwarded to the number field container `<div>`. */
|
|
44
|
+
ref?: Ref<HTMLDivElement>;
|
|
45
|
+
}
|
|
46
|
+
export type NumberFieldProps = NumberFieldOwnProps & Omit<ComponentPropsWithoutRef<'div'>, keyof NumberFieldOwnProps>;
|
|
47
|
+
export declare const NumberField: (props: NumberFieldProps) => import("react/jsx-runtime").JSX.Element;
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=NumberField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NumberField.d.ts","sourceRoot":"","sources":["../../../src/components/NumberField.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,wBAAwB,EAAE,MAAM,OAAO,CAAC;AAGjE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGjC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG3C,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;AAEhE,UAAU,mBAAmB;IAC3B,mGAAmG;IACnG,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6DAA6D;IAC7D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kDAAkD;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qDAAqD;IACrD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,wCAAwC;IACxC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mBAAmB;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,uDAAuD;IACvD,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC3B;AAED,MAAM,MAAM,gBAAgB,GAAG,mBAAmB,GAChD,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,MAAM,mBAAmB,CAAC,CAAC;AAEnE,eAAO,MAAM,WAAW,GAAI,OAAO,gBAAgB,4CA+HlD,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '../shared/cn';
|
|
3
|
+
import { Button } from './Button';
|
|
4
|
+
import { Input } from './Input';
|
|
5
|
+
import { SurfaceCut } from './SurfaceCut';
|
|
6
|
+
export const NumberField = (props) => {
|
|
7
|
+
const { children, input = true, inputClassName = '', className = '', disabled = false, readOnly = false, rounded = true, valueRounded = false, size = 'md', color = '', outline = false, variant = 'transparent', min = 0, max = 1000000, value = 0, step = 1, onChange = () => { }, ref, ...rest } = props;
|
|
8
|
+
const decrease = () => {
|
|
9
|
+
if (value <= min || disabled)
|
|
10
|
+
return;
|
|
11
|
+
onChange(Math.max(min, value - step));
|
|
12
|
+
};
|
|
13
|
+
const increase = () => {
|
|
14
|
+
if (value >= max || disabled)
|
|
15
|
+
return;
|
|
16
|
+
onChange(Math.min(max, value + step));
|
|
17
|
+
};
|
|
18
|
+
const inputPaddingNoIcon = {
|
|
19
|
+
sm: 'px-2.5',
|
|
20
|
+
md: 'px-2.5',
|
|
21
|
+
lg: 'px-2.5',
|
|
22
|
+
xl: 'px-2.5',
|
|
23
|
+
'2xl': 'px-3.5',
|
|
24
|
+
};
|
|
25
|
+
const roundedSizes = {
|
|
26
|
+
sm: 'rounded-md',
|
|
27
|
+
md: 'rounded-lg',
|
|
28
|
+
lg: 'rounded-[10px]',
|
|
29
|
+
xl: 'rounded-xl',
|
|
30
|
+
'2xl': 'rounded-xl',
|
|
31
|
+
};
|
|
32
|
+
return (_jsxs("div", { className: cn('number-field flex items-center gap-0.5', className), ref: ref, ...rest, children: [_jsx(Button, { size: size, variant: variant, color: color, outline: outline, rounded: rounded, readOnly: readOnly, disabled: value <= min || disabled, onClick: decrease, children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 18 18", children: _jsx("g", { fill: "currentColor", children: _jsx("path", { d: "M14.75,9.75H3.25c-.414,0-.75-.336-.75-.75s.336-.75,.75-.75H14.75c.414,0,.75,.336,.75,.75s-.336,.75-.75,.75Z" }) }) }) }), input ? (_jsx(Input, { size: size, value: value, disabled: disabled, readOnly: readOnly, rounded: valueRounded, className: "w-auto min-w-0 shrink", inputClassName: cn('w-auto min-w-9 text-center', inputClassName) })) : (_jsx(SurfaceCut, { className: cn('w-auto min-w-9 self-stretch text-center', valueRounded ? 'rounded-full' : roundedSizes[size]), contentClassName: cn('flex items-center justify-center text-xs', inputPaddingNoIcon[size]), children: value })), _jsx(Button, { size: size, variant: variant, color: color, outline: outline, rounded: rounded, readOnly: readOnly, disabled: value >= max || disabled, onClick: increase, children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 18 18", children: _jsxs("g", { fill: "currentColor", children: [_jsx("path", { d: "M14.75,9.75H3.25c-.414,0-.75-.336-.75-.75s.336-.75,.75-.75H14.75c.414,0,.75,.336,.75,.75s-.336,.75-.75,.75Z" }), _jsx("path", { d: "M9,15.5c-.414,0-.75-.336-.75-.75V3.25c0-.414,.336-.75,.75-.75s.75,.336,.75,.75V14.75c0,.414-.336,.75-.75,.75Z" })] }) }) })] }));
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=NumberField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NumberField.js","sourceRoot":"","sources":["../../../src/components/NumberField.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { Color } from '../types';
|
|
2
|
+
import { SurfaceProps, SurfaceVariant } from './Surface';
|
|
3
|
+
/**
|
|
4
|
+
* State container for the `Popover` + `PopoverTrigger` + `Popover` compound. Holds the open
|
|
5
|
+
* state and the anchor ref so a `PopoverTrigger` can register the anchor element and a sibling
|
|
6
|
+
* `Popover` can read both via context.
|
|
7
|
+
*
|
|
8
|
+
* Use this when you want the trigger and the popover to be siblings in JSX (Radix-style):
|
|
9
|
+
*
|
|
10
|
+
* ```tsx
|
|
11
|
+
* <PopoverRoot>
|
|
12
|
+
* <PopoverTrigger><Button>Open</Button></PopoverTrigger>
|
|
13
|
+
* <Popover>...</Popover>
|
|
14
|
+
* </PopoverRoot>
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* Skip this and pass `open`/`onOpenChange`/`anchorRef` directly to `<Popover>` if you'd rather
|
|
18
|
+
* control state yourself.
|
|
19
|
+
*/
|
|
20
|
+
export declare const PopoverRoot: ({ children, defaultOpen, open: openProp, onOpenChange, }: {
|
|
21
|
+
children: React.ReactNode;
|
|
22
|
+
/** Initial open state (uncontrolled). Default `false`. Ignored when `open` is provided. */
|
|
23
|
+
defaultOpen?: boolean;
|
|
24
|
+
/** Controlled open state. When provided, internal state is bypassed. */
|
|
25
|
+
open?: boolean;
|
|
26
|
+
/** Fires whenever the open state should change (clicks on trigger, outside-clicks, escape). */
|
|
27
|
+
onOpenChange?: (open: boolean) => void;
|
|
28
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
/**
|
|
30
|
+
* Wraps a single child element to act as the popover trigger. **Clones** the child to attach:
|
|
31
|
+
* - a `ref` callback that registers the element as the popover's anchor (composed with any
|
|
32
|
+
* existing ref on the child),
|
|
33
|
+
* - an `onClick` handler that toggles the surrounding `PopoverRoot`'s open state (composed
|
|
34
|
+
* with any existing `onClick`).
|
|
35
|
+
*
|
|
36
|
+
* No-ops (renders the child as-is) when used outside a `PopoverRoot`. Expects exactly one
|
|
37
|
+
* React element child that accepts `ref` and `onClick`.
|
|
38
|
+
*/
|
|
39
|
+
export declare const PopoverTrigger: ({ children, }: {
|
|
40
|
+
/** Single React element to use as the trigger. Must accept `ref` and `onClick`. */
|
|
41
|
+
children: React.ReactNode;
|
|
42
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
43
|
+
/**
|
|
44
|
+
* Wraps a single child element to close the surrounding popover when clicked. **Clones** the
|
|
45
|
+
* child to attach an `onClick` handler that flips the surrounding `PopoverRoot`'s open state
|
|
46
|
+
* to `false` (composed with any existing `onClick` on the child).
|
|
47
|
+
*
|
|
48
|
+
* ```tsx
|
|
49
|
+
* <PopoverRoot>
|
|
50
|
+
* <PopoverTrigger><Button>Open</Button></PopoverTrigger>
|
|
51
|
+
* <Popover>
|
|
52
|
+
* ...
|
|
53
|
+
* <PopoverClose><Button>Done</Button></PopoverClose>
|
|
54
|
+
* </Popover>
|
|
55
|
+
* </PopoverRoot>
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* No-ops (renders the child as-is) when used outside a `PopoverRoot`.
|
|
59
|
+
*/
|
|
60
|
+
export declare const PopoverClose: ({ children, }: {
|
|
61
|
+
/** Single React element to use as the close affordance. Must accept `onClick`. */
|
|
62
|
+
children: React.ReactNode;
|
|
63
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
64
|
+
export type PopoverPosition = 'top-start' | 'top' | 'top-end' | 'bottom-start' | 'bottom' | 'bottom-end' | 'left-start' | 'left' | 'left-end' | 'right-start' | 'right' | 'right-end';
|
|
65
|
+
export type PopoverOffset = OffsetValue | [OffsetValue, OffsetValue];
|
|
66
|
+
type OffsetValue = number | string;
|
|
67
|
+
type PopoverOwnProps = {
|
|
68
|
+
/** Controlled open state. When omitted, falls back to the surrounding `PopoverRoot` state, then `false`. */
|
|
69
|
+
open?: boolean;
|
|
70
|
+
/** Fires whenever the open state should change. When omitted, falls back to the `PopoverRoot` setter. */
|
|
71
|
+
onOpenChange?: (open: boolean) => void;
|
|
72
|
+
/** Extra classes applied to the popover root `Surface`. */
|
|
73
|
+
className?: string;
|
|
74
|
+
/** Extra classes applied to the inner scrollable content area. Default includes `max-h-[70vh] overflow-auto`. */
|
|
75
|
+
contentClassName?: string;
|
|
76
|
+
/**
|
|
77
|
+
* Ref to the element the popover should anchor against. Defaults to the anchor registered
|
|
78
|
+
* by `PopoverRoot` + `PopoverTrigger`. CSS anchor positioning is used - an `anchor-name`
|
|
79
|
+
* is auto-applied to the element if it doesn't already have one.
|
|
80
|
+
*/
|
|
81
|
+
anchorRef?: React.RefObject<HTMLElement | null>;
|
|
82
|
+
/**
|
|
83
|
+
* Static rect (or ref to one) to anchor against when there's no DOM anchor element
|
|
84
|
+
* (e.g. for a context menu opened at a pointer position). Ignored if `anchorRef.current` exists.
|
|
85
|
+
*/
|
|
86
|
+
anchorRect?: DOMRect | React.RefObject<DOMRect>;
|
|
87
|
+
/**
|
|
88
|
+
* Portal target. CSS selector string (default `'#app, #__next, #root'` - first match wins),
|
|
89
|
+
* or `false` to render inline without portalling.
|
|
90
|
+
*/
|
|
91
|
+
root?: string | boolean;
|
|
92
|
+
/** Anchor side + alignment. See `PopoverPosition`. Default `'bottom'`. */
|
|
93
|
+
position?: PopoverPosition;
|
|
94
|
+
/**
|
|
95
|
+
* Spacing from anchor. Either a single value (main axis only) or `[main, cross]`.
|
|
96
|
+
* Numbers are pixels; strings pass through (e.g. `'8px'`, `'50%'` - `%` resolves against
|
|
97
|
+
* `anchor-size(width|height)` depending on the position).
|
|
98
|
+
*/
|
|
99
|
+
offset?: OffsetValue | [OffsetValue, OffsetValue];
|
|
100
|
+
/** Render a backdrop behind the popover. Default `false`. */
|
|
101
|
+
backdrop?: boolean;
|
|
102
|
+
/** Make the backdrop transparent (still captures clicks for outside-close). */
|
|
103
|
+
backdropTransparent?: boolean;
|
|
104
|
+
/** Accent color token (`Color` enum). Sets the popover's `color-{name}` class - used by border/ring/text helpers. */
|
|
105
|
+
color?: Color;
|
|
106
|
+
/** Popover content. */
|
|
107
|
+
children?: React.ReactNode;
|
|
108
|
+
/**
|
|
109
|
+
* Forwarded to the underlying `Surface` as `level`. Default depends on theme:
|
|
110
|
+
* `1` for light theme, `undefined` (parent + 1) for dark theme.
|
|
111
|
+
*/
|
|
112
|
+
surfaceLevel?: number | string;
|
|
113
|
+
/** Surface variant. Default depends on theme: `'gradient'` for dark, `'solid'` for light. */
|
|
114
|
+
variant?: SurfaceVariant;
|
|
115
|
+
/** Outline ring on the popover surface. Default `true` for non-light themes. */
|
|
116
|
+
outline?: boolean;
|
|
117
|
+
/** Defer rendering until first opened, and unmount after close. */
|
|
118
|
+
lazy?: boolean;
|
|
119
|
+
/** Default `true`. */
|
|
120
|
+
closeOnBackdropClick?: boolean;
|
|
121
|
+
/** Default `true`. Suppressed automatically when this popover has a child popover/dialog open. */
|
|
122
|
+
closeOnEscape?: boolean;
|
|
123
|
+
/** Fires when the open transition begins (after `open` flips to `true`, before the animation). */
|
|
124
|
+
onOpen?: () => void;
|
|
125
|
+
/** Fires after the open transition completes (`transitionend` on the surface). */
|
|
126
|
+
onOpened?: () => void;
|
|
127
|
+
/** Fires when the close transition begins (after `open` flips to `false`, before the animation). */
|
|
128
|
+
onClose?: () => void;
|
|
129
|
+
/** Fires after the close transition completes - use for unmount/cleanup work tied to dismissal. */
|
|
130
|
+
onClosed?: () => void;
|
|
131
|
+
/** Forwarded to the popover surface root element. */
|
|
132
|
+
ref?: React.Ref<HTMLElement>;
|
|
133
|
+
};
|
|
134
|
+
export type PopoverProps = PopoverOwnProps & Omit<SurfaceProps, keyof PopoverOwnProps>;
|
|
135
|
+
export declare const Popover: ({ open, onOpenChange, anchorRef, ...rest }: PopoverProps) => import("react/jsx-runtime").JSX.Element;
|
|
136
|
+
export {};
|
|
137
|
+
//# sourceMappingURL=Popover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Popover.d.ts","sourceRoot":"","sources":["../../../src/components/Popover.tsx"],"names":[],"mappings":"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"}
|