@prmichaelsen/agentbase-ux 0.0.2

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 (61) hide show
  1. package/README.md +62 -0
  2. package/dist/__tests__/setup.d.ts +2 -0
  3. package/dist/__tests__/setup.d.ts.map +1 -0
  4. package/dist/__tests__/test-utils.d.ts +6 -0
  5. package/dist/__tests__/test-utils.d.ts.map +1 -0
  6. package/dist/components/Button.d.ts +19 -0
  7. package/dist/components/Button.d.ts.map +1 -0
  8. package/dist/components/Button.test.d.ts +2 -0
  9. package/dist/components/Button.test.d.ts.map +1 -0
  10. package/dist/components/ConfirmationModal.d.ts +17 -0
  11. package/dist/components/ConfirmationModal.d.ts.map +1 -0
  12. package/dist/components/ConfirmationModal.test.d.ts +2 -0
  13. package/dist/components/ConfirmationModal.test.d.ts.map +1 -0
  14. package/dist/components/MenuItem.d.ts +17 -0
  15. package/dist/components/MenuItem.d.ts.map +1 -0
  16. package/dist/components/MenuItem.test.d.ts +2 -0
  17. package/dist/components/MenuItem.test.d.ts.map +1 -0
  18. package/dist/components/Modal.d.ts +18 -0
  19. package/dist/components/Modal.d.ts.map +1 -0
  20. package/dist/components/Modal.test.d.ts +2 -0
  21. package/dist/components/Modal.test.d.ts.map +1 -0
  22. package/dist/components/Paginator.d.ts +14 -0
  23. package/dist/components/Paginator.d.ts.map +1 -0
  24. package/dist/components/Paginator.test.d.ts +2 -0
  25. package/dist/components/Paginator.test.d.ts.map +1 -0
  26. package/dist/components/Popover.d.ts +18 -0
  27. package/dist/components/Popover.d.ts.map +1 -0
  28. package/dist/components/SlideOverPanel.d.ts +12 -0
  29. package/dist/components/SlideOverPanel.d.ts.map +1 -0
  30. package/dist/components/SlideOverPanel.test.d.ts +2 -0
  31. package/dist/components/SlideOverPanel.test.d.ts.map +1 -0
  32. package/dist/components/Slider.d.ts +36 -0
  33. package/dist/components/Slider.d.ts.map +1 -0
  34. package/dist/components/Slider.test.d.ts +2 -0
  35. package/dist/components/Slider.test.d.ts.map +1 -0
  36. package/dist/components/ToggleSwitch.d.ts +17 -0
  37. package/dist/components/ToggleSwitch.d.ts.map +1 -0
  38. package/dist/components/ToggleSwitch.test.d.ts +2 -0
  39. package/dist/components/ToggleSwitch.test.d.ts.map +1 -0
  40. package/dist/hooks/useDebounce.d.ts +2 -0
  41. package/dist/hooks/useDebounce.d.ts.map +1 -0
  42. package/dist/hooks/useDebounce.test.d.ts +2 -0
  43. package/dist/hooks/useDebounce.test.d.ts.map +1 -0
  44. package/dist/index.d.ts +18 -0
  45. package/dist/index.d.ts.map +1 -0
  46. package/dist/index.js +746 -0
  47. package/dist/index.js.map +7 -0
  48. package/dist/lib/theming.d.ts +61 -0
  49. package/dist/lib/theming.d.ts.map +1 -0
  50. package/dist/lib/theming.test.d.ts +2 -0
  51. package/dist/lib/theming.test.d.ts.map +1 -0
  52. package/dist/tokens.css +88 -0
  53. package/dist/utils/clipboard.d.ts +9 -0
  54. package/dist/utils/clipboard.d.ts.map +1 -0
  55. package/dist/utils/clipboard.test.d.ts +2 -0
  56. package/dist/utils/clipboard.test.d.ts.map +1 -0
  57. package/dist/utils/format-time.d.ts +6 -0
  58. package/dist/utils/format-time.d.ts.map +1 -0
  59. package/dist/utils/format-time.test.d.ts +2 -0
  60. package/dist/utils/format-time.test.d.ts.map +1 -0
  61. package/package.json +43 -0
package/README.md ADDED
@@ -0,0 +1,62 @@
1
+ # agentbase-ux
2
+
3
+ Reusable, themeable UI primitives for TanStack Start + Tailwind applications
4
+
5
+ > Built with [Agent Context Protocol](https://github.com/prmichaelsen/agent-context-protocol)
6
+
7
+ ## Quick Start
8
+
9
+ ```bash
10
+ npm install @prmichaelsen/agentbase-ux
11
+ ```
12
+
13
+ ## Features
14
+
15
+ - Themeable component library with dark/light mode support
16
+ - CSS custom properties via Tailwind v4 `@theme` directive
17
+ - React context-based theming with `useTheme()` hook
18
+ - Extracted from production agentbase.me application
19
+
20
+ ## Development
21
+
22
+ This project uses the Agent Context Protocol for development:
23
+
24
+ - `@acp.init` - Initialize agent context
25
+ - `@acp.plan` - Plan milestones and tasks
26
+ - `@acp.proceed` - Continue with next task
27
+ - `@acp.status` - Check project status
28
+
29
+ See [AGENT.md](./AGENT.md) for complete ACP documentation.
30
+
31
+ ## Project Structure
32
+
33
+ ```
34
+ agentbase-ux/
35
+ ├── AGENT.md # ACP methodology
36
+ ├── agent/ # ACP directory
37
+ │ ├── design/ # Design documents
38
+ │ ├── milestones/ # Project milestones
39
+ │ ├── tasks/ # Task breakdown
40
+ │ ├── patterns/ # Architectural patterns
41
+ │ └── progress.yaml # Progress tracking
42
+ ├── src/ # Library source
43
+ │ ├── lib/ # Theming system
44
+ │ ├── components/ # UI components
45
+ │ ├── hooks/ # React hooks
46
+ │ └── utils/ # Utilities
47
+ └── package.json
48
+ ```
49
+
50
+ ## Getting Started
51
+
52
+ 1. Initialize context: `@acp.init`
53
+ 2. Plan your project: `@acp.plan`
54
+ 3. Start building: `@acp.proceed`
55
+
56
+ ## License
57
+
58
+ MIT
59
+
60
+ ## Author
61
+
62
+ prmichaelsen
@@ -0,0 +1,2 @@
1
+ import '@testing-library/jest-dom/vitest';
2
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":"AAAA,OAAO,kCAAkC,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { type RenderOptions } from '@testing-library/react';
2
+ import type { ReactElement } from 'react';
3
+ export declare function renderWithTheme(ui: ReactElement, options?: Omit<RenderOptions, 'wrapper'>): import("@testing-library/react").RenderResult<typeof import("@testing-library/dom/types/queries"), HTMLElement, HTMLElement>;
4
+ export { render } from '@testing-library/react';
5
+ export { default as userEvent } from '@testing-library/user-event';
6
+ //# sourceMappingURL=test-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../src/__tests__/test-utils.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAEnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AAMzC,wBAAgB,eAAe,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,gIAEzF;AAED,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,6BAA6B,CAAA"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Button — Themeable button with variant and size support.
3
+ *
4
+ * Uses useTheme() for all color classes. Layout utilities (padding,
5
+ * font-weight, rounded, flex) are applied directly.
6
+ */
7
+ import { type ReactNode, type ButtonHTMLAttributes } from 'react';
8
+ export type ButtonVariant = 'primary' | 'secondary' | 'danger' | 'success' | 'ghost';
9
+ export type ButtonSize = 'sm' | 'md' | 'lg';
10
+ interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
11
+ variant?: ButtonVariant;
12
+ size?: ButtonSize;
13
+ icon?: ReactNode;
14
+ children: ReactNode;
15
+ fullWidth?: boolean;
16
+ }
17
+ export declare function Button({ variant, size, icon, children, fullWidth, className, disabled, ...props }: ButtonProps): import("react/jsx-runtime").JSX.Element;
18
+ export {};
19
+ //# sourceMappingURL=Button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/components/Button.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAGjE,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAA;AACpF,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAE3C,UAAU,WAAY,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IACnE,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,QAAQ,EAAE,SAAS,CAAA;IACnB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAQD,wBAAgB,MAAM,CAAC,EACrB,OAAmB,EACnB,IAAW,EACX,IAAI,EACJ,QAAQ,EACR,SAAiB,EACjB,SAAc,EACd,QAAgB,EAChB,GAAG,KAAK,EACT,EAAE,WAAW,2CA0Bb"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Button.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.test.d.ts","sourceRoot":"","sources":["../../src/components/Button.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * ConfirmationModal — Themeable confirmation dialog with danger/warning/info variants.
3
+ */
4
+ interface ConfirmationModalProps {
5
+ isOpen: boolean;
6
+ onClose: () => void;
7
+ onConfirm: () => void;
8
+ title: string;
9
+ message: string | React.ReactNode;
10
+ confirmText?: string;
11
+ cancelText?: string;
12
+ variant?: 'danger' | 'warning' | 'info';
13
+ isLoading?: boolean;
14
+ }
15
+ export declare function ConfirmationModal({ isOpen, onClose, onConfirm, title, message, confirmText, cancelText, variant, isLoading, }: ConfirmationModalProps): import("react/jsx-runtime").JSX.Element;
16
+ export {};
17
+ //# sourceMappingURL=ConfirmationModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfirmationModal.d.ts","sourceRoot":"","sources":["../../src/components/ConfirmationModal.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAKH,UAAU,sBAAsB;IAC9B,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAA;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAA;IACvC,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAQD,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,OAAO,EACP,SAAS,EACT,KAAK,EACL,OAAO,EACP,WAAuB,EACvB,UAAqB,EACrB,OAAkB,EAClB,SAAiB,GAClB,EAAE,sBAAsB,2CA0CxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ConfirmationModal.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfirmationModal.test.d.ts","sourceRoot":"","sources":["../../src/components/ConfirmationModal.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * MenuItem — Themeable menu item button with icon, label, and loading state.
3
+ */
4
+ import type { LucideIcon } from 'lucide-react';
5
+ interface MenuItemProps {
6
+ icon: LucideIcon;
7
+ label: string;
8
+ onClick: () => void;
9
+ disabled?: boolean;
10
+ danger?: boolean;
11
+ loading?: boolean;
12
+ className?: string;
13
+ suffix?: React.ReactNode;
14
+ }
15
+ export declare function MenuItem({ icon: Icon, label, onClick, disabled, danger, loading, className, suffix }: MenuItemProps): import("react/jsx-runtime").JSX.Element;
16
+ export {};
17
+ //# sourceMappingURL=MenuItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuItem.d.ts","sourceRoot":"","sources":["../../src/components/MenuItem.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAI9C,UAAU,aAAa;IACrB,IAAI,EAAE,UAAU,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CACzB;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,aAAa,2CAenH"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=MenuItem.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuItem.test.d.ts","sourceRoot":"","sources":["../../src/components/MenuItem.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Modal — Themeable portal-based modal with escape/backdrop dismiss.
3
+ *
4
+ * Supports persistent mode (no dismiss), configurable max-width,
5
+ * and iOS safe-area-inset-top.
6
+ */
7
+ interface ModalProps {
8
+ isOpen: boolean;
9
+ onClose: () => void;
10
+ children: React.ReactNode;
11
+ title?: string;
12
+ style?: React.CSSProperties;
13
+ maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | '2xl';
14
+ persistent?: boolean;
15
+ }
16
+ export declare function Modal({ isOpen, onClose, children, title, style, maxWidth, persistent, }: ModalProps): import("react").ReactPortal | null;
17
+ export {};
18
+ //# sourceMappingURL=Modal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../src/components/Modal.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,UAAU,UAAU;IAClB,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IAC3B,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAA;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAUD,wBAAgB,KAAK,CAAC,EACpB,MAAM,EACN,OAAO,EACP,QAAQ,EACR,KAAK,EACL,KAAK,EACL,QAAe,EACf,UAAkB,GACnB,EAAE,UAAU,sCA4DZ"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Modal.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Modal.test.d.ts","sourceRoot":"","sources":["../../src/components/Modal.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Paginator — Themeable page navigation with editable current page input.
3
+ *
4
+ * Pattern: |< < 3 4 [X] 5 6 > >|
5
+ */
6
+ interface PaginatorProps {
7
+ currentPage: number;
8
+ totalPages: number;
9
+ onPageChange: (page: number) => void;
10
+ siblings?: number;
11
+ }
12
+ export declare function Paginator({ currentPage, totalPages, onPageChange, siblings, }: PaginatorProps): import("react/jsx-runtime").JSX.Element | null;
13
+ export {};
14
+ //# sourceMappingURL=Paginator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Paginator.d.ts","sourceRoot":"","sources":["../../src/components/Paginator.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,UAAU,cAAc;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,SAAS,CAAC,EACxB,WAAW,EACX,UAAU,EACV,YAAY,EACZ,QAAY,GACb,EAAE,cAAc,kDAmFhB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Paginator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Paginator.test.d.ts","sourceRoot":"","sources":["../../src/components/Paginator.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Popover — Themeable positioned popover with auto viewport adjustment.
3
+ *
4
+ * Renders in a portal. Supports above/below anchor positioning with
5
+ * automatic flipping when insufficient viewport space.
6
+ */
7
+ import { type ReactNode, type RefObject } from 'react';
8
+ interface PopoverProps {
9
+ open: boolean;
10
+ anchorRef: RefObject<HTMLElement | null>;
11
+ onClose: () => void;
12
+ children: ReactNode;
13
+ className?: string;
14
+ anchor?: 'above' | 'below';
15
+ }
16
+ export declare function Popover({ open, anchorRef, onClose, children, className, anchor }: PopoverProps): import("react").ReactPortal | null;
17
+ export {};
18
+ //# sourceMappingURL=Popover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Popover.d.ts","sourceRoot":"","sources":["../../src/components/Popover.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAA+B,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAInF,UAAU,YAAY;IACpB,IAAI,EAAE,OAAO,CAAA;IACb,SAAS,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;IACxC,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,EAAE,SAAS,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;CAC3B;AAED,wBAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAgB,EAAE,EAAE,YAAY,sCAoFxG"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * SlideOverPanel — Themeable right-side slide-over overlay with backdrop.
3
+ */
4
+ import { type ReactNode } from 'react';
5
+ interface SlideOverPanelProps {
6
+ open: boolean;
7
+ onClose: () => void;
8
+ children: ReactNode;
9
+ }
10
+ export declare function SlideOverPanel({ open, onClose, children }: SlideOverPanelProps): import("react/jsx-runtime").JSX.Element | null;
11
+ export {};
12
+ //# sourceMappingURL=SlideOverPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlideOverPanel.d.ts","sourceRoot":"","sources":["../../src/components/SlideOverPanel.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAG3D,UAAU,mBAAmB;IAC3B,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,mBAAmB,kDAsC9E"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SlideOverPanel.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlideOverPanel.test.d.ts","sourceRoot":"","sources":["../../src/components/SlideOverPanel.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Slider — Themeable range slider with gradient fill.
3
+ *
4
+ * Two modes:
5
+ * - Continuous: provide min, max, step, value
6
+ * - Discrete: provide options array, value snaps to option values
7
+ *
8
+ * Requires the `slider-styled` CSS class from tokens.css.
9
+ * Fill gradient uses CSS custom properties from the theme.
10
+ */
11
+ interface SliderBaseProps {
12
+ disabled?: boolean;
13
+ className?: string;
14
+ }
15
+ interface ContinuousSliderProps extends SliderBaseProps {
16
+ options?: never;
17
+ labels?: never;
18
+ min: number;
19
+ max: number;
20
+ step: number;
21
+ value: number;
22
+ onChange: (value: number) => void;
23
+ }
24
+ interface DiscreteSliderProps<T extends number | string> extends SliderBaseProps {
25
+ options: T[];
26
+ labels?: boolean | ((option: T) => string);
27
+ min?: never;
28
+ max?: never;
29
+ step?: never;
30
+ value: T;
31
+ onChange: (value: T) => void;
32
+ }
33
+ export type SliderProps<T extends number | string = number> = ContinuousSliderProps | DiscreteSliderProps<T>;
34
+ export declare function Slider<T extends number | string = number>(props: SliderProps<T>): import("react/jsx-runtime").JSX.Element;
35
+ export {};
36
+ //# sourceMappingURL=Slider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Slider.d.ts","sourceRoot":"","sources":["../../src/components/Slider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,UAAU,eAAe;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,UAAU,qBAAsB,SAAQ,eAAe;IACrD,OAAO,CAAC,EAAE,KAAK,CAAA;IACf,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAClC;AAED,UAAU,mBAAmB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,eAAe;IAC9E,OAAO,EAAE,CAAC,EAAE,CAAA;IACZ,MAAM,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,CAAC,CAAA;IAC1C,GAAG,CAAC,EAAE,KAAK,CAAA;IACX,GAAG,CAAC,EAAE,KAAK,CAAA;IACX,IAAI,CAAC,EAAE,KAAK,CAAA;IACZ,KAAK,EAAE,CAAC,CAAA;IACR,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAA;CAC7B;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IACtD,qBAAqB,GACrB,mBAAmB,CAAC,CAAC,CAAC,CAAA;AAS1B,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,2CAuD/E"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Slider.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Slider.test.d.ts","sourceRoot":"","sources":["../../src/components/Slider.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * ToggleSwitch — Themeable iOS-style toggle.
3
+ *
4
+ * Uses useTheme() for on/off track colors and text.
5
+ */
6
+ import { type ButtonHTMLAttributes } from 'react';
7
+ export type ToggleSwitchSize = 'sm' | 'md' | 'lg';
8
+ interface ToggleSwitchProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'size' | 'type' | 'onChange'> {
9
+ checked: boolean;
10
+ onChange: (checked: boolean) => void;
11
+ size?: ToggleSwitchSize;
12
+ label?: string;
13
+ description?: string;
14
+ }
15
+ export declare function ToggleSwitch({ checked, onChange, size, label, description, disabled, id, ...props }: ToggleSwitchProps): import("react/jsx-runtime").JSX.Element;
16
+ export {};
17
+ //# sourceMappingURL=ToggleSwitch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToggleSwitch.d.ts","sourceRoot":"","sources":["../../src/components/ToggleSwitch.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAGjD,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAEjD,UAAU,iBAAkB,SAAQ,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IAC7G,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IACpC,IAAI,CAAC,EAAE,gBAAgB,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAYD,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,QAAQ,EACR,IAAW,EACX,KAAK,EACL,WAAW,EACX,QAAgB,EAChB,EAAE,EACF,GAAG,KAAK,EACT,EAAE,iBAAiB,2CAmEnB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ToggleSwitch.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToggleSwitch.test.d.ts","sourceRoot":"","sources":["../../src/components/ToggleSwitch.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare function useDebounce<T>(value: T, delay: number): T;
2
+ //# sourceMappingURL=useDebounce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDebounce.d.ts","sourceRoot":"","sources":["../../src/hooks/useDebounce.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,CAczD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useDebounce.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDebounce.test.d.ts","sourceRoot":"","sources":["../../src/hooks/useDebounce.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ export { Button } from './components/Button';
2
+ export type { ButtonVariant, ButtonSize } from './components/Button';
3
+ export { ConfirmationModal } from './components/ConfirmationModal';
4
+ export { MenuItem } from './components/MenuItem';
5
+ export { Modal } from './components/Modal';
6
+ export { Paginator } from './components/Paginator';
7
+ export { Popover } from './components/Popover';
8
+ export { Slider } from './components/Slider';
9
+ export type { SliderProps } from './components/Slider';
10
+ export { SlideOverPanel } from './components/SlideOverPanel';
11
+ export { ToggleSwitch } from './components/ToggleSwitch';
12
+ export type { ToggleSwitchSize } from './components/ToggleSwitch';
13
+ export { useDebounce } from './hooks/useDebounce';
14
+ export { formatExactTime, getRelativeTime } from './utils/format-time';
15
+ export { shareOrCopyUrl, copyToClipboard } from './utils/clipboard';
16
+ export { ThemingProvider, useTheme, themes } from './lib/theming';
17
+ export type { Theme, ThemeName } from './lib/theming';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAGjE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAGjD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAGnE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACjE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA"}