@rinzai/zen 0.3.2 → 0.4.1

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 (85) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +99 -0
  3. package/dist/actions-menu/index.d.ts.map +1 -1
  4. package/dist/animated-number/index.d.ts +25 -0
  5. package/dist/animated-number/index.d.ts.map +1 -0
  6. package/dist/avatar/index.d.ts +24 -0
  7. package/dist/avatar/index.d.ts.map +1 -0
  8. package/dist/backdrop/index.d.ts.map +1 -1
  9. package/dist/badge/index.d.ts +1 -1
  10. package/dist/base.css +100 -0
  11. package/dist/button/index.d.ts +2 -2
  12. package/dist/button/index.d.ts.map +1 -1
  13. package/dist/collapse/index.d.ts.map +1 -1
  14. package/dist/dialog/index.d.ts.map +1 -1
  15. package/dist/dropdown/index.d.ts.map +1 -1
  16. package/dist/editable-cell/index.d.ts +24 -0
  17. package/dist/editable-cell/index.d.ts.map +1 -0
  18. package/dist/field/index.d.ts +25 -0
  19. package/dist/field/index.d.ts.map +1 -0
  20. package/dist/header/index.d.ts.map +1 -1
  21. package/dist/icons/chevron-left.d.ts +3 -0
  22. package/dist/icons/chevron-left.d.ts.map +1 -0
  23. package/dist/icons/chevron-right.d.ts +3 -0
  24. package/dist/icons/chevron-right.d.ts.map +1 -0
  25. package/dist/icons/index.d.ts +4 -0
  26. package/dist/icons/index.d.ts.map +1 -1
  27. package/dist/icons/status.d.ts +2 -0
  28. package/dist/icons/status.d.ts.map +1 -0
  29. package/dist/index.d.ts +21 -2
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/input-group/index.d.ts +17 -0
  32. package/dist/input-group/index.d.ts.map +1 -0
  33. package/dist/lib.d.ts +2 -0
  34. package/dist/lib.d.ts.map +1 -0
  35. package/dist/meter/index.d.ts +25 -0
  36. package/dist/meter/index.d.ts.map +1 -0
  37. package/dist/money-input/index.d.ts +70 -0
  38. package/dist/money-input/index.d.ts.map +1 -0
  39. package/dist/month-picker/index.d.ts +28 -0
  40. package/dist/month-picker/index.d.ts.map +1 -0
  41. package/dist/popover/index.d.ts.map +1 -1
  42. package/dist/segmented/index.d.ts +2 -1
  43. package/dist/segmented/index.d.ts.map +1 -1
  44. package/dist/select/index.d.ts +32 -0
  45. package/dist/select/index.d.ts.map +1 -0
  46. package/dist/slider/index.d.ts +25 -0
  47. package/dist/slider/index.d.ts.map +1 -0
  48. package/dist/tab-bar/index.d.ts +23 -0
  49. package/dist/tab-bar/index.d.ts.map +1 -0
  50. package/dist/table/index.d.ts +76 -7
  51. package/dist/table/index.d.ts.map +1 -1
  52. package/dist/tailwind.css +7 -0
  53. package/dist/theme.css +888 -0
  54. package/dist/toast/index.d.ts +11 -3
  55. package/dist/toast/index.d.ts.map +1 -1
  56. package/dist/tree/index.d.ts +79 -0
  57. package/dist/tree/index.d.ts.map +1 -0
  58. package/dist/utils/cx.d.ts +5 -0
  59. package/dist/utils/cx.d.ts.map +1 -1
  60. package/dist/utils/field-chevron.d.ts +6 -0
  61. package/dist/utils/field-chevron.d.ts.map +1 -0
  62. package/dist/utils/graphics.d.ts +20 -0
  63. package/dist/utils/graphics.d.ts.map +1 -0
  64. package/dist/utils/merge.d.ts +12 -0
  65. package/dist/utils/merge.d.ts.map +1 -0
  66. package/dist/utils/money.d.ts +30 -0
  67. package/dist/utils/money.d.ts.map +1 -0
  68. package/dist/utils/month.d.ts +16 -0
  69. package/dist/utils/month.d.ts.map +1 -0
  70. package/dist/utils/status-icons.d.ts +11 -0
  71. package/dist/utils/status-icons.d.ts.map +1 -0
  72. package/dist/utils/styles.d.ts +6 -0
  73. package/dist/utils/styles.d.ts.map +1 -1
  74. package/dist/utils/theme.d.ts +92 -0
  75. package/dist/utils/theme.d.ts.map +1 -0
  76. package/dist/utils/useAnchoredPopup.d.ts +36 -0
  77. package/dist/utils/useAnchoredPopup.d.ts.map +1 -0
  78. package/dist/utils/useHydrated.d.ts +3 -0
  79. package/dist/utils/useHydrated.d.ts.map +1 -0
  80. package/dist/utils/useVirtualList.d.ts +4 -0
  81. package/dist/utils/useVirtualList.d.ts.map +1 -1
  82. package/dist/variables.css +90 -0
  83. package/dist/zen.css +1 -1
  84. package/dist/zen.js +2107 -532
  85. package/package.json +38 -1
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 rinzai
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,99 @@
1
+ # Zen
2
+
3
+ [![npm](https://img.shields.io/npm/v/@rinzai/zen)](https://www.npmjs.com/package/@rinzai/zen)
4
+
5
+ ![Zen: React components in dark glass](https://zen.rinzai.dev/og.png)
6
+
7
+ React components in dark glass: translucent surfaces, hairline borders that catch a pointer light, and one accent colour carrying the UI. Built on native platform features (`<dialog>`, the Popover API, CSS anchor positioning, radio inputs) with **no runtime dependencies**.
8
+
9
+ **[Documentation](https://zen.rinzai.dev)** · **[Showcase app](https://zen.rinzai.dev/showcase/)** · **[Storybook](https://zen.rinzai.dev/storybook/)**
10
+
11
+ ## Installation
12
+
13
+ ```sh
14
+ pnpm add @rinzai/zen
15
+ ```
16
+
17
+ React 19 is the only peer dependency.
18
+
19
+ **Using Tailwind CSS v4?** Add Zen's theme after Tailwind in your stylesheet. Your one Tailwind build then generates everything Zen's components use:
20
+
21
+ ```css
22
+ @import 'tailwindcss';
23
+ @import '@rinzai/zen/tailwind.css';
24
+ ```
25
+
26
+ **Not using Tailwind?** Import the complete stylesheet once, near the root of your app. It includes the default theme:
27
+
28
+ ```js
29
+ import '@rinzai/zen/css';
30
+ ```
31
+
32
+ Zen never styles your own elements. For its page setup (the background showing through), heading scale, inline code and quiet scrollbars, also add the optional base:
33
+
34
+ ```css
35
+ @import '@rinzai/zen/base.css';
36
+ ```
37
+
38
+ The look is set in [Inter](https://rsms.me/inter/); load it however you like.
39
+
40
+ ## Usage
41
+
42
+ ```tsx
43
+ import { Backdrop, Button, Card } from '@rinzai/zen';
44
+
45
+ export default function App() {
46
+ return (
47
+ <>
48
+ <Backdrop />
49
+ <Card title="Budget">
50
+ <Button>Save changes</Button>
51
+ </Card>
52
+ </>
53
+ );
54
+ }
55
+ ```
56
+
57
+ ## What's inside
58
+
59
+ - **Surfaces:** Card, Stat, Dialog, ConfirmDialog, Popover, Toast, Backdrop (aurora, contours or dots, and a pointer light)
60
+ - **Inputs:** Button, Input, TextArea, InputGroup, MoneyInput, Select, Dropdown, MonthPicker, Segmented, Slider, Toggle, Field
61
+ - **Data:** composable Table with sticky edges and sorting, tree rows, editable cells, virtual rows, Meter, ProgressRing, AnimatedNumber
62
+ - **Navigation:** Header, NavPills, Tabs, TabBar, SideNav, TableOfContents, ActionsMenu
63
+ - **Theming:** dark and light, OKLCH tokens, and a theme generator (presets or any hue) that keeps contrast readable
64
+ - **Hooks and utilities:** `useAnchoredPopup`, `useVirtualList`, `useTree`, `useSort`, money and month helpers, `cx` (Tailwind-aware class merging), `cva`
65
+
66
+ Every component takes `className`, and a class you pass always overrides the component's default.
67
+
68
+ ## Theming
69
+
70
+ Dark is the default. Add the `light` class (or `data-theme="light"`) for the light palette. Colours are OKLCH `L C H` triplets; override any token in your own CSS:
71
+
72
+ ```css
73
+ :root {
74
+ --primary: 0.72 0.13 200; /* teal instead of violet */
75
+ --glow: 0.7 0.13 200;
76
+ }
77
+ ```
78
+
79
+ Or generate a whole theme at runtime:
80
+
81
+ ```ts
82
+ import { applyPreset, applyTheme, DEFAULT_THEME } from '@rinzai/zen';
83
+
84
+ applyTheme(applyPreset(DEFAULT_THEME, 'ocean'));
85
+ ```
86
+
87
+ ## Development
88
+
89
+ ```sh
90
+ pnpm install
91
+ pnpm dev # Storybook
92
+ pnpm docs:dev # docs site
93
+ pnpm test
94
+ pnpm build
95
+ ```
96
+
97
+ ## License
98
+
99
+ [MIT](LICENSE)
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/actions-menu/index.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,MAAM;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAKD;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,gBAAgB,+BA4ElF;AAED,MAAM,WAAW,gBAAgB;IAC7B,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,OAAO,EAAE,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/actions-menu/index.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,MAAM;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAKD;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,gBAAgB,+BAuElF;AAED,MAAM,WAAW,gBAAgB;IAC7B,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,OAAO,EAAE,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,25 @@
1
+ import { Money } from '../utils/money';
2
+ /**
3
+ * A number that counts smoothly to each new value (and up from zero when it
4
+ * first appears). Rounds to whole numbers while moving, so money in minor
5
+ * units never shows fractions. Instant with reduced motion.
6
+ */
7
+ export default function AnimatedNumber({ value, format, duration, fromZero, className, }: AnimatedNumberProps): import('react').JSX.Element;
8
+ /** An amount of money (minor units) that counts to each new value. */
9
+ export declare function AnimatedMoney({ value, currency, locale, showDecimals, ...rest }: Omit<AnimatedNumberProps, 'format' | 'value'> & {
10
+ value: Money;
11
+ currency: string;
12
+ locale: string;
13
+ showDecimals?: boolean;
14
+ }): import('react').JSX.Element;
15
+ export interface AnimatedNumberProps {
16
+ value: number;
17
+ /** Turns the (whole) number into text, e.g. with Intl.NumberFormat. */
18
+ format?: (value: number) => string;
19
+ /** Milliseconds per change. */
20
+ duration?: number;
21
+ /** Count up from zero when first shown (default), or start at the value. */
22
+ fromZero?: boolean;
23
+ className?: string;
24
+ }
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/animated-number/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAM3D;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACnC,KAAK,EACL,MAAe,EACf,QAAc,EACd,QAAe,EACf,SAAS,GACZ,EAAE,mBAAmB,+BA0BrB;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,MAAM,EACN,YAAoB,EACpB,GAAG,IAAI,EACV,EAAE,IAAI,CAAC,mBAAmB,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG;IAC/C,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B,+BAIA;AAED,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Round profile picture; without an image, the name's initial on the glowing
3
+ * accent. Decorative (hidden from screen readers) unless you give it `alt`.
4
+ */
5
+ export default function Avatar({ src, name, alt, className }: AvatarProps): import('react').JSX.Element;
6
+ export declare class ImageCropError extends Error {
7
+ }
8
+ /**
9
+ * Crops an image file to a centred square and resizes it in the browser (to
10
+ * `size` px), returning a small data URL (WebP where supported, else JPEG).
11
+ * Handy for profile pictures you store yourself.
12
+ */
13
+ export declare function cropImageToSquare(file: Blob, size?: number, quality?: number): Promise<string>;
14
+ export interface AvatarProps {
15
+ /** Image URL (or data URL); without it, the initial is shown. */
16
+ src?: string | null;
17
+ /** Name or email, for the initial. */
18
+ name: string;
19
+ /** Accessible name; leave out when the name is shown next to the avatar. */
20
+ alt?: string;
21
+ /** Size and more, e.g. "size-12 text-lg" (default size-9). */
22
+ className?: string;
23
+ }
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/avatar/index.tsx"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,WAAW,+BAkBxE;AAED,qBAAa,cAAe,SAAQ,KAAK;CAAG;AAE5C;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,SAAM,EAAE,OAAO,SAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAkB/F;AAED,MAAM,WAAW,WAAW;IACxB,iEAAiE;IACjE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/backdrop/index.tsx"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,aAAa,+BAkGnE;AAED,MAAM,WAAW,aAAa;IAC1B,wFAAwF;IACxF,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAC9B,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/backdrop/index.tsx"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,aAAa,+BAuLnE;AAED,MAAM,WAAW,aAAa;IAC1B,wFAAwF;IACxF,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAC9B,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -2,7 +2,7 @@ import { VariantProps } from '../utils/cva';
2
2
  import { ComponentProps } from 'react';
3
3
  export default function Badge({ variant, className, ...rest }: BadgeProps): import('react').JSX.Element;
4
4
  declare const badgeVariants: (props?: ({
5
- variant?: "default" | "secondary" | "destructive" | "outline" | null | undefined;
5
+ variant?: "outline" | "default" | "secondary" | "destructive" | null | undefined;
6
6
  } & ({
7
7
  class: import('../utils/cx').ClassValue;
8
8
  className?: never;
package/dist/base.css ADDED
@@ -0,0 +1,100 @@
1
+ /*
2
+ * Optional app base: the page setup a Zen app wants (the
3
+ * backdrop shows through a transparent body), a heading scale, labels, inline
4
+ * code, selection colour and quiet scrollbars. Plain CSS in a low-priority
5
+ * layer, so it works with or without Tailwind and your own styles win.
6
+ */
7
+ @layer base {
8
+ html {
9
+ background: oklch(var(--background));
10
+ /* Room for the scrollbar is always kept, so the page doesn't jump when one appears. */
11
+ scrollbar-gutter: stable;
12
+ }
13
+ body {
14
+ /* Transparent: an opaque body would paint over the z-index −1 <Backdrop>. */
15
+ background: transparent;
16
+ color: oklch(var(--foreground));
17
+ font-family: 'Inter Variable', Inter, ui-sans-serif, system-ui, sans-serif;
18
+ font-feature-settings: 'cv11', 'ss01';
19
+ -webkit-font-smoothing: antialiased;
20
+ -moz-osx-font-smoothing: grayscale;
21
+ }
22
+ *,
23
+ ::after,
24
+ ::before,
25
+ ::backdrop,
26
+ ::file-selector-button {
27
+ border-color: oklch(var(--border));
28
+ }
29
+ h1,
30
+ h2,
31
+ h3,
32
+ h4,
33
+ h5,
34
+ h6 {
35
+ font-weight: 600;
36
+ }
37
+ h1,
38
+ h2,
39
+ h3,
40
+ h4 {
41
+ letter-spacing: -0.025em;
42
+ }
43
+ h1 {
44
+ font-size: 2.25rem;
45
+ line-height: 2.5rem;
46
+ }
47
+ @media (width >= 64rem) {
48
+ h1 {
49
+ font-size: 3rem;
50
+ line-height: 1;
51
+ }
52
+ }
53
+ h2 {
54
+ font-size: 1.875rem;
55
+ line-height: 2.25rem;
56
+ }
57
+ h3 {
58
+ font-size: 1.25rem;
59
+ line-height: 1.75rem;
60
+ }
61
+ h4 {
62
+ font-size: 1.125rem;
63
+ line-height: 1.75rem;
64
+ }
65
+ h5,
66
+ h6 {
67
+ font-size: 1rem;
68
+ line-height: 1.5rem;
69
+ }
70
+ label {
71
+ font-size: 0.875rem;
72
+ line-height: 1;
73
+ font-weight: 500;
74
+ }
75
+ code,
76
+ pre {
77
+ border-radius: 0.25rem;
78
+ background: oklch(var(--muted));
79
+ padding: 0.2rem 0.3rem;
80
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
81
+ font-size: 0.875rem;
82
+ line-height: 1.25rem;
83
+ color: oklch(var(--muted-foreground));
84
+ }
85
+ ::selection {
86
+ background: oklch(var(--glow) / 0.35);
87
+ }
88
+ /*
89
+ * Grid items default to min-width: auto, so a wide table inside one would
90
+ * stretch its column (and the page) instead of scrolling in its own frame.
91
+ */
92
+ .grid > * {
93
+ min-width: 0;
94
+ }
95
+ /* Thin, quiet scrollbars where scrolling is real (tables, long dialogs). */
96
+ * {
97
+ scrollbar-width: thin;
98
+ scrollbar-color: oklch(var(--tint) / 0.14) transparent;
99
+ }
100
+ }
@@ -1,8 +1,8 @@
1
1
  import { VariantProps } from '../utils/cva';
2
2
  import { ComponentProps } from 'react';
3
- export default function Button({ className, variant, size, loading, disabled, children, ...rest }: ButtonProps): import('react').JSX.Element;
3
+ export default function Button({ className, variant, size, loading, disabled, type, children, ...rest }: ButtonProps): import('react').JSX.Element;
4
4
  export declare const buttonVariants: (props?: ({
5
- variant?: "link" | "default" | "icon" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
5
+ variant?: "outline" | "link" | "default" | "icon" | "secondary" | "destructive" | "ghost" | null | undefined;
6
6
  size?: "default" | "icon" | "sm" | "lg" | null | undefined;
7
7
  } & ({
8
8
  class: import('../utils/cx').ClassValue;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/button/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAO,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC3B,SAAS,EACT,OAAO,EACP,IAAI,EACJ,OAAe,EACf,QAAQ,EACR,QAAQ,EACR,GAAG,IAAI,EACV,EAAE,WAAW,+BAYb;AAED,eAAO,MAAM,cAAc;;;;;;;;;;;;0BAoC1B,CAAC;AAEF,MAAM,WAAW,WAAY,SAAQ,cAAc,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,OAAO,cAAc,CAAC;IAC9F,oEAAoE;IACpE,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/button/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAO,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC3B,SAAS,EACT,OAAO,EACP,IAAI,EACJ,OAAe,EACf,QAAQ,EACR,IAAe,EACf,QAAQ,EACR,GAAG,IAAI,EACV,EAAE,WAAW,+BAcb;AAED,eAAO,MAAM,cAAc;;;;;;;;;;;;0BAoC1B,CAAC;AAEF,MAAM,WAAW,WAAY,SAAQ,cAAc,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,OAAO,cAAc,CAAC;IAC9F,oEAAoE;IACpE,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/collapse/index.tsx"],"names":[],"mappings":"AAEA,OAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI/C,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,+BA6GlE;AACD,MAAM,WAAW,aAAa,CAAC,KAAK;IAChC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;IACf,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;IAC7E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAChD,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/collapse/index.tsx"],"names":[],"mappings":"AAEA,OAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI/C,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,+BA+GlE;AACD,MAAM,WAAW,aAAa,CAAC,KAAK;IAChC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;IACf,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;IAC7E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAChD,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/dialog/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAA4B,MAAM,OAAO,CAAC;AAEvF;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC3B,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,WAAW,EACX,QAAQ,EACR,WAAkB,EAClB,YAAY,EACZ,IAAW,EACX,SAAS,EACT,IAAI,GACP,EAAE,WAAW,+BAsDb;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iFAAiF;IACjF,YAAY,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC7C,sEAAsE;IACtE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;CAC3C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/dialog/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAA4B,MAAM,OAAO,CAAC;AAEvF;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC3B,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,WAAW,EACX,QAAQ,EACR,WAAkB,EAClB,YAAY,EACZ,IAAW,EACX,SAAS,EACT,IAAI,GACP,EAAE,WAAW,+BA0Db;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iFAAiF;IACjF,YAAY,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC7C,sEAAsE;IACtE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;CAC3C"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/dropdown/index.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAe,cAAc,EAAwC,MAAM,OAAO,CAAC;AAE1F,MAAM,CAAC,OAAO,UAAU,QAAQ,CAC5B,KAAK,EAAE,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,GACzC,CAAC,oBAAoB,GAAG,sBAAsB,CAAC,GAC/C,aAAa,GACb,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,+BAwGhD;AAgHD,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,KAAK,CAAC;CACpB;AACD,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IAC1C,QAAQ,EAAE,IAAI,CAAC;CAClB;AACD,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,YAAY,EAAE,CAAC;CACzB;AACD,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;CACvC;AACD,MAAM,WAAW,sBAAsB;IACnC,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;CACjB;AACD,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACf,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/dropdown/index.tsx"],"names":[],"mappings":"AASA,OAAO,EAAe,cAAc,EAAwC,MAAM,OAAO,CAAC;AAE1F,MAAM,CAAC,OAAO,UAAU,QAAQ,CAC5B,KAAK,EAAE,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,GACzC,CAAC,oBAAoB,GAAG,sBAAsB,CAAC,GAC/C,aAAa,GACb,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,+BA8FhD;AAmHD,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,KAAK,CAAC;CACpB;AACD,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IAC1C,QAAQ,EAAE,IAAI,CAAC;CAClB;AACD,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,YAAY,EAAE,CAAC;CACzB;AACD,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;CACvC;AACD,MAAM,WAAW,sBAAsB;IACnC,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;CACjB;AACD,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACf,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { ReactNode } from 'react';
2
+ /**
3
+ * A value edited in place, e.g. in a table cell: shows `children` as a button,
4
+ * and on click (or Enter) swaps in your editor. Call `close()` from the editor
5
+ * when it's done (committed or cancelled). Works with any editor: a compact
6
+ * MoneyInput, an Input, a Select.
7
+ */
8
+ export default function EditableCell({ children, editor, label, readOnly, editing: editingProp, onEditingChange, title, className, }: EditableCellProps): import('react').JSX.Element;
9
+ export interface EditableCellProps {
10
+ /** What the cell shows when not editing. */
11
+ children: ReactNode;
12
+ /** The editor to show while editing; call `close` when it's done. */
13
+ editor: (close: () => void) => ReactNode;
14
+ /** Accessible name of the value, e.g. "Rent, Oct 2026: ₹18,500"; " Edit" is added for the button. */
15
+ label?: string;
16
+ /** Show the value without making it editable. */
17
+ readOnly?: boolean;
18
+ /** Control the editing state yourself (with onEditingChange). */
19
+ editing?: boolean;
20
+ onEditingChange?: (editing: boolean) => void;
21
+ title?: string;
22
+ className?: string;
23
+ }
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/editable-cell/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAY,MAAM,OAAO,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACjC,QAAQ,EACR,MAAM,EACN,KAAK,EACL,QAAgB,EAChB,OAAO,EAAE,WAAW,EACpB,eAAe,EACf,KAAK,EACL,SAAS,GACZ,EAAE,iBAAiB,+BA8BnB;AAED,MAAM,WAAW,iBAAiB;IAC9B,4CAA4C;IAC5C,QAAQ,EAAE,SAAS,CAAC;IACpB,qEAAqE;IACrE,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,SAAS,CAAC;IACzC,qGAAqG;IACrG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iEAAiE;IACjE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,25 @@
1
+ import { ReactNode } from 'react';
2
+ /**
3
+ * A labelled form control with an optional hint and error. Links them for
4
+ * screen readers: the control gets an id (if it has none), aria-describedby
5
+ * for the hint and error, and aria-invalid while there's an error.
6
+ */
7
+ export default function Field({ label, hint, error, children, className }: FieldProps): import('react').JSX.Element;
8
+ /** A message for a form as a whole: an error in a tinted box, or a quiet note. */
9
+ export declare function FormMessage({ tone, children, className }: FormMessageProps): import('react').JSX.Element;
10
+ export interface FieldProps {
11
+ label: ReactNode;
12
+ /** Help text under the control. */
13
+ hint?: ReactNode;
14
+ /** Error under the control; marks it invalid. */
15
+ error?: ReactNode;
16
+ /** One control (Input, Select, MoneyInput…), or anything else (then link it yourself). */
17
+ children: ReactNode;
18
+ className?: string;
19
+ }
20
+ export interface FormMessageProps {
21
+ tone?: 'info' | 'success' | 'error';
22
+ children: ReactNode;
23
+ className?: string;
24
+ }
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/field/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA8C,SAAS,EAAS,MAAM,OAAO,CAAC;AAErF;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,UAAU,+BAqCpF;AAED,kFAAkF;AAClF,wBAAgB,WAAW,CAAC,EAAE,IAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,gBAAgB,+BAkBnF;AAED,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,SAAS,CAAC;IACjB,mCAAmC;IACnC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,iDAAiD;IACjD,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,0FAA0F;IAC1F,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACpC,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/header/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEvC;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,CAAC,QAAQ,CAAC,+BAexF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/header/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEvC;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,CAAC,QAAQ,CAAC,+BAgBxF"}
@@ -0,0 +1,3 @@
1
+ import { default as IconProps } from './icon.types';
2
+ export default function ChevronLeft(props: IconProps): import('react').JSX.Element;
3
+ //# sourceMappingURL=chevron-left.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chevron-left.d.ts","sourceRoot":"","sources":["../../packages/icons/chevron-left.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,KAAK,EAAE,SAAS,+BAcnD"}
@@ -0,0 +1,3 @@
1
+ import { default as IconProps } from './icon.types';
2
+ export default function ChevronRight(props: IconProps): import('react').JSX.Element;
3
+ //# sourceMappingURL=chevron-right.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chevron-right.d.ts","sourceRoot":"","sources":["../../packages/icons/chevron-right.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,KAAK,EAAE,SAAS,+BAcpD"}
@@ -1,4 +1,8 @@
1
1
  export { default as ChevronDown } from './chevron-down';
2
+ export { default as ChevronLeft } from './chevron-left';
3
+ export { default as ChevronRight } from './chevron-right';
2
4
  export { default as ChevronUp } from './chevron-up';
3
5
  export { default as Search } from './search';
6
+ export { AlertTriangle, Check, InfoCircle } from './status';
7
+ export { default as XMark } from './x-mark';
4
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/icons/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/icons/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { AlertIcon as AlertTriangle, CheckIcon as Check, InfoIcon as InfoCircle } from '../utils/status-icons';
2
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../packages/icons/status.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,SAAS,IAAI,KAAK,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export { default as ActionsMenu, type Action } from './actions-menu';
2
+ export { default as AnimatedNumber, AnimatedMoney, type AnimatedNumberProps } from './animated-number';
3
+ export { default as Avatar, type AvatarProps, cropImageToSquare, ImageCropError } from './avatar';
2
4
  export { default as Backdrop } from './backdrop';
3
5
  export { default as Badge } from './badge';
4
6
  export { default as Button, buttonVariants } from './button';
@@ -7,27 +9,44 @@ export { default as CodeBlock } from './code-block';
7
9
  export { default as Collapse } from './collapse';
8
10
  export { default as ConfirmDialog } from './confirm-dialog';
9
11
  export { default as Dialog } from './dialog';
12
+ export { default as EditableCell, type EditableCellProps } from './editable-cell';
13
+ export { default as Field, type FieldProps, FormMessage, type FormMessageProps } from './field';
10
14
  export { default as Dropdown, type DropdownItem } from './dropdown';
11
15
  export { default as Header } from './header';
12
16
  export * from './icons';
13
17
  export { default as Input } from './input';
18
+ export { default as InputGroup, InputGroupAddon, InputGroupInput } from './input-group';
19
+ export { default as Meter, type MeterProps } from './meter';
20
+ export { default as MonthPicker, type MonthPickerProps } from './month-picker';
21
+ export { default as MoneyInput, type MoneyInputOptions, type MoneyInputProps, useMoneyInput } from './money-input';
14
22
  export { default as NavPills, NavPill, NavPillIndicator } from './nav-pills';
15
23
  export { default as PageHeader } from './page-header';
16
24
  export { default as Popover } from './popover';
17
25
  export { default as ProgressRing } from './progress-ring';
18
26
  export { default as Segmented } from './segmented';
27
+ export { default as Select, type SelectOption, type SelectProps } from './select';
19
28
  export { default as SideNav, SideNavGroup, SideNavLink } from './side-nav';
20
29
  export { default as Skeleton } from './skeleton';
30
+ export { default as Slider, type SliderProps } from './slider';
21
31
  export { default as Spinner } from './spinner';
22
- export { default as Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from './table';
32
+ export { default as TabBar, TabBarItem, type TabBarItemProps, type TabBarProps } from './tab-bar';
33
+ export { default as Table, type SortDirection, TableBody, TableCell, type TableCellProps, TableContainer, type TableContainerProps, TableEmpty, TableFooter, TableFooterCell, TableHead, TableHeader, type TableHeadProps, TableRow, TableSpacerRow, useSort, } from './table';
23
34
  export { default as TableOfContents, type TableOfContentsItem } from './table-of-contents';
24
35
  export { default as Tabs, Tab, TabList, TabPanel } from './tabs';
36
+ export { type Tree, TreeCell, TreeLabel, TreeRow, type TreeRowData, TreeToggle, useTree } from './tree';
25
37
  export { default as TextArea } from './textarea';
26
- export { default as ToastProvider, useToast, type ToastOptions, type ToastTone } from './toast';
38
+ export { default as ToastProvider, type ToastOptions, type ToastProviderProps, type ToastTone, useToast, } from './toast';
27
39
  export { default as Toggle } from './toggle';
28
40
  export { default as ThemeToggle, ThemeScript, themeScript } from './theme-toggle';
29
41
  export { cva, type VariantProps } from './utils/cva';
30
42
  export { cx } from './utils/cx';
43
+ export { type Appearance, applyPreset, applyTheme, contrastRatio, customize, DEFAULT_THEME, type Intensity, INTENSITIES, normalizeTheme, oklchToLinearRgb, type PresetId, PRESETS, resetTheme, type ThemeSettings, themeVars, } from './utils/theme';
44
+ export { useHydrated } from './utils/useHydrated';
45
+ export { addMonths, currentMonth, formatMonth, fromMonthIndex, isMonth, type Month, monthIndex, monthNames, monthRange, monthsBetween, } from './utils/month';
46
+ export { type AnchoredPopupOptions, useAnchoredPopup } from './utils/useAnchoredPopup';
47
+ export { useVirtualList, type VirtualItem, type VirtualListOptions } from './utils/useVirtualList';
48
+ export { applyGraphicsMode, detectGraphicsMode, type GraphicsMode } from './utils/graphics';
49
+ export { currencySymbol, formatAmount, formatMoney, type Money, MoneyParseError, minorDigits, parseMoney, parseMoneyInput, } from './utils/money';
31
50
  declare module 'react' {
32
51
  interface CSSProperties {
33
52
  [key: `--${string}`]: string | number;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../packages/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,CAAC;AACf,OAAO,aAAa,CAAC;AACrB,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnG,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAChG,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,GAAG,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAEhC,OAAO,QAAQ,OAAO,CAAC;IACnB,UAAU,aAAa;QACnB,CAAC,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;KACzC;CACJ"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../packages/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { ComponentProps } from 'react';
2
+ /**
3
+ * A field with slots: compose an InputGroupInput with InputGroupAddons before
4
+ * or after it (a currency symbol, an icon, a unit, a button, a menu trigger).
5
+ * The whole group looks like one field and glows while anything in it has
6
+ * focus; clicking an addon's text focuses the input.
7
+ */
8
+ export default function InputGroup({ invalid, className, onMouseDown, ...rest }: InputGroupProps): import('react').JSX.Element;
9
+ /** The input inside an InputGroup: borderless, filling the space between the addons. */
10
+ export declare function InputGroupInput({ className, ...rest }: ComponentProps<'input'>): import('react').JSX.Element;
11
+ /** Content before or after the input: text, an icon, a button or a menu trigger. */
12
+ export declare function InputGroupAddon({ className, ...rest }: ComponentProps<'span'>): import('react').JSX.Element;
13
+ export interface InputGroupProps extends ComponentProps<'div'> {
14
+ /** Show the field in its error state (e.g. alongside aria-invalid on the input). */
15
+ invalid?: boolean;
16
+ }
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/input-group/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEvC;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,EAAE,eAAe,+BAyB/F;AAED,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,CAAC,OAAO,CAAC,+BAU9E;AAED,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,+BAU7E;AAED,MAAM,WAAW,eAAgB,SAAQ,cAAc,CAAC,KAAK,CAAC;IAC1D,oFAAoF;IACpF,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB"}
package/dist/lib.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './index';
2
+ //# sourceMappingURL=lib.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../packages/lib.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAC;AAErB,cAAc,SAAS,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { ReactNode } from 'react';
2
+ /**
3
+ * A measure against a limit, e.g. spend against a budget: a bar with a label,
4
+ * a figure and a note. Over the limit it turns red; near it, warm. Announced
5
+ * as a meter, with `valueText` read out instead of the bare number.
6
+ */
7
+ export default function Meter({ value, max, label, detail, hint, valueText, tone, warnAt, className, }: MeterProps): import('react').JSX.Element;
8
+ export interface MeterProps {
9
+ value: number;
10
+ /** The limit (default 100). Values past it fill the bar and turn it red. */
11
+ max?: number;
12
+ label?: ReactNode;
13
+ /** Top right, e.g. "₹8,200 / ₹10,000". */
14
+ detail?: ReactNode;
15
+ /** Below the bar, e.g. "₹1,800 left". */
16
+ hint?: ReactNode;
17
+ /** What screen readers say for the value, e.g. "₹8,200 of ₹10,000, ₹1,800 left". */
18
+ valueText?: string;
19
+ /** `auto` picks warning past `warnAt` of max and danger past max. */
20
+ tone?: 'auto' | 'default' | 'warning' | 'danger';
21
+ /** Fraction of max where `auto` turns to warning (default 0.85). */
22
+ warnAt?: number;
23
+ className?: string;
24
+ }
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/meter/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAS,MAAM,OAAO,CAAC;AAEzC;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAC1B,KAAK,EACL,GAAS,EACT,KAAK,EACL,MAAM,EACN,IAAI,EACJ,SAAS,EACT,IAAa,EACb,MAAa,EACb,SAAS,GACZ,EAAE,UAAU,+BAwDZ;AAED,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,yCAAyC;IACzC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACjD,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB"}